UNPKG

react-charts

Version:

Charts for React

1 lines 353 kB
{"version":3,"file":"react-charts.min.mjs","sources":["../src/utils/ChartContext.js","../src/utils/Utils.js","../node_modules/@reach/observe-rect/dist/observe-rect.esm.js","../src/hooks/useIsomorphicLayoutEffect.js","../src/hooks/useHyperResponsive.js","../src/hooks/useLatestRef.js","../src/hooks/useLatest.js","../src/hooks/usePrevious.js","../src/utils/Raf.js","../src/primitives/Rectangle.js","../src/d3/index.js","../src/primitives/Path.js","../src/components/Voronoi.js","../src/primitives/Line.js","../src/primitives/Text.js","../src/primitives/Group.js","../src/utils/Constants.js","../src/components/AxisLinear.js","../src/components/Axis.js","../src/components/Tooltip.js","../src/components/Cursor.js","../src/components/Brush.js","../src/components/ChartInner.js","../src/hooks/usePropsMemo.js","../src/hooks/useSeriesStyle.js","../src/hooks/useDatumStyle.js","../src/primitives/Circle.js","../src/seriesTypes/Line.js","../src/seriesTypes/Bubble.js","../src/seriesTypes/Area.js","../src/seriesTypes/Bar.js","../src/components/pipeline/useSeriesOptions.js","../src/utils/buildAxis.linear.js","../src/utils/buildAxis.js","../src/components/pipeline/useAxes.js","../src/components/pipeline/useStackData.js","../src/components/TooltipRenderer.js","../src/components/pipeline/useTooltip.js","../src/components/pipeline/useCursors.js","../src/components/Chart.js","../src/components/pipeline/useMaterializeData.js","../src/components/pipeline/useSeriesTypes.js","../src/components/pipeline/useDimensions.js"],"sourcesContent":["import React from \"react\";\nexport default React.createContext();\n","export default {\n getStatus,\n getStatusStyle,\n buildStyleGetters,\n getMultiAnchor,\n getClosestPoint,\n normalizeGetter,\n isValidPoint,\n getAxisByAxisID,\n getAxisIndexByAxisID,\n sumObjBy,\n translateX,\n translateY,\n translate,\n identity,\n shallowDiff\n};\n\nfunction getStatus(item, focused) {\n const status = {\n focused: false,\n otherFocused: false\n };\n\n if (!focused) {\n return status;\n }\n\n // If the item is a datum\n if (typeof item.primary !== \"undefined\") {\n const length = focused.group.length;\n for (let i = 0; i < length; i++) {\n if (\n focused.group[i].seriesID === item.series.id &&\n focused.group[i].index === item.index\n ) {\n status.focused = true;\n break;\n }\n }\n status.otherFocused = !status.focused;\n // For series\n } else if (focused.series) {\n status.focused = focused.series.id === item.id;\n status.otherFocused = !status.focused;\n }\n\n return status;\n}\n\nfunction getStatusStyle(item, status, decorator, defaults) {\n if (item.series) {\n defaults = {\n ...defaults,\n ...item.series.style\n };\n }\n\n return materializeStyles(\n decorator({\n ...item,\n ...status\n }),\n defaults\n );\n}\n\nfunction buildStyleGetters(series, defaults) {\n series.getStatusStyle = (focused, decorator) => {\n const status = getStatus(series, focused);\n series.style = getStatusStyle(series, status, decorator, defaults);\n return series.style;\n };\n\n // We also need to decorate each datum in the same fashion\n series.datums.forEach(datum => {\n datum.getStatusStyle = (focused, decorator) => {\n const status = getStatus(datum, focused);\n datum.style = getStatusStyle(datum, status, decorator, defaults);\n return datum.style;\n };\n });\n}\n\nfunction getMultiAnchor({ anchor, points, gridWidth, gridHeight }) {\n const invalid = () => {\n throw new Error(\n `${JSON.stringify(\n anchor\n )} is not a valid tooltip anchor option. You should use a single anchor option or 2 non-conflicting anchor options.`\n );\n };\n\n let x;\n let y;\n\n let xMin = points[0].anchor.x;\n let xMax = points[0].anchor.x;\n let yMin = points[0].anchor.y;\n let yMax = points[0].anchor.y;\n\n points.forEach(point => {\n xMin = Math.min(point.anchor.x, xMin);\n xMax = Math.max(point.anchor.x, xMax);\n yMin = Math.min(point.anchor.y, yMin);\n yMax = Math.max(point.anchor.y, yMax);\n });\n\n if (anchor.length > 2) {\n return invalid();\n }\n\n anchor = anchor.sort(a =>\n a.includes(\"center\") || a.includes(\"Center\") ? 1 : -1\n );\n\n for (let i = 0; i < anchor.length; i++) {\n const anchorPart = anchor[i];\n\n // Horizontal Positioning\n if ([\"left\", \"right\", \"gridLeft\", \"gridRight\"].includes(anchorPart)) {\n if (typeof x !== \"undefined\") {\n invalid();\n }\n if (anchorPart === \"left\") {\n x = xMin;\n } else if (anchorPart === \"right\") {\n x = xMax;\n } else if (anchorPart === \"gridLeft\") {\n x = 0;\n } else if (anchorPart === \"gridRight\") {\n x = gridWidth;\n } else {\n invalid();\n }\n }\n\n // Vertical Positioning\n if ([\"top\", \"bottom\", \"gridTop\", \"gridBottom\"].includes(anchorPart)) {\n if (typeof y !== \"undefined\") {\n invalid();\n }\n if (anchorPart === \"top\") {\n y = yMin;\n } else if (anchorPart === \"bottom\") {\n y = yMax;\n } else if (anchorPart === \"gridTop\") {\n y = 0;\n } else if (anchorPart === \"gridBottom\") {\n y = gridHeight;\n } else {\n invalid();\n }\n }\n\n // Center Positioning\n if ([\"center\", \"gridCenter\"].includes(anchorPart)) {\n if (anchorPart === \"center\") {\n if (typeof y === \"undefined\") {\n y = (yMin + yMax) / 2;\n }\n if (typeof x === \"undefined\") {\n x = (xMin + xMax) / 2;\n }\n } else if (anchorPart === \"gridCenter\") {\n if (typeof y === \"undefined\") {\n y = gridHeight / 2;\n }\n if (typeof x === \"undefined\") {\n x = gridWidth / 2;\n }\n } else {\n invalid();\n }\n }\n\n // Auto center the remainder if there is only one anchorPart listed\n if (anchor.length === 1) {\n if (anchor[0].includes(\"grid\")) {\n anchor.push(\"gridCenter\");\n } else {\n anchor.push(\"center\");\n }\n }\n }\n\n return { x, y };\n}\n\nfunction getClosestPoint(position, datums) {\n if (!datums || !position || !datums.length) {\n return;\n }\n let closestDistance = Infinity;\n let closestDatum = datums[0];\n datums.forEach(datum => {\n datum.boundingPoints.forEach(pointerPoint => {\n const distance = Math.sqrt(\n (pointerPoint.x - position.x) ** 2 + (pointerPoint.y - position.y) ** 2\n );\n if (distance < closestDistance) {\n closestDistance = distance;\n closestDatum = datum;\n }\n });\n });\n return closestDatum;\n}\n\nfunction normalizeColor(style, defaults) {\n return {\n ...style,\n stroke: style.stroke || style.color || defaults.stroke || defaults.color,\n fill: style.fill || style.color || defaults.fill || defaults.color\n };\n}\n\nconst elementTypes = [\"area\", \"line\", \"rectangle\", \"circle\"];\nfunction materializeStyles(style = {}, defaults = {}) {\n style = normalizeColor(style, defaults);\n for (let i = 0; i < elementTypes.length; i++) {\n const type = elementTypes[i];\n style[type] = style[type] ? materializeStyles(style[type], defaults) : {};\n }\n return style;\n}\n\nfunction normalizeGetter(getter) {\n if (typeof getter === \"function\") {\n return getter;\n }\n return d => get(d, getter);\n}\n\nfunction get(obj, path, def) {\n if (typeof obj === \"function\") {\n try {\n return obj();\n } catch (e) {\n return path;\n }\n }\n if (!path) {\n return obj;\n }\n const pathObj = makePathArray(path);\n let val;\n try {\n val = pathObj.reduce((current, pathPart) => current[pathPart], obj);\n } catch (e) {\n // do nothing\n }\n return typeof val !== \"undefined\" ? val : def;\n}\n\nfunction makePathArray(obj) {\n return flattenDeep(obj)\n .join(\".\")\n .replace(\"[\", \".\")\n .replace(\"]\", \"\")\n .split(\".\");\n}\n\nfunction flattenDeep(arr, newArr = []) {\n if (!Array.isArray(arr)) {\n newArr.push(arr);\n } else {\n for (let i = 0; i < arr.length; i++) {\n flattenDeep(arr[i], newArr);\n }\n }\n return newArr;\n}\n\nfunction isValidPoint(d) {\n if (d === null) {\n return false;\n }\n if (typeof d === \"undefined\") {\n return false;\n }\n if (typeof d === \"string\" && d === \"null\") {\n return false;\n }\n return true;\n}\n\nfunction getAxisByAxisID(axes, AxisID) {\n return axes.find(d => d.id === AxisID) || axes[0];\n}\n\nfunction getAxisIndexByAxisID(axes, AxisID) {\n const index = axes.findIndex(d => d.id === AxisID);\n return index > -1 ? index : 0;\n}\n\nfunction sumObjBy(obj, str) {\n return Object.keys(obj)\n .map(key => obj[key])\n .reduce((prev, curr) => prev + curr[str] || 0, 0);\n}\n\nfunction translateX(x) {\n return `translate3d(${Math.round(x)}px, 0, 0)`;\n}\n\nfunction translateY(y) {\n return `translate3d(0, ${Math.round(y)}px, 0)`;\n}\n\nfunction translate(x, y) {\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\nfunction identity(d) {\n return d;\n}\n\nfunction shallowDiff(a, b) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) {\n return true;\n }\n\n return Object.keys(a).some(key => {\n if (a[key] !== b[key]) {\n return true;\n }\n });\n}\n","var props = ['bottom', 'height', 'left', 'right', 'top', 'width'];\n\nvar rectChanged = function rectChanged(a, b) {\n if (a === void 0) {\n a = {};\n }\n\n if (b === void 0) {\n b = {};\n }\n\n return props.some(function (prop) {\n return a[prop] !== b[prop];\n });\n};\n\nvar observedNodes =\n/*#__PURE__*/\nnew Map();\nvar rafId;\n\nvar run = function run() {\n var changedStates = [];\n observedNodes.forEach(function (state, node) {\n var newRect = node.getBoundingClientRect();\n\n if (rectChanged(newRect, state.rect)) {\n state.rect = newRect;\n changedStates.push(state);\n }\n });\n changedStates.forEach(function (state) {\n state.callbacks.forEach(function (cb) {\n return cb(state.rect);\n });\n });\n rafId = window.requestAnimationFrame(run);\n};\n\nfunction observeRect(node, cb) {\n return {\n observe: function observe() {\n var wasEmpty = observedNodes.size === 0;\n\n if (observedNodes.has(node)) {\n observedNodes.get(node).callbacks.push(cb);\n } else {\n observedNodes.set(node, {\n rect: undefined,\n hasRectChanged: false,\n callbacks: [cb]\n });\n }\n\n if (wasEmpty) run();\n },\n unobserve: function unobserve() {\n var state = observedNodes.get(node);\n\n if (state) {\n // Remove the callback\n var index = state.callbacks.indexOf(cb);\n if (index >= 0) state.callbacks.splice(index, 1); // Remove the node reference\n\n if (!state.callbacks.length) observedNodes[\"delete\"](node); // Stop the loop\n\n if (!observedNodes.size) cancelAnimationFrame(rafId);\n }\n }\n };\n}\n\nexport default observeRect;\n//# sourceMappingURL=observe-rect.esm.js.map\n","import React from 'react'\n\nexport default typeof window !== 'undefined'\n ? React.useLayoutEffect\n : React.useEffect\n","import React from 'react'\n\nimport observeRect from '@reach/observe-rect'\n\nimport useIsomorphicLayoutEffect from './useIsomorphicLayoutEffect'\n\nexport default function useRect(nodeRef) {\n const [element, setElement] = React.useState(nodeRef.current?.parentElement)\n const [rect, setRect] = React.useState({ width: 0, height: 0 })\n const initialRectSet = React.useRef(false)\n\n useIsomorphicLayoutEffect(() => {\n if (nodeRef.current?.parentElement !== element) {\n setElement(nodeRef.current?.parentElement)\n }\n })\n\n useIsomorphicLayoutEffect(() => {\n if (element && !initialRectSet.current) {\n initialRectSet.current = true\n setRect(element.getBoundingClientRect())\n }\n }, [element])\n\n React.useEffect(() => {\n if (!element) {\n return\n }\n\n const observer = observeRect(element, setRect)\n\n observer.observe()\n\n return () => {\n observer.unobserve()\n }\n }, [element])\n\n return { width: rect.width, height: rect.height }\n}\n","import React from \"react\";\n\nexport default function useLatestRef(latest) {\n const ref = React.useRef();\n ref.current = latest;\n return ref;\n}\n","import React from \"react\";\n\nexport default function useLatest(obj, when = true) {\n const ref = React.useRef();\n if (when) {\n ref.current = obj;\n }\n return ref.current;\n}\n","import React from \"react\";\n\nexport default function usePrevious(val) {\n const ref = React.useRef();\n\n React.useEffect(\n () => {\n ref.current = val;\n },\n [val]\n );\n\n return ref.current;\n}\n","var now = require('performance-now'),\n root = typeof window === 'undefined' ? global : window,\n vendors = ['moz', 'webkit'],\n suffix = 'AnimationFrame',\n raf = root['request' + suffix],\n caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor (var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf =\n root[vendors[i] + 'Cancel' + suffix] ||\n root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif (!raf || !caf) {\n var last = 0,\n id = 0,\n queue = [],\n frameDuration = 1000 / 60\n\n raf = function(callback) {\n if (queue.length === 0) {\n var _now = now(),\n next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for (var i = 0; i < cp.length; i++) {\n if (!cp[i].cancelled) {\n try {\n cp[i].callback(last)\n } catch (e) {\n setTimeout(function() {\n throw e\n }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false,\n })\n return id\n }\n\n caf = function(handle) {\n for (var i = 0; i < queue.length; i++) {\n if (queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nexport default function Raf(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\n\nRaf.cancel = function() {\n caf.apply(root, arguments)\n}\n\nRaf.polyfill = function(object) {\n if (!object) {\n object = root\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","import React from \"react\";\n//\n\nconst defaultStyle = {\n strokeWidth: 0,\n fill: \"#333\",\n opacity: 1,\n rx: 0,\n ry: 0\n};\n\nexport default function Rectangle ({ style, opacity = 1, x1, y1, x2, y2, ...rest }) {\n const resolvedStyle = {\n ...defaultStyle,\n ...style\n };\n\n const xStart = Math.min(x1, x2);\n const yStart = Math.min(y1, y2);\n const xEnd = Math.max(x1, x2);\n const yEnd = Math.max(y1, y2);\n\n const height = Math.max(yEnd - yStart, 0);\n const width = Math.max(xEnd - xStart, 0);\n\n return (\n <rect\n {...rest}\n x={xStart}\n y={yStart}\n width={width}\n height={height}\n style={resolvedStyle}\n />\n );\n}\n","function t(t){return function(){return t}}function n(t){return t[0]}function e(t){return t[1]}function i(){this._=null}function r(t){t.U=t.C=t.L=t.R=t.P=t.N=null}function o(t,n){var e=n,i=n.R,r=e.U;r?r.L===e?r.L=i:r.R=i:t._=i,i.U=r,e.U=i,e.R=i.L,e.R&&(e.R.U=e),i.L=e}function s(t,n){var e=n,i=n.L,r=e.U;r?r.L===e?r.L=i:r.R=i:t._=i,i.U=r,e.U=i,e.L=i.R,e.L&&(e.L.U=e),i.R=e}function u(t){for(;t.L;)t=t.L;return t}function a(t,n,e,i){var r=[null,null],o=A.push(r)-1;return r.left=t,r.right=n,e&&c(r,t,n,e),i&&c(r,n,t,i),D[t.index].halfedges.push(o),D[n.index].halfedges.push(o),r}function h(t,n,e){var i=[n,e];return i.left=t,i}function c(t,n,e,i){t[0]||t[1]?t.left===e?t[1]=i:t[0]=i:(t[0]=i,t.left=n,t.right=e)}function l(t,n,e,i,r){var o,s=t[0],u=t[1],a=s[0],h=s[1],c=0,l=1,f=u[0]-a,_=u[1]-h;if(o=n-a,f||!(o>0)){if(o/=f,f<0){if(o<c)return;o<l&&(l=o)}else if(f>0){if(o>l)return;o>c&&(c=o)}if(o=i-a,f||!(o<0)){if(o/=f,f<0){if(o>l)return;o>c&&(c=o)}else if(f>0){if(o<c)return;o<l&&(l=o)}if(o=e-h,_||!(o>0)){if(o/=_,_<0){if(o<c)return;o<l&&(l=o)}else if(_>0){if(o>l)return;o>c&&(c=o)}if(o=r-h,_||!(o<0)){if(o/=_,_<0){if(o>l)return;o>c&&(c=o)}else if(_>0){if(o<c)return;o<l&&(l=o)}return!(c>0||l<1)||(c>0&&(t[0]=[a+c*f,h+c*_]),l<1&&(t[1]=[a+l*f,h+l*_]),!0)}}}}}function f(t,n,e,i,r){var o=t[1];if(o)return!0;var s,u,a=t[0],h=t.left,c=t.right,l=h[0],f=h[1],_=c[0],y=c[1],g=(l+_)/2,p=(f+y)/2;if(y===f){if(g<n||g>=i)return;if(l>_){if(a){if(a[1]>=r)return}else a=[g,e];o=[g,r]}else{if(a){if(a[1]<e)return}else a=[g,r];o=[g,e]}}else if(u=p-(s=(l-_)/(y-f))*g,s<-1||s>1)if(l>_){if(a){if(a[1]>=r)return}else a=[(e-u)/s,e];o=[(r-u)/s,r]}else{if(a){if(a[1]<e)return}else a=[(r-u)/s,r];o=[(e-u)/s,e]}else if(f<y){if(a){if(a[0]>=i)return}else a=[n,s*n+u];o=[i,s*i+u]}else{if(a){if(a[0]<n)return}else a=[i,s*i+u];o=[n,s*n+u]}return t[0]=a,t[1]=o,!0}function _(t,n){var e=t.site,i=n.left,r=n.right;return e===r&&(r=i,i=e),r?Math.atan2(r[1]-i[1],r[0]-i[0]):(e===i?(i=n[1],r=n[0]):(i=n[0],r=n[1]),Math.atan2(i[0]-r[0],r[1]-i[1]))}function y(t,n){return n[+(n.left!==t.site)]}function g(t,n){return n[+(n.left===t.site)]}i.prototype={constructor:i,insert:function(t,n){var e,i,r;if(t){if(n.P=t,n.N=t.N,t.N&&(t.N.P=n),t.N=n,t.R){for(t=t.R;t.L;)t=t.L;t.L=n}else t.R=n;e=t}else this._?(t=u(this._),n.P=null,n.N=t,t.P=t.L=n,e=t):(n.P=n.N=null,this._=n,e=null);for(n.L=n.R=null,n.U=e,n.C=!0,t=n;e&&e.C;)e===(i=e.U).L?(r=i.R)&&r.C?(e.C=r.C=!1,i.C=!0,t=i):(t===e.R&&(o(this,e),e=(t=e).U),e.C=!1,i.C=!0,s(this,i)):(r=i.L)&&r.C?(e.C=r.C=!1,i.C=!0,t=i):(t===e.L&&(s(this,e),e=(t=e).U),e.C=!1,i.C=!0,o(this,i)),e=t.U;this._.C=!1},remove:function(t){t.N&&(t.N.P=t.P),t.P&&(t.P.N=t.N),t.N=t.P=null;var n,e,i,r=t.U,a=t.L,h=t.R;if(e=a?h?u(h):a:h,r?r.L===t?r.L=e:r.R=e:this._=e,a&&h?(i=e.C,e.C=t.C,e.L=a,a.U=e,e!==h?(r=e.U,e.U=t.U,t=e.R,r.L=t,e.R=h,h.U=e):(e.U=r,r=e,t=e.R)):(i=t.C,t=e),t&&(t.U=r),!i)if(t&&t.C)t.C=!1;else{do{if(t===this._)break;if(t===r.L){if((n=r.R).C&&(n.C=!1,r.C=!0,o(this,r),n=r.R),n.L&&n.L.C||n.R&&n.R.C){n.R&&n.R.C||(n.L.C=!1,n.C=!0,s(this,n),n=r.R),n.C=r.C,r.C=n.R.C=!1,o(this,r),t=this._;break}}else if((n=r.L).C&&(n.C=!1,r.C=!0,s(this,r),n=r.L),n.L&&n.L.C||n.R&&n.R.C){n.L&&n.L.C||(n.R.C=!1,n.C=!0,o(this,n),n=r.L),n.C=r.C,r.C=n.L.C=!1,s(this,r),t=this._;break}n.C=!0,t=r,r=r.U}while(!t.C);t&&(t.C=!1)}}};var p,x=[];function d(){r(this),this.x=this.y=this.arc=this.site=this.cy=null}function v(t){var n=t.P,e=t.N;if(n&&e){var i=n.site,r=t.site,o=e.site;if(i!==o){var s=r[0],u=r[1],a=i[0]-s,h=i[1]-u,c=o[0]-s,l=o[1]-u,f=2*(a*l-h*c);if(!(f>=-E)){var _=a*a+h*h,y=c*c+l*l,g=(l*_-h*y)/f,v=(a*y-c*_)/f,m=x.pop()||new d;m.arc=t,m.site=r,m.x=g+s,m.y=(m.cy=v+u)+Math.sqrt(g*g+v*v),t.circle=m;for(var M=null,w=L._;w;)if(m.y<w.y||m.y===w.y&&m.x<=w.x){if(!w.L){M=w.P;break}w=w.L}else{if(!w.R){M=w;break}w=w.R}L.insert(M,m),M||(p=m)}}}}function m(t){var n=t.circle;n&&(n.P||(p=n.N),L.remove(n),x.push(n),r(n),t.circle=null)}var M=[];function w(){r(this),this.edge=this.site=this.circle=null}function b(t){var n=M.pop()||new w;return n.site=t,n}function T(t){m(t),S.remove(t),M.push(t),r(t)}function C(t){var n=t.circle,e=n.x,i=n.cy,r=[e,i],o=t.P,s=t.N,u=[t];T(t);for(var h=o;h.circle&&Math.abs(e-h.circle.x)<R&&Math.abs(i-h.circle.cy)<R;)o=h.P,u.unshift(h),T(h),h=o;u.unshift(h),m(h);for(var l=s;l.circle&&Math.abs(e-l.circle.x)<R&&Math.abs(i-l.circle.cy)<R;)s=l.N,u.push(l),T(l),l=s;u.push(l),m(l);var f,_=u.length;for(f=1;f<_;++f)l=u[f],h=u[f-1],c(l.edge,h.site,l.site,r);h=u[0],(l=u[_-1]).edge=a(h.site,l.site,null,r),v(h),v(l)}function N(t){for(var n,e,i,r,o=t[0],s=t[1],u=S._;u;)if((i=k(u,s)-o)>R)u=u.L;else{if(!((r=o-U(u,s))>R)){i>-R?(n=u.P,e=u):r>-R?(n=u,e=u.N):n=e=u;break}if(!u.R){n=u;break}u=u.R}!function(t){D[t.index]={site:t,halfedges:[]}}(t);var h=b(t);if(S.insert(n,h),n||e){if(n===e)return m(n),e=b(n.site),S.insert(h,e),h.edge=e.edge=a(n.site,h.site),v(n),void v(e);if(e){m(n),m(e);var l=n.site,f=l[0],_=l[1],y=t[0]-f,g=t[1]-_,p=e.site,x=p[0]-f,d=p[1]-_,M=2*(y*d-g*x),w=y*y+g*g,T=x*x+d*d,C=[(d*w-g*T)/M+f,(y*T-x*w)/M+_];c(e.edge,l,p,C),h.edge=a(l,t,null,C),e.edge=a(t,p,null,C),v(n),v(e)}else h.edge=a(n.site,h.site)}}function k(t,n){var e=t.site,i=e[0],r=e[1],o=r-n;if(!o)return i;var s=t.P;if(!s)return-1/0;var u=(e=s.site)[0],a=e[1],h=a-n;if(!h)return u;var c=u-i,l=1/o-1/h,f=c/h;return l?(-f+Math.sqrt(f*f-2*l*(c*c/(-2*h)-a+h/2+r-o/2)))/l+i:(i+u)/2}function U(t,n){var e=t.N;if(e)return k(e,n);var i=t.site;return i[1]===n?i[0]:1/0}var S,D,L,A,R=1e-6,E=1e-12;function P(t,n){return n[1]-t[1]||n[0]-t[0]}function F(t,n){var e,r,o,s=t.sort(P).pop();for(A=[],D=new Array(t.length),S=new i,L=new i;;)if(o=p,s&&(!o||s[1]<o.y||s[1]===o.y&&s[0]<o.x))s[0]===e&&s[1]===r||(N(s),e=s[0],r=s[1]),s=t.pop();else{if(!o)break;C(o.arc)}if(function(){for(var t,n,e,i,r=0,o=D.length;r<o;++r)if((t=D[r])&&(i=(n=t.halfedges).length)){var s=new Array(i),u=new Array(i);for(e=0;e<i;++e)s[e]=e,u[e]=_(t,A[n[e]]);for(s.sort((function(t,n){return u[n]-u[t]})),e=0;e<i;++e)u[e]=n[s[e]];for(e=0;e<i;++e)n[e]=u[e]}}(),n){var u=+n[0][0],a=+n[0][1],c=+n[1][0],x=+n[1][1];!function(t,n,e,i){for(var r,o=A.length;o--;)f(r=A[o],t,n,e,i)&&l(r,t,n,e,i)&&(Math.abs(r[0][0]-r[1][0])>R||Math.abs(r[0][1]-r[1][1])>R)||delete A[o]}(u,a,c,x),function(t,n,e,i){var r,o,s,u,a,c,l,f,_,p,x,d,v=D.length,m=!0;for(r=0;r<v;++r)if(o=D[r]){for(s=o.site,u=(a=o.halfedges).length;u--;)A[a[u]]||a.splice(u,1);for(u=0,c=a.length;u<c;)x=(p=g(o,A[a[u]]))[0],d=p[1],f=(l=y(o,A[a[++u%c]]))[0],_=l[1],(Math.abs(x-f)>R||Math.abs(d-_)>R)&&(a.splice(u,0,A.push(h(s,p,Math.abs(x-t)<R&&i-d>R?[t,Math.abs(f-t)<R?_:i]:Math.abs(d-i)<R&&e-x>R?[Math.abs(_-i)<R?f:e,i]:Math.abs(x-e)<R&&d-n>R?[e,Math.abs(f-e)<R?_:n]:Math.abs(d-n)<R&&x-t>R?[Math.abs(_-n)<R?f:t,n]:null))-1),++c);c&&(m=!1)}if(m){var M,w,b,T=1/0;for(r=0,m=null;r<v;++r)(o=D[r])&&(b=(M=(s=o.site)[0]-t)*M+(w=s[1]-n)*w)<T&&(T=b,m=o);if(m){var C=[t,n],N=[t,i],k=[e,i],U=[e,n];m.halfedges.push(A.push(h(s=m.site,C,N))-1,A.push(h(s,N,k))-1,A.push(h(s,k,U))-1,A.push(h(s,U,C))-1)}}for(r=0;r<v;++r)(o=D[r])&&(o.halfedges.length||delete D[r])}(u,a,c,x)}this.edges=A,this.cells=D,S=L=A=D=null}function Y(){var i=n,r=e,o=null;function s(t){return new F(t.map((function(n,e){var o=[Math.round(i(n,e,t)/R)*R,Math.round(r(n,e,t)/R)*R];return o.index=e,o.data=n,o})),o)}return s.polygons=function(t){return s(t).polygons()},s.links=function(t){return s(t).links()},s.triangles=function(t){return s(t).triangles()},s.x=function(n){return arguments.length?(i=\"function\"==typeof n?n:t(+n),s):i},s.y=function(n){return arguments.length?(r=\"function\"==typeof n?n:t(+n),s):r},s.extent=function(t){return arguments.length?(o=null==t?null:[[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]],s):o&&[[o[0][0],o[0][1]],[o[1][0],o[1][1]]]},s.size=function(t){return arguments.length?(o=null==t?null:[[0,0],[+t[0],+t[1]]],s):o&&[o[1][0]-o[0][0],o[1][1]-o[0][1]]},s}function H(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function q(t){var n;return 1===t.length&&(n=t,t=function(t,e){return H(n(t),e)}),{left:function(n,e,i,r){for(null==i&&(i=0),null==r&&(r=n.length);i<r;){var o=i+r>>>1;t(n[o],e)<0?i=o+1:r=o}return i},right:function(n,e,i,r){for(null==i&&(i=0),null==r&&(r=n.length);i<r;){var o=i+r>>>1;t(n[o],e)>0?r=o:i=o+1}return i}}}F.prototype={constructor:F,polygons:function(){var t=this.edges;return this.cells.map((function(n){var e=n.halfedges.map((function(e){return y(n,t[e])}));return e.data=n.site.data,e}))},triangles:function(){var t=[],n=this.edges;return this.cells.forEach((function(e,i){if(o=(r=e.halfedges).length)for(var r,o,s,u,a,h,c=e.site,l=-1,f=n[r[o-1]],_=f.left===c?f.right:f.left;++l<o;)s=_,_=(f=n[r[l]]).left===c?f.right:f.left,s&&_&&i<s.index&&i<_.index&&(a=s,h=_,((u=c)[0]-h[0])*(a[1]-u[1])-(u[0]-a[0])*(h[1]-u[1])<0)&&t.push([c.data,s.data,_.data])})),t},links:function(){return this.edges.filter((function(t){return t.right})).map((function(t){return{source:t.left.data,target:t.right.data}}))},find:function(t,n,e){for(var i,r,o=this,s=o._found||0,u=o.cells.length;!(r=o.cells[s]);)if(++s>=u)return null;var a=t-r.site[0],h=n-r.site[1],c=a*a+h*h;do{r=o.cells[i=s],s=null,r.halfedges.forEach((function(e){var i=o.edges[e],u=i.left;if(u!==r.site&&u||(u=i.right)){var a=t-u[0],h=n-u[1],l=a*a+h*h;l<c&&(c=l,s=u.index)}}))}while(null!==s);return o._found=i,null==e||c<=e*e?r.site:null}};var z=q(H).right;function j(t,n,e){t=+t,n=+n,e=(r=arguments.length)<2?(n=t,t=0,1):r<3?1:+e;for(var i=-1,r=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(r);++i<r;)o[i]=t+i*e;return o}var O=Math.sqrt(50),Z=Math.sqrt(10),I=Math.sqrt(2);function $(t,n,e){var i,r,o,s,u=-1;if(e=+e,(t=+t)===(n=+n)&&e>0)return[t];if((i=n<t)&&(r=t,t=n,n=r),0===(s=V(t,n,e))||!isFinite(s))return[];if(s>0)for(t=Math.ceil(t/s),n=Math.floor(n/s),o=new Array(r=Math.ceil(n-t+1));++u<r;)o[u]=(t+u)*s;else for(t=Math.floor(t*s),n=Math.ceil(n*s),o=new Array(r=Math.ceil(t-n+1));++u<r;)o[u]=(t-u)/s;return i&&o.reverse(),o}function V(t,n,e){var i=(n-t)/Math.max(0,e),r=Math.floor(Math.log(i)/Math.LN10),o=i/Math.pow(10,r);return r>=0?(o>=O?10:o>=Z?5:o>=I?2:1)*Math.pow(10,r):-Math.pow(10,-r)/(o>=O?10:o>=Z?5:o>=I?2:1)}function B(t,n,e){var i=Math.abs(n-t)/Math.max(0,e),r=Math.pow(10,Math.floor(Math.log(i)/Math.LN10)),o=i/r;return o>=O?r*=10:o>=Z?r*=5:o>=I&&(r*=2),n<t?-r:r}function X(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}const W=Symbol(\"implicit\");function Q(){var t=new Map,n=[],e=[],i=W;function r(r){var o=r+\"\",s=t.get(o);if(!s){if(i!==W)return i;t.set(o,s=n.push(r))}return e[(s-1)%e.length]}return r.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new Map;for(const i of e){const e=i+\"\";t.has(e)||t.set(e,n.push(i))}return r},r.range=function(t){return arguments.length?(e=Array.from(t),r):e.slice()},r.unknown=function(t){return arguments.length?(i=t,r):i},r.copy=function(){return Q(n,e).unknown(i)},X.apply(r,arguments),r}function J(){var t,n,e=Q().unknown(void 0),i=e.domain,r=e.range,o=0,s=1,u=!1,a=0,h=0,c=.5;function l(){var e=i().length,l=s<o,f=l?s:o,_=l?o:s;t=(_-f)/Math.max(1,e-a+2*h),u&&(t=Math.floor(t)),f+=(_-f-t*(e-a))*c,n=t*(1-a),u&&(f=Math.round(f),n=Math.round(n));var y=j(e).map((function(n){return f+t*n}));return r(l?y.reverse():y)}return delete e.unknown,e.domain=function(t){return arguments.length?(i(t),l()):i()},e.range=function(t){return arguments.length?([o,s]=t,o=+o,s=+s,l()):[o,s]},e.rangeRound=function(t){return[o,s]=t,o=+o,s=+s,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?(a=Math.min(1,h=+t),l()):a},e.paddingInner=function(t){return arguments.length?(a=Math.min(1,t),l()):a},e.paddingOuter=function(t){return arguments.length?(h=+t,l()):h},e.align=function(t){return arguments.length?(c=Math.max(0,Math.min(1,t)),l()):c},e.copy=function(){return J(i(),[o,s]).round(u).paddingInner(a).paddingOuter(h).align(c)},X.apply(l(),arguments)}function G(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function K(t,n){var e=Object.create(t.prototype);for(var i in n)e[i]=n[i];return e}function tt(){}var nt=\"\\\\s*([+-]?\\\\d+)\\\\s*\",et=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",it=\"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",rt=/^#([0-9a-f]{3,8})$/,ot=new RegExp(\"^rgb\\\\(\"+[nt,nt,nt]+\"\\\\)$\"),st=new RegExp(\"^rgb\\\\(\"+[it,it,it]+\"\\\\)$\"),ut=new RegExp(\"^rgba\\\\(\"+[nt,nt,nt,et]+\"\\\\)$\"),at=new RegExp(\"^rgba\\\\(\"+[it,it,it,et]+\"\\\\)$\"),ht=new RegExp(\"^hsl\\\\(\"+[et,it,it]+\"\\\\)$\"),ct=new RegExp(\"^hsla\\\\(\"+[et,it,it,et]+\"\\\\)$\"),lt={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 ft(){return this.rgb().formatHex()}function _t(){return this.rgb().formatRgb()}function yt(t){var n,e;return t=(t+\"\").trim().toLowerCase(),(n=rt.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?gt(n):3===e?new vt(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?new vt(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?new vt(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=ot.exec(t))?new vt(n[1],n[2],n[3],1):(n=st.exec(t))?new vt(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=ut.exec(t))?pt(n[1],n[2],n[3],n[4]):(n=at.exec(t))?pt(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=ht.exec(t))?bt(n[1],n[2]/100,n[3]/100,1):(n=ct.exec(t))?bt(n[1],n[2]/100,n[3]/100,n[4]):lt.hasOwnProperty(t)?gt(lt[t]):\"transparent\"===t?new vt(NaN,NaN,NaN,0):null}function gt(t){return new vt(t>>16&255,t>>8&255,255&t,1)}function pt(t,n,e,i){return i<=0&&(t=n=e=NaN),new vt(t,n,e,i)}function xt(t){return t instanceof tt||(t=yt(t)),t?new vt((t=t.rgb()).r,t.g,t.b,t.opacity):new vt}function dt(t,n,e,i){return 1===arguments.length?xt(t):new vt(t,n,e,null==i?1:i)}function vt(t,n,e,i){this.r=+t,this.g=+n,this.b=+e,this.opacity=+i}function mt(){return\"#\"+wt(this.r)+wt(this.g)+wt(this.b)}function Mt(){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 wt(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?\"0\":\"\")+t.toString(16)}function bt(t,n,e,i){return i<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Ct(t,n,e,i)}function Tt(t){if(t instanceof Ct)return new Ct(t.h,t.s,t.l,t.opacity);if(t instanceof tt||(t=yt(t)),!t)return new Ct;if(t instanceof Ct)return t;var n=(t=t.rgb()).r/255,e=t.g/255,i=t.b/255,r=Math.min(n,e,i),o=Math.max(n,e,i),s=NaN,u=o-r,a=(o+r)/2;return u?(s=n===o?(e-i)/u+6*(e<i):e===o?(i-n)/u+2:(n-e)/u+4,u/=a<.5?o+r:2-o-r,s*=60):u=a>0&&a<1?0:s,new Ct(s,u,a,t.opacity)}function Ct(t,n,e,i){this.h=+t,this.s=+n,this.l=+e,this.opacity=+i}function Nt(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 kt(t){return function(){return t}}function Ut(t){return 1==(t=+t)?St: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(i){return Math.pow(t+i*n,e)}}(n,e,t):kt(isNaN(n)?e:n)}}function St(t,n){var e=n-t;return e?function(t,n){return function(e){return t+e*n}}(t,e):kt(isNaN(t)?n:t)}G(tt,yt,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ft,formatHex:ft,formatHsl:function(){return Tt(this).formatHsl()},formatRgb:_t,toString:_t}),G(vt,dt,K(tt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new vt(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new vt(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:mt,formatHex:mt,formatRgb:Mt,toString:Mt})),G(Ct,(function(t,n,e,i){return 1===arguments.length?Tt(t):new Ct(t,n,e,null==i?1:i)}),K(tt,{brighter:function(t){return t=null==t?1/.7:Math.pow(1/.7,t),new Ct(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?.7:Math.pow(.7,t),new Ct(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,i=e+(e<.5?e:1-e)*n,r=2*e-i;return new vt(Nt(t>=240?t-240:t+120,r,i),Nt(t,r,i),Nt(t<120?t+240:t-120,r,i),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+\")\")}}));var Dt=function t(n){var e=Ut(n);function i(t,n){var i=e((t=dt(t)).r,(n=dt(n)).r),r=e(t.g,n.g),o=e(t.b,n.b),s=St(t.opacity,n.opacity);return function(n){return t.r=i(n),t.g=r(n),t.b=o(n),t.opacity=s(n),t+\"\"}}return i.gamma=t,i}(1);function Lt(t,n){n||(n=[]);var e,i=t?Math.min(n.length,t.length):0,r=n.slice();return function(o){for(e=0;e<i;++e)r[e]=t[e]*(1-o)+n[e]*o;return r}}function At(t,n){var e,i=n?n.length:0,r=t?Math.min(i,t.length):0,o=new Array(r),s=new Array(i);for(e=0;e<r;++e)o[e]=qt(t[e],n[e]);for(;e<i;++e)s[e]=n[e];return function(t){for(e=0;e<r;++e)s[e]=o[e](t);return s}}function Rt(t,n){var e=new Date;return t=+t,n=+n,function(i){return e.setTime(t*(1-i)+n*i),e}}function Et(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Pt(t,n){var e,i={},r={};for(e in null!==t&&\"object\"==typeof t||(t={}),null!==n&&\"object\"==typeof n||(n={}),n)e in t?i[e]=qt(t[e],n[e]):r[e]=n[e];return function(t){for(e in i)r[e]=i[e](t);return r}}var Ft=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,Yt=new RegExp(Ft.source,\"g\");function Ht(t,n){var e,i,r,o=Ft.lastIndex=Yt.lastIndex=0,s=-1,u=[],a=[];for(t+=\"\",n+=\"\";(e=Ft.exec(t))&&(i=Yt.exec(n));)(r=i.index)>o&&(r=n.slice(o,r),u[s]?u[s]+=r:u[++s]=r),(e=e[0])===(i=i[0])?u[s]?u[s]+=i:u[++s]=i:(u[++s]=null,a.push({i:s,x:Et(e,i)})),o=Yt.lastIndex;return o<n.length&&(r=n.slice(o),u[s]?u[s]+=r:u[++s]=r),u.length<2?a[0]?function(t){return function(n){return t(n)+\"\"}}(a[0].x):function(t){return function(){return t}}(n):(n=a.length,function(t){for(var e,i=0;i<n;++i)u[(e=a[i]).i]=e.x(t);return u.join(\"\")})}function qt(t,n){var e,i=typeof n;return null==n||\"boolean\"===i?kt(n):(\"number\"===i?Et:\"string\"===i?(e=yt(n))?(n=e,Dt):Ht:n instanceof yt?Dt:n instanceof Date?Rt:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}(n)?Lt:Array.isArray(n)?At:\"function\"!=typeof n.valueOf&&\"function\"!=typeof n.toString||isNaN(n)?Pt:Et)(t,n)}function zt(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}function jt(t){return+t}var Ot=[0,1];function Zt(t){return t}function It(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function $t(t,n,e){var i=t[0],r=t[1],o=n[0],s=n[1];return r<i?(i=It(r,i),o=e(s,o)):(i=It(i,r),o=e(o,s)),function(t){return o(i(t))}}function Vt(t,n,e){var i=Math.min(t.length,n.length)-1,r=new Array(i),o=new Array(i),s=-1;for(t[i]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++s<i;)r[s]=It(t[s],t[s+1]),o[s]=e(n[s],n[s+1]);return function(n){var e=z(t,n,1,i)-1;return o[e](r[e](n))}}function Bt(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Xt(){var t,n,e,i,r,o,s=Ot,u=Ot,a=qt,h=Zt;function c(){var t,n,e,a=Math.min(s.length,u.length);return h!==Zt&&(t=s[0],n=s[a-1],t>n&&(e=t,t=n,n=e),h=function(e){return Math.max(t,Math.min(n,e))}),i=a>2?Vt:$t,r=o=null,l}function l(n){return isNaN(n=+n)?e:(r||(r=i(s.map(t),u,a)))(t(h(n)))}return l.invert=function(e){return h(n((o||(o=i(u,s.map(t),Et)))(e)))},l.domain=function(t){return arguments.length?(s=Array.from(t,jt),c()):s.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),c()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),a=zt,c()},l.clamp=function(t){return arguments.length?(h=!!t||Zt,c()):h!==Zt},l.interpolate=function(t){return arguments.length?(a=t,c()):a},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,i){return t=e,n=i,c()}}function Wt(){return Xt()(Zt,Zt)}function Qt(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf(\"e\"))<0)return null;var e,i=t.slice(0,e);return[i.length>1?i[0]+i.slice(2):i,+t.slice(e+1)]}function Jt(t){return(t=Qt(Math.abs(t)))?t[1]:NaN}var Gt,Kt=/^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;function tn(t){if(!(n=Kt.exec(t)))throw new Error(\"invalid format: \"+t);var n;return new nn({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 nn(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 en(t,n){var e=Qt(t,n);if(!e)return t+\"\";var i=e[0],r=e[1];return r<0?\"0.\"+new Array(-r).join(\"0\")+i:i.length>r+1?i.slice(0,r+1)+\".\"+i.slice(r+1):i+new Array(r-i.length+2).join(\"0\")}tn.prototype=nn.prototype,nn.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 rn={\"%\":function(t,n){return(100*t).toFixed(n)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+\"\"},d:function(t){return Math.round(t).toString(10)},e:function(t,n){return t.toExponential(n)},f:function(t,n){return t.toFixed(n)},g:function(t,n){return t.toPrecision(n)},o:function(t){return Math.round(t).toString(8)},p:function(t,n){return en(100*t,n)},r:en,s:function(t,n){var e=Qt(t,n);if(!e)return t+\"\";var i=e[0],r=e[1],o=r-(Gt=3*Math.max(-8,Math.min(8,Math.floor(r/3))))+1,s=i.length;return o===s?i:o>s?i+new Array(o-s+1).join(\"0\"):o>0?i.slice(0,o)+\".\"+i.slice(o):\"0.\"+new Array(1-o).join(\"0\")+Qt(t,Math.max(0,n+o-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function on(t){return t}var sn,un,an,hn=Array.prototype.map,cn=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];function ln(t){var n,e,i=void 0===t.grouping||void 0===t.thousands?on:(n=hn.call(t.grouping,Number),e=t.thousands+\"\",function(t,i){for(var r=t.length,o=[],s=0,u=n[0],a=0;r>0&&u>0&&(a+u+1>i&&(u=Math.max(1,i-a)),o.push(t.substring(r-=u,r+u)),!((a+=u+1)>i));)u=n[s=(s+1)%n.length];return o.reverse().join(e)}),r=void 0===t.currency?\"\":t.currency[0]+\"\",o=void 0===t.currency?\"\":t.currency[1]+\"\",s=void 0===t.decimal?\".\":t.decimal+\"\",u=void 0===t.numerals?on:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(hn.call(t.numerals,String)),a=void 0===t.percent?\"%\":t.percent+\"\",h=void 0===t.minus?\"-\":t.minus+\"\",c=void 0===t.nan?\"NaN\":t.nan+\"\";function l(t){var n=(t=tn(t)).fill,e=t.align,l=t.sign,f=t.symbol,_=t.zero,y=t.width,g=t.comma,p=t.precision,x=t.trim,d=t.type;\"n\"===d?(g=!0,d=\"g\"):rn[d]||(void 0===p&&(p=12),x=!0,d=\"g\"),(_||\"0\"===n&&\"=\"===e)&&(_=!0,n=\"0\",e=\"=\");var v=\"$\"===f?r:\"#\"===f&&/[boxX]/.test(d)?\"0\"+d.toLowerCase():\"\",m=\"$\"===f?o:/[%p]/.test(d)?a:\"\",M=rn[d],w=/[defgprs%]/.test(d);function b(t){var r,o,a,f=v,b=m;if(\"c\"===d)b=M(t)+b,t=\"\";else{var T=(t=+t)<0;if(t=isNaN(t)?c:M(Math.abs(t),p),x&&(t=function(t){t:for(var n,e=t.length,i=1,r=-1;i<e;++i)switch(t[i]){case\".\":r=n=i;break;case\"0\":0===r&&(r=i),n=i;break;default:if(r>0){if(!+t[i])break t;r=0}}return r>0?t.slice(0,r)+t.slice(n+1):t}(t)),T&&0==+t&&(T=!1),f=(T?\"(\"===l?l:h:\"-\"===l||\"(\"===l?\"\":l)+f,b=(\"s\"===d?cn[8+Gt/3]:\"\")+b+(T&&\"(\"===l?\")\":\"\"),w)for(r=-1,o=t.length;++r<o;)if(48>(a=t.charCodeAt(r))||a>57){b=(46===a?s+t.slice(r+1):t.slice(r))+b,t=t.slice(0,r);break}}g&&!_&&(t=i(t,1/0));var C=f.length+t.length+b.length,N=C<y?new Array(y-C+1).join(n):\"\";switch(g&&_&&(t=i(N+t,N.length?y-b.length:1/0),N=\"\"),e){case\"<\":t=f+t+b+N;break;case\"=\":t=f+N+t+b;break;case\"^\":t=N.slice(0,C=N.length>>1)+f+t+b+N.slice(C);break;default:t=N+f+t+b}return u(t)}return p=void 0===p?6:/[gprs]/.test(d)?Math.max(1,Math.min(21,p)):Math.max(0,Math.min(20,p)),b.toString=function(){return t+\"\"},b}return{format:l,formatPrefix:function(t,n){var e=l(((t=tn(t)).type=\"f\",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Jt(n)/3))),r=Math.pow(10,-i),o=cn[8+i/3];return function(t){return e(r*t)+o}}}}function fn(t,n,e,i){var r,o=B(t,n,e);switch((i=tn(null==i?\",f\":i)).type){case\"s\":var s=Math.max(Math.abs(t),Math.abs(n));return null!=i.precision||isNaN(r=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Jt(n)/3)))-Jt(Math.abs(t)))}(o,s))||(i.precision=r),an(i,s);case\"\":case\"e\":case\"g\":case\"p\":case\"r\":null!=i.precision||isNaN(r=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Jt(n)-Jt(t))+1}(o,Math.max(Math.abs(t),Math.abs(n))))||(i.precision=r-(\"e\"===i.type));break;case\"f\":case\"%\":null!=i.precision||isNaN(r=function(t){return Math.max(0,-Jt(Math.abs(t)))}(o))||(i.precision=r-2*(\"%\"===i.type))}return un(i)}function _n(t){var n=t.domain;return t.ticks=function(t){var e=n();return $(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var i=n();return fn(i[0],i[i.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var i,r=n(),o=0,s=r.length-1,u=r[o],a=r[s];return a<u&&(i=u,u=a,a=i,i=o,o=s,s=i),(i=V(u,a,e))>0?i=V(u=Math.floor(u/i)*i,a=Math.ceil(a/i)*i,e):i<0&&(i=V(u=Math.ceil(u*i)/i,a=Math.floor(a*i)/i,e)),i>0?(r[o]=Math.floor(u/i)*i,r[s]=Math.ceil(a/i)*i,n(r)):i<0&&(r[o]=Math.ceil(u*i)/i,r[s]=Math.floor(a*i)/i,n(r)),t},t}function yn(){var t=Wt();return t.copy=function(){return Bt(t,yn())},X.apply(t,arguments),_n(t)}function gn(t,n){var e,i=0,r=(t=t.slice()).length-1,o=t[i],s=t[r];return s<o&&(e=i,i=r,r=e,e=o,o=s,s=e),t[i]=n.floor(o),t[r]=n.ceil(s),t}function pn(t){return Math.log(t)}function xn(t){return Math.exp(t)}function dn(t){return-Math.log(-t)}function vn(t){return-Math.exp(-t)}function mn(t){return isFinite(t)?+(\"1e\"+t):t<0?0:t}function Mn(t){return function(n){return-t(-n)}}function wn(t){var n,e,i=t(pn,xn),r=i.domain,o=10;function s(){return n=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),function(n){return Math.log(n)/t})}(o),e=function(t){return 10===t?mn:t===Math.E?Math.exp:function(n){return Math.pow(t,n)}}(o),r()[0]<0?(n=Mn(n),e=Mn(e),t(dn,vn)):t(pn,xn),i}return i.base=function(t){return arguments.length?(o=+t,s()):o},i.domain=function(t){return arguments.length?(r(t),s()):r()},i.ticks=function(t){var i,s=r(),u=s[0],a=s[s.length-1];(i=a<u)&&(f=u,u=a,a=f);var h,c,l,f=n(u),_=n(a),y=null==t?10:+t,g=[];if(!(o%1)&&_-f<y){if(f=Math.floor(f),_=Math.ceil(_),u>0){for(;f<=_;++f)for(c=1,h=e(f);c<o;++c)if(!((l=h*c)<u)){if(l>a)break;g.push(l)}}else for(;f<=_;++f)for(c=o-1,h=e(f);c>=1;--c)if(!((l=h*c)<u)){if(l>a)break;g.push(l)}2*g.length<y&&(g=$(u,a,y))}else g=$(f,_,Math.min(_-f,y)).map(e);return i?g.reverse():g},i.tickFormat=function(t,r){if(null==r&&(r=10===o?\".0e\":\",\"),\"function\"!=typeof r&&(r=un(r)),t===1/0)return r;null==t&&(t=10);var s=Math.max(1,o*t/i.ticks().length);return function(t){var i=t/e(Math.round(n(t)));return i*o<o-.5&&(i*=o),i<=s?r(t):\"\"}},i.nice=function(){return r(gn(r(),{floor:function(t){return e(Math.floor(n(t)))},ceil:function(t){return e(Math.ceil(n(t)))}}))},i}function bn(){var t=wn(Xt()).domain([1,10]);return t.copy=function(){return Bt(t,bn()).base(t.base())},X.apply(t,arguments),t}sn=ln({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],minus:\"-\"}),un=sn.format,an=sn.formatPrefix;var Tn=new Date,Cn=new Date;function Nn(t,n,e,i){function r(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return r.floor=function(n){return t(n=new Date(+n)),n},r.ceil=function(e){return t(e=new Date(e-1)),n(e,1),t(e),e},r.round=function(t){var n=r(t),e=r.ceil(t);return t-n<e-t?n:e},r.offset=function(t,e){return n(t=new Date(+t),null==e?1:Math.floor(e)),t},r.range=function(e,i,o){var s,u=[];if(e=r.ceil(e),o=null==o?1:Math.floor(o),!(e<i&&o>0))return u;do{u.push(s=new Date(+e)),n(e,o),t(e)}while(s<e&&e<i);return u},r.filter=function(e){return Nn((function(n){if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),(function(t,i){if(t>=t)if(i<0)for(;++i<=0;)for(;n(t,-1),!e(t););else for(;--i>=0;)for(;n(t,1),!e(t););}))},e&&(r.count=function(n,i){return Tn.setTime(+n),Cn.setTime(+i),t(Tn),t(Cn),Math.floor(e(Tn,Cn))},r.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?r.filter(i?function(n){return i(n)%t==0}:function(n){return r.count(0,n)%t==0}):r:null}),r}var kn=Nn((function(){}),(function(t,n){t.setTime(+t+n)}),(function(t,n){return n-t}));kn.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?Nn((function(n){n.setTime(Math.floor(n/t)*t)}),(function(n,e){n.setTime(+n+e*t)}),(function(n,e){return(e-n)/t})):kn:null};var Un=Nn((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,n){t.setTime(+t+1e3*n)}),(function(t,n){return(n-t)/1e3}),(function(t){return t.getUTCSeconds()})),Sn=Nn((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds())}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getMinutes()})),Dn=Nn((function(t){t.setTime(t-t.getMilliseconds()-1e3*t.getSeconds()-6e4*t.getMinutes())}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getHours()})),Ln=Nn((function(t){t.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5}),(function(t){return t.getDate()-1}));function An(t){return Nn((function(n){n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),(function(t,n){t.setDate(t.getDate()+7*n)}),(function(t,n){return(n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/6048e5}))}var Rn=An(0),En=An(1),Pn=(An(2),An(3),An(4)),Fn=(An(5),An(6),Nn((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,n){t.setMonth(t.getMonth()+n)}),(function(t,n){return n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()}))),Yn=Nn((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n)}),(function(t,n){return n.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));Yn.every=function(t){return isFinite(t=Math.floor(t))&&t>0?Nn((function(n){n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),(function(n,e){n.setFullYear(n.getFullYear()+e*t)})):null};var Hn=Nn((function(t){t.setUTCSeconds(0,0)}),(function(t,n){t.setTime(+t+6e4*n)}),(function(t,n){return(n-t)/6e4}),(function(t){return t.getUTCMinutes()})),qn=Nn((function(t){t.setUTCMinutes(0,0,0)}),(function(t,n){t.setTime(+t+36e5*n)}),(function(t,n){return(n-t)/36e5}),(function(t){return t.getUTCHours()})),zn=Nn((function(t){t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCDate(t.getUTCDate()+n)}),(function(t,n){return(n-t)/864e5}),(function(t){return t.getUTCDate()-1}));function jn(t)