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","file":"static/js/14.ceb748a3.chunk.js","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Chart\", {\n enumerable: true,\n get: function get() {\n return _chart[\"default\"];\n }\n});\nexports.defaults = exports.Scatter = exports.Bubble = exports.Polar = exports.Radar = exports.HorizontalBar = exports.Bar = exports.Line = exports.Pie = exports.Doughnut = exports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _chart = _interopRequireDefault(require(\"chart.js\"));\n\nvar _isEqual = _interopRequireDefault(require(\"lodash/isEqual\"));\n\nvar _keyBy = _interopRequireDefault(require(\"lodash/keyBy\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar NODE_ENV = typeof process !== 'undefined' && process.env && process.env.NODE_ENV;\n\nvar ChartComponent = /*#__PURE__*/function (_React$Component) {\n _inherits(ChartComponent, _React$Component);\n\n var _super = _createSuper(ChartComponent);\n\n function ChartComponent() {\n var _this;\n\n _classCallCheck(this, ChartComponent);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"handleOnClick\", function (event) {\n var instance = _this.chartInstance;\n var _this$props = _this.props,\n getDatasetAtEvent = _this$props.getDatasetAtEvent,\n getElementAtEvent = _this$props.getElementAtEvent,\n getElementsAtEvent = _this$props.getElementsAtEvent,\n onElementsClick = _this$props.onElementsClick;\n getDatasetAtEvent && getDatasetAtEvent(instance.getDatasetAtEvent(event), event);\n getElementAtEvent && getElementAtEvent(instance.getElementAtEvent(event), event);\n getElementsAtEvent && getElementsAtEvent(instance.getElementsAtEvent(event), event);\n onElementsClick && onElementsClick(instance.getElementsAtEvent(event), event); // Backward compatibility\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ref\", function (element) {\n _this.element = element;\n });\n\n _this.chartInstance = undefined;\n return _this;\n }\n\n _createClass(ChartComponent, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.renderChart();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.redraw) {\n this.destroyChart();\n this.renderChart();\n return;\n }\n\n this.updateChart();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps) {\n var _this$props2 = this.props,\n redraw = _this$props2.redraw,\n type = _this$props2.type,\n options = _this$props2.options,\n plugins = _this$props2.plugins,\n legend = _this$props2.legend,\n height = _this$props2.height,\n width = _this$props2.width;\n\n if (nextProps.redraw === true) {\n return true;\n }\n\n if (height !== nextProps.height || width !== nextProps.width) {\n return true;\n }\n\n if (type !== nextProps.type) {\n return true;\n }\n\n if (!(0, _isEqual[\"default\"])(legend, nextProps.legend)) {\n return true;\n }\n\n if (!(0, _isEqual[\"default\"])(options, nextProps.options)) {\n return true;\n }\n\n var nextData = this.transformDataProp(nextProps);\n\n if (!(0, _isEqual[\"default\"])(this.shadowDataProp, nextData)) {\n return true;\n }\n\n return !(0, _isEqual[\"default\"])(plugins, nextProps.plugins);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.destroyChart();\n }\n }, {\n key: \"transformDataProp\",\n value: function transformDataProp(props) {\n var data = props.data;\n\n if (typeof data == 'function') {\n var node = this.element;\n return data(node);\n } else {\n return data;\n }\n } // Chart.js directly mutates the data.dataset objects by adding _meta proprerty\n // this makes impossible to compare the current and next data changes\n // therefore we memoize the data prop while sending a fake to Chart.js for mutation.\n // see https://github.com/chartjs/Chart.js/blob/master/src/core/core.controller.js#L615-L617\n\n }, {\n key: \"memoizeDataProps\",\n value: function memoizeDataProps() {\n if (!this.props.data) {\n return;\n }\n\n var data = this.transformDataProp(this.props);\n this.shadowDataProp = _objectSpread(_objectSpread({}, data), {}, {\n datasets: data.datasets && data.datasets.map(function (set) {\n return _objectSpread({}, set);\n })\n });\n this.saveCurrentDatasets(); // to remove the dataset metadata from this chart when the chart is destroyed\n\n return data;\n }\n }, {\n key: \"checkDatasets\",\n value: function checkDatasets(datasets) {\n var isDev = NODE_ENV !== 'production' && NODE_ENV !== 'prod';\n var usingCustomKeyProvider = this.props.datasetKeyProvider !== ChartComponent.getLabelAsKey;\n var multipleDatasets = datasets.length > 1;\n\n if (isDev && multipleDatasets && !usingCustomKeyProvider) {\n var shouldWarn = false;\n datasets.forEach(function (dataset) {\n if (!dataset.label) {\n shouldWarn = true;\n }\n });\n\n if (shouldWarn) {\n console.error('[react-chartjs-2] Warning: Each dataset needs a unique key. By default, the \"label\" property on each dataset is used. Alternatively, you may provide a \"datasetKeyProvider\" as a prop that returns a unique key.');\n }\n }\n }\n }, {\n key: \"getCurrentDatasets\",\n value: function getCurrentDatasets() {\n return this.chartInstance && this.chartInstance.config.data && this.chartInstance.config.data.datasets || [];\n }\n }, {\n key: \"saveCurrentDatasets\",\n value: function saveCurrentDatasets() {\n var _this2 = this;\n\n this.datasets = this.datasets || {};\n var currentDatasets = this.getCurrentDatasets();\n currentDatasets.forEach(function (d) {\n _this2.datasets[_this2.props.datasetKeyProvider(d)] = d;\n });\n }\n }, {\n key: \"updateChart\",\n value: function updateChart() {\n var _this3 = this;\n\n var options = this.props.options;\n var data = this.memoizeDataProps(this.props);\n if (!this.chartInstance) return;\n\n if (options) {\n this.chartInstance.options = _chart[\"default\"].helpers.configMerge(this.chartInstance.options, options);\n } // Pipe datasets to chart instance datasets enabling\n // seamless transitions\n\n\n var currentDatasets = this.getCurrentDatasets();\n var nextDatasets = data.datasets || [];\n this.checkDatasets(currentDatasets);\n var currentDatasetsIndexed = (0, _keyBy[\"default\"])(currentDatasets, this.props.datasetKeyProvider); // We can safely replace the dataset array, as long as we retain the _meta property\n // on each dataset.\n\n this.chartInstance.config.data.datasets = nextDatasets.map(function (next) {\n var current = currentDatasetsIndexed[_this3.props.datasetKeyProvider(next)];\n\n if (current && current.type === next.type && next.data) {\n // Be robust to no data. Relevant for other update mechanisms as in chartjs-plugin-streaming.\n // The data array must be edited in place. As chart.js adds listeners to it.\n current.data.splice(next.data.length);\n next.data.forEach(function (point, pid) {\n current.data[pid] = next.data[pid];\n });\n\n var _data = next.data,\n otherProps = _objectWithoutProperties(next, [\"data\"]); // Merge properties. Notice a weakness here. If a property is removed\n // from next, it will be retained by current and never disappears.\n // Workaround is to set value to null or undefined in next.\n\n\n return _objectSpread(_objectSpread({}, current), otherProps);\n } else {\n return next;\n }\n });\n\n var datasets = data.datasets,\n rest = _objectWithoutProperties(data, [\"datasets\"]);\n\n this.chartInstance.config.data = _objectSpread(_objectSpread({}, this.chartInstance.config.data), rest);\n this.chartInstance.update();\n }\n }, {\n key: \"renderChart\",\n value: function renderChart() {\n var _this$props3 = this.props,\n options = _this$props3.options,\n legend = _this$props3.legend,\n type = _this$props3.type,\n plugins = _this$props3.plugins;\n var node = this.element;\n var data = this.memoizeDataProps();\n\n if (typeof legend !== 'undefined' && !(0, _isEqual[\"default\"])(ChartComponent.defaultProps.legend, legend)) {\n options.legend = legend;\n }\n\n this.chartInstance = new _chart[\"default\"](node, {\n type: type,\n data: data,\n options: options,\n plugins: plugins\n });\n }\n }, {\n key: \"destroyChart\",\n value: function destroyChart() {\n if (!this.chartInstance) {\n return;\n } // Put all of the datasets that have existed in the chart back on the chart\n // so that the metadata associated with this chart get destroyed.\n // This allows the datasets to be used in another chart. This can happen,\n // for example, in a tabbed UI where the chart gets created each time the\n // tab gets switched to the chart and uses the same data).\n\n\n this.saveCurrentDatasets();\n var datasets = Object.values(this.datasets);\n this.chartInstance.config.data.datasets = datasets;\n this.chartInstance.destroy();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n height = _this$props4.height,\n width = _this$props4.width,\n id = _this$props4.id;\n return /*#__PURE__*/_react[\"default\"].createElement(\"canvas\", {\n ref: this.ref,\n height: height,\n width: width,\n id: id,\n onClick: this.handleOnClick\n });\n }\n }]);\n\n return ChartComponent;\n}(_react[\"default\"].Component);\n\n_defineProperty(ChartComponent, \"getLabelAsKey\", function (d) {\n return d.label;\n});\n\n_defineProperty(ChartComponent, \"propTypes\", {\n data: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].object, _propTypes[\"default\"].func]).isRequired,\n getDatasetAtEvent: _propTypes[\"default\"].func,\n getElementAtEvent: _propTypes[\"default\"].func,\n getElementsAtEvent: _propTypes[\"default\"].func,\n height: _propTypes[\"default\"].number,\n legend: _propTypes[\"default\"].object,\n onElementsClick: _propTypes[\"default\"].func,\n options: _propTypes[\"default\"].object,\n plugins: _propTypes[\"default\"].arrayOf(_propTypes[\"default\"].object),\n redraw: _propTypes[\"default\"].bool,\n type: function type(props, propName, componentName) {\n if (!_chart[\"default\"].controllers[props[propName]]) {\n return new Error('Invalid chart type `' + props[propName] + '` supplied to' + ' `' + componentName + '`.');\n }\n },\n width: _propTypes[\"default\"].number,\n datasetKeyProvider: _propTypes[\"default\"].func\n});\n\n_defineProperty(ChartComponent, \"defaultProps\", {\n legend: {\n display: true,\n position: 'bottom'\n },\n type: 'doughnut',\n height: 150,\n width: 300,\n redraw: false,\n options: {},\n datasetKeyProvider: ChartComponent.getLabelAsKey\n});\n\nvar _default = ChartComponent;\nexports[\"default\"] = _default;\n\nvar Doughnut = /*#__PURE__*/function (_React$Component2) {\n _inherits(Doughnut, _React$Component2);\n\n var _super2 = _createSuper(Doughnut);\n\n function Doughnut() {\n _classCallCheck(this, Doughnut);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(Doughnut, [{\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref) {\n return _this4.chartInstance = _ref && _ref.chartInstance;\n },\n type: \"doughnut\"\n }));\n }\n }]);\n\n return Doughnut;\n}(_react[\"default\"].Component);\n\nexports.Doughnut = Doughnut;\n\nvar Pie = /*#__PURE__*/function (_React$Component3) {\n _inherits(Pie, _React$Component3);\n\n var _super3 = _createSuper(Pie);\n\n function Pie() {\n _classCallCheck(this, Pie);\n\n return _super3.apply(this, arguments);\n }\n\n _createClass(Pie, [{\n key: \"render\",\n value: function render() {\n var _this5 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref2) {\n return _this5.chartInstance = _ref2 && _ref2.chartInstance;\n },\n type: \"pie\"\n }));\n }\n }]);\n\n return Pie;\n}(_react[\"default\"].Component);\n\nexports.Pie = Pie;\n\nvar Line = /*#__PURE__*/function (_React$Component4) {\n _inherits(Line, _React$Component4);\n\n var _super4 = _createSuper(Line);\n\n function Line() {\n _classCallCheck(this, Line);\n\n return _super4.apply(this, arguments);\n }\n\n _createClass(Line, [{\n key: \"render\",\n value: function render() {\n var _this6 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref3) {\n return _this6.chartInstance = _ref3 && _ref3.chartInstance;\n },\n type: \"line\"\n }));\n }\n }]);\n\n return Line;\n}(_react[\"default\"].Component);\n\nexports.Line = Line;\n\nvar Bar = /*#__PURE__*/function (_React$Component5) {\n _inherits(Bar, _React$Component5);\n\n var _super5 = _createSuper(Bar);\n\n function Bar() {\n _classCallCheck(this, Bar);\n\n return _super5.apply(this, arguments);\n }\n\n _createClass(Bar, [{\n key: \"render\",\n value: function render() {\n var _this7 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref4) {\n return _this7.chartInstance = _ref4 && _ref4.chartInstance;\n },\n type: \"bar\"\n }));\n }\n }]);\n\n return Bar;\n}(_react[\"default\"].Component);\n\nexports.Bar = Bar;\n\nvar HorizontalBar = /*#__PURE__*/function (_React$Component6) {\n _inherits(HorizontalBar, _React$Component6);\n\n var _super6 = _createSuper(HorizontalBar);\n\n function HorizontalBar() {\n _classCallCheck(this, HorizontalBar);\n\n return _super6.apply(this, arguments);\n }\n\n _createClass(HorizontalBar, [{\n key: \"render\",\n value: function render() {\n var _this8 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref5) {\n return _this8.chartInstance = _ref5 && _ref5.chartInstance;\n },\n type: \"horizontalBar\"\n }));\n }\n }]);\n\n return HorizontalBar;\n}(_react[\"default\"].Component);\n\nexports.HorizontalBar = HorizontalBar;\n\nvar Radar = /*#__PURE__*/function (_React$Component7) {\n _inherits(Radar, _React$Component7);\n\n var _super7 = _createSuper(Radar);\n\n function Radar() {\n _classCallCheck(this, Radar);\n\n return _super7.apply(this, arguments);\n }\n\n _createClass(Radar, [{\n key: \"render\",\n value: function render() {\n var _this9 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref6) {\n return _this9.chartInstance = _ref6 && _ref6.chartInstance;\n },\n type: \"radar\"\n }));\n }\n }]);\n\n return Radar;\n}(_react[\"default\"].Component);\n\nexports.Radar = Radar;\n\nvar Polar = /*#__PURE__*/function (_React$Component8) {\n _inherits(Polar, _React$Component8);\n\n var _super8 = _createSuper(Polar);\n\n function Polar() {\n _classCallCheck(this, Polar);\n\n return _super8.apply(this, arguments);\n }\n\n _createClass(Polar, [{\n key: \"render\",\n value: function render() {\n var _this10 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref7) {\n return _this10.chartInstance = _ref7 && _ref7.chartInstance;\n },\n type: \"polarArea\"\n }));\n }\n }]);\n\n return Polar;\n}(_react[\"default\"].Component);\n\nexports.Polar = Polar;\n\nvar Bubble = /*#__PURE__*/function (_React$Component9) {\n _inherits(Bubble, _React$Component9);\n\n var _super9 = _createSuper(Bubble);\n\n function Bubble() {\n _classCallCheck(this, Bubble);\n\n return _super9.apply(this, arguments);\n }\n\n _createClass(Bubble, [{\n key: \"render\",\n value: function render() {\n var _this11 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref8) {\n return _this11.chartInstance = _ref8 && _ref8.chartInstance;\n },\n type: \"bubble\"\n }));\n }\n }]);\n\n return Bubble;\n}(_react[\"default\"].Component);\n\nexports.Bubble = Bubble;\n\nvar Scatter = /*#__PURE__*/function (_React$Component10) {\n _inherits(Scatter, _React$Component10);\n\n var _super10 = _createSuper(Scatter);\n\n function Scatter() {\n _classCallCheck(this, Scatter);\n\n return _super10.apply(this, arguments);\n }\n\n _createClass(Scatter, [{\n key: \"render\",\n value: function render() {\n var _this12 = this;\n\n return /*#__PURE__*/_react[\"default\"].createElement(ChartComponent, _extends({}, this.props, {\n ref: function ref(_ref9) {\n return _this12.chartInstance = _ref9 && _ref9.chartInstance;\n },\n type: \"scatter\"\n }));\n }\n }]);\n\n return Scatter;\n}(_react[\"default\"].Component);\n\nexports.Scatter = Scatter;\nvar defaults = _chart[\"default\"].defaults;\nexports.defaults = defaults;","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = t