![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"895.b86d062dedb179e1af3a.js","mappings":"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","sources":["webpack://mattermost-webapp/../node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://mattermost-webapp/../node_modules/chart.js/dist/chart.esm.js","webpack://mattermost-webapp/../node_modules/chart.js/auto/auto.esm.js","webpack://mattermost-webapp/../node_modules/core-js/internals/array-buffer-view-core.js","webpack://mattermost-webapp/../node_modules/core-js/internals/array-iteration.js","webpack://mattermost-webapp/../node_modules/core-js/internals/is-big-int-array.js","webpack://mattermost-webapp/../node_modules/core-js/internals/is-integral-number.js","webpack://mattermost-webapp/../node_modules/core-js/internals/to-big-int.js","webpack://mattermost-webapp/../node_modules/core-js/internals/to-offset.js","webpack://mattermost-webapp/../node_modules/core-js/internals/to-positive-integer.js","webpack://mattermost-webapp/../node_modules/core-js/internals/typed-array-constructor.js","webpack://mattermost-webapp/../node_modules/core-js/internals/typed-array-constructors-require-wrappers.js","webpack://mattermost-webapp/../node_modules/core-js/internals/typed-array-from.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.promise.all-settled.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.promise.finally.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.typed-array.fill.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.typed-array.set.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.typed-array.sort.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.typed-array.to-locale-string.js","webpack://mattermost-webapp/../node_modules/core-js/modules/es.typed-array.uint32-array.js","webpack://mattermost-webapp/../node_modules/core-js/modules/esnext.promise.all-settled.js","webpack://mattermost-webapp/../node_modules/flexsearch/dist/flexsearch.es5.js","webpack://mattermost-webapp/../node_modules/ipaddr.js/lib/ipaddr.js","webpack://mattermost-webapp/../node_modules/lodash/_arrayAggregator.js","webpack://mattermost-webapp/../node_modules/lodash/_baseAggregator.js","webpack://mattermost-webapp/../node_modules/lodash/_baseDifference.js","webpack://mattermost-webapp/../node_modules/lodash/_baseFlatten.js","webpack://mattermost-webapp/../node_modules/lodash/_createAggregator.js","webpack://mattermost-webapp/../node_modules/lodash/_isFlattenable.js","webpack://mattermost-webapp/../node_modules/lodash/difference.js","webpack://mattermost-webapp/../node_modules/lodash/groupBy.js","webpack://mattermost-webapp/../node_modules/mark.js/dist/mark.js","webpack://mattermost-webapp/../node_modules/@tanstack/react-table/build/lib/index.mjs","webpack://mattermost-webapp/../node_modules/@tanstack/table-core/build/lib/index.mjs"],"sourcesContent":["/*!\n * Chart.js v3.8.2\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\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 for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\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}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.slice(pos, idx)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\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}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : 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 */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\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 return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\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 return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\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 return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\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}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst 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};\nconst 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};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const 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}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\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}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const 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}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let 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}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const 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 return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const 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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const 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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\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 this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\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 this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\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 set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\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 return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\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 if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\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}\nfunction drawPoint(ctx, options, x, y) {\n drawPointLegend(ctx, options, x, y, null);\n}\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\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 if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\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 ctx.closePath();\n break;\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 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 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 rad += QUARTER_PI;\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 case 'crossRot':\n rad += QUARTER_PI;\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 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 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 case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\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 &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\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}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const 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 ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const 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}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\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\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\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 return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\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 return parsed;\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const 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}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\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 if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\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 if (!inArea) {\n continue;\n }\n point = points[i];\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 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}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\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 if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n if ('native' in evt) {\n return evt;\n }\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\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}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const 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 return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\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 if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || 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 return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const 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}\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\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\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 return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const 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\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\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}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { toFont as $, _rlookupByKey as A, _isPointInArea as B, getAngleFromPoint as C, toPadding as D, each as E, getMaximumSize as F, _getParentNode as G, HALF_PI as H, readUsedSize as I, throttled as J, supportsEventListenerOptions as K, _isDomSupported as L, log10 as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, toDegrees as S, TAU as T, _measureText as U, _int16Range as V, _alignPixel as W, clipArea as X, renderText as Y, unclipArea as Z, _arrayUnique as _, resolve as a, RAD_PER_DEG as a$, _toLeftRightCenter as a0, _alignStartEnd as a1, overrides as a2, merge as a3, _capitalize as a4, descriptors as a5, isFunction as a6, _attachContext as a7, _createResolver as a8, _descriptors as a9, _textX as aA, restoreTextDirection as aB, drawPointLegend as aC, noop as aD, distanceBetweenPoints as aE, _setMinAndMaxByKey as aF, niceNum as aG, almostWhole as aH, almostEquals as aI, _decimalPlaces as aJ, _longestText as aK, _filterBetween as aL, _lookup as aM, isPatternOrGradient as aN, getHoverColor as aO, clone$1 as aP, _merger as aQ, _mergerIf as aR, _deprecated as aS, toFontString as aT, splineCurve as aU, splineCurveMonotone as aV, getStyle as aW, fontString as aX, toLineHeight as aY, PITAU as aZ, INFINITY as a_, mergeIf as aa, uid as ab, debounce as ac, retinaScale as ad, clearCanvas as ae, setsEqual as af, _elementsEqual as ag, _isClickEvent as ah, _isBetween as ai, _readValueToProps as aj, _updateBezierControlPoints as ak, _computeSegments as al, _boundSegments as am, _steppedInterpolation as an, _bezierInterpolation as ao, _pointInLine as ap, _steppedLineTo as aq, _bezierCurveTo as ar, drawPoint as as, addRoundedRectPath as at, toTRBL as au, toTRBLCorners as av, _boundSegment as aw, _normalizeAngle as ax, getRtlAdapter as ay, overrideTextDirection as az, isArray as b, QUARTER_PI as b0, TWO_THIRDS_PI as b1, _angleDiff as b2, 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, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v3.8.2\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _isPointInArea, C as getAngleFromPoint, D as toPadding, E as each, F as getMaximumSize, G as _getParentNode, I as readUsedSize, J as throttled, K as supportsEventListenerOptions, L as _isDomSupported, M as log10, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as toDegrees, U as _measureText, V as _int16Range, W as _alignPixel, X as clipArea, Y as renderText, Z as unclipArea, $ as toFont, a0 as _toLeftRightCenter, a1 as _alignStartEnd, a2 as overrides, a3 as merge, a4 as _capitalize, a5 as descriptors, a6 as isFunction, a7 as _attachContext, a8 as _createResolver, a9 as _descriptors, aa as mergeIf, ab as uid, ac as debounce, ad as retinaScale, ae as clearCanvas, af as setsEqual, ag as _elementsEqual, ah as _isClickEvent, ai as _isBetween, aj as _readValueToProps, ak as _updateBezierControlPoints, al as _computeSegments, am as _boundSegments, an as _steppedInterpolation, ao as _bezierInterpolation, ap as _pointInLine, aq as _steppedLineTo, ar as _bezierCurveTo, as as drawPoint, at as addRoundedRectPath, au as toTRBL, av as toTRBLCorners, aw as _boundSegment, ax as _normalizeAngle, ay as getRtlAdapter, az as overrideTextDirection, aA as _textX, aB as restoreTextDirection, aC as drawPointLegend, aD as noop, aE as distanceBetweenPoints, aF as _setMinAndMaxByKey, aG as niceNum, aH as almostWhole, aI as almostEquals, aJ as _decimalPlaces, aK as _longestText, aL as _filterBetween, aM as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || (sharedOptions !== previouslySharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {sharedOptions, includeOptions};\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {iScale} = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type)\n .filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = (meta) => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const {sharedOptions, includeOptions} = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (Math.abs(parsed[iAxis] - prevParsed[iAxis])) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {plugins, localIds};\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {plugins, localIds}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {plugin, local: localIds[id]}, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {plugin, local}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.8.2\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\n\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\n\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\n\nfunction _buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\n\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\n\nfunction _getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\n\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\n\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColors.borderWidth) ? Math.max(...Object.values(labelColors.borderWidth)) : (labelColors.borderWidth || 1);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: index,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","import {Chart, registerables} from '../dist/chart.esm.js';\n\nChart.register(...registerables);\n\nexport default Chart;\n","'use strict';\nvar NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar tryToString = require('../internals/try-to-string');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineProperty = require('../internals/object-define-property').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar uid = require('../internals/uid');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar TypeError = global.TypeError;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\nvar TYPED_ARRAY_CONSTRUCTOR = 'TypedArrayConstructor';\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQUIRED = false;\nvar NAME, Constructor, Prototype;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar getTypedArrayConstructor = function (it) {\n var proto = getPrototypeOf(it);\n if (!isObject(proto)) return;\n var state = getInternalState(proto);\n return (state && hasOwn(state, TYPED_ARRAY_CONSTRUCTOR)) ? state[TYPED_ARRAY_CONSTRUCTOR] : getTypedArrayConstructor(proto);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return hasOwn(TypedArrayConstructorsList, klass)\n || hasOwn(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (isCallable(C) && (!setPrototypeOf || isPrototypeOf(TypedArray, C))) return C;\n throw TypeError(tryToString(C) + ' is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced, options) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {\n delete TypedArrayConstructor.prototype[KEY];\n } catch (error) {\n // old WebKit bug - some methods are non-configurable\n try {\n TypedArrayConstructor.prototype[KEY] = property;\n } catch (error2) { /* empty */ }\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n defineBuiltIn(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property, options);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && hasOwn(TypedArrayConstructor, KEY)) try {\n delete TypedArrayConstructor[KEY];\n } catch (error) { /* empty */ }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return defineBuiltIn(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && TypedArray[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n defineBuiltIn(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n else NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\nfor (NAME in BigIntArrayConstructorsList) {\n Constructor = global[NAME];\n Prototype = Constructor && Constructor.prototype;\n if (Prototype) enforceInternalState(Prototype)[TYPED_ARRAY_CONSTRUCTOR] = Constructor;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !isCallable(TypedArray) || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQUIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n getTypedArrayConstructor: getTypedArrayConstructor,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var classof = require('../internals/classof');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar slice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return slice(classof(it), 0, 3) === 'Big';\n};\n","var isObject = require('../internals/is-object');\n\nvar floor = Math.floor;\n\n// `IsIntegralNumber` abstract operation\n// https://tc39.es/ecma262/#sec-isintegralnumber\n// eslint-disable-next-line es/no-number-isinteger -- safe\nmodule.exports = Number.isInteger || function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","var toPrimitive = require('../internals/to-primitive');\n\nvar $TypeError = TypeError;\n\n// `ToBigInt` abstract operation\n// https://tc39.es/ecma262/#sec-tobigint\nmodule.exports = function (argument) {\n var prim = toPrimitive(argument, 'number');\n if (typeof prim == 'number') throw $TypeError(\"Can't convert number to bigint\");\n // eslint-disable-next-line es/no-bigint -- safe\n return BigInt(prim);\n};\n","var toPositiveInteger = require('../internals/to-positive-integer');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw $RangeError('Wrong offset');\n return offset;\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar $RangeError = RangeError;\n\nmodule.exports = function (it) {\n var result = toIntegerOrInfinity(it);\n if (result < 0) throw $RangeError(\"The argument can't be less than 0\");\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar ArrayBufferModule = require('../internals/array-buffer');\nvar anInstance = require('../internals/an-instance');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isIntegralNumber = require('../internals/is-integral-number');\nvar toLength = require('../internals/to-length');\nvar toIndex = require('../internals/to-index');\nvar toOffset = require('../internals/to-offset');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar classof = require('../internals/classof');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar create = require('../internals/object-create');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar typedArrayFrom = require('../internals/typed-array-from');\nvar forEach = require('../internals/array-iteration').forEach;\nvar setSpecies = require('../internals/set-species');\nvar definePropertyModule = require('../internals/object-define-property');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar InternalStateModule = require('../internals/internal-state');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar enforceInternalState = InternalStateModule.enforce;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n aTypedArrayConstructor(C);\n var index = 0;\n var length = list.length;\n var result = new C(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return isPrototypeOf(ArrayBufferPrototype, it) || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && !isSymbol(key)\n && key in target\n && isIntegralNumber(+key)\n && key >= 0;\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n key = toPropertyKey(key);\n return isTypedArrayIndex(target, key)\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n key = toPropertyKey(key);\n if (isTypedArrayIndex(target, key)\n && isObject(descriptor)\n && hasOwn(descriptor, 'value')\n && !hasOwn(descriptor, 'get')\n && !hasOwn(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!hasOwn(descriptor, 'writable') || descriptor.writable)\n && (!hasOwn(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructorPrototype);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructorPrototype);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return call(typedArrayFrom, TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n enforceInternalState(TypedArrayConstructorPrototype).TypedArrayConstructor = TypedArrayConstructor;\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n var FORCED = TypedArrayConstructor != NativeTypedArrayConstructor;\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({ global: true, constructor: true, forced: FORCED, sham: !NATIVE_ARRAY_BUFFER_VIEWS }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n","/* eslint-disable no-new -- required for testing */\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar NATIVE_ARRAY_BUFFER_VIEWS = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar aConstructor = require('../internals/a-constructor');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isBigIntArray = require('../internals/is-big-int-array');\nvar aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;\nvar toBigInt = require('../internals/to-big-int');\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var C = aConstructor(this);\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, thisIsBigIntArray, value, step, iterator, next;\n if (iteratorMethod && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n O = [];\n while (!(step = call(next, iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2]);\n }\n length = lengthOfArrayLike(O);\n result = new (aTypedArrayConstructor(C))(length);\n thisIsBigIntArray = isBigIntArray(result);\n for (i = 0; length > i; i++) {\n value = mapping ? mapfn(O[i], i) : O[i];\n // FF30- typed arrays doesn't properly convert objects to typed array values\n result[i] = thisIsBigIntArray ? toBigInt(value) : +value;\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","'use strict';\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar $fill = require('../internals/array-fill');\nvar toBigInt = require('../internals/to-big-int');\nvar classof = require('../internals/classof');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar slice = uncurryThis(''.slice);\n\n// V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18\nvar CONVERSION_BUG = fails(function () {\n var count = 0;\n // eslint-disable-next-line es/no-typed-arrays -- safe\n new Int8Array(2).fill({ valueOf: function () { return count++; } });\n return count !== 1;\n});\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n var length = arguments.length;\n aTypedArray(this);\n var actualValue = slice(classof(this), 0, 3) === 'Big' ? toBigInt(value) : +value;\n return call($fill, this, actualValue, length > 1 ? arguments[1] : undefined, length > 2 ? arguments[2] : undefined);\n}, CONVERSION_BUG);\n","'use strict';\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toOffset = require('../internals/to-offset');\nvar toIndexedObject = require('../internals/to-object');\nvar fails = require('../internals/fails');\n\nvar RangeError = global.RangeError;\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar $set = Int8ArrayPrototype && Int8ArrayPrototype.set;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {\n // eslint-disable-next-line es/no-typed-arrays -- required for testing\n var array = new Uint8ClampedArray(2);\n call($set, array, { length: 1, 0: 3 }, 1);\n return array[1] !== 3;\n});\n\n// https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other\nvar TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {\n var array = new Int8Array(2);\n array.set(1);\n array.set('2', 1);\n return array[0] !== 0 || array[1] !== 2;\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var src = toIndexedObject(arrayLike);\n if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);\n var length = this.length;\n var len = lengthOfArrayLike(src);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);\n","'use strict';\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar aCallable = require('../internals/a-callable');\nvar internalSort = require('../internals/array-sort');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar Uint16Array = global.Uint16Array;\nvar nativeSort = Uint16Array && uncurryThis(Uint16Array.prototype.sort);\n\n// WebKit\nvar ACCEPT_INCORRECT_ARGUMENTS = !!nativeSort && !(fails(function () {\n nativeSort(new Uint16Array(2), null);\n}) && fails(function () {\n nativeSort(new Uint16Array(2), {});\n}));\n\nvar STABLE_SORT = !!nativeSort && !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 74;\n if (FF) return FF < 67;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 602;\n\n var array = new Uint16Array(516);\n var expected = Array(516);\n var index, mod;\n\n for (index = 0; index < 516; index++) {\n mod = index % 4;\n array[index] = 515 - index;\n expected[index] = index - 2 * mod + 3;\n }\n\n nativeSort(array, function (a, b) {\n return (a / 4 | 0) - (b / 4 | 0);\n });\n\n for (index = 0; index < 516; index++) {\n if (array[index] !== expected[index]) return true;\n }\n});\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (y !== y) return -1;\n // eslint-disable-next-line no-self-compare -- NaN check\n if (x !== x) return 1;\n if (x === 0 && y === 0) return 1 / x > 0 && 1 / y < 0 ? 1 : -1;\n return x > y;\n };\n};\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n if (STABLE_SORT) return nativeSort(this, comparefn);\n\n return internalSort(aTypedArray(this), getSortCompare(comparefn));\n}, !STABLE_SORT || ACCEPT_INCORRECT_ARGUMENTS);\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar ArrayBufferViewCore = require('../internals/array-buffer-view-core');\nvar fails = require('../internals/fails');\nvar arraySlice = require('../internals/array-slice');\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return apply(\n $toLocaleString,\n TO_LOCALE_STRING_BUG ? arraySlice(aTypedArray(this)) : aTypedArray(this),\n arraySlice(arguments)\n );\n}, FORCED);\n","var createTypedArrayConstructor = require('../internals/typed-array-constructor');\n\n// `Uint32Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint32', function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// TODO: Remove from `core-js@4`\nrequire('../modules/es.promise.all-settled.js');\n","/*\n FlexSearch v0.6.30\n Copyright 2019 Nextapps GmbH\n Author: Thomas Wilkerling\n Released under the Apache 2.0 Licence\n https://github.com/nextapps-de/flexsearch\n*/\n'use strict';function ma(q){var u=0;return function(){return u<q.length?{done:!1,value:q[u++]}:{done:!0}}}var na=\"function\"==typeof Object.defineProperties?Object.defineProperty:function(q,u,r){q!=Array.prototype&&q!=Object.prototype&&(q[u]=r.value)},Z=\"undefined\"!=typeof window&&window===this?this:\"undefined\"!=typeof global&&null!=global?global:this;function pa(){pa=function(){};Z.Symbol||(Z.Symbol=qa)}function ra(q,u){this.b=q;na(this,\"description\",{configurable:!0,writable:!0,value:u})}\nra.prototype.toString=function(){return this.b};var qa=function(){function q(r){if(this instanceof q)throw new TypeError(\"Symbol is not a constructor\");return new ra(\"jscomp_symbol_\"+(r||\"\")+\"_\"+u++,r)}var u=0;return q}();function sa(){pa();var q=Z.Symbol.iterator;q||(q=Z.Symbol.iterator=Z.Symbol(\"Symbol.iterator\"));\"function\"!=typeof Array.prototype[q]&&na(Array.prototype,q,{configurable:!0,writable:!0,value:function(){return ta(ma(this))}});sa=function(){}}\nfunction ta(q){sa();q={next:q};q[Z.Symbol.iterator]=function(){return this};return q}function za(q,u){sa();q instanceof String&&(q+=\"\");var r=0,E={next:function(){if(r<q.length){var K=r++;return{value:u(K,q[K]),done:!1}}E.next=function(){return{done:!0,value:void 0}};return E.next()}};E[Symbol.iterator]=function(){return E};return E}\nfunction Aa(q,u){if(u){var r=Z;q=q.split(\".\");for(var E=0;E<q.length-1;E++){var K=q[E];K in r||(r[K]={});r=r[K]}q=q[q.length-1];E=r[q];u=u(E);u!=E&&null!=u&&na(r,q,{configurable:!0,writable:!0,value:u})}}Aa(\"Array.prototype.keys\",function(q){return q?q:function(){return za(this,function(u){return u})}});function Ba(q){var u=\"undefined\"!=typeof Symbol&&Symbol.iterator&&q[Symbol.iterator];return u?u.call(q):{next:ma(q)}}\nAa(\"Promise\",function(q){function u(m){this.h=0;this.m=void 0;this.b=[];var x=this.j();try{m(x.resolve,x.reject)}catch(l){x.reject(l)}}function r(){this.b=null}function E(m){return m instanceof u?m:new u(function(x){x(m)})}if(q)return q;r.prototype.h=function(m){if(null==this.b){this.b=[];var x=this;this.j(function(){x.m()})}this.b.push(m)};var K=Z.setTimeout;r.prototype.j=function(m){K(m,0)};r.prototype.m=function(){for(;this.b&&this.b.length;){var m=this.b;this.b=[];for(var x=0;x<m.length;++x){var l=\nm[x];m[x]=null;try{l()}catch(F){this.l(F)}}}this.b=null};r.prototype.l=function(m){this.j(function(){throw m;})};u.prototype.j=function(){function m(F){return function(I){l||(l=!0,F.call(x,I))}}var x=this,l=!1;return{resolve:m(this.L),reject:m(this.l)}};u.prototype.L=function(m){if(m===this)this.l(new TypeError(\"A Promise cannot resolve to itself\"));else if(m instanceof u)this.M(m);else{a:switch(typeof m){case \"object\":var x=null!=m;break a;case \"function\":x=!0;break a;default:x=!1}x?this.K(m):this.w(m)}};\nu.prototype.K=function(m){var x=void 0;try{x=m.then}catch(l){this.l(l);return}\"function\"==typeof x?this.N(x,m):this.w(m)};u.prototype.l=function(m){this.B(2,m)};u.prototype.w=function(m){this.B(1,m)};u.prototype.B=function(m,x){if(0!=this.h)throw Error(\"Cannot settle(\"+m+\", \"+x+\"): Promise already settled in state\"+this.h);this.h=m;this.m=x;this.I()};u.prototype.I=function(){if(null!=this.b){for(var m=0;m<this.b.length;++m)ba.h(this.b[m]);this.b=null}};var ba=new r;u.prototype.M=function(m){var x=\nthis.j();m.F(x.resolve,x.reject)};u.prototype.N=function(m,x){var l=this.j();try{m.call(x,l.resolve,l.reject)}catch(F){l.reject(F)}};u.prototype.then=function(m,x){function l(L,W){return\"function\"==typeof L?function(ja){try{F(L(ja))}catch(ka){I(ka)}}:W}var F,I,ca=new u(function(L,W){F=L;I=W});this.F(l(m,F),l(x,I));return ca};u.prototype.catch=function(m){return this.then(void 0,m)};u.prototype.F=function(m,x){function l(){switch(F.h){case 1:m(F.m);break;case 2:x(F.m);break;default:throw Error(\"Unexpected state: \"+\nF.h);}}var F=this;null==this.b?ba.h(l):this.b.push(l)};u.resolve=E;u.reject=function(m){return new u(function(x,l){l(m)})};u.race=function(m){return new u(function(x,l){for(var F=Ba(m),I=F.next();!I.done;I=F.next())E(I.value).F(x,l)})};u.all=function(m){var x=Ba(m),l=x.next();return l.done?E([]):new u(function(F,I){function ca(ja){return function(ka){L[ja]=ka;W--;0==W&&F(L)}}var L=[],W=0;do L.push(void 0),W++,E(l.value).F(ca(L.length-1),I),l=x.next();while(!l.done)})};return u});\n(function(q,u,r){var E;(E=r.define)&&E.amd?E([],function(){return u}):(E=r.modules)?E[q.toLowerCase()]=u:\"object\"===typeof exports?module.exports=u:r[q]=u})(\"FlexSearch\",function Ca(q){function r(a,c){var b=c?c.id:a&&a.id;this.id=b||0===b?b:Da++;this.init(a,c);x(this,\"index\",function(){return this.a?Object.keys(this.a.index[this.a.keys[0]].f):Object.keys(this.f)});x(this,\"length\",function(){return this.index.length})}function E(a,c,b,d){this.D!==this.i&&(this.A=this.A.concat(b),this.D++,d&&this.A.length>=\nd&&(this.D=this.i),this.D===this.i&&(this.cache&&this.u.set(c,this.A),this.H&&this.H(this.A)));return this}function K(a){var c=G(),b;for(b in a)if(a.hasOwnProperty(b)){var d=a[b];M(d)?c[b]=d.slice(0):P(d)?c[b]=K(d):c[b]=d}return c}function ba(a,c){for(var b=a.length,d=da(c),e=[],f=0,h=0;f<b;f++){var g=a[f];if(d&&c(g)||!d&&!c[g])e[h++]=g}return e}function m(a,c,b,d,e,f,h,g,k,n){b=ua(b,h?0:e,g,f,c,k,n);if(g){g=b.page;var w=b.next;b=b.result}if(h)c=this.where(h,null,e,b);else{c=b;b=this.v;e=c.length;\nf=Array(e);for(h=0;h<e;h++)f[h]=b[c[h]];c=f}b=c;d&&(da(d)||(X=d.split(\":\"),1<X.length?d=ka:(X=X[0],d=ja)),b.sort(d));b=fa(g,w,b);this.cache&&this.u.set(a,b);return b}function x(a,c,b){Object.defineProperty(a,c,{get:b})}function l(a){return new RegExp(a,\"g\")}function F(a,c){for(var b=0;b<c.length;b+=2)a=a.replace(c[b],c[b+1]);return a}function I(a,c,b,d,e,f,h,g){if(c[b])return c[b];e=e?(g-(h||g/1.5))*f+(h||g/1.5)*e:f;c[b]=e;e>=h&&(a=a[g-(e+.5>>0)],a=a[b]||(a[b]=[]),a[a.length]=d);return e}function ca(a,\nc){if(a)for(var b=Object.keys(a),d=0,e=b.length;d<e;d++){var f=b[d],h=a[f];if(h)for(var g=0,k=h.length;g<k;g++)if(h[g]===c){1===k?delete a[f]:h.splice(g,1);break}else P(h[g])&&ca(h[g],c)}}function L(a){for(var c=\"\",b=\"\",d=\"\",e=0;e<a.length;e++){var f=a[e];if(f!==b)if(e&&\"h\"===f){if(d=\"a\"===d||\"e\"===d||\"i\"===d||\"o\"===d||\"u\"===d||\"y\"===d,(\"a\"===b||\"e\"===b||\"i\"===b||\"o\"===b||\"u\"===b||\"y\"===b)&&d||\" \"===b)c+=f}else c+=f;d=e===a.length-1?\"\":a[e+1];b=f}return c}function W(a,c){a=a.length-c.length;return 0>\na?1:a?-1:0}function ja(a,c){a=a[X];c=c[X];return a<c?-1:a>c?1:0}function ka(a,c){for(var b=X.length,d=0;d<b;d++)a=a[X[d]],c=c[X[d]];return a<c?-1:a>c?1:0}function fa(a,c,b){return a?{page:a,next:c?\"\"+c:null,result:b}:b}function ua(a,c,b,d,e,f,h){var g=[];if(!0===b){b=\"0\";var k=\"\"}else k=b&&b.split(\":\");var n=a.length;if(1<n){var w=G(),z=[],v,p=0,t,D=!0,B=0,C;if(k)if(2===k.length){var A=k;k=!1}else k=C=parseInt(k[0],10);if(h){for(v=G();p<n;p++)if(\"not\"===e[p]){var y=a[p];var J=y.length;for(t=0;t<J;t++)v[\"@\"+\ny[t]]=1}else var R=p+1;if(H(R))return fa(b,S,g);p=0}else var Y=T(e)&&e;for(var ha;p<n;p++){var N=p===(R||n)-1;if(!Y||!p)if((t=Y||e&&e[p])&&\"and\"!==t)if(\"or\"===t)ha=!1;else continue;else ha=f=!0;y=a[p];if(J=y.length){if(D)if(U){var O=U.length;for(t=0;t<O;t++){D=U[t];var aa=\"@\"+D;h&&v[aa]||(w[aa]=1,f||(g[B++]=D))}var U=null;D=!1}else{U=y;continue}aa=!1;for(t=0;t<J;t++){O=y[t];var V=\"@\"+O,ea=f?w[V]||0:p;if(!(!ea&&!d||h&&v[V]||!f&&w[V]))if(ea===p){if(N){if(!C||--C<B)if(g[B++]=O,c&&B===c)return fa(b,B+\n(k||0),g)}else w[V]=p+1;aa=!0}else d&&(V=z[ea]||(z[ea]=[]),V[V.length]=O)}if(ha&&!aa&&!d)break}else if(ha&&!d)return fa(b,S,y)}if(U)if(p=U.length,h)for(t=k?parseInt(k,10):0;t<p;t++)a=U[t],v[\"@\"+a]||(g[B++]=a);else g=U;if(d)for(B=g.length,A?(p=parseInt(A[0],10)+1,t=parseInt(A[1],10)+1):(p=z.length,t=0);p--;)if(O=z[p]){for(J=O.length;t<J;t++)if(d=O[t],!h||!v[\"@\"+d])if(g[B++]=d,c&&B===c)return fa(b,p+\":\"+t,g);t=0}}else!n||e&&\"not\"===e[0]||(g=a[0],k&&(k=parseInt(k[0],10)));if(c){h=g.length;k&&k>h&&(k=\n0);k=k||0;var S=k+c;S<h?g=g.slice(k,S):(S=0,k&&(g=g.slice(k)))}return fa(b,S,g)}function T(a){return\"string\"===typeof a}function M(a){return a.constructor===Array}function da(a){return\"function\"===typeof a}function P(a){return\"object\"===typeof a}function H(a){return\"undefined\"===typeof a}function va(a){for(var c=Array(a),b=0;b<a;b++)c[b]=G();return c}function G(){return Object.create(null)}function Ea(){var a,c;self.onmessage=function(b){if(b=b.data)if(b.search){var d=c.search(b.content,b.threshold?\n{limit:b.limit,threshold:b.threshold,where:b.where}:b.limit);self.postMessage({id:a,content:b.content,limit:b.limit,result:d})}else b.add?c.add(b.id,b.content):b.update?c.update(b.id,b.content):b.remove?c.remove(b.id):b.clear?c.clear():b.info?(b=c.info(),b.worker=a,console.log(b)):b.register&&(a=b.id,b.options.cache=!1,b.options.async=!1,b.options.worker=!1,c=(new Function(b.register.substring(b.register.indexOf(\"{\")+1,b.register.lastIndexOf(\"}\"))))(),c=new c(b.options))}}function Fa(a,c,b,d){a=q(\"flexsearch\",\n\"id\"+a,Ea,function(f){(f=f.data)&&f.result&&d(f.id,f.content,f.result,f.limit,f.where,f.cursor,f.suggest)},c);var e=Ca.toString();b.id=c;a.postMessage({register:e,options:b,id:c});return a}var Q={encode:\"icase\",g:\"forward\",split:/\\W+/,cache:!1,async:!1,i:!1,G:!1,a:!1,c:9,threshold:0,depth:0},wa={memory:{encode:\"extra\",g:\"strict\",threshold:0,c:1},speed:{encode:\"icase\",g:\"strict\",threshold:1,c:3,depth:2},match:{encode:\"extra\",g:\"full\",threshold:1,c:3},score:{encode:\"extra\",g:\"strict\",threshold:1,c:9,\ndepth:4},balance:{encode:\"balance\",g:\"strict\",threshold:0,c:3,depth:3},fast:{encode:\"icase\",g:\"strict\",threshold:8,c:9,depth:1}},la=[],Da=0,xa={},ya={};r.create=function(a,c){return new r(a,c)};r.registerMatcher=function(a){for(var c in a)a.hasOwnProperty(c)&&la.push(l(c),a[c]);return this};r.registerEncoder=function(a,c){ia[a]=c.bind(ia);return this};r.registerLanguage=function(a,c){xa[a]=c.filter;ya[a]=c.stemmer;return this};r.encode=function(a,c){return ia[a](c)};r.prototype.init=function(a,c){this.h=\n[];if(c){var b=c.preset;a=c}else a||(a=Q),b=a.preset;c={};T(a)?((c=wa[a])||console.warn(\"Preset not found: \"+a),a={}):b&&((c=wa[b])||console.warn(\"Preset not found: \"+b));if(b=a.worker)if(\"undefined\"===typeof Worker)a.worker=!1,this.b=null;else{var d=parseInt(b,10)||4;this.w=-1;this.D=0;this.A=[];this.H=null;this.b=Array(d);for(var e=0;e<d;e++)this.b[e]=Fa(this.id,e,a,E.bind(this))}this.g=a.tokenize||c.g||this.g||Q.g;this.split=H(b=a.split)?this.split||Q.split:T(b)?l(b):b;this.G=a.rtl||this.G||Q.G;\nthis.async=\"undefined\"===typeof Promise||H(b=a.async)?this.async||Q.async:b;this.i=H(b=a.worker)?this.i||Q.i:b;this.threshold=H(b=a.threshold)?c.threshold||this.threshold||Q.threshold:b;this.c=H(b=a.resolution)?b=c.c||this.c||Q.c:b;b<=this.threshold&&(this.c=this.threshold+1);this.depth=\"strict\"!==this.g||H(b=a.depth)?c.depth||this.depth||Q.depth:b;this.j=(b=H(b=a.encode)?c.encode||Q.encode:b)&&ia[b]&&ia[b].bind(ia)||(da(b)?b:this.j||!1);(b=a.matcher)&&this.addMatcher(b);if(b=(c=a.lang)||a.filter){T(b)&&\n(b=xa[b]);if(M(b)){d=this.j;e=G();for(var f=0;f<b.length;f++){var h=d?d(b[f]):b[f];e[h]=1}b=e}this.filter=b}if(b=c||a.stemmer){c=T(b)?ya[b]:b;d=this.j;e=[];for(var g in c)c.hasOwnProperty(g)&&(f=d?d(g):g,e.push(l(f+\"($|\\\\W)\"),d?d(c[g]):c[g]));this.stemmer=e}this.a=e=(b=a.doc)?K(b):this.a||Q.a;this.s=va(this.c-(this.threshold||0));this.o=G();this.f=G();if(e){this.v=G();a.doc=null;g=e.index={};c=e.keys=[];d=e.field;f=e.tag;h=e.store;M(e.id)||(e.id=e.id.split(\":\"));if(h){var k=G();if(T(h))k[h]=1;else if(M(h))for(var n=\n0;n<h.length;n++)k[h[n]]=1;else P(h)&&(k=h);e.store=k}if(f){this.B=G();h=G();if(d)if(T(d))h[d]=a;else if(M(d))for(k=0;k<d.length;k++)h[d[k]]=a;else P(d)&&(h=d);M(f)||(e.tag=f=[f]);for(d=0;d<f.length;d++)this.B[f[d]]=G();this.I=f;d=h}if(d){if(!M(d))if(P(d)){var w=d;e.field=d=Object.keys(d)}else e.field=d=[d];for(e=0;e<d.length;e++)f=d[e],M(f)||(w&&(a=w[f]),c[e]=f,d[e]=f.split(\":\")),g[f]=new r(a)}a.doc=b}this.m=!0;this.u=(this.cache=b=H(b=a.cache)?this.cache||Q.cache:b)?new Ga(b):!1;return this};r.prototype.encode=\nfunction(a){a&&(la.length&&(a=F(a,la)),this.h.length&&(a=F(a,this.h)),this.j&&(a=this.j(a)),this.stemmer&&(a=F(a,this.stemmer)));return a};r.prototype.addMatcher=function(a){var c=this.h,b;for(b in a)a.hasOwnProperty(b)&&c.push(l(b),a[b]);return this};r.prototype.add=function(a,c,b,d,e){if(this.a&&P(a))return this.l(\"add\",a,c);if(c&&T(c)&&(a||0===a)){var f=\"@\"+a;if(this.f[f]&&!d)return this.update(a,c);if(this.i)return++this.w>=this.b.length&&(this.w=0),this.b[this.w].postMessage({add:!0,id:a,content:c}),\nthis.f[f]=\"\"+this.w,b&&b(),this;if(!e){if(this.async&&\"function\"!==typeof importScripts){var h=this;f=new Promise(function(Y){setTimeout(function(){h.add(a,c,null,d,!0);h=null;Y()})});if(b)f.then(b);else return f;return this}if(b)return this.add(a,c,null,d,!0),b(),this}c=this.encode(c);if(!c.length)return this;b=this.g;e=da(b)?b(c):c.split(this.split);this.filter&&(e=ba(e,this.filter));var g=G();g._ctx=G();for(var k=e.length,n=this.threshold,w=this.depth,z=this.c,v=this.s,p=this.G,t=0;t<k;t++){var D=\ne[t];if(D){var B=D.length,C=(p?t+1:k-t)/k,A=\"\";switch(b){case \"reverse\":case \"both\":for(var y=B;--y;)A=D[y]+A,I(v,g,A,a,p?1:(B-y)/B,C,n,z-1);A=\"\";case \"forward\":for(y=0;y<B;y++)A+=D[y],I(v,g,A,a,p?(y+1)/B:1,C,n,z-1);break;case \"full\":for(y=0;y<B;y++)for(var J=(p?y+1:B-y)/B,R=B;R>y;R--)A=D.substring(y,R),I(v,g,A,a,J,C,n,z-1);break;default:if(B=I(v,g,D,a,1,C,n,z-1),w&&1<k&&B>=n)for(B=g._ctx[D]||(g._ctx[D]=G()),D=this.o[D]||(this.o[D]=va(z-(n||0))),C=t-w,A=t+w+1,0>C&&(C=0),A>k&&(A=k);C<A;C++)C!==t&&\nI(D,B,e[C],a,0,z-(C<t?t-C:C-t),n,z-1)}}}this.f[f]=1;this.m=!1}return this};r.prototype.l=function(a,c,b){if(M(c)){var d=c.length;if(d--){for(var e=0;e<d;e++)this.l(a,c[e]);return this.l(a,c[d],b)}}else{var f=this.a.index,h=this.a.keys,g=this.a.tag;e=this.a.store;var k;var n=this.a.id;d=c;for(var w=0;w<n.length;w++)d=d[n[w]];if(\"remove\"===a&&(delete this.v[d],n=h.length,n--)){for(c=0;c<n;c++)f[h[c]].remove(d);return f[h[n]].remove(d,b)}if(g){for(k=0;k<g.length;k++){var z=g[k];var v=c;n=z.split(\":\");\nfor(w=0;w<n.length;w++)v=v[n[w]];v=\"@\"+v}k=this.B[z];k=k[v]||(k[v]=[])}n=this.a.field;g=0;for(z=n.length;g<z;g++){w=n[g];v=c;for(var p=0;p<w.length;p++)v=v[w[p]];w=f[h[g]];p=\"add\"===a?w.add:w.update;g===z-1?p.call(w,d,v,b):p.call(w,d,v)}if(e){b=Object.keys(e);a=G();for(f=0;f<b.length;f++)if(h=b[f],e[h])for(h=h.split(\":\"),g=n=void 0,z=0;z<h.length;z++)v=h[z],n=(n||c)[v],g=(g||a)[v]=n;c=a}k&&(k[k.length]=c);this.v[d]=c}return this};r.prototype.update=function(a,c,b){if(this.a&&P(a))return this.l(\"update\",\na,c);this.f[\"@\"+a]&&T(c)&&(this.remove(a),this.add(a,c,b,!0));return this};r.prototype.remove=function(a,c,b){if(this.a&&P(a))return this.l(\"remove\",a,c);var d=\"@\"+a;if(this.f[d]){if(this.i)return this.b[this.f[d]].postMessage({remove:!0,id:a}),delete this.f[d],c&&c(),this;if(!b){if(this.async&&\"function\"!==typeof importScripts){var e=this;d=new Promise(function(f){setTimeout(function(){e.remove(a,null,!0);e=null;f()})});if(c)d.then(c);else return d;return this}if(c)return this.remove(a,null,!0),\nc(),this}for(c=0;c<this.c-(this.threshold||0);c++)ca(this.s[c],a);this.depth&&ca(this.o,a);delete this.f[d];this.m=!1}return this};var X;r.prototype.search=function(a,c,b,d){if(P(c)){if(M(c))for(var e=0;e<c.length;e++)c[e].query=a;else c.query=a;a=c;c=1E3}else c&&da(c)?(b=c,c=1E3):c||0===c||(c=1E3);if(this.i){this.H=b;this.D=0;this.A=[];for(var f=0;f<this.i;f++)this.b[f].postMessage({search:!0,limit:c,content:a})}else{var h=[],g=a;if(P(a)&&!M(a)){b||(b=a.callback)&&(g.callback=null);var k=a.sort;\nvar n=a.page;c=a.limit;f=a.threshold;var w=a.suggest;a=a.query}if(this.a){f=this.a.index;var z=g.where,v=g.bool||\"or\",p=g.field,t=v,D,B;if(p)M(p)||(p=[p]);else if(M(g)){var C=g;p=[];t=[];for(var A=0;A<g.length;A++)d=g[A],e=d.bool||v,p[A]=d.field,t[A]=e,\"not\"===e?D=!0:\"and\"===e&&(B=!0)}else p=this.a.keys;v=p.length;for(A=0;A<v;A++)C&&(g=C[A]),n&&!T(g)&&(g.page=null,g.limit=0),h[A]=f[p[A]].search(g,0);if(b)return b(m.call(this,a,t,h,k,c,w,z,n,B,D));if(this.async){var y=this;return new Promise(function(oa){Promise.all(h).then(function(Ha){oa(m.call(y,\na,t,Ha,k,c,w,z,n,B,D))})})}return m.call(this,a,t,h,k,c,w,z,n,B,D)}f||(f=this.threshold||0);if(!d){if(this.async&&\"function\"!==typeof importScripts){var J=this;f=new Promise(function(oa){setTimeout(function(){oa(J.search(g,c,null,!0));J=null})});if(b)f.then(b);else return f;return this}if(b)return b(this.search(g,c,null,!0)),this}if(!a||!T(a))return h;g=a;if(this.cache)if(this.m){if(b=this.u.get(a))return b}else this.u.clear(),this.m=!0;g=this.encode(g);if(!g.length)return h;b=this.g;b=da(b)?b(g):\ng.split(this.split);this.filter&&(b=ba(b,this.filter));C=b.length;d=!0;e=[];var R=G(),Y=0;1<C&&(this.depth&&\"strict\"===this.g?v=!0:b.sort(W));if(!v||(A=this.o))for(var ha=this.c;Y<C;Y++){var N=b[Y];if(N){if(v){if(!p)if(A[N])p=N,R[N]=1;else if(!w)return h;if(w&&Y===C-1&&!e.length)v=!1,N=p||N,R[N]=0;else if(!p)continue}if(!R[N]){var O=[],aa=!1,U=0,V=v?A[p]:this.s;if(V)for(var ea=void 0,S=0;S<ha-f;S++)if(ea=V[S]&&V[S][N])O[U++]=ea,aa=!0;if(aa)p=N,e[e.length]=1<U?O.concat.apply([],O):O[0];else if(!w){d=\n!1;break}R[N]=1}}}else d=!1;d&&(h=ua(e,c,n,w));this.cache&&this.u.set(a,h);return h}};r.prototype.find=function(a,c){return this.where(a,c,1)[0]||null};r.prototype.where=function(a,c,b,d){var e=this.v,f=[],h=0,g;if(P(a)){b||(b=c);var k=Object.keys(a);var n=k.length;var w=!1;if(1===n&&\"id\"===k[0])return[e[a.id]];if((g=this.I)&&!d)for(var z=0;z<g.length;z++){var v=g[z],p=a[v];if(!H(p)){var t=this.B[v][\"@\"+p];if(0===--n)return t;k.splice(k.indexOf(v),1);delete a[v];break}}g=Array(n);for(z=0;z<n;z++)g[z]=\nk[z].split(\":\")}else{if(da(a)){c=d||Object.keys(e);b=c.length;for(k=0;k<b;k++)n=e[c[k]],a(n)&&(f[h++]=n);return f}if(H(c))return[e[a]];if(\"id\"===a)return[e[c]];k=[a];n=1;g=[a.split(\":\")];w=!0}d=t||d||Object.keys(e);z=d.length;for(v=0;v<z;v++){p=t?d[v]:e[d[v]];for(var D=!0,B=0;B<n;B++){w||(c=a[k[B]]);var C=g[B],A=C.length,y=p;if(1<A)for(var J=0;J<A;J++)y=y[C[J]];else y=y[C[0]];if(y!==c){D=!1;break}}if(D&&(f[h++]=p,b&&h===b))break}return f};r.prototype.info=function(){if(this.i)for(var a=0;a<this.i;a++)this.b[a].postMessage({info:!0,\nid:this.id});else return{id:this.id,items:this.length,cache:this.cache&&this.cache.C?this.cache.C.length:!1,matcher:la.length+(this.h?this.h.length:0),worker:this.i,threshold:this.threshold,depth:this.depth,resolution:this.c,contextual:this.depth&&\"strict\"===this.g}};r.prototype.clear=function(){return this.destroy().init()};r.prototype.destroy=function(){this.cache&&(this.u.clear(),this.u=null);this.s=this.o=this.f=null;if(this.a){for(var a=this.a.keys,c=0;c<a.length;c++)this.a.index[a[c]].destroy();\nthis.a=this.v=null}return this};r.prototype.export=function(a){var c=!a||H(a.serialize)||a.serialize;if(this.a){var b=!a||H(a.doc)||a.doc,d=!a||H(a.index)||a.index;a=[];var e=0;if(d)for(d=this.a.keys;e<d.length;e++){var f=this.a.index[d[e]];a[e]=[f.s,f.o,Object.keys(f.f)]}b&&(a[e]=this.v)}else a=[this.s,this.o,Object.keys(this.f)];c&&(a=JSON.stringify(a));return a};r.prototype.import=function(a,c){if(!c||H(c.serialize)||c.serialize)a=JSON.parse(a);var b=G();if(this.a){var d=!c||H(c.doc)||c.doc,e=\n0;if(!c||H(c.index)||c.index){c=this.a.keys;for(var f=c.length,h=a[0][2];e<h.length;e++)b[h[e]]=1;for(e=0;e<f;e++){h=this.a.index[c[e]];var g=a[e];g&&(h.s=g[0],h.o=g[1],h.f=b)}}d&&(this.v=P(d)?d:a[e])}else{d=a[2];for(e=0;e<d.length;e++)b[d[e]]=1;this.s=a[0];this.o=a[1];this.f=b}};var Ia=function(){var a=l(\"\\\\s+\"),c=l(\"[^a-z0-9 ]\"),b=[l(\"[-/]\"),\" \",c,\"\",a,\" \"];return function(d){return L(F(d.toLowerCase(),b))}}(),ia={icase:function(a){return a.toLowerCase()},simple:function(){var a=l(\"\\\\s+\"),c=l(\"[^a-z0-9 ]\"),\nb=l(\"[-/]\"),d=l(\"[\\u00e0\\u00e1\\u00e2\\u00e3\\u00e4\\u00e5]\"),e=l(\"[\\u00e8\\u00e9\\u00ea\\u00eb]\"),f=l(\"[\\u00ec\\u00ed\\u00ee\\u00ef]\"),h=l(\"[\\u00f2\\u00f3\\u00f4\\u00f5\\u00f6\\u0151]\"),g=l(\"[\\u00f9\\u00fa\\u00fb\\u00fc\\u0171]\"),k=l(\"[\\u00fd\\u0177\\u00ff]\"),n=l(\"\\u00f1\"),w=l(\"[\\u00e7c]\"),z=l(\"\\u00df\"),v=l(\" & \"),p=[d,\"a\",e,\"e\",f,\"i\",h,\"o\",g,\"u\",k,\"y\",n,\"n\",w,\"k\",z,\"s\",v,\" and \",b,\" \",c,\"\",a,\" \"];return function(t){t=F(t.toLowerCase(),p);return\" \"===t?\"\":t}}(),advanced:function(){var a=l(\"ae\"),c=l(\"ai\"),b=l(\"ay\"),d=\nl(\"ey\"),e=l(\"oe\"),f=l(\"ue\"),h=l(\"ie\"),g=l(\"sz\"),k=l(\"zs\"),n=l(\"ck\"),w=l(\"cc\"),z=l(\"sh\"),v=l(\"th\"),p=l(\"dt\"),t=l(\"ph\"),D=l(\"pf\"),B=l(\"ou\"),C=l(\"uo\"),A=[a,\"a\",c,\"ei\",b,\"ei\",d,\"ei\",e,\"o\",f,\"u\",h,\"i\",g,\"s\",k,\"s\",z,\"s\",n,\"k\",w,\"k\",v,\"t\",p,\"t\",t,\"f\",D,\"f\",B,\"o\",C,\"u\"];return function(y,J){if(!y)return y;y=this.simple(y);2<y.length&&(y=F(y,A));J||1<y.length&&(y=L(y));return y}}(),extra:function(){var a=l(\"p\"),c=l(\"z\"),b=l(\"[cgq]\"),d=l(\"n\"),e=l(\"d\"),f=l(\"[vw]\"),h=l(\"[aeiouy]\"),g=[a,\"b\",c,\"s\",b,\"k\",d,\"m\",\ne,\"t\",f,\"f\",h,\"\"];return function(k){if(!k)return k;k=this.advanced(k,!0);if(1<k.length){k=k.split(\" \");for(var n=0;n<k.length;n++){var w=k[n];1<w.length&&(k[n]=w[0]+F(w.substring(1),g))}k=k.join(\" \");k=L(k)}return k}}(),balance:Ia},Ga=function(){function a(c){this.clear();this.J=!0!==c&&c}a.prototype.clear=function(){this.cache=G();this.count=G();this.index=G();this.C=[]};a.prototype.set=function(c,b){if(this.J&&H(this.cache[c])){var d=this.C.length;if(d===this.J){d--;var e=this.C[d];delete this.cache[e];\ndelete this.count[e];delete this.index[e]}this.index[c]=d;this.C[d]=c;this.count[c]=-1;this.cache[c]=b;this.get(c)}else this.cache[c]=b};a.prototype.get=function(c){var b=this.cache[c];if(this.J&&b){var d=++this.count[c],e=this.index,f=e[c];if(0<f){for(var h=this.C,g=f;this.count[h[--f]]<=d&&-1!==f;);f++;if(f!==g){for(d=g;d>f;d--)g=h[d-1],h[d]=g,e[g]=d;h[f]=c;e[c]=f}}}return b};return a}();return r}(function(){var q={},u=\"undefined\"!==typeof Blob&&\"undefined\"!==typeof URL&&URL.createObjectURL;return function(r,\nE,K,ba,m){K=u?URL.createObjectURL(new Blob([\"(\"+K.toString()+\")()\"],{type:\"text/javascript\"})):r+\".es5.js\";r+=\"-\"+E;q[r]||(q[r]=[]);q[r][m]=new Worker(K);q[r][m].onmessage=ba;console.log(\"Register Worker: \"+r+\"@\"+m);return q[r][m]}}()),this);\n","(function (root) {\n 'use strict';\n // A list of regular expressions that match arbitrary IPv4 addresses,\n // for which a number of weird notations exist.\n // Note that an address like 0010.0xa5.1.1 is considered legal.\n const ipv4Part = '(0?\\\\d+|0x[a-f0-9]+)';\n const ipv4Regexes = {\n fourOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n threeOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n twoOctet: new RegExp(`^${ipv4Part}\\\\.${ipv4Part}$`, 'i'),\n longValue: new RegExp(`^${ipv4Part}$`, 'i')\n };\n\n // Regular Expression for checking Octal numbers\n const octalRegex = new RegExp(`^0[0-7]+$`, 'i');\n const hexRegex = new RegExp(`^0x[a-f0-9]+$`, 'i');\n\n const zoneIndex = '%[0-9a-z]{1,}';\n\n // IPv6-matching regular expressions.\n // For IPv6, the task is simpler: it is enough to match the colon-delimited\n // hexadecimal IPv6 and a transitional variant with dotted-decimal IPv4 at\n // the end.\n const ipv6Part = '(?:[0-9a-f]+::?)+';\n const ipv6Regexes = {\n zoneIndex: new RegExp(zoneIndex, 'i'),\n 'native': new RegExp(`^(::)?(${ipv6Part})?([0-9a-f]+)?(::)?(${zoneIndex})?$`, 'i'),\n deprecatedTransitional: new RegExp(`^(?:::)(${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?)$`, 'i'),\n transitional: new RegExp(`^((?:${ipv6Part})|(?:::)(?:${ipv6Part})?)${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}\\\\.${ipv4Part}(${zoneIndex})?$`, 'i')\n };\n\n // Expand :: in an IPv6 address or address part consisting of `parts` groups.\n function expandIPv6 (string, parts) {\n // More than one '::' means invalid adddress\n if (string.indexOf('::') !== string.lastIndexOf('::')) {\n return null;\n }\n\n let colonCount = 0;\n let lastColon = -1;\n let zoneId = (string.match(ipv6Regexes.zoneIndex) || [])[0];\n let replacement, replacementCount;\n\n // Remove zone index and save it for later\n if (zoneId) {\n zoneId = zoneId.substring(1);\n string = string.replace(/%.+$/, '');\n }\n\n // How many parts do we already have?\n while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) {\n colonCount++;\n }\n\n // 0::0 is two parts more than ::\n if (string.substr(0, 2) === '::') {\n colonCount--;\n }\n\n if (string.substr(-2, 2) === '::') {\n colonCount--;\n }\n\n // The following loop would hang if colonCount > parts\n if (colonCount > parts) {\n return null;\n }\n\n // replacement = ':' + '0:' * (parts - colonCount)\n replacementCount = parts - colonCount;\n replacement = ':';\n while (replacementCount--) {\n replacement += '0:';\n }\n\n // Insert the missing zeroes\n string = string.replace('::', replacement);\n\n // Trim any garbage which may be hanging around if :: was at the edge in\n // the source strin\n if (string[0] === ':') {\n string = string.slice(1);\n }\n\n if (string[string.length - 1] === ':') {\n string = string.slice(0, -1);\n }\n\n parts = (function () {\n const ref = string.split(':');\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n results.push(parseInt(ref[i], 16));\n }\n\n return results;\n })();\n\n return {\n parts: parts,\n zoneId: zoneId\n };\n }\n\n // A generic CIDR (Classless Inter-Domain Routing) RFC1518 range matcher.\n function matchCIDR (first, second, partSize, cidrBits) {\n if (first.length !== second.length) {\n throw new Error('ipaddr: cannot match CIDR for objects with different lengths');\n }\n\n let part = 0;\n let shift;\n\n while (cidrBits > 0) {\n shift = partSize - cidrBits;\n if (shift < 0) {\n shift = 0;\n }\n\n if (first[part] >> shift !== second[part] >> shift) {\n return false;\n }\n\n cidrBits -= partSize;\n part += 1;\n }\n\n return true;\n }\n\n function parseIntAuto (string) {\n // Hexadedimal base 16 (0x#)\n if (hexRegex.test(string)) {\n return parseInt(string, 16);\n }\n // While octal representation is discouraged by ECMAScript 3\n // and forbidden by ECMAScript 5, we silently allow it to\n // work only if the rest of the string has numbers less than 8.\n if (string[0] === '0' && !isNaN(parseInt(string[1], 10))) {\n if (octalRegex.test(string)) {\n return parseInt(string, 8);\n }\n throw new Error(`ipaddr: cannot parse ${string} as octal`);\n }\n // Always include the base 10 radix!\n return parseInt(string, 10);\n }\n\n function padPart (part, length) {\n while (part.length < length) {\n part = `0${part}`;\n }\n\n return part;\n }\n\n const ipaddr = {};\n\n // An IPv4 address (RFC791).\n ipaddr.IPv4 = (function () {\n // Constructs a new IPv4 address from an array of four octets\n // in network order (MSB first)\n // Verifies the input.\n function IPv4 (octets) {\n if (octets.length !== 4) {\n throw new Error('ipaddr: ipv4 octet count should be 4');\n }\n\n let i, octet;\n\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n throw new Error('ipaddr: ipv4 octet should fit in 8 bits');\n }\n }\n\n this.octets = octets;\n }\n\n // Special IPv4 address ranges.\n // See also https://en.wikipedia.org/wiki/Reserved_IP_addresses\n IPv4.prototype.SpecialRanges = {\n unspecified: [[new IPv4([0, 0, 0, 0]), 8]],\n broadcast: [[new IPv4([255, 255, 255, 255]), 32]],\n // RFC3171\n multicast: [[new IPv4([224, 0, 0, 0]), 4]],\n // RFC3927\n linkLocal: [[new IPv4([169, 254, 0, 0]), 16]],\n // RFC5735\n loopback: [[new IPv4([127, 0, 0, 0]), 8]],\n // RFC6598\n carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]],\n // RFC1918\n 'private': [\n [new IPv4([10, 0, 0, 0]), 8],\n [new IPv4([172, 16, 0, 0]), 12],\n [new IPv4([192, 168, 0, 0]), 16]\n ],\n // Reserved and testing-only ranges; RFCs 5735, 5737, 2544, 1700\n reserved: [\n [new IPv4([192, 0, 0, 0]), 24],\n [new IPv4([192, 0, 2, 0]), 24],\n [new IPv4([192, 88, 99, 0]), 24],\n [new IPv4([198, 18, 0, 0]), 15],\n [new IPv4([198, 51, 100, 0]), 24],\n [new IPv4([203, 0, 113, 0]), 24],\n [new IPv4([240, 0, 0, 0]), 4]\n ]\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv4.prototype.kind = function () {\n return 'ipv4';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv4.prototype.match = function (other, cidrRange) {\n let ref;\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv4') {\n throw new Error('ipaddr: cannot match ipv4 address with non-ipv4 one');\n }\n\n return matchCIDR(this.octets, other.octets, 8, cidrRange);\n };\n\n // returns a number of leading ones in IPv4 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv4.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 8,\n 128: 7,\n 192: 6,\n 224: 5,\n 240: 4,\n 248: 3,\n 252: 2,\n 254: 1,\n 255: 0\n };\n let i, octet, zeros;\n\n for (i = 3; i >= 0; i -= 1) {\n octet = this.octets[i];\n if (octet in zerotable) {\n zeros = zerotable[octet];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 8) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 32 - cidr;\n };\n\n // Checks if the address corresponds to one of the special ranges.\n IPv4.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv4.prototype.toByteArray = function () {\n return this.octets.slice(0);\n };\n\n // Converts this IPv4 address to an IPv4-mapped IPv6 address.\n IPv4.prototype.toIPv4MappedAddress = function () {\n return ipaddr.IPv6.parse(`::ffff:${this.toString()}`);\n };\n\n // Symmetrical method strictly for aligning with the IPv6 methods.\n IPv4.prototype.toNormalizedString = function () {\n return this.toString();\n };\n\n // Returns the address in convenient, decimal-dotted format.\n IPv4.prototype.toString = function () {\n return this.octets.join('.');\n };\n\n return IPv4;\n })();\n\n // A utility function to return broadcast address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.broadcastAddressFromCIDR = function (string) {\n\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 4) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Checks if a given string is formatted like IPv4 address.\n ipaddr.IPv4.isIPv4 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks if a given string is a valid IPv4 address.\n ipaddr.IPv4.isValid = function (string) {\n try {\n new this(this.parser(string));\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // Checks if a given string is a full four-part IPv4 Address.\n ipaddr.IPv4.isValidFourPartDecimal = function (string) {\n if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\\d*)(\\.(0|[1-9]\\d*)){3}$/)) {\n return true;\n } else {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv4 interface and prefix length in CIDR notation\n ipaddr.IPv4.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 4) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error('ipaddr: the address does not have IPv4 CIDR format');\n }\n };\n\n // Tries to parse and validate a string with IPv4 address.\n // Throws an error if it fails.\n ipaddr.IPv4.parse = function (string) {\n const parts = this.parser(string);\n\n if (parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv4 Address');\n }\n\n return new this(parts);\n };\n\n // Parses the string as an IPv4 Address with CIDR Notation.\n ipaddr.IPv4.parseCIDR = function (string) {\n let match;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n const maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 32) {\n const parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv4 CIDR range');\n };\n\n // Classful variants (like a.b, where a is an octet, and b is a 24-bit\n // value representing last three octets; this corresponds to a class C\n // address) are omitted due to classless nature of modern Internet.\n ipaddr.IPv4.parser = function (string) {\n let match, part, value;\n\n // parseInt recognizes all that octal & hexadecimal weirdness for us\n if ((match = string.match(ipv4Regexes.fourOctet))) {\n return (function () {\n const ref = match.slice(1, 6);\n const results = [];\n\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n results.push(parseIntAuto(part));\n }\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.longValue))) {\n value = parseIntAuto(match[1]);\n if (value > 0xffffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n return ((function () {\n const results = [];\n let shift;\n\n for (shift = 0; shift <= 24; shift += 8) {\n results.push((value >> shift) & 0xff);\n }\n\n return results;\n })()).reverse();\n } else if ((match = string.match(ipv4Regexes.twoOctet))) {\n return (function () {\n const ref = match.slice(1, 4);\n const results = [];\n\n value = parseIntAuto(ref[1]);\n if (value > 0xffffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push((value >> 16) & 0xff);\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else if ((match = string.match(ipv4Regexes.threeOctet))) {\n return (function () {\n const ref = match.slice(1, 5);\n const results = [];\n\n value = parseIntAuto(ref[2]);\n if (value > 0xffff || value < 0) {\n throw new Error('ipaddr: address outside defined range');\n }\n\n results.push(parseIntAuto(ref[0]));\n results.push(parseIntAuto(ref[1]));\n results.push((value >> 8) & 0xff);\n results.push( value & 0xff);\n\n return results;\n })();\n } else {\n return null;\n }\n };\n\n // A utility function to return subnet mask in IPv4 format given the prefix length\n ipaddr.IPv4.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 32) {\n throw new Error('ipaddr: invalid IPv4 prefix length');\n }\n\n const octets = [0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 4) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // An IPv6 address (RFC2460)\n ipaddr.IPv6 = (function () {\n // Constructs an IPv6 address from an array of eight 16 - bit parts\n // or sixteen 8 - bit parts in network order(MSB first).\n // Throws an error if the input is invalid.\n function IPv6 (parts, zoneId) {\n let i, part;\n\n if (parts.length === 16) {\n this.parts = [];\n for (i = 0; i <= 14; i += 2) {\n this.parts.push((parts[i] << 8) | parts[i + 1]);\n }\n } else if (parts.length === 8) {\n this.parts = parts;\n } else {\n throw new Error('ipaddr: ipv6 part count should be 8 or 16');\n }\n\n for (i = 0; i < this.parts.length; i++) {\n part = this.parts[i];\n if (!((0 <= part && part <= 0xffff))) {\n throw new Error('ipaddr: ipv6 part should fit in 16 bits');\n }\n }\n\n if (zoneId) {\n this.zoneId = zoneId;\n }\n }\n\n // Special IPv6 ranges\n IPv6.prototype.SpecialRanges = {\n // RFC4291, here and after\n unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128],\n linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10],\n multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8],\n loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128],\n uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7],\n ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96],\n // RFC6145\n rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96],\n // RFC6052\n rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96],\n // RFC3056\n '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16],\n // RFC6052, RFC6146\n teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32],\n // RFC4291\n reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]],\n benchmarking: [new IPv6([0x2001, 0x2, 0, 0, 0, 0, 0, 0]), 48],\n amt: [new IPv6([0x2001, 0x3, 0, 0, 0, 0, 0, 0]), 32],\n as112v6: [new IPv6([0x2001, 0x4, 0x112, 0, 0, 0, 0, 0]), 48],\n deprecated: [new IPv6([0x2001, 0x10, 0, 0, 0, 0, 0, 0]), 28],\n orchid2: [new IPv6([0x2001, 0x20, 0, 0, 0, 0, 0, 0]), 28]\n };\n\n // Checks if this address is an IPv4-mapped IPv6 address.\n IPv6.prototype.isIPv4MappedAddress = function () {\n return this.range() === 'ipv4Mapped';\n };\n\n // The 'kind' method exists on both IPv4 and IPv6 classes.\n IPv6.prototype.kind = function () {\n return 'ipv6';\n };\n\n // Checks if this address matches other one within given CIDR range.\n IPv6.prototype.match = function (other, cidrRange) {\n let ref;\n\n if (cidrRange === undefined) {\n ref = other;\n other = ref[0];\n cidrRange = ref[1];\n }\n\n if (other.kind() !== 'ipv6') {\n throw new Error('ipaddr: cannot match ipv6 address with non-ipv6 one');\n }\n\n return matchCIDR(this.parts, other.parts, 16, cidrRange);\n };\n\n // returns a number of leading ones in IPv6 address, making sure that\n // the rest is a solid sequence of 0's (valid netmask)\n // returns either the CIDR length or null if mask is not valid\n IPv6.prototype.prefixLengthFromSubnetMask = function () {\n let cidr = 0;\n // non-zero encountered stop scanning for zeroes\n let stop = false;\n // number of zeroes in octet\n const zerotable = {\n 0: 16,\n 32768: 15,\n 49152: 14,\n 57344: 13,\n 61440: 12,\n 63488: 11,\n 64512: 10,\n 65024: 9,\n 65280: 8,\n 65408: 7,\n 65472: 6,\n 65504: 5,\n 65520: 4,\n 65528: 3,\n 65532: 2,\n 65534: 1,\n 65535: 0\n };\n let part, zeros;\n\n for (let i = 7; i >= 0; i -= 1) {\n part = this.parts[i];\n if (part in zerotable) {\n zeros = zerotable[part];\n if (stop && zeros !== 0) {\n return null;\n }\n\n if (zeros !== 16) {\n stop = true;\n }\n\n cidr += zeros;\n } else {\n return null;\n }\n }\n\n return 128 - cidr;\n };\n\n\n // Checks if the address corresponds to one of the special ranges.\n IPv6.prototype.range = function () {\n return ipaddr.subnetMatch(this, this.SpecialRanges);\n };\n\n // Returns an array of byte-sized values in network order (MSB first)\n IPv6.prototype.toByteArray = function () {\n let part;\n const bytes = [];\n const ref = this.parts;\n for (let i = 0; i < ref.length; i++) {\n part = ref[i];\n bytes.push(part >> 8);\n bytes.push(part & 0xff);\n }\n\n return bytes;\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:0db8:0008:0066:0000:0000:0000:0001\n IPv6.prototype.toFixedLengthString = function () {\n const addr = ((function () {\n const results = [];\n for (let i = 0; i < this.parts.length; i++) {\n results.push(padPart(this.parts[i].toString(16), 4));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Converts this address to IPv4 address if it is an IPv4-mapped IPv6 address.\n // Throws an error otherwise.\n IPv6.prototype.toIPv4Address = function () {\n if (!this.isIPv4MappedAddress()) {\n throw new Error('ipaddr: trying to convert a generic ipv6 address to ipv4');\n }\n\n const ref = this.parts.slice(-2);\n const high = ref[0];\n const low = ref[1];\n\n return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]);\n };\n\n // Returns the address in expanded format with all zeroes included, like\n // 2001:db8:8:66:0:0:0:1\n //\n // Deprecated: use toFixedLengthString() instead.\n IPv6.prototype.toNormalizedString = function () {\n const addr = ((function () {\n const results = [];\n\n for (let i = 0; i < this.parts.length; i++) {\n results.push(this.parts[i].toString(16));\n }\n\n return results;\n }).call(this)).join(':');\n\n let suffix = '';\n\n if (this.zoneId) {\n suffix = `%${this.zoneId}`;\n }\n\n return addr + suffix;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // in line with RFC 5952 (see https://tools.ietf.org/html/rfc5952#section-4)\n IPv6.prototype.toRFC5952String = function () {\n const regex = /((^|:)(0(:|$)){2,})/g;\n const string = this.toNormalizedString();\n let bestMatchIndex = 0;\n let bestMatchLength = -1;\n let match;\n\n while ((match = regex.exec(string))) {\n if (match[0].length > bestMatchLength) {\n bestMatchIndex = match.index;\n bestMatchLength = match[0].length;\n }\n }\n\n if (bestMatchLength < 0) {\n return string;\n }\n\n return `${string.substring(0, bestMatchIndex)}::${string.substring(bestMatchIndex + bestMatchLength)}`;\n };\n\n // Returns the address in compact, human-readable format like\n // 2001:db8:8:66::1\n // Calls toRFC5952String under the hood.\n IPv6.prototype.toString = function () {\n return this.toRFC5952String();\n };\n\n return IPv6;\n\n })();\n\n // A utility function to return broadcast address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.broadcastAddressFromCIDR = function (string) {\n try {\n const cidr = this.parseCIDR(string);\n const ipInterfaceOctets = cidr[0].toByteArray();\n const subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n const octets = [];\n let i = 0;\n while (i < 16) {\n // Broadcast address is bitwise OR between ip interface and inverted mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255);\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Checks if a given string is formatted like IPv6 address.\n ipaddr.IPv6.isIPv6 = function (string) {\n return this.parser(string) !== null;\n };\n\n // Checks to see if string is a valid IPv6 Address\n ipaddr.IPv6.isValid = function (string) {\n\n // Since IPv6.isValid is always called first, this shortcut\n // provides a substantial performance gain.\n if (typeof string === 'string' && string.indexOf(':') === -1) {\n return false;\n }\n\n try {\n const addr = this.parser(string);\n new this(addr.parts, addr.zoneId);\n return true;\n } catch (e) {\n return false;\n }\n };\n\n // A utility function to return network address given the IPv6 interface and prefix length in CIDR notation\n ipaddr.IPv6.networkAddressFromCIDR = function (string) {\n let cidr, i, ipInterfaceOctets, octets, subnetMaskOctets;\n\n try {\n cidr = this.parseCIDR(string);\n ipInterfaceOctets = cidr[0].toByteArray();\n subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray();\n octets = [];\n i = 0;\n while (i < 16) {\n // Network address is bitwise AND between ip interface and mask\n octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10));\n i++;\n }\n\n return new this(octets);\n } catch (e) {\n throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${e})`);\n }\n };\n\n // Tries to parse and validate a string with IPv6 address.\n // Throws an error if it fails.\n ipaddr.IPv6.parse = function (string) {\n const addr = this.parser(string);\n\n if (addr.parts === null) {\n throw new Error('ipaddr: string is not formatted like an IPv6 Address');\n }\n\n return new this(addr.parts, addr.zoneId);\n };\n\n ipaddr.IPv6.parseCIDR = function (string) {\n let maskLength, match, parsed;\n\n if ((match = string.match(/^(.+)\\/(\\d+)$/))) {\n maskLength = parseInt(match[2]);\n if (maskLength >= 0 && maskLength <= 128) {\n parsed = [this.parse(match[1]), maskLength];\n Object.defineProperty(parsed, 'toString', {\n value: function () {\n return this.join('/');\n }\n });\n return parsed;\n }\n }\n\n throw new Error('ipaddr: string is not formatted like an IPv6 CIDR range');\n };\n\n // Parse an IPv6 address.\n ipaddr.IPv6.parser = function (string) {\n let addr, i, match, octet, octets, zoneId;\n\n if ((match = string.match(ipv6Regexes.deprecatedTransitional))) {\n return this.parser(`::ffff:${match[1]}`);\n }\n if (ipv6Regexes.native.test(string)) {\n return expandIPv6(string, 8);\n }\n if ((match = string.match(ipv6Regexes.transitional))) {\n zoneId = match[6] || '';\n addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6);\n if (addr.parts) {\n octets = [\n parseInt(match[2]),\n parseInt(match[3]),\n parseInt(match[4]),\n parseInt(match[5])\n ];\n for (i = 0; i < octets.length; i++) {\n octet = octets[i];\n if (!((0 <= octet && octet <= 255))) {\n return null;\n }\n }\n\n addr.parts.push(octets[0] << 8 | octets[1]);\n addr.parts.push(octets[2] << 8 | octets[3]);\n return {\n parts: addr.parts,\n zoneId: addr.zoneId\n };\n }\n }\n\n return null;\n };\n\n // A utility function to return subnet mask in IPv6 format given the prefix length\n ipaddr.IPv6.subnetMaskFromPrefixLength = function (prefix) {\n prefix = parseInt(prefix);\n if (prefix < 0 || prefix > 128) {\n throw new Error('ipaddr: invalid IPv6 prefix length');\n }\n\n const octets = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n let j = 0;\n const filledOctetCount = Math.floor(prefix / 8);\n\n while (j < filledOctetCount) {\n octets[j] = 255;\n j++;\n }\n\n if (filledOctetCount < 16) {\n octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8);\n }\n\n return new this(octets);\n };\n\n // Try to parse an array in network order (MSB first) for IPv4 and IPv6\n ipaddr.fromByteArray = function (bytes) {\n const length = bytes.length;\n\n if (length === 4) {\n return new ipaddr.IPv4(bytes);\n } else if (length === 16) {\n return new ipaddr.IPv6(bytes);\n } else {\n throw new Error('ipaddr: the binary input is neither an IPv6 nor IPv4 address');\n }\n };\n\n // Checks if the address is valid IP address\n ipaddr.isValid = function (string) {\n return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string);\n };\n\n\n // Attempts to parse an IP Address, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parse = function (string) {\n if (ipaddr.IPv6.isValid(string)) {\n return ipaddr.IPv6.parse(string);\n } else if (ipaddr.IPv4.isValid(string)) {\n return ipaddr.IPv4.parse(string);\n } else {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 format');\n }\n };\n\n // Attempt to parse CIDR notation, first through IPv6 then IPv4.\n // Throws an error if it could not be parsed.\n ipaddr.parseCIDR = function (string) {\n try {\n return ipaddr.IPv6.parseCIDR(string);\n } catch (e) {\n try {\n return ipaddr.IPv4.parseCIDR(string);\n } catch (e2) {\n throw new Error('ipaddr: the address has neither IPv6 nor IPv4 CIDR format');\n }\n }\n };\n\n // Parse an address and return plain IPv4 address if it is an IPv4-mapped address\n ipaddr.process = function (string) {\n const addr = this.parse(string);\n\n if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) {\n return addr.toIPv4Address();\n } else {\n return addr;\n }\n };\n\n // An utility function to ease named range matching. See examples below.\n // rangeList can contain both IPv4 and IPv6 subnet entries and will not throw errors\n // on matching IPv4 addresses to IPv6 ranges or vice versa.\n ipaddr.subnetMatch = function (address, rangeList, defaultName) {\n let i, rangeName, rangeSubnets, subnet;\n\n if (defaultName === undefined || defaultName === null) {\n defaultName = 'unicast';\n }\n\n for (rangeName in rangeList) {\n if (Object.prototype.hasOwnProperty.call(rangeList, rangeName)) {\n rangeSubnets = rangeList[rangeName];\n // ECMA5 Array.isArray isn't available everywhere\n if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) {\n rangeSubnets = [rangeSubnets];\n }\n\n for (i = 0; i < rangeSubnets.length; i++) {\n subnet = rangeSubnets[i];\n if (address.kind() === subnet[0].kind() && address.match.apply(address, subnet)) {\n return rangeName;\n }\n }\n }\n }\n\n return defaultName;\n };\n\n // Export for both the CommonJS and browser-like environment\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = ipaddr;\n\n } else {\n root.ipaddr = ipaddr;\n }\n\n}(this));\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var baseDifference = require('./_baseDifference'),\n baseFlatten = require('./_baseFlatten'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\nvar difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n});\n\nmodule.exports = difference;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","/*!***************************************************\n* mark.js v8.11.1\n* https://markjs.io/\n* Copyright (c) 2014–2018, Julian Kühnel\n* Released under the MIT license https://git.io/vwTVl\n*****************************************************/\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.Mark = factory());\n}(this, (function () { 'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar DOMIterator = function () {\n function DOMIterator(ctx) {\n var iframes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var exclude = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var iframesTimeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5000;\n classCallCheck(this, DOMIterator);\n\n this.ctx = ctx;\n this.iframes = iframes;\n this.exclude = exclude;\n this.iframesTimeout = iframesTimeout;\n }\n\n createClass(DOMIterator, [{\n key: 'getContexts',\n value: function getContexts() {\n var ctx = void 0,\n filteredCtx = [];\n if (typeof this.ctx === 'undefined' || !this.ctx) {\n ctx = [];\n } else if (NodeList.prototype.isPrototypeOf(this.ctx)) {\n ctx = Array.prototype.slice.call(this.ctx);\n } else if (Array.isArray(this.ctx)) {\n ctx = this.ctx;\n } else if (typeof this.ctx === 'string') {\n ctx = Array.prototype.slice.call(document.querySelectorAll(this.ctx));\n } else {\n ctx = [this.ctx];\n }\n ctx.forEach(function (ctx) {\n var isDescendant = filteredCtx.filter(function (contexts) {\n return contexts.contains(ctx);\n }).length > 0;\n if (filteredCtx.indexOf(ctx) === -1 && !isDescendant) {\n filteredCtx.push(ctx);\n }\n });\n return filteredCtx;\n }\n }, {\n key: 'getIframeContents',\n value: function getIframeContents(ifr, successFn) {\n var errorFn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n var doc = void 0;\n try {\n var ifrWin = ifr.contentWindow;\n doc = ifrWin.document;\n if (!ifrWin || !doc) {\n throw new Error('iframe inaccessible');\n }\n } catch (e) {\n errorFn();\n }\n if (doc) {\n successFn(doc);\n }\n }\n }, {\n key: 'isIframeBlank',\n value: function isIframeBlank(ifr) {\n var bl = 'about:blank',\n src = ifr.getAttribute('src').trim(),\n href = ifr.contentWindow.location.href;\n return href === bl && src !== bl && src;\n }\n }, {\n key: 'observeIframeLoad',\n value: function observeIframeLoad(ifr, successFn, errorFn) {\n var _this = this;\n\n var called = false,\n tout = null;\n var listener = function listener() {\n if (called) {\n return;\n }\n called = true;\n clearTimeout(tout);\n try {\n if (!_this.isIframeBlank(ifr)) {\n ifr.removeEventListener('load', listener);\n _this.getIframeContents(ifr, successFn, errorFn);\n }\n } catch (e) {\n errorFn();\n }\n };\n ifr.addEventListener('load', listener);\n tout = setTimeout(listener, this.iframesTimeout);\n }\n }, {\n key: 'onIframeReady',\n value: function onIframeReady(ifr, successFn, errorFn) {\n try {\n if (ifr.contentWindow.document.readyState === 'complete') {\n if (this.isIframeBlank(ifr)) {\n this.observeIframeLoad(ifr, successFn, errorFn);\n } else {\n this.getIframeContents(ifr, successFn, errorFn);\n }\n } else {\n this.observeIframeLoad(ifr, successFn, errorFn);\n }\n } catch (e) {\n errorFn();\n }\n }\n }, {\n key: 'waitForIframes',\n value: function waitForIframes(ctx, done) {\n var _this2 = this;\n\n var eachCalled = 0;\n this.forEachIframe(ctx, function () {\n return true;\n }, function (ifr) {\n eachCalled++;\n _this2.waitForIframes(ifr.querySelector('html'), function () {\n if (! --eachCalled) {\n done();\n }\n });\n }, function (handled) {\n if (!handled) {\n done();\n }\n });\n }\n }, {\n key: 'forEachIframe',\n value: function forEachIframe(ctx, filter, each) {\n var _this3 = this;\n\n var end = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n var ifr = ctx.querySelectorAll('iframe'),\n open = ifr.length,\n handled = 0;\n ifr = Array.prototype.slice.call(ifr);\n var checkEnd = function checkEnd() {\n if (--open <= 0) {\n end(handled);\n }\n };\n if (!open) {\n checkEnd();\n }\n ifr.forEach(function (ifr) {\n if (DOMIterator.matches(ifr, _this3.exclude)) {\n checkEnd();\n } else {\n _this3.onIframeReady(ifr, function (con) {\n if (filter(ifr)) {\n handled++;\n each(con);\n }\n checkEnd();\n }, checkEnd);\n }\n });\n }\n }, {\n key: 'createIterator',\n value: function createIterator(ctx, whatToShow, filter) {\n return document.createNodeIterator(ctx, whatToShow, filter, false);\n }\n }, {\n key: 'createInstanceOnIframe',\n value: function createInstanceOnIframe(contents) {\n return new DOMIterator(contents.querySelector('html'), this.iframes);\n }\n }, {\n key: 'compareNodeIframe',\n value: function compareNodeIframe(node, prevNode, ifr) {\n var compCurr = node.compareDocumentPosition(ifr),\n prev = Node.DOCUMENT_POSITION_PRECEDING;\n if (compCurr & prev) {\n if (prevNode !== null) {\n var compPrev = prevNode.compareDocumentPosition(ifr),\n after = Node.DOCUMENT_POSITION_FOLLOWING;\n if (compPrev & after) {\n return true;\n }\n } else {\n return true;\n }\n }\n return false;\n }\n }, {\n key: 'getIteratorNode',\n value: function getIteratorNode(itr) {\n var prevNode = itr.previousNode();\n var node = void 0;\n if (prevNode === null) {\n node = itr.nextNode();\n } else {\n node = itr.nextNode() && itr.nextNode();\n }\n return {\n prevNode: prevNode,\n node: node\n };\n }\n }, {\n key: 'checkIframeFilter',\n value: function checkIframeFilter(node, prevNode, currIfr, ifr) {\n var key = false,\n handled = false;\n ifr.forEach(function (ifrDict, i) {\n if (ifrDict.val === currIfr) {\n key = i;\n handled = ifrDict.handled;\n }\n });\n if (this.compareNodeIframe(node, prevNode, currIfr)) {\n if (key === false && !handled) {\n ifr.push({\n val: currIfr,\n handled: true\n });\n } else if (key !== false && !handled) {\n ifr[key].handled = true;\n }\n return true;\n }\n if (key === false) {\n ifr.push({\n val: currIfr,\n handled: false\n });\n }\n return false;\n }\n }, {\n key: 'handleOpenIframes',\n value: function handleOpenIframes(ifr, whatToShow, eCb, fCb) {\n var _this4 = this;\n\n ifr.forEach(function (ifrDict) {\n if (!ifrDict.handled) {\n _this4.getIframeContents(ifrDict.val, function (con) {\n _this4.createInstanceOnIframe(con).forEachNode(whatToShow, eCb, fCb);\n });\n }\n });\n }\n }, {\n key: 'iterateThroughNodes',\n value: function iterateThroughNodes(whatToShow, ctx, eachCb, filterCb, doneCb) {\n var _this5 = this;\n\n var itr = this.createIterator(ctx, whatToShow, filterCb);\n var ifr = [],\n elements = [],\n node = void 0,\n prevNode = void 0,\n retrieveNodes = function retrieveNodes() {\n var _getIteratorNode = _this5.getIteratorNode(itr);\n\n prevNode = _getIteratorNode.prevNode;\n node = _getIteratorNode.node;\n\n return node;\n };\n while (retrieveNodes()) {\n if (this.iframes) {\n this.forEachIframe(ctx, function (currIfr) {\n return _this5.checkIframeFilter(node, prevNode, currIfr, ifr);\n }, function (con) {\n _this5.createInstanceOnIframe(con).forEachNode(whatToShow, function (ifrNode) {\n return elements.push(ifrNode);\n }, filterCb);\n });\n }\n elements.push(node);\n }\n elements.forEach(function (node) {\n eachCb(node);\n });\n if (this.iframes) {\n this.handleOpenIframes(ifr, whatToShow, eachCb, filterCb);\n }\n doneCb();\n }\n }, {\n key: 'forEachNode',\n value: function forEachNode(whatToShow, each, filter) {\n var _this6 = this;\n\n var done = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {};\n\n var contexts = this.getContexts();\n var open = contexts.length;\n if (!open) {\n done();\n }\n contexts.forEach(function (ctx) {\n var ready = function ready() {\n _this6.iterateThroughNodes(whatToShow, ctx, each, filter, function () {\n if (--open <= 0) {\n done();\n }\n });\n };\n if (_this6.iframes) {\n _this6.waitForIframes(ctx, ready);\n } else {\n ready();\n }\n });\n }\n }], [{\n key: 'matches',\n value: function matches(element, selector) {\n var selectors = typeof selector === 'string' ? [selector] : selector,\n fn = element.matches || element.matchesSelector || element.msMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector;\n if (fn) {\n var match = false;\n selectors.every(function (sel) {\n if (fn.call(element, sel)) {\n match = true;\n return false;\n }\n return true;\n });\n return match;\n } else {\n return false;\n }\n }\n }]);\n return DOMIterator;\n}();\n\nvar Mark$1 = function () {\n function Mark(ctx) {\n classCallCheck(this, Mark);\n\n this.ctx = ctx;\n this.ie = false;\n var ua = window.navigator.userAgent;\n if (ua.indexOf('MSIE') > -1 || ua.indexOf('Trident') > -1) {\n this.ie = true;\n }\n }\n\n createClass(Mark, [{\n key: 'log',\n value: function log(msg) {\n var level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'debug';\n\n var log = this.opt.log;\n if (!this.opt.debug) {\n return;\n }\n if ((typeof log === 'undefined' ? 'undefined' : _typeof(log)) === 'object' && typeof log[level] === 'function') {\n log[level]('mark.js: ' + msg);\n }\n }\n }, {\n key: 'escapeStr',\n value: function escapeStr(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n }\n }, {\n key: 'createRegExp',\n value: function createRegExp(str) {\n if (this.opt.wildcards !== 'disabled') {\n str = this.setupWildcardsRegExp(str);\n }\n str = this.escapeStr(str);\n if (Object.keys(this.opt.synonyms).length) {\n str = this.createSynonymsRegExp(str);\n }\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.setupIgnoreJoinersRegExp(str);\n }\n if (this.opt.diacritics) {\n str = this.createDiacriticsRegExp(str);\n }\n str = this.createMergedBlanksRegExp(str);\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.createJoinersRegExp(str);\n }\n if (this.opt.wildcards !== 'disabled') {\n str = this.createWildcardsRegExp(str);\n }\n str = this.createAccuracyRegExp(str);\n return str;\n }\n }, {\n key: 'createSynonymsRegExp',\n value: function createSynonymsRegExp(str) {\n var syn = this.opt.synonyms,\n sens = this.opt.caseSensitive ? '' : 'i',\n joinerPlaceholder = this.opt.ignoreJoiners || this.opt.ignorePunctuation.length ? '\\0' : '';\n for (var index in syn) {\n if (syn.hasOwnProperty(index)) {\n var value = syn[index],\n k1 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(index) : this.escapeStr(index),\n k2 = this.opt.wildcards !== 'disabled' ? this.setupWildcardsRegExp(value) : this.escapeStr(value);\n if (k1 !== '' && k2 !== '') {\n str = str.replace(new RegExp('(' + this.escapeStr(k1) + '|' + this.escapeStr(k2) + ')', 'gm' + sens), joinerPlaceholder + ('(' + this.processSynomyms(k1) + '|') + (this.processSynomyms(k2) + ')') + joinerPlaceholder);\n }\n }\n }\n return str;\n }\n }, {\n key: 'processSynomyms',\n value: function processSynomyms(str) {\n if (this.opt.ignoreJoiners || this.opt.ignorePunctuation.length) {\n str = this.setupIgnoreJoinersRegExp(str);\n }\n return str;\n }\n }, {\n key: 'setupWildcardsRegExp',\n value: function setupWildcardsRegExp(str) {\n str = str.replace(/(?:\\\\)*\\?/g, function (val) {\n return val.charAt(0) === '\\\\' ? '?' : '\\x01';\n });\n return str.replace(/(?:\\\\)*\\*/g, function (val) {\n return val.charAt(0) === '\\\\' ? '*' : '\\x02';\n });\n }\n }, {\n key: 'createWildcardsRegExp',\n value: function createWildcardsRegExp(str) {\n var spaces = this.opt.wildcards === 'withSpaces';\n return str.replace(/\\u0001/g, spaces ? '[\\\\S\\\\s]?' : '\\\\S?').replace(/\\u0002/g, spaces ? '[\\\\S\\\\s]*?' : '\\\\S*');\n }\n }, {\n key: 'setupIgnoreJoinersRegExp',\n value: function setupIgnoreJoinersRegExp(str) {\n return str.replace(/[^(|)\\\\]/g, function (val, indx, original) {\n var nextChar = original.charAt(indx + 1);\n if (/[(|)\\\\]/.test(nextChar) || nextChar === '') {\n return val;\n } else {\n return val + '\\0';\n }\n });\n }\n }, {\n key: 'createJoinersRegExp',\n value: function createJoinersRegExp(str) {\n var joiner = [];\n var ignorePunctuation = this.opt.ignorePunctuation;\n if (Array.isArray(ignorePunctuation) && ignorePunctuation.length) {\n joiner.push(this.escapeStr(ignorePunctuation.join('')));\n }\n if (this.opt.ignoreJoiners) {\n joiner.push('\\\\u00ad\\\\u200b\\\\u200c\\\\u200d');\n }\n return joiner.length ? str.split(/\\u0000+/).join('[' + joiner.join('') + ']*') : str;\n }\n }, {\n key: 'createDiacriticsRegExp',\n value: function createDiacriticsRegExp(str) {\n var sens = this.opt.caseSensitive ? '' : 'i',\n dct = this.opt.caseSensitive ? ['aàáảãạăằắẳẵặâầấẩẫậäåāą', 'AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćč', 'CÇĆČ', 'dđď', 'DĐĎ', 'eèéẻẽẹêềếểễệëěēę', 'EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïī', 'IÌÍỈĨỊÎÏĪ', 'lł', 'LŁ', 'nñňń', 'NÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøō', 'OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rř', 'RŘ', 'sšśșş', 'SŠŚȘŞ', 'tťțţ', 'TŤȚŢ', 'uùúủũụưừứửữựûüůū', 'UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿ', 'YÝỲỶỸỴŸ', 'zžżź', 'ZŽŻŹ'] : ['aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ', 'cçćčCÇĆČ', 'dđďDĐĎ', 'eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ', 'iìíỉĩịîïīIÌÍỈĨỊÎÏĪ', 'lłLŁ', 'nñňńNÑŇŃ', 'oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ', 'rřRŘ', 'sšśșşSŠŚȘŞ', 'tťțţTŤȚŢ', 'uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ', 'yýỳỷỹỵÿYÝỲỶỸỴŸ', 'zžżźZŽŻŹ'];\n var handled = [];\n str.split('').forEach(function (ch) {\n dct.every(function (dct) {\n if (dct.indexOf(ch) !== -1) {\n if (handled.indexOf(dct) > -1) {\n return false;\n }\n str = str.replace(new RegExp('[' + dct + ']', 'gm' + sens), '[' + dct + ']');\n handled.push(dct);\n }\n return true;\n });\n });\n return str;\n }\n }, {\n key: 'createMergedBlanksRegExp',\n value: function createMergedBlanksRegExp(str) {\n return str.replace(/[\\s]+/gmi, '[\\\\s]+');\n }\n }, {\n key: 'createAccuracyRegExp',\n value: function createAccuracyRegExp(str) {\n var _this = this;\n\n var chars = '!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~¡¿';\n var acc = this.opt.accuracy,\n val = typeof acc === 'string' ? acc : acc.value,\n ls = typeof acc === 'string' ? [] : acc.limiters,\n lsJoin = '';\n ls.forEach(function (limiter) {\n lsJoin += '|' + _this.escapeStr(limiter);\n });\n switch (val) {\n case 'partially':\n default:\n return '()(' + str + ')';\n case 'complementary':\n lsJoin = '\\\\s' + (lsJoin ? lsJoin : this.escapeStr(chars));\n return '()([^' + lsJoin + ']*' + str + '[^' + lsJoin + ']*)';\n case 'exactly':\n return '(^|\\\\s' + lsJoin + ')(' + str + ')(?=$|\\\\s' + lsJoin + ')';\n }\n }\n }, {\n key: 'getSeparatedKeywords',\n value: function getSeparatedKeywords(sv) {\n var _this2 = this;\n\n var stack = [];\n sv.forEach(function (kw) {\n if (!_this2.opt.separateWordSearch) {\n if (kw.trim() && stack.indexOf(kw) === -1) {\n stack.push(kw);\n }\n } else {\n kw.split(' ').forEach(function (kwSplitted) {\n if (kwSplitted.trim() && stack.indexOf(kwSplitted) === -1) {\n stack.push(kwSplitted);\n }\n });\n }\n });\n return {\n 'keywords': stack.sort(function (a, b) {\n return b.length - a.length;\n }),\n 'length': stack.length\n };\n }\n }, {\n key: 'isNumeric',\n value: function isNumeric(value) {\n return Number(parseFloat(value)) == value;\n }\n }, {\n key: 'checkRanges',\n value: function checkRanges(array) {\n var _this3 = this;\n\n if (!Array.isArray(array) || Object.prototype.toString.call(array[0]) !== '[object Object]') {\n this.log('markRanges() will only accept an array of objects');\n this.opt.noMatch(array);\n return [];\n }\n var stack = [];\n var last = 0;\n array.sort(function (a, b) {\n return a.start - b.start;\n }).forEach(function (item) {\n var _callNoMatchOnInvalid = _this3.callNoMatchOnInvalidRanges(item, last),\n start = _callNoMatchOnInvalid.start,\n end = _callNoMatchOnInvalid.end,\n valid = _callNoMatchOnInvalid.valid;\n\n if (valid) {\n item.start = start;\n item.length = end - start;\n stack.push(item);\n last = end;\n }\n });\n return stack;\n }\n }, {\n key: 'callNoMatchOnInvalidRanges',\n value: function callNoMatchOnInvalidRanges(range, last) {\n var start = void 0,\n end = void 0,\n valid = false;\n if (range && typeof range.start !== 'undefined') {\n start = parseInt(range.start, 10);\n end = start + parseInt(range.length, 10);\n if (this.isNumeric(range.start) && this.isNumeric(range.length) && end - last > 0 && end - start > 0) {\n valid = true;\n } else {\n this.log('Ignoring invalid or overlapping range: ' + ('' + JSON.stringify(range)));\n this.opt.noMatch(range);\n }\n } else {\n this.log('Ignoring invalid range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n }\n return {\n start: start,\n end: end,\n valid: valid\n };\n }\n }, {\n key: 'checkWhitespaceRanges',\n value: function checkWhitespaceRanges(range, originalLength, string) {\n var end = void 0,\n valid = true,\n max = string.length,\n offset = originalLength - max,\n start = parseInt(range.start, 10) - offset;\n start = start > max ? max : start;\n end = start + parseInt(range.length, 10);\n if (end > max) {\n end = max;\n this.log('End range automatically set to the max value of ' + max);\n }\n if (start < 0 || end - start < 0 || start > max || end > max) {\n valid = false;\n this.log('Invalid range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n } else if (string.substring(start, end).replace(/\\s+/g, '') === '') {\n valid = false;\n this.log('Skipping whitespace only range: ' + JSON.stringify(range));\n this.opt.noMatch(range);\n }\n return {\n start: start,\n end: end,\n valid: valid\n };\n }\n }, {\n key: 'getTextNodes',\n value: function getTextNodes(cb) {\n var _this4 = this;\n\n var val = '',\n nodes = [];\n this.iterator.forEachNode(NodeFilter.SHOW_TEXT, function (node) {\n nodes.push({\n start: val.length,\n end: (val += node.textContent).length,\n node: node\n });\n }, function (node) {\n if (_this4.matchesExclude(node.parentNode)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n }, function () {\n cb({\n value: val,\n nodes: nodes\n });\n });\n }\n }, {\n key: 'matchesExclude',\n value: function matchesExclude(el) {\n return DOMIterator.matches(el, this.opt.exclude.concat(['script', 'style', 'title', 'head', 'html']));\n }\n }, {\n key: 'wrapRangeInTextNode',\n value: function wrapRangeInTextNode(node, start, end) {\n var hEl = !this.opt.element ? 'mark' : this.opt.element,\n startNode = node.splitText(start),\n ret = startNode.splitText(end - start);\n var repl = document.createElement(hEl);\n repl.setAttribute('data-markjs', 'true');\n if (this.opt.className) {\n repl.setAttribute('class', this.opt.className);\n }\n repl.textContent = startNode.textContent;\n startNode.parentNode.replaceChild(repl, startNode);\n return ret;\n }\n }, {\n key: 'wrapRangeInMappedTextNode',\n value: function wrapRangeInMappedTextNode(dict, start, end, filterCb, eachCb) {\n var _this5 = this;\n\n dict.nodes.every(function (n, i) {\n var sibl = dict.nodes[i + 1];\n if (typeof sibl === 'undefined' || sibl.start > start) {\n if (!filterCb(n.node)) {\n return false;\n }\n var s = start - n.start,\n e = (end > n.end ? n.end : end) - n.start,\n startStr = dict.value.substr(0, n.start),\n endStr = dict.value.substr(e + n.start);\n n.node = _this5.wrapRangeInTextNode(n.node, s, e);\n dict.value = startStr + endStr;\n dict.nodes.forEach(function (k, j) {\n if (j >= i) {\n if (dict.nodes[j].start > 0 && j !== i) {\n dict.nodes[j].start -= e;\n }\n dict.nodes[j].end -= e;\n }\n });\n end -= e;\n eachCb(n.node.previousSibling, n.start);\n if (end > n.end) {\n start = n.end;\n } else {\n return false;\n }\n }\n return true;\n });\n }\n }, {\n key: 'wrapMatches',\n value: function wrapMatches(regex, ignoreGroups, filterCb, eachCb, endCb) {\n var _this6 = this;\n\n var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;\n this.getTextNodes(function (dict) {\n dict.nodes.forEach(function (node) {\n node = node.node;\n var match = void 0;\n while ((match = regex.exec(node.textContent)) !== null && match[matchIdx] !== '') {\n if (!filterCb(match[matchIdx], node)) {\n continue;\n }\n var pos = match.index;\n if (matchIdx !== 0) {\n for (var i = 1; i < matchIdx; i++) {\n pos += match[i].length;\n }\n }\n node = _this6.wrapRangeInTextNode(node, pos, pos + match[matchIdx].length);\n eachCb(node.previousSibling);\n regex.lastIndex = 0;\n }\n });\n endCb();\n });\n }\n }, {\n key: 'wrapMatchesAcrossElements',\n value: function wrapMatchesAcrossElements(regex, ignoreGroups, filterCb, eachCb, endCb) {\n var _this7 = this;\n\n var matchIdx = ignoreGroups === 0 ? 0 : ignoreGroups + 1;\n this.getTextNodes(function (dict) {\n var match = void 0;\n while ((match = regex.exec(dict.value)) !== null && match[matchIdx] !== '') {\n var start = match.index;\n if (matchIdx !== 0) {\n for (var i = 1; i < matchIdx; i++) {\n start += match[i].length;\n }\n }\n var end = start + match[matchIdx].length;\n _this7.wrapRangeInMappedTextNode(dict, start, end, function (node) {\n return filterCb(match[matchIdx], node);\n }, function (node, lastIndex) {\n regex.lastIndex = lastIndex;\n eachCb(node);\n });\n }\n endCb();\n });\n }\n }, {\n key: 'wrapRangeFromIndex',\n value: function wrapRangeFromIndex(ranges, filterCb, eachCb, endCb) {\n var _this8 = this;\n\n this.getTextNodes(function (dict) {\n var originalLength = dict.value.length;\n ranges.forEach(function (range, counter) {\n var _checkWhitespaceRange = _this8.checkWhitespaceRanges(range, originalLength, dict.value),\n start = _checkWhitespaceRange.start,\n end = _checkWhitespaceRange.end,\n valid = _checkWhitespaceRange.valid;\n\n if (valid) {\n _this8.wrapRangeInMappedTextNode(dict, start, end, function (node) {\n return filterCb(node, range, dict.value.substring(start, end), counter);\n }, function (node) {\n eachCb(node, range);\n });\n }\n });\n endCb();\n });\n }\n }, {\n key: 'unwrapMatches',\n value: function unwrapMatches(node) {\n var parent = node.parentNode;\n var docFrag = document.createDocumentFragment();\n while (node.firstChild) {\n docFrag.appendChild(node.removeChild(node.firstChild));\n }\n parent.replaceChild(docFrag, node);\n if (!this.ie) {\n parent.normalize();\n } else {\n this.normalizeTextNode(parent);\n }\n }\n }, {\n key: 'normalizeTextNode',\n value: function normalizeTextNode(node) {\n if (!node) {\n return;\n }\n if (node.nodeType === 3) {\n while (node.nextSibling && node.nextSibling.nodeType === 3) {\n node.nodeValue += node.nextSibling.nodeValue;\n node.parentNode.removeChild(node.nextSibling);\n }\n } else {\n this.normalizeTextNode(node.firstChild);\n }\n this.normalizeTextNode(node.nextSibling);\n }\n }, {\n key: 'markRegExp',\n value: function markRegExp(regexp, opt) {\n var _this9 = this;\n\n this.opt = opt;\n this.log('Searching with expression \"' + regexp + '\"');\n var totalMatches = 0,\n fn = 'wrapMatches';\n var eachCb = function eachCb(element) {\n totalMatches++;\n _this9.opt.each(element);\n };\n if (this.opt.acrossElements) {\n fn = 'wrapMatchesAcrossElements';\n }\n this[fn](regexp, this.opt.ignoreGroups, function (match, node) {\n return _this9.opt.filter(node, match, totalMatches);\n }, eachCb, function () {\n if (totalMatches === 0) {\n _this9.opt.noMatch(regexp);\n }\n _this9.opt.done(totalMatches);\n });\n }\n }, {\n key: 'mark',\n value: function mark(sv, opt) {\n var _this10 = this;\n\n this.opt = opt;\n var totalMatches = 0,\n fn = 'wrapMatches';\n\n var _getSeparatedKeywords = this.getSeparatedKeywords(typeof sv === 'string' ? [sv] : sv),\n kwArr = _getSeparatedKeywords.keywords,\n kwArrLen = _getSeparatedKeywords.length,\n sens = this.opt.caseSensitive ? '' : 'i',\n handler = function handler(kw) {\n var regex = new RegExp(_this10.createRegExp(kw), 'gm' + sens),\n matches = 0;\n _this10.log('Searching with expression \"' + regex + '\"');\n _this10[fn](regex, 1, function (term, node) {\n return _this10.opt.filter(node, kw, totalMatches, matches);\n }, function (element) {\n matches++;\n totalMatches++;\n _this10.opt.each(element);\n }, function () {\n if (matches === 0) {\n _this10.opt.noMatch(kw);\n }\n if (kwArr[kwArrLen - 1] === kw) {\n _this10.opt.done(totalMatches);\n } else {\n handler(kwArr[kwArr.indexOf(kw) + 1]);\n }\n });\n };\n\n if (this.opt.acrossElements) {\n fn = 'wrapMatchesAcrossElements';\n }\n if (kwArrLen === 0) {\n this.opt.done(totalMatches);\n } else {\n handler(kwArr[0]);\n }\n }\n }, {\n key: 'markRanges',\n value: function markRanges(rawRanges, opt) {\n var _this11 = this;\n\n this.opt = opt;\n var totalMatches = 0,\n ranges = this.checkRanges(rawRanges);\n if (ranges && ranges.length) {\n this.log('Starting to mark with the following ranges: ' + JSON.stringify(ranges));\n this.wrapRangeFromIndex(ranges, function (node, range, match, counter) {\n return _this11.opt.filter(node, range, match, counter);\n }, function (element, range) {\n totalMatches++;\n _this11.opt.each(element, range);\n }, function () {\n _this11.opt.done(totalMatches);\n });\n } else {\n this.opt.done(totalMatches);\n }\n }\n }, {\n key: 'unmark',\n value: function unmark(opt) {\n var _this12 = this;\n\n this.opt = opt;\n var sel = this.opt.element ? this.opt.element : '*';\n sel += '[data-markjs]';\n if (this.opt.className) {\n sel += '.' + this.opt.className;\n }\n this.log('Removal selector \"' + sel + '\"');\n this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT, function (node) {\n _this12.unwrapMatches(node);\n }, function (node) {\n var matchesSel = DOMIterator.matches(node, sel),\n matchesExclude = _this12.matchesExclude(node);\n if (!matchesSel || matchesExclude) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n }, this.opt.done);\n }\n }, {\n key: 'opt',\n set: function set$$1(val) {\n this._opt = _extends({}, {\n 'element': '',\n 'className': '',\n 'exclude': [],\n 'iframes': false,\n 'iframesTimeout': 5000,\n 'separateWordSearch': true,\n 'diacritics': true,\n 'synonyms': {},\n 'accuracy': 'partially',\n 'acrossElements': false,\n 'caseSensitive': false,\n 'ignoreJoiners': false,\n 'ignoreGroups': 0,\n 'ignorePunctuation': [],\n 'wildcards': 'disabled',\n 'each': function each() {},\n 'noMatch': function noMatch() {},\n 'filter': function filter() {\n return true;\n },\n 'done': function done() {},\n 'debug': false,\n 'log': window.console\n }, val);\n },\n get: function get$$1() {\n return this._opt;\n }\n }, {\n key: 'iterator',\n get: function get$$1() {\n return new DOMIterator(this.ctx, this.opt.iframes, this.opt.exclude, this.opt.iframesTimeout);\n }\n }]);\n return Mark;\n}();\n\nfunction Mark(ctx) {\n var _this = this;\n\n var instance = new Mark$1(ctx);\n this.mark = function (sv, opt) {\n instance.mark(sv, opt);\n return _this;\n };\n this.markRegExp = function (sv, opt) {\n instance.markRegExp(sv, opt);\n return _this;\n };\n this.markRanges = function (sv, opt) {\n instance.markRanges(sv, opt);\n return _this;\n };\n this.unmark = function (opt) {\n instance.unmark(opt);\n return _this;\n };\n return this;\n}\n\nreturn Mark;\n\n})));\n","/**\n * react-table\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { createTable } from '@tanstack/table-core';\nexport * from '@tanstack/table-core';\n\n//\n/**\n * If rendering headers, cells, or footers with custom markup, use flexRender instead of `cell.getValue()` or `cell.renderValue()`.\n */\nfunction flexRender(Comp, props) {\n return !Comp ? null : isReactComponent(Comp) ? /*#__PURE__*/React.createElement(Comp, props) : Comp;\n}\nfunction isReactComponent(component) {\n return isClassComponent(component) || typeof component === 'function' || isExoticComponent(component);\n}\nfunction isClassComponent(component) {\n return typeof component === 'function' && (() => {\n const proto = Object.getPrototypeOf(component);\n return proto.prototype && proto.prototype.isReactComponent;\n })();\n}\nfunction isExoticComponent(component) {\n return typeof component === 'object' && typeof component.$$typeof === 'symbol' && ['react.memo', 'react.forward_ref'].includes(component.$$typeof.description);\n}\nfunction useReactTable(options) {\n // Compose in the generic options to the user options\n const resolvedOptions = {\n state: {},\n // Dummy state\n onStateChange: () => {},\n // noop\n renderFallbackValue: null,\n ...options\n };\n\n // Create a new table and store it in state\n const [tableRef] = React.useState(() => ({\n current: createTable(resolvedOptions)\n }));\n\n // By default, manage table state here using the table's initial state\n const [state, setState] = React.useState(() => tableRef.current.initialState);\n\n // Compose the default state above with any user state. This will allow the user\n // to only control a subset of the state if desired.\n tableRef.current.setOptions(prev => ({\n ...prev,\n ...options,\n state: {\n ...state,\n ...options.state\n },\n // Similarly, we'll maintain both our internal state and any user-provided\n // state.\n onStateChange: updater => {\n setState(updater);\n options.onStateChange == null || options.onStateChange(updater);\n }\n }));\n return tableRef.current;\n}\n\nexport { flexRender, useReactTable };\n//# sourceMappingURL=index.mjs.map\n","/**\n * table-core\n *\n * Copyright (c) TanStack\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n// Is this type a tuple?\n\n// If this type is a tuple, what indices are allowed?\n\n///\n\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction noop() {\n //\n}\nfunction makeStateUpdater(key, instance) {\n return updater => {\n instance.setState(old => {\n return {\n ...old,\n [key]: functionalUpdate(updater, old[key])\n };\n });\n };\n}\nfunction isFunction(d) {\n return d instanceof Function;\n}\nfunction isNumberArray(d) {\n return Array.isArray(d) && d.every(val => typeof val === 'number');\n}\nfunction flattenBy(arr, getChildren) {\n const flat = [];\n const recurse = subArr => {\n subArr.forEach(item => {\n flat.push(item);\n const children = getChildren(item);\n if (children != null && children.length) {\n recurse(children);\n }\n });\n };\n recurse(arr);\n return flat;\n}\nfunction memo(getDeps, fn, opts) {\n let deps = [];\n let result;\n return () => {\n let depTime;\n if (opts.key && opts.debug) depTime = Date.now();\n const newDeps = getDeps();\n const depsChanged = newDeps.length !== deps.length || newDeps.some((dep, index) => deps[index] !== dep);\n if (!depsChanged) {\n return result;\n }\n deps = newDeps;\n let resultTime;\n if (opts.key && opts.debug) resultTime = Date.now();\n result = fn(...newDeps);\n opts == null || opts.onChange == null || opts.onChange(result);\n if (opts.key && opts.debug) {\n if (opts != null && opts.debug()) {\n const depEndTime = Math.round((Date.now() - depTime) * 100) / 100;\n const resultEndTime = Math.round((Date.now() - resultTime) * 100) / 100;\n const resultFpsPercentage = resultEndTime / 16;\n const pad = (str, num) => {\n str = String(str);\n while (str.length < num) {\n str = ' ' + str;\n }\n return str;\n };\n console.info(`%c⏱ ${pad(resultEndTime, 5)} /${pad(depEndTime, 5)} ms`, `\n font-size: .6rem;\n font-weight: bold;\n color: hsl(${Math.max(0, Math.min(120 - 120 * resultFpsPercentage, 120))}deg 100% 31%);`, opts == null ? void 0 : opts.key);\n }\n }\n return result;\n };\n}\n\nfunction createColumn(table, columnDef, depth, parent) {\n var _ref, _resolvedColumnDef$id;\n const defaultColumn = table._getDefaultColumnDef();\n const resolvedColumnDef = {\n ...defaultColumn,\n ...columnDef\n };\n const accessorKey = resolvedColumnDef.accessorKey;\n let id = (_ref = (_resolvedColumnDef$id = resolvedColumnDef.id) != null ? _resolvedColumnDef$id : accessorKey ? accessorKey.replace('.', '_') : undefined) != null ? _ref : typeof resolvedColumnDef.header === 'string' ? resolvedColumnDef.header : undefined;\n let accessorFn;\n if (resolvedColumnDef.accessorFn) {\n accessorFn = resolvedColumnDef.accessorFn;\n } else if (accessorKey) {\n // Support deep accessor keys\n if (accessorKey.includes('.')) {\n accessorFn = originalRow => {\n let result = originalRow;\n for (const key of accessorKey.split('.')) {\n var _result;\n result = (_result = result) == null ? void 0 : _result[key];\n if (process.env.NODE_ENV !== 'production' && result === undefined) {\n console.warn(`\"${key}\" in deeply nested key \"${accessorKey}\" returned undefined.`);\n }\n }\n return result;\n };\n } else {\n accessorFn = originalRow => originalRow[resolvedColumnDef.accessorKey];\n }\n }\n if (!id) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(resolvedColumnDef.accessorFn ? `Columns require an id when using an accessorFn` : `Columns require an id when using a non-string header`);\n }\n throw new Error();\n }\n let column = {\n id: `${String(id)}`,\n accessorFn,\n parent: parent,\n depth,\n columnDef: resolvedColumnDef,\n columns: [],\n getFlatColumns: memo(() => [true], () => {\n var _column$columns;\n return [column, ...((_column$columns = column.columns) == null ? void 0 : _column$columns.flatMap(d => d.getFlatColumns()))];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getFlatColumns',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n }\n }),\n getLeafColumns: memo(() => [table._getOrderColumnsFn()], orderColumns => {\n var _column$columns2;\n if ((_column$columns2 = column.columns) != null && _column$columns2.length) {\n let leafColumns = column.columns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }\n return [column];\n }, {\n key: process.env.NODE_ENV === 'production' && 'column.getLeafColumns',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\n })\n };\n for (const feature of table._features) {\n feature.createColumn == null || feature.createColumn(column, table);\n }\n\n // Yes, we have to convert table to uknown, because we know more than the compiler here.\n return column;\n}\n\n//\n\nfunction createHeader(table, column, options) {\n var _options$id;\n const id = (_options$id = options.id) != null ? _options$id : column.id;\n let header = {\n id,\n column,\n index: options.index,\n isPlaceholder: !!options.isPlaceholder,\n placeholderId: options.placeholderId,\n depth: options.depth,\n subHeaders: [],\n colSpan: 0,\n rowSpan: 0,\n headerGroup: null,\n getLeafHeaders: () => {\n const leafHeaders = [];\n const recurseHeader = h => {\n if (h.subHeaders && h.subHeaders.length) {\n h.subHeaders.map(recurseHeader);\n }\n leafHeaders.push(h);\n };\n recurseHeader(header);\n return leafHeaders;\n },\n getContext: () => ({\n table,\n header: header,\n column\n })\n };\n table._features.forEach(feature => {\n feature.createHeader == null || feature.createHeader(header, table);\n });\n return header;\n}\nconst Headers = {\n createTable: table => {\n // Header Groups\n\n table.getHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n var _left$map$filter, _right$map$filter;\n const leftColumns = (_left$map$filter = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter : [];\n const rightColumns = (_right$map$filter = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter : [];\n const centerColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n const headerGroups = buildHeaderGroups(allColumns, [...leftColumns, ...centerColumns, ...rightColumns], table);\n return headerGroups;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getHeaderGroups',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugHeaders;\n }\n });\n table.getCenterHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, leafColumns, left, right) => {\n leafColumns = leafColumns.filter(column => !(left != null && left.includes(column.id)) && !(right != null && right.includes(column.id)));\n return buildHeaderGroups(allColumns, leafColumns, table, 'center');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterHeaderGroups',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugHeaders;\n }\n });\n table.getLeftHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.left], (allColumns, leafColumns, left) => {\n var _left$map$filter2;\n const orderedLeafColumns = (_left$map$filter2 = left == null ? void 0 : left.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _left$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'left');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftHeaderGroups',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugHeaders;\n }\n });\n table.getRightHeaderGroups = memo(() => [table.getAllColumns(), table.getVisibleLeafColumns(), table.getState().columnPinning.right], (allColumns, leafColumns, right) => {\n var _right$map$filter2;\n const orderedLeafColumns = (_right$map$filter2 = right == null ? void 0 : right.map(columnId => leafColumns.find(d => d.id === columnId)).filter(Boolean)) != null ? _right$map$filter2 : [];\n return buildHeaderGroups(allColumns, orderedLeafColumns, table, 'right');\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightHeaderGroups',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugHeaders;\n }\n });\n\n // Footer Groups\n\n table.getFooterGroups = memo(() => [table.getHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFooterGroups',\n debug: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugHeaders;\n }\n });\n table.getLeftFooterGroups = memo(() => [table.getLeftHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFooterGroups',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugHeaders;\n }\n });\n table.getCenterFooterGroups = memo(() => [table.getCenterHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFooterGroups',\n debug: () => {\n var _table$options$debugA7;\n return (_table$options$debugA7 = table.options.debugAll) != null ? _table$options$debugA7 : table.options.debugHeaders;\n }\n });\n table.getRightFooterGroups = memo(() => [table.getRightHeaderGroups()], headerGroups => {\n return [...headerGroups].reverse();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFooterGroups',\n debug: () => {\n var _table$options$debugA8;\n return (_table$options$debugA8 = table.options.debugAll) != null ? _table$options$debugA8 : table.options.debugHeaders;\n }\n });\n\n // Flat Headers\n\n table.getFlatHeaders = memo(() => [table.getHeaderGroups()], headerGroups => {\n return headerGroups.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFlatHeaders',\n debug: () => {\n var _table$options$debugA9;\n return (_table$options$debugA9 = table.options.debugAll) != null ? _table$options$debugA9 : table.options.debugHeaders;\n }\n });\n table.getLeftFlatHeaders = memo(() => [table.getLeftHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftFlatHeaders',\n debug: () => {\n var _table$options$debugA10;\n return (_table$options$debugA10 = table.options.debugAll) != null ? _table$options$debugA10 : table.options.debugHeaders;\n }\n });\n table.getCenterFlatHeaders = memo(() => [table.getCenterHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterFlatHeaders',\n debug: () => {\n var _table$options$debugA11;\n return (_table$options$debugA11 = table.options.debugAll) != null ? _table$options$debugA11 : table.options.debugHeaders;\n }\n });\n table.getRightFlatHeaders = memo(() => [table.getRightHeaderGroups()], left => {\n return left.map(headerGroup => {\n return headerGroup.headers;\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightFlatHeaders',\n debug: () => {\n var _table$options$debugA12;\n return (_table$options$debugA12 = table.options.debugAll) != null ? _table$options$debugA12 : table.options.debugHeaders;\n }\n });\n\n // Leaf Headers\n\n table.getCenterLeafHeaders = memo(() => [table.getCenterFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders;\n return !((_header$subHeaders = header.subHeaders) != null && _header$subHeaders.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafHeaders',\n debug: () => {\n var _table$options$debugA13;\n return (_table$options$debugA13 = table.options.debugAll) != null ? _table$options$debugA13 : table.options.debugHeaders;\n }\n });\n table.getLeftLeafHeaders = memo(() => [table.getLeftFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders2;\n return !((_header$subHeaders2 = header.subHeaders) != null && _header$subHeaders2.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafHeaders',\n debug: () => {\n var _table$options$debugA14;\n return (_table$options$debugA14 = table.options.debugAll) != null ? _table$options$debugA14 : table.options.debugHeaders;\n }\n });\n table.getRightLeafHeaders = memo(() => [table.getRightFlatHeaders()], flatHeaders => {\n return flatHeaders.filter(header => {\n var _header$subHeaders3;\n return !((_header$subHeaders3 = header.subHeaders) != null && _header$subHeaders3.length);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafHeaders',\n debug: () => {\n var _table$options$debugA15;\n return (_table$options$debugA15 = table.options.debugAll) != null ? _table$options$debugA15 : table.options.debugHeaders;\n }\n });\n table.getLeafHeaders = memo(() => [table.getLeftHeaderGroups(), table.getCenterHeaderGroups(), table.getRightHeaderGroups()], (left, center, right) => {\n var _left$0$headers, _left$, _center$0$headers, _center$, _right$0$headers, _right$;\n return [...((_left$0$headers = (_left$ = left[0]) == null ? void 0 : _left$.headers) != null ? _left$0$headers : []), ...((_center$0$headers = (_center$ = center[0]) == null ? void 0 : _center$.headers) != null ? _center$0$headers : []), ...((_right$0$headers = (_right$ = right[0]) == null ? void 0 : _right$.headers) != null ? _right$0$headers : [])].map(header => {\n return header.getLeafHeaders();\n }).flat();\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeafHeaders',\n debug: () => {\n var _table$options$debugA16;\n return (_table$options$debugA16 = table.options.debugAll) != null ? _table$options$debugA16 : table.options.debugHeaders;\n }\n });\n }\n};\nfunction buildHeaderGroups(allColumns, columnsToGroup, table, headerFamily) {\n var _headerGroups$0$heade, _headerGroups$;\n // Find the max depth of the columns:\n // build the leaf column row\n // build each buffer row going up\n // placeholder for non-existent level\n // real column for existing level\n\n let maxDepth = 0;\n const findMaxDepth = function (columns, depth) {\n if (depth === void 0) {\n depth = 1;\n }\n maxDepth = Math.max(maxDepth, depth);\n columns.filter(column => column.getIsVisible()).forEach(column => {\n var _column$columns;\n if ((_column$columns = column.columns) != null && _column$columns.length) {\n findMaxDepth(column.columns, depth + 1);\n }\n }, 0);\n };\n findMaxDepth(allColumns);\n let headerGroups = [];\n const createHeaderGroup = (headersToGroup, depth) => {\n // The header group we are creating\n const headerGroup = {\n depth,\n id: [headerFamily, `${depth}`].filter(Boolean).join('_'),\n headers: []\n };\n\n // The parent columns we're going to scan next\n const pendingParentHeaders = [];\n\n // Scan each column for parents\n headersToGroup.forEach(headerToGroup => {\n // What is the latest (last) parent column?\n\n const latestPendingParentHeader = [...pendingParentHeaders].reverse()[0];\n const isLeafHeader = headerToGroup.column.depth === headerGroup.depth;\n let column;\n let isPlaceholder = false;\n if (isLeafHeader && headerToGroup.column.parent) {\n // The parent header is new\n column = headerToGroup.column.parent;\n } else {\n // The parent header is repeated\n column = headerToGroup.column;\n isPlaceholder = true;\n }\n if (latestPendingParentHeader && (latestPendingParentHeader == null ? void 0 : latestPendingParentHeader.column) === column) {\n // This column is repeated. Add it as a sub header to the next batch\n latestPendingParentHeader.subHeaders.push(headerToGroup);\n } else {\n // This is a new header. Let's create it\n const header = createHeader(table, column, {\n id: [headerFamily, depth, column.id, headerToGroup == null ? void 0 : headerToGroup.id].filter(Boolean).join('_'),\n isPlaceholder,\n placeholderId: isPlaceholder ? `${pendingParentHeaders.filter(d => d.column === column).length}` : undefined,\n depth,\n index: pendingParentHeaders.length\n });\n\n // Add the headerToGroup as a subHeader of the new header\n header.subHeaders.push(headerToGroup);\n // Add the new header to the pendingParentHeaders to get grouped\n // in the next batch\n pendingParentHeaders.push(header);\n }\n headerGroup.headers.push(headerToGroup);\n headerToGroup.headerGroup = headerGroup;\n });\n headerGroups.push(headerGroup);\n if (depth > 0) {\n createHeaderGroup(pendingParentHeaders, depth - 1);\n }\n };\n const bottomHeaders = columnsToGroup.map((column, index) => createHeader(table, column, {\n depth: maxDepth,\n index\n }));\n createHeaderGroup(bottomHeaders, maxDepth - 1);\n headerGroups.reverse();\n\n // headerGroups = headerGroups.filter(headerGroup => {\n // return !headerGroup.headers.every(header => header.isPlaceholder)\n // })\n\n const recurseHeadersForSpans = headers => {\n const filteredHeaders = headers.filter(header => header.column.getIsVisible());\n return filteredHeaders.map(header => {\n let colSpan = 0;\n let rowSpan = 0;\n let childRowSpans = [0];\n if (header.subHeaders && header.subHeaders.length) {\n childRowSpans = [];\n recurseHeadersForSpans(header.subHeaders).forEach(_ref => {\n let {\n colSpan: childColSpan,\n rowSpan: childRowSpan\n } = _ref;\n colSpan += childColSpan;\n childRowSpans.push(childRowSpan);\n });\n } else {\n colSpan = 1;\n }\n const minChildRowSpan = Math.min(...childRowSpans);\n rowSpan = rowSpan + minChildRowSpan;\n header.colSpan = colSpan;\n header.rowSpan = rowSpan;\n return {\n colSpan,\n rowSpan\n };\n });\n };\n recurseHeadersForSpans((_headerGroups$0$heade = (_headerGroups$ = headerGroups[0]) == null ? void 0 : _headerGroups$.headers) != null ? _headerGroups$0$heade : []);\n return headerGroups;\n}\n\n//\n\n//\n\nconst defaultColumnSizing = {\n size: 150,\n minSize: 20,\n maxSize: Number.MAX_SAFE_INTEGER\n};\nconst getDefaultColumnSizingInfoState = () => ({\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: []\n});\nconst ColumnSizing = {\n getDefaultColumnDef: () => {\n return defaultColumnSizing;\n },\n getInitialState: state => {\n return {\n columnSizing: {},\n columnSizingInfo: getDefaultColumnSizingInfoState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n columnResizeMode: 'onEnd',\n onColumnSizingChange: makeStateUpdater('columnSizing', table),\n onColumnSizingInfoChange: makeStateUpdater('columnSizingInfo', table)\n };\n },\n createColumn: (column, table) => {\n column.getSize = () => {\n var _column$columnDef$min, _ref, _column$columnDef$max;\n const columnSize = table.getState().columnSizing[column.id];\n return Math.min(Math.max((_column$columnDef$min = column.columnDef.minSize) != null ? _column$columnDef$min : defaultColumnSizing.minSize, (_ref = columnSize != null ? columnSize : column.columnDef.size) != null ? _ref : defaultColumnSizing.size), (_column$columnDef$max = column.columnDef.maxSize) != null ? _column$columnDef$max : defaultColumnSizing.maxSize);\n };\n column.getStart = position => {\n const columns = !position ? table.getVisibleLeafColumns() : position === 'left' ? table.getLeftVisibleLeafColumns() : table.getRightVisibleLeafColumns();\n const index = columns.findIndex(d => d.id === column.id);\n if (index > 0) {\n const prevSiblingColumn = columns[index - 1];\n return prevSiblingColumn.getStart(position) + prevSiblingColumn.getSize();\n }\n return 0;\n };\n column.resetSize = () => {\n table.setColumnSizing(_ref2 => {\n let {\n [column.id]: _,\n ...rest\n } = _ref2;\n return rest;\n });\n };\n column.getCanResize = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableResizing) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnResizing) != null ? _table$options$enable : true);\n };\n column.getIsResizing = () => {\n return table.getState().columnSizingInfo.isResizingColumn === column.id;\n };\n },\n createHeader: (header, table) => {\n header.getSize = () => {\n let sum = 0;\n const recurse = header => {\n if (header.subHeaders.length) {\n header.subHeaders.forEach(recurse);\n } else {\n var _header$column$getSiz;\n sum += (_header$column$getSiz = header.column.getSize()) != null ? _header$column$getSiz : 0;\n }\n };\n recurse(header);\n return sum;\n };\n header.getStart = () => {\n if (header.index > 0) {\n const prevSiblingHeader = header.headerGroup.headers[header.index - 1];\n return prevSiblingHeader.getStart() + prevSiblingHeader.getSize();\n }\n return 0;\n };\n header.getResizeHandler = () => {\n const column = table.getColumn(header.column.id);\n const canResize = column == null ? void 0 : column.getCanResize();\n return e => {\n if (!column || !canResize) {\n return;\n }\n e.persist == null || e.persist();\n if (isTouchStartEvent(e)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (e.touches && e.touches.length > 1) {\n return;\n }\n }\n const startSize = header.getSize();\n const columnSizingStart = header ? header.getLeafHeaders().map(d => [d.column.id, d.column.getSize()]) : [[column.id, column.getSize()]];\n const clientX = isTouchStartEvent(e) ? Math.round(e.touches[0].clientX) : e.clientX;\n const newColumnSizing = {};\n const updateOffset = (eventType, clientXPos) => {\n if (typeof clientXPos !== 'number') {\n return;\n }\n table.setColumnSizingInfo(old => {\n var _old$startOffset, _old$startSize;\n const deltaOffset = clientXPos - ((_old$startOffset = old == null ? void 0 : old.startOffset) != null ? _old$startOffset : 0);\n const deltaPercentage = Math.max(deltaOffset / ((_old$startSize = old == null ? void 0 : old.startSize) != null ? _old$startSize : 0), -0.999999);\n old.columnSizingStart.forEach(_ref3 => {\n let [columnId, headerSize] = _ref3;\n newColumnSizing[columnId] = Math.round(Math.max(headerSize + headerSize * deltaPercentage, 0) * 100) / 100;\n });\n return {\n ...old,\n deltaOffset,\n deltaPercentage\n };\n });\n if (table.options.columnResizeMode === 'onChange' || eventType === 'end') {\n table.setColumnSizing(old => ({\n ...old,\n ...newColumnSizing\n }));\n }\n };\n const onMove = clientXPos => updateOffset('move', clientXPos);\n const onEnd = clientXPos => {\n updateOffset('end', clientXPos);\n table.setColumnSizingInfo(old => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: []\n }));\n };\n const mouseEvents = {\n moveHandler: e => onMove(e.clientX),\n upHandler: e => {\n document.removeEventListener('mousemove', mouseEvents.moveHandler);\n document.removeEventListener('mouseup', mouseEvents.upHandler);\n onEnd(e.clientX);\n }\n };\n const touchEvents = {\n moveHandler: e => {\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onMove(e.touches[0].clientX);\n return false;\n },\n upHandler: e => {\n var _e$touches$;\n document.removeEventListener('touchmove', touchEvents.moveHandler);\n document.removeEventListener('touchend', touchEvents.upHandler);\n if (e.cancelable) {\n e.preventDefault();\n e.stopPropagation();\n }\n onEnd((_e$touches$ = e.touches[0]) == null ? void 0 : _e$touches$.clientX);\n }\n };\n const passiveIfSupported = passiveEventSupported() ? {\n passive: false\n } : false;\n if (isTouchStartEvent(e)) {\n document.addEventListener('touchmove', touchEvents.moveHandler, passiveIfSupported);\n document.addEventListener('touchend', touchEvents.upHandler, passiveIfSupported);\n } else {\n document.addEventListener('mousemove', mouseEvents.moveHandler, passiveIfSupported);\n document.addEventListener('mouseup', mouseEvents.upHandler, passiveIfSupported);\n }\n table.setColumnSizingInfo(old => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id\n }));\n };\n };\n },\n createTable: table => {\n table.setColumnSizing = updater => table.options.onColumnSizingChange == null ? void 0 : table.options.onColumnSizingChange(updater);\n table.setColumnSizingInfo = updater => table.options.onColumnSizingInfoChange == null ? void 0 : table.options.onColumnSizingInfoChange(updater);\n table.resetColumnSizing = defaultState => {\n var _table$initialState$c;\n table.setColumnSizing(defaultState ? {} : (_table$initialState$c = table.initialState.columnSizing) != null ? _table$initialState$c : {});\n };\n table.resetHeaderSizeInfo = defaultState => {\n var _table$initialState$c2;\n table.setColumnSizingInfo(defaultState ? getDefaultColumnSizingInfoState() : (_table$initialState$c2 = table.initialState.columnSizingInfo) != null ? _table$initialState$c2 : getDefaultColumnSizingInfoState());\n };\n table.getTotalSize = () => {\n var _table$getHeaderGroup, _table$getHeaderGroup2;\n return (_table$getHeaderGroup = (_table$getHeaderGroup2 = table.getHeaderGroups()[0]) == null ? void 0 : _table$getHeaderGroup2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getHeaderGroup : 0;\n };\n table.getLeftTotalSize = () => {\n var _table$getLeftHeaderG, _table$getLeftHeaderG2;\n return (_table$getLeftHeaderG = (_table$getLeftHeaderG2 = table.getLeftHeaderGroups()[0]) == null ? void 0 : _table$getLeftHeaderG2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getLeftHeaderG : 0;\n };\n table.getCenterTotalSize = () => {\n var _table$getCenterHeade, _table$getCenterHeade2;\n return (_table$getCenterHeade = (_table$getCenterHeade2 = table.getCenterHeaderGroups()[0]) == null ? void 0 : _table$getCenterHeade2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getCenterHeade : 0;\n };\n table.getRightTotalSize = () => {\n var _table$getRightHeader, _table$getRightHeader2;\n return (_table$getRightHeader = (_table$getRightHeader2 = table.getRightHeaderGroups()[0]) == null ? void 0 : _table$getRightHeader2.headers.reduce((sum, header) => {\n return sum + header.getSize();\n }, 0)) != null ? _table$getRightHeader : 0;\n };\n }\n};\nlet passiveSupported = null;\nfunction passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported;\n let supported = false;\n try {\n const options = {\n get passive() {\n supported = true;\n return false;\n }\n };\n const noop = () => {};\n window.addEventListener('test', noop, options);\n window.removeEventListener('test', noop);\n } catch (err) {\n supported = false;\n }\n passiveSupported = supported;\n return passiveSupported;\n}\nfunction isTouchStartEvent(e) {\n return e.type === 'touchstart';\n}\n\n//\n\nconst Expanding = {\n getInitialState: state => {\n return {\n expanded: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onExpandedChange: makeStateUpdater('expanded', table),\n paginateExpandedRows: true\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetExpanded = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetExpanded) != null ? _ref : !table.options.manualExpanding) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetExpanded();\n queued = false;\n });\n }\n };\n table.setExpanded = updater => table.options.onExpandedChange == null ? void 0 : table.options.onExpandedChange(updater);\n table.toggleAllRowsExpanded = expanded => {\n if (expanded != null ? expanded : !table.getIsAllRowsExpanded()) {\n table.setExpanded(true);\n } else {\n table.setExpanded({});\n }\n };\n table.resetExpanded = defaultState => {\n var _table$initialState$e, _table$initialState;\n table.setExpanded(defaultState ? {} : (_table$initialState$e = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.expanded) != null ? _table$initialState$e : {});\n };\n table.getCanSomeRowsExpand = () => {\n return table.getPrePaginationRowModel().flatRows.some(row => row.getCanExpand());\n };\n table.getToggleAllRowsExpandedHandler = () => {\n return e => {\n e.persist == null || e.persist();\n table.toggleAllRowsExpanded();\n };\n };\n table.getIsSomeRowsExpanded = () => {\n const expanded = table.getState().expanded;\n return expanded === true || Object.values(expanded).some(Boolean);\n };\n table.getIsAllRowsExpanded = () => {\n const expanded = table.getState().expanded;\n\n // If expanded is true, save some cycles and return true\n if (typeof expanded === 'boolean') {\n return expanded === true;\n }\n if (!Object.keys(expanded).length) {\n return false;\n }\n\n // If any row is not expanded, return false\n if (table.getRowModel().flatRows.some(row => !row.getIsExpanded())) {\n return false;\n }\n\n // They must all be expanded :shrug:\n return true;\n };\n table.getExpandedDepth = () => {\n let maxDepth = 0;\n const rowIds = table.getState().expanded === true ? Object.keys(table.getRowModel().rowsById) : Object.keys(table.getState().expanded);\n rowIds.forEach(id => {\n const splitId = id.split('.');\n maxDepth = Math.max(maxDepth, splitId.length);\n });\n return maxDepth;\n };\n table.getPreExpandedRowModel = () => table.getSortedRowModel();\n table.getExpandedRowModel = () => {\n if (!table._getExpandedRowModel && table.options.getExpandedRowModel) {\n table._getExpandedRowModel = table.options.getExpandedRowModel(table);\n }\n if (table.options.manualExpanding || !table._getExpandedRowModel) {\n return table.getPreExpandedRowModel();\n }\n return table._getExpandedRowModel();\n };\n },\n createRow: (row, table) => {\n row.toggleExpanded = expanded => {\n table.setExpanded(old => {\n var _expanded;\n const exists = old === true ? true : !!(old != null && old[row.id]);\n let oldExpanded = {};\n if (old === true) {\n Object.keys(table.getRowModel().rowsById).forEach(rowId => {\n oldExpanded[rowId] = true;\n });\n } else {\n oldExpanded = old;\n }\n expanded = (_expanded = expanded) != null ? _expanded : !exists;\n if (!exists && expanded) {\n return {\n ...oldExpanded,\n [row.id]: true\n };\n }\n if (exists && !expanded) {\n const {\n [row.id]: _,\n ...rest\n } = oldExpanded;\n return rest;\n }\n return old;\n });\n };\n row.getIsExpanded = () => {\n var _table$options$getIsR;\n const expanded = table.getState().expanded;\n return !!((_table$options$getIsR = table.options.getIsRowExpanded == null ? void 0 : table.options.getIsRowExpanded(row)) != null ? _table$options$getIsR : expanded === true || (expanded == null ? void 0 : expanded[row.id]));\n };\n row.getCanExpand = () => {\n var _table$options$getRow, _table$options$enable, _row$subRows;\n return (_table$options$getRow = table.options.getRowCanExpand == null ? void 0 : table.options.getRowCanExpand(row)) != null ? _table$options$getRow : ((_table$options$enable = table.options.enableExpanding) != null ? _table$options$enable : true) && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n row.getIsAllParentsExpanded = () => {\n let isFullyExpanded = true;\n let currentRow = row;\n while (isFullyExpanded && currentRow.parentId) {\n currentRow = table.getRow(currentRow.parentId, true);\n isFullyExpanded = currentRow.getIsExpanded();\n }\n return isFullyExpanded;\n };\n row.getToggleExpandedHandler = () => {\n const canExpand = row.getCanExpand();\n return () => {\n if (!canExpand) return;\n row.toggleExpanded();\n };\n };\n }\n};\n\nconst includesString = (row, columnId, filterValue) => {\n var _row$getValue;\n const search = filterValue.toLowerCase();\n return Boolean((_row$getValue = row.getValue(columnId)) == null || (_row$getValue = _row$getValue.toString()) == null || (_row$getValue = _row$getValue.toLowerCase()) == null ? void 0 : _row$getValue.includes(search));\n};\nincludesString.autoRemove = val => testFalsey(val);\nconst includesStringSensitive = (row, columnId, filterValue) => {\n var _row$getValue2;\n return Boolean((_row$getValue2 = row.getValue(columnId)) == null || (_row$getValue2 = _row$getValue2.toString()) == null ? void 0 : _row$getValue2.includes(filterValue));\n};\nincludesStringSensitive.autoRemove = val => testFalsey(val);\nconst equalsString = (row, columnId, filterValue) => {\n var _row$getValue3;\n return ((_row$getValue3 = row.getValue(columnId)) == null || (_row$getValue3 = _row$getValue3.toString()) == null ? void 0 : _row$getValue3.toLowerCase()) === (filterValue == null ? void 0 : filterValue.toLowerCase());\n};\nequalsString.autoRemove = val => testFalsey(val);\nconst arrIncludes = (row, columnId, filterValue) => {\n var _row$getValue4;\n return (_row$getValue4 = row.getValue(columnId)) == null ? void 0 : _row$getValue4.includes(filterValue);\n};\narrIncludes.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesAll = (row, columnId, filterValue) => {\n return !filterValue.some(val => {\n var _row$getValue5;\n return !((_row$getValue5 = row.getValue(columnId)) != null && _row$getValue5.includes(val));\n });\n};\narrIncludesAll.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst arrIncludesSome = (row, columnId, filterValue) => {\n return filterValue.some(val => {\n var _row$getValue6;\n return (_row$getValue6 = row.getValue(columnId)) == null ? void 0 : _row$getValue6.includes(val);\n });\n};\narrIncludesSome.autoRemove = val => testFalsey(val) || !(val != null && val.length);\nconst equals = (row, columnId, filterValue) => {\n return row.getValue(columnId) === filterValue;\n};\nequals.autoRemove = val => testFalsey(val);\nconst weakEquals = (row, columnId, filterValue) => {\n return row.getValue(columnId) == filterValue;\n};\nweakEquals.autoRemove = val => testFalsey(val);\nconst inNumberRange = (row, columnId, filterValue) => {\n let [min, max] = filterValue;\n const rowValue = row.getValue(columnId);\n return rowValue >= min && rowValue <= max;\n};\ninNumberRange.resolveFilterValue = val => {\n let [unsafeMin, unsafeMax] = val;\n let parsedMin = typeof unsafeMin !== 'number' ? parseFloat(unsafeMin) : unsafeMin;\n let parsedMax = typeof unsafeMax !== 'number' ? parseFloat(unsafeMax) : unsafeMax;\n let min = unsafeMin === null || Number.isNaN(parsedMin) ? -Infinity : parsedMin;\n let max = unsafeMax === null || Number.isNaN(parsedMax) ? Infinity : parsedMax;\n if (min > max) {\n const temp = min;\n min = max;\n max = temp;\n }\n return [min, max];\n};\ninNumberRange.autoRemove = val => testFalsey(val) || testFalsey(val[0]) && testFalsey(val[1]);\n\n// Export\n\nconst filterFns = {\n includesString,\n includesStringSensitive,\n equalsString,\n arrIncludes,\n arrIncludesAll,\n arrIncludesSome,\n equals,\n weakEquals,\n inNumberRange\n};\n// Utils\n\nfunction testFalsey(val) {\n return val === undefined || val === null || val === '';\n}\n\n//\n\nconst Filters = {\n getDefaultColumnDef: () => {\n return {\n filterFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n columnFilters: [],\n globalFilter: undefined,\n // filtersProgress: 1,\n // facetProgress: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnFiltersChange: makeStateUpdater('columnFilters', table),\n onGlobalFilterChange: makeStateUpdater('globalFilter', table),\n filterFromLeafRows: false,\n maxLeafRowFilterDepth: 100,\n globalFilterFn: 'auto',\n getColumnCanGlobalFilter: column => {\n var _table$getCoreRowMode;\n const value = (_table$getCoreRowMode = table.getCoreRowModel().flatRows[0]) == null || (_table$getCoreRowMode = _table$getCoreRowMode._getAllCellsByColumnId()[column.id]) == null ? void 0 : _table$getCoreRowMode.getValue();\n return typeof value === 'string' || typeof value === 'number';\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoFilterFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return filterFns.includesString;\n }\n if (typeof value === 'number') {\n return filterFns.inNumberRange;\n }\n if (typeof value === 'boolean') {\n return filterFns.equals;\n }\n if (value !== null && typeof value === 'object') {\n return filterFns.equals;\n }\n if (Array.isArray(value)) {\n return filterFns.arrIncludes;\n }\n return filterFns.weakEquals;\n };\n column.getFilterFn = () => {\n var _table$options$filter, _table$options$filter2;\n return isFunction(column.columnDef.filterFn) ? column.columnDef.filterFn : column.columnDef.filterFn === 'auto' ? column.getAutoFilterFn() : // @ts-ignore\n (_table$options$filter = (_table$options$filter2 = table.options.filterFns) == null ? void 0 : _table$options$filter2[column.columnDef.filterFn]) != null ? _table$options$filter : filterFns[column.columnDef.filterFn];\n };\n column.getCanFilter = () => {\n var _column$columnDef$ena, _table$options$enable, _table$options$enable2;\n return ((_column$columnDef$ena = column.columnDef.enableColumnFilter) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableColumnFilters) != null ? _table$options$enable : true) && ((_table$options$enable2 = table.options.enableFilters) != null ? _table$options$enable2 : true) && !!column.accessorFn;\n };\n column.getCanGlobalFilter = () => {\n var _column$columnDef$ena2, _table$options$enable3, _table$options$enable4, _table$options$getCol;\n return ((_column$columnDef$ena2 = column.columnDef.enableGlobalFilter) != null ? _column$columnDef$ena2 : true) && ((_table$options$enable3 = table.options.enableGlobalFilter) != null ? _table$options$enable3 : true) && ((_table$options$enable4 = table.options.enableFilters) != null ? _table$options$enable4 : true) && ((_table$options$getCol = table.options.getColumnCanGlobalFilter == null ? void 0 : table.options.getColumnCanGlobalFilter(column)) != null ? _table$options$getCol : true) && !!column.accessorFn;\n };\n column.getIsFiltered = () => column.getFilterIndex() > -1;\n column.getFilterValue = () => {\n var _table$getState$colum;\n return (_table$getState$colum = table.getState().columnFilters) == null || (_table$getState$colum = _table$getState$colum.find(d => d.id === column.id)) == null ? void 0 : _table$getState$colum.value;\n };\n column.getFilterIndex = () => {\n var _table$getState$colum2, _table$getState$colum3;\n return (_table$getState$colum2 = (_table$getState$colum3 = table.getState().columnFilters) == null ? void 0 : _table$getState$colum3.findIndex(d => d.id === column.id)) != null ? _table$getState$colum2 : -1;\n };\n column.setFilterValue = value => {\n table.setColumnFilters(old => {\n const filterFn = column.getFilterFn();\n const previousfilter = old == null ? void 0 : old.find(d => d.id === column.id);\n const newFilter = functionalUpdate(value, previousfilter ? previousfilter.value : undefined);\n\n //\n if (shouldAutoRemoveFilter(filterFn, newFilter, column)) {\n var _old$filter;\n return (_old$filter = old == null ? void 0 : old.filter(d => d.id !== column.id)) != null ? _old$filter : [];\n }\n const newFilterObj = {\n id: column.id,\n value: newFilter\n };\n if (previousfilter) {\n var _old$map;\n return (_old$map = old == null ? void 0 : old.map(d => {\n if (d.id === column.id) {\n return newFilterObj;\n }\n return d;\n })) != null ? _old$map : [];\n }\n if (old != null && old.length) {\n return [...old, newFilterObj];\n }\n return [newFilterObj];\n });\n };\n column._getFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, column.id);\n column.getFacetedRowModel = () => {\n if (!column._getFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return column._getFacetedRowModel();\n };\n column._getFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, column.id);\n column.getFacetedUniqueValues = () => {\n if (!column._getFacetedUniqueValues) {\n return new Map();\n }\n return column._getFacetedUniqueValues();\n };\n column._getFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, column.id);\n column.getFacetedMinMaxValues = () => {\n if (!column._getFacetedMinMaxValues) {\n return undefined;\n }\n return column._getFacetedMinMaxValues();\n };\n // () => [column.getFacetedRowModel()],\n // facetedRowModel => getRowModelMinMaxValues(facetedRowModel, column.id),\n },\n\n createRow: (row, table) => {\n row.columnFilters = {};\n row.columnFiltersMeta = {};\n },\n createTable: table => {\n table.getGlobalAutoFilterFn = () => {\n return filterFns.includesString;\n };\n table.getGlobalFilterFn = () => {\n var _table$options$filter3, _table$options$filter4;\n const {\n globalFilterFn: globalFilterFn\n } = table.options;\n return isFunction(globalFilterFn) ? globalFilterFn : globalFilterFn === 'auto' ? table.getGlobalAutoFilterFn() : // @ts-ignore\n (_table$options$filter3 = (_table$options$filter4 = table.options.filterFns) == null ? void 0 : _table$options$filter4[globalFilterFn]) != null ? _table$options$filter3 : filterFns[globalFilterFn];\n };\n table.setColumnFilters = updater => {\n const leafColumns = table.getAllLeafColumns();\n const updateFn = old => {\n var _functionalUpdate;\n return (_functionalUpdate = functionalUpdate(updater, old)) == null ? void 0 : _functionalUpdate.filter(filter => {\n const column = leafColumns.find(d => d.id === filter.id);\n if (column) {\n const filterFn = column.getFilterFn();\n if (shouldAutoRemoveFilter(filterFn, filter.value, column)) {\n return false;\n }\n }\n return true;\n });\n };\n table.options.onColumnFiltersChange == null || table.options.onColumnFiltersChange(updateFn);\n };\n table.setGlobalFilter = updater => {\n table.options.onGlobalFilterChange == null || table.options.onGlobalFilterChange(updater);\n };\n table.resetGlobalFilter = defaultState => {\n table.setGlobalFilter(defaultState ? undefined : table.initialState.globalFilter);\n };\n table.resetColumnFilters = defaultState => {\n var _table$initialState$c, _table$initialState;\n table.setColumnFilters(defaultState ? [] : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnFilters) != null ? _table$initialState$c : []);\n };\n table.getPreFilteredRowModel = () => table.getCoreRowModel();\n table.getFilteredRowModel = () => {\n if (!table._getFilteredRowModel && table.options.getFilteredRowModel) {\n table._getFilteredRowModel = table.options.getFilteredRowModel(table);\n }\n if (table.options.manualFiltering || !table._getFilteredRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getFilteredRowModel();\n };\n table._getGlobalFacetedRowModel = table.options.getFacetedRowModel && table.options.getFacetedRowModel(table, '__global__');\n table.getGlobalFacetedRowModel = () => {\n if (table.options.manualFiltering || !table._getGlobalFacetedRowModel) {\n return table.getPreFilteredRowModel();\n }\n return table._getGlobalFacetedRowModel();\n };\n table._getGlobalFacetedUniqueValues = table.options.getFacetedUniqueValues && table.options.getFacetedUniqueValues(table, '__global__');\n table.getGlobalFacetedUniqueValues = () => {\n if (!table._getGlobalFacetedUniqueValues) {\n return new Map();\n }\n return table._getGlobalFacetedUniqueValues();\n };\n table._getGlobalFacetedMinMaxValues = table.options.getFacetedMinMaxValues && table.options.getFacetedMinMaxValues(table, '__global__');\n table.getGlobalFacetedMinMaxValues = () => {\n if (!table._getGlobalFacetedMinMaxValues) {\n return;\n }\n return table._getGlobalFacetedMinMaxValues();\n };\n }\n};\nfunction shouldAutoRemoveFilter(filterFn, value, column) {\n return (filterFn && filterFn.autoRemove ? filterFn.autoRemove(value, column) : false) || typeof value === 'undefined' || typeof value === 'string' && !value;\n}\n\nconst sum = (columnId, _leafRows, childRows) => {\n // It's faster to just add the aggregations together instead of\n // process leaf nodes individually\n return childRows.reduce((sum, next) => {\n const nextValue = next.getValue(columnId);\n return sum + (typeof nextValue === 'number' ? nextValue : 0);\n }, 0);\n};\nconst min = (columnId, _leafRows, childRows) => {\n let min;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (min > value || min === undefined && value >= value)) {\n min = value;\n }\n });\n return min;\n};\nconst max = (columnId, _leafRows, childRows) => {\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null && (max < value || max === undefined && value >= value)) {\n max = value;\n }\n });\n return max;\n};\nconst extent = (columnId, _leafRows, childRows) => {\n let min;\n let max;\n childRows.forEach(row => {\n const value = row.getValue(columnId);\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n });\n return [min, max];\n};\nconst mean = (columnId, leafRows) => {\n let count = 0;\n let sum = 0;\n leafRows.forEach(row => {\n let value = row.getValue(columnId);\n if (value != null && (value = +value) >= value) {\n ++count, sum += value;\n }\n });\n if (count) return sum / count;\n return;\n};\nconst median = (columnId, leafRows) => {\n if (!leafRows.length) {\n return;\n }\n const values = leafRows.map(row => row.getValue(columnId));\n if (!isNumberArray(values)) {\n return;\n }\n if (values.length === 1) {\n return values[0];\n }\n const mid = Math.floor(values.length / 2);\n const nums = values.sort((a, b) => a - b);\n return values.length % 2 !== 0 ? nums[mid] : (nums[mid - 1] + nums[mid]) / 2;\n};\nconst unique = (columnId, leafRows) => {\n return Array.from(new Set(leafRows.map(d => d.getValue(columnId))).values());\n};\nconst uniqueCount = (columnId, leafRows) => {\n return new Set(leafRows.map(d => d.getValue(columnId))).size;\n};\nconst count = (_columnId, leafRows) => {\n return leafRows.length;\n};\nconst aggregationFns = {\n sum,\n min,\n max,\n extent,\n mean,\n median,\n unique,\n uniqueCount,\n count\n};\n\n//\n\nconst Grouping = {\n getDefaultColumnDef: () => {\n return {\n aggregatedCell: props => {\n var _toString, _props$getValue;\n return (_toString = (_props$getValue = props.getValue()) == null || _props$getValue.toString == null ? void 0 : _props$getValue.toString()) != null ? _toString : null;\n },\n aggregationFn: 'auto'\n };\n },\n getInitialState: state => {\n return {\n grouping: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onGroupingChange: makeStateUpdater('grouping', table),\n groupedColumnMode: 'reorder'\n };\n },\n createColumn: (column, table) => {\n column.toggleGrouping = () => {\n table.setGrouping(old => {\n // Find any existing grouping for this column\n if (old != null && old.includes(column.id)) {\n return old.filter(d => d !== column.id);\n }\n return [...(old != null ? old : []), column.id];\n });\n };\n column.getCanGroup = () => {\n var _ref, _ref2, _ref3, _column$columnDef$ena;\n return (_ref = (_ref2 = (_ref3 = (_column$columnDef$ena = column.columnDef.enableGrouping) != null ? _column$columnDef$ena : true) != null ? _ref3 : table.options.enableGrouping) != null ? _ref2 : true) != null ? _ref : !!column.accessorFn;\n };\n column.getIsGrouped = () => {\n var _table$getState$group;\n return (_table$getState$group = table.getState().grouping) == null ? void 0 : _table$getState$group.includes(column.id);\n };\n column.getGroupedIndex = () => {\n var _table$getState$group2;\n return (_table$getState$group2 = table.getState().grouping) == null ? void 0 : _table$getState$group2.indexOf(column.id);\n };\n column.getToggleGroupingHandler = () => {\n const canGroup = column.getCanGroup();\n return () => {\n if (!canGroup) return;\n column.toggleGrouping();\n };\n };\n column.getAutoAggregationFn = () => {\n const firstRow = table.getCoreRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'number') {\n return aggregationFns.sum;\n }\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return aggregationFns.extent;\n }\n };\n column.getAggregationFn = () => {\n var _table$options$aggreg, _table$options$aggreg2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.aggregationFn) ? column.columnDef.aggregationFn : column.columnDef.aggregationFn === 'auto' ? column.getAutoAggregationFn() : (_table$options$aggreg = (_table$options$aggreg2 = table.options.aggregationFns) == null ? void 0 : _table$options$aggreg2[column.columnDef.aggregationFn]) != null ? _table$options$aggreg : aggregationFns[column.columnDef.aggregationFn];\n };\n },\n createTable: table => {\n table.setGrouping = updater => table.options.onGroupingChange == null ? void 0 : table.options.onGroupingChange(updater);\n table.resetGrouping = defaultState => {\n var _table$initialState$g, _table$initialState;\n table.setGrouping(defaultState ? [] : (_table$initialState$g = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.grouping) != null ? _table$initialState$g : []);\n };\n table.getPreGroupedRowModel = () => table.getFilteredRowModel();\n table.getGroupedRowModel = () => {\n if (!table._getGroupedRowModel && table.options.getGroupedRowModel) {\n table._getGroupedRowModel = table.options.getGroupedRowModel(table);\n }\n if (table.options.manualGrouping || !table._getGroupedRowModel) {\n return table.getPreGroupedRowModel();\n }\n return table._getGroupedRowModel();\n };\n },\n createRow: (row, table) => {\n row.getIsGrouped = () => !!row.groupingColumnId;\n row.getGroupingValue = columnId => {\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.columnDef.getGroupingValue)) {\n return row.getValue(columnId);\n }\n row._groupingValuesCache[columnId] = column.columnDef.getGroupingValue(row.original);\n return row._groupingValuesCache[columnId];\n };\n row._groupingValuesCache = {};\n },\n createCell: (cell, column, row, table) => {\n cell.getIsGrouped = () => column.getIsGrouped() && column.id === row.groupingColumnId;\n cell.getIsPlaceholder = () => !cell.getIsGrouped() && column.getIsGrouped();\n cell.getIsAggregated = () => {\n var _row$subRows;\n return !cell.getIsGrouped() && !cell.getIsPlaceholder() && !!((_row$subRows = row.subRows) != null && _row$subRows.length);\n };\n }\n};\nfunction orderColumns(leafColumns, grouping, groupedColumnMode) {\n if (!(grouping != null && grouping.length) || !groupedColumnMode) {\n return leafColumns;\n }\n const nonGroupingColumns = leafColumns.filter(col => !grouping.includes(col.id));\n if (groupedColumnMode === 'remove') {\n return nonGroupingColumns;\n }\n const groupingColumns = grouping.map(g => leafColumns.find(col => col.id === g)).filter(Boolean);\n return [...groupingColumns, ...nonGroupingColumns];\n}\n\n//\n\nconst Ordering = {\n getInitialState: state => {\n return {\n columnOrder: [],\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnOrderChange: makeStateUpdater('columnOrder', table)\n };\n },\n createTable: table => {\n table.setColumnOrder = updater => table.options.onColumnOrderChange == null ? void 0 : table.options.onColumnOrderChange(updater);\n table.resetColumnOrder = defaultState => {\n var _table$initialState$c;\n table.setColumnOrder(defaultState ? [] : (_table$initialState$c = table.initialState.columnOrder) != null ? _table$initialState$c : []);\n };\n table._getOrderColumnsFn = memo(() => [table.getState().columnOrder, table.getState().grouping, table.options.groupedColumnMode], (columnOrder, grouping, groupedColumnMode) => columns => {\n // Sort grouped columns to the start of the column list\n // before the headers are built\n let orderedColumns = [];\n\n // If there is no order, return the normal columns\n if (!(columnOrder != null && columnOrder.length)) {\n orderedColumns = columns;\n } else {\n const columnOrderCopy = [...columnOrder];\n\n // If there is an order, make a copy of the columns\n const columnsCopy = [...columns];\n\n // And make a new ordered array of the columns\n\n // Loop over the columns and place them in order into the new array\n while (columnsCopy.length && columnOrderCopy.length) {\n const targetColumnId = columnOrderCopy.shift();\n const foundIndex = columnsCopy.findIndex(d => d.id === targetColumnId);\n if (foundIndex > -1) {\n orderedColumns.push(columnsCopy.splice(foundIndex, 1)[0]);\n }\n }\n\n // If there are any columns left, add them to the end\n orderedColumns = [...orderedColumns, ...columnsCopy];\n }\n return orderColumns(orderedColumns, grouping, groupedColumnMode);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getOrderColumnsFn'\n // debug: () => table.options.debugAll ?? table.options.debugTable,\n });\n }\n};\n\n//\n\nconst defaultPageIndex = 0;\nconst defaultPageSize = 10;\nconst getDefaultPaginationState = () => ({\n pageIndex: defaultPageIndex,\n pageSize: defaultPageSize\n});\nconst Pagination = {\n getInitialState: state => {\n return {\n ...state,\n pagination: {\n ...getDefaultPaginationState(),\n ...(state == null ? void 0 : state.pagination)\n }\n };\n },\n getDefaultOptions: table => {\n return {\n onPaginationChange: makeStateUpdater('pagination', table)\n };\n },\n createTable: table => {\n let registered = false;\n let queued = false;\n table._autoResetPageIndex = () => {\n var _ref, _table$options$autoRe;\n if (!registered) {\n table._queue(() => {\n registered = true;\n });\n return;\n }\n if ((_ref = (_table$options$autoRe = table.options.autoResetAll) != null ? _table$options$autoRe : table.options.autoResetPageIndex) != null ? _ref : !table.options.manualPagination) {\n if (queued) return;\n queued = true;\n table._queue(() => {\n table.resetPageIndex();\n queued = false;\n });\n }\n };\n table.setPagination = updater => {\n const safeUpdater = old => {\n let newState = functionalUpdate(updater, old);\n return newState;\n };\n return table.options.onPaginationChange == null ? void 0 : table.options.onPaginationChange(safeUpdater);\n };\n table.resetPagination = defaultState => {\n var _table$initialState$p;\n table.setPagination(defaultState ? getDefaultPaginationState() : (_table$initialState$p = table.initialState.pagination) != null ? _table$initialState$p : getDefaultPaginationState());\n };\n table.setPageIndex = updater => {\n table.setPagination(old => {\n let pageIndex = functionalUpdate(updater, old.pageIndex);\n const maxPageIndex = typeof table.options.pageCount === 'undefined' || table.options.pageCount === -1 ? Number.MAX_SAFE_INTEGER : table.options.pageCount - 1;\n pageIndex = Math.max(0, Math.min(pageIndex, maxPageIndex));\n return {\n ...old,\n pageIndex\n };\n });\n };\n table.resetPageIndex = defaultState => {\n var _table$initialState$p2, _table$initialState;\n table.setPageIndex(defaultState ? defaultPageIndex : (_table$initialState$p2 = (_table$initialState = table.initialState) == null || (_table$initialState = _table$initialState.pagination) == null ? void 0 : _table$initialState.pageIndex) != null ? _table$initialState$p2 : defaultPageIndex);\n };\n table.resetPageSize = defaultState => {\n var _table$initialState$p3, _table$initialState2;\n table.setPageSize(defaultState ? defaultPageSize : (_table$initialState$p3 = (_table$initialState2 = table.initialState) == null || (_table$initialState2 = _table$initialState2.pagination) == null ? void 0 : _table$initialState2.pageSize) != null ? _table$initialState$p3 : defaultPageSize);\n };\n table.setPageSize = updater => {\n table.setPagination(old => {\n const pageSize = Math.max(1, functionalUpdate(updater, old.pageSize));\n const topRowIndex = old.pageSize * old.pageIndex;\n const pageIndex = Math.floor(topRowIndex / pageSize);\n return {\n ...old,\n pageIndex,\n pageSize\n };\n });\n };\n table.setPageCount = updater => table.setPagination(old => {\n var _table$options$pageCo;\n let newPageCount = functionalUpdate(updater, (_table$options$pageCo = table.options.pageCount) != null ? _table$options$pageCo : -1);\n if (typeof newPageCount === 'number') {\n newPageCount = Math.max(-1, newPageCount);\n }\n return {\n ...old,\n pageCount: newPageCount\n };\n });\n table.getPageOptions = memo(() => [table.getPageCount()], pageCount => {\n let pageOptions = [];\n if (pageCount && pageCount > 0) {\n pageOptions = [...new Array(pageCount)].fill(null).map((_, i) => i);\n }\n return pageOptions;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPageOptions',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n table.getCanPreviousPage = () => table.getState().pagination.pageIndex > 0;\n table.getCanNextPage = () => {\n const {\n pageIndex\n } = table.getState().pagination;\n const pageCount = table.getPageCount();\n if (pageCount === -1) {\n return true;\n }\n if (pageCount === 0) {\n return false;\n }\n return pageIndex < pageCount - 1;\n };\n table.previousPage = () => {\n return table.setPageIndex(old => old - 1);\n };\n table.nextPage = () => {\n return table.setPageIndex(old => {\n return old + 1;\n });\n };\n table.getPrePaginationRowModel = () => table.getExpandedRowModel();\n table.getPaginationRowModel = () => {\n if (!table._getPaginationRowModel && table.options.getPaginationRowModel) {\n table._getPaginationRowModel = table.options.getPaginationRowModel(table);\n }\n if (table.options.manualPagination || !table._getPaginationRowModel) {\n return table.getPrePaginationRowModel();\n }\n return table._getPaginationRowModel();\n };\n table.getPageCount = () => {\n var _table$options$pageCo2;\n return (_table$options$pageCo2 = table.options.pageCount) != null ? _table$options$pageCo2 : Math.ceil(table.getPrePaginationRowModel().rows.length / table.getState().pagination.pageSize);\n };\n }\n};\n\n//\n\nconst getDefaultColumnPinningState = () => ({\n left: [],\n right: []\n});\nconst getDefaultRowPinningState = () => ({\n top: [],\n bottom: []\n});\nconst Pinning = {\n getInitialState: state => {\n return {\n columnPinning: getDefaultColumnPinningState(),\n rowPinning: getDefaultRowPinningState(),\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnPinningChange: makeStateUpdater('columnPinning', table),\n onRowPinningChange: makeStateUpdater('rowPinning', table)\n };\n },\n createColumn: (column, table) => {\n column.pin = position => {\n const columnIds = column.getLeafColumns().map(d => d.id).filter(Boolean);\n table.setColumnPinning(old => {\n var _old$left3, _old$right3;\n if (position === 'right') {\n var _old$left, _old$right;\n return {\n left: ((_old$left = old == null ? void 0 : old.left) != null ? _old$left : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: [...((_old$right = old == null ? void 0 : old.right) != null ? _old$right : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds]\n };\n }\n if (position === 'left') {\n var _old$left2, _old$right2;\n return {\n left: [...((_old$left2 = old == null ? void 0 : old.left) != null ? _old$left2 : []).filter(d => !(columnIds != null && columnIds.includes(d))), ...columnIds],\n right: ((_old$right2 = old == null ? void 0 : old.right) != null ? _old$right2 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n }\n return {\n left: ((_old$left3 = old == null ? void 0 : old.left) != null ? _old$left3 : []).filter(d => !(columnIds != null && columnIds.includes(d))),\n right: ((_old$right3 = old == null ? void 0 : old.right) != null ? _old$right3 : []).filter(d => !(columnIds != null && columnIds.includes(d)))\n };\n });\n };\n column.getCanPin = () => {\n const leafColumns = column.getLeafColumns();\n return leafColumns.some(d => {\n var _d$columnDef$enablePi, _ref, _table$options$enable;\n return ((_d$columnDef$enablePi = d.columnDef.enablePinning) != null ? _d$columnDef$enablePi : true) && ((_ref = (_table$options$enable = table.options.enableColumnPinning) != null ? _table$options$enable : table.options.enablePinning) != null ? _ref : true);\n });\n };\n column.getIsPinned = () => {\n const leafColumnIds = column.getLeafColumns().map(d => d.id);\n const {\n left,\n right\n } = table.getState().columnPinning;\n const isLeft = leafColumnIds.some(d => left == null ? void 0 : left.includes(d));\n const isRight = leafColumnIds.some(d => right == null ? void 0 : right.includes(d));\n return isLeft ? 'left' : isRight ? 'right' : false;\n };\n column.getPinnedIndex = () => {\n var _table$getState$colum, _table$getState$colum2;\n const position = column.getIsPinned();\n return position ? (_table$getState$colum = (_table$getState$colum2 = table.getState().columnPinning) == null || (_table$getState$colum2 = _table$getState$colum2[position]) == null ? void 0 : _table$getState$colum2.indexOf(column.id)) != null ? _table$getState$colum : -1 : 0;\n };\n },\n createRow: (row, table) => {\n row.pin = (position, includeLeafRows, includeParentRows) => {\n const leafRowIds = includeLeafRows ? row.getLeafRows().map(_ref2 => {\n let {\n id\n } = _ref2;\n return id;\n }) : [];\n const parentRowIds = includeParentRows ? row.getParentRows().map(_ref3 => {\n let {\n id\n } = _ref3;\n return id;\n }) : [];\n const rowIds = new Set([...parentRowIds, row.id, ...leafRowIds]);\n table.setRowPinning(old => {\n var _old$top3, _old$bottom3;\n if (position === 'bottom') {\n var _old$top, _old$bottom;\n return {\n top: ((_old$top = old == null ? void 0 : old.top) != null ? _old$top : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: [...((_old$bottom = old == null ? void 0 : old.bottom) != null ? _old$bottom : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)]\n };\n }\n if (position === 'top') {\n var _old$top2, _old$bottom2;\n return {\n top: [...((_old$top2 = old == null ? void 0 : old.top) != null ? _old$top2 : []).filter(d => !(rowIds != null && rowIds.has(d))), ...Array.from(rowIds)],\n bottom: ((_old$bottom2 = old == null ? void 0 : old.bottom) != null ? _old$bottom2 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n }\n return {\n top: ((_old$top3 = old == null ? void 0 : old.top) != null ? _old$top3 : []).filter(d => !(rowIds != null && rowIds.has(d))),\n bottom: ((_old$bottom3 = old == null ? void 0 : old.bottom) != null ? _old$bottom3 : []).filter(d => !(rowIds != null && rowIds.has(d)))\n };\n });\n };\n row.getCanPin = () => {\n var _ref4;\n const {\n enableRowPinning,\n enablePinning\n } = table.options;\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row);\n }\n return (_ref4 = enableRowPinning != null ? enableRowPinning : enablePinning) != null ? _ref4 : true;\n };\n row.getIsPinned = () => {\n const rowIds = [row.id];\n const {\n top,\n bottom\n } = table.getState().rowPinning;\n const isTop = rowIds.some(d => top == null ? void 0 : top.includes(d));\n const isBottom = rowIds.some(d => bottom == null ? void 0 : bottom.includes(d));\n return isTop ? 'top' : isBottom ? 'bottom' : false;\n };\n row.getPinnedIndex = () => {\n var _table$_getPinnedRows, _visiblePinnedRowIds$;\n const position = row.getIsPinned();\n if (!position) return -1;\n const visiblePinnedRowIds = (_table$_getPinnedRows = table._getPinnedRows(position)) == null ? void 0 : _table$_getPinnedRows.map(_ref5 => {\n let {\n id\n } = _ref5;\n return id;\n });\n return (_visiblePinnedRowIds$ = visiblePinnedRowIds == null ? void 0 : visiblePinnedRowIds.indexOf(row.id)) != null ? _visiblePinnedRowIds$ : -1;\n };\n row.getCenterVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allCells, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allCells.filter(d => !leftAndRight.includes(d.column.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getCenterVisibleCells',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\n });\n row.getLeftVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.left,,], (allCells, left) => {\n const cells = (left != null ? left : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'left'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getLeftVisibleCells',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n });\n row.getRightVisibleCells = memo(() => [row._getAllVisibleCells(), table.getState().columnPinning.right], (allCells, right) => {\n const cells = (right != null ? right : []).map(columnId => allCells.find(cell => cell.column.id === columnId)).filter(Boolean).map(d => ({\n ...d,\n position: 'right'\n }));\n return cells;\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getRightVisibleCells',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugRows;\n }\n });\n },\n createTable: table => {\n table.setColumnPinning = updater => table.options.onColumnPinningChange == null ? void 0 : table.options.onColumnPinningChange(updater);\n table.resetColumnPinning = defaultState => {\n var _table$initialState$c, _table$initialState;\n return table.setColumnPinning(defaultState ? getDefaultColumnPinningState() : (_table$initialState$c = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.columnPinning) != null ? _table$initialState$c : getDefaultColumnPinningState());\n };\n table.getIsSomeColumnsPinned = position => {\n var _pinningState$positio;\n const pinningState = table.getState().columnPinning;\n if (!position) {\n var _pinningState$left, _pinningState$right;\n return Boolean(((_pinningState$left = pinningState.left) == null ? void 0 : _pinningState$left.length) || ((_pinningState$right = pinningState.right) == null ? void 0 : _pinningState$right.length));\n }\n return Boolean((_pinningState$positio = pinningState[position]) == null ? void 0 : _pinningState$positio.length);\n };\n table.getLeftLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left], (allColumns, left) => {\n return (left != null ? left : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getLeftLeafColumns',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\n });\n table.getRightLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.right], (allColumns, right) => {\n return (right != null ? right : []).map(columnId => allColumns.find(column => column.id === columnId)).filter(Boolean);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRightLeafColumns',\n debug: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\n });\n table.getCenterLeafColumns = memo(() => [table.getAllLeafColumns(), table.getState().columnPinning.left, table.getState().columnPinning.right], (allColumns, left, right) => {\n const leftAndRight = [...(left != null ? left : []), ...(right != null ? right : [])];\n return allColumns.filter(d => !leftAndRight.includes(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'getCenterLeafColumns',\n debug: () => {\n var _table$options$debugA6;\n return (_table$options$debugA6 = table.options.debugAll) != null ? _table$options$debugA6 : table.options.debugColumns;\n }\n });\n table.setRowPinning = updater => table.options.onRowPinningChange == null ? void 0 : table.options.onRowPinningChange(updater);\n table.resetRowPinning = defaultState => {\n var _table$initialState$r, _table$initialState2;\n return table.setRowPinning(defaultState ? getDefaultRowPinningState() : (_table$initialState$r = (_table$initialState2 = table.initialState) == null ? void 0 : _table$initialState2.rowPinning) != null ? _table$initialState$r : getDefaultRowPinningState());\n };\n table.getIsSomeRowsPinned = position => {\n var _pinningState$positio2;\n const pinningState = table.getState().rowPinning;\n if (!position) {\n var _pinningState$top, _pinningState$bottom;\n return Boolean(((_pinningState$top = pinningState.top) == null ? void 0 : _pinningState$top.length) || ((_pinningState$bottom = pinningState.bottom) == null ? void 0 : _pinningState$bottom.length));\n }\n return Boolean((_pinningState$positio2 = pinningState[position]) == null ? void 0 : _pinningState$positio2.length);\n };\n table._getPinnedRows = position => memo(() => [table.getRowModel().rows, table.getState().rowPinning[position]], (visibleRows, pinnedRowIds) => {\n var _table$options$keepPi;\n const rows = ((_table$options$keepPi = table.options.keepPinnedRows) != null ? _table$options$keepPi : true) ?\n //get all rows that are pinned even if they would not be otherwise visible\n //account for expanded parent rows, but not pagination or filtering\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => {\n const row = table.getRow(rowId, true);\n return row.getIsAllParentsExpanded() ? row : null;\n }) :\n //else get only visible rows that are pinned\n (pinnedRowIds != null ? pinnedRowIds : []).map(rowId => visibleRows.find(row => row.id === rowId));\n return rows.filter(Boolean).map(d => ({\n ...d,\n position\n }));\n }, {\n key: process.env.NODE_ENV === 'development' && `row.get${position === 'top' ? 'Top' : 'Bottom'}Rows`,\n debug: () => {\n var _table$options$debugA7;\n return (_table$options$debugA7 = table.options.debugAll) != null ? _table$options$debugA7 : table.options.debugRows;\n }\n })();\n table.getTopRows = () => table._getPinnedRows('top');\n table.getBottomRows = () => table._getPinnedRows('bottom');\n table.getCenterRows = memo(() => [table.getRowModel().rows, table.getState().rowPinning.top, table.getState().rowPinning.bottom], (allRows, top, bottom) => {\n const topAndBottom = new Set([...(top != null ? top : []), ...(bottom != null ? bottom : [])]);\n return allRows.filter(d => !topAndBottom.has(d.id));\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getCenterRows',\n debug: () => {\n var _table$options$debugA8;\n return (_table$options$debugA8 = table.options.debugAll) != null ? _table$options$debugA8 : table.options.debugRows;\n }\n });\n }\n};\n\n//\n\nconst RowSelection = {\n getInitialState: state => {\n return {\n rowSelection: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onRowSelectionChange: makeStateUpdater('rowSelection', table),\n enableRowSelection: true,\n enableMultiRowSelection: true,\n enableSubRowSelection: true\n // enableGroupingRowSelection: false,\n // isAdditiveSelectEvent: (e: unknown) => !!e.metaKey,\n // isInclusiveSelectEvent: (e: unknown) => !!e.shiftKey,\n };\n },\n\n createTable: table => {\n table.setRowSelection = updater => table.options.onRowSelectionChange == null ? void 0 : table.options.onRowSelectionChange(updater);\n table.resetRowSelection = defaultState => {\n var _table$initialState$r;\n return table.setRowSelection(defaultState ? {} : (_table$initialState$r = table.initialState.rowSelection) != null ? _table$initialState$r : {});\n };\n table.toggleAllRowsSelected = value => {\n table.setRowSelection(old => {\n value = typeof value !== 'undefined' ? value : !table.getIsAllRowsSelected();\n const rowSelection = {\n ...old\n };\n const preGroupedFlatRows = table.getPreGroupedRowModel().flatRows;\n\n // We don't use `mutateRowIsSelected` here for performance reasons.\n // All of the rows are flat already, so it wouldn't be worth it\n if (value) {\n preGroupedFlatRows.forEach(row => {\n if (!row.getCanSelect()) {\n return;\n }\n rowSelection[row.id] = true;\n });\n } else {\n preGroupedFlatRows.forEach(row => {\n delete rowSelection[row.id];\n });\n }\n return rowSelection;\n });\n };\n table.toggleAllPageRowsSelected = value => table.setRowSelection(old => {\n const resolvedValue = typeof value !== 'undefined' ? value : !table.getIsAllPageRowsSelected();\n const rowSelection = {\n ...old\n };\n table.getRowModel().rows.forEach(row => {\n mutateRowIsSelected(rowSelection, row.id, resolvedValue, true, table);\n });\n return rowSelection;\n });\n\n // addRowSelectionRange: rowId => {\n // const {\n // rows,\n // rowsById,\n // options: { selectGroupingRows, selectSubRows },\n // } = table\n\n // const findSelectedRow = (rows: Row[]) => {\n // let found\n // rows.find(d => {\n // if (d.getIsSelected()) {\n // found = d\n // return true\n // }\n // const subFound = findSelectedRow(d.subRows || [])\n // if (subFound) {\n // found = subFound\n // return true\n // }\n // return false\n // })\n // return found\n // }\n\n // const firstRow = findSelectedRow(rows) || rows[0]\n // const lastRow = rowsById[rowId]\n\n // let include = false\n // const selectedRowIds = {}\n\n // const addRow = (row: Row) => {\n // mutateRowIsSelected(selectedRowIds, row.id, true, {\n // rowsById,\n // selectGroupingRows: selectGroupingRows!,\n // selectSubRows: selectSubRows!,\n // })\n // }\n\n // table.rows.forEach(row => {\n // const isFirstRow = row.id === firstRow.id\n // const isLastRow = row.id === lastRow.id\n\n // if (isFirstRow || isLastRow) {\n // if (!include) {\n // include = true\n // } else if (include) {\n // addRow(row)\n // include = false\n // }\n // }\n\n // if (include) {\n // addRow(row)\n // }\n // })\n\n // table.setRowSelection(selectedRowIds)\n // },\n table.getPreSelectedRowModel = () => table.getCoreRowModel();\n table.getSelectedRowModel = memo(() => [table.getState().rowSelection, table.getCoreRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSelectedRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n table.getFilteredSelectedRowModel = memo(() => [table.getState().rowSelection, table.getFilteredRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getFilteredSelectedRowModel',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugTable;\n }\n });\n table.getGroupedSelectedRowModel = memo(() => [table.getState().rowSelection, table.getSortedRowModel()], (rowSelection, rowModel) => {\n if (!Object.keys(rowSelection).length) {\n return {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n }\n return selectRowsFn(table, rowModel);\n }, {\n key: process.env.NODE_ENV === 'production' && 'getGroupedSelectedRowModel',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugTable;\n }\n });\n\n ///\n\n // getGroupingRowCanSelect: rowId => {\n // const row = table.getRow(rowId)\n\n // if (!row) {\n // throw new Error()\n // }\n\n // if (typeof table.options.enableGroupingRowSelection === 'function') {\n // return table.options.enableGroupingRowSelection(row)\n // }\n\n // return table.options.enableGroupingRowSelection ?? false\n // },\n\n table.getIsAllRowsSelected = () => {\n const preGroupedFlatRows = table.getFilteredRowModel().flatRows;\n const {\n rowSelection\n } = table.getState();\n let isAllRowsSelected = Boolean(preGroupedFlatRows.length && Object.keys(rowSelection).length);\n if (isAllRowsSelected) {\n if (preGroupedFlatRows.some(row => row.getCanSelect() && !rowSelection[row.id])) {\n isAllRowsSelected = false;\n }\n }\n return isAllRowsSelected;\n };\n table.getIsAllPageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows.filter(row => row.getCanSelect());\n const {\n rowSelection\n } = table.getState();\n let isAllPageRowsSelected = !!paginationFlatRows.length;\n if (isAllPageRowsSelected && paginationFlatRows.some(row => !rowSelection[row.id])) {\n isAllPageRowsSelected = false;\n }\n return isAllPageRowsSelected;\n };\n table.getIsSomeRowsSelected = () => {\n var _table$getState$rowSe;\n const totalSelected = Object.keys((_table$getState$rowSe = table.getState().rowSelection) != null ? _table$getState$rowSe : {}).length;\n return totalSelected > 0 && totalSelected < table.getFilteredRowModel().flatRows.length;\n };\n table.getIsSomePageRowsSelected = () => {\n const paginationFlatRows = table.getPaginationRowModel().flatRows;\n return table.getIsAllPageRowsSelected() ? false : paginationFlatRows.filter(row => row.getCanSelect()).some(d => d.getIsSelected() || d.getIsSomeSelected());\n };\n table.getToggleAllRowsSelectedHandler = () => {\n return e => {\n table.toggleAllRowsSelected(e.target.checked);\n };\n };\n table.getToggleAllPageRowsSelectedHandler = () => {\n return e => {\n table.toggleAllPageRowsSelected(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row.toggleSelected = (value, opts) => {\n const isSelected = row.getIsSelected();\n table.setRowSelection(old => {\n var _opts$selectChildren;\n value = typeof value !== 'undefined' ? value : !isSelected;\n if (row.getCanSelect() && isSelected === value) {\n return old;\n }\n const selectedRowIds = {\n ...old\n };\n mutateRowIsSelected(selectedRowIds, row.id, value, (_opts$selectChildren = opts == null ? void 0 : opts.selectChildren) != null ? _opts$selectChildren : true, table);\n return selectedRowIds;\n });\n };\n row.getIsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isRowSelected(row, rowSelection);\n };\n row.getIsSomeSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'some';\n };\n row.getIsAllSubRowsSelected = () => {\n const {\n rowSelection\n } = table.getState();\n return isSubRowSelected(row, rowSelection) === 'all';\n };\n row.getCanSelect = () => {\n var _table$options$enable;\n if (typeof table.options.enableRowSelection === 'function') {\n return table.options.enableRowSelection(row);\n }\n return (_table$options$enable = table.options.enableRowSelection) != null ? _table$options$enable : true;\n };\n row.getCanSelectSubRows = () => {\n var _table$options$enable2;\n if (typeof table.options.enableSubRowSelection === 'function') {\n return table.options.enableSubRowSelection(row);\n }\n return (_table$options$enable2 = table.options.enableSubRowSelection) != null ? _table$options$enable2 : true;\n };\n row.getCanMultiSelect = () => {\n var _table$options$enable3;\n if (typeof table.options.enableMultiRowSelection === 'function') {\n return table.options.enableMultiRowSelection(row);\n }\n return (_table$options$enable3 = table.options.enableMultiRowSelection) != null ? _table$options$enable3 : true;\n };\n row.getToggleSelectedHandler = () => {\n const canSelect = row.getCanSelect();\n return e => {\n var _target;\n if (!canSelect) return;\n row.toggleSelected((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\nconst mutateRowIsSelected = (selectedRowIds, id, value, includeChildren, table) => {\n var _row$subRows;\n const row = table.getRow(id);\n\n // const isGrouped = row.getIsGrouped()\n\n // if ( // TODO: enforce grouping row selection rules\n // !isGrouped ||\n // (isGrouped && table.options.enableGroupingRowSelection)\n // ) {\n if (value) {\n if (!row.getCanMultiSelect()) {\n Object.keys(selectedRowIds).forEach(key => delete selectedRowIds[key]);\n }\n if (row.getCanSelect()) {\n selectedRowIds[id] = true;\n }\n } else {\n delete selectedRowIds[id];\n }\n // }\n\n if (includeChildren && (_row$subRows = row.subRows) != null && _row$subRows.length && row.getCanSelectSubRows()) {\n row.subRows.forEach(row => mutateRowIsSelected(selectedRowIds, row.id, value, includeChildren, table));\n }\n};\nfunction selectRowsFn(table, rowModel) {\n const rowSelection = table.getState().rowSelection;\n const newSelectedFlatRows = [];\n const newSelectedRowsById = {};\n\n // Filters top level and nested rows\n const recurseRows = function (rows, depth) {\n return rows.map(row => {\n var _row$subRows2;\n const isSelected = isRowSelected(row, rowSelection);\n if (isSelected) {\n newSelectedFlatRows.push(row);\n newSelectedRowsById[row.id] = row;\n }\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length) {\n row = {\n ...row,\n subRows: recurseRows(row.subRows)\n };\n }\n if (isSelected) {\n return row;\n }\n }).filter(Boolean);\n };\n return {\n rows: recurseRows(rowModel.rows),\n flatRows: newSelectedFlatRows,\n rowsById: newSelectedRowsById\n };\n}\nfunction isRowSelected(row, selection) {\n var _selection$row$id;\n return (_selection$row$id = selection[row.id]) != null ? _selection$row$id : false;\n}\nfunction isSubRowSelected(row, selection, table) {\n var _row$subRows3;\n if (!((_row$subRows3 = row.subRows) != null && _row$subRows3.length)) return false;\n let allChildrenSelected = true;\n let someSelected = false;\n row.subRows.forEach(subRow => {\n // Bail out early if we know both of these\n if (someSelected && !allChildrenSelected) {\n return;\n }\n if (subRow.getCanSelect()) {\n if (isRowSelected(subRow, selection)) {\n someSelected = true;\n } else {\n allChildrenSelected = false;\n }\n }\n\n // Check row selection of nested subrows\n if (subRow.subRows && subRow.subRows.length) {\n const subRowChildrenSelected = isSubRowSelected(subRow, selection);\n if (subRowChildrenSelected === 'all') {\n someSelected = true;\n } else if (subRowChildrenSelected === 'some') {\n someSelected = true;\n allChildrenSelected = false;\n } else {\n allChildrenSelected = false;\n }\n }\n });\n return allChildrenSelected ? 'all' : someSelected ? 'some' : false;\n}\n\nconst reSplitAlphaNumeric = /([0-9]+)/gm;\nconst alphanumeric = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\nconst alphanumericCaseSensitive = (rowA, rowB, columnId) => {\n return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst text = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());\n};\n\n// The text filter is more basic (less numeric support)\n// but is much faster\nconst textCaseSensitive = (rowA, rowB, columnId) => {\n return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));\n};\nconst datetime = (rowA, rowB, columnId) => {\n const a = rowA.getValue(columnId);\n const b = rowB.getValue(columnId);\n\n // Can handle nullish values\n // Use > and < because == (and ===) doesn't work with\n // Date objects (would require calling getTime()).\n return a > b ? 1 : a < b ? -1 : 0;\n};\nconst basic = (rowA, rowB, columnId) => {\n return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));\n};\n\n// Utils\n\nfunction compareBasic(a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n}\nfunction toString(a) {\n if (typeof a === 'number') {\n if (isNaN(a) || a === Infinity || a === -Infinity) {\n return '';\n }\n return String(a);\n }\n if (typeof a === 'string') {\n return a;\n }\n return '';\n}\n\n// Mixed sorting is slow, but very inclusive of many edge cases.\n// It handles numbers, mixed alphanumeric combinations, and even\n// null, undefined, and Infinity\nfunction compareAlphanumeric(aStr, bStr) {\n // Split on number groups, but keep the delimiter\n // Then remove falsey split values\n const a = aStr.split(reSplitAlphaNumeric).filter(Boolean);\n const b = bStr.split(reSplitAlphaNumeric).filter(Boolean);\n\n // While\n while (a.length && b.length) {\n const aa = a.shift();\n const bb = b.shift();\n const an = parseInt(aa, 10);\n const bn = parseInt(bb, 10);\n const combo = [an, bn].sort();\n\n // Both are string\n if (isNaN(combo[0])) {\n if (aa > bb) {\n return 1;\n }\n if (bb > aa) {\n return -1;\n }\n continue;\n }\n\n // One is a string, one is a number\n if (isNaN(combo[1])) {\n return isNaN(an) ? -1 : 1;\n }\n\n // Both are numbers\n if (an > bn) {\n return 1;\n }\n if (bn > an) {\n return -1;\n }\n }\n return a.length - b.length;\n}\n\n// Exports\n\nconst sortingFns = {\n alphanumeric,\n alphanumericCaseSensitive,\n text,\n textCaseSensitive,\n datetime,\n basic\n};\n\n//\n\nconst Sorting = {\n getInitialState: state => {\n return {\n sorting: [],\n ...state\n };\n },\n getDefaultColumnDef: () => {\n return {\n sortingFn: 'auto',\n sortUndefined: 1\n };\n },\n getDefaultOptions: table => {\n return {\n onSortingChange: makeStateUpdater('sorting', table),\n isMultiSortEvent: e => {\n return e.shiftKey;\n }\n };\n },\n createColumn: (column, table) => {\n column.getAutoSortingFn = () => {\n const firstRows = table.getFilteredRowModel().flatRows.slice(10);\n let isString = false;\n for (const row of firstRows) {\n const value = row == null ? void 0 : row.getValue(column.id);\n if (Object.prototype.toString.call(value) === '[object Date]') {\n return sortingFns.datetime;\n }\n if (typeof value === 'string') {\n isString = true;\n if (value.split(reSplitAlphaNumeric).length > 1) {\n return sortingFns.alphanumeric;\n }\n }\n }\n if (isString) {\n return sortingFns.text;\n }\n return sortingFns.basic;\n };\n column.getAutoSortDir = () => {\n const firstRow = table.getFilteredRowModel().flatRows[0];\n const value = firstRow == null ? void 0 : firstRow.getValue(column.id);\n if (typeof value === 'string') {\n return 'asc';\n }\n return 'desc';\n };\n column.getSortingFn = () => {\n var _table$options$sortin, _table$options$sortin2;\n if (!column) {\n throw new Error();\n }\n return isFunction(column.columnDef.sortingFn) ? column.columnDef.sortingFn : column.columnDef.sortingFn === 'auto' ? column.getAutoSortingFn() : (_table$options$sortin = (_table$options$sortin2 = table.options.sortingFns) == null ? void 0 : _table$options$sortin2[column.columnDef.sortingFn]) != null ? _table$options$sortin : sortingFns[column.columnDef.sortingFn];\n };\n column.toggleSorting = (desc, multi) => {\n // if (column.columns.length) {\n // column.columns.forEach((c, i) => {\n // if (c.id) {\n // table.toggleColumnSorting(c.id, undefined, multi || !!i)\n // }\n // })\n // return\n // }\n\n // this needs to be outside of table.setSorting to be in sync with rerender\n const nextSortingOrder = column.getNextSortingOrder();\n const hasManualValue = typeof desc !== 'undefined' && desc !== null;\n table.setSorting(old => {\n // Find any existing sorting for this column\n const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);\n const existingIndex = old == null ? void 0 : old.findIndex(d => d.id === column.id);\n let newSorting = [];\n\n // What should we do with this sort action?\n let sortAction;\n let nextDesc = hasManualValue ? desc : nextSortingOrder === 'desc';\n\n // Multi-mode\n if (old != null && old.length && column.getCanMultiSort() && multi) {\n if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'add';\n }\n } else {\n // Normal mode\n if (old != null && old.length && existingIndex !== old.length - 1) {\n sortAction = 'replace';\n } else if (existingSorting) {\n sortAction = 'toggle';\n } else {\n sortAction = 'replace';\n }\n }\n\n // Handle toggle states that will remove the sorting\n if (sortAction === 'toggle') {\n // If we are \"actually\" toggling (not a manual set value), should we remove the sorting?\n if (!hasManualValue) {\n // Is our intention to remove?\n if (!nextSortingOrder) {\n sortAction = 'remove';\n }\n }\n }\n if (sortAction === 'add') {\n var _table$options$maxMul;\n newSorting = [...old, {\n id: column.id,\n desc: nextDesc\n }];\n // Take latest n columns\n newSorting.splice(0, newSorting.length - ((_table$options$maxMul = table.options.maxMultiSortColCount) != null ? _table$options$maxMul : Number.MAX_SAFE_INTEGER));\n } else if (sortAction === 'toggle') {\n // This flips (or sets) the\n newSorting = old.map(d => {\n if (d.id === column.id) {\n return {\n ...d,\n desc: nextDesc\n };\n }\n return d;\n });\n } else if (sortAction === 'remove') {\n newSorting = old.filter(d => d.id !== column.id);\n } else {\n newSorting = [{\n id: column.id,\n desc: nextDesc\n }];\n }\n return newSorting;\n });\n };\n column.getFirstSortDir = () => {\n var _ref, _column$columnDef$sor;\n const sortDescFirst = (_ref = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : table.options.sortDescFirst) != null ? _ref : column.getAutoSortDir() === 'desc';\n return sortDescFirst ? 'desc' : 'asc';\n };\n column.getNextSortingOrder = multi => {\n var _table$options$enable, _table$options$enable2;\n const firstSortDirection = column.getFirstSortDir();\n const isSorted = column.getIsSorted();\n if (!isSorted) {\n return firstSortDirection;\n }\n if (isSorted !== firstSortDirection && ((_table$options$enable = table.options.enableSortingRemoval) != null ? _table$options$enable : true) && (\n // If enableSortRemove, enable in general\n multi ? (_table$options$enable2 = table.options.enableMultiRemove) != null ? _table$options$enable2 : true : true) // If multi, don't allow if enableMultiRemove))\n ) {\n return false;\n }\n return isSorted === 'desc' ? 'asc' : 'desc';\n };\n column.getCanSort = () => {\n var _column$columnDef$ena, _table$options$enable3;\n return ((_column$columnDef$ena = column.columnDef.enableSorting) != null ? _column$columnDef$ena : true) && ((_table$options$enable3 = table.options.enableSorting) != null ? _table$options$enable3 : true) && !!column.accessorFn;\n };\n column.getCanMultiSort = () => {\n var _ref2, _column$columnDef$ena2;\n return (_ref2 = (_column$columnDef$ena2 = column.columnDef.enableMultiSort) != null ? _column$columnDef$ena2 : table.options.enableMultiSort) != null ? _ref2 : !!column.accessorFn;\n };\n column.getIsSorted = () => {\n var _table$getState$sorti;\n const columnSort = (_table$getState$sorti = table.getState().sorting) == null ? void 0 : _table$getState$sorti.find(d => d.id === column.id);\n return !columnSort ? false : columnSort.desc ? 'desc' : 'asc';\n };\n column.getSortIndex = () => {\n var _table$getState$sorti2, _table$getState$sorti3;\n return (_table$getState$sorti2 = (_table$getState$sorti3 = table.getState().sorting) == null ? void 0 : _table$getState$sorti3.findIndex(d => d.id === column.id)) != null ? _table$getState$sorti2 : -1;\n };\n column.clearSorting = () => {\n //clear sorting for just 1 column\n table.setSorting(old => old != null && old.length ? old.filter(d => d.id !== column.id) : []);\n };\n column.getToggleSortingHandler = () => {\n const canSort = column.getCanSort();\n return e => {\n if (!canSort) return;\n e.persist == null || e.persist();\n column.toggleSorting == null || column.toggleSorting(undefined, column.getCanMultiSort() ? table.options.isMultiSortEvent == null ? void 0 : table.options.isMultiSortEvent(e) : false);\n };\n };\n },\n createTable: table => {\n table.setSorting = updater => table.options.onSortingChange == null ? void 0 : table.options.onSortingChange(updater);\n table.resetSorting = defaultState => {\n var _table$initialState$s, _table$initialState;\n table.setSorting(defaultState ? [] : (_table$initialState$s = (_table$initialState = table.initialState) == null ? void 0 : _table$initialState.sorting) != null ? _table$initialState$s : []);\n };\n table.getPreSortedRowModel = () => table.getGroupedRowModel();\n table.getSortedRowModel = () => {\n if (!table._getSortedRowModel && table.options.getSortedRowModel) {\n table._getSortedRowModel = table.options.getSortedRowModel(table);\n }\n if (table.options.manualSorting || !table._getSortedRowModel) {\n return table.getPreSortedRowModel();\n }\n return table._getSortedRowModel();\n };\n }\n};\n\n//\n\nconst Visibility = {\n getInitialState: state => {\n return {\n columnVisibility: {},\n ...state\n };\n },\n getDefaultOptions: table => {\n return {\n onColumnVisibilityChange: makeStateUpdater('columnVisibility', table)\n };\n },\n createColumn: (column, table) => {\n column.toggleVisibility = value => {\n if (column.getCanHide()) {\n table.setColumnVisibility(old => ({\n ...old,\n [column.id]: value != null ? value : !column.getIsVisible()\n }));\n }\n };\n column.getIsVisible = () => {\n var _table$getState$colum, _table$getState$colum2;\n return (_table$getState$colum = (_table$getState$colum2 = table.getState().columnVisibility) == null ? void 0 : _table$getState$colum2[column.id]) != null ? _table$getState$colum : true;\n };\n column.getCanHide = () => {\n var _column$columnDef$ena, _table$options$enable;\n return ((_column$columnDef$ena = column.columnDef.enableHiding) != null ? _column$columnDef$ena : true) && ((_table$options$enable = table.options.enableHiding) != null ? _table$options$enable : true);\n };\n column.getToggleVisibilityHandler = () => {\n return e => {\n column.toggleVisibility == null || column.toggleVisibility(e.target.checked);\n };\n };\n },\n createRow: (row, table) => {\n row._getAllVisibleCells = memo(() => [row.getAllCells(), table.getState().columnVisibility], cells => {\n return cells.filter(cell => cell.column.getIsVisible());\n }, {\n key: process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\n });\n row.getVisibleCells = memo(() => [row.getLeftVisibleCells(), row.getCenterVisibleCells(), row.getRightVisibleCells()], (left, center, right) => [...left, ...center, ...right], {\n key: process.env.NODE_ENV === 'development' && 'row.getVisibleCells',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n });\n },\n createTable: table => {\n const makeVisibleColumnsMethod = (key, getColumns) => {\n return memo(() => [getColumns(), getColumns().filter(d => d.getIsVisible()).map(d => d.id).join('_')], columns => {\n return columns.filter(d => d.getIsVisible == null ? void 0 : d.getIsVisible());\n }, {\n key,\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\n });\n };\n table.getVisibleFlatColumns = makeVisibleColumnsMethod('getVisibleFlatColumns', () => table.getAllFlatColumns());\n table.getVisibleLeafColumns = makeVisibleColumnsMethod('getVisibleLeafColumns', () => table.getAllLeafColumns());\n table.getLeftVisibleLeafColumns = makeVisibleColumnsMethod('getLeftVisibleLeafColumns', () => table.getLeftLeafColumns());\n table.getRightVisibleLeafColumns = makeVisibleColumnsMethod('getRightVisibleLeafColumns', () => table.getRightLeafColumns());\n table.getCenterVisibleLeafColumns = makeVisibleColumnsMethod('getCenterVisibleLeafColumns', () => table.getCenterLeafColumns());\n table.setColumnVisibility = updater => table.options.onColumnVisibilityChange == null ? void 0 : table.options.onColumnVisibilityChange(updater);\n table.resetColumnVisibility = defaultState => {\n var _table$initialState$c;\n table.setColumnVisibility(defaultState ? {} : (_table$initialState$c = table.initialState.columnVisibility) != null ? _table$initialState$c : {});\n };\n table.toggleAllColumnsVisible = value => {\n var _value;\n value = (_value = value) != null ? _value : !table.getIsAllColumnsVisible();\n table.setColumnVisibility(table.getAllLeafColumns().reduce((obj, column) => ({\n ...obj,\n [column.id]: !value ? !(column.getCanHide != null && column.getCanHide()) : value\n }), {}));\n };\n table.getIsAllColumnsVisible = () => !table.getAllLeafColumns().some(column => !(column.getIsVisible != null && column.getIsVisible()));\n table.getIsSomeColumnsVisible = () => table.getAllLeafColumns().some(column => column.getIsVisible == null ? void 0 : column.getIsVisible());\n table.getToggleAllColumnsVisibilityHandler = () => {\n return e => {\n var _target;\n table.toggleAllColumnsVisible((_target = e.target) == null ? void 0 : _target.checked);\n };\n };\n }\n};\n\nconst features = [Headers, Visibility, Ordering, Pinning, Filters, Sorting, Grouping, Expanding, Pagination, RowSelection, ColumnSizing];\n\n//\n\nfunction createTable(options) {\n var _options$initialState;\n if (options.debugAll || options.debugTable) {\n console.info('Creating Table Instance...');\n }\n let table = {\n _features: features\n };\n const defaultOptions = table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultOptions == null ? void 0 : feature.getDefaultOptions(table));\n }, {});\n const mergeOptions = options => {\n if (table.options.mergeOptions) {\n return table.options.mergeOptions(defaultOptions, options);\n }\n return {\n ...defaultOptions,\n ...options\n };\n };\n const coreInitialState = {};\n let initialState = {\n ...coreInitialState,\n ...((_options$initialState = options.initialState) != null ? _options$initialState : {})\n };\n table._features.forEach(feature => {\n var _feature$getInitialSt;\n initialState = (_feature$getInitialSt = feature.getInitialState == null ? void 0 : feature.getInitialState(initialState)) != null ? _feature$getInitialSt : initialState;\n });\n const queued = [];\n let queuedTimeout = false;\n const coreInstance = {\n _features: features,\n options: {\n ...defaultOptions,\n ...options\n },\n initialState,\n _queue: cb => {\n queued.push(cb);\n if (!queuedTimeout) {\n queuedTimeout = true;\n\n // Schedule a microtask to run the queued callbacks after\n // the current call stack (render, etc) has finished.\n Promise.resolve().then(() => {\n while (queued.length) {\n queued.shift()();\n }\n queuedTimeout = false;\n }).catch(error => setTimeout(() => {\n throw error;\n }));\n }\n },\n reset: () => {\n table.setState(table.initialState);\n },\n setOptions: updater => {\n const newOptions = functionalUpdate(updater, table.options);\n table.options = mergeOptions(newOptions);\n },\n getState: () => {\n return table.options.state;\n },\n setState: updater => {\n table.options.onStateChange == null || table.options.onStateChange(updater);\n },\n _getRowId: (row, index, parent) => {\n var _table$options$getRow;\n return (_table$options$getRow = table.options.getRowId == null ? void 0 : table.options.getRowId(row, index, parent)) != null ? _table$options$getRow : `${parent ? [parent.id, index].join('.') : index}`;\n },\n getCoreRowModel: () => {\n if (!table._getCoreRowModel) {\n table._getCoreRowModel = table.options.getCoreRowModel(table);\n }\n return table._getCoreRowModel();\n },\n // The final calls start at the bottom of the model,\n // expanded rows, which then work their way up\n\n getRowModel: () => {\n return table.getPaginationRowModel();\n },\n getRow: (id, searchAll) => {\n const row = (searchAll ? table.getCoreRowModel() : table.getRowModel()).rowsById[id];\n if (!row) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`getRow expected an ID, but got ${id}`);\n }\n throw new Error();\n }\n return row;\n },\n _getDefaultColumnDef: memo(() => [table.options.defaultColumn], defaultColumn => {\n var _defaultColumn;\n defaultColumn = (_defaultColumn = defaultColumn) != null ? _defaultColumn : {};\n return {\n header: props => {\n const resolvedColumnDef = props.header.column.columnDef;\n if (resolvedColumnDef.accessorKey) {\n return resolvedColumnDef.accessorKey;\n }\n if (resolvedColumnDef.accessorFn) {\n return resolvedColumnDef.id;\n }\n return null;\n },\n // footer: props => props.header.column.id,\n cell: props => {\n var _props$renderValue$to, _props$renderValue;\n return (_props$renderValue$to = (_props$renderValue = props.renderValue()) == null || _props$renderValue.toString == null ? void 0 : _props$renderValue.toString()) != null ? _props$renderValue$to : null;\n },\n ...table._features.reduce((obj, feature) => {\n return Object.assign(obj, feature.getDefaultColumnDef == null ? void 0 : feature.getDefaultColumnDef());\n }, {}),\n ...defaultColumn\n };\n }, {\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugColumns;\n },\n key: process.env.NODE_ENV === 'development' && 'getDefaultColumnDef'\n }),\n _getColumnDefs: () => table.options.columns,\n getAllColumns: memo(() => [table._getColumnDefs()], columnDefs => {\n const recurseColumns = function (columnDefs, parent, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n return columnDefs.map(columnDef => {\n const column = createColumn(table, columnDef, depth, parent);\n const groupingColumnDef = columnDef;\n column.columns = groupingColumnDef.columns ? recurseColumns(groupingColumnDef.columns, column, depth + 1) : [];\n return column;\n });\n };\n return recurseColumns(columnDefs);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllColumns',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugColumns;\n }\n }),\n getAllFlatColumns: memo(() => [table.getAllColumns()], allColumns => {\n return allColumns.flatMap(column => {\n return column.getFlatColumns();\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumns',\n debug: () => {\n var _table$options$debugA3;\n return (_table$options$debugA3 = table.options.debugAll) != null ? _table$options$debugA3 : table.options.debugColumns;\n }\n }),\n _getAllFlatColumnsById: memo(() => [table.getAllFlatColumns()], flatColumns => {\n return flatColumns.reduce((acc, column) => {\n acc[column.id] = column;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllFlatColumnsById',\n debug: () => {\n var _table$options$debugA4;\n return (_table$options$debugA4 = table.options.debugAll) != null ? _table$options$debugA4 : table.options.debugColumns;\n }\n }),\n getAllLeafColumns: memo(() => [table.getAllColumns(), table._getOrderColumnsFn()], (allColumns, orderColumns) => {\n let leafColumns = allColumns.flatMap(column => column.getLeafColumns());\n return orderColumns(leafColumns);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getAllLeafColumns',\n debug: () => {\n var _table$options$debugA5;\n return (_table$options$debugA5 = table.options.debugAll) != null ? _table$options$debugA5 : table.options.debugColumns;\n }\n }),\n getColumn: columnId => {\n const column = table._getAllFlatColumnsById()[columnId];\n if (process.env.NODE_ENV !== 'production' && !column) {\n console.error(`[Table] Column with id '${columnId}' does not exist.`);\n }\n return column;\n }\n };\n Object.assign(table, coreInstance);\n for (let index = 0; index < table._features.length; index++) {\n const feature = table._features[index];\n feature == null || feature.createTable == null || feature.createTable(table);\n }\n return table;\n}\n\nfunction createCell(table, row, column, columnId) {\n const getRenderValue = () => {\n var _cell$getValue;\n return (_cell$getValue = cell.getValue()) != null ? _cell$getValue : table.options.renderFallbackValue;\n };\n const cell = {\n id: `${row.id}_${column.id}`,\n row,\n column,\n getValue: () => row.getValue(columnId),\n renderValue: getRenderValue,\n getContext: memo(() => [table, column, row, cell], (table, column, row, cell) => ({\n table,\n column,\n row,\n cell: cell,\n getValue: cell.getValue,\n renderValue: cell.renderValue\n }), {\n key: process.env.NODE_ENV === 'development' && 'cell.getContext',\n debug: () => table.options.debugAll\n })\n };\n table._features.forEach(feature => {\n feature.createCell == null || feature.createCell(cell, column, row, table);\n }, {});\n return cell;\n}\n\nconst createRow = (table, id, original, rowIndex, depth, subRows, parentId) => {\n let row = {\n id,\n index: rowIndex,\n original,\n depth,\n parentId,\n _valuesCache: {},\n _uniqueValuesCache: {},\n getValue: columnId => {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n row._valuesCache[columnId] = column.accessorFn(row.original, rowIndex);\n return row._valuesCache[columnId];\n },\n getUniqueValues: columnId => {\n if (row._uniqueValuesCache.hasOwnProperty(columnId)) {\n return row._uniqueValuesCache[columnId];\n }\n const column = table.getColumn(columnId);\n if (!(column != null && column.accessorFn)) {\n return undefined;\n }\n if (!column.columnDef.getUniqueValues) {\n row._uniqueValuesCache[columnId] = [row.getValue(columnId)];\n return row._uniqueValuesCache[columnId];\n }\n row._uniqueValuesCache[columnId] = column.columnDef.getUniqueValues(row.original, rowIndex);\n return row._uniqueValuesCache[columnId];\n },\n renderValue: columnId => {\n var _row$getValue;\n return (_row$getValue = row.getValue(columnId)) != null ? _row$getValue : table.options.renderFallbackValue;\n },\n subRows: subRows != null ? subRows : [],\n getLeafRows: () => flattenBy(row.subRows, d => d.subRows),\n getParentRow: () => row.parentId ? table.getRow(row.parentId, true) : undefined,\n getParentRows: () => {\n let parentRows = [];\n let currentRow = row;\n while (true) {\n const parentRow = currentRow.getParentRow();\n if (!parentRow) break;\n parentRows.push(parentRow);\n currentRow = parentRow;\n }\n return parentRows.reverse();\n },\n getAllCells: memo(() => [table.getAllLeafColumns()], leafColumns => {\n return leafColumns.map(column => {\n return createCell(table, row, column, column.id);\n });\n }, {\n key: process.env.NODE_ENV === 'development' && 'row.getAllCells',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugRows;\n }\n }),\n _getAllCellsByColumnId: memo(() => [row.getAllCells()], allCells => {\n return allCells.reduce((acc, cell) => {\n acc[cell.column.id] = cell;\n return acc;\n }, {});\n }, {\n key: process.env.NODE_ENV === 'production' && 'row.getAllCellsByColumnId',\n debug: () => {\n var _table$options$debugA2;\n return (_table$options$debugA2 = table.options.debugAll) != null ? _table$options$debugA2 : table.options.debugRows;\n }\n })\n };\n for (let i = 0; i < table._features.length; i++) {\n const feature = table._features[i];\n feature == null || feature.createRow == null || feature.createRow(row, table);\n }\n return row;\n};\n\n// type Person = {\n// firstName: string\n// lastName: string\n// age: number\n// visits: number\n// status: string\n// progress: number\n// createdAt: Date\n// nested: {\n// foo: [\n// {\n// bar: 'bar'\n// }\n// ]\n// bar: { subBar: boolean }[]\n// baz: {\n// foo: 'foo'\n// bar: {\n// baz: 'baz'\n// }\n// }\n// }\n// }\n\n// const test: DeepKeys<Person> = 'nested.foo.0.bar'\n// const test2: DeepKeys<Person> = 'nested.bar'\n\n// const helper = createColumnHelper<Person>()\n\n// helper.accessor('nested.foo', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.foo.0.bar', {\n// cell: info => info.getValue(),\n// })\n\n// helper.accessor('nested.bar', {\n// cell: info => info.getValue(),\n// })\nfunction createColumnHelper() {\n return {\n accessor: (accessor, column) => {\n return typeof accessor === 'function' ? {\n ...column,\n accessorFn: accessor\n } : {\n ...column,\n accessorKey: accessor\n };\n },\n display: column => column,\n group: column => column\n };\n}\n\nfunction getCoreRowModel() {\n return table => memo(() => [table.options.data], data => {\n const rowModel = {\n rows: [],\n flatRows: [],\n rowsById: {}\n };\n const accessRows = function (originalRows, depth, parentRow) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n for (let i = 0; i < originalRows.length; i++) {\n // This could be an expensive check at scale, so we should move it somewhere else, but where?\n // if (!id) {\n // if (process.env.NODE_ENV !== 'production') {\n // throw new Error(`getRowId expected an ID, but got ${id}`)\n // }\n // }\n\n // Make the row\n const row = createRow(table, table._getRowId(originalRows[i], i, parentRow), originalRows[i], i, depth, undefined, parentRow == null ? void 0 : parentRow.id);\n\n // Keep track of every row in a flat array\n rowModel.flatRows.push(row);\n // Also keep track of every row by its ID\n rowModel.rowsById[row.id] = row;\n // Push table row into parent\n rows.push(row);\n\n // Get the original subrows\n if (table.options.getSubRows) {\n var _row$originalSubRows;\n row.originalSubRows = table.options.getSubRows(originalRows[i], i);\n\n // Then recursively access them\n if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {\n row.subRows = accessRows(row.originalSubRows, depth + 1, row);\n }\n }\n }\n return rows;\n };\n rowModel.rows = accessRows(data);\n return rowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction filterRows(rows, filterRowImpl, table) {\n if (table.options.filterFromLeafRows) {\n return filterRowModelFromLeafs(rows, filterRowImpl, table);\n }\n return filterRowModelFromRoot(rows, filterRowImpl, table);\n}\nfunction filterRowModelFromLeafs(rowsToFilter, filterRow, table) {\n var _table$options$maxLea;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea : 100;\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n const rows = [];\n\n // Filter from children up first\n for (let i = 0; i < rowsToFilter.length; i++) {\n var _row$subRows;\n let row = rowsToFilter[i];\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.columnFilters = row.columnFilters;\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && depth < maxDepth) {\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n if (filterRow(row) && !newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n if (filterRow(row) || newRow.subRows.length) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n continue;\n }\n } else {\n row = newRow;\n if (filterRow(row)) {\n rows.push(row);\n newFilteredRowsById[row.id] = row;\n newFilteredFlatRows.push(row);\n }\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\nfunction filterRowModelFromRoot(rowsToFilter, filterRow, table) {\n var _table$options$maxLea2;\n const newFilteredFlatRows = [];\n const newFilteredRowsById = {};\n const maxDepth = (_table$options$maxLea2 = table.options.maxLeafRowFilterDepth) != null ? _table$options$maxLea2 : 100;\n\n // Filters top level and nested rows\n const recurseFilterRows = function (rowsToFilter, depth) {\n if (depth === void 0) {\n depth = 0;\n }\n // Filter from parents downward first\n\n const rows = [];\n\n // Apply the filter to any subRows\n for (let i = 0; i < rowsToFilter.length; i++) {\n let row = rowsToFilter[i];\n const pass = filterRow(row);\n if (pass) {\n var _row$subRows2;\n if ((_row$subRows2 = row.subRows) != null && _row$subRows2.length && depth < maxDepth) {\n const newRow = createRow(table, row.id, row.original, row.index, row.depth, undefined, row.parentId);\n newRow.subRows = recurseFilterRows(row.subRows, depth + 1);\n row = newRow;\n }\n rows.push(row);\n newFilteredFlatRows.push(row);\n newFilteredRowsById[row.id] = row;\n }\n }\n return rows;\n };\n return {\n rows: recurseFilterRows(rowsToFilter),\n flatRows: newFilteredFlatRows,\n rowsById: newFilteredRowsById\n };\n}\n\nfunction getFilteredRowModel() {\n return table => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter], (rowModel, columnFilters, globalFilter) => {\n if (!rowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i].columnFilters = {};\n rowModel.flatRows[i].columnFiltersMeta = {};\n }\n return rowModel;\n }\n const resolvedColumnFilters = [];\n const resolvedGlobalFilters = [];\n (columnFilters != null ? columnFilters : []).forEach(d => {\n var _filterFn$resolveFilt;\n const column = table.getColumn(d.id);\n if (!column) {\n return;\n }\n const filterFn = column.getFilterFn();\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`);\n }\n return;\n }\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: (_filterFn$resolveFilt = filterFn.resolveFilterValue == null ? void 0 : filterFn.resolveFilterValue(d.value)) != null ? _filterFn$resolveFilt : d.value\n });\n });\n const filterableIds = columnFilters.map(d => d.id);\n const globalFilterFn = table.getGlobalFilterFn();\n const globallyFilterableColumns = table.getAllLeafColumns().filter(column => column.getCanGlobalFilter());\n if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {\n filterableIds.push('__global__');\n globallyFilterableColumns.forEach(column => {\n var _globalFilterFn$resol;\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue: (_globalFilterFn$resol = globalFilterFn.resolveFilterValue == null ? void 0 : globalFilterFn.resolveFilterValue(globalFilter)) != null ? _globalFilterFn$resol : globalFilter\n });\n });\n }\n let currentColumnFilter;\n let currentGlobalFilter;\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j];\n row.columnFilters = {};\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i];\n const id = currentColumnFilter.id;\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(row, id, currentColumnFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n });\n }\n }\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i];\n const id = currentGlobalFilter.id;\n // Tag the row with the first truthy global filter state\n if (currentGlobalFilter.filterFn(row, id, currentGlobalFilter.resolvedValue, filterMeta => {\n row.columnFiltersMeta[id] = filterMeta;\n })) {\n row.columnFilters.__global__ = true;\n break;\n }\n }\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false;\n }\n }\n }\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFilteredRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getFacetedRowModel() {\n return (table, columnId) => memo(() => [table.getPreFilteredRowModel(), table.getState().columnFilters, table.getState().globalFilter, table.getFilteredRowModel()], (preRowModel, columnFilters, globalFilter) => {\n if (!preRowModel.rows.length || !(columnFilters != null && columnFilters.length) && !globalFilter) {\n return preRowModel;\n }\n const filterableIds = [...columnFilters.map(d => d.id).filter(d => d !== columnId), globalFilter ? '__global__' : undefined].filter(Boolean);\n const filterRowsImpl = row => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]] === false) {\n return false;\n }\n }\n return true;\n };\n return filterRows(preRowModel.rows, filterRowsImpl, table);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedRowModel_' + columnId,\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getFacetedUniqueValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n if (!facetedRowModel) return new Map();\n let facetedUniqueValues = new Map();\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (facetedUniqueValues.has(value)) {\n var _facetedUniqueValues$;\n facetedUniqueValues.set(value, ((_facetedUniqueValues$ = facetedUniqueValues.get(value)) != null ? _facetedUniqueValues$ : 0) + 1);\n } else {\n facetedUniqueValues.set(value, 1);\n }\n }\n }\n return facetedUniqueValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedUniqueValues_' + columnId,\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getFacetedMinMaxValues() {\n return (table, columnId) => memo(() => {\n var _table$getColumn;\n return [(_table$getColumn = table.getColumn(columnId)) == null ? void 0 : _table$getColumn.getFacetedRowModel()];\n }, facetedRowModel => {\n var _facetedRowModel$flat;\n if (!facetedRowModel) return undefined;\n const firstValue = (_facetedRowModel$flat = facetedRowModel.flatRows[0]) == null ? void 0 : _facetedRowModel$flat.getUniqueValues(columnId);\n if (typeof firstValue === 'undefined') {\n return undefined;\n }\n let facetedMinMaxValues = [firstValue, firstValue];\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);\n for (let j = 0; j < values.length; j++) {\n const value = values[j];\n if (value < facetedMinMaxValues[0]) {\n facetedMinMaxValues[0] = value;\n } else if (value > facetedMinMaxValues[1]) {\n facetedMinMaxValues[1] = value;\n }\n }\n }\n return facetedMinMaxValues;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getFacetedMinMaxValues_' + columnId,\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {}\n });\n}\n\nfunction getSortedRowModel() {\n return table => memo(() => [table.getState().sorting, table.getPreSortedRowModel()], (sorting, rowModel) => {\n if (!rowModel.rows.length || !(sorting != null && sorting.length)) {\n return rowModel;\n }\n const sortingState = table.getState().sorting;\n const sortedFlatRows = [];\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(sort => {\n var _table$getColumn;\n return (_table$getColumn = table.getColumn(sort.id)) == null ? void 0 : _table$getColumn.getCanSort();\n });\n const columnInfoById = {};\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id);\n if (!column) return;\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn()\n };\n });\n const sortData = rows => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({\n ...row\n }));\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n var _sortEntry$desc;\n const sortEntry = availableSorting[i];\n const columnInfo = columnInfoById[sortEntry.id];\n const isDesc = (_sortEntry$desc = sortEntry == null ? void 0 : sortEntry.desc) != null ? _sortEntry$desc : false;\n let sortInt = 0;\n\n // All sorting ints should always return in ascending order\n if (columnInfo.sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id);\n const bValue = rowB.getValue(sortEntry.id);\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n if (aUndefined || bUndefined) {\n sortInt = aUndefined && bUndefined ? 0 : aUndefined ? columnInfo.sortUndefined : -columnInfo.sortUndefined;\n }\n }\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1;\n }\n if (columnInfo.invertSorting) {\n sortInt *= -1;\n }\n return sortInt;\n }\n }\n return rowA.index - rowB.index;\n });\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n var _row$subRows;\n sortedFlatRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length) {\n row.subRows = sortData(row.subRows);\n }\n });\n return sortedData;\n };\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getSortedRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {\n table._autoResetPageIndex();\n }\n });\n}\n\nfunction getGroupedRowModel() {\n return table => memo(() => [table.getState().grouping, table.getPreGroupedRowModel()], (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel;\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId => table.getColumn(columnId));\n const groupedFlatRows = [];\n const groupedRowsById = {};\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = function (rows, depth, parentId) {\n if (depth === void 0) {\n depth = 0;\n }\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth;\n groupedFlatRows.push(row);\n groupedRowsById[row.id] = row;\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);\n }\n return row;\n });\n }\n const columnId = existingGrouping[depth];\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId);\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map((_ref, index) => {\n let [groupingValue, groupedRows] = _ref;\n let id = `${columnId}:${groupingValue}`;\n id = parentId ? `${parentId}>${id}` : id;\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id);\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth ? flattenBy(groupedRows, row => row.subRows) : groupedRows;\n const row = createRow(table, id, leafRows[0].original, index, depth, undefined, parentId);\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: columnId => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId];\n }\n if (groupedRows[0]) {\n var _groupedRows$0$getVal;\n row._valuesCache[columnId] = (_groupedRows$0$getVal = groupedRows[0].getValue(columnId)) != null ? _groupedRows$0$getVal : undefined;\n }\n return row._valuesCache[columnId];\n }\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId];\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId);\n const aggregateFn = column == null ? void 0 : column.getAggregationFn();\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(columnId, leafRows, groupedRows);\n return row._groupingValuesCache[columnId];\n }\n }\n });\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return row;\n });\n return aggregatedGroupedRows;\n };\n const groupedRows = groupUpRecursively(rowModel.rows, 0);\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow);\n groupedRowsById[subRow.id] = subRow;\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n });\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById\n };\n }, {\n key: process.env.NODE_ENV === 'development' && 'getGroupedRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n },\n onChange: () => {\n table._queue(() => {\n table._autoResetExpanded();\n table._autoResetPageIndex();\n });\n }\n });\n}\nfunction groupBy(rows, columnId) {\n const groupMap = new Map();\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`;\n const previous = map.get(resKey);\n if (!previous) {\n map.set(resKey, [row]);\n } else {\n previous.push(row);\n }\n return map;\n }, groupMap);\n}\n\nfunction getExpandedRowModel() {\n return table => memo(() => [table.getState().expanded, table.getPreExpandedRowModel(), table.options.paginateExpandedRows], (expanded, rowModel, paginateExpandedRows) => {\n if (!rowModel.rows.length || expanded !== true && !Object.keys(expanded != null ? expanded : {}).length) {\n return rowModel;\n }\n if (!paginateExpandedRows) {\n // Only expand rows at this point if they are being paginated\n return rowModel;\n }\n return expandRows(rowModel);\n }, {\n key: process.env.NODE_ENV === 'development' && 'getExpandedRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n}\nfunction expandRows(rowModel) {\n const expandedRows = [];\n const handleRow = row => {\n var _row$subRows;\n expandedRows.push(row);\n if ((_row$subRows = row.subRows) != null && _row$subRows.length && row.getIsExpanded()) {\n row.subRows.forEach(handleRow);\n }\n };\n rowModel.rows.forEach(handleRow);\n return {\n rows: expandedRows,\n flatRows: rowModel.flatRows,\n rowsById: rowModel.rowsById\n };\n}\n\nfunction getPaginationRowModel(opts) {\n return table => memo(() => [table.getState().pagination, table.getPrePaginationRowModel(), table.options.paginateExpandedRows ? undefined : table.getState().expanded], (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel;\n }\n const {\n pageSize,\n pageIndex\n } = pagination;\n let {\n rows,\n flatRows,\n rowsById\n } = rowModel;\n const pageStart = pageSize * pageIndex;\n const pageEnd = pageStart + pageSize;\n rows = rows.slice(pageStart, pageEnd);\n let paginatedRowModel;\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById\n });\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById\n };\n }\n paginatedRowModel.flatRows = [];\n const handleRow = row => {\n paginatedRowModel.flatRows.push(row);\n if (row.subRows.length) {\n row.subRows.forEach(handleRow);\n }\n };\n paginatedRowModel.rows.forEach(handleRow);\n return paginatedRowModel;\n }, {\n key: process.env.NODE_ENV === 'development' && 'getPaginationRowModel',\n debug: () => {\n var _table$options$debugA;\n return (_table$options$debugA = table.options.debugAll) != null ? _table$options$debugA : table.options.debugTable;\n }\n });\n}\n\nexport { ColumnSizing, Expanding, Filters, Grouping, Headers, Ordering, Pagination, Pinning, RowSelection, Sorting, Visibility, aggregationFns, buildHeaderGroups, createCell, createColumn, createColumnHelper, createRow, createTable, defaultColumnSizing, expandRows, filterFns, flattenBy, functionalUpdate, getCoreRowModel, getExpandedRowModel, getFacetedMinMaxValues, getFacetedRowModel, getFacetedUniqueValues, getFilteredRowModel, getGroupedRowModel, getPaginationRowModel, getSortedRowModel, isFunction, isNumberArray, isRowSelected, isSubRowSelected, makeStateUpdater, memo, noop, orderColumns, passiveEventSupported, reSplitAlphaNumeric, selectRowsFn, shouldAutoRemoveFilter, sortingFns };\n//# sourceMappingURL=index.mjs.map\n"],"names":["requestAnimFrame","window","callback","requestAnimationFrame","throttled","fn","thisArg","updateFn","updateArgs","args","Array","prototype","slice","call","ticking","rest","apply","_toLeftRightCenter","align","_alignStartEnd","start","end","noop","uid","id","isNullOrUndef","value","isArray","type","Object","toString","isObject","isNumberFinite","Number","isFinite","finiteOrDefault","defaultValue","valueOrDefault","toDimension","dimension","endsWith","parseFloat","each","loopable","reverse","i","len","keys","length","_elementsEqual","a0","a1","ilen","v0","v1","datasetIndex","index","clone$1","source","map","target","create","klen","k","isValidKey","key","indexOf","_merger","options","tval","sval","merge","sources","merger","mergeIf","_mergerIf","hasOwnProperty","indexOfDotOrLength","idx","resolveObjectKey","obj","pos","_capitalize","str","charAt","toUpperCase","defined","isFunction","setsEqual","a","b","size","item","has","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","isNumber","n","isNaN","x","y","epsilon","abs","_setMinAndMaxByKey","array","property","min","max","toRadians","degrees","toDegrees","radians","_decimalPlaces","e","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","sqrt","angle","atan2","distance","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","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","v","lim","l","h","p2b","n2b","b2n","n2p","map$1","A","B","C","D","E","F","c","f","hex","h1","h2","eq","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","w","rgb","rgb2hsl","r","g","hueValue","calln","hsl2rgb","hue","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","names","RGB_RE","to","from","modHSL","ratio","tmp","clone","proto","assign","fromObject","input","functionParse","exec","rgbParse","p1","p2","hwb2rgb","hsv2rgb","hueParse","Color","constructor","ret","unpacked","tkeys","j","ok","nk","replace","parseInt","unpack","transparent","toLowerCase","nameParse","this","_rgb","_valid","valid","rgbString","undefined","hexString","isShort","alpha","hslString","mix","color","weight","c1","c2","w2","w1","interpolate","rgb1","rgb2","clearer","greyscale","val","opaquer","negate","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","getHoverColor","overrides","descriptors","getScope$1","node","split","set","root","scope","values","defaults","_descriptors","animation","backgroundColor","borderColor","datasets","devicePixelRatio","context","chart","platform","getDevicePixelRatio","elements","events","font","family","style","lineHeight","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","mode","intersect","includeInvisible","maintainAspectRatio","onHover","onClick","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","get","override","route","name","targetScope","targetName","scopeObject","targetScopeObject","privateName","defineProperties","writable","enumerable","local","_scriptable","startsWith","_indexable","_fallback","_measureText","data","gc","longest","string","textWidth","measureText","width","push","_longestText","arrayOfThings","cache","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","splice","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","canvas","getContext","resetTransform","clearRect","height","drawPoint","drawPointLegend","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","translate","drawImage","beginPath","ellipse","arc","closePath","moveTo","lineTo","SQRT1_2","rect","fill","borderWidth","stroke","_isPointInArea","point","area","margin","left","right","top","bottom","clipArea","clip","unclipArea","_steppedLineTo","previous","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","text","opts","lines","strokeWidth","strokeColor","line","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","RegExp","FONT_STYLE","toLineHeight","matches","match","_readValueToProps","props","objProps","read","prop","toTRBL","toTRBLCorners","toPadding","toFont","fallback","console","warn","toFontString","resolve","inputs","info","cacheable","createContext","parentContext","_lookup","table","cmp","mid","hi","lo","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","forEach","_arrayUnique","items","Set","add","_createResolver","scopes","prefixes","rootScopes","getTarget","_resolve","Symbol","toStringTag","_cacheable","_scopes","_rootScopes","_getTarget","Proxy","deleteProperty","_keys","_cached","proxy","prefix","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getOwnPropertyDescriptor","Reflect","getPrototypeOf","getKeysFromAllScopes","includes","ownKeys","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_context","_subProxy","_stack","setContext","receiver","isScriptable","Error","join","delete","_resolveScriptable","isIndexable","arr","filter","resolver","_resolveArray","_resolveWithContext","allKeys","configurable","scriptable","indexable","_allKeys","resolveFallback","getScope","parent","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","_parseObjectDataRadialScale","meta","count","iScale","_parsing","parsed","parse","EPSILON","getPoint","points","skip","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","current","next","d01","d12","s01","s12","fa","fb","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","delta","iPixel","vPixel","monotoneCompute","splineCurveMonotone","prev","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","document","_getParentNode","domNode","parentNode","host","parseMaxStyle","styleValue","parentProperty","valueInPixels","getComputedStyle","element","positions","getPositionedStyle","styles","suffix","result","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","touches","offsetX","offsetY","shadowRoot","useOffsetPos","getBoundingClientRect","clientX","clientY","getCanvasPosition","round1","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","rtl","rectX","setWidth","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","direction","original","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","propertyFn","between","compare","normalize","normalizeSegment","_boundSegment","segment","bounds","startBound","endBound","getSegment","prevValue","inside","subStart","_boundSegments","segments","sub","readStyle","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","styleChanged","prevStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","date","callbacks","numSteps","duration","initial","currentStep","_refresh","_update","Date","now","remaining","running","draw","_active","_total","tick","pop","_getAnims","charts","complete","progress","listen","event","cb","reduce","acc","cur","_duration","stop","cancel","remove","interpolators","boolean","factor","c0","number","Animation","cfg","currentValue","_fn","_easing","easing","_start","delay","_loop","_target","_prop","_from","_to","_promises","active","update","elapsed","remain","wait","promises","Promise","res","rej","resolved","method","animationOptions","colors","properties","numbers","resize","show","animations","visible","hide","Animations","config","_chart","_properties","configure","animatedProps","getOwnPropertyNames","option","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","anim","all","awaitAll","then","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","stack","dsIndex","singleMode","otherValue","isStacked","stacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","_cachedMeta","_stacks","iAxis","axis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","shift","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","shared","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_data","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","supportsDecimation","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","reset","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","defineProperty","base","object","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","labels","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","NaN","getMinMax","canStack","otherScale","hidden","createStack","NEGATIVE_INFINITY","otherMin","otherMax","minDefined","maxDefined","getUserBounds","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","label","getLabelForValue","_clip","disabled","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","elementType","sharing","datasetElementScopeKeys","resolveNamedOptions","freeze","_resolveAnimations","transition","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","_getSharedOptions","firstOpts","previouslySharedOptions","updateSharedOptions","updateElement","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","move","updateElements","removed","_sync","_dataChanges","_onDataPush","arguments","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","_cache","$bar","visibleMetas","concat","sort","getAllScaleValues","curr","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","entry","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","v2","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","vpixels","head","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","center","_getStacks","last","grouped","skipNull","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","startPixel","getPixelForDecimal","endPixel","halfGrid","getLineWidthForValue","maxBarThickness","Infinity","percent","chunk","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","offset","grid","_value_","beginAtZero","BubbleController","tooltip","title","DoughnutController","innerRadius","outerRadius","getter","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","startX","startY","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxHeight","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","aspectRatio","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","newRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_datasetIndex","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","border","lastPoint","updateControlPoints","PolarAreaController","bind","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","display","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","controllers","__proto__","DateAdapter","formats","timestamp","amount","unit","diff","startOf","weekday","endOf","members","adapters","_date","binarySearch","metaset","lookupMethod","_reversePixels","getRange","evaluateInteractionItems","position","handler","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","isPointInArea","inRange","getNearestItems","distanceMetric","useX","useY","deltaX","deltaY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestCartesianItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","params","layout","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","heightChanged","same","other","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","fullSize","setBoxDims","placeBoxes","userPadding","padding","placed","stackWeight","autoPadding","layouts","addBox","_layers","z","removeBox","layoutItem","minPadding","availableWidth","availableHeight","layoutBoxes","wrapBoxes","wrap","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","vBoxMaxWidth","hBoxMaxHeight","buildStacks","setLayoutDims","updatePos","change","handleMaxPadding","BasePlatform","acquireContext","releaseContext","getMaximumSize","isAttached","updateConfig","BasicPlatform","EXPANDO_KEY","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","removeListener","nodeListContains","nodeList","contains","createAttachObserver","observer","MutationObserver","entries","trigger","addedNodes","removedNodes","observe","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","container","clientWidth","ResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","disconnect","unlistenDevicePixelRatioChanges","createProxyAndListen","native","fromNativeEvent","addListener","DomPlatform","renderHeight","getAttribute","renderWidth","displayWidth","displayHeight","initCanvas","removeAttribute","setAttribute","proxies","$proxies","attach","detach","bbWidth","bbHeight","margins","containerSize","containerStyle","containerBorder","containerPadding","clientHeight","getContainerSize","isConnected","Element","tooltipPosition","hasValue","final","defaultRoutes","formatters","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","newTicks","majorStart","majorEnd","ceil","grace","drawBorder","drawOnChartArea","drawTicks","tickLength","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkip","autoSkipPadding","labelOffset","minor","major","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","paddingLeft","paddingRight","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_maxLength","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","init","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","tickOpts","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","ticksLimit","maxTicksLimit","_tickSize","maxScale","maxChart","determineMaxTicks","majorIndices","enabled","getMajorIndices","numMajorIndices","first","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","afterAutoSkip","beforeFit","fit","afterFit","afterUpdate","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetLeft","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","positionAxisID","limit","step","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","lineCount","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","tickTextAlign","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","fontSize","TypedRegistry","isForType","isPrototypeOf","register","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","parts","routeDefaults","registerDefaults","unregister","registry","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getElement","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","arg","reg","_getRegistryForType","_exec","itemReg","component","camelMethod","PluginService","_init","notify","hook","_createDescriptors","descriptor","plugin","cancelable","invalidate","_oldCache","_notifyStateChanges","localIds","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","some","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","error","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","_config","initConfig","_scopeCache","_resolverCache","clearCache","clear","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","l1","l2","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","getElementById","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_listeners","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","timeout","clearTimeout","setTimeout","debounce","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","onResize","render","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","order","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_minPadding","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","changes","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","destroy","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","replay","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStart","outerEnd","innerStart","innerEnd","angleDelta","o","borderRadius","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","parseBorderRadius$1","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p4","p8","version","ArcElement","fullCircles","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","inner","lineJoin","drawFullCircleBorders","setStyle","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","pointIndex","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","LineElement","_path","_points","_segments","_pointsUpdated","segmentOptions","findStartAndEnd","chartContext","baseStyle","addStyle","st","dir","p0","p0DataIndex","p1DataIndex","doSplitByStyles","splitByStyles","solidSegments","_computeSegments","_interpolate","_getInterpolationMethod","interpolated","segmentMethod","path","strokePathWithCache","strokePathDirect","inRange$1","hitRadius","PointElement","mouseX","mouseY","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","outer","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","boundingRects","addRectPath","cleanDecimatedDataset","cleanDecimatedData","plugin_decimation","algorithm","beforeElementsUpdate","xAxis","decimated","getStartAndCountOfVisiblePointsSimplified","threshold","samples","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","lttbDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","minMaxDecimation","_getBounds","_findSegmentEnd","_getEdge","_createBoundaryLine","boundary","linePoints","_pointsFromSegments","_shouldApplyFill","_resolveTarget","propagate","visited","_decodeFill","fillOption","parseFillOption","firstCh","decodeTargetIndex","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","unshift","pointValue","firstValue","lastValue","simpleArc","_drawfill","getLineByIndex","sourcePoints","below","getLinesBelow","_buildStackLine","_getTargetValue","computeCircularBoundary","_getTargetPixel","computeLinearBoundary","computeBoundary","lineOpts","above","clipVertical","doFill","clipY","lineLoop","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","src","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","afterDatasetsUpdate","_args","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","getBoxSize","labelOpts","boxHeight","boxWidth","usePointStyle","pointStyleWidth","itemHeight","Legend","_added","legendHitBoxes","_hoveredItem","doughnutMode","legendItems","columnSizes","lineWidths","buildLabels","labelFont","_computeTitleHeight","_fitRows","_fitCols","hitboxes","totalHeight","row","heightLimit","totalWidth","currentColWidth","currentColHeight","col","adjustHitBoxes","rtlHelper","hitbox","_draw","defaultColor","fontColor","halfFontSize","cursor","textDirection","lineDash","drawOptions","SQRT2","yBoxTop","xBoxLeft","drawLegendBox","_textX","titleFont","titlePadding","topPaddingPlusHalfFontSize","_getLegendItemAt","hitBox","lh","handleEvent","onLeave","isListened","hoveredItem","sameItem","plugin_legend","_element","afterEvent","ci","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","titleBlock","createTitle","WeakMap","plugin_subtitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","String","createTooltipItem","getTooltipSize","body","footer","bodyFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","before","after","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","alignment","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","Tooltip","opacity","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","_willRender","hasTooltipContent","globalAlpha","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","labelCount","Decimation","Filler","SubTitle","CategoryScale","_startValue","_valueRange","_addedLabels","added","addedLabels","addIfString","lastIndexOf","findOrAddLabel","relativeLabelSize","minSpacing","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","getTickLimit","maxTicks","stepSize","computeTickLimit","generationOptions","dataRange","precision","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","generateTicks$1","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","updateLimits","limits","hLimits","vLimits","getTextAlignForAngle","yForAngle","pathRadiusLine","getPointPosition","RadialLinearScale","drawingArea","_pointLabels","_pointLabelItems","valueCount","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","plFont","setCenterPoint","extra","outerDistance","pointLabelPosition","buildPointLabelItems","fitWithPointLabels","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","backdropLeft","backdropTop","backdropWidth","backdropHeight","drawPointLabels","gridLineOpts","drawRadiusLine","animate","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","adapter","_adapter","parser","isoWeekday","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","time","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","offsetAfterAutoskip","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","datetime","_tickFormatFunction","minorFormat","majorFormat","offsets","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","span","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","registerables","NAME","Constructor","Prototype","NATIVE_ARRAY_BUFFER","DESCRIPTORS","global","isCallable","hasOwn","classof","tryToString","createNonEnumerableProperty","defineBuiltIn","setPrototypeOf","wellKnownSymbol","InternalStateModule","enforceInternalState","enforce","getInternalState","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","TypeError","TO_STRING_TAG","TYPED_ARRAY_TAG","TYPED_ARRAY_CONSTRUCTOR","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQUIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","getTypedArrayConstructor","it","state","isTypedArray","klass","Function","module","exports","aTypedArray","aTypedArrayConstructor","exportTypedArrayMethod","KEY","forced","ARRAY","TypedArrayConstructor","error2","exportTypedArrayStaticMethod","isView","uncurryThis","IndexedObject","toObject","lengthOfArrayLike","arraySpeciesCreate","createMethod","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","$this","callbackfn","that","specificCreate","self","boundFunction","every","find","filterReject","isInteger","toPrimitive","$TypeError","argument","prim","BigInt","toPositiveInteger","$RangeError","RangeError","BYTES","toIntegerOrInfinity","$","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","anInstance","createPropertyDescriptor","isIntegralNumber","toLength","toIndex","toOffset","toPropertyKey","isSymbol","typedArrayFrom","setSpecies","definePropertyModule","getOwnPropertyDescriptorModule","inheritIfRequired","setInternalState","nativeDefineProperty","nativeGetOwnPropertyDescriptor","ArrayBuffer","ArrayBufferPrototype","DataView","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","list","addGetter","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","stat","wrapper","CLAMPED","CONSTRUCTOR_NAME","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","view","byteOffset","setter","dummy","typedArrayOffset","$length","buffer","byteLength","$len","FORCED","sham","fails","checkCorrectnessOfIteration","iterable","aConstructor","getIterator","getIteratorMethod","isArrayIteratorMethod","isBigIntArray","toBigInt","thisIsBigIntArray","iterator","argumentsLength","mapfn","mapping","iteratorMethod","done","aCallable","newPromiseCapabilityModule","perform","iterate","allSettled","capability","reject","promiseResolve","counter","promise","alreadyCalled","status","reason","IS_PURE","NativePromiseConstructor","getBuiltIn","speciesConstructor","NativePromisePrototype","real","onFinally","unsafe","$fill","actualValue","valueOf","toIndexedObject","$set","WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS","TO_OBJECT_BUG","arrayLike","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","nativeSort","ACCEPT_INCORRECT_ARGUMENTS","STABLE_SORT","mod","expected","comparefn","getSortCompare","arraySlice","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","createTypedArrayConstructor","ma","q","u","na","pa","qa","ra","sa","ta","Aa","Ba","za","ba","ja","ka","ca","catch","race","define","amd","modules","Ca","Da","da","ua","page","where","ha","aa","ea","va","Ea","onmessage","search","content","postMessage","worker","log","async","substring","Fa","suggest","encode","depth","wa","memory","speed","score","balance","fast","la","xa","ya","registerMatcher","registerEncoder","ia","registerLanguage","stemmer","preset","Worker","tokenize","resolution","matcher","addMatcher","lang","doc","field","tag","store","Ga","importScripts","query","bool","oa","Ha","contextual","export","serialize","import","Ia","icase","simple","advanced","Blob","URL","createObjectURL","ipv4Part","ipv4Regexes","fourOctet","threeOctet","twoOctet","longValue","octalRegex","hexRegex","zoneIndex","ipv6Part","ipv6Regexes","deprecatedTransitional","transitional","expandIPv6","replacement","replacementCount","colonCount","lastColon","zoneId","substr","ref","results","matchCIDR","partSize","cidrBits","part","parseIntAuto","test","padPart","ipaddr","IPv4","octets","octet","SpecialRanges","unspecified","broadcast","multicast","linkLocal","loopback","carrierGradeNat","reserved","kind","cidrRange","prefixLengthFromSubnetMask","cidr","zerotable","zeros","subnetMatch","toByteArray","toIPv4MappedAddress","IPv6","toNormalizedString","broadcastAddressFromCIDR","parseCIDR","ipInterfaceOctets","subnetMaskOctets","subnetMaskFromPrefixLength","isIPv4","isValid","isValidFourPartDecimal","networkAddressFromCIDR","maskLength","filledOctetCount","uniqueLocal","ipv4Mapped","rfc6145","rfc6052","teredo","benchmarking","amt","as112v6","deprecated","orchid2","isIPv4MappedAddress","bytes","toFixedLengthString","addr","toIPv4Address","high","low","toRFC5952String","regex","bestMatchIndex","bestMatchLength","isIPv6","fromByteArray","e2","process","address","rangeList","defaultName","rangeName","rangeSubnets","subnet","iteratee","accumulator","baseEach","collection","SetCache","arrayIncludes","arrayIncludesWith","arrayMap","baseUnary","cacheHas","comparator","isCommon","valuesLength","computed","valuesIndex","arrayPush","isFlattenable","baseFlatten","predicate","isStrict","arrayAggregator","baseAggregator","baseIteratee","initializer","func","isArguments","spreadableSymbol","isConcatSpreadable","baseDifference","baseRest","isArrayLikeObject","difference","baseAssignValue","createAggregator","groupBy","_typeof","classCallCheck","instance","createClass","protoProps","staticProps","_extends","DOMIterator","iframes","exclude","iframesTimeout","filteredCtx","NodeList","querySelectorAll","isDescendant","contexts","ifr","successFn","errorFn","ifrWin","contentWindow","bl","trim","location","href","_this","called","tout","isIframeBlank","getIframeContents","readyState","observeIframeLoad","_this2","eachCalled","forEachIframe","waitForIframes","querySelector","handled","_this3","open","checkEnd","onIframeReady","con","whatToShow","createNodeIterator","contents","prevNode","compareDocumentPosition","Node","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","itr","previousNode","nextNode","currIfr","ifrDict","compareNodeIframe","eCb","fCb","_this4","createInstanceOnIframe","forEachNode","eachCb","filterCb","doneCb","_this5","createIterator","_getIteratorNode","getIteratorNode","checkIframeFilter","ifrNode","handleOpenIframes","_this6","getContexts","ready","iterateThroughNodes","selector","selectors","matchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","webkitMatchesSelector","sel","Mark$1","Mark","ie","navigator","userAgent","msg","level","opt","debug","wildcards","setupWildcardsRegExp","escapeStr","synonyms","createSynonymsRegExp","ignoreJoiners","ignorePunctuation","setupIgnoreJoinersRegExp","diacritics","createDiacriticsRegExp","createMergedBlanksRegExp","createJoinersRegExp","createWildcardsRegExp","createAccuracyRegExp","syn","sens","caseSensitive","joinerPlaceholder","k1","k2","processSynomyms","spaces","indx","nextChar","joiner","dct","ch","accuracy","ls","limiters","lsJoin","limiter","sv","kw","separateWordSearch","kwSplitted","noMatch","_callNoMatchOnInvalid","callNoMatchOnInvalidRanges","isNumeric","originalLength","nodes","NodeFilter","SHOW_TEXT","textContent","matchesExclude","FILTER_REJECT","FILTER_ACCEPT","hEl","startNode","splitText","repl","createElement","className","replaceChild","dict","sibl","startStr","endStr","wrapRangeInTextNode","previousSibling","ignoreGroups","endCb","matchIdx","getTextNodes","_this7","wrapRangeInMappedTextNode","ranges","_this8","_checkWhitespaceRange","checkWhitespaceRanges","docFrag","createDocumentFragment","firstChild","appendChild","removeChild","normalizeTextNode","nodeType","nextSibling","nodeValue","regexp","_this9","totalMatches","acrossElements","_this10","_getSeparatedKeywords","getSeparatedKeywords","kwArr","keywords","kwArrLen","createRegExp","term","rawRanges","_this11","checkRanges","wrapRangeFromIndex","_this12","SHOW_ELEMENT","unwrapMatches","matchesSel","_opt","mark","markRegExp","markRanges","unmark","factory","flexRender","Comp","isReactComponent","isClassComponent","$$typeof","description","isExoticComponent","useReactTable","resolvedOptions","onStateChange","renderFallbackValue","tableRef","setState","initialState","setOptions","updater","functionalUpdate","makeStateUpdater","old","memo","getDeps","deps","depTime","newDeps","dep","resultTime","onChange","depEndTime","resultEndTime","resultFpsPercentage","pad","createHeader","column","_options$id","header","isPlaceholder","placeholderId","subHeaders","colSpan","rowSpan","headerGroup","getLeafHeaders","leafHeaders","recurseHeader","_features","feature","Headers","createTable","getHeaderGroups","getAllColumns","getVisibleLeafColumns","getState","columnPinning","allColumns","leafColumns","_left$map$filter","_right$map$filter","leftColumns","columnId","Boolean","rightColumns","buildHeaderGroups","_table$options$debugA","debugAll","debugHeaders","getCenterHeaderGroups","_table$options$debugA2","getLeftHeaderGroups","_left$map$filter2","_table$options$debugA3","getRightHeaderGroups","_right$map$filter2","_table$options$debugA4","getFooterGroups","headerGroups","_table$options$debugA5","getLeftFooterGroups","_table$options$debugA6","getCenterFooterGroups","_table$options$debugA7","getRightFooterGroups","_table$options$debugA8","getFlatHeaders","headers","flat","_table$options$debugA9","getLeftFlatHeaders","_table$options$debugA10","getCenterFlatHeaders","_table$options$debugA11","getRightFlatHeaders","_table$options$debugA12","getCenterLeafHeaders","flatHeaders","_header$subHeaders","_table$options$debugA13","getLeftLeafHeaders","_header$subHeaders2","_table$options$debugA14","getRightLeafHeaders","_header$subHeaders3","_table$options$debugA15","_left$0$headers","_left$","_center$0$headers","_center$","_right$0$headers","_right$","_table$options$debugA16","columnsToGroup","headerFamily","_headerGroups$0$heade","_headerGroups$","maxDepth","findMaxDepth","columns","getIsVisible","_column$columns","createHeaderGroup","headersToGroup","pendingParentHeaders","headerToGroup","latestPendingParentHeader","bottomHeaders","recurseHeadersForSpans","childRowSpans","_ref","childColSpan","childRowSpan","defaultColumnSizing","ColumnSizing","getDefaultColumnDef","getInitialState","columnSizing","columnSizingInfo","startOffset","startSize","deltaOffset","deltaPercentage","isResizingColumn","columnSizingStart","getDefaultOptions","columnResizeMode","onColumnSizingChange","onColumnSizingInfoChange","createColumn","getSize","_column$columnDef$min","_column$columnDef$max","columnSize","columnDef","getStart","getLeftVisibleLeafColumns","getRightVisibleLeafColumns","prevSiblingColumn","resetSize","setColumnSizing","_ref2","_","getCanResize","_column$columnDef$ena","_table$options$enable","enableResizing","enableColumnResizing","getIsResizing","sum","recurse","_header$column$getSiz","prevSiblingHeader","getResizeHandler","getColumn","canResize","persist","isTouchStartEvent","newColumnSizing","updateOffset","eventType","clientXPos","setColumnSizingInfo","_old$startOffset","_old$startSize","_ref3","headerSize","onMove","onEnd","mouseEvents","moveHandler","upHandler","touchEvents","preventDefault","stopPropagation","_e$touches$","passiveIfSupported","supported","err","passiveEventSupported","resetColumnSizing","defaultState","_table$initialState$c","resetHeaderSizeInfo","_table$initialState$c2","getTotalSize","_table$getHeaderGroup","_table$getHeaderGroup2","getLeftTotalSize","_table$getLeftHeaderG","_table$getLeftHeaderG2","getCenterTotalSize","_table$getCenterHeade","_table$getCenterHeade2","getRightTotalSize","_table$getRightHeader","_table$getRightHeader2","Expanding","expanded","onExpandedChange","paginateExpandedRows","registered","queued","_autoResetExpanded","_table$options$autoRe","autoResetAll","autoResetExpanded","manualExpanding","_queue","resetExpanded","setExpanded","toggleAllRowsExpanded","getIsAllRowsExpanded","_table$initialState$e","_table$initialState","getCanSomeRowsExpand","getPrePaginationRowModel","flatRows","getCanExpand","getToggleAllRowsExpandedHandler","getIsSomeRowsExpanded","getRowModel","getIsExpanded","getExpandedDepth","rowsById","splitId","getPreExpandedRowModel","getSortedRowModel","getExpandedRowModel","_getExpandedRowModel","createRow","toggleExpanded","_expanded","exists","oldExpanded","rowId","_table$options$getIsR","getIsRowExpanded","_table$options$getRow","_row$subRows","getRowCanExpand","enableExpanding","subRows","getIsAllParentsExpanded","isFullyExpanded","currentRow","parentId","getRow","getToggleExpandedHandler","canExpand","includesString","filterValue","_row$getValue","getValue","autoRemove","testFalsey","includesStringSensitive","_row$getValue2","equalsString","_row$getValue3","arrIncludes","_row$getValue4","arrIncludesAll","_row$getValue5","arrIncludesSome","_row$getValue6","equals","weakEquals","inNumberRange","rowValue","resolveFilterValue","unsafeMin","unsafeMax","parsedMin","parsedMax","temp","filterFns","shouldAutoRemoveFilter","filterFn","aggregationFns","_leafRows","childRows","nextValue","extent","mean","leafRows","median","nums","unique","uniqueCount","_columnId","RowSelection","rowSelection","onRowSelectionChange","enableRowSelection","enableMultiRowSelection","enableSubRowSelection","setRowSelection","resetRowSelection","_table$initialState$r","toggleAllRowsSelected","getIsAllRowsSelected","preGroupedFlatRows","getPreGroupedRowModel","getCanSelect","toggleAllPageRowsSelected","resolvedValue","getIsAllPageRowsSelected","rows","mutateRowIsSelected","getPreSelectedRowModel","getCoreRowModel","getSelectedRowModel","rowModel","selectRowsFn","debugTable","getFilteredSelectedRowModel","getFilteredRowModel","getGroupedSelectedRowModel","isAllRowsSelected","paginationFlatRows","getPaginationRowModel","isAllPageRowsSelected","getIsSomeRowsSelected","_table$getState$rowSe","totalSelected","getIsSomePageRowsSelected","getIsSelected","getIsSomeSelected","getToggleAllRowsSelectedHandler","checked","getToggleAllPageRowsSelectedHandler","toggleSelected","isSelected","_opts$selectChildren","selectedRowIds","selectChildren","isRowSelected","isSubRowSelected","getIsAllSubRowsSelected","getCanSelectSubRows","_table$options$enable2","getCanMultiSelect","_table$options$enable3","getToggleSelectedHandler","canSelect","includeChildren","newSelectedFlatRows","newSelectedRowsById","recurseRows","_row$subRows2","selection","_selection$row$id","_row$subRows3","allChildrenSelected","someSelected","subRow","subRowChildrenSelected","reSplitAlphaNumeric","compareBasic","compareAlphanumeric","aStr","bStr","bb","an","bn","combo","sortingFns","alphanumeric","rowA","rowB","alphanumericCaseSensitive","textCaseSensitive","basic","features","columnVisibility","onColumnVisibilityChange","toggleVisibility","getCanHide","setColumnVisibility","_table$getState$colum","_table$getState$colum2","enableHiding","getToggleVisibilityHandler","_getAllVisibleCells","getAllCells","cells","cell","debugRows","getVisibleCells","getLeftVisibleCells","getCenterVisibleCells","getRightVisibleCells","makeVisibleColumnsMethod","getColumns","debugColumns","getVisibleFlatColumns","getAllFlatColumns","getAllLeafColumns","getLeftLeafColumns","getRightLeafColumns","getCenterVisibleLeafColumns","getCenterLeafColumns","resetColumnVisibility","toggleAllColumnsVisible","_value","getIsAllColumnsVisible","getIsSomeColumnsVisible","getToggleAllColumnsVisibilityHandler","columnOrder","onColumnOrderChange","setColumnOrder","resetColumnOrder","_getOrderColumnsFn","grouping","groupedColumnMode","orderedColumns","columnOrderCopy","columnsCopy","targetColumnId","foundIndex","nonGroupingColumns","orderColumns","rowPinning","onColumnPinningChange","onRowPinningChange","pin","columnIds","getLeafColumns","setColumnPinning","_old$left3","_old$right3","_old$left","_old$right","_old$left2","_old$right2","getCanPin","_d$columnDef$enablePi","enablePinning","enableColumnPinning","getIsPinned","leafColumnIds","isLeft","isRight","getPinnedIndex","includeLeafRows","includeParentRows","leafRowIds","getLeafRows","parentRowIds","getParentRows","rowIds","setRowPinning","_old$top3","_old$bottom3","_old$top","_old$bottom","_old$top2","_old$bottom2","_ref4","enableRowPinning","isTop","isBottom","_table$_getPinnedRows","_visiblePinnedRowIds$","visiblePinnedRowIds","_getPinnedRows","_ref5","allCells","leftAndRight","resetColumnPinning","getIsSomeColumnsPinned","_pinningState$positio","pinningState","_pinningState$left","_pinningState$right","resetRowPinning","_table$initialState2","getIsSomeRowsPinned","_pinningState$positio2","_pinningState$top","_pinningState$bottom","visibleRows","pinnedRowIds","_table$options$keepPi","keepPinnedRows","getTopRows","getBottomRows","getCenterRows","allRows","topAndBottom","columnFilters","globalFilter","onColumnFiltersChange","onGlobalFilterChange","filterFromLeafRows","maxLeafRowFilterDepth","globalFilterFn","getColumnCanGlobalFilter","_table$getCoreRowMode","_getAllCellsByColumnId","getAutoFilterFn","firstRow","getFilterFn","_table$options$filter","_table$options$filter2","getCanFilter","enableColumnFilter","enableColumnFilters","enableFilters","accessorFn","getCanGlobalFilter","_column$columnDef$ena2","_table$options$enable4","_table$options$getCol","enableGlobalFilter","getIsFiltered","getFilterIndex","getFilterValue","_table$getState$colum3","setFilterValue","setColumnFilters","previousfilter","newFilter","_old$filter","newFilterObj","_old$map","_getFacetedRowModel","getFacetedRowModel","getPreFilteredRowModel","_getFacetedUniqueValues","getFacetedUniqueValues","_getFacetedMinMaxValues","getFacetedMinMaxValues","columnFiltersMeta","getGlobalAutoFilterFn","getGlobalFilterFn","_table$options$filter3","_table$options$filter4","_functionalUpdate","setGlobalFilter","resetGlobalFilter","resetColumnFilters","_getFilteredRowModel","manualFiltering","_getGlobalFacetedRowModel","getGlobalFacetedRowModel","_getGlobalFacetedUniqueValues","getGlobalFacetedUniqueValues","_getGlobalFacetedMinMaxValues","getGlobalFacetedMinMaxValues","sorting","sortingFn","sortUndefined","onSortingChange","isMultiSortEvent","shiftKey","getAutoSortingFn","firstRows","isString","getAutoSortDir","getSortingFn","_table$options$sortin","_table$options$sortin2","toggleSorting","desc","multi","nextSortingOrder","getNextSortingOrder","hasManualValue","setSorting","existingSorting","existingIndex","sortAction","newSorting","nextDesc","_table$options$maxMul","getCanMultiSort","maxMultiSortColCount","getFirstSortDir","_column$columnDef$sor","sortDescFirst","firstSortDirection","isSorted","getIsSorted","enableSortingRemoval","enableMultiRemove","getCanSort","enableSorting","enableMultiSort","_table$getState$sorti","columnSort","getSortIndex","_table$getState$sorti2","_table$getState$sorti3","clearSorting","getToggleSortingHandler","canSort","resetSorting","_table$initialState$s","getPreSortedRowModel","getGroupedRowModel","_getSortedRowModel","manualSorting","aggregatedCell","_toString","_props$getValue","aggregationFn","onGroupingChange","toggleGrouping","setGrouping","getCanGroup","enableGrouping","getIsGrouped","_table$getState$group","getGroupedIndex","_table$getState$group2","getToggleGroupingHandler","canGroup","getAutoAggregationFn","getAggregationFn","_table$options$aggreg","_table$options$aggreg2","resetGrouping","_table$initialState$g","_getGroupedRowModel","manualGrouping","groupingColumnId","getGroupingValue","_groupingValuesCache","createCell","getIsPlaceholder","getIsAggregated","pagination","pageIndex","pageSize","onPaginationChange","_autoResetPageIndex","autoResetPageIndex","manualPagination","resetPageIndex","setPagination","resetPagination","_table$initialState$p","setPageIndex","maxPageIndex","pageCount","_table$initialState$p2","resetPageSize","_table$initialState$p3","setPageSize","topRowIndex","setPageCount","_table$options$pageCo","newPageCount","getPageOptions","getPageCount","pageOptions","getCanPreviousPage","getCanNextPage","previousPage","nextPage","_getPaginationRowModel","_table$options$pageCo2","_options$initialState","defaultOptions","_feature$getInitialSt","queuedTimeout","coreInstance","mergeOptions","_getRowId","getRowId","_getCoreRowModel","searchAll","_getDefaultColumnDef","defaultColumn","_defaultColumn","resolvedColumnDef","accessorKey","_props$renderValue$to","_props$renderValue","renderValue","_getColumnDefs","columnDefs","recurseColumns","_resolvedColumnDef$id","originalRow","_result","getFlatColumns","flatMap","_column$columns2","groupingColumnDef","_getAllFlatColumnsById","flatColumns","rowIndex","_valuesCache","_uniqueValuesCache","getUniqueValues","getChildren","subArr","children","flattenBy","getParentRow","parentRows","parentRow","_cell$getValue","createColumnHelper","accessor","group","accessRows","originalRows","_row$originalSubRows","getSubRows","originalSubRows","sortingState","sortedFlatRows","availableSorting","_table$getColumn","columnInfoById","sortEntry","invertSorting","sortData","sortedData","_sortEntry$desc","columnInfo","isDesc","sortInt","aUndefined","bUndefined"],"sourceRoot":""}