{"version":3,"file":"4434c17608042d8e99f7bf24ae022ef7de12ad92-4a9c9b12b8a004aea305.js","mappings":"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","sources":["webpack://kanha-shanthi-vanam/../src/utils.ts","webpack://kanha-shanthi-vanam/../src/chart.tsx","webpack://kanha-shanthi-vanam/../src/typedCharts.tsx","webpack://kanha-shanthi-vanam/../node_modules/chart.js/auto/auto.mjs","webpack://kanha-shanthi-vanam/../gatsby-plugin-hfn-profile/components/Charts/CustomDoughnut.jsx","webpack://kanha-shanthi-vanam/../gatsby-plugin-hfn-profile/components/Charts/VerticalBarChart.jsx","webpack://kanha-shanthi-vanam/../node_modules/chart.js/dist/chunks/helpers.segment.mjs"],"sourcesContent":["import type { MouseEvent } from 'react';\nimport type {\n ChartType,\n ChartData,\n DefaultDataPoint,\n ChartDataset,\n ChartOptions,\n Chart,\n} from 'chart.js';\n\nimport type { ForwardedRef } from './types';\n\nconst defaultDatasetIdKey = 'label';\n\nexport function reforwardRef(ref: ForwardedRef, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport function setOptions<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(chart: Chart, nextOptions: ChartOptions) {\n Object.assign(chart.options, nextOptions);\n}\n\nexport function setLabels<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextLabels: TLabel[] | undefined\n) {\n currentData.labels = nextLabels;\n}\n\nexport function setDatasets<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n currentData: ChartData,\n nextDatasets: ChartDataset[],\n datasetIdKey = defaultDatasetIdKey\n) {\n const addedDatasets: ChartDataset[] = [];\n\n currentData.datasets = nextDatasets.map(\n (nextDataset: Record) => {\n // given the new set, find it's current match\n const currentDataset = currentData.datasets.find(\n (dataset: Record) =>\n dataset[datasetIdKey] === nextDataset[datasetIdKey]\n );\n\n // There is no original to update, so simply add new one\n if (\n !currentDataset ||\n !nextDataset.data ||\n addedDatasets.includes(currentDataset)\n ) {\n return { ...nextDataset } as ChartDataset;\n }\n\n addedDatasets.push(currentDataset);\n\n Object.assign(currentDataset, nextDataset);\n\n return currentDataset;\n }\n );\n}\n\nexport function cloneData<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(data: ChartData, datasetIdKey = defaultDatasetIdKey) {\n const nextData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n setLabels(nextData, data.labels);\n setDatasets(nextData, data.datasets, datasetIdKey);\n\n return nextData;\n}\n\n/**\n * Get dataset from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getDatasetAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'dataset',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get single dataset element from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'nearest',\n { intersect: true },\n false\n );\n}\n\n/**\n * Get all dataset elements from mouse click event\n * @param chart - Chart.js instance\n * @param event - Mouse click event\n * @returns Dataset\n */\nexport function getElementsAtEvent(\n chart: Chart,\n event: MouseEvent\n) {\n return chart.getElementsAtEventForMode(\n event.nativeEvent,\n 'index',\n { intersect: true },\n false\n );\n}\n","import React, { useEffect, useRef, forwardRef } from 'react';\nimport { Chart as ChartJS } from 'chart.js';\nimport type { ChartType, DefaultDataPoint } from 'chart.js';\n\nimport type { ForwardedRef, ChartProps, TypedChartComponent } from './types';\nimport {\n reforwardRef,\n cloneData,\n setOptions,\n setLabels,\n setDatasets,\n} from './utils';\n\nfunction ChartComponent<\n TType extends ChartType = ChartType,\n TData = DefaultDataPoint,\n TLabel = unknown\n>(\n {\n height = 150,\n width = 300,\n redraw = false,\n datasetIdKey,\n type,\n data,\n options,\n plugins = [],\n fallbackContent,\n updateMode,\n ...props\n }: ChartProps,\n ref: ForwardedRef>\n) {\n type TypedChartJS = ChartJS;\n\n const canvasRef = useRef(null);\n const chartRef = useRef();\n\n const renderChart = () => {\n if (!canvasRef.current) return;\n\n chartRef.current = new ChartJS(canvasRef.current, {\n type,\n data: cloneData(data, datasetIdKey),\n options: options && { ...options },\n plugins,\n });\n\n reforwardRef(ref, chartRef.current);\n };\n\n const destroyChart = () => {\n reforwardRef(ref, null);\n\n if (chartRef.current) {\n chartRef.current.destroy();\n chartRef.current = null;\n }\n };\n\n useEffect(() => {\n if (!redraw && chartRef.current && options) {\n setOptions(chartRef.current, options);\n }\n }, [redraw, options]);\n\n useEffect(() => {\n if (!redraw && chartRef.current) {\n setLabels(chartRef.current.config.data, data.labels);\n }\n }, [redraw, data.labels]);\n\n useEffect(() => {\n if (!redraw && chartRef.current && data.datasets) {\n setDatasets(chartRef.current.config.data, data.datasets, datasetIdKey);\n }\n }, [redraw, data.datasets]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n if (redraw) {\n destroyChart();\n setTimeout(renderChart);\n } else {\n chartRef.current.update(updateMode);\n }\n }, [redraw, options, data.labels, data.datasets, updateMode]);\n\n useEffect(() => {\n if (!chartRef.current) return;\n\n destroyChart();\n setTimeout(renderChart);\n }, [type]);\n\n useEffect(() => {\n renderChart();\n\n return () => destroyChart();\n }, []);\n\n return (\n \n {fallbackContent}\n \n );\n}\n\nexport const Chart = forwardRef(ChartComponent) as TypedChartComponent;\n","import React, { forwardRef } from 'react';\nimport {\n Chart as ChartJS,\n LineController,\n BarController,\n RadarController,\n DoughnutController,\n PolarAreaController,\n BubbleController,\n PieController,\n ScatterController,\n} from 'chart.js';\nimport type { ChartType, ChartComponentLike } from 'chart.js';\n\nimport type {\n ChartProps,\n ChartJSOrUndefined,\n TypedChartComponent,\n} from './types';\nimport { Chart } from './chart';\n\nfunction createTypedChart(\n type: T,\n registerables: ChartComponentLike\n) {\n ChartJS.register(registerables);\n\n return forwardRef, Omit, 'type'>>(\n (props, ref) => \n ) as TypedChartComponent;\n}\n\nexport const Line = /* #__PURE__ */ createTypedChart('line', LineController);\n\nexport const Bar = /* #__PURE__ */ createTypedChart('bar', BarController);\n\nexport const Radar = /* #__PURE__ */ createTypedChart('radar', RadarController);\n\nexport const Doughnut = /* #__PURE__ */ createTypedChart(\n 'doughnut',\n DoughnutController\n);\n\nexport const PolarArea = /* #__PURE__ */ createTypedChart(\n 'polarArea',\n PolarAreaController\n);\n\nexport const Bubble = /* #__PURE__ */ createTypedChart(\n 'bubble',\n BubbleController\n);\n\nexport const Pie = /* #__PURE__ */ createTypedChart('pie', PieController);\n\nexport const Scatter = /* #__PURE__ */ createTypedChart(\n 'scatter',\n ScatterController\n);\n","import _toConsumableArray from \"/codebuild/output/src68387856/src/my/sites/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\nimport { Chart, registerables } from '../dist/chart.mjs';\nChart.register.apply(Chart, _toConsumableArray(registerables));\nexport default Chart;","import React from \"react\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport \"chart.js/auto\";\nimport PropTypes from \"prop-types\";\n\nconst CustomDoughnut = ({\n sectorData,\n height,\n width,\n labelData,\n sectorColor,\n showLegend,\n borderWidth,\n maintainAspectRatio,\n showLegendTitle,\n legendAlignment,\n legendBoxHeight,\n legendBoxWidth,\n legendPosition,\n legendTitle,\n enableTooltip,\n}) => {\n const data = {\n responsive: true,\n labels: labelData,\n datasets: [\n {\n data: sectorData,\n backgroundColor: sectorColor,\n borderWidth,\n },\n ],\n };\n const options = {\n maintainAspectRatio,\n plugins: {\n tooltip: {\n enabled: enableTooltip,\n },\n legend: {\n display: showLegend,\n position: legendPosition,\n align: legendAlignment,\n title: {\n display: showLegendTitle,\n text: legendTitle,\n },\n labels: {\n boxWidth: legendBoxWidth,\n boxHeight: legendBoxHeight,\n },\n },\n },\n };\n return (\n \n );\n};\nCustomDoughnut.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n labelData: PropTypes.shape([]).isRequired,\n sectorColor: PropTypes.shape([]),\n sectorData: PropTypes.shape([]),\n showLegend: PropTypes.bool.isRequired,\n borderWidth: PropTypes.number.isRequired,\n maintainAspectRatio: PropTypes.bool.isRequired,\n legendBoxWidth: PropTypes.number.isRequired,\n legendBoxHeight: PropTypes.number.isRequired,\n legendPosition: PropTypes.string.isRequired,\n legendAlignment: PropTypes.string.isRequired,\n showLegendTitle: PropTypes.bool.isRequired,\n enableTooltip: PropTypes.bool.isRequired,\n legendTitle: PropTypes.string.isRequired,\n};\nCustomDoughnut.defaultProps = {\n width: 500,\n height: 100,\n sectorColor: [\"#50CD89\", \"#DF2D2D\"],\n sectorData: [\"15\", \"5\"],\n};\nexport default CustomDoughnut;\n","import React from \"react\";\nimport \"chart.js/auto\";\nimport { Bar } from \"react-chartjs-2\";\nimport PropTypes from \"prop-types\";\n\nconst VerticalBarChart = ({\n width,\n height,\n barName,\n yAxisData,\n barColor,\n showLegend,\n xAxisData,\n borderColor,\n borderWidth,\n maintainAspectRatio,\n}) => {\n const options = {\n maintainAspectRatio,\n plugins: {\n legend: {\n display: showLegend,\n },\n },\n };\n const data = {\n labels: xAxisData,\n datasets: [\n {\n label: barName,\n backgroundColor: barColor,\n borderColor,\n borderWidth,\n data: yAxisData,\n },\n ],\n };\n\n return ;\n};\nVerticalBarChart.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n showLegend: PropTypes,\n xAxisData: PropTypes.shape([]),\n yAxisData: PropTypes.shape([]),\n barColor: PropTypes.shape([]),\n barName: PropTypes.string.isRequired,\n borderColor: PropTypes.string.isRequired,\n borderWidth: PropTypes.number.isRequired,\n maintainAspectRatio: PropTypes.bool,\n};\nVerticalBarChart.defaultProps = {\n width: 300,\n height: 100,\n xAxisData: [\"january\", \"February\", \"March\", \"April\"],\n yAxisData: [\"15\", \"5\", \"10\", \"9\"],\n barColor: [\"#50CD89\", \"#DF2D2D\"],\n maintainAspectRatio: true,\n showLegend: false,\n};\n\nexport default VerticalBarChart;\n","import _defineProperty from \"/codebuild/output/src68387856/src/my/sites/node_modules/@babel/runtime/helpers/esm/defineProperty\";\nimport _classCallCheck from \"/codebuild/output/src68387856/src/my/sites/node_modules/@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"/codebuild/output/src68387856/src/my/sites/node_modules/@babel/runtime/helpers/esm/createClass\";\nimport _toConsumableArray from \"/codebuild/output/src68387856/src/my/sites/node_modules/@babel/runtime/helpers/esm/toConsumableArray\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*!\n * Chart.js v3.9.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction noop() {}\n\nvar uid = function () {\n var id = 0;\n return function () {\n return id++;\n };\n}();\n\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n\n var type = Object.prototype.toString.call(value);\n\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n\n return false;\n}\n\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n\nvar isNumberFinite = function isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n};\n\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\n\nvar toPercentage = function toPercentage(value, dimension) {\n return typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : value / dimension;\n};\n\nvar toDimension = function toDimension(value, dimension) {\n return typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n};\n\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\n\nfunction each(loopable, fn, thisArg, reverse) {\n var i, len, keys;\n\n if (isArray(loopable)) {\n len = loopable.length;\n\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n\nfunction _elementsEqual(a0, a1) {\n var i, ilen, v0, v1;\n\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n\n if (isObject(source)) {\n var target = Object.create(null);\n var keys = Object.keys(source);\n var klen = keys.length;\n var k = 0;\n\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n\n return target;\n }\n\n return source;\n}\n\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n\n var tval = target[key];\n var sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\n\nfunction merge(target, source, options) {\n var sources = isArray(source) ? source : [source];\n var ilen = sources.length;\n\n if (!isObject(target)) {\n return target;\n }\n\n options = options || {};\n var merger = options.merger || _merger;\n\n for (var i = 0; i < ilen; ++i) {\n source = sources[i];\n\n if (!isObject(source)) {\n continue;\n }\n\n var keys = Object.keys(source);\n\n for (var k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n\n return target;\n}\n\nfunction mergeIf(target, source) {\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n\n var tval = target[key];\n var sval = source[key];\n\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\n\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n\nvar keyResolvers = {\n '': function _(v) {\n return v;\n },\n x: function x(o) {\n return o.x;\n },\n y: function y(o) {\n return o.y;\n }\n};\n\nfunction resolveObjectKey(obj, key) {\n var resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n\n return resolver(obj);\n}\n\nfunction _getKeyResolver(key) {\n var keys = _splitKey(key);\n\n return function (obj) {\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var k = _step.value;\n\n if (k === '') {\n break;\n }\n\n obj = obj && obj[k];\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return obj;\n };\n}\n\nfunction _splitKey(key) {\n var parts = key.split('.');\n var keys = [];\n var tmp = '';\n\n var _iterator2 = _createForOfIteratorHelper(parts),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var part = _step2.value;\n tmp += part;\n\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n return keys;\n}\n\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nvar defined = function defined(value) {\n return typeof value !== 'undefined';\n};\n\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n\nvar setsEqual = function setsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n\n var _iterator3 = _createForOfIteratorHelper(a),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var item = _step3.value;\n\n if (!b.has(item)) {\n return false;\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n return true;\n};\n\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nvar PI = Math.PI;\nvar TAU = 2 * PI;\nvar PITAU = TAU + PI;\nvar INFINITY = Number.POSITIVE_INFINITY;\nvar RAD_PER_DEG = PI / 180;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\nvar log10 = Math.log10;\nvar sign = Math.sign;\n\nfunction niceNum(range) {\n var roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n var niceRange = Math.pow(10, Math.floor(log10(range)));\n var fraction = range / niceRange;\n var niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n\nfunction _factorize(value) {\n var result = [];\n var sqrt = Math.sqrt(value);\n var i;\n\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n\n result.sort(function (a, b) {\n return a - b;\n }).pop();\n return result;\n}\n\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n\nfunction almostWhole(x, epsilon) {\n var rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n\nfunction _setMinAndMaxByKey(array, target, property) {\n var i, ilen, value;\n\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\n\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\n\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n\n var e = 1;\n var p = 0;\n\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n\n return p;\n}\n\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n var distanceFromXCenter = anglePoint.x - centrePoint.x;\n var distanceFromYCenter = anglePoint.y - centrePoint.y;\n var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n if (angle < -0.5 * PI) {\n angle += TAU;\n }\n\n return {\n angle: angle,\n distance: radialDistanceFromCenter\n };\n}\n\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n var a = _normalizeAngle(angle);\n\n var s = _normalizeAngle(start);\n\n var e = _normalizeAngle(end);\n\n var angleToStart = _normalizeAngle(s - a);\n\n var angleToEnd = _normalizeAngle(e - a);\n\n var startToAngle = _normalizeAngle(a - s);\n\n var endToAngle = _normalizeAngle(a - e);\n\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n\nfunction _isBetween(value, start, end) {\n var epsilon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1e-6;\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || function (index) {\n return table[index] < value;\n };\n\n var hi = table.length - 1;\n var lo = 0;\n var mid;\n\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n\n return {\n lo: lo,\n hi: hi\n };\n}\n\nvar _lookupByKey = function _lookupByKey(table, key, value, last) {\n return _lookup(table, value, last ? function (index) {\n return table[index][key] <= value;\n } : function (index) {\n return table[index][key] < value;\n });\n};\n\nvar _rlookupByKey = function _rlookupByKey(table, key, value) {\n return _lookup(table, value, function (index) {\n return table[index][key] >= value;\n });\n};\n\nfunction _filterBetween(values, min, max) {\n var start = 0;\n var end = values.length;\n\n while (start < end && values[start] < min) {\n start++;\n }\n\n while (end > start && values[end - 1] > max) {\n end--;\n }\n\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n\n return;\n }\n\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(function (key) {\n var method = '_onData' + _capitalize(key);\n\n var base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value: function value() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var res = base.apply(this, args);\n\n array._chartjs.listeners.forEach(function (object) {\n if (typeof object[method] === 'function') {\n object[method].apply(object, args);\n }\n });\n\n return res;\n }\n });\n });\n}\n\nfunction unlistenArrayEvents(array, listener) {\n var stub = array._chartjs;\n\n if (!stub) {\n return;\n }\n\n var listeners = stub.listeners;\n var index = listeners.indexOf(listener);\n\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n\n if (listeners.length > 0) {\n return;\n }\n\n arrayEvents.forEach(function (key) {\n delete array[key];\n });\n delete array._chartjs;\n}\n\nfunction _arrayUnique(items) {\n var set = new Set();\n var i, ilen;\n\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n\n if (set.size === ilen) {\n return items;\n }\n\n return Array.from(set);\n}\n\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n\nvar requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n\n return window.requestAnimationFrame;\n}();\n\nfunction throttled(fn, thisArg, updateFn) {\n var updateArgs = updateFn || function (args) {\n return Array.prototype.slice.call(args);\n };\n\n var ticking = false;\n var args = [];\n return function () {\n for (var _len2 = arguments.length, rest = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rest[_key2] = arguments[_key2];\n }\n\n args = updateArgs(rest);\n\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, function () {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\n\nfunction debounce(fn, delay) {\n var timeout;\n return function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n\n return delay;\n };\n}\n\nvar _toLeftRightCenter = function _toLeftRightCenter(align) {\n return align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n};\n\nvar _alignStartEnd = function _alignStartEnd(align, start, end) {\n return align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n};\n\nvar _textX = function _textX(align, left, right, rtl) {\n var check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n var pointCount = points.length;\n var start = 0;\n var count = pointCount;\n\n if (meta._sorted) {\n var iScale = meta.iScale,\n _parsed = meta._parsed;\n var axis = iScale.axis;\n\n var _iScale$getUserBounds = iScale.getUserBounds(),\n min = _iScale$getUserBounds.min,\n max = _iScale$getUserBounds.max,\n minDefined = _iScale$getUserBounds.minDefined,\n maxDefined = _iScale$getUserBounds.maxDefined;\n\n if (minDefined) {\n start = _limitValue(Math.min(_lookupByKey(_parsed, iScale.axis, min).lo, animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n\n if (maxDefined) {\n count = _limitValue(Math.max(_lookupByKey(_parsed, iScale.axis, max, true).hi + 1, animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n\n return {\n start: start,\n count: count\n };\n}\n\nfunction _scaleRangesChanged(meta) {\n var xScale = meta.xScale,\n yScale = meta.yScale,\n _scaleRanges = meta._scaleRanges;\n var newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n\n var changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nvar atEdge = function atEdge(t) {\n return t === 0 || t === 1;\n};\n\nvar elasticIn = function elasticIn(t, s, p) {\n return -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\n};\n\nvar elasticOut = function elasticOut(t, s, p) {\n return Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n};\n\nvar effects = {\n linear: function linear(t) {\n return t;\n },\n easeInQuad: function easeInQuad(t) {\n return t * t;\n },\n easeOutQuad: function easeOutQuad(t) {\n return -t * (t - 2);\n },\n easeInOutQuad: function easeInOutQuad(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1);\n },\n easeInCubic: function easeInCubic(t) {\n return t * t * t;\n },\n easeOutCubic: function easeOutCubic(t) {\n return (t -= 1) * t * t + 1;\n },\n easeInOutCubic: function easeInOutCubic(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2);\n },\n easeInQuart: function easeInQuart(t) {\n return t * t * t * t;\n },\n easeOutQuart: function easeOutQuart(t) {\n return -((t -= 1) * t * t * t - 1);\n },\n easeInOutQuart: function easeInOutQuart(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2);\n },\n easeInQuint: function easeInQuint(t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function easeOutQuint(t) {\n return (t -= 1) * t * t * t * t + 1;\n },\n easeInOutQuint: function easeInOutQuint(t) {\n return (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2);\n },\n easeInSine: function easeInSine(t) {\n return -Math.cos(t * HALF_PI) + 1;\n },\n easeOutSine: function easeOutSine(t) {\n return Math.sin(t * HALF_PI);\n },\n easeInOutSine: function easeInOutSine(t) {\n return -0.5 * (Math.cos(PI * t) - 1);\n },\n easeInExpo: function easeInExpo(t) {\n return t === 0 ? 0 : Math.pow(2, 10 * (t - 1));\n },\n easeOutExpo: function easeOutExpo(t) {\n return t === 1 ? 1 : -Math.pow(2, -10 * t) + 1;\n },\n easeInOutExpo: function easeInOutExpo(t) {\n return atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2);\n },\n easeInCirc: function easeInCirc(t) {\n return t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1);\n },\n easeOutCirc: function easeOutCirc(t) {\n return Math.sqrt(1 - (t -= 1) * t);\n },\n easeInOutCirc: function easeInOutCirc(t) {\n return (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n },\n easeInElastic: function easeInElastic(t) {\n return atEdge(t) ? t : elasticIn(t, 0.075, 0.3);\n },\n easeOutElastic: function easeOutElastic(t) {\n return atEdge(t) ? t : elasticOut(t, 0.075, 0.3);\n },\n easeInOutElastic: function easeInOutElastic(t) {\n var s = 0.1125;\n var p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack: function easeInBack(t) {\n var s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack: function easeOutBack(t) {\n var s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack: function easeInOutBack(t) {\n var s = 1.70158;\n\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: function easeInBounce(t) {\n return 1 - effects.easeOutBounce(1 - t);\n },\n easeOutBounce: function easeOutBounce(t) {\n var m = 7.5625;\n var d = 2.75;\n\n if (t < 1 / d) {\n return m * t * t;\n }\n\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: function easeInOutBounce(t) {\n return t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n }\n};\n/*!\n * @kurkle/color v0.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\n\nfunction round(v) {\n return v + 0.5 | 0;\n}\n\nvar lim = function lim(v, l, h) {\n return Math.max(Math.min(v, h), l);\n};\n\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\n\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\n\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\n\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\nvar map$1 = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n};\n\nvar hex = _toConsumableArray('0123456789ABCDEF');\n\nvar h1 = function h1(b) {\n return hex[b & 0xF];\n};\n\nvar h2 = function h2(b) {\n return hex[(b & 0xF0) >> 4] + hex[b & 0xF];\n};\n\nvar eq = function eq(b) {\n return (b & 0xF0) >> 4 === (b & 0xF);\n};\n\nvar isShort = function isShort(v) {\n return eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n};\n\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255\n };\n }\n }\n\n return ret;\n}\n\nvar alpha = function alpha(a, f) {\n return a < 255 ? f(a) : '';\n};\n\nfunction _hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : undefined;\n}\n\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction hsl2rgbn(h, s, l) {\n var a = s * Math.min(l, 1 - l);\n\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 30) % 12;\n return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n };\n\n return [f(0), f(8), f(4)];\n}\n\nfunction hsv2rgbn(h, s, v) {\n var f = function f(n) {\n var k = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (n + h / 60) % 6;\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n };\n\n return [f(5), f(3), f(1)];\n}\n\nfunction hwb2rgbn(h, w, b) {\n var rgb = hsl2rgbn(h, 1, 0.5);\n var i;\n\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n\n return rgb;\n}\n\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n\n if (g === max) {\n return (b - r) / d + 2;\n }\n\n return (r - g) / d + 4;\n}\n\nfunction rgb2hsl(v) {\n var range = 255;\n var r = v.r / range;\n var g = v.g / range;\n var b = v.b / range;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var l = (max + min) / 2;\n var h, s, d;\n\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n\n return [h | 0, s || 0, l];\n}\n\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\n\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\n\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\n\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\n\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\n\nfunction hueParse(str) {\n var m = HUE_RE.exec(str);\n var a = 255;\n var v;\n\n if (!m) {\n return;\n }\n\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n\n var h = hue(+m[2]);\n var p1 = +m[3] / 100;\n var p2 = +m[4] / 100;\n\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\n\nfunction _rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\n\nfunction _hslString(v) {\n if (!v) {\n return;\n }\n\n var a = rgb2hsl(v);\n var h = a[0];\n var s = n2p(a[1]);\n var l = n2p(a[2]);\n return v.a < 255 ? \"hsla(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%, \").concat(b2n(v.a), \")\") : \"hsl(\".concat(h, \", \").concat(s, \"%, \").concat(l, \"%)\");\n}\n\nvar map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nvar names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\n\nfunction unpack() {\n var unpacked = {};\n var keys = Object.keys(names$1);\n var tkeys = Object.keys(map);\n var i, j, k, ok, nk;\n\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n\n return unpacked;\n}\n\nvar names;\n\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n\n var a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\n\nfunction rgbParse(str) {\n var m = RGB_RE.exec(str);\n var a = 255;\n var r, g, b;\n\n if (!m) {\n return;\n }\n\n if (m[7] !== r) {\n var v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\n\nfunction _rgbString(v) {\n return v && (v.a < 255 ? \"rgba(\".concat(v.r, \", \").concat(v.g, \", \").concat(v.b, \", \").concat(b2n(v.a), \")\") : \"rgb(\".concat(v.r, \", \").concat(v.g, \", \").concat(v.b, \")\"));\n}\n\nvar to = function to(v) {\n return v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\n};\n\nvar from = function from(v) {\n return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\n};\n\nfunction _interpolate(rgb1, rgb2, t) {\n var r = from(b2n(rgb1.r));\n var g = from(b2n(rgb1.g));\n var b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nfunction modHSL(v, i, ratio) {\n if (v) {\n var tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\n\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\n\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n\n return v;\n}\n\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n\n return hueParse(str);\n}\n\nvar Color = /*#__PURE__*/function () {\n function Color(input) {\n _classCallCheck(this, Color);\n\n if (input instanceof Color) {\n return input;\n }\n\n var type = typeof input;\n var v;\n\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n\n this._rgb = v;\n this._valid = !!v;\n }\n\n _createClass(Color, [{\n key: \"valid\",\n get: function get() {\n return this._valid;\n }\n }, {\n key: \"rgb\",\n get: function get() {\n var v = clone(this._rgb);\n\n if (v) {\n v.a = b2n(v.a);\n }\n\n return v;\n },\n set: function set(obj) {\n this._rgb = fromObject(obj);\n }\n }, {\n key: \"rgbString\",\n value: function rgbString() {\n return this._valid ? _rgbString(this._rgb) : undefined;\n }\n }, {\n key: \"hexString\",\n value: function hexString() {\n return this._valid ? _hexString(this._rgb) : undefined;\n }\n }, {\n key: \"hslString\",\n value: function hslString() {\n return this._valid ? _hslString(this._rgb) : undefined;\n }\n }, {\n key: \"mix\",\n value: function mix(color, weight) {\n if (color) {\n var c1 = this.rgb;\n var c2 = color.rgb;\n var w2;\n var p = weight === w2 ? 0.5 : weight;\n var w = 2 * p - 1;\n var a = c1.a - c2.a;\n var w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n\n return this;\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(color, t) {\n if (color) {\n this._rgb = _interpolate(this._rgb, color._rgb, t);\n }\n\n return this;\n }\n }, {\n key: \"clone\",\n value: function clone() {\n return new Color(this.rgb);\n }\n }, {\n key: \"alpha\",\n value: function alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n }, {\n key: \"clearer\",\n value: function clearer(ratio) {\n var rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n }, {\n key: \"greyscale\",\n value: function greyscale() {\n var rgb = this._rgb;\n var val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n }, {\n key: \"opaquer\",\n value: function opaquer(ratio) {\n var rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n }, {\n key: \"negate\",\n value: function negate() {\n var v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n }, {\n key: \"lighten\",\n value: function lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n }, {\n key: \"darken\",\n value: function darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n }, {\n key: \"saturate\",\n value: function saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n }, {\n key: \"desaturate\",\n value: function desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n }, {\n key: \"rotate\",\n value: function rotate(deg) {\n _rotate(this._rgb, deg);\n\n return this;\n }\n }]);\n\n return Color;\n}();\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n var type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n\n return false;\n}\n\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\n\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nvar overrides = Object.create(null);\nvar descriptors = Object.create(null);\n\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n\n var keys = key.split('.');\n\n for (var i = 0, n = keys.length; i < n; ++i) {\n var k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n\n return node;\n}\n\nfunction _set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n\n return merge(getScope$1(root, ''), scope);\n}\n\nvar Defaults = /*#__PURE__*/function () {\n function Defaults(_descriptors) {\n _classCallCheck(this, Defaults);\n\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n\n this.devicePixelRatio = function (context) {\n return context.chart.platform.getDevicePixelRatio();\n };\n\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n\n this.hoverBackgroundColor = function (ctx, options) {\n return getHoverColor(options.backgroundColor);\n };\n\n this.hoverBorderColor = function (ctx, options) {\n return getHoverColor(options.borderColor);\n };\n\n this.hoverColor = function (ctx, options) {\n return getHoverColor(options.color);\n };\n\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n\n _createClass(Defaults, [{\n key: \"set\",\n value: function set(scope, values) {\n return _set(this, scope, values);\n }\n }, {\n key: \"get\",\n value: function get(scope) {\n return getScope$1(this, scope);\n }\n }, {\n key: \"describe\",\n value: function describe(scope, values) {\n return _set(descriptors, scope, values);\n }\n }, {\n key: \"override\",\n value: function override(scope, values) {\n return _set(overrides, scope, values);\n }\n }, {\n key: \"route\",\n value: function route(scope, name, targetScope, targetName) {\n var _Object$definePropert;\n\n var scopeObject = getScope$1(this, scope);\n var targetScopeObject = getScope$1(this, targetScope);\n var privateName = '_' + name;\n Object.defineProperties(scopeObject, (_Object$definePropert = {}, _defineProperty(_Object$definePropert, privateName, {\n value: scopeObject[name],\n writable: true\n }), _defineProperty(_Object$definePropert, name, {\n enumerable: true,\n get: function get() {\n var local = this[privateName];\n var target = targetScopeObject[targetName];\n\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n\n return valueOrDefault(local, target);\n },\n set: function set(value) {\n this[privateName] = value;\n }\n }), _Object$definePropert));\n }\n }]);\n\n return Defaults;\n}();\n\nvar defaults = new Defaults({\n _scriptable: function _scriptable(name) {\n return !name.startsWith('on');\n },\n _indexable: function _indexable(name) {\n return name !== 'events';\n },\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n\nfunction _measureText(ctx, data, gc, longest, string) {\n var textWidth = data[string];\n\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n\n if (textWidth > longest) {\n longest = textWidth;\n }\n\n return longest;\n}\n\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n var data = cache.data = cache.data || {};\n var gc = cache.garbageCollect = cache.garbageCollect || [];\n\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n\n ctx.save();\n ctx.font = font;\n var longest = 0;\n var ilen = arrayOfThings.length;\n var i, j, jlen, thing, nestedThing;\n\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n\n ctx.restore();\n var gcLen = gc.length / 2;\n\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n\n gc.splice(0, gcLen);\n }\n\n return longest;\n}\n\nfunction _alignPixel(chart, pixel, width) {\n var devicePixelRatio = chart.currentDevicePixelRatio;\n var halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\n\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\n\nfunction drawPointLegend(ctx, options, x, y, w) {\n var type, xOffset, yOffset, size, cornerRadius, width;\n var style = options.pointStyle;\n var rotation = options.rotation;\n var radius = options.radius;\n var rad = (rotation || 0) * RAD_PER_DEG;\n\n if (style && typeof style === 'object') {\n type = style.toString();\n\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n\n ctx.beginPath();\n\n switch (style) {\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n\n ctx.closePath();\n break;\n\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n\n rad += QUARTER_PI;\n\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n\n case 'crossRot':\n rad += QUARTER_PI;\n\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n\n ctx.fill();\n\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\n\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\n\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n if (mode === 'middle') {\n var midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n\n ctx.lineTo(target.x, target.y);\n}\n\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\n\nfunction renderText(ctx, text, x, y, font) {\n var opts = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var lines = isArray(text) ? text : [text];\n var stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n var i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n\n ctx.restore();\n}\n\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\n\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n var metrics = ctx.measureText(line);\n var left = x - metrics.actualBoundingBoxLeft;\n var right = x + metrics.actualBoundingBoxRight;\n var top = y - metrics.actualBoundingBoxAscent;\n var bottom = y + metrics.actualBoundingBoxDescent;\n var yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\n\nfunction addRoundedRectPath(ctx, rect) {\n var x = rect.x,\n y = rect.y,\n w = rect.w,\n h = rect.h,\n radius = rect.radius;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nvar LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nvar FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\n\nfunction toLineHeight(value, size) {\n var matches = ('' + value).match(LINE_HEIGHT);\n\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n\n value = +matches[2];\n\n switch (matches[3]) {\n case 'px':\n return value;\n\n case '%':\n value /= 100;\n break;\n }\n\n return size * value;\n}\n\nvar numberOrZero = function numberOrZero(v) {\n return +v || 0;\n};\n\nfunction _readValueToProps(value, props) {\n var ret = {};\n var objProps = isObject(props);\n var keys = objProps ? Object.keys(props) : props;\n var read = isObject(value) ? objProps ? function (prop) {\n return valueOrDefault(value[prop], value[props[prop]]);\n } : function (prop) {\n return value[prop];\n } : function () {\n return value;\n };\n\n var _iterator4 = _createForOfIteratorHelper(keys),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var prop = _step4.value;\n ret[prop] = numberOrZero(read(prop));\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n\n return ret;\n}\n\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n\nfunction toPadding(value) {\n var obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n var size = valueOrDefault(options.size, fallback.size);\n\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n\n var style = valueOrDefault(options.style, fallback.style);\n\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n\n var font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size: size,\n style: style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n\nfunction resolve(inputs, context, index, info) {\n var cacheable = true;\n var i, ilen, value;\n\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n\n if (value === undefined) {\n continue;\n }\n\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n\n return value;\n }\n }\n}\n\nfunction _addGrace(minmax, grace, beginAtZero) {\n var min = minmax.min,\n max = minmax.max;\n var change = toDimension(grace, (max - min) / 2);\n\n var keepZero = function keepZero(value, add) {\n return beginAtZero && value === 0 ? 0 : value + add;\n };\n\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\n\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _createResolver(scopes) {\n var _cache;\n\n var prefixes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n var rootScopes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : scopes;\n var fallback = arguments.length > 3 ? arguments[3] : undefined;\n var getTarget = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : function () {\n return scopes[0];\n };\n\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n\n var cache = (_cache = {}, _defineProperty(_cache, Symbol.toStringTag, 'Object'), _defineProperty(_cache, \"_cacheable\", true), _defineProperty(_cache, \"_scopes\", scopes), _defineProperty(_cache, \"_rootScopes\", rootScopes), _defineProperty(_cache, \"_fallback\", fallback), _defineProperty(_cache, \"_getTarget\", getTarget), _defineProperty(_cache, \"override\", function override(scope) {\n return _createResolver([scope].concat(_toConsumableArray(scopes)), prefixes, rootScopes, fallback);\n }), _cache);\n return new Proxy(cache, {\n deleteProperty: function deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get: function get(target, prop) {\n return _cached(target, prop, function () {\n return _resolveWithPrefixes(prop, prefixes, scopes, target);\n });\n },\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has: function has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys: function ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set: function set(target, prop, value) {\n var storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\n\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n var cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: function setContext(ctx) {\n return _attachContext(proxy, ctx, subProxy, descriptorDefaults);\n },\n override: function override(scope) {\n return _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults);\n }\n };\n return new Proxy(cache, {\n deleteProperty: function deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get: function get(target, prop, receiver) {\n return _cached(target, prop, function () {\n return _resolveWithContext(target, prop, receiver);\n });\n },\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf: function getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has: function has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys: function ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set: function set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\n\nfunction _descriptors(proxy) {\n var defaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n scriptable: true,\n indexable: true\n };\n\n var _proxy$_scriptable = proxy._scriptable,\n _scriptable = _proxy$_scriptable === void 0 ? defaults.scriptable : _proxy$_scriptable,\n _proxy$_indexable = proxy._indexable,\n _indexable = _proxy$_indexable === void 0 ? defaults.indexable : _proxy$_indexable,\n _proxy$_allKeys = proxy._allKeys,\n _allKeys = _proxy$_allKeys === void 0 ? defaults.allKeys : _proxy$_allKeys;\n\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : function () {\n return _scriptable;\n },\n isIndexable: isFunction(_indexable) ? _indexable : function () {\n return _indexable;\n }\n };\n}\n\nvar readKey = function readKey(prefix, name) {\n return prefix ? prefix + _capitalize(name) : name;\n};\n\nvar needsSubResolver = function needsSubResolver(prop, value) {\n return isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\n};\n\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n\n var value = resolve();\n target[prop] = value;\n return value;\n}\n\nfunction _resolveWithContext(target, prop, receiver) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n var value = _proxy[prop];\n\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n\n return value;\n}\n\nfunction _resolveScriptable(prop, value, target, receiver) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n _stack = target._stack;\n\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n\n _stack.add(prop);\n\n value = value(_context, _subProxy || receiver);\n\n _stack.delete(prop);\n\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n\n return value;\n}\n\nfunction _resolveArray(prop, value, target, isIndexable) {\n var _proxy = target._proxy,\n _context = target._context,\n _subProxy = target._subProxy,\n descriptors = target._descriptors;\n\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n var arr = value;\n\n var scopes = _proxy._scopes.filter(function (s) {\n return s !== arr;\n });\n\n value = [];\n\n var _iterator5 = _createForOfIteratorHelper(arr),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var item = _step5.value;\n var resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n }\n\n return value;\n}\n\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\n\nvar getScope = function getScope(key, parent) {\n return key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\n};\n\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n var _iterator6 = _createForOfIteratorHelper(parentScopes),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var parent = _step6.value;\n var scope = getScope(key, parent);\n\n if (scope) {\n set.add(scope);\n var fallback = resolveFallback(scope._fallback, key, value);\n\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return false;\n}\n\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n var rootScopes = resolver._rootScopes;\n var fallback = resolveFallback(resolver._fallback, prop, value);\n var allScopes = [].concat(_toConsumableArray(parentScopes), _toConsumableArray(rootScopes));\n var set = new Set();\n set.add(value);\n var key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n\n if (key === null) {\n return false;\n }\n\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n\n if (key === null) {\n return false;\n }\n }\n\n return _createResolver(Array.from(set), [''], rootScopes, fallback, function () {\n return subGetTarget(resolver, prop, value);\n });\n}\n\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n\n return key;\n}\n\nfunction subGetTarget(resolver, prop, value) {\n var parent = resolver._getTarget();\n\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n\n var target = parent[prop];\n\n if (isArray(target) && isObject(value)) {\n return value;\n }\n\n return target;\n}\n\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n var value;\n\n var _iterator7 = _createForOfIteratorHelper(prefixes),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var prefix = _step7.value;\n value = _resolve(readKey(prefix, prop), scopes);\n\n if (defined(value)) {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n}\n\nfunction _resolve(key, scopes) {\n var _iterator8 = _createForOfIteratorHelper(scopes),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var scope = _step8.value;\n\n if (!scope) {\n continue;\n }\n\n var value = scope[key];\n\n if (defined(value)) {\n return value;\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n}\n\nfunction getKeysFromAllScopes(target) {\n var keys = target._keys;\n\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n\n return keys;\n}\n\nfunction resolveKeysFromAllScopes(scopes) {\n var set = new Set();\n\n var _iterator9 = _createForOfIteratorHelper(scopes),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var scope = _step9.value;\n\n var _iterator10 = _createForOfIteratorHelper(Object.keys(scope).filter(function (k) {\n return !k.startsWith('_');\n })),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var key = _step10.value;\n set.add(key);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return Array.from(set);\n}\n\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n var iScale = meta.iScale;\n var _this$_parsing$key = this._parsing.key,\n key = _this$_parsing$key === void 0 ? 'r' : _this$_parsing$key;\n var parsed = new Array(count);\n var i, ilen, index, item;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n\n return parsed;\n}\n\nvar EPSILON = Number.EPSILON || 1e-14;\n\nvar getPoint = function getPoint(points, i) {\n return i < points.length && !points[i].skip && points[i];\n};\n\nvar getValueAxis = function getValueAxis(indexAxis) {\n return indexAxis === 'x' ? 'y' : 'x';\n};\n\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n var previous = firstPoint.skip ? middlePoint : firstPoint;\n var current = middlePoint;\n var next = afterPoint.skip ? middlePoint : afterPoint;\n var d01 = distanceBetweenPoints(current, previous);\n var d12 = distanceBetweenPoints(next, current);\n var s01 = d01 / (d01 + d12);\n var s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n var fa = t * s01;\n var fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n\nfunction monotoneAdjust(points, deltaK, mK) {\n var pointsLen = points.length;\n var alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (var i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\n if (squaredMagnitude <= 9) {\n continue;\n }\n\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\n\nfunction monotoneCompute(points, mK) {\n var indexAxis = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'x';\n var valueAxis = getValueAxis(indexAxis);\n var pointsLen = points.length;\n var delta, pointBefore, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (var i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n var iPixel = pointCurrent[indexAxis];\n var vPixel = pointCurrent[valueAxis];\n\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[\"cp1\".concat(indexAxis)] = iPixel - delta;\n pointCurrent[\"cp1\".concat(valueAxis)] = vPixel - delta * mK[i];\n }\n\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[\"cp2\".concat(indexAxis)] = iPixel + delta;\n pointCurrent[\"cp2\".concat(valueAxis)] = vPixel + delta * mK[i];\n }\n }\n}\n\nfunction splineCurveMonotone(points) {\n var indexAxis = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x';\n var valueAxis = getValueAxis(indexAxis);\n var pointsLen = points.length;\n var deltaK = Array(pointsLen).fill(0);\n var mK = Array(pointsLen);\n var i, pointBefore, pointCurrent;\n var pointAfter = getPoint(points, 0);\n\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n\n if (!pointCurrent) {\n continue;\n }\n\n if (pointAfter) {\n var slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\n\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\n\nfunction capBezierPoints(points, area) {\n var i, ilen, point, inArea, inAreaPrev;\n\n var inAreaNext = _isPointInArea(points[0], area);\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n\n if (!inArea) {\n continue;\n }\n\n point = points[i];\n\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n var i, ilen, point, controlPoints;\n\n if (options.spanGaps) {\n points = points.filter(function (pt) {\n return !pt.skip;\n });\n }\n\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n var prev = loop ? points[points.length - 1] : points[0];\n\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\nfunction _getParentNode(domNode) {\n var parent = domNode.parentNode;\n\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n\n return parent;\n}\n\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n var valueInPixels;\n\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n\n return valueInPixels;\n}\n\nvar getComputedStyle = function getComputedStyle(element) {\n return window.getComputedStyle(element, null);\n};\n\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\n\nvar positions = ['top', 'right', 'bottom', 'left'];\n\nfunction getPositionedStyle(styles, style, suffix) {\n var result = {};\n suffix = suffix ? '-' + suffix : '';\n\n for (var i = 0; i < 4; i++) {\n var pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\n\nvar useOffsetPos = function useOffsetPos(x, y, target) {\n return (x > 0 || y > 0) && (!target || !target.shadowRoot);\n};\n\nfunction getCanvasPosition(e, canvas) {\n var touches = e.touches;\n var source = touches && touches.length ? touches[0] : e;\n var offsetX = source.offsetX,\n offsetY = source.offsetY;\n var box = false;\n var x, y;\n\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n var rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n\n return {\n x: x,\n y: y,\n box: box\n };\n}\n\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n\n var canvas = chart.canvas,\n currentDevicePixelRatio = chart.currentDevicePixelRatio;\n var style = getComputedStyle(canvas);\n var borderBox = style.boxSizing === 'border-box';\n var paddings = getPositionedStyle(style, 'padding');\n var borders = getPositionedStyle(style, 'border', 'width');\n\n var _getCanvasPosition = getCanvasPosition(evt, canvas),\n x = _getCanvasPosition.x,\n y = _getCanvasPosition.y,\n box = _getCanvasPosition.box;\n\n var xOffset = paddings.left + (box && borders.left);\n var yOffset = paddings.top + (box && borders.top);\n var width = chart.width,\n height = chart.height;\n\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\n\nfunction getContainerSize(canvas, width, height) {\n var maxWidth, maxHeight;\n\n if (width === undefined || height === undefined) {\n var container = _getParentNode(canvas);\n\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n var rect = container.getBoundingClientRect();\n var containerStyle = getComputedStyle(container);\n var containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n var containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n\n return {\n width: width,\n height: height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\n\nvar round1 = function round1(v) {\n return Math.round(v * 10) / 10;\n};\n\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n var style = getComputedStyle(canvas);\n var margins = getPositionedStyle(style, 'margin');\n var maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n var maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n var containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n var width = containerSize.width,\n height = containerSize.height;\n\n if (style.boxSizing === 'content-box') {\n var borders = getPositionedStyle(style, 'border', 'width');\n var paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n\n if (width && !height) {\n height = round1(width / 2);\n }\n\n return {\n width: width,\n height: height\n };\n}\n\nfunction retinaScale(chart, forceRatio, forceStyle) {\n var pixelRatio = forceRatio || 1;\n var deviceHeight = Math.floor(chart.height * pixelRatio);\n var deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n var canvas = chart.canvas;\n\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = \"\".concat(chart.height, \"px\");\n canvas.style.width = \"\".concat(chart.width, \"px\");\n }\n\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n\n return false;\n}\n\nvar supportsEventListenerOptions = function () {\n var passiveSupported = false;\n\n try {\n var options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {}\n\n return passiveSupported;\n}();\n\nfunction readUsedSize(element, property) {\n var value = getStyle(element, property);\n var matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n\nfunction _bezierInterpolation(p1, p2, t, mode) {\n var cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n var cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n\n var a = _pointInLine(p1, cp1, t);\n\n var b = _pointInLine(cp1, cp2, t);\n\n var c = _pointInLine(cp2, p2, t);\n\n var d = _pointInLine(a, b, t);\n\n var e = _pointInLine(b, c, t);\n\n return _pointInLine(d, e, t);\n}\n\nvar intlCache = new Map();\n\nfunction getNumberFormat(locale, options) {\n options = options || {};\n var cacheKey = locale + JSON.stringify(options);\n var formatter = intlCache.get(cacheKey);\n\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n\n return formatter;\n}\n\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nvar getRightToLeftAdapter = function getRightToLeftAdapter(rectX, width) {\n return {\n x: function x(_x) {\n return rectX + rectX + width - _x;\n },\n setWidth: function setWidth(w) {\n width = w;\n },\n textAlign: function textAlign(align) {\n if (align === 'center') {\n return align;\n }\n\n return align === 'right' ? 'left' : 'right';\n },\n xPlus: function xPlus(x, value) {\n return x - value;\n },\n leftForLtr: function leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\n\nvar getLeftToRightAdapter = function getLeftToRightAdapter() {\n return {\n x: function x(_x2) {\n return _x2;\n },\n setWidth: function setWidth(w) {},\n textAlign: function textAlign(align) {\n return align;\n },\n xPlus: function xPlus(x, value) {\n return x + value;\n },\n leftForLtr: function leftForLtr(x, _itemWidth) {\n return x;\n }\n };\n};\n\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\n\nfunction overrideTextDirection(ctx, direction) {\n var style, original;\n\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\n\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n\n return {\n between: _isBetween,\n compare: function compare(a, b) {\n return a - b;\n },\n normalize: function normalize(x) {\n return x;\n }\n };\n}\n\nfunction normalizeSegment(_ref) {\n var start = _ref.start,\n end = _ref.end,\n count = _ref.count,\n loop = _ref.loop,\n style = _ref.style;\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style: style\n };\n}\n\nfunction getSegment(segment, points, bounds) {\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n\n var _propertyFn = propertyFn(property),\n between = _propertyFn.between,\n normalize = _propertyFn.normalize;\n\n var count = points.length;\n var start = segment.start,\n end = segment.end,\n loop = segment.loop;\n var i, ilen;\n\n if (loop) {\n start += count;\n end += count;\n\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n\n start--;\n end--;\n }\n\n start %= count;\n end %= count;\n }\n\n if (end < start) {\n end += count;\n }\n\n return {\n start: start,\n end: end,\n loop: loop,\n style: segment.style\n };\n}\n\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n\n var property = bounds.property,\n startBound = bounds.start,\n endBound = bounds.end;\n var count = points.length;\n\n var _propertyFn2 = propertyFn(property),\n compare = _propertyFn2.compare,\n between = _propertyFn2.between,\n normalize = _propertyFn2.normalize;\n\n var _getSegment = getSegment(segment, points, bounds),\n start = _getSegment.start,\n end = _getSegment.end,\n loop = _getSegment.loop,\n style = _getSegment.style;\n\n var result = [];\n var inside = false;\n var subStart = null;\n var value, point, prevValue;\n\n var startIsBefore = function startIsBefore() {\n return between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n };\n\n var endIsBefore = function endIsBefore() {\n return compare(endBound, value) === 0 || between(endBound, prevValue, value);\n };\n\n var shouldStart = function shouldStart() {\n return inside || startIsBefore();\n };\n\n var shouldStop = function shouldStop() {\n return !inside || endIsBefore();\n };\n\n for (var i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n\n if (point.skip) {\n continue;\n }\n\n value = normalize(point[property]);\n\n if (value === prevValue) {\n continue;\n }\n\n inside = between(value, startBound, endBound);\n\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop: loop,\n count: count,\n style: style\n }));\n subStart = null;\n }\n\n prev = i;\n prevValue = value;\n }\n\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end: end,\n loop: loop,\n count: count,\n style: style\n }));\n }\n\n return result;\n}\n\nfunction _boundSegments(line, bounds) {\n var result = [];\n var segments = line.segments;\n\n for (var i = 0; i < segments.length; i++) {\n var sub = _boundSegment(segments[i], line.points, bounds);\n\n if (sub.length) {\n result.push.apply(result, _toConsumableArray(sub));\n }\n }\n\n return result;\n}\n\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n var start = 0;\n var end = count - 1;\n\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n\n while (start < count && points[start].skip) {\n start++;\n }\n\n start %= count;\n\n if (loop) {\n end += start;\n }\n\n while (end > start && points[end % count].skip) {\n end--;\n }\n\n end %= count;\n return {\n start: start,\n end: end\n };\n}\n\nfunction solidSegments(points, start, max, loop) {\n var count = points.length;\n var result = [];\n var last = start;\n var prev = points[start];\n var end;\n\n for (end = start + 1; end <= max; ++end) {\n var cur = points[end % count];\n\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop: loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n\n if (prev.skip) {\n start = end;\n }\n }\n\n prev = cur;\n }\n\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop: loop\n });\n }\n\n return result;\n}\n\nfunction _computeSegments(line, segmentOptions) {\n var points = line.points;\n var spanGaps = line.options.spanGaps;\n var count = points.length;\n\n if (!count) {\n return [];\n }\n\n var loop = !!line._loop;\n\n var _findStartAndEnd = findStartAndEnd(points, count, loop, spanGaps),\n start = _findStartAndEnd.start,\n end = _findStartAndEnd.end;\n\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start: start,\n end: end,\n loop: loop\n }], points, segmentOptions);\n }\n\n var max = end < start ? end + count : end;\n var completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\n\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\n\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n var chartContext = line._chart.getContext();\n\n var baseStyle = readStyle(line.options);\n var datasetIndex = line._datasetIndex,\n spanGaps = line.options.spanGaps;\n var count = points.length;\n var result = [];\n var prevStyle = baseStyle;\n var start = segments[0].start;\n var i = start;\n\n function addStyle(s, e, l, st) {\n var dir = spanGaps ? -1 : 1;\n\n if (s === e) {\n return;\n }\n\n s += count;\n\n while (points[s % count].skip) {\n s -= dir;\n }\n\n while (points[e % count].skip) {\n e += dir;\n }\n\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n\n var _iterator11 = _createForOfIteratorHelper(segments),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var segment = _step11.value;\n start = spanGaps ? start : segment.start;\n var prev = points[start % count];\n var style = void 0;\n\n for (i = start + 1; i <= segment.end; i++) {\n var pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex: datasetIndex\n })));\n\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n\n prev = pt;\n prevStyle = style;\n }\n\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n return result;\n}\n\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\n\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };"],"names":["defaultDatasetIdKey","reforwardRef","ref","value","current","setLabels","currentData","nextLabels","labels","setDatasets","nextDatasets","datasetIdKey","addedDatasets","datasets","map","nextDataset","currentDataset","find","dataset","data","includes","push","Object","assign","cloneData","nextData","ChartComponent","height","width","redraw","type","options","plugins","fallbackContent","updateMode","props","canvasRef","useRef","chartRef","renderChart","ChartJS","destroyChart","destroy","useEffect","chart","nextOptions","setOptions","config","setTimeout","update","canvas","role","Chart","forwardRef","createTypedChart","registerables","LineController","Bar","BarController","Doughnut","RadarController","DoughnutController","PolarAreaController","BubbleController","PieController","ScatterController","CustomDoughnut","sectorData","labelData","sectorColor","showLegend","borderWidth","maintainAspectRatio","showLegendTitle","legendAlignment","legendBoxHeight","legendBoxWidth","legendPosition","legendTitle","responsive","backgroundColor","tooltip","enabled","enableTooltip","legend","display","position","align","title","text","boxWidth","boxHeight","defaultProps","VerticalBarChart","barName","yAxisData","barColor","xAxisData","borderColor","label","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","minLen","_arrayLikeToArray","n","prototype","toString","call","slice","constructor","name","from","test","_unsupportedIterableToArray","length","i","F","s","done","e","_e","f","TypeError","err","normalCompletion","didErr","step","next","_e2","return","arr","len","arr2","noop","id","uid","isNullOrUndef","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toPercentage","dimension","endsWith","parseFloat","toDimension","callback","fn","args","thisArg","apply","each","loopable","reverse","keys","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","target","create","klen","k","isValidKey","key","indexOf","_merger","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","keyResolvers","v","x","y","resolveObjectKey","obj","resolver","_step2","parts","split","tmp","_iterator2","_splitKey","_step","_iterator","_getKeyResolver","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","_step3","_iterator3","item","has","_isClickEvent","PI","Math","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","sign","niceNum","range","roundedRange","round","almostEquals","niceRange","pow","floor","fraction","_factorize","result","sqrt","sort","pop","isNumber","isNaN","epsilon","abs","almostWhole","rounded","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_int16Range","_isBetween","arguments","undefined","_lookup","table","cmp","mid","hi","lo","_lookupByKey","last","_rlookupByKey","_filterBetween","values","arrayEvents","listenArrayEvents","listener","_chartjs","listeners","defineProperty","configurable","enumerable","forEach","method","base","_len","_key","res","this","object","unlistenArrayEvents","stub","splice","_arrayUnique","items","set","Set","add","requestAnimFrame","window","requestAnimationFrame","throttled","updateFn","updateArgs","ticking","_len2","rest","_key2","debounce","delay","timeout","_len3","_key3","clearTimeout","_toLeftRightCenter","_alignStartEnd","_textX","left","right","rtl","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","_sorted","iScale","_parsed","axis","_iScale$getUserBounds","getUserBounds","minDefined","maxDefined","getPixelForValue","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","atEdge","t","elasticIn","sin","elasticOut","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","m","d","easeInOutBounce","lim","l","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","c","hex","h1","h2","eq","_hexString","r","g","isShort","alpha","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","hueValue","calln","hsl2rgb","hue","hueParse","exec","p1","p2","hwb2rgb","hsv2rgb","names","Z","Y","X","W","V","U","T","S","R","Q","P","O","N","M","L","K","G","H","I","J","names$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","Xe","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Yd","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","Qe","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","nameParse","j","ok","nk","unpacked","tkeys","replace","parseInt","unpack","transparent","toLowerCase","RGB_RE","to","modHSL","ratio","clone","proto","fromObject","input","functionParse","rgbParse","Color","ret","_rgb","_valid","get","concat","_hslString","color","weight","w2","c1","c2","w1","rgb1","rgb2","_interpolate","val","deg","_rotate","index_esm","isPatternOrGradient","getHoverColor","saturate","darken","hexString","overrides","descriptors","getScope$1","node","_set","root","scope","Defaults","_descriptors","animation","devicePixelRatio","context","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","onHover","onClick","parsing","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","_Object$definePropert","scopeObject","targetScopeObject","privateName","defineProperties","writable","local","defaults","_scriptable","startsWith","_indexable","_fallback","_measureText","gc","longest","string","textWidth","measureText","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","getContext","resetTransform","clearRect","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","rotate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","stroke","_isPointInArea","point","area","margin","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","line","opts","lines","strokeWidth","strokeColor","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","translation","fillStyle","textAlign","textBaseline","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","_step4","objProps","read","prop","_iterator4","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","keepZero","createContext","parentContext","_createResolver","scopes","_cache","prefixes","rootScopes","getTarget","_resolve","toStringTag","Proxy","deleteProperty","_keys","_cached","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","_scopes","getPrototypeOf","getKeysFromAllScopes","ownKeys","storage","_storage","_attachContext","proxy","subProxy","descriptorDefaults","_cacheable","_proxy","_context","_subProxy","_stack","setContext","override","receiver","isScriptable","Error","join","delete","needsSubResolver","createSubResolver","_resolveScriptable","isIndexable","filter","_step5","_iterator5","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_proxy$_scriptable","_proxy$_indexable","_proxy$_allKeys","_allKeys","readKey","prefix","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","_step6","_iterator6","_rootScopes","allScopes","addScopesFromKey","_getTarget","subGetTarget","_step7","_iterator7","_step8","_iterator8","_step9","_iterator9","_step10","_iterator10","resolveKeysFromAllScopes","_parseObjectDataRadialScale","_this$_parsing$key","_parsing","parsed","parse","EPSILON","getPoint","skip","getValueAxis","monotoneAdjust","deltaK","mK","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointsLen","pointAfter","monotoneCompute","delta","pointBefore","valueAxis","iPixel","vPixel","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","spanGaps","cubicInterpolationMode","slopeDelta","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","positions","getPositionedStyle","styles","suffix","pos","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","_getCanvasPosition","touches","offsetX","offsetY","box","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","maxHeight","containerSize","container","containerStyle","containerBorder","containerPadding","clientWidth","clientHeight","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","passive","addEventListener","removeEventListener","readUsedSize","el","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","Map","formatNumber","num","locale","cacheKey","JSON","stringify","formatter","Intl","NumberFormat","getNumberFormat","format","getRtlAdapter","rectX","_x","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_x2","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_ref","_boundSegment","segment","bounds","prevValue","startBound","endBound","_propertyFn2","_getSegment","_propertyFn","getSegment","inside","subStart","shouldStart","shouldStop","_boundSegments","segments","sub","_computeSegments","segmentOptions","_loop","_findStartAndEnd","findStartAndEnd","splitByStyles","cur","stop","solidSegments","_fullLoop","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","st","dir","_step11","_iterator11","styleChanged","p0","p0DataIndex","p1DataIndex","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle"],"sourceRoot":""}