{"version":3,"file":"static/js/vendors-88f28e38.36aa82f2.js","mappings":"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","sources":["../node_modules/clone/clone.js","../node_modules/clsx/dist/clsx.js","../node_modules/classnames/index.js","../node_modules/chart.js/auto/auto.mjs","../node_modules/chart.js/dist/chunks/helpers.segment.mjs","../node_modules/classcat/index.js","../node_modules/clsx/dist/clsx.mjs"],"sourcesContent":["var clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n","function r(e){var o,t,f=\"\";if(\"string\"==typeof e||\"number\"==typeof e)f+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var n=e.length;for(o=0;o (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 keyResolvers = {\n '': v => v,\n x: o => o.x,\n y: o => o.y\n};\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\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\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, last) =>\n _lookup(table, value, last\n ? index => table[index][key] <= value\n : 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 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};\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, true).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).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\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 _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 { _isPointInArea as $, _factorize as A, finiteOrDefault as B, callback as C, _addGrace as D, _limitValue as E, toDegrees as F, _measureText as G, HALF_PI as H, _int16Range as I, _alignPixel as J, toPadding as K, clipArea as L, renderText as M, unclipArea as N, toFont as O, PI as P, each as Q, _toLeftRightCenter as R, _alignStartEnd as S, TAU as T, overrides as U, merge as V, _capitalize as W, getRelativePosition as X, _rlookupByKey as Y, _lookupByKey as Z, _arrayUnique as _, resolve as a, toLineHeight as a$, getAngleFromPoint as a0, getMaximumSize as a1, _getParentNode as a2, readUsedSize as a3, throttled as a4, supportsEventListenerOptions as a5, _isDomSupported as a6, descriptors as a7, isFunction as a8, _attachContext as a9, getRtlAdapter as aA, overrideTextDirection as aB, _textX as aC, restoreTextDirection as aD, drawPointLegend as aE, noop as aF, distanceBetweenPoints as aG, _setMinAndMaxByKey as aH, niceNum as aI, almostWhole as aJ, almostEquals as aK, _decimalPlaces as aL, _longestText as aM, _filterBetween as aN, _lookup as aO, isPatternOrGradient as aP, getHoverColor as aQ, clone$1 as aR, _merger as aS, _mergerIf as aT, _deprecated as aU, _splitKey as aV, toFontString as aW, splineCurve as aX, splineCurveMonotone as aY, getStyle as aZ, fontString as a_, _createResolver as aa, _descriptors as ab, mergeIf as ac, uid as ad, debounce as ae, retinaScale as af, clearCanvas as ag, setsEqual as ah, _elementsEqual as ai, _isClickEvent as aj, _isBetween as ak, _readValueToProps as al, _updateBezierControlPoints as am, _computeSegments as an, _boundSegments as ao, _steppedInterpolation as ap, _bezierInterpolation as aq, _pointInLine as ar, _steppedLineTo as as, _bezierCurveTo as at, drawPoint as au, addRoundedRectPath as av, toTRBL as aw, toTRBLCorners as ax, _boundSegment as ay, _normalizeAngle as az, isArray as b, PITAU as b0, INFINITY as b1, RAD_PER_DEG as b2, QUARTER_PI as b3, TWO_THIRDS_PI as b4, _angleDiff as b5, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, log10 as z };\n","export default function cc(names) {\n if (typeof names === \"string\" || typeof names === \"number\") return \"\" + names\n\n let out = \"\"\n\n if (Array.isArray(names)) {\n for (let i = 0, tmp; i < names.length; i++) {\n if ((tmp = cc(names[i])) !== \"\") {\n out += (out && \" \") + tmp\n }\n }\n } else {\n for (let k in names) {\n if (names[k]) out += (out && \" \") + k\n }\n }\n\n return out\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t