{"version":3,"sources":["webpack:///./node_modules/chart.js/src/plugins/plugin.legend.js","webpack:///./node_modules/chart.js/src/helpers/helpers.options.js","webpack:///./node_modules/chart.js/src/core/core.animation.js","webpack:///./node_modules/vuetify/lib/mixins/transitionable.js","webpack:///./node_modules/vuetify/lib/components/VAlert/VAlert.js","webpack:///./node_modules/chart.js/src/core/core.defaults.js","webpack:///./node_modules/core-js/modules/_array-methods.js","webpack:///./src/components/WarningAlert.vue?1caf","webpack:///./node_modules/core-js/modules/_is-array.js","webpack:///./node_modules/core-js/modules/_object-gopd.js","webpack:///./node_modules/vuetify/lib/components/VCard/VCardTitle.js","webpack:///./node_modules/chart.js/src/controllers/controller.line.js","webpack:///./node_modules/chart.js/src/platforms/platform.basic.js","webpack:///./node_modules/core-js/modules/es6.array.find-index.js","webpack:///./node_modules/chart.js/src/core/core.datasetController.js","webpack:///./node_modules/chart.js/src/core/core.element.js","webpack:///./node_modules/chartjs-color/node_modules/color-convert/conversions.js","webpack:///./node_modules/chart.js/src/charts/Chart.Bar.js","webpack:///./node_modules/chart.js/src/elements/element.point.js","webpack:///./node_modules/chartjs-color/node_modules/color-convert/index.js","webpack:///./node_modules/chart.js/src/charts/Chart.Bubble.js","webpack:///./node_modules/chart.js/src/scales/scale.time.js","webpack:///./node_modules/chart.js/src/helpers/index.js","webpack:///./node_modules/chart.js/src/helpers/helpers.canvas.js","webpack:///./node_modules/chart.js/src/charts/Chart.Scatter.js","webpack:///./node_modules/chart.js/src/charts/Chart.Doughnut.js","webpack:///./node_modules/chart.js/src/helpers/helpers.core.js","webpack:///./node_modules/color-name/index.js","webpack:///./node_modules/core-js/modules/_object-pie.js","webpack:///./node_modules/chart.js/src/elements/element.line.js","webpack:///./node_modules/chart.js/src/core/core.plugins.js","webpack:///./src/components/LoadSpinner.vue?e9b6","webpack:///src/components/LoadSpinner.vue","webpack:///./src/components/LoadSpinner.vue?a82b","webpack:///./src/components/LoadSpinner.vue","webpack:///./src/components/LoadSpinner.vue?dfe9","webpack:///./node_modules/chart.js/src/chart.js","webpack:///./node_modules/chart.js/src/controllers/controller.doughnut.js","webpack:///./node_modules/core-js/modules/_inherit-if-required.js","webpack:///./node_modules/chart.js/src/elements/element.arc.js","webpack:///./node_modules/chart.js/src/scales/scale.linear.js","webpack:///./node_modules/chart.js/src/scales/scale.logarithmic.js","webpack:///./node_modules/chart.js/src/controllers/controller.bar.js","webpack:///./node_modules/chart.js/src/controllers/controller.radar.js","webpack:///./node_modules/chart.js/src/controllers/controller.bubble.js","webpack:///./node_modules/chart.js/src/core/core.scale.js","webpack:///./node_modules/core-js/modules/es6.array.find.js","webpack:///./node_modules/chart.js/src/core/core.animations.js","webpack:///./node_modules/chart.js/src/core/core.layouts.js","webpack:///./node_modules/chart.js/src/core/core.ticks.js","webpack:///./node_modules/chart.js/src/platforms/platform.js","webpack:///./node_modules/chart.js/src/charts/Chart.Radar.js","webpack:///./node_modules/core-js/modules/_set-proto.js","webpack:///./node_modules/chart.js/src/plugins/index.js","webpack:///./node_modules/core-js/modules/_object-gopn.js","webpack:///./node_modules/vuetify/lib/components/VResponsive/VResponsive.js","webpack:///./node_modules/vuetify/lib/components/VResponsive/index.js","webpack:///./node_modules/vuetify/lib/components/VImg/VImg.js","webpack:///./node_modules/vuetify/lib/components/VCard/VCardMedia.js","webpack:///./node_modules/vuetify/lib/components/VCard/index.js","webpack:///./node_modules/chartjs-color-string/color-string.js","webpack:///./node_modules/chart.js/src/plugins/plugin.title.js","webpack:///./node_modules/chart.js/src/core/core.interaction.js","webpack:///./node_modules/chart.js/src/core/core.helpers.js","webpack:///./node_modules/chart.js/src/scales/scale.linearbase.js","webpack:///./node_modules/core-js/modules/_string-trim.js","webpack:///./node_modules/chart.js/src/charts/Chart.PolarArea.js","webpack:///./node_modules/chart.js/src/platforms/platform.dom.js","webpack:///./node_modules/core-js/modules/web.dom.iterable.js","webpack:///./node_modules/chart.js/src/core/core.scaleService.js","webpack:///./node_modules/chart.js/src/helpers/helpers.easing.js","webpack:///./node_modules/chart.js/src/plugins/plugin.filler.js","webpack:///./node_modules/chart.js/src/elements/index.js","webpack:///./node_modules/core-js/modules/es6.number.constructor.js","webpack:///./node_modules/chart.js/src/core/core.tooltip.js","webpack:///./node_modules/chart.js/src/core/core.js","webpack:///./src/views/Result.vue?c5e3","webpack:///./node_modules/core-js/modules/_array-species-create.js","webpack:///./node_modules/chart.js/src/elements/element.rectangle.js","webpack:///./node_modules/chart.js/src/controllers/controller.scatter.js","webpack:///./node_modules/chart.js/src/controllers/controller.polarArea.js","webpack:///./node_modules/core-js/modules/_array-species-constructor.js","webpack:///./node_modules/chart.js/src/core/core.controller.js","webpack:///./node_modules/chartjs-color/index.js","webpack:///./node_modules/chart.js/src/charts/Chart.Line.js","webpack:///./src/views/Result.vue?1650","webpack:///./node_modules/vue-chartjs/es/mixins/index.js","webpack:///./node_modules/vue-chartjs/es/BaseCharts.js","webpack:///./src/components/ResultGraph.vue","webpack:///src/components/ResultGraph.vue","webpack:///./src/components/ResultGraph.vue?1c23","webpack:///./src/components/WarningAlert.vue?cf4e","webpack:///src/components/WarningAlert.vue","webpack:///./src/components/WarningAlert.vue?a9bf","webpack:///./src/components/WarningAlert.vue","webpack:///src/views/Result.vue","webpack:///./src/views/Result.vue?4098","webpack:///./src/views/Result.vue","webpack:///./node_modules/chart.js/src/scales/scale.category.js","webpack:///./node_modules/chart.js/src/scales/scale.radialLinear.js","webpack:///./node_modules/core-js/modules/_string-ws.js"],"names":["defaults","__webpack_require__","Element","helpers","layouts","noop","getBoxWidth","labelOpts","fontSize","usePointStyle","Math","SQRT2","boxWidth","_set","legend","display","position","fullWidth","reverse","weight","onClick","e","legendItem","index","datasetIndex","ci","this","chart","meta","getDatasetMeta","hidden","data","datasets","update","onHover","labels","padding","generateLabels","isArray","map","dataset","i","text","label","fillStyle","backgroundColor","isDatasetVisible","lineCap","borderCapStyle","lineDash","borderDash","lineDashOffset","borderDashOffset","lineJoin","borderJoinStyle","lineWidth","borderWidth","strokeStyle","borderColor","pointStyle","legendCallback","push","id","length","join","Legend","extend","initialize","config","legendHitBoxes","doughnutMode","beforeUpdate","maxWidth","maxHeight","margins","me","beforeSetDimensions","setDimensions","afterSetDimensions","beforeBuildLabels","buildLabels","afterBuildLabels","beforeFit","fit","afterFit","afterUpdate","minSize","isHorizontal","width","left","right","height","top","bottom","paddingLeft","paddingTop","paddingRight","paddingBottom","options","legendItems","callback","filter","item","opts","ctx","globalDefault","global","valueOrDefault","defaultFontSize","fontStyle","defaultFontStyle","fontFamily","defaultFontFamily","labelFont","fontString","hitboxes","font","lineWidths","totalHeight","textAlign","textBaseline","each","measureText","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","max","draw","lineDefault","elements","line","legendWidth","cursor","fontColor","defaultFontColor","drawLegendBox","x","y","isNaN","save","defaultColor","isLineWidthZero","setLineDash","radius","offSet","centerX","centerY","canvas","drawPoint","strokeRect","fillRect","restore","fillText","textWidth","halfFontSize","xLeft","yMiddle","beginPath","moveTo","lineTo","stroke","handleEvent","type","changed","lh","hitBox","call","native","createNewLegendAndAttach","legendOpts","configure","addBox","module","exports","_element","beforeInit","mergeIf","removeBox","afterEvent","toLineHeight","value","size","matches","match","toPadding","t","r","b","l","isObject","resolve","inputs","context","ilen","undefined","currentStep","numSteps","easing","render","onAnimationProgress","onAnimationComplete","Object","defineProperty","prototype","get","set","transitionable","vue_runtime_esm","name","props","mode","String","origin","transition","__webpack_exports__","mixins","colorable","toggleable","dismissible","Boolean","icon","outline","validator","val","includes","computed","computedColor","color","computedIcon","methods","genIcon","$createElement","VIcon","class","genDismissible","_this","on","click","isActive","h","children","$slots","default","setColor","setTextColor","setBackgroundColor","alert","staticClass","v-alert--outline","directives","$listeners","scope","values","merge","IObject","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","callbackfn","that","res","O","self","f","result","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_WarningAlert_vue_vue_type_style_index_0_id_39fdedc1_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_WarningAlert_vue_vue_type_style_index_0_id_39fdedc1_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","n","cof","Array","arg","pIE","createDesc","toIObject","toPrimitive","has","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","P","vue__WEBPACK_IMPORTED_MODULE_0__","functional","primaryTitle","_ref","trim","showLines","spanGaps","hover","scales","xAxes","yAxes","Chart","lineEnabled","showLine","controllers","DatasetController","datasetElementType","Line","dataElementType","Point","reset","custom","getMeta","points","lineElementOptions","scale","getScaleForId","yAxisID","getDataset","tension","lineTension","_scale","_datasetIndex","_children","_model","fill","steppedLine","stepped","cubicInterpolationMode","pivot","updateElement","updateBezierControlPoints","getPointBackgroundColor","point","pointBackgroundColor","valueAtIndexOrDefault","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","getPointRotation","pointRotation","rotation","yScale","xScale","xAxisID","pointOptions","pointRadius","hitRadius","pointHitRadius","getPixelForValue","NaN","getBasePixel","calculatePointY","_xScale","_yScale","_index","skip","ds","dsMeta","sumPos","sumNeg","stacked","stackedRightValue","Number","getRightValue","rightValue","model","controlPoints","area","chartArea","capControlPoint","pt","min","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","next","controlPointNextY","capBezierPoints","halfBorderWidth","clipArea","unclipArea","setHoverStyle","element","$previousStyle","hoverBackgroundColor","pointHoverBackgroundColor","getHoverColor","hoverBorderColor","pointHoverBorderColor","hoverBorderWidth","pointHoverBorderWidth","hoverRadius","pointHoverRadius","acquireContext","getContext","$export","$find","KEY","forced","F","findIndex","arguments","arrayEvents","listenArrayEvents","array","listener","_chartjs","listeners","configurable","enumerable","forEach","key","method","charAt","toUpperCase","slice","base","args","apply","object","unlistenArrayEvents","stub","indexOf","splice","linkScales","addElements","updateIndex","scaleID","destroy","_data","createMetaDataset","_chart","createMetaData","metaData","addElementAndReset","buildOrUpdateElements","resyncElements","easingValue","removeHoverStyle","numMeta","numData","insertElements","start","count","onDataPush","onDataPop","pop","onDataShift","shift","onDataSplice","onDataUnshift","inherits","interpolate","view","ease","actual","target","c0","c1","keys","hasOwnProperty","valid","mix","rgbString","isFinite","configuration","_view","clone","_start","tooltipPosition","hasValue","isNumber","rgb2hsl","rgb","s","g","delta","rgb2hsv","v","rgb2hwb","w","rgb2cmyk","c","m","k","rgb2keyword","reverseKeywords","JSON","stringify","rgb2xyz","pow","z","rgb2lab","a","xyz","rgb2lch","lab2lch","hsl2rgb","hsl","t1","t2","t3","hsl2hsv","sv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hsv","hi","floor","p","q","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","hwb","wh","bl","ratio","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab","y2","hr","atan2","PI","sqrt","lab2rgb","lch2lab","lch","cos","sin","lch2xyz","lch2rgb","keyword2rgb","keyword","cssKeywords","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","Bar","xRange","mouseX","vm","abs","yRange","mouseY","inRange","inLabelRange","inXRange","inYRange","getCenterPoint","getArea","errMargin","conversions","convert","Converter","func","pair","exec","from","to","round","convs","routeSpace","space","getValues","setValues","vals","fspace","Bubble","moment","window","Scale","scaleService","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","items","hash","out","buildLookupTable","timestamps","distribution","time","pos","prev","curr","table","lookup","mid","i0","i1","lo","skey","sval","tkey","range","span","offset","momentify","parser","format","isValid","parse","input","isNullOrUndef","startOf","valueOf","determineStepSize","unit","capacity","factor","interval","milliseconds","ceil","determineUnitForAutoTicks","minUnit","determineUnitForFormatting","ticks","duration","diff","as","determineMajorUnit","generate","timeOpts","minor","major","stepSize","unitStepSize","weekday","isoWeekday","majorTicksEnabled","enabled","first","last","add","computeOffsets","upper","lower","ticksFromTimestamps","majorUnit","determineLabelFormat","momentDate","hasTime","defaultConfig","bounds","displayFormat","displayFormats","autoSkip","source","TimeScale","Error","mergeTicksOptions","console","warn","rawValue","determineDataLimits","j","jlen","timestamp","sort","endOf","_horizontal","_table","_timestamps","buildTicks","getLabelCapacity","_unit","_majorUnit","_offsets","_labelFormat","getLabelForIndex","tooltipFormat","tickFormatFunction","tick","formatOverride","formats","minorFormat","majorFormat","majorTime","majorTickOpts","tickOpts","formatter","userCallback","convertTicksToLabels","getPixelForOffset","getPixelForTick","getTicks","getValueForPixel","pixel","getLabelWidth","ticksOpts","tickLabelWidth","angle","toRadians","maxRotation","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","innerWidth","registerScaleType","clear","clearRect","roundedRect","epsilon","arcTo","closePath","rect","style","edgeLength","xOffset","yOffset","toString","drawImage","translate","rotate","arc","leftX","topY","sideSize","clip","flip","bezierCurveTo","drawRoundedRectangle","Scatter","Doughnut","uid","defaultValue","fn","thisArg","loopable","len","arrayEquals","a0","a1","v0","v1","klen","_merger","tval","_mergerIf","sources","merger","setFn","extensions","ChartElement","constructor","Surrogate","__super__","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","propertyIsEnumerable","globalDefaults","current","currentVM","globalOptionLineElements","lastDrawnIndex","_loop","plugins","_plugins","_cacheId","register","concat","plugin","unregister","idx","getAll","notify","hook","descriptor","params","descriptors","cache","$plugins","_invalidate","_vm","_h","_c","_self","attrs","align-center","justify-center","indeterminate","staticRenderFns","LoadSpinnervue_type_script_lang_js_","components_LoadSpinnervue_type_script_lang_js_","component","componentNormalizer","__file","installComponents_default","VContent","VLayout","VProgressCircular","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LoadSpinner_vue_vue_type_style_index_0_id_e7cdcc06_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_LoadSpinner_vue_vue_type_style_index_0_id_e7cdcc06_scoped_true_lang_css___WEBPACK_IMPORTED_MODULE_0___default","Animation","animationService","Interaction","platform","Ticks","Tooltip","Title","title","pluginService","PluginBase","canvasHelpers","layoutService","animation","animateRotate","animateScale","arcOpts","bw","cutoutPercentage","circumference","tooltips","callbacks","tooltipItem","dataLabel","doughnut","pie","Arc","getRingIndex","ringIndex","availableWidth","availableHeight","startAngle","endAngle","end","contains0","contains90","contains180","contains270","cutout","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","calculateCircumference","elementOpts","arcs","hoverWidth","setPrototypeOf","C","S","chartX","chartY","pointRelativePosition","getAngleFromPoint","distance","betweenAngles","withinRadius","halfAngle","halfRadius","centreAngle","rangeFromCentre","sA","eA","formatters","linear","LinearScale","LinearScaleBase","DEFAULT_MIN","DEFAULT_MAX","IDMatches","hasStacks","stack","valuesPerStack","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","maxTicks","maxTicksLimit","handleDirectionalChanges","innerDimension","ticksAsNumbers","generateTicks","generationOptions","dataRange","exp","significand","tickVal","log10","endExp","endSignificand","minNotZero","precision","lastTick","logarithmic","LogarithmicScale","tickValues","_getFirstTickValue","sign","firstTickValue","computeMinSampleSize","pixels","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","chunk","computeFlexCategoryTraits","percent","gridLines","offsetGridLines","axis","rectangle","borderSkipped","yLabel","datasetLabel","xLabel","bar","Rectangle","rects","_ruler","getRuler","rectangleOptions","updateElementGeometry","vscale","getValueScale","horizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","getValueScaleId","getIndexScaleId","getIndexScale","_getStacks","stacks","getStackCount","getStackIndex","imeta","ivalue","controller","stackIndex","maxBarThickness","Infinity","horizontalBar","radar","pointElementOptions","pointPosition","getPointPositionForValue","xCenter","yCenter","dataPoint","bubble","_resolveElementOptions","dsIndex","getPixelForDecimal","_options","dataIndex","labelsFromTicks","getLineValue","lineValue","computeTextSize","longestText","parseFontOptions","family","parseLineHeight","lineHeight","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","beginAtZero","minRotation","mirror","autoSkipPadding","labelOffset","getPadding","_ticks","longestTextCache","beforeDataLimits","afterDataLimits","beforeBuildTicks","afterBuildTicks","beforeTickToLabelConversion","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","tickFont","labelRotation","originalLabelWidth","labelWidth","tickWidth","angleRadians","scaleLabelOpts","gridLineOpts","isFullWidth","scaleLabelLineHeight","scaleLabelPadding","deltaHeight","largestTextWidth","tallestLabelHeightInLines","numberOfLabelLines","lineSpace","tickPadding","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","handleMargins","finalVal","innerHeight","decimal","valueOffset","getBaseValue","_autoSkip","skipRatio","shouldSkip","optionTicks","tickCount","labelRotationRadians","longestRotatedLabel","optionMajorTicks","isRotated","tickFontColor","majorTickFontColor","majorTickFont","tl","scaleLabelFontColor","scaleLabelFont","itemsToDraw","axisWidth","xTickStart","xTickEnd","yTickStart","yTickEnd","lineColor","tx1","ty1","tx2","ty2","x1","y1","x2","labelX","labelY","zeroLineIndex","labelYOffset","xLineValue","aliasPixel","labelXOffset","isLeft","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","lineCount","scaleLabelX","scaleLabelY","halfLineHeight","find","onProgress","onComplete","frameDuration","animations","dropFrames","request","addAnimation","lazy","animating","requestAnimationFrame","cancelAnimation","requestAnimFrame","startDigest","startTime","Date","now","framesToDrop","advance","endTime","filterByPosition","where","sortByWeight","_tmpIndex_","boxes","layoutItem","prop","layoutOptions","layout","leftPadding","rightPadding","topPadding","bottomPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","chartWidth","chartHeight","chartAreaWidth","chartAreaHeight","verticalBoxWidth","horizontalBoxHeight","maxChartAreaWidth","maxChartAreaHeight","minBoxSizes","getMinimumBoxSize","maxHorizontalLeftPadding","maxHorizontalRightPadding","maxVerticalTopPadding","maxVerticalBottomPadding","horizontalBox","boxPadding","verticalBox","totalLeftBoxesWidth","totalRightBoxesWidth","totalTopBoxesHeight","totalBottomBoxesHeight","fitBox","box","finalFitVerticalBox","leftPaddingAddition","topPaddingAddition","newMaxChartAreaHeight","newMaxChartAreaWidth","placeBox","minBoxSize","findNextWhere","minBox","scaleMargin","tickValue","logDelta","tickString","maxTick","logTick","toExponential","numDecimal","toFixed","remain","basic","dom","implementation","_enabled","releaseContext","addEventListener","removeEventListener","Radar","anObject","check","proto","TypeError","test","buggy","Function","__proto__","filler","$keys","hiddenKeys","getOwnPropertyNames","VResponsive","measurable","aspectRatio","computedAspectRatio","aspectStyle","__cachedSizer","genContent","components_VResponsive","VImg","alt","contain","src","gradient","lazySrc","srcset","sizes","currentSrc","image","isLoading","calculatedAspectRatio","normalisedSrc","aspect","__cachedImage","backgroundImage","v-image__image--preload","v-image__image--contain","v-image__image--cover","backgroundPosition","watch","loadImage","init","$vuetify.breakpoint.width","mounted","lazyImg","Image","pollForSize","onLoad","getSrc","$emit","onError","onload","decode","catch","err","message","then","onerror","img","_this2","timeout","poll","naturalHeight","naturalWidth","setTimeout","__genPlaceholder","placeholder","node","role","aria-label","tag","VCardMedia","d","VCardActions","VCardText","VCard","VCardTitle","colorNames","getRgba","string","abbr","hex","rgba","per","parseInt","parseFloat","getHsla","alpha","getHwb","getRgb","getHsl","hsla","getAlpha","hexString","hexDouble","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","num","str","textSize","titleX","titleY","titleFont","createNewTitleBlockAndAttach","titleOpts","titleBlock","getRelativePosition","parseVisibleItems","handler","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","modes","single","x-axis","nearest","sizeA","sizeB","ret","intersectsItem","parseMaxStyle","styleValue","parentProperty","valueInPixels","parentNode","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","document","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","configMerge","scaleMerge","getScaleDefaults","slen","collection","filterCallback","filtered","arrayToSearch","startIndex","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","reduce","NEGATIVE_INFINITY","exponent","log","LOG10E","powerOf10","isPowerOf10","degrees","toDegrees","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","distanceBetweenPoints","pixelWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","niceFraction","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getStyle","currentDevicePixelRatio","getConstraintWidth","getConstraintHeight","_calculatePadding","container","parentDimension","parent","host","getMaximumWidth","clientWidth","cw","getMaximumHeight","clientHeight","ch","el","property","currentStyle","getPropertyValue","retinaScale","forceRatio","pixelRatio","devicePixelRatio","pixelSize","arrayOfThings","gc","garbageCollect","longest","thing","nestedThing","gcLen","numberOfLines","CanvasGradient","error","colorValue","CanvasPattern","saturate","darken","spacing","niceRange","niceMin","niceMax","numSpaces","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","numericGeneratorOptions","fixedStepSize","defined","fails","spaces","non","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","replace","PolarArea","EXPANDO_KEY","CSS_PREFIX","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","getAttribute","renderWidth","initial","displayWidth","displayHeight","supportsEventListenerOptions","supports","eventListenerOptions","passive","createEvent","nativeEvent","fromNativeEvent","event","throttled","ticking","createResizer","resizer","createElement","cls","maxSize","cssText","className","innerHTML","expand","childNodes","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","watchForRender","expando","proxy","renderProxy","animationName","reflow","offsetParent","classList","unwatchForRender","remove","addResizeListener","insertBefore","firstChild","removeResizeListener","removeChild","injectCSS","css","_style","setAttribute","getElementsByTagName","appendChild","createTextNode","keyframes","getElementById","removeAttribute","proxies","addEvent","removeEvent","$iterators","getKeys","redefine","hide","Iterators","wks","ITERATOR","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","NAME","explicit","Collection","constructors","scaleConstructor","scaleDefaults","getScaleConstructor","updateScaleDefaults","additions","addScalesToLayout","effects","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","easingEffects","propagate","mappers","visible","boundary","decodeFill","computeBoundary","scaleBottom","scaleTop","scaleZero","getBasePosition","resolveTarget","visited","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","p0","p1","d0","d1","afterDatasetsUpdate","$filler","beforeDatasetDraw","inheritIfRequired","gOPN","dP","$trim","NUMBER","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","it","third","radix","maxCode","charCodeAt","code","digits","split","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","cornerRadius","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","tp","mergeOpacity","colorString","opacity","pushOrConcat","toPush","splitNewlines","createTooltipItem","getBaseModel","tooltipOpts","xAlign","yAlign","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","tooltip","body","combinedBodyLength","bodyItem","before","lines","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","determineAlignment","lf","rf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getBeforeAfterBodyLines","_lastActive","getTitle","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","active","_active","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","drawBody","xLinePadding","fillLineOfText","drawColorBoxes","textColor","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","getElementsAtEventForMode","responsive","responsiveAnimationDuration","maintainAspectRatio","events","animationDuration","construct","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Result_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_node_modules_css_loader_index_js_ref_6_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_2_node_modules_vuetify_loader_lib_loader_js_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_Result_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default","speciesConstructor","original","isVertical","getBarBounds","halfWidth","halfHeight","signX","signY","barSize","halfStroke","borderLeft","borderRight","borderTop","borderBottom","corners","borders","startCorner","cornerAt","corner","scatter","angleLines","circular","pointLabels","polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","SPECIES","initConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","positionIsHorizontal","types","instances","_bufferedRender","bindEvents","resize","initToolTip","stop","silent","newWidth","newHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","obj","dtype","dposition","isDefault","scaleType","scaleClass","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","drawDatasets","_drawTooltip","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","hoverOptions","Controller","Color","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","hue","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","desaturate","whiten","blacken","greyscale","clearer","opaquer","mixinColor","color1","w1","w2","toJSON","maxes","capped","chans","sname","svalues","_v","_s","question","inquiry","$props","timeAsked","_e","votes","voteLabels","voteValues","_l","voteComment","voteOptionName","comment","justify-end","$event","likeCommentToggle","red--text","currentUserLike","likeCount","generateChart","chartId","chartType","styles","cssClasses","ref","addPlugin","$data","renderChart","chart_default","$refs","beforeDestroy","ResultGraph_render","ResultGraph_staticRenderFns","ResultGraphvue_type_script_lang_js_","extends","required","components_ResultGraphvue_type_script_lang_js_","ResultGraph","WarningAlertvue_type_template_id_39fdedc1_scoped_true_render","xs12","sm8","md4","WarningAlertvue_type_template_id_39fdedc1_scoped_true_staticRenderFns","WarningAlertvue_type_script_lang_js_","components_WarningAlertvue_type_script_lang_js_","WarningAlert_component","WarningAlert","VAlert","VFlex","Resultvue_type_script_lang_js_","components","LoadSpinner","questionId","isPageLoading","voteOptions","voteCount","voteOptionId","voteOption","voteComments","_this3","votesWithComments","objectSpread","beforeMount","_beforeMount","asyncToGenerator","regeneratorRuntime","mark","_callee","wrap","_context","$route","query","question_id","routeVoteFlow","_mounted","_callee2","_this4","_context2","readVoteOptions","readVotesByQuestionId","readQuestionById","readActiveQuestion","readActiveVotes","$nextTick","_readActiveQuestion","_callee3","_context3","requests","sent","t0","_readQuestionById","_callee4","_ref2","_context4","moment_default","_x","_readActiveVotes","_callee5","_ref3","_context5","_readVotesByQuestionId","_callee6","_ref4","_context6","_x2","_readVoteOptions","_callee7","_ref5","_context7","_likeCommentToggle","_callee8","vote","_context8","$toast","info","abrupt","deleteLike","createLike","_x3","_createLike","_callee9","voteId","createLikeRequest","_ref6","oldVoteIdx","_context9","_x4","_deleteLike","_callee10","deleteLikeRequest","_ref7","_context10","_x5","views_Resultvue_type_script_lang_js_","Result_component","components_VCard","VListTile","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","valueCategory","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","valueDimension","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getValueCount","getPointLabelFontOptions","pointLabelOptions","measureLabelSize","determineLimits","fitWithPointLabels","plFont","largestPossibleRadius","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","getIndexAngle","hLimits","vLimits","setReductions","drawingArea","setCenterPoint","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","angleLineOpts","pointLabelOpts","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","param","LinearRadialScale","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","tickFontStyle","tickFontFamily","tickLabelFont","yCenterOffset"],"mappings":"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","file":"js/chunk-2581dfb6.326e376e.js","sourcesContent":["'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\tlegend: {\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true,\n\t\treverse: false,\n\t\tweight: 1000,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tonHover: null,\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t},\n\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('');\n\t\treturn text.join('');\n\t}\n});\n\n/**\n * Helper function to get the box width based on the usePointStyle option\n * @param labelopts {Object} the label options on the legend\n * @param fontSize {Number} the label font size\n * @return {Number} width of the color box area\n */\nfunction getBoxWidth(labelOpts, fontSize) {\n\treturn labelOpts.usePointStyle ?\n\t\tfontSize * Math.SQRT2 :\n\t\tlabelOpts.boxWidth;\n}\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Legend = Element.extend({\n\n\tinitialize: function(config) {\n\t\thelpers.extend(this, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tthis.legendHitBoxes = [];\n\n\t\t// Are we in doughnut mode which has a different data type\n\t\tthis.doughnutMode = false;\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\t// Any function defined here is inherited by all legend types.\n\t// Any function can be extended by the legend type\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: function() {\n\t\tvar me = this;\n\t\tvar labelOpts = me.options.labels || {};\n\t\tvar legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || [];\n\n\t\tif (labelOpts.filter) {\n\t\t\tlegendItems = legendItems.filter(function(item) {\n\t\t\t\treturn labelOpts.filter(item, me.chart.data);\n\t\t\t});\n\t\t}\n\n\t\tif (me.options.reverse) {\n\t\t\tlegendItems.reverse();\n\t\t}\n\n\t\tme.legendItems = legendItems;\n\t},\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar display = opts.display;\n\n\t\tvar ctx = me.ctx;\n\n\t\tvar globalDefault = defaults.global;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t// Reset hit boxes\n\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\tvar minSize = me.minSize;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tif (isHorizontal) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = display ? 10 : 0;\n\t\t} else {\n\t\t\tminSize.width = display ? 10 : 0;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Increase sizes here\n\t\tif (display) {\n\t\t\tctx.font = labelFont;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// Labels\n\n\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\tctx.textAlign = 'left';\n\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\n\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t});\n\n\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t} else {\n\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\tvar currentColWidth = 0;\n\t\t\t\tvar currentColHeight = 0;\n\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Get max width\n\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\tminSize.width += totalWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\n\t// Actually draw the legend on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar labelOpts = opts.labels;\n\t\tvar globalDefault = defaults.global;\n\t\tvar lineDefault = globalDefault.elements.line;\n\t\tvar legendWidth = me.width;\n\t\tvar lineWidths = me.lineWidths;\n\n\t\tif (opts.display) {\n\t\t\tvar ctx = me.ctx;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor);\n\t\t\tvar fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily);\n\t\t\tvar labelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar cursor;\n\n\t\t\t// Canvas setup\n\t\t\tctx.textAlign = 'left';\n\t\t\tctx.textBaseline = 'middle';\n\t\t\tctx.lineWidth = 0.5;\n\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\tctx.font = labelFont;\n\n\t\t\tvar boxWidth = getBoxWidth(labelOpts, fontSize);\n\t\t\tvar hitboxes = me.legendHitBoxes;\n\n\t\t\t// current position\n\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Set the ctx for the box\n\t\t\t\tctx.save();\n\n\t\t\t\tctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\tctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\tctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\tctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\tctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\tctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\t\t\t\tvar isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0);\n\n\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\tctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t}\n\n\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t// Recalculate x and y for drawPoint() because its expecting\n\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\thelpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t} else {\n\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\tif (!isLineWidthZero) {\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t}\n\n\t\t\t\tctx.restore();\n\t\t\t};\n\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\tvar halfFontSize = fontSize / 2;\n\t\t\t\tvar xLeft = boxWidth + halfFontSize + x;\n\t\t\t\tvar yMiddle = y + halfFontSize;\n\n\t\t\t\tctx.fillText(legendItem.text, xLeft, yMiddle);\n\n\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\tctx.beginPath();\n\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\tctx.moveTo(xLeft, yMiddle);\n\t\t\t\t\tctx.lineTo(xLeft + textWidth, yMiddle);\n\t\t\t\t\tctx.stroke();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Horizontal\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tif (isHorizontal) {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tcursor = {\n\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\tline: 0\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width;\n\t\t\t\tvar width = boxWidth + (fontSize / 2) + textWidth;\n\t\t\t\tvar x = cursor.x;\n\t\t\t\tvar y = cursor.y;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t}\n\t\t\t\t} else if (y + itemHeight > me.bottom) {\n\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\ty = cursor.y = me.top + labelOpts.padding;\n\t\t\t\t\tcursor.line++;\n\t\t\t\t}\n\n\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\thitboxes[i].left = x;\n\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t// Fill the actual label\n\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t} else {\n\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @return {Boolean} true if a change occured\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar opts = me.options;\n\t\tvar type = e.type === 'mouseup' ? 'click' : e.type;\n\t\tvar changed = false;\n\n\t\tif (type === 'mousemove') {\n\t\t\tif (!opts.onHover) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (type === 'click') {\n\t\t\tif (!opts.onClick) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\treturn;\n\t\t}\n\n\t\t// Chart event already has relative position in it\n\t\tvar x = e.x;\n\t\tvar y = e.y;\n\n\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t// See if we are touching one of the dataset boxes\n\t\t\tvar lh = me.legendHitBoxes;\n\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t// Touching an element\n\t\t\t\t\tif (type === 'click') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onClick.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (type === 'mousemove') {\n\t\t\t\t\t\t// use e.native for backwards compatibility\n\t\t\t\t\t\topts.onHover.call(me, e.native, me.legendItems[i]);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\nfunction createNewLegendAndAttach(chart, legendOpts) {\n\tvar legend = new Legend({\n\t\tctx: chart.ctx,\n\t\toptions: legendOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, legend, legendOpts);\n\tlayouts.addBox(chart, legend);\n\tchart.legend = legend;\n}\n\nmodule.exports = {\n\tid: 'legend',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the legend is registered as a plugin, making\n\t * Chart.Legend obsolete. To avoid a breaking change, we export the Legend as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Legend,\n\n\tbeforeInit: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\n\t\tif (legendOpts) {\n\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar legendOpts = chart.options.legend;\n\t\tvar legend = chart.legend;\n\n\t\tif (legendOpts) {\n\t\t\thelpers.mergeIf(legendOpts, defaults.global.legend);\n\n\t\t\tif (legend) {\n\t\t\t\tlayouts.configure(chart, legend, legendOpts);\n\t\t\t\tlegend.options = legendOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewLegendAndAttach(chart, legendOpts);\n\t\t\t}\n\t\t} else if (legend) {\n\t\t\tlayouts.removeBox(chart, legend);\n\t\t\tdelete chart.legend;\n\t\t}\n\t},\n\n\tafterEvent: function(chart, e) {\n\t\tvar legend = chart.legend;\n\t\tif (legend) {\n\t\t\tlegend.handleEvent(e);\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nmodule.exports = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {Number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {Number|Object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {Object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array[]} inputs - An array of values, falling back to the last value.\n\t * @param {Object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {Number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index) {\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t}\n\t\t\tif (index !== undefined && helpers.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\nvar Element = require('./core.element');\n\nvar exports = module.exports = Element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n","import Vue from 'vue';\nexport default Vue.extend({\n name: 'transitionable',\n props: {\n mode: String,\n origin: String,\n transition: String\n }\n});\n//# sourceMappingURL=transitionable.js.map","// Styles\nimport '../../../src/stylus/components/_alerts.styl';\n// Components\nimport VIcon from '../VIcon';\n// Mixins\nimport Colorable from '../../mixins/colorable';\nimport Toggleable from '../../mixins/toggleable';\nimport Transitionable from '../../mixins/transitionable';\nimport mixins from '../../util/mixins';\n/* @vue/component */\nexport default mixins(Colorable, Toggleable, Transitionable).extend({\n name: 'v-alert',\n props: {\n dismissible: Boolean,\n icon: String,\n outline: Boolean,\n type: {\n type: String,\n validator: function validator(val) {\n return ['info', 'error', 'success', 'warning'].includes(val);\n }\n }\n },\n computed: {\n computedColor: function computedColor() {\n return this.type && !this.color ? this.type : this.color || 'error';\n },\n computedIcon: function computedIcon() {\n if (this.icon || !this.type) return this.icon;\n switch (this.type) {\n case 'info':\n return '$vuetify.icons.info';\n case 'error':\n return '$vuetify.icons.error';\n case 'success':\n return '$vuetify.icons.success';\n case 'warning':\n return '$vuetify.icons.warning';\n }\n }\n },\n methods: {\n genIcon: function genIcon() {\n if (!this.computedIcon) return null;\n return this.$createElement(VIcon, {\n 'class': 'v-alert__icon'\n }, this.computedIcon);\n },\n genDismissible: function genDismissible() {\n var _this = this;\n\n if (!this.dismissible) return null;\n return this.$createElement('a', {\n 'class': 'v-alert__dismissible',\n on: { click: function click() {\n _this.isActive = false;\n } }\n }, [this.$createElement(VIcon, {\n props: {\n right: true\n }\n }, '$vuetify.icons.cancel')]);\n }\n },\n render: function render(h) {\n var children = [this.genIcon(), h('div', this.$slots.default), this.genDismissible()];\n var setColor = this.outline ? this.setTextColor : this.setBackgroundColor;\n var alert = h('div', setColor(this.computedColor, {\n staticClass: 'v-alert',\n 'class': {\n 'v-alert--outline': this.outline\n },\n directives: [{\n name: 'show',\n value: this.isActive\n }],\n on: this.$listeners\n }), children);\n if (!this.transition) return alert;\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode\n }\n }, [alert]);\n }\n});\n//# sourceMappingURL=VAlert.js.map","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningAlert.vue?vue&type=style&index=0&id=39fdedc1&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningAlert.vue?vue&type=style&index=0&id=39fdedc1&scoped=true&lang=css&\"","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// Types\nimport Vue from 'vue';\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-card-title',\n functional: true,\n props: {\n primaryTitle: Boolean\n },\n render: function render(h, _ref) {\n var data = _ref.data,\n props = _ref.props,\n children = _ref.children;\n\n data.staticClass = ('v-card__title ' + (data.staticClass || '')).trim();\n if (props.primaryTitle) data.staticClass += ' v-card__title--primary';\n return h('div', data, children);\n }\n});\n//# sourceMappingURL=VCardTitle.js.map","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.valueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives lines the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.borderWidth)) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) {\n\t\t\t\tborderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (!isNaN(dataset.borderWidth)) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tgetPointRotation: function(point, index) {\n\t\t\tvar pointRotation = this.chart.options.elements.point.rotation;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (!isNaN(custom.rotation)) {\n\t\t\t\tpointRotation = custom.rotation;\n\t\t\t} else if (!isNaN(dataset.pointRotation) || helpers.isArray(dataset.pointRotation)) {\n\t\t\t\tpointRotation = helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointRotation);\n\t\t\t}\n\t\t\treturn pointRotation;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\trotation: me.getPointRotation(point, index),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t}\n\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\t\t\tvar points = (meta.data || []);\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tif (meta.dataset._model.spanGaps) {\n\t\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\t\treturn !pt._model.skip;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode === 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t} else {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar area = chart.chartArea;\n\t\t\tvar ilen = points.length;\n\t\t\tvar halfBorderWidth;\n\t\t\tvar i = 0;\n\n\t\t\tif (lineEnabled(me.getDataset(), chart.options)) {\n\t\t\t\thalfBorderWidth = (meta.dataset._model.borderWidth || 0) / 2;\n\n\t\t\t\thelpers.canvas.clipArea(chart.ctx, {\n\t\t\t\t\tleft: area.left,\n\t\t\t\t\tright: area.right,\n\t\t\t\t\ttop: area.top - halfBorderWidth,\n\t\t\t\t\tbottom: area.bottom + halfBorderWidth\n\t\t\t\t});\n\n\t\t\t\tmeta.dataset.draw();\n\n\t\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tpoints[i].draw(area);\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t\tmodel.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t},\n\t});\n};\n","/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nmodule.exports = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nmodule.exports = function(Chart) {\n\n\tvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n\t/**\n\t * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n\t * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n\t * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n\t */\n\tfunction listenArrayEvents(array, listener) {\n\t\tif (array._chartjs) {\n\t\t\tarray._chartjs.listeners.push(listener);\n\t\t\treturn;\n\t\t}\n\n\t\tObject.defineProperty(array, '_chartjs', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: {\n\t\t\t\tlisteners: [listener]\n\t\t\t}\n\t\t});\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\t\tvar base = array[key];\n\n\t\t\tObject.defineProperty(array, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: function() {\n\t\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\t\thelpers.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Removes the given array event listener and cleanup extra attached properties (such as\n\t * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n\t */\n\tfunction unlistenArrayEvents(array, listener) {\n\t\tvar stub = array._chartjs;\n\t\tif (!stub) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar listeners = stub.listeners;\n\t\tvar index = listeners.indexOf(listener);\n\t\tif (index !== -1) {\n\t\t\tlisteners.splice(index, 1);\n\t\t}\n\n\t\tif (listeners.length > 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tarrayEvents.forEach(function(key) {\n\t\t\tdelete array[key];\n\t\t});\n\n\t\tdelete array._chartjs;\n\t}\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize(chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null || !(meta.xAxisID in me.chart.scales)) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null || !(meta.yAxisID in me.chart.scales)) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroy: function() {\n\t\t\tif (this._data) {\n\t\t\t\tunlistenArrayEvents(this._data, this);\n\t\t\t}\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar element = this.createMetaData(index);\n\t\t\tthis.getMeta().data.splice(index, 0, element);\n\t\t\tthis.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t\t// the internal meta data accordingly.\n\t\t\tif (me._data !== data) {\n\t\t\t\tif (me._data) {\n\t\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t\t}\n\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t\tme._data = data;\n\t\t\t}\n\n\t\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\t\tme.resyncElements();\n\t\t},\n\n\t\tupdate: helpers.noop,\n\n\t\ttransition: function(easingValue) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].transition(easingValue);\n\t\t\t}\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.transition(easingValue);\n\t\t\t}\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar elements = meta.data || [];\n\t\t\tvar ilen = elements.length;\n\t\t\tvar i = 0;\n\n\t\t\tif (meta.dataset) {\n\t\t\t\tmeta.dataset.draw();\n\t\t\t}\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\telements[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tremoveHoverStyle: function(element) {\n\t\t\thelpers.merge(element._model, element.$previousStyle || {});\n\t\t\tdelete element.$previousStyle;\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\t\tvar index = element._index;\n\t\t\tvar custom = element.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar getHoverColor = helpers.getHoverColor;\n\t\t\tvar model = element._model;\n\n\t\t\telement.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth\n\t\t\t};\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tresyncElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data;\n\t\t\tvar numMeta = meta.data.length;\n\t\t\tvar numData = data.length;\n\n\t\t\tif (numData < numMeta) {\n\t\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t\t} else if (numData > numMeta) {\n\t\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinsertElements: function(start, count) {\n\t\t\tfor (var i = 0; i < count; ++i) {\n\t\t\t\tthis.addElementAndReset(start + i);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPush: function() {\n\t\t\tthis.insertElements(this.getDataset().data.length - 1, arguments.length);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataPop: function() {\n\t\t\tthis.getMeta().data.pop();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataShift: function() {\n\t\t\tthis.getMeta().data.shift();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataSplice: function(start, count) {\n\t\t\tthis.getMeta().data.splice(start, count);\n\t\t\tthis.insertElements(start, arguments.length - 2);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tonDataUnshift: function() {\n\t\t\tthis.insertElements(0, arguments.length);\n\t\t}\n\t});\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n","'use strict';\n\nvar color = require('chartjs-color');\nvar helpers = require('../helpers/index');\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = color(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = color(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (type === 'number' && isFinite(origin) && isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers.extend(Element.prototype, {\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers.clone(me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = model;\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers.inherits;\n\nmodule.exports = Element;\n","/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar defaultColor = defaults.global.defaultColor;\n\ndefaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nmodule.exports = Element.extend({\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar model = this._model;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.)\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || (model.x >= chartArea.left && chartArea.right * errMargin >= model.x && model.y >= chartArea.top && chartArea.bottom * errMargin >= model.y)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n","var conversions = require(\"./conversions\");\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) { \n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n \n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args); \n }\n\n return this.setValues(space, values);\n};\n \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/* global window: false */\n'use strict';\n\nvar moment = require('moment');\nmoment = typeof moment === 'function' ? moment : window.moment;\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\n// Integer constants are from the ES6 spec.\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar INTERVALS = {\n\tmillisecond: {\n\t\tcommon: true,\n\t\tsize: 1,\n\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t},\n\tsecond: {\n\t\tcommon: true,\n\t\tsize: 1000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\tminute: {\n\t\tcommon: true,\n\t\tsize: 60000,\n\t\tsteps: [1, 2, 5, 10, 15, 30]\n\t},\n\thour: {\n\t\tcommon: true,\n\t\tsize: 3600000,\n\t\tsteps: [1, 2, 3, 6, 12]\n\t},\n\tday: {\n\t\tcommon: true,\n\t\tsize: 86400000,\n\t\tsteps: [1, 2, 5]\n\t},\n\tweek: {\n\t\tcommon: false,\n\t\tsize: 604800000,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tmonth: {\n\t\tcommon: true,\n\t\tsize: 2.628e9,\n\t\tsteps: [1, 2, 3]\n\t},\n\tquarter: {\n\t\tcommon: false,\n\t\tsize: 7.884e9,\n\t\tsteps: [1, 2, 3, 4]\n\t},\n\tyear: {\n\t\tcommon: true,\n\t\tsize: 3.154e10\n\t}\n};\n\nvar UNITS = Object.keys(INTERVALS);\n\nfunction sorter(a, b) {\n\treturn a - b;\n}\n\nfunction arrayUnique(items) {\n\tvar hash = {};\n\tvar out = [];\n\tvar i, ilen, item;\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\titem = items[i];\n\t\tif (!hash[item]) {\n\t\t\thash[item] = true;\n\t\t\tout.push(item);\n\t\t}\n\t}\n\n\treturn out;\n}\n\n/**\n * Returns an array of {time, pos} objects used to interpolate a specific `time` or position\n * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is\n * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other\n * extremity (left + width or top + height). Note that it would be more optimized to directly\n * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need\n * to create the lookup table. The table ALWAYS contains at least two items: min and max.\n *\n * @param {Number[]} timestamps - timestamps sorted from lowest to highest.\n * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min\n * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}.\n * If 'series', timestamps will be positioned at the same distance from each other. In this\n * case, only timestamps that break the time linearity are registered, meaning that in the\n * best case, all timestamps are linear, the table contains only min and max.\n */\nfunction buildLookupTable(timestamps, min, max, distribution) {\n\tif (distribution === 'linear' || !timestamps.length) {\n\t\treturn [\n\t\t\t{time: min, pos: 0},\n\t\t\t{time: max, pos: 1}\n\t\t];\n\t}\n\n\tvar table = [];\n\tvar items = [min];\n\tvar i, ilen, prev, curr, next;\n\n\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\tcurr = timestamps[i];\n\t\tif (curr > min && curr < max) {\n\t\t\titems.push(curr);\n\t\t}\n\t}\n\n\titems.push(max);\n\n\tfor (i = 0, ilen = items.length; i < ilen; ++i) {\n\t\tnext = items[i + 1];\n\t\tprev = items[i - 1];\n\t\tcurr = items[i];\n\n\t\t// only add points that breaks the scale linearity\n\t\tif (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) {\n\t\t\ttable.push({time: curr, pos: i / (ilen - 1)});\n\t\t}\n\t}\n\n\treturn table;\n}\n\n// @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/\nfunction lookup(table, key, value) {\n\tvar lo = 0;\n\tvar hi = table.length - 1;\n\tvar mid, i0, i1;\n\n\twhile (lo >= 0 && lo <= hi) {\n\t\tmid = (lo + hi) >> 1;\n\t\ti0 = table[mid - 1] || null;\n\t\ti1 = table[mid];\n\n\t\tif (!i0) {\n\t\t\t// given value is outside table (before first item)\n\t\t\treturn {lo: null, hi: i1};\n\t\t} else if (i1[key] < value) {\n\t\t\tlo = mid + 1;\n\t\t} else if (i0[key] > value) {\n\t\t\thi = mid - 1;\n\t\t} else {\n\t\t\treturn {lo: i0, hi: i1};\n\t\t}\n\t}\n\n\t// given value is outside table (after last item)\n\treturn {lo: i1, hi: null};\n}\n\n/**\n * Linearly interpolates the given source `value` using the table items `skey` values and\n * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos')\n * returns the position for a timestamp equal to 42. If value is out of bounds, values at\n * index [0, 1] or [n - 1, n] are used for the interpolation.\n */\nfunction interpolate(table, skey, sval, tkey) {\n\tvar range = lookup(table, skey, sval);\n\n\t// Note: the lookup table ALWAYS contains at least 2 items (min and max)\n\tvar prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo;\n\tvar next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi;\n\n\tvar span = next[skey] - prev[skey];\n\tvar ratio = span ? (sval - prev[skey]) / span : 0;\n\tvar offset = (next[tkey] - prev[tkey]) * ratio;\n\n\treturn prev[tkey] + offset;\n}\n\n/**\n * Convert the given value to a moment object using the given time options.\n * @see http://momentjs.com/docs/#/parsing/\n */\nfunction momentify(value, options) {\n\tvar parser = options.parser;\n\tvar format = options.parser || options.format;\n\n\tif (typeof parser === 'function') {\n\t\treturn parser(value);\n\t}\n\n\tif (typeof value === 'string' && typeof format === 'string') {\n\t\treturn moment(value, format);\n\t}\n\n\tif (!(value instanceof moment)) {\n\t\tvalue = moment(value);\n\t}\n\n\tif (value.isValid()) {\n\t\treturn value;\n\t}\n\n\t// Labels are in an incompatible moment format and no `parser` has been provided.\n\t// The user might still use the deprecated `format` option to convert his inputs.\n\tif (typeof format === 'function') {\n\t\treturn format(value);\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, scale) {\n\tif (helpers.isNullOrUndef(input)) {\n\t\treturn null;\n\t}\n\n\tvar options = scale.options.time;\n\tvar value = momentify(scale.getRightValue(input), options);\n\tif (!value.isValid()) {\n\t\treturn null;\n\t}\n\n\tif (options.round) {\n\t\tvalue.startOf(options.round);\n\t}\n\n\treturn value.valueOf();\n}\n\n/**\n * Returns the number of unit to skip to be able to display up to `capacity` number of ticks\n * in `unit` for the given `min` / `max` range and respecting the interval steps constraints.\n */\nfunction determineStepSize(min, max, unit, capacity) {\n\tvar range = max - min;\n\tvar interval = INTERVALS[unit];\n\tvar milliseconds = interval.size;\n\tvar steps = interval.steps;\n\tvar i, ilen, factor;\n\n\tif (!steps) {\n\t\treturn Math.ceil(range / (capacity * milliseconds));\n\t}\n\n\tfor (i = 0, ilen = steps.length; i < ilen; ++i) {\n\t\tfactor = steps[i];\n\t\tif (Math.ceil(range / (milliseconds * factor)) <= capacity) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn factor;\n}\n\n/**\n * Figures out what unit results in an appropriate number of auto-generated ticks\n */\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n\tvar ilen = UNITS.length;\n\tvar i, interval, factor;\n\n\tfor (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n\t\tinterval = INTERVALS[UNITS[i]];\n\t\tfactor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER;\n\n\t\tif (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n\n\treturn UNITS[ilen - 1];\n}\n\n/**\n * Figures out what unit to format a set of ticks with\n */\nfunction determineUnitForFormatting(ticks, minUnit, min, max) {\n\tvar duration = moment.duration(moment(max).diff(moment(min)));\n\tvar ilen = UNITS.length;\n\tvar i, unit;\n\n\tfor (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) {\n\t\tunit = UNITS[i];\n\t\tif (INTERVALS[unit].common && duration.as(unit) >= ticks.length) {\n\t\t\treturn unit;\n\t\t}\n\t}\n\n\treturn UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\n\nfunction determineMajorUnit(unit) {\n\tfor (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n\t\tif (INTERVALS[UNITS[i]].common) {\n\t\t\treturn UNITS[i];\n\t\t}\n\t}\n}\n\n/**\n * Generates a maximum of `capacity` timestamps between min and max, rounded to the\n * `minor` unit, aligned on the `major` unit and using the given scale time `options`.\n * Important: this method can return ticks outside the min and max range, it's the\n * responsibility of the calling code to clamp values if needed.\n */\nfunction generate(min, max, capacity, options) {\n\tvar timeOpts = options.time;\n\tvar minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity);\n\tvar major = determineMajorUnit(minor);\n\tvar stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize);\n\tvar weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n\tvar majorTicksEnabled = options.ticks.major.enabled;\n\tvar interval = INTERVALS[minor];\n\tvar first = moment(min);\n\tvar last = moment(max);\n\tvar ticks = [];\n\tvar time;\n\n\tif (!stepSize) {\n\t\tstepSize = determineStepSize(min, max, minor, capacity);\n\t}\n\n\t// For 'week' unit, handle the first day of week option\n\tif (weekday) {\n\t\tfirst = first.isoWeekday(weekday);\n\t\tlast = last.isoWeekday(weekday);\n\t}\n\n\t// Align first/last ticks on unit\n\tfirst = first.startOf(weekday ? 'day' : minor);\n\tlast = last.startOf(weekday ? 'day' : minor);\n\n\t// Make sure that the last tick include max\n\tif (last < max) {\n\t\tlast.add(1, minor);\n\t}\n\n\ttime = moment(first);\n\n\tif (majorTicksEnabled && major && !weekday && !timeOpts.round) {\n\t\t// Align the first tick on the previous `minor` unit aligned on the `major` unit:\n\t\t// we first aligned time on the previous `major` unit then add the number of full\n\t\t// stepSize there is between first and the previous major time.\n\t\ttime.startOf(major);\n\t\ttime.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor);\n\t}\n\n\tfor (; time < last; time.add(stepSize, minor)) {\n\t\tticks.push(+time);\n\t}\n\n\tticks.push(+time);\n\n\treturn ticks;\n}\n\n/**\n * Returns the right and left offsets from edges in the form of {left, right}.\n * Offsets are added when the `offset` option is true.\n */\nfunction computeOffsets(table, ticks, min, max, options) {\n\tvar left = 0;\n\tvar right = 0;\n\tvar upper, lower;\n\n\tif (options.offset && ticks.length) {\n\t\tif (!options.time.min) {\n\t\t\tupper = ticks.length > 1 ? ticks[1] : max;\n\t\t\tlower = ticks[0];\n\t\t\tleft = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t\tif (!options.time.max) {\n\t\t\tupper = ticks[ticks.length - 1];\n\t\t\tlower = ticks.length > 1 ? ticks[ticks.length - 2] : min;\n\t\t\tright = (\n\t\t\t\tinterpolate(table, 'time', upper, 'pos') -\n\t\t\t\tinterpolate(table, 'time', lower, 'pos')\n\t\t\t) / 2;\n\t\t}\n\t}\n\n\treturn {left: left, right: right};\n}\n\nfunction ticksFromTimestamps(values, majorUnit) {\n\tvar ticks = [];\n\tvar i, ilen, value, major;\n\n\tfor (i = 0, ilen = values.length; i < ilen; ++i) {\n\t\tvalue = values[i];\n\t\tmajor = majorUnit ? value === +moment(value).startOf(majorUnit) : false;\n\n\t\tticks.push({\n\t\t\tvalue: value,\n\t\t\tmajor: major\n\t\t});\n\t}\n\n\treturn ticks;\n}\n\nfunction determineLabelFormat(data, timeOpts) {\n\tvar i, momentDate, hasTime;\n\tvar ilen = data.length;\n\n\t// find the label with the most parts (milliseconds, minutes, etc.)\n\t// format all labels with the same level of detail as the most specific label\n\tfor (i = 0; i < ilen; i++) {\n\t\tmomentDate = momentify(data[i], timeOpts);\n\t\tif (momentDate.millisecond() !== 0) {\n\t\t\treturn 'MMM D, YYYY h:mm:ss.SSS a';\n\t\t}\n\t\tif (momentDate.second() !== 0 || momentDate.minute() !== 0 || momentDate.hour() !== 0) {\n\t\t\thasTime = true;\n\t\t}\n\t}\n\tif (hasTime) {\n\t\treturn 'MMM D, YYYY h:mm:ss a';\n\t}\n\treturn 'MMM D, YYYY';\n}\n\nmodule.exports = function() {\n\n\tvar defaultConfig = {\n\t\tposition: 'bottom',\n\n\t\t/**\n\t\t * Data distribution along the scale:\n\t\t * - 'linear': data are spread according to their time (distances can vary),\n\t\t * - 'series': data are spread at the same distance from each other.\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t * @since 2.7.0\n\t\t */\n\t\tdistribution: 'linear',\n\n\t\t/**\n\t\t * Scale boundary strategy (bypassed by min/max time options)\n\t\t * - `data`: make sure data are fully visible, ticks outside are removed\n\t\t * - `ticks`: make sure ticks are fully visible, data outside are truncated\n\t\t * @see https://github.com/chartjs/Chart.js/pull/4556\n\t\t * @since 2.7.0\n\t\t */\n\t\tbounds: 'data',\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\t\t\tminUnit: 'millisecond',\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\tmillisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\tsecond: 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\tminute: 'h:mm a', // 11:20 AM\n\t\t\t\thour: 'hA', // 5PM\n\t\t\t\tday: 'MMM D', // Sep 4\n\t\t\t\tweek: 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\tmonth: 'MMM YYYY', // Sept 2015\n\t\t\t\tquarter: '[Q]Q - YYYY', // Q3\n\t\t\t\tyear: 'YYYY' // 2015\n\t\t\t},\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false,\n\n\t\t\t/**\n\t\t\t * Ticks generation input values:\n\t\t\t * - 'auto': generates \"optimal\" ticks based on scale size and time options.\n\t\t\t * - 'data': generates ticks from data (including labels from data {t|x|y} objects).\n\t\t\t * - 'labels': generates ticks from user given `data.labels` values ONLY.\n\t\t\t * @see https://github.com/chartjs/Chart.js/pull/4507\n\t\t\t * @since 2.7.0\n\t\t\t */\n\t\t\tsource: 'auto',\n\n\t\t\tmajor: {\n\t\t\t\tenabled: false\n\t\t\t}\n\t\t}\n\t};\n\n\tvar TimeScale = Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tthis.mergeTicksOptions();\n\n\t\t\tScale.prototype.initialize.call(this);\n\t\t},\n\n\t\tupdate: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\n\t\t\t// DEPRECATIONS: output a message only one time per update\n\t\t\tif (options.time && options.time.format) {\n\t\t\t\tconsole.warn('options.time.format is deprecated and replaced by options.time.parser.');\n\t\t\t}\n\n\t\t\treturn Scale.prototype.update.apply(me, arguments);\n\t\t},\n\n\t\t/**\n\t\t * Allows data to be referenced via 't' attribute\n\t\t */\n\t\tgetRightValue: function(rawValue) {\n\t\t\tif (rawValue && rawValue.t !== undefined) {\n\t\t\t\trawValue = rawValue.t;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, rawValue);\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar unit = timeOpts.unit || 'day';\n\t\t\tvar min = MAX_INTEGER;\n\t\t\tvar max = MIN_INTEGER;\n\t\t\tvar timestamps = [];\n\t\t\tvar datasets = [];\n\t\t\tvar labels = [];\n\t\t\tvar i, j, ilen, jlen, data, timestamp;\n\n\t\t\t// Convert labels to timestamps\n\t\t\tfor (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(parse(chart.data.labels[i], me));\n\t\t\t}\n\n\t\t\t// Convert data to timestamps\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tdata = chart.data.datasets[i].data;\n\n\t\t\t\t\t// Let's consider that all data have the same format.\n\t\t\t\t\tif (helpers.isObject(data[0])) {\n\t\t\t\t\t\tdatasets[i] = [];\n\n\t\t\t\t\t\tfor (j = 0, jlen = data.length; j < jlen; ++j) {\n\t\t\t\t\t\t\ttimestamp = parse(data[j], me);\n\t\t\t\t\t\t\ttimestamps.push(timestamp);\n\t\t\t\t\t\t\tdatasets[i][j] = timestamp;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimestamps.push.apply(timestamps, labels);\n\t\t\t\t\t\tdatasets[i] = labels.slice(0);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatasets[i] = [];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (labels.length) {\n\t\t\t\t// Sort labels **after** data have been converted\n\t\t\t\tlabels = arrayUnique(labels).sort(sorter);\n\t\t\t\tmin = Math.min(min, labels[0]);\n\t\t\t\tmax = Math.max(max, labels[labels.length - 1]);\n\t\t\t}\n\n\t\t\tif (timestamps.length) {\n\t\t\t\ttimestamps = arrayUnique(timestamps).sort(sorter);\n\t\t\t\tmin = Math.min(min, timestamps[0]);\n\t\t\t\tmax = Math.max(max, timestamps[timestamps.length - 1]);\n\t\t\t}\n\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// In case there is no valid min/max, set limits based on unit time option\n\t\t\tmin = min === MAX_INTEGER ? +moment().startOf(unit) : min;\n\t\t\tmax = max === MIN_INTEGER ? +moment().endOf(unit) + 1 : max;\n\n\t\t\t// Make sure that max is strictly higher than min (required by the lookup table)\n\t\t\tme.min = Math.min(min, max);\n\t\t\tme.max = Math.max(min + 1, max);\n\n\t\t\t// PRIVATE\n\t\t\tme._horizontal = me.isHorizontal();\n\t\t\tme._table = [];\n\t\t\tme._timestamps = {\n\t\t\t\tdata: timestamps,\n\t\t\t\tdatasets: datasets,\n\t\t\t\tlabels: labels\n\t\t\t};\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\t\t\tvar options = me.options;\n\t\t\tvar timeOpts = options.time;\n\t\t\tvar timestamps = [];\n\t\t\tvar ticks = [];\n\t\t\tvar i, ilen, timestamp;\n\n\t\t\tswitch (options.ticks.source) {\n\t\t\tcase 'data':\n\t\t\t\ttimestamps = me._timestamps.data;\n\t\t\t\tbreak;\n\t\t\tcase 'labels':\n\t\t\t\ttimestamps = me._timestamps.labels;\n\t\t\t\tbreak;\n\t\t\tcase 'auto':\n\t\t\tdefault:\n\t\t\t\ttimestamps = generate(min, max, me.getLabelCapacity(min), options);\n\t\t\t}\n\n\t\t\tif (options.bounds === 'ticks' && timestamps.length) {\n\t\t\t\tmin = timestamps[0];\n\t\t\t\tmax = timestamps[timestamps.length - 1];\n\t\t\t}\n\n\t\t\t// Enforce limits with user min/max options\n\t\t\tmin = parse(timeOpts.min, me) || min;\n\t\t\tmax = parse(timeOpts.max, me) || max;\n\n\t\t\t// Remove ticks outside the min/max range\n\t\t\tfor (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n\t\t\t\ttimestamp = timestamps[i];\n\t\t\t\tif (timestamp >= min && timestamp <= max) {\n\t\t\t\t\tticks.push(timestamp);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.min = min;\n\t\t\tme.max = max;\n\n\t\t\t// PRIVATE\n\t\t\tme._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max);\n\t\t\tme._majorUnit = determineMajorUnit(me._unit);\n\t\t\tme._table = buildLookupTable(me._timestamps.data, min, max, options.distribution);\n\t\t\tme._offsets = computeOffsets(me._table, ticks, min, max, options);\n\t\t\tme._labelFormat = determineLabelFormat(me._timestamps.data, timeOpts);\n\n\t\t\treturn ticksFromTimestamps(ticks, me._majorUnit);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar timeOpts = me.options.time;\n\t\t\tvar label = data.labels && index < data.labels.length ? data.labels[index] : '';\n\t\t\tvar value = data.datasets[datasetIndex].data[index];\n\n\t\t\tif (helpers.isObject(value)) {\n\t\t\t\tlabel = me.getRightValue(value);\n\t\t\t}\n\t\t\tif (timeOpts.tooltipFormat) {\n\t\t\t\treturn momentify(label, timeOpts).format(timeOpts.tooltipFormat);\n\t\t\t}\n\t\t\tif (typeof label === 'string') {\n\t\t\t\treturn label;\n\t\t\t}\n\n\t\t\treturn momentify(label, timeOpts).format(me._labelFormat);\n\t\t},\n\n\t\t/**\n\t\t * Function to format an individual tick mark\n\t\t * @private\n\t\t */\n\t\ttickFormatFunction: function(tick, index, ticks, formatOverride) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar time = tick.valueOf();\n\t\t\tvar formats = options.time.displayFormats;\n\t\t\tvar minorFormat = formats[me._unit];\n\t\t\tvar majorUnit = me._majorUnit;\n\t\t\tvar majorFormat = formats[majorUnit];\n\t\t\tvar majorTime = tick.clone().startOf(majorUnit).valueOf();\n\t\t\tvar majorTickOpts = options.ticks.major;\n\t\t\tvar major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime;\n\t\t\tvar label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat);\n\t\t\tvar tickOpts = major ? majorTickOpts : options.ticks.minor;\n\t\t\tvar formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\treturn formatter ? formatter(label, index, ticks) : label;\n\t\t},\n\n\t\tconvertTicksToLabels: function(ticks) {\n\t\t\tvar labels = [];\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\t\t\tlabels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks));\n\t\t\t}\n\n\t\t\treturn labels;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetPixelForOffset: function(time) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = interpolate(me._table, 'time', time, 'pos');\n\n\t\t\treturn start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right);\n\t\t},\n\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar time = null;\n\n\t\t\tif (index !== undefined && datasetIndex !== undefined) {\n\t\t\t\ttime = me._timestamps.datasets[datasetIndex][index];\n\t\t\t}\n\n\t\t\tif (time === null) {\n\t\t\t\ttime = parse(value, me);\n\t\t\t}\n\n\t\t\tif (time !== null) {\n\t\t\t\treturn me.getPixelForOffset(time);\n\t\t\t}\n\t\t},\n\n\t\tgetPixelForTick: function(index) {\n\t\t\tvar ticks = this.getTicks();\n\t\t\treturn index >= 0 && index < ticks.length ?\n\t\t\t\tthis.getPixelForOffset(ticks[index].value) :\n\t\t\t\tnull;\n\t\t},\n\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar size = me._horizontal ? me.width : me.height;\n\t\t\tvar start = me._horizontal ? me.left : me.top;\n\t\t\tvar pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right;\n\t\t\tvar time = interpolate(me._table, 'pos', pos, 'time');\n\n\t\t\treturn moment(time);\n\t\t},\n\n\t\t/**\n\t\t * Crude approximation of what the label width might be\n\t\t * @private\n\t\t */\n\t\tgetLabelWidth: function(label) {\n\t\t\tvar me = this;\n\t\t\tvar ticksOpts = me.options.ticks;\n\t\t\tvar tickLabelWidth = me.ctx.measureText(label).width;\n\t\t\tvar angle = helpers.toRadians(ticksOpts.maxRotation);\n\t\t\tvar cosRotation = Math.cos(angle);\n\t\t\tvar sinRotation = Math.sin(angle);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize);\n\n\t\t\treturn (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetLabelCapacity: function(exampleTime) {\n\t\t\tvar me = this;\n\n\t\t\tvar formatOverride = me.options.time.displayFormats.millisecond;\t// Pick the longest format for guestimation\n\n\t\t\tvar exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride);\n\t\t\tvar tickLabelWidth = me.getLabelWidth(exampleLabel);\n\t\t\tvar innerWidth = me.isHorizontal() ? me.width : me.height;\n\n\t\t\tvar capacity = Math.floor(innerWidth / tickLabelWidth);\n\t\t\treturn capacity > 0 ? capacity : 1;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('time', TimeScale, defaultConfig);\n};\n","'use strict';\n\nmodule.exports = require('./helpers.core');\nmodule.exports.easing = require('./helpers.easing');\nmodule.exports.canvas = require('./helpers.canvas');\nmodule.exports.options = require('./helpers.options');\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports = module.exports = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {Number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {Number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {Number} width - The rectangle's width.\n\t * @param {Number} height - The rectangle's height.\n\t * @param {Number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\t// NOTE(SB) `epsilon` helps to prevent minor artifacts appearing\n\t\t\t// on Chrome when `r` is exactly half the height or the width.\n\t\t\tvar epsilon = 0.0000001;\n\t\t\tvar r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon);\n\n\t\t\tctx.moveTo(x + r, y);\n\t\t\tctx.lineTo(x + width - r, y);\n\t\t\tctx.arcTo(x + width, y, x + width, y + r, r);\n\t\t\tctx.lineTo(x + width, y + height - r);\n\t\t\tctx.arcTo(x + width, y + height, x + width - r, y + height, r);\n\t\t\tctx.lineTo(x + r, y + height);\n\t\t\tctx.arcTo(x, y + height, x, y + height - r, r);\n\t\t\tctx.lineTo(x, y + r);\n\t\t\tctx.arcTo(x, y, x + r, y, r);\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\t\trotation = rotation || 0;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.translate(x, y);\n\t\tctx.rotate(rotation * Math.PI / 180);\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(0, 0, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(-edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(edgeLength / 2, height / 3);\n\t\t\tctx.lineTo(0, -2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.rect(-size, -size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\tvar offset = radius / Math.SQRT2;\n\t\t\tvar leftX = -offset;\n\t\t\tvar topY = -offset;\n\t\t\tvar sideSize = Math.SQRT2 * radius;\n\n\t\t\t// NOTE(SB) the rounded rect implementation changed to use `arcTo`\n\t\t\t// instead of `quadraticCurveTo` since it generates better results\n\t\t\t// when rect is almost a circle. 0.425 (instead of 0.5) produces\n\t\t\t// results visually closer to the previous impl.\n\t\t\tthis.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.moveTo(-size, 0);\n\t\t\tctx.lineTo(0, size);\n\t\t\tctx.lineTo(size, 0);\n\t\t\tctx.lineTo(0, -size);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.moveTo(0, radius);\n\t\t\tctx.lineTo(0, -radius);\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(-xOffset, -yOffset);\n\t\t\tctx.lineTo(xOffset, yOffset);\n\t\t\tctx.moveTo(-xOffset, yOffset);\n\t\t\tctx.lineTo(xOffset, -yOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.moveTo(-radius, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(0, 0);\n\t\t\tctx.lineTo(radius, 0);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t\tctx.restore();\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tif (target.steppedLine) {\n\t\t\tif ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.clear = exports.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports.roundedRect.apply(exports, arguments);\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n};\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","'use strict';\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {Number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @function\n\t */\n\tisArray: Array.isArray ? Array.isArray : function(value) {\n\t\treturn Object.prototype.toString.call(value) === '[object Array]';\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {Boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {Number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {Function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {Object|Array} loopable - The object or array to be iterated.\n\t * @param {Function} fn - The function to call for each item.\n\t * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {Boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see http://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {Boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): this method is also used by configMerge and scaleMerge as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @param {Object} [options] - Merging options:\n\t * @param {Function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {Object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {Object} target - The target object in which all sources are merged into.\n\t * @param {Object|Array(Object)} source - Object(s) to merge into `target`.\n\t * @returns {Object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {Object} target - The target object in which all objects are merged into.\n\t * @param {Object} arg1 - Object containing additional properties to merge in target.\n\t * @param {Object} argN - Additional objects containing properties to merge in target.\n\t * @returns {Object} The `target` object.\n\t */\n\textend: function(target) {\n\t\tvar setFn = function(value, key) {\n\t\t\ttarget[key] = value;\n\t\t};\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; ++i) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn target;\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t}\n};\n\nmodule.exports = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n","'use strict'\r\n\r\nmodule.exports = {\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};\r\n","exports.f = {}.propertyIsEnumerable;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\nvar globalDefaults = defaults.global;\n\ndefaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: globalDefaults.defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar index, current, previous, currentVM;\n\n\t\t// If we are looping, adding the first point again\n\t\tif (me._loop && points.length) {\n\t\t\tpoints.push(points[0]);\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\t\tlastDrawnIndex = -1;\n\n\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\tcurrent = points[index];\n\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\tcurrentVM = current._view;\n\n\t\t\t// First point moves to it's starting position no matter what\n\t\t\tif (index === 0) {\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\thelpers.canvas.lineTo(ctx, previous._view, current._view);\n\t\t\t\t\t}\n\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {}\n});\n\n/**\n * The plugin service singleton\n * @namespace Chart.plugins\n * @since 2.1.0\n */\nmodule.exports = {\n\t/**\n\t * Globally registered plugins.\n\t * @private\n\t */\n\t_plugins: [],\n\n\t/**\n\t * This identifier is used to invalidate the descriptors cache attached to each chart\n\t * when a global plugin is registered or unregistered. In this case, the cache ID is\n\t * incremented and descriptors are regenerated during following API calls.\n\t * @private\n\t */\n\t_cacheId: 0,\n\n\t/**\n\t * Registers the given plugin(s) if not already registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\tp.push(plugin);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Unregisters the given plugin(s) only if registered.\n\t * @param {Array|Object} plugins plugin instance(s).\n\t */\n\tunregister: function(plugins) {\n\t\tvar p = this._plugins;\n\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\tvar idx = p.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\tp.splice(idx, 1);\n\t\t\t}\n\t\t});\n\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Remove all registered plugins.\n\t * @since 2.1.5\n\t */\n\tclear: function() {\n\t\tthis._plugins = [];\n\t\tthis._cacheId++;\n\t},\n\n\t/**\n\t * Returns the number of registered plugins?\n\t * @returns {Number}\n\t * @since 2.1.5\n\t */\n\tcount: function() {\n\t\treturn this._plugins.length;\n\t},\n\n\t/**\n\t * Returns all registered plugin instances.\n\t * @returns {Array} array of plugin objects.\n\t * @since 2.1.5\n\t */\n\tgetAll: function() {\n\t\treturn this._plugins;\n\t},\n\n\t/**\n\t * Calls enabled plugins for `chart` on the specified hook and with the given args.\n\t * This method immediately returns as soon as a plugin explicitly returns false. The\n\t * returned value can be used, for instance, to interrupt the current action.\n\t * @param {Object} chart - The chart instance for which plugins should be called.\n\t * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate').\n\t * @param {Array} [args] - Extra arguments to apply to the hook call.\n\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t */\n\tnotify: function(chart, hook, args) {\n\t\tvar descriptors = this.descriptors(chart);\n\t\tvar ilen = descriptors.length;\n\t\tvar i, descriptor, plugin, params, method;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tdescriptor = descriptors[i];\n\t\t\tplugin = descriptor.plugin;\n\t\t\tmethod = plugin[hook];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\tparams = [chart].concat(args || []);\n\t\t\t\tparams.push(descriptor.options);\n\t\t\t\tif (method.apply(plugin, params) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns descriptors of enabled plugins for the given chart.\n\t * @returns {Array} [{ plugin, options }]\n\t * @private\n\t */\n\tdescriptors: function(chart) {\n\t\tvar cache = chart.$plugins || (chart.$plugins = {});\n\t\tif (cache.id === this._cacheId) {\n\t\t\treturn cache.descriptors;\n\t\t}\n\n\t\tvar plugins = [];\n\t\tvar descriptors = [];\n\t\tvar config = (chart && chart.config) || {};\n\t\tvar options = (config.options && config.options.plugins) || {};\n\n\t\tthis._plugins.concat(config.plugins || []).forEach(function(plugin) {\n\t\t\tvar idx = plugins.indexOf(plugin);\n\t\t\tif (idx !== -1) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar id = plugin.id;\n\t\t\tvar opts = options[id];\n\t\t\tif (opts === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (opts === true) {\n\t\t\t\topts = helpers.clone(defaults.global.plugins[id]);\n\t\t\t}\n\n\t\t\tplugins.push(plugin);\n\t\t\tdescriptors.push({\n\t\t\t\tplugin: plugin,\n\t\t\t\toptions: opts || {}\n\t\t\t});\n\t\t});\n\n\t\tcache.descriptors = descriptors;\n\t\tcache.id = this._cacheId;\n\t\treturn descriptors;\n\t},\n\n\t/**\n\t * Invalidates cache for the given chart: descriptors hold a reference on plugin option,\n\t * but in some cases, this reference can be changed by the user when updating options.\n\t * https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t * @private\n\t */\n\t_invalidate: function(chart) {\n\t\tdelete chart.$plugins;\n\t}\n};\n\n/**\n * Plugin extension hooks.\n * @interface IPlugin\n * @since 2.1.0\n */\n/**\n * @method IPlugin#beforeInit\n * @desc Called before initializing `chart`.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterInit\n * @desc Called after `chart` has been initialized and before the first update.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeUpdate\n * @desc Called before updating `chart`. If any plugin returns `false`, the update\n * is cancelled (and thus subsequent render(s)) until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart update.\n */\n/**\n * @method IPlugin#afterUpdate\n * @desc Called after `chart` has been updated and before rendering. Note that this\n * hook will not be called if the chart update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsUpdate\n * @desc Called before updating the `chart` datasets. If any plugin returns `false`,\n * the datasets update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} false to cancel the datasets update.\n * @since version 2.1.5\n*/\n/**\n * @method IPlugin#afterDatasetsUpdate\n * @desc Called after the `chart` datasets have been updated. Note that this hook\n * will not be called if the datasets update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @since version 2.1.5\n */\n/**\n * @method IPlugin#beforeDatasetUpdate\n * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin\n * returns `false`, the datasets update is cancelled until another `update` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetUpdate\n * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note\n * that this hook will not be called if the datasets update has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeLayout\n * @desc Called before laying out `chart`. If any plugin returns `false`,\n * the layout update is cancelled until another `update` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart layout.\n */\n/**\n * @method IPlugin#afterLayout\n * @desc Called after the `chart` has been layed out. Note that this hook will not\n * be called if the layout update has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeRender\n * @desc Called before rendering `chart`. If any plugin returns `false`,\n * the rendering is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart rendering.\n */\n/**\n * @method IPlugin#afterRender\n * @desc Called after the `chart` has been fully rendered (and animation completed). Note\n * that this hook will not be called if the rendering has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDraw\n * @desc Called before drawing `chart` at every animation frame specified by the given\n * easing value. If any plugin returns `false`, the frame drawing is cancelled until\n * another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart drawing.\n */\n/**\n * @method IPlugin#afterDraw\n * @desc Called after the `chart` has been drawn for the specific easing value. Note\n * that this hook will not be called if the drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetsDraw\n * @desc Called before drawing the `chart` datasets. If any plugin returns `false`,\n * the datasets drawing is cancelled until another `render` is triggered.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetsDraw\n * @desc Called after the `chart` datasets have been drawn. Note that this hook\n * will not be called if the datasets drawing has been previously cancelled.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeDatasetDraw\n * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets\n * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing\n * is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart datasets drawing.\n */\n/**\n * @method IPlugin#afterDatasetDraw\n * @desc Called after the `chart` datasets at the given `args.index` have been drawn\n * (datasets are drawn in the reverse order). Note that this hook will not be called\n * if the datasets drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Number} args.index - The dataset index.\n * @param {Object} args.meta - The dataset metadata.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeTooltipDraw\n * @desc Called before drawing the `tooltip`. If any plugin returns `false`,\n * the tooltip drawing is cancelled until another `render` is triggered.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n * @returns {Boolean} `false` to cancel the chart tooltip drawing.\n */\n/**\n * @method IPlugin#afterTooltipDraw\n * @desc Called after drawing the `tooltip`. Note that this hook will not\n * be called if the tooltip drawing has been previously cancelled.\n * @param {Chart} chart - The chart instance.\n * @param {Object} args - The call arguments.\n * @param {Object} args.tooltip - The tooltip.\n * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#beforeEvent\n * @desc Called before processing the specified `event`. If any plugin returns `false`,\n * the event will be discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#afterEvent\n * @desc Called after the `event` has been consumed. Note that this hook\n * will not be called if the `event` has been previously discarded.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {IEvent} event - The event object.\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#resize\n * @desc Called after the chart as been resized.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Number} size - The new canvas display size (eq. canvas.style width & height).\n * @param {Object} options - The plugin options.\n */\n/**\n * @method IPlugin#destroy\n * @desc Called after the chart as been destroyed.\n * @param {Chart.Controller} chart - The chart instance.\n * @param {Object} options - The plugin options.\n */\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VContent',[_c('VLayout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('VProgressCircular',{attrs:{\"indeterminate\":\"\",\"color\":\"primary\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadSpinner.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadSpinner.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadSpinner.vue?vue&type=template&id=e7cdcc06&scoped=true&\"\nimport script from \"./LoadSpinner.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadSpinner.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadSpinner.vue?vue&type=style&index=0&id=e7cdcc06&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e7cdcc06\",\n null\n \n)\n\ncomponent.options.__file = \"LoadSpinner.vue\"\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VContent } from 'vuetify/lib'\nimport { VLayout } from 'vuetify/lib'\nimport { VProgressCircular } from 'vuetify/lib'\ninstallComponents(component, {\n VContent,\n VLayout,\n VProgressCircular,\n})\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadSpinner.vue?vue&type=style&index=0&id=e7cdcc06&scoped=true&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadSpinner.vue?vue&type=style&index=0&id=e7cdcc06&scoped=true&lang=css&\"","/**\n * @namespace Chart\n */\nvar Chart = require('./core/core')();\n\nChart.helpers = require('./helpers/index');\n\n// @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests!\nrequire('./core/core.helpers')(Chart);\n\nChart.Animation = require('./core/core.animation');\nChart.animationService = require('./core/core.animations');\nChart.defaults = require('./core/core.defaults');\nChart.Element = require('./core/core.element');\nChart.elements = require('./elements/index');\nChart.Interaction = require('./core/core.interaction');\nChart.layouts = require('./core/core.layouts');\nChart.platform = require('./platforms/platform');\nChart.plugins = require('./core/core.plugins');\nChart.Scale = require('./core/core.scale');\nChart.scaleService = require('./core/core.scaleService');\nChart.Ticks = require('./core/core.ticks');\nChart.Tooltip = require('./core/core.tooltip');\n\nrequire('./core/core.controller')(Chart);\nrequire('./core/core.datasetController')(Chart);\n\nrequire('./scales/scale.linearbase')(Chart);\nrequire('./scales/scale.category')(Chart);\nrequire('./scales/scale.linear')(Chart);\nrequire('./scales/scale.logarithmic')(Chart);\nrequire('./scales/scale.radialLinear')(Chart);\nrequire('./scales/scale.time')(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire('./controllers/controller.bar')(Chart);\nrequire('./controllers/controller.bubble')(Chart);\nrequire('./controllers/controller.doughnut')(Chart);\nrequire('./controllers/controller.line')(Chart);\nrequire('./controllers/controller.polarArea')(Chart);\nrequire('./controllers/controller.radar')(Chart);\nrequire('./controllers/controller.scatter')(Chart);\n\nrequire('./charts/Chart.Bar')(Chart);\nrequire('./charts/Chart.Bubble')(Chart);\nrequire('./charts/Chart.Doughnut')(Chart);\nrequire('./charts/Chart.Line')(Chart);\nrequire('./charts/Chart.PolarArea')(Chart);\nrequire('./charts/Chart.Radar')(Chart);\nrequire('./charts/Chart.Scatter')(Chart);\n\n// Loading built-in plugins\nvar plugins = require('./plugins');\nfor (var k in plugins) {\n\tif (plugins.hasOwnProperty(k)) {\n\t\tChart.plugins.register(plugins[k]);\n\t}\n}\n\nChart.platform.initialize();\n\nmodule.exports = Chart;\nif (typeof window !== 'undefined') {\n\twindow.Chart = Chart;\n}\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Legend\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Legend = plugins.legend._element;\n\n/**\n * Provided for backward compatibility, not available anymore\n * @namespace Chart.Title\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.Title = plugins.title._element;\n\n/**\n * Provided for backward compatibility, use Chart.plugins instead\n * @namespace Chart.pluginService\n * @deprecated since version 2.1.5\n * @todo remove at version 3\n * @private\n */\nChart.pluginService = Chart.plugins;\n\n/**\n * Provided for backward compatibility, inheriting from Chart.PlugingBase has no\n * effect, instead simply create/register plugins via plain JavaScript objects.\n * @interface Chart.PluginBase\n * @deprecated since version 2.5.0\n * @todo remove at version 3\n * @private\n */\nChart.PluginBase = Chart.Element.extend({});\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas instead.\n * @namespace Chart.canvasHelpers\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nChart.canvasHelpers = Chart.helpers.canvas;\n\n/**\n * Provided for backward compatibility, use Chart.layouts instead.\n * @namespace Chart.layoutService\n * @deprecated since version 2.8.0\n * @todo remove at version 3\n * @private\n */\nChart.layoutService = Chart.layouts;\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: Math.PI * -0.5,\n\n\t// The total circumference of the chart.\n\tcircumference: Math.PI * 2.0,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\ndefaults._set('pie', helpers.clone(defaults.doughnut));\ndefaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth;\n\t\t\tvar availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth;\n\t\t\tvar minSize = Math.min(availableWidth, availableHeight);\n\t\t\tvar offset = {x: 0, y: 0};\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar cutoutPercentage = opts.cutoutPercentage;\n\t\t\tvar circumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n\n\t\t\tchart.borderWidth = me.getMaxBorderWidth(meta.data);\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0);\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI));\n\t\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\n\t\t\t// Resets the visual styles\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/* if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (Math.abs(value) / total);\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\t// gets the max border or hover width to properly scale pie charts\n\t\tgetMaxBorderWidth: function(arcs) {\n\t\t\tvar max = 0;\n\t\t\tvar index = this.index;\n\t\t\tvar length = arcs.length;\n\t\t\tvar borderWidth;\n\t\t\tvar hoverWidth;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tborderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0;\n\t\t\t\thoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t\treturn max;\n\t\t}\n\t});\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2\n\t\t}\n\t}\n});\n\nmodule.exports = Element.extend({\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar\tangle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= 2.0 * Math.PI;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += 2.0 * Math.PI;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar sA = vm.startAngle;\n\t\tvar eA = vm.endAngle;\n\n\t\tctx.beginPath();\n\n\t\tctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n\t\tctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n\t\tctx.closePath();\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = vm.borderWidth;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\n\t\tctx.fill();\n\t\tctx.lineJoin = 'bevel';\n\n\t\tif (vm.borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.linear\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar DEFAULT_MIN = 0;\n\t\t\tvar DEFAULT_MAX = 1;\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\tvaluesPerStack[key] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerStack[key].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerStack[key].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else if (value < 0) {\n\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN;\n\t\t\tme.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX;\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tpixel = me.left + (me.width / range * (rightValue - start));\n\t\t\t} else {\n\t\t\t\tpixel = me.bottom - (me.height / range * (rightValue - start));\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar innerDimension = isHorizontal ? me.width : me.height;\n\t\t\tvar offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('linear', LinearScale, defaultConfig);\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\n/**\n * Generate a set of logarithmic ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t// Figure out what the max number of ticks we can support it is based on the size of\n\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t// the graph\n\tvar tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min))));\n\n\tvar endExp = Math.floor(helpers.log10(dataRange.max));\n\tvar endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n\tvar exp, significand;\n\n\tif (tickVal === 0) {\n\t\texp = Math.floor(helpers.log10(dataRange.minNotZero));\n\t\tsignificand = Math.floor(dataRange.minNotZero / Math.pow(10, exp));\n\n\t\tticks.push(tickVal);\n\t\ttickVal = significand * Math.pow(10, exp);\n\t} else {\n\t\texp = Math.floor(helpers.log10(tickVal));\n\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp));\n\t}\n\tvar precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n\n\tdo {\n\t\tticks.push(tickVal);\n\n\t\t++significand;\n\t\tif (significand === 10) {\n\t\t\tsignificand = 1;\n\t\t\t++exp;\n\t\t\tprecision = exp >= 0 ? 1 : precision;\n\t\t}\n\n\t\ttickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n\t} while (exp < endExp || (exp === endExp && significand < endSignificand));\n\n\tvar lastTick = valueOrDefault(generationOptions.max, tickVal);\n\tticks.push(lastTick);\n\n\treturn ticks;\n}\n\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\tposition: 'left',\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: Ticks.formatters.logarithmic\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tvar hasStacks = opts.stacked;\n\t\t\tif (hasStacks === undefined) {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tif (hasStacks) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) &&\n\t\t\t\t\t\tmeta.stack !== undefined) {\n\t\t\t\t\t\thasStacks = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (opts.stacked || hasStacks) {\n\t\t\t\tvar valuesPerStack = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar key = [\n\t\t\t\t\t\tmeta.type,\n\t\t\t\t\t\t// we have a separate stack for stack=undefined datasets when the opts.stacked is undefined\n\t\t\t\t\t\t((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''),\n\t\t\t\t\t\tmeta.stack\n\t\t\t\t\t].join('.');\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerStack[key] === undefined) {\n\t\t\t\t\t\t\tvaluesPerStack[key] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerStack[key];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerStack, function(valuesForType) {\n\t\t\t\t\tif (valuesForType.length > 0) {\n\t\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\t// invalid, hidden and negative values are ignored\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden || value < 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\t\tvar DEFAULT_MIN = 1;\n\t\t\tvar DEFAULT_MAX = 10;\n\n\t\t\tme.min = valueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = valueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = DEFAULT_MIN;\n\t\t\t\t\tme.max = DEFAULT_MAX;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (me.min === null) {\n\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.max)) - 1);\n\t\t\t}\n\t\t\tif (me.max === null) {\n\t\t\t\tme.max = me.min !== 0\n\t\t\t\t\t? Math.pow(10, Math.floor(helpers.log10(me.min)) + 1)\n\t\t\t\t\t: DEFAULT_MAX;\n\t\t\t}\n\t\t\tif (me.minNotZero === null) {\n\t\t\t\tif (me.min > 0) {\n\t\t\t\t\tme.minNotZero = me.min;\n\t\t\t\t} else if (me.max < 1) {\n\t\t\t\t\tme.minNotZero = Math.pow(10, Math.floor(helpers.log10(me.max)));\n\t\t\t\t} else {\n\t\t\t\t\tme.minNotZero = DEFAULT_MIN;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar reverse = !me.isHorizontal();\n\n\t\t\tvar generationOptions = {\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(generationOptions, me);\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\treverse = !reverse;\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t\tif (reverse) {\n\t\t\t\tticks.reverse();\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tScale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\t/**\n\t\t * Returns the value of the first tick.\n\t\t * @param {Number} value - The minimum not zero value.\n\t\t * @return {Number} The first tick value.\n\t\t * @private\n\t\t */\n\t\t_getFirstTickValue: function(value) {\n\t\t\tvar exp = Math.floor(helpers.log10(value));\n\t\t\tvar significand = Math.floor(value / Math.pow(10, exp));\n\n\t\t\treturn significand * Math.pow(10, exp);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar offset = 0;\n\t\t\tvar innerDimension, pixel, start, end, sign;\n\n\t\t\tvalue = +me.getRightValue(value);\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t\tsign = -1;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t\tsign = 1;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tpixel = reverse ? me.right : me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tsign *= -1; // invert, since the upper-left corner of the canvas is at pixel (0, 0)\n\t\t\t\tpixel = reverse ? me.top : me.bottom;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\toffset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tif (value !== 0) {\n\t\t\t\t\toffset += innerDimension / (log10(end) - log10(start)) * (log10(value) - log10(start));\n\t\t\t\t}\n\t\t\t\tpixel += sign * offset;\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar reverse = me.options.ticks.reverse;\n\t\t\tvar log10 = helpers.log10;\n\t\t\tvar firstTickValue = me._getFirstTickValue(me.minNotZero);\n\t\t\tvar innerDimension, start, end, value;\n\n\t\t\tif (reverse) {\n\t\t\t\tstart = me.end;\n\t\t\t\tend = me.start;\n\t\t\t} else {\n\t\t\t\tstart = me.start;\n\t\t\t\tend = me.end;\n\t\t\t}\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width;\n\t\t\t\tvalue = reverse ? me.right - pixel : pixel - me.left;\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height;\n\t\t\t\tvalue = reverse ? pixel - me.top : me.bottom - pixel;\n\t\t\t}\n\t\t\tif (value !== start) {\n\t\t\t\tif (start === 0) { // include zero tick\n\t\t\t\t\tvar offset = helpers.getValueOrDefault(\n\t\t\t\t\t\tme.options.ticks.fontSize,\n\t\t\t\t\t\tChart.defaults.global.defaultFontSize\n\t\t\t\t\t);\n\t\t\t\t\tvalue -= offset;\n\t\t\t\t\tinnerDimension -= offset;\n\t\t\t\t\tstart = firstTickValue;\n\t\t\t\t}\n\t\t\t\tvalue *= log10(end) - log10(start);\n\t\t\t\tvalue /= innerDimension;\n\t\t\t\tvalue = Math.pow(10, log10(start) + value);\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ndefaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\tposition: 'left',\n\t\t\ttype: 'category',\n\n\t\t\t// Specific to Horizontal Bar Controller\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9,\n\n\t\t\t// offset settings\n\t\t\toffset: true,\n\n\t\t\t// grid line settings\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function(item, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\n\t\t\t\tif (item.length > 0) {\n\t\t\t\t\tif (item[0].yLabel) {\n\t\t\t\t\t\ttitle = item[0].yLabel;\n\t\t\t\t\t} else if (data.labels.length > 0 && item[0].index < data.labels.length) {\n\t\t\t\t\t\ttitle = data.labels[item[0].index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + item.xLabel;\n\t\t\t}\n\t\t},\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale.isHorizontal() ? scale.width : scale.height;\n\tvar ticks = scale.getTicks();\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, pixels[i] - pixels[i - 1]);\n\t}\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, curr - prev) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar size, ratio;\n\n\tif (helpers.isNullOrUndef(thickness)) {\n\t\tsize = ruler.min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale end extremity.\n\t\tprev = curr - (next === null ? ruler.end - curr : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - ((curr - prev) / 2) * percent;\n\tsize = ((next - prev) / 2) * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Rectangle,\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta;\n\n\t\t\tChart.DatasetController.prototype.initialize.apply(me, arguments);\n\n\t\t\tmeta = me.getMeta();\n\t\t\tmeta.stack = me.getDataset().stack;\n\t\t\tmeta.bar = true;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar i, ilen;\n\n\t\t\tme._ruler = me.getRuler();\n\n\t\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\t\tme.updateElement(rects[i], i, reset);\n\t\t\t}\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar rectangleOptions = chart.options.elements.rectangle;\n\n\t\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\t\trectangle._datasetIndex = me.index;\n\t\t\trectangle._index = index;\n\n\t\t\trectangle._model = {\n\t\t\t\tdatasetLabel: dataset.label,\n\t\t\t\tlabel: chart.data.labels[index],\n\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped,\n\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor),\n\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor),\n\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth)\n\t\t\t};\n\n\t\t\tme.updateElementGeometry(rectangle, index, reset);\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tupdateElementGeometry: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar model = rectangle._model;\n\t\t\tvar vscale = me.getValueScale();\n\t\t\tvar base = vscale.getBasePixel();\n\t\t\tvar horizontal = vscale.isHorizontal();\n\t\t\tvar ruler = me._ruler || me.getRuler();\n\t\t\tvar vpixels = me.calculateBarValuePixels(me.index, index);\n\t\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler);\n\n\t\t\tmodel.horizontal = horizontal;\n\t\t\tmodel.base = reset ? base : vpixels.base;\n\t\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScale: function() {\n\t\t\treturn this.getScaleForId(this.getValueScaleId());\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScale: function() {\n\t\t\treturn this.getScaleForId(this.getIndexScaleId());\n\t\t},\n\n\t\t/**\n\t\t * Returns the stacks based on groups and bar visibility.\n\t\t * @param {Number} [last] - The dataset index\n\t\t * @returns {Array} The stack list\n\t\t * @private\n\t\t */\n\t\t_getStacks: function(last) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar ilen = last === undefined ? chart.data.datasets.length : last + 1;\n\t\t\tvar stacks = [];\n\t\t\tvar i, meta;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tif (meta.bar && chart.isDatasetVisible(i) &&\n\t\t\t\t\t(stacked === false ||\n\t\t\t\t\t(stacked === true && stacks.indexOf(meta.stack) === -1) ||\n\t\t\t\t\t(stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) {\n\t\t\t\t\tstacks.push(meta.stack);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn stacks;\n\t\t},\n\n\t\t/**\n\t\t * Returns the effective number of stacks based on groups and bar visibility.\n\t\t * @private\n\t\t */\n\t\tgetStackCount: function() {\n\t\t\treturn this._getStacks().length;\n\t\t},\n\n\t\t/**\n\t\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t\t * @param {Number} [datasetIndex] - The dataset index\n\t\t * @param {String} [name] - The stack name to find\n\t\t * @returns {Number} The stack index\n\t\t * @private\n\t\t */\n\t\tgetStackIndex: function(datasetIndex, name) {\n\t\t\tvar stacks = this._getStacks(datasetIndex);\n\t\t\tvar index = (name !== undefined)\n\t\t\t\t? stacks.indexOf(name)\n\t\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\t\treturn (index === -1)\n\t\t\t\t? stacks.length - 1\n\t\t\t\t: index;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetRuler: function() {\n\t\t\tvar me = this;\n\t\t\tvar scale = me.getIndexScale();\n\t\t\tvar stackCount = me.getStackCount();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar isHorizontal = scale.isHorizontal();\n\t\t\tvar start = isHorizontal ? scale.left : scale.top;\n\t\t\tvar end = start + (isHorizontal ? scale.width : scale.height);\n\t\t\tvar pixels = [];\n\t\t\tvar i, ilen, min;\n\n\t\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\t\tpixels.push(scale.getPixelForValue(null, i, datasetIndex));\n\t\t\t}\n\n\t\t\tmin = helpers.isNullOrUndef(scale.options.barThickness)\n\t\t\t\t? computeMinSampleSize(scale, pixels)\n\t\t\t\t: -1;\n\n\t\t\treturn {\n\t\t\t\tmin: min,\n\t\t\t\tpixels: pixels,\n\t\t\t\tstart: start,\n\t\t\t\tend: end,\n\t\t\t\tstackCount: stackCount,\n\t\t\t\tscale: scale\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * Note: pixel values are not clamped to the scale area.\n\t\t * @private\n\t\t */\n\t\tcalculateBarValuePixels: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar value = scale.getRightValue(datasets[datasetIndex].data[index]);\n\t\t\tvar stacked = scale.options.stacked;\n\t\t\tvar stack = meta.stack;\n\t\t\tvar start = 0;\n\t\t\tvar i, imeta, ivalue, base, head, size;\n\n\t\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\t\tfor (i = 0; i < datasetIndex; ++i) {\n\t\t\t\t\timeta = chart.getDatasetMeta(i);\n\n\t\t\t\t\tif (imeta.bar &&\n\t\t\t\t\t\timeta.stack === stack &&\n\t\t\t\t\t\timeta.controller.getValueScaleId() === scale.id &&\n\t\t\t\t\t\tchart.isDatasetVisible(i)) {\n\n\t\t\t\t\t\tivalue = scale.getRightValue(datasets[i].data[index]);\n\t\t\t\t\t\tif ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) {\n\t\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase = scale.getPixelForValue(start);\n\t\t\thead = scale.getPixelForValue(start + value);\n\t\t\tsize = (head - base) / 2;\n\n\t\t\treturn {\n\t\t\t\tsize: size,\n\t\t\t\tbase: base,\n\t\t\t\thead: head,\n\t\t\t\tcenter: head + size / 2\n\t\t\t};\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tcalculateBarIndexPixels: function(datasetIndex, index, ruler) {\n\t\t\tvar me = this;\n\t\t\tvar options = ruler.scale.options;\n\t\t\tvar range = options.barThickness === 'flex'\n\t\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\t\tvar size = Math.min(\n\t\t\t\thelpers.valueOrDefault(options.maxBarThickness, Infinity),\n\t\t\t\trange.chunk * range.ratio);\n\n\t\t\treturn {\n\t\t\t\tbase: center - size / 2,\n\t\t\t\thead: center + size / 2,\n\t\t\t\tcenter: center,\n\t\t\t\tsize: size\n\t\t\t};\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar scale = me.getValueScale();\n\t\t\tvar rects = me.getMeta().data;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar ilen = rects.length;\n\t\t\tvar i = 0;\n\n\t\t\thelpers.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\t\tfor (; i < ilen; ++i) {\n\t\t\t\tif (!isNaN(scale.getRightValue(dataset.data[i]))) {\n\t\t\t\t\trects[i].draw();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thelpers.canvas.unclipArea(chart.ctx);\n\t\t},\n\t});\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetValueScaleId: function() {\n\t\t\treturn this.getMeta().xAxisID;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tgetIndexScaleId: function() {\n\t\t\treturn this.getMeta().yAxisID;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('radar', {\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: elements.Line,\n\n\t\tdataElementType: elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_scale: scale,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\t\t\t\t\trotation: custom.rotation ? custom.rotation : helpers.valueAtIndexOrDefault(dataset.pointRotation, index, pointElementOptions.rotation),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\t});\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tdataElementType: elements.Point,\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar options = me._resolveElementOptions(point, index);\n\t\t\tvar data = me.getDataset().data[index];\n\t\t\tvar dsIndex = me.index;\n\n\t\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._options = options;\n\t\t\tpoint._datasetIndex = dsIndex;\n\t\t\tpoint._index = index;\n\t\t\tpoint._model = {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\thitRadius: options.hitRadius,\n\t\t\t\tpointStyle: options.pointStyle,\n\t\t\t\trotation: options.rotation,\n\t\t\t\tradius: reset ? 0 : options.radius,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t};\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\t/**\n\t\t * @protected\n\t\t */\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar model = point._model;\n\t\t\tvar options = point._options;\n\t\t\tpoint.$previousStyle = {\n\t\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\t\tborderColor: model.borderColor,\n\t\t\t\tborderWidth: model.borderWidth,\n\t\t\t\tradius: model.radius\n\t\t\t};\n\t\t\tmodel.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor));\n\t\t\tmodel.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor));\n\t\t\tmodel.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t\t\tmodel.radius = options.radius + options.hoverRadius;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_resolveElementOptions: function(point, index) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar datasets = chart.data.datasets;\n\t\t\tvar dataset = datasets[me.index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar options = chart.options.elements.point;\n\t\t\tvar resolve = helpers.options.resolve;\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar values = {};\n\t\t\tvar i, ilen, key;\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\tvar keys = [\n\t\t\t\t'backgroundColor',\n\t\t\t\t'borderColor',\n\t\t\t\t'borderWidth',\n\t\t\t\t'hoverBackgroundColor',\n\t\t\t\t'hoverBorderColor',\n\t\t\t\t'hoverBorderWidth',\n\t\t\t\t'hoverRadius',\n\t\t\t\t'hitRadius',\n\t\t\t\t'pointStyle',\n\t\t\t\t'rotation'\n\t\t\t];\n\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdataset[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index);\n\t\t\t}\n\n\t\t\t// Custom radius resolution\n\t\t\tvalues.radius = resolve([\n\t\t\t\tcustom.radius,\n\t\t\t\tdata ? data.r : undefined,\n\t\t\t\tdataset.radius,\n\t\t\t\toptions.radius\n\t\t\t], context, index);\n\t\t\treturn values;\n\t\t}\n\t});\n};\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\nvar Ticks = require('./core.ticks');\n\ndefaults._set('scale', {\n\tdisplay: true,\n\tposition: 'left',\n\toffset: false,\n\n\t// grid line settings\n\tgridLines: {\n\t\tdisplay: true,\n\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\tlineWidth: 1,\n\t\tdrawBorder: true,\n\t\tdrawOnChartArea: true,\n\t\tdrawTicks: true,\n\t\ttickMarkLength: 10,\n\t\tzeroLineWidth: 1,\n\t\tzeroLineColor: 'rgba(0,0,0,0.25)',\n\t\tzeroLineBorderDash: [],\n\t\tzeroLineBorderDashOffset: 0.0,\n\t\toffsetGridLines: false,\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0\n\t},\n\n\t// scale label\n\tscaleLabel: {\n\t\t// display property\n\t\tdisplay: false,\n\n\t\t// actual label\n\t\tlabelString: '',\n\n\t\t// line height\n\t\tlineHeight: 1.2,\n\n\t\t// top/bottom padding\n\t\tpadding: {\n\t\t\ttop: 4,\n\t\t\tbottom: 4\n\t\t}\n\t},\n\n\t// label settings\n\tticks: {\n\t\tbeginAtZero: false,\n\t\tminRotation: 0,\n\t\tmaxRotation: 50,\n\t\tmirror: false,\n\t\tpadding: 0,\n\t\treverse: false,\n\t\tdisplay: true,\n\t\tautoSkip: true,\n\t\tautoSkipPadding: 0,\n\t\tlabelOffset: 0,\n\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\tcallback: Ticks.formatters.values,\n\t\tminor: {},\n\t\tmajor: {}\n\t}\n});\n\nfunction labelsFromTicks(ticks) {\n\tvar labels = [];\n\tvar i, ilen;\n\n\tfor (i = 0, ilen = ticks.length; i < ilen; ++i) {\n\t\tlabels.push(ticks[i].label);\n\t}\n\n\treturn labels;\n}\n\nfunction getLineValue(scale, index, offsetGridLines) {\n\tvar lineValue = scale.getPixelForTick(index);\n\n\tif (offsetGridLines) {\n\t\tif (index === 0) {\n\t\t\tlineValue -= (scale.getPixelForTick(1) - lineValue) / 2;\n\t\t} else {\n\t\t\tlineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2;\n\t\t}\n\t}\n\treturn lineValue;\n}\n\nfunction computeTextSize(context, tick, font) {\n\treturn helpers.isArray(tick) ?\n\t\thelpers.longestText(context, font, tick) :\n\t\tcontext.measureText(tick).width;\n}\n\nfunction parseFontOptions(options) {\n\tvar valueOrDefault = helpers.valueOrDefault;\n\tvar globalDefaults = defaults.global;\n\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\tvar style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle);\n\tvar family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily);\n\n\treturn {\n\t\tsize: size,\n\t\tstyle: style,\n\t\tfamily: family,\n\t\tfont: helpers.fontString(size, style, family)\n\t};\n}\n\nfunction parseLineHeight(options) {\n\treturn helpers.options.toLineHeight(\n\t\thelpers.valueOrDefault(options.lineHeight, 1.2),\n\t\thelpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize));\n}\n\nmodule.exports = Element.extend({\n\t/**\n\t * Get the padding needed for the scale\n\t * @method getPadding\n\t * @private\n\t * @returns {Padding} the necessary padding\n\t */\n\tgetPadding: function() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tleft: me.paddingLeft || 0,\n\t\t\ttop: me.paddingTop || 0,\n\t\t\tright: me.paddingRight || 0,\n\t\t\tbottom: me.paddingBottom || 0\n\t\t};\n\t},\n\n\t/**\n\t * Returns the scale tick objects ({label, major})\n\t * @since 2.7\n\t */\n\tgetTicks: function() {\n\t\treturn this._ticks;\n\t},\n\n\t// These methods are ordered by lifecyle. Utilities then follow.\n\t// Any function defined here is inherited by all scale types.\n\t// Any function can be extended by the scale type\n\n\tmergeTicksOptions: function() {\n\t\tvar ticks = this.options.ticks;\n\t\tif (ticks.minor === false) {\n\t\t\tticks.minor = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tif (ticks.major === false) {\n\t\t\tticks.major = {\n\t\t\t\tdisplay: false\n\t\t\t};\n\t\t}\n\t\tfor (var key in ticks) {\n\t\t\tif (key !== 'major' && key !== 'minor') {\n\t\t\t\tif (typeof ticks.minor[key] === 'undefined') {\n\t\t\t\t\tticks.minor[key] = ticks[key];\n\t\t\t\t}\n\t\t\t\tif (typeof ticks.major[key] === 'undefined') {\n\t\t\t\t\tticks.major[key] = ticks[key];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tbeforeUpdate: function() {\n\t\thelpers.callback(this.options.beforeUpdate, [this]);\n\t},\n\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\t\tvar i, ilen, labels, label, ticks, tick;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = helpers.extend({\n\t\t\tleft: 0,\n\t\t\tright: 0,\n\t\t\ttop: 0,\n\t\t\tbottom: 0\n\t\t}, margins);\n\t\tme.longestTextCache = me.longestTextCache || {};\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\n\t\t// Data min/max\n\t\tme.beforeDataLimits();\n\t\tme.determineDataLimits();\n\t\tme.afterDataLimits();\n\n\t\t// Ticks - `this.ticks` is now DEPRECATED!\n\t\t// Internal ticks are now stored as objects in the PRIVATE `this._ticks` member\n\t\t// and must not be accessed directly from outside this class. `this.ticks` being\n\t\t// around for long time and not marked as private, we can't change its structure\n\t\t// without unexpected breaking changes. If you need to access the scale ticks,\n\t\t// use scale.getTicks() instead.\n\n\t\tme.beforeBuildTicks();\n\n\t\t// New implementations should return an array of objects but for BACKWARD COMPAT,\n\t\t// we still support no return (`this.ticks` internally set by calling this method).\n\t\tticks = me.buildTicks() || [];\n\n\t\tme.afterBuildTicks();\n\n\t\tme.beforeTickToLabelConversion();\n\n\t\t// New implementations should return the formatted tick labels but for BACKWARD\n\t\t// COMPAT, we still support no return (`this.ticks` internally changed by calling\n\t\t// this method and supposed to contain only string values).\n\t\tlabels = me.convertTicksToLabels(ticks) || me.ticks;\n\n\t\tme.afterTickToLabelConversion();\n\n\t\tme.ticks = labels; // BACKWARD COMPATIBILITY\n\n\t\t// IMPORTANT: from this point, we consider that `this.ticks` will NEVER change!\n\n\t\t// BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`)\n\t\tfor (i = 0, ilen = labels.length; i < ilen; ++i) {\n\t\t\tlabel = labels[i];\n\t\t\ttick = ticks[i];\n\t\t\tif (!tick) {\n\t\t\t\tticks.push(tick = {\n\t\t\t\t\tlabel: label,\n\t\t\t\t\tmajor: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttick.label = label;\n\t\t\t}\n\t\t}\n\n\t\tme._ticks = ticks;\n\n\t\t// Tick Rotation\n\t\tme.beforeCalculateTickRotation();\n\t\tme.calculateTickRotation();\n\t\tme.afterCalculateTickRotation();\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: function() {\n\t\thelpers.callback(this.options.afterUpdate, [this]);\n\t},\n\n\t//\n\n\tbeforeSetDimensions: function() {\n\t\thelpers.callback(this.options.beforeSetDimensions, [this]);\n\t},\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\t},\n\tafterSetDimensions: function() {\n\t\thelpers.callback(this.options.afterSetDimensions, [this]);\n\t},\n\n\t// Data limits\n\tbeforeDataLimits: function() {\n\t\thelpers.callback(this.options.beforeDataLimits, [this]);\n\t},\n\tdetermineDataLimits: helpers.noop,\n\tafterDataLimits: function() {\n\t\thelpers.callback(this.options.afterDataLimits, [this]);\n\t},\n\n\t//\n\tbeforeBuildTicks: function() {\n\t\thelpers.callback(this.options.beforeBuildTicks, [this]);\n\t},\n\tbuildTicks: helpers.noop,\n\tafterBuildTicks: function() {\n\t\thelpers.callback(this.options.afterBuildTicks, [this]);\n\t},\n\n\tbeforeTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.beforeTickToLabelConversion, [this]);\n\t},\n\tconvertTicksToLabels: function() {\n\t\tvar me = this;\n\t\t// Convert ticks to strings\n\t\tvar tickOpts = me.options.ticks;\n\t\tme.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this);\n\t},\n\tafterTickToLabelConversion: function() {\n\t\thelpers.callback(this.options.afterTickToLabelConversion, [this]);\n\t},\n\n\t//\n\n\tbeforeCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.beforeCalculateTickRotation, [this]);\n\t},\n\tcalculateTickRotation: function() {\n\t\tvar me = this;\n\t\tvar context = me.ctx;\n\t\tvar tickOpts = me.options.ticks;\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\t// Get the width of each grid by calculating the difference\n\t\t// between x offsets between 0 and 1.\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tcontext.font = tickFont.font;\n\n\t\tvar labelRotation = tickOpts.minRotation || 0;\n\n\t\tif (labels.length && me.options.display && me.isHorizontal()) {\n\t\t\tvar originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\tvar cosRotation, sinRotation;\n\n\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t// Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\twhile (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) {\n\t\t\t\tvar angleRadians = helpers.toRadians(labelRotation);\n\t\t\t\tcosRotation = Math.cos(angleRadians);\n\t\t\t\tsinRotation = Math.sin(angleRadians);\n\n\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t// go back one step\n\t\t\t\t\tlabelRotation--;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlabelRotation++;\n\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t}\n\t\t}\n\n\t\tme.labelRotation = labelRotation;\n\t},\n\tafterCalculateTickRotation: function() {\n\t\thelpers.callback(this.options.afterCalculateTickRotation, [this]);\n\t},\n\n\t//\n\n\tbeforeFit: function() {\n\t\thelpers.callback(this.options.beforeFit, [this]);\n\t},\n\tfit: function() {\n\t\tvar me = this;\n\t\t// Reset\n\t\tvar minSize = me.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\n\t\tvar labels = labelsFromTicks(me._ticks);\n\n\t\tvar opts = me.options;\n\t\tvar tickOpts = opts.ticks;\n\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\tvar gridLineOpts = opts.gridLines;\n\t\tvar display = opts.display;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar tickFont = parseFontOptions(tickOpts);\n\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t// Width\n\t\tif (isHorizontal) {\n\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t} else {\n\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t}\n\n\t\t// height\n\t\tif (isHorizontal) {\n\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t} else {\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\t// Are we showing a title for the scale?\n\t\tif (scaleLabelOpts.display && display) {\n\t\t\tvar scaleLabelLineHeight = parseLineHeight(scaleLabelOpts);\n\t\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding);\n\t\t\tvar deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height += deltaHeight;\n\t\t\t} else {\n\t\t\t\tminSize.width += deltaHeight;\n\t\t\t}\n\t\t}\n\n\t\t// Don't bother fitting the ticks if we are not showing them\n\t\tif (tickOpts.display && display) {\n\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache);\n\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(labels);\n\t\t\tvar lineSpace = tickFont.size * 0.5;\n\t\t\tvar tickPadding = me.options.ticks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\tvar angleRadians = helpers.toRadians(me.labelRotation);\n\t\t\t\tvar cosRotation = Math.cos(angleRadians);\n\t\t\t\tvar sinRotation = Math.sin(angleRadians);\n\n\t\t\t\t// TODO - improve this calculation\n\t\t\t\tvar labelHeight = (sinRotation * largestTextWidth)\n\t\t\t\t\t+ (tickFont.size * tallestLabelHeightInLines)\n\t\t\t\t\t+ (lineSpace * (tallestLabelHeightInLines - 1))\n\t\t\t\t\t+ lineSpace; // padding\n\n\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding);\n\n\t\t\t\tme.ctx.font = tickFont.font;\n\t\t\t\tvar firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font);\n\t\t\t\tvar lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font);\n\n\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned\n\t\t\t\t// which means that the right padding is dominated by the font height\n\t\t\t\tif (me.labelRotation !== 0) {\n\t\t\t\t\tme.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3;\n\t\t\t\t} else {\n\t\t\t\t\tme.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = lastLabelWidth / 2 + 3;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// A vertical axis is more constrained by the width. Labels are the\n\t\t\t\t// dominant factor here, so get that length first and account for padding\n\t\t\t\tif (tickOpts.mirror) {\n\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// use lineSpace for consistency with horizontal axis\n\t\t\t\t\t// tickPadding is not implemented for horizontal\n\t\t\t\t\tlargestTextWidth += tickPadding + lineSpace;\n\t\t\t\t}\n\n\t\t\t\tminSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth);\n\n\t\t\t\tme.paddingTop = tickFont.size / 2;\n\t\t\t\tme.paddingBottom = tickFont.size / 2;\n\t\t\t}\n\t\t}\n\n\t\tme.handleMargins();\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\t},\n\n\t/**\n\t * Handle margins and padding interactions\n\t * @private\n\t */\n\thandleMargins: function() {\n\t\tvar me = this;\n\t\tif (me.margins) {\n\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t}\n\t},\n\n\tafterFit: function() {\n\t\thelpers.callback(this.options.afterFit, [this]);\n\t},\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\treturn this.options.position === 'top' || this.options.position === 'bottom';\n\t},\n\tisFullWidth: function() {\n\t\treturn (this.options.fullWidth);\n\t},\n\n\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\tgetRightValue: function(rawValue) {\n\t\t// Null and undefined values first\n\t\tif (helpers.isNullOrUndef(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values\n\t\tif (typeof rawValue === 'number' && !isFinite(rawValue)) {\n\t\t\treturn NaN;\n\t\t}\n\t\t// If it is in fact an object, dive in one more level\n\t\tif (rawValue) {\n\t\t\tif (this.isHorizontal()) {\n\t\t\t\tif (rawValue.x !== undefined) {\n\t\t\t\t\treturn this.getRightValue(rawValue.x);\n\t\t\t\t}\n\t\t\t} else if (rawValue.y !== undefined) {\n\t\t\t\treturn this.getRightValue(rawValue.y);\n\t\t\t}\n\t\t}\n\n\t\t// Value is good, return it\n\t\treturn rawValue;\n\t},\n\n\t/**\n\t * Used to get the value to display in the tooltip for the data at the given index\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetLabelForIndex: helpers.noop,\n\n\t/**\n\t * Returns the location of the given data point. Value can either be an index or a numerical value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param value\n\t * @param index\n\t * @param datasetIndex\n\t */\n\tgetPixelForValue: helpers.noop,\n\n\t/**\n\t * Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t * @param pixel\n\t */\n\tgetValueForPixel: helpers.noop,\n\n\t/**\n\t * Returns the location of the tick at the given index\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForTick: function(index) {\n\t\tvar me = this;\n\t\tvar offset = me.options.offset;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel += tickWidth / 2;\n\t\t\t}\n\n\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\treturn me.top + (index * (innerHeight / (me._ticks.length - 1)));\n\t},\n\n\t/**\n\t * Utility for getting the pixel location of a percentage of scale\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetPixelForDecimal: function(decimal) {\n\t\tvar me = this;\n\t\tif (me.isHorizontal()) {\n\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\treturn finalVal;\n\t\t}\n\t\treturn me.top + (decimal * me.height);\n\t},\n\n\t/**\n\t * Returns the pixel for the minimum chart value\n\t * The coordinate (0, 0) is at the upper-left corner of the canvas\n\t */\n\tgetBasePixel: function() {\n\t\treturn this.getPixelForValue(this.getBaseValue());\n\t},\n\n\tgetBaseValue: function() {\n\t\tvar me = this;\n\t\tvar min = me.min;\n\t\tvar max = me.max;\n\n\t\treturn me.beginAtZero ? 0 :\n\t\t\tmin < 0 && max < 0 ? max :\n\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t0;\n\t},\n\n\t/**\n\t * Returns a subset of ticks to be plotted to avoid overlapping labels.\n\t * @private\n\t */\n\t_autoSkip: function(ticks) {\n\t\tvar skipRatio;\n\t\tvar me = this;\n\t\tvar isHorizontal = me.isHorizontal();\n\t\tvar optionTicks = me.options.ticks.minor;\n\t\tvar tickCount = ticks.length;\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\t\tvar result = [];\n\t\tvar i, tick, shouldSkip;\n\n\t\t// figure out the maximum number of gridlines to show\n\t\tvar maxTicks;\n\t\tif (optionTicks.maxTicksLimit) {\n\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t}\n\n\t\tif (isHorizontal) {\n\t\t\tskipRatio = false;\n\n\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t}\n\n\t\t\t// if they defined a max number of optionTicks,\n\t\t\t// increase skipRatio until that number is met\n\t\t\tif (maxTicks && tickCount > maxTicks) {\n\t\t\t\tskipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < tickCount; i++) {\n\t\t\ttick = ticks[i];\n\n\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\tshouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount);\n\t\t\tif (shouldSkip && i !== tickCount - 1) {\n\t\t\t\t// leave tick in place but make sure it's not displayed (#4635)\n\t\t\t\tdelete tick.label;\n\t\t\t}\n\t\t\tresult.push(tick);\n\t\t}\n\t\treturn result;\n\t},\n\n\t// Actually draw the scale on the canvas\n\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\tdraw: function(chartArea) {\n\t\tvar me = this;\n\t\tvar options = me.options;\n\t\tif (!options.display) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar context = me.ctx;\n\t\tvar globalDefaults = defaults.global;\n\t\tvar optionTicks = options.ticks.minor;\n\t\tvar optionMajorTicks = options.ticks.major || optionTicks;\n\t\tvar gridLines = options.gridLines;\n\t\tvar scaleLabel = options.scaleLabel;\n\n\t\tvar isRotated = me.labelRotation !== 0;\n\t\tvar isHorizontal = me.isHorizontal();\n\n\t\tvar ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks();\n\t\tvar tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar tickFont = parseFontOptions(optionTicks);\n\t\tvar majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor);\n\t\tvar majorTickFont = parseFontOptions(optionMajorTicks);\n\n\t\tvar tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0;\n\n\t\tvar scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\tvar scaleLabelFont = parseFontOptions(scaleLabel);\n\t\tvar scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding);\n\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\n\t\tvar itemsToDraw = [];\n\n\t\tvar axisWidth = me.options.gridLines.lineWidth;\n\t\tvar xTickStart = options.position === 'right' ? me.left : me.right - axisWidth - tl;\n\t\tvar xTickEnd = options.position === 'right' ? me.left + tl : me.right;\n\t\tvar yTickStart = options.position === 'bottom' ? me.top + axisWidth : me.bottom - tl - axisWidth;\n\t\tvar yTickEnd = options.position === 'bottom' ? me.top + axisWidth + tl : me.bottom + axisWidth;\n\n\t\thelpers.each(ticks, function(tick, index) {\n\t\t\t// autoskipper skipped this tick (#4635)\n\t\t\tif (helpers.isNullOrUndef(tick.label)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar label = tick.label;\n\t\t\tvar lineWidth, lineColor, borderDash, borderDashOffset;\n\t\t\tif (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) {\n\t\t\t\t// Draw the first index specially\n\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\tborderDash = gridLines.zeroLineBorderDash;\n\t\t\t\tborderDashOffset = gridLines.zeroLineBorderDashOffset;\n\t\t\t} else {\n\t\t\t\tlineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\tlineColor = helpers.valueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\tborderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\t\tborderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\t\t\t}\n\n\t\t\t// Common properties\n\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\tvar textAlign = 'middle';\n\t\t\tvar textBaseline = 'middle';\n\t\t\tvar tickPadding = optionTicks.padding;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tvar labelYOffset = tl + tickPadding;\n\n\t\t\t\tif (options.position === 'bottom') {\n\t\t\t\t\t// bottom\n\t\t\t\t\ttextBaseline = !isRotated ? 'top' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'right';\n\t\t\t\t\tlabelY = me.top + labelYOffset;\n\t\t\t\t} else {\n\t\t\t\t\t// top\n\t\t\t\t\ttextBaseline = !isRotated ? 'bottom' : 'middle';\n\t\t\t\t\ttextAlign = !isRotated ? 'center' : 'left';\n\t\t\t\t\tlabelY = me.bottom - labelYOffset;\n\t\t\t\t}\n\n\t\t\t\tvar xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (xLineValue < me.left) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\txLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\n\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\tty1 = yTickStart;\n\t\t\t\tty2 = yTickEnd;\n\t\t\t\ty1 = chartArea.top;\n\t\t\t\ty2 = chartArea.bottom + axisWidth;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tvar labelXOffset;\n\n\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\ttextAlign = isLeft ? 'left' : 'right';\n\t\t\t\t\tlabelXOffset = tickPadding;\n\t\t\t\t} else {\n\t\t\t\t\ttextAlign = isLeft ? 'right' : 'left';\n\t\t\t\t\tlabelXOffset = tl + tickPadding;\n\t\t\t\t}\n\n\t\t\t\tlabelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset;\n\n\t\t\t\tvar yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1);\n\t\t\t\tif (yLineValue < me.top) {\n\t\t\t\t\tlineColor = 'rgba(0,0,0,0)';\n\t\t\t\t}\n\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\n\t\t\t\tlabelY = me.getPixelForTick(index) + optionTicks.labelOffset;\n\n\t\t\t\ttx1 = xTickStart;\n\t\t\t\ttx2 = xTickEnd;\n\t\t\t\tx1 = chartArea.left;\n\t\t\t\tx2 = chartArea.right + axisWidth;\n\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t}\n\n\t\t\titemsToDraw.push({\n\t\t\t\ttx1: tx1,\n\t\t\t\tty1: ty1,\n\t\t\t\ttx2: tx2,\n\t\t\t\tty2: ty2,\n\t\t\t\tx1: x1,\n\t\t\t\ty1: y1,\n\t\t\t\tx2: x2,\n\t\t\t\ty2: y2,\n\t\t\t\tlabelX: labelX,\n\t\t\t\tlabelY: labelY,\n\t\t\t\tglWidth: lineWidth,\n\t\t\t\tglColor: lineColor,\n\t\t\t\tglBorderDash: borderDash,\n\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\tlabel: label,\n\t\t\t\tmajor: tick.major,\n\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\ttextAlign: textAlign\n\t\t\t});\n\t\t});\n\n\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\tif (gridLines.display) {\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\n\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t}\n\n\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t}\n\n\t\t\t\tcontext.stroke();\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (optionTicks.display) {\n\t\t\t\t// Make sure we draw text in the correct color and font\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\tcontext.font = itemToDraw.major ? majorTickFont.font : tickFont.font;\n\t\t\t\tcontext.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor;\n\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\tvar lineCount = label.length;\n\t\t\t\t\tvar lineHeight = tickFont.size * 1.5;\n\t\t\t\t\tvar y = me.isHorizontal() ? 0 : -lineHeight * (lineCount - 1) / 2;\n\n\t\t\t\t\tfor (var i = 0; i < lineCount; ++i) {\n\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\ty += lineHeight;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t}\n\t\t\t\tcontext.restore();\n\t\t\t}\n\t\t});\n\n\t\tif (scaleLabel.display) {\n\t\t\t// Draw the scale label\n\t\t\tvar scaleLabelX;\n\t\t\tvar scaleLabelY;\n\t\t\tvar rotation = 0;\n\t\t\tvar halfLineHeight = parseLineHeight(scaleLabel) / 2;\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\tscaleLabelY = options.position === 'bottom'\n\t\t\t\t\t? me.bottom - halfLineHeight - scaleLabelPadding.bottom\n\t\t\t\t\t: me.top + halfLineHeight + scaleLabelPadding.top;\n\t\t\t} else {\n\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\tscaleLabelX = isLeft\n\t\t\t\t\t? me.left + halfLineHeight + scaleLabelPadding.top\n\t\t\t\t\t: me.right - halfLineHeight - scaleLabelPadding.top;\n\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t}\n\n\t\t\tcontext.save();\n\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\tcontext.rotate(rotation);\n\t\t\tcontext.textAlign = 'center';\n\t\t\tcontext.textBaseline = 'middle';\n\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\tcontext.font = scaleLabelFont.font;\n\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\tcontext.restore();\n\t\t}\n\n\t\tif (gridLines.drawBorder) {\n\t\t\t// Draw the line at the edge of the axis\n\t\t\tcontext.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\tcontext.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0);\n\t\t\tvar x1 = me.left;\n\t\t\tvar x2 = me.right + axisWidth;\n\t\t\tvar y1 = me.top;\n\t\t\tvar y2 = me.bottom + axisWidth;\n\n\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\tif (isHorizontal) {\n\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\ty1 += aliasPixel;\n\t\t\t\ty2 += aliasPixel;\n\t\t\t} else {\n\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\tx1 += aliasPixel;\n\t\t\t\tx2 += aliasPixel;\n\t\t\t}\n\n\t\t\tcontext.beginPath();\n\t\t\tcontext.moveTo(x1, y1);\n\t\t\tcontext.lineTo(x2, y2);\n\t\t\tcontext.stroke();\n\t\t}\n\t}\n});\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","/* global window: false */\n'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t}\n});\n\nmodule.exports = {\n\tframeDuration: 17,\n\tanimations: [],\n\tdropFrames: 0,\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {Number} duration - The animation duration in ms.\n\t * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\t\tvar startTime = Date.now();\n\t\tvar framesToDrop = 0;\n\n\t\tif (me.dropFrames > 1) {\n\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t}\n\n\t\tme.advance(1 + framesToDrop);\n\n\t\tvar endTime = Date.now();\n\n\t\tme.dropFrames += (endTime - startTime) / me.frameDuration;\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function(count) {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart;\n\t\tvar i = 0;\n\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\n\t\t\tanimation.currentStep = (animation.currentStep || 0) + count;\n\t\t\tanimation.currentStep = Math.min(animation.currentStep, animation.numSteps);\n\n\t\t\thelpers.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= animation.numSteps) {\n\t\t\t\thelpers.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\nfunction filterByPosition(array, position) {\n\treturn helpers.where(array, function(v) {\n\t\treturn v.position === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\tarray.forEach(function(v, i) {\n\t\tv._tmpIndex_ = i;\n\t\treturn v;\n\t});\n\tarray.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0._tmpIndex_ - v1._tmpIndex_ :\n\t\t\tv0.weight - v1.weight;\n\t});\n\tarray.forEach(function(v) {\n\t\tdelete v._tmpIndex_;\n\t});\n}\n\n/**\n * @interface ILayoutItem\n * @prop {String} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {Function} update - Takes two parameters: width and height. Returns size of item\n * @prop {Function} getPadding - Returns an object with padding on the edges\n * @prop {Number} width - Width of item. Must be valid after update()\n * @prop {Number} height - Height of item. Must be valid after update()\n * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nmodule.exports = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {Object} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {Object} item - the item to configure with the given options\n\t * @param {Object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {Number} width - the width to fit into\n\t * @param {Number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers.options.toPadding(layoutOptions.padding);\n\t\tvar leftPadding = padding.left;\n\t\tvar rightPadding = padding.right;\n\t\tvar topPadding = padding.top;\n\t\tvar bottomPadding = padding.bottom;\n\n\t\tvar leftBoxes = filterByPosition(chart.boxes, 'left');\n\t\tvar rightBoxes = filterByPosition(chart.boxes, 'right');\n\t\tvar topBoxes = filterByPosition(chart.boxes, 'top');\n\t\tvar bottomBoxes = filterByPosition(chart.boxes, 'bottom');\n\t\tvar chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea');\n\n\t\t// Sort boxes by weight. A higher weight is further away from the chart area\n\t\tsortByWeight(leftBoxes, true);\n\t\tsortByWeight(rightBoxes, false);\n\t\tsortByWeight(topBoxes, true);\n\t\tsortByWeight(bottomBoxes, false);\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\t\t// What we do to find the best sizing, we do the following\n\t\t// 1. Determine the minimum size of the chart area.\n\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t// 6. Refit each axis\n\t\t// 7. Position each axis in the final location\n\t\t// 8. Tell the chart the final location of the chart area\n\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t// Step 1\n\t\tvar chartWidth = width - leftPadding - rightPadding;\n\t\tvar chartHeight = height - topPadding - bottomPadding;\n\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t// Step 2\n\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t// Step 3\n\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t// Step 4\n\t\tvar maxChartAreaWidth = chartWidth;\n\t\tvar maxChartAreaHeight = chartHeight;\n\t\tvar minBoxSizes = [];\n\n\t\tfunction getMinimumBoxSize(box) {\n\t\t\tvar minSize;\n\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t} else {\n\t\t\t\tminSize = box.update(verticalBoxWidth, maxChartAreaHeight);\n\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t}\n\n\t\t\tminBoxSizes.push({\n\t\t\t\thorizontal: isHorizontal,\n\t\t\t\tminSize: minSize,\n\t\t\t\tbox: box,\n\t\t\t});\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t// If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478)\n\t\tvar maxHorizontalLeftPadding = 0;\n\t\tvar maxHorizontalRightPadding = 0;\n\t\tvar maxVerticalTopPadding = 0;\n\t\tvar maxVerticalBottomPadding = 0;\n\n\t\thelpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) {\n\t\t\tif (horizontalBox.getPadding) {\n\t\t\t\tvar boxPadding = horizontalBox.getPadding();\n\t\t\t\tmaxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left);\n\t\t\t\tmaxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) {\n\t\t\tif (verticalBox.getPadding) {\n\t\t\t\tvar boxPadding = verticalBox.getPadding();\n\t\t\t\tmaxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top);\n\t\t\t\tmaxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom);\n\t\t\t}\n\t\t});\n\n\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t// be if the axes are drawn at their minimum sizes.\n\t\t// Steps 5 & 6\n\t\tvar totalLeftBoxesWidth = leftPadding;\n\t\tvar totalRightBoxesWidth = rightPadding;\n\t\tvar totalTopBoxesHeight = topPadding;\n\t\tvar totalBottomBoxesHeight = bottomPadding;\n\n\t\t// Function to fit a box\n\t\tfunction fitBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) {\n\t\t\t\treturn minBox.box === box;\n\t\t\t});\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\tleft: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding),\n\t\t\t\t\t\tright: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding),\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t};\n\n\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\tbox.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t} else {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\t// Set the Left and Right margins for the horizontal boxes\n\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\tfunction finalFitVerticalBox(box) {\n\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) {\n\t\t\t\treturn minSize.box === box;\n\t\t\t});\n\n\t\t\tvar scaleMargin = {\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t};\n\n\t\t\tif (minBoxSize) {\n\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t}\n\t\t}\n\n\t\t// Let the left layout know the final margin\n\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\ttotalLeftBoxesWidth = leftPadding;\n\t\ttotalRightBoxesWidth = rightPadding;\n\t\ttotalTopBoxesHeight = topPadding;\n\t\ttotalBottomBoxesHeight = bottomPadding;\n\n\t\thelpers.each(leftBoxes, function(box) {\n\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(rightBoxes, function(box) {\n\t\t\ttotalRightBoxesWidth += box.width;\n\t\t});\n\n\t\thelpers.each(topBoxes, function(box) {\n\t\t\ttotalTopBoxesHeight += box.height;\n\t\t});\n\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t});\n\n\t\t// We may be adding some padding to account for rotated x axis labels\n\t\tvar leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0);\n\t\ttotalLeftBoxesWidth += leftPaddingAddition;\n\t\ttotalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0);\n\n\t\tvar topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0);\n\t\ttotalTopBoxesHeight += topPaddingAddition;\n\t\ttotalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0);\n\n\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t// without calling `fit` again\n\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\tif (!box.fullWidth) {\n\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t}\n\n\t\t// Step 7 - Position the boxes\n\t\tvar left = leftPadding + leftPaddingAddition;\n\t\tvar top = topPadding + topPaddingAddition;\n\n\t\tfunction placeBox(box) {\n\t\t\tif (box.isHorizontal()) {\n\t\t\t\tbox.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth;\n\t\t\t\tbox.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\tbox.top = top;\n\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t// Move to next point\n\t\t\t\ttop = box.bottom;\n\n\t\t\t} else {\n\n\t\t\t\tbox.left = left;\n\t\t\t\tbox.right = left + box.width;\n\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t// Move to next point\n\t\t\t\tleft = box.right;\n\t\t\t}\n\t\t}\n\n\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t// Account for chart width and height\n\t\tleft += maxChartAreaWidth;\n\t\ttop += maxChartAreaHeight;\n\n\t\thelpers.each(rightBoxes, placeBox);\n\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t// Step 8\n\t\tchart.chartArea = {\n\t\t\tleft: totalLeftBoxesWidth,\n\t\t\ttop: totalTopBoxesHeight,\n\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t};\n\n\t\t// Step 9\n\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\tbox.left = chart.chartArea.left;\n\t\t\tbox.top = chart.chartArea.top;\n\t\t\tbox.right = chart.chartArea.right;\n\t\t\tbox.bottom = chart.chartArea.bottom;\n\n\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t});\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Namespace to hold static tick generation functions\n * @namespace Chart.Ticks\n */\nmodule.exports = {\n\t/**\n\t * Namespace to hold formatters for different types of ticks\n\t * @namespace Chart.Ticks.formatters\n\t */\n\tformatters: {\n\t\t/**\n\t\t * Formatter for value labels\n\t\t * @method Chart.Ticks.formatters.values\n\t\t * @param value the value to display\n\t\t * @return {String|Array} the label to display\n\t\t */\n\t\tvalues: function(value) {\n\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t},\n\n\t\t/**\n\t\t * Formatter for linear numeric ticks\n\t\t * @method Chart.Ticks.formatters.linear\n\t\t * @param tickValue {Number} the value to be formatted\n\t\t * @param index {Number} the position of the tickValue parameter in the ticks array\n\t\t * @param ticks {Array} the list of ticks being converted\n\t\t * @return {String} string representation of the tickValue parameter\n\t\t */\n\t\tlinear: function(tickValue, index, ticks) {\n\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t// not an integer\n\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\tvar tickString = '';\n\n\t\t\tif (tickValue !== 0) {\n\t\t\t\tvar maxTick = Math.max(Math.abs(ticks[0]), Math.abs(ticks[ticks.length - 1]));\n\t\t\t\tif (maxTick < 1e-4) { // all ticks are small numbers; use scientific notation\n\t\t\t\t\tvar logTick = helpers.log10(Math.abs(tickValue));\n\t\t\t\t\ttickString = tickValue.toExponential(Math.floor(logTick) - Math.floor(logDelta));\n\t\t\t\t} else {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t}\n\n\t\t\treturn tickString;\n\t\t},\n\n\t\tlogarithmic: function(tickValue, index, ticks) {\n\t\t\tvar remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue))));\n\n\t\t\tif (tickValue === 0) {\n\t\t\t\treturn '0';\n\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) {\n\t\t\t\treturn tickValue.toExponential();\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar basic = require('./platform.basic');\nvar dom = require('./platform.dom');\n\n// @TODO Make possible to select another platform at build time.\nvar implementation = dom._enabled ? dom : basic;\n\n/**\n * @namespace Chart.platform\n * @see https://chartjs.gitbooks.io/proposals/content/Platform.html\n * @since 2.4.0\n */\nmodule.exports = helpers.extend({\n\t/**\n\t * @since 2.7.0\n\t */\n\tinitialize: function() {},\n\n\t/**\n\t * Called at chart construction time, returns a context2d instance implementing\n\t * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}.\n\t * @param {*} item - The native item from which to acquire context (platform specific)\n\t * @param {Object} options - The chart options\n\t * @returns {CanvasRenderingContext2D} context2d instance\n\t */\n\tacquireContext: function() {},\n\n\t/**\n\t * Called at chart destruction time, releases any resources associated to the context\n\t * previously returned by the acquireContext() method.\n\t * @param {CanvasRenderingContext2D} context - The context2d instance\n\t * @returns {Boolean} true if the method succeeded, else false\n\t */\n\treleaseContext: function() {},\n\n\t/**\n\t * Registers the specified listener on the given chart.\n\t * @param {Chart} chart - Chart from which to listen for event\n\t * @param {String} type - The ({@link IEvent}) type to listen for\n\t * @param {Function} listener - Receives a notification (an object that implements\n\t * the {@link IEvent} interface) when an event of the specified type occurs.\n\t */\n\taddEventListener: function() {},\n\n\t/**\n\t * Removes the specified listener previously registered with addEventListener.\n\t * @param {Chart} chart -Chart from which to remove the listener\n\t * @param {String} type - The ({@link IEvent}) type to remove\n\t * @param {Function} listener - The listener function to remove from the event target.\n\t */\n\tremoveEventListener: function() {}\n\n}, implementation);\n\n/**\n * @interface IPlatform\n * Allows abstracting platform dependencies away from the chart\n * @borrows Chart.platform.acquireContext as acquireContext\n * @borrows Chart.platform.releaseContext as releaseContext\n * @borrows Chart.platform.addEventListener as addEventListener\n * @borrows Chart.platform.removeEventListener as removeEventListener\n */\n\n/**\n * @interface IEvent\n * @prop {String} type - The event type name, possible values are:\n * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout',\n * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize'\n * @prop {*} native - The original native event (null for emulated events, e.g. 'resize')\n * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events)\n * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events)\n */\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Radar = function(context, config) {\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.filler = require('./plugin.filler');\nmodule.exports.legend = require('./plugin.legend');\nmodule.exports.title = require('./plugin.title');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","import '../../../src/stylus/components/_responsive.styl';\n// Mixins\nimport Measurable from '../../mixins/measurable';\n// Utils\nimport mixins from '../../util/mixins';\nimport { convertToUnit } from '../../util/helpers';\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n props: {\n aspectRatio: [String, Number]\n },\n computed: {\n computedAspectRatio: function computedAspectRatio() {\n return Number(this.aspectRatio);\n },\n aspectStyle: function aspectStyle() {\n return this.computedAspectRatio ? { paddingBottom: 1 / this.computedAspectRatio * 100 + '%' } : undefined;\n },\n __cachedSizer: function __cachedSizer() {\n if (!this.aspectStyle) return [];\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer'\n });\n }\n },\n methods: {\n genContent: function genContent() {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content'\n }, this.$slots.default);\n }\n },\n render: function render(h) {\n return h('div', {\n staticClass: 'v-responsive',\n style: {\n height: convertToUnit(this.height),\n maxHeight: convertToUnit(this.maxHeight),\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width)\n },\n on: this.$listeners\n }, [this.__cachedSizer, this.genContent()]);\n }\n});\n//# sourceMappingURL=VResponsive.js.map","import VResponsive from './VResponsive';\nexport { VResponsive };\nexport default VResponsive;\n//# sourceMappingURL=index.js.map","import '../../../src/stylus/components/_images.styl';\n// Components\nimport VResponsive from '../VResponsive';\n// Utils\nimport { consoleError, consoleWarn } from '../../util/console';\n/* @vue/component */\nexport default VResponsive.extend({\n name: 'v-img',\n props: {\n alt: String,\n contain: Boolean,\n src: {\n type: [String, Object],\n default: ''\n },\n gradient: String,\n lazySrc: String,\n srcset: String,\n sizes: String,\n position: {\n type: String,\n default: 'center center'\n },\n transition: {\n type: [Boolean, String],\n default: 'fade-transition'\n }\n },\n data: function data() {\n return {\n currentSrc: '',\n image: null,\n isLoading: true,\n calculatedAspectRatio: undefined\n };\n },\n\n computed: {\n computedAspectRatio: function computedAspectRatio() {\n return this.normalisedSrc.aspect;\n },\n normalisedSrc: function normalisedSrc() {\n return typeof this.src === 'string' ? {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || this.calculatedAspectRatio)\n } : {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect || this.calculatedAspectRatio)\n };\n },\n __cachedImage: function __cachedImage() {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc)) return [];\n var backgroundImage = [];\n var src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc;\n if (this.gradient) backgroundImage.push('linear-gradient(' + this.gradient + ')');\n if (src) backgroundImage.push('url(\"' + src + '\")');\n var image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position\n },\n key: +this.isLoading\n });\n if (!this.transition) return image;\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out'\n }\n }, [image]);\n }\n },\n watch: {\n src: function src() {\n if (!this.isLoading) this.init();else this.loadImage();\n },\n\n '$vuetify.breakpoint.width': 'getSrc'\n },\n mounted: function mounted() {\n this.init();\n },\n\n methods: {\n init: function init() {\n if (this.normalisedSrc.lazySrc) {\n var lazyImg = new Image();\n lazyImg.src = this.normalisedSrc.lazySrc;\n this.pollForSize(lazyImg, null);\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage();\n },\n onLoad: function onLoad() {\n this.getSrc();\n this.isLoading = false;\n this.$emit('load', this.src);\n },\n onError: function onError() {\n consoleError('Image load failed\\n\\n' + ('src: ' + this.normalisedSrc.src), this);\n this.$emit('error', this.src);\n },\n getSrc: function getSrc() {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src;\n },\n loadImage: function loadImage() {\n var _this = this;\n\n var image = new Image();\n this.image = image;\n image.onload = function () {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch(function (err) {\n consoleWarn('Failed to decode image, trying to render anyway\\n\\n' + ('src: ' + _this.normalisedSrc.src) + (err.message ? '\\nOriginal error: ' + err.message : ''), _this);\n }).then(_this.onLoad);\n } else {\n _this.onLoad();\n }\n };\n image.onerror = this.onError;\n image.src = this.normalisedSrc.src;\n this.sizes && (image.sizes = this.sizes);\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset);\n this.aspectRatio || this.pollForSize(image);\n this.getSrc();\n },\n pollForSize: function pollForSize(img) {\n var _this2 = this;\n\n var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n\n var poll = function poll() {\n var naturalHeight = img.naturalHeight,\n naturalWidth = img.naturalWidth;\n\n if (naturalHeight || naturalWidth) {\n _this2.calculatedAspectRatio = naturalWidth / naturalHeight;\n } else {\n timeout != null && setTimeout(poll, timeout);\n }\n };\n poll();\n },\n __genPlaceholder: function __genPlaceholder() {\n if (this.$slots.placeholder) {\n var placeholder = this.isLoading ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder'\n }, this.$slots.placeholder)] : [];\n if (!this.transition) return placeholder[0];\n return this.$createElement('transition', {\n attrs: { name: this.transition }\n }, placeholder);\n }\n }\n },\n render: function render(h) {\n var node = VResponsive.options.render.call(this, h);\n node.data.staticClass += ' v-image';\n node.data.attrs = {\n role: this.alt ? 'img' : undefined,\n 'aria-label': this.alt\n };\n node.children = [this.__cachedSizer, this.__cachedImage, this.__genPlaceholder(), this.genContent()];\n return h(node.tag, node.data, node.children);\n }\n});\n//# sourceMappingURL=VImg.js.map","// Components\nimport VImg from '../VImg/VImg';\n// Utils\nimport { deprecate } from '../../util/console';\n/* istanbul ignore next */\n/* @vue/component */\nexport default VImg.extend({\n name: 'v-card-media',\n mounted: function mounted() {\n deprecate('v-card-media', this.src ? 'v-img' : 'v-responsive', this);\n }\n});\n//# sourceMappingURL=VCardMedia.js.map","import { createSimpleFunctional } from '../../util/helpers';\nimport VCard from './VCard';\nimport VCardMedia from './VCardMedia';\nimport VCardTitle from './VCardTitle';\nvar VCardActions = createSimpleFunctional('v-card__actions');\nvar VCardText = createSimpleFunctional('v-card__text');\nexport { VCard, VCardMedia, VCardTitle, VCardActions, VCardText };\nexport default {\n $_vuetify_subcomponents: {\n VCard: VCard,\n VCardMedia: VCardMedia,\n VCardTitle: VCardTitle,\n VCardActions: VCardActions,\n VCardText: VCardText\n }\n};\n//# sourceMappingURL=index.js.map","/* MIT license */\nvar colorNames = require('color-name');\n\nmodule.exports = {\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})$/i,\n hex = /^#([a-fA-F0-9]{6})$/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 if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\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 }\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 = colorNames[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(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\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 colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\nvar helpers = require('../helpers/index');\nvar layouts = require('../core/core.layouts');\n\nvar noop = helpers.noop;\n\ndefaults._set('global', {\n\ttitle: {\n\t\tdisplay: false,\n\t\tfontStyle: 'bold',\n\t\tfullWidth: true,\n\t\tlineHeight: 1.2,\n\t\tpadding: 10,\n\t\tposition: 'top',\n\t\ttext: '',\n\t\tweight: 2000 // by default greater than legend (1000) to be above\n\t}\n});\n\n/**\n * IMPORTANT: this class is exposed publicly as Chart.Legend, backward compatibility required!\n */\nvar Title = Element.extend({\n\tinitialize: function(config) {\n\t\tvar me = this;\n\t\thelpers.extend(me, config);\n\n\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\tme.legendHitBoxes = [];\n\t},\n\n\t// These methods are ordered by lifecycle. Utilities then follow.\n\n\tbeforeUpdate: noop,\n\tupdate: function(maxWidth, maxHeight, margins) {\n\t\tvar me = this;\n\n\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\tme.beforeUpdate();\n\n\t\t// Absorb the master measurements\n\t\tme.maxWidth = maxWidth;\n\t\tme.maxHeight = maxHeight;\n\t\tme.margins = margins;\n\n\t\t// Dimensions\n\t\tme.beforeSetDimensions();\n\t\tme.setDimensions();\n\t\tme.afterSetDimensions();\n\t\t// Labels\n\t\tme.beforeBuildLabels();\n\t\tme.buildLabels();\n\t\tme.afterBuildLabels();\n\n\t\t// Fit\n\t\tme.beforeFit();\n\t\tme.fit();\n\t\tme.afterFit();\n\t\t//\n\t\tme.afterUpdate();\n\n\t\treturn me.minSize;\n\n\t},\n\tafterUpdate: noop,\n\n\t//\n\n\tbeforeSetDimensions: noop,\n\tsetDimensions: function() {\n\t\tvar me = this;\n\t\t// Set the unconstrained dimension before label rotation\n\t\tif (me.isHorizontal()) {\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.left = 0;\n\t\t\tme.right = me.width;\n\t\t} else {\n\t\t\tme.height = me.maxHeight;\n\n\t\t\t// Reset position before calculating rotation\n\t\t\tme.top = 0;\n\t\t\tme.bottom = me.height;\n\t\t}\n\n\t\t// Reset padding\n\t\tme.paddingLeft = 0;\n\t\tme.paddingTop = 0;\n\t\tme.paddingRight = 0;\n\t\tme.paddingBottom = 0;\n\n\t\t// Reset minSize\n\t\tme.minSize = {\n\t\t\twidth: 0,\n\t\t\theight: 0\n\t\t};\n\t},\n\tafterSetDimensions: noop,\n\n\t//\n\n\tbeforeBuildLabels: noop,\n\tbuildLabels: noop,\n\tafterBuildLabels: noop,\n\n\t//\n\n\tbeforeFit: noop,\n\tfit: function() {\n\t\tvar me = this;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar display = opts.display;\n\t\tvar fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize);\n\t\tvar minSize = me.minSize;\n\t\tvar lineCount = helpers.isArray(opts.text) ? opts.text.length : 1;\n\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\tvar textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0;\n\n\t\tif (me.isHorizontal()) {\n\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\tminSize.height = textSize;\n\t\t} else {\n\t\t\tminSize.width = textSize;\n\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t}\n\n\t\tme.width = minSize.width;\n\t\tme.height = minSize.height;\n\n\t},\n\tafterFit: noop,\n\n\t// Shared Methods\n\tisHorizontal: function() {\n\t\tvar pos = this.options.position;\n\t\treturn pos === 'top' || pos === 'bottom';\n\t},\n\n\t// Actually draw the title block on the canvas\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar ctx = me.ctx;\n\t\tvar valueOrDefault = helpers.valueOrDefault;\n\t\tvar opts = me.options;\n\t\tvar globalDefaults = defaults.global;\n\n\t\tif (opts.display) {\n\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar titleFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\t\t\tvar lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize);\n\t\t\tvar offset = lineHeight / 2 + opts.padding;\n\t\t\tvar rotation = 0;\n\t\t\tvar top = me.top;\n\t\t\tvar left = me.left;\n\t\t\tvar bottom = me.bottom;\n\t\t\tvar right = me.right;\n\t\t\tvar maxWidth, titleX, titleY;\n\n\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\tctx.font = titleFont;\n\n\t\t\t// Horizontal\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\ttitleY = top + offset;\n\t\t\t\tmaxWidth = right - left;\n\t\t\t} else {\n\t\t\t\ttitleX = opts.position === 'left' ? left + offset : right - offset;\n\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\tmaxWidth = bottom - top;\n\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t}\n\n\t\t\tctx.save();\n\t\t\tctx.translate(titleX, titleY);\n\t\t\tctx.rotate(rotation);\n\t\t\tctx.textAlign = 'center';\n\t\t\tctx.textBaseline = 'middle';\n\n\t\t\tvar text = opts.text;\n\t\t\tif (helpers.isArray(text)) {\n\t\t\t\tvar y = 0;\n\t\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\t\tctx.fillText(text[i], 0, y, maxWidth);\n\t\t\t\t\ty += lineHeight;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tctx.fillText(text, 0, 0, maxWidth);\n\t\t\t}\n\n\t\t\tctx.restore();\n\t\t}\n\t}\n});\n\nfunction createNewTitleBlockAndAttach(chart, titleOpts) {\n\tvar title = new Title({\n\t\tctx: chart.ctx,\n\t\toptions: titleOpts,\n\t\tchart: chart\n\t});\n\n\tlayouts.configure(chart, title, titleOpts);\n\tlayouts.addBox(chart, title);\n\tchart.titleBlock = title;\n}\n\nmodule.exports = {\n\tid: 'title',\n\n\t/**\n\t * Backward compatibility: since 2.1.5, the title is registered as a plugin, making\n\t * Chart.Title obsolete. To avoid a breaking change, we export the Title as part of\n\t * the plugin, which one will be re-exposed in the chart.js file.\n\t * https://github.com/chartjs/Chart.js/pull/2640\n\t * @private\n\t */\n\t_element: Title,\n\n\tbeforeInit: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\n\t\tif (titleOpts) {\n\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t}\n\t},\n\n\tbeforeUpdate: function(chart) {\n\t\tvar titleOpts = chart.options.title;\n\t\tvar titleBlock = chart.titleBlock;\n\n\t\tif (titleOpts) {\n\t\t\thelpers.mergeIf(titleOpts, defaults.global.title);\n\n\t\t\tif (titleBlock) {\n\t\t\t\tlayouts.configure(chart, titleBlock, titleOpts);\n\t\t\t\ttitleBlock.options = titleOpts;\n\t\t\t} else {\n\t\t\t\tcreateNewTitleBlockAndAttach(chart, titleOpts);\n\t\t\t}\n\t\t} else if (titleBlock) {\n\t\t\tlayouts.removeBox(chart, titleBlock);\n\t\t\tdelete chart.titleBlock;\n\t\t}\n\t}\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {Point} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param chart {chart} the chart\n * @param handler {Function} the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar datasets = chart.data.datasets;\n\tvar meta, i, j, ilen, jlen;\n\n\tfor (i = 0, ilen = datasets.length; i < ilen; ++i) {\n\t\tif (!chart.isDatasetVisible(i)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmeta = chart.getDatasetMeta(i);\n\t\tfor (j = 0, jlen = meta.data.length; j < jlen; ++j) {\n\t\t\tvar element = meta.data[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param items {ChartElement[]} elements to filter\n * @param position {Point} the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param chart {Chart} the chart to look at elements from\n * @param position {Point} the point to be nearest to\n * @param intersect {Boolean} if true, only consider items that intersect the position\n * @param distanceMetric {Function} function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {String} axis the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart.data.datasets.forEach(function(dataset, datasetIndex) {\n\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\tvar element = meta.data[items[0]._index];\n\n\t\t\t// don't count items that are skipped (null data)\n\t\t\tif (element && !element._view.skip) {\n\t\t\t\telements.push(element);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nmodule.exports = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric);\n\n\t\t\t// We have multiple items at the same distance from the event. Now sort by smallest\n\t\t\tif (nearestItems.length > 1) {\n\t\t\t\tnearestItems.sort(function(a, b) {\n\t\t\t\t\tvar sizeA = a.getArea();\n\t\t\t\t\tvar sizeB = b.getArea();\n\t\t\t\t\tvar ret = sizeA - sizeB;\n\n\t\t\t\t\tif (ret === 0) {\n\t\t\t\t\t\t// if equal sort by dataset index\n\t\t\t\t\t\tret = a._datasetIndex - b._datasetIndex;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn ret;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Return only 1 item\n\t\t\treturn nearestItems.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param chart {chart} the chart we are returning items from\n\t\t * @param e {Event} the event we are find things at\n\t\t * @param options {IInteractionOptions} options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n","/* global window: false */\n/* global document: false */\n'use strict';\n\nvar color = require('chartjs-color');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// -- Basic js utility methods\n\n\thelpers.configMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tvar tval = target[key] || {};\n\t\t\t\tvar sval = source[key];\n\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// scale config merging is complex. Add our own function here for that\n\t\t\t\t\ttarget[key] = helpers.scaleMerge(tval, sval);\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// used in polar area & radar charts since there is only one scale\n\t\t\t\t\ttarget[key] = helpers.merge(tval, [scaleService.getScaleDefaults(sval.type), sval]);\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.scaleMerge = function(/* objects ... */) {\n\t\treturn helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, target, source, options) {\n\t\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t\tvar slen = source[key].length;\n\t\t\t\t\tvar i, type, scale;\n\n\t\t\t\t\tif (!target[key]) {\n\t\t\t\t\t\ttarget[key] = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (i = 0; i < slen; ++i) {\n\t\t\t\t\t\tscale = source[key][i];\n\t\t\t\t\t\ttype = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear');\n\n\t\t\t\t\t\tif (i >= target[key].length) {\n\t\t\t\t\t\t\ttarget[key].push({});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) {\n\t\t\t\t\t\t\t// new/untyped scale or type changed: let's apply the new defaults\n\t\t\t\t\t\t\t// then merge source scale to correctly overwrite the defaults.\n\t\t\t\t\t\t\thelpers.merge(target[key][i], [scaleService.getScaleDefaults(type), scale]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// scales type are the same\n\t\t\t\t\t\t\thelpers.merge(target[key][i], scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thelpers._merger(key, target, source, options);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t}\n\t\tvar filtered = [];\n\n\t\thelpers.each(collection, function(item) {\n\t\t\tif (filterCallback(item)) {\n\t\t\t\tfiltered.push(item);\n\t\t\t}\n\t\t});\n\n\t\treturn filtered;\n\t};\n\thelpers.findIndex = Array.prototype.findIndex ?\n\t\tfunction(array, callback, scope) {\n\t\t\treturn array.findIndex(callback, scope);\n\t\t} :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined ? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (helpers.isNullOrUndef(startIndex)) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\n\t// -- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.almostWhole = function(x, epsilon) {\n\t\tvar rounded = Math.round(x);\n\t\treturn (((rounded - epsilon) < x) && ((rounded + epsilon) > x));\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t}\n\t\t\treturn max;\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t}\n\t\t\treturn min;\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign ?\n\t\tfunction(x) {\n\t\t\treturn Math.sign(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10 ?\n\t\tfunction(x) {\n\t\t\treturn Math.log10(x);\n\t\t} :\n\t\tfunction(x) {\n\t\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t\t// Check for whole powers of 10,\n\t\t\t// which due to floating point rounding error should be corrected.\n\t\t\tvar powerOf10 = Math.round(exponent);\n\t\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x;\n\t\tvar distanceFromYCenter = anglePoint.y - centrePoint.y;\n\t\tvar radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.distanceBetweenPoints = function(pt1, pt2) {\n\t\treturn Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t// Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t// http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint;\n\t\tvar current = middlePoint;\n\t\tvar next = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tvar slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x);\n\n\t\t\t\t// In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n\t\t\t\tpointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0;\n\t\t\t}\n\n\t\t\tif (!pointBefore || pointBefore.model.skip) {\n\t\t\t\tpointCurrent.mK = pointCurrent.deltaK;\n\t\t\t} else if (!pointAfter || pointAfter.model.skip) {\n\t\t\t\tpointCurrent.mK = pointBefore.deltaK;\n\t\t\t} else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) {\n\t\t\t\tpointCurrent.mK = 0;\n\t\t\t} else {\n\t\t\t\tpointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t\t}\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) {\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else if (fraction <= 1.0) {\n\t\t\tniceFraction = 1;\n\t\t} else if (fraction <= 2) {\n\t\t\tniceFraction = 2;\n\t\t} else if (fraction <= 5) {\n\t\t\tniceFraction = 5;\n\t\t} else {\n\t\t\tniceFraction = 10;\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t// Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\treturn function(callback) {\n\t\t\t\tcallback();\n\t\t\t};\n\t\t}\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t}());\n\t// -- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt;\n\t\tvar canvas = evt.target || evt.srcElement;\n\t\tvar boundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof styleValue === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') !== -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = helpers._getParentNode(domNode);\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\t/**\n\t * @private\n \t */\n\thelpers._calculatePadding = function(container, padding, parentDimension) {\n\t\tpadding = helpers.getStyle(container, padding);\n\n\t\treturn padding.indexOf('%') > -1 ? parentDimension / parseInt(padding, 10) : parseInt(padding, 10);\n\t};\n\t/**\n\t * @private\n\t */\n\thelpers._getParentNode = function(domNode) {\n\t\tvar parent = domNode.parentNode;\n\t\tif (parent && parent.host) {\n\t\t\tparent = parent.host;\n\t\t}\n\t\treturn parent;\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientWidth;\n\t\t}\n\n\t\tvar clientWidth = container.clientWidth;\n\t\tvar paddingLeft = helpers._calculatePadding(container, 'padding-left', clientWidth);\n\t\tvar paddingRight = helpers._calculatePadding(container, 'padding-right', clientWidth);\n\n\t\tvar w = clientWidth - paddingLeft - paddingRight;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw) ? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = helpers._getParentNode(domNode);\n\t\tif (!container) {\n\t\t\treturn domNode.clientHeight;\n\t\t}\n\n\t\tvar clientHeight = container.clientHeight;\n\t\tvar paddingTop = helpers._calculatePadding(container, 'padding-top', clientHeight);\n\t\tvar paddingBottom = helpers._calculatePadding(container, 'padding-bottom', clientHeight);\n\n\t\tvar h = clientHeight - paddingTop - paddingBottom;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch) ? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart, forceRatio) {\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = forceRatio || (typeof window !== 'undefined' && window.devicePixelRatio) || 1;\n\t\tif (pixelRatio === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar canvas = chart.canvas;\n\t\tvar height = chart.height;\n\t\tvar width = chart.width;\n\n\t\tcanvas.height = height * pixelRatio;\n\t\tcanvas.width = width * pixelRatio;\n\t\tchart.ctx.scale(pixelRatio, pixelRatio);\n\n\t\t// If no style has been set on the canvas, the render size is used as display size,\n\t\t// making the chart visually bigger, so let's enforce it to the \"correct\" values.\n\t\t// See https://github.com/chartjs/Chart.js/issues/3575\n\t\tif (!canvas.style.height && !canvas.style.width) {\n\t\t\tcanvas.style.height = height + 'px';\n\t\t\tcanvas.style.width = width + 'px';\n\t\t}\n\t};\n\t// -- Canvas methods\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function(ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\n\thelpers.color = !color ?\n\t\tfunction(value) {\n\t\t\tconsole.error('Color.js not found!');\n\t\t\treturn value;\n\t\t} :\n\t\tfunction(value) {\n\t\t\t/* global CanvasGradient */\n\t\t\tif (value instanceof CanvasGradient) {\n\t\t\t\tvalue = defaults.global.defaultColor;\n\t\t\t}\n\n\t\t\treturn color(value);\n\t\t};\n\n\thelpers.getHoverColor = function(colorValue) {\n\t\t/* global CanvasPattern */\n\t\treturn (colorValue instanceof CanvasPattern) ?\n\t\t\tcolorValue :\n\t\t\thelpers.color(colorValue).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n","'use strict';\n\nvar helpers = require('../helpers/index');\nvar Scale = require('../core/core.scale');\n\n/**\n * Generate a set of linear ticks\n * @param generationOptions the options used to generate the ticks\n * @param dataRange the range of the data\n * @returns {Array} array of tick values\n */\nfunction generateTicks(generationOptions, dataRange) {\n\tvar ticks = [];\n\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t// for details.\n\n\tvar factor;\n\tvar precision;\n\tvar spacing;\n\n\tif (generationOptions.stepSize && generationOptions.stepSize > 0) {\n\t\tspacing = generationOptions.stepSize;\n\t} else {\n\t\tvar niceRange = helpers.niceNum(dataRange.max - dataRange.min, false);\n\t\tspacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true);\n\n\t\tprecision = generationOptions.precision;\n\t\tif (precision !== undefined) {\n\t\t\t// If the user specified a precision, round to that number of decimal places\n\t\t\tfactor = Math.pow(10, precision);\n\t\t\tspacing = Math.ceil(spacing * factor) / factor;\n\t\t}\n\t}\n\tvar niceMin = Math.floor(dataRange.min / spacing) * spacing;\n\tvar niceMax = Math.ceil(dataRange.max / spacing) * spacing;\n\n\t// If min, max and stepSize is set and they make an evenly spaced scale use it.\n\tif (!helpers.isNullOrUndef(generationOptions.min) && !helpers.isNullOrUndef(generationOptions.max) && generationOptions.stepSize) {\n\t\t// If very close to our whole number, use it.\n\t\tif (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) {\n\t\t\tniceMin = generationOptions.min;\n\t\t\tniceMax = generationOptions.max;\n\t\t}\n\t}\n\n\tvar numSpaces = (niceMax - niceMin) / spacing;\n\t// If very close to our rounded value, use it.\n\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\tnumSpaces = Math.round(numSpaces);\n\t} else {\n\t\tnumSpaces = Math.ceil(numSpaces);\n\t}\n\n\tprecision = 1;\n\tif (spacing < 1) {\n\t\tprecision = Math.pow(10, 1 - Math.floor(helpers.log10(spacing)));\n\t\tniceMin = Math.round(niceMin * precision) / precision;\n\t\tniceMax = Math.round(niceMax * precision) / precision;\n\t}\n\tticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin);\n\tfor (var j = 1; j < numSpaces; ++j) {\n\t\tticks.push(Math.round((niceMin + j * spacing) * precision) / precision);\n\t}\n\tticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax);\n\n\treturn ticks;\n}\n\nmodule.exports = function(Chart) {\n\n\tvar noop = helpers.noop;\n\n\tChart.LinearScaleBase = Scale.extend({\n\t\tgetRightValue: function(value) {\n\t\t\tif (typeof value === 'string') {\n\t\t\t\treturn +value;\n\t\t\t}\n\t\t\treturn Scale.prototype.getRightValue.call(this, value);\n\t\t},\n\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the bottom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined;\n\t\t\tvar setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined;\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tif (me.min === null) {\n\t\t\t\t\tme.min = tickOpts.suggestedMin;\n\t\t\t\t} else {\n\t\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tif (me.max === null) {\n\t\t\t\t\tme.max = tickOpts.suggestedMax;\n\t\t\t\t} else {\n\t\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (setMin !== setMax) {\n\t\t\t\t// We set the min or the max but not both.\n\t\t\t\t// So ensure that our range is good\n\t\t\t\t// Inverted or 0 length range can happen when\n\t\t\t\t// ticks.min is set, and no datasets are visible\n\t\t\t\tif (me.min >= me.max) {\n\t\t\t\t\tif (setMin) {\n\t\t\t\t\t\tme.max = me.min + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tme.min = me.max - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph. Make sure we always have at least 2 ticks\n\t\t\tvar maxTicks = me.getTickLimit();\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\tvar numericGeneratorOptions = {\n\t\t\t\tmaxTicks: maxTicks,\n\t\t\t\tmin: tickOpts.min,\n\t\t\t\tmax: tickOpts.max,\n\t\t\t\tprecision: tickOpts.precision,\n\t\t\t\tstepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize)\n\t\t\t};\n\t\t\tvar ticks = me.ticks = generateTicks(numericGeneratorOptions, me);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tScale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","/**\n * Chart.Platform implementation for targeting a web browser\n */\n\n'use strict';\n\nvar helpers = require('../helpers/index');\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {Number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addEventListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeEventListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar resizer = document.createElement('div');\n\tvar cls = CSS_PREFIX + 'size-monitor';\n\tvar maxSize = 1000000;\n\tvar style =\n\t\t'position:absolute;' +\n\t\t'left:0;' +\n\t\t'top:0;' +\n\t\t'right:0;' +\n\t\t'bottom:0;' +\n\t\t'overflow:hidden;' +\n\t\t'pointer-events:none;' +\n\t\t'visibility:hidden;' +\n\t\t'z-index:-1;';\n\n\tresizer.style.cssText = style;\n\tresizer.className = cls;\n\tresizer.innerHTML =\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
' +\n\t\t'
' +\n\t\t\t'
' +\n\t\t\t'
' +\n\t\t'
';\n\n\tvar expand = resizer.childNodes[0];\n\tvar shrink = resizer.childNodes[1];\n\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddEventListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddEventListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveEventListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\treturn listener(createEvent('resize', chart));\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\nfunction injectCSS(platform, css) {\n\t// http://stackoverflow.com/q/3922139\n\tvar style = platform._style || document.createElement('style');\n\tif (!platform._style) {\n\t\tplatform._style = style;\n\t\tcss = '/* Chart.js */\\n' + css;\n\t\tstyle.setAttribute('type', 'text/css');\n\t\tdocument.getElementsByTagName('head')[0].appendChild(style);\n\t}\n\n\tstyle.appendChild(document.createTextNode(css));\n}\n\nmodule.exports = {\n\t/**\n\t * This property holds whether this platform is enabled for the current environment.\n\t * Currently used by platform.js to select the proper implementation.\n\t * @private\n\t */\n\t_enabled: typeof window !== 'undefined' && typeof document !== 'undefined',\n\n\tinitialize: function() {\n\t\tvar keyframes = 'from{opacity:0.99}to{opacity:1}';\n\n\t\tinjectCSS(this,\n\t\t\t// DOM rendering detection\n\t\t\t// https://davidwalsh.name/detect-node-insertion\n\t\t\t'@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' +\n\t\t\t'.' + CSS_RENDER_MONITOR + '{' +\n\t\t\t\t'-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t\t'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' +\n\t\t\t'}'\n\t\t);\n\t},\n\n\tacquireContext: function(item, config) {\n\t\tif (typeof item === 'string') {\n\t\t\titem = document.getElementById(item);\n\t\t} else if (item.length) {\n\t\t\t// Support for array based queries (such as jQuery)\n\t\t\titem = item[0];\n\t\t}\n\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\t// To prevent canvas fingerprinting, some add-ons undefine the getContext\n\t\t// method, for example: https://github.com/kkapsner/CanvasBlocker\n\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\tvar context = item && item.getContext && item.getContext('2d');\n\n\t\t// `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is\n\t\t// inside an iframe or when running in a protected environment. We could guess the\n\t\t// types from their toString() value but let's keep things flexible and assume it's\n\t\t// a sufficient condition if the item has a context2D which has item as `canvas`.\n\t\t// https://github.com/chartjs/Chart.js/issues/3887\n\t\t// https://github.com/chartjs/Chart.js/issues/4102\n\t\t// https://github.com/chartjs/Chart.js/issues/4152\n\t\tif (context && context.canvas === item) {\n\t\t\tinitCanvas(item, config);\n\t\t\treturn context;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\treleaseContext: function(context) {\n\t\tvar canvas = context.canvas;\n\t\tif (!canvas[EXPANDO_KEY]) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar initial = canvas[EXPANDO_KEY].initial;\n\t\t['height', 'width'].forEach(function(prop) {\n\t\t\tvar value = initial[prop];\n\t\t\tif (helpers.isNullOrUndef(value)) {\n\t\t\t\tcanvas.removeAttribute(prop);\n\t\t\t} else {\n\t\t\t\tcanvas.setAttribute(prop, value);\n\t\t\t}\n\t\t});\n\n\t\thelpers.each(initial.style || {}, function(value, key) {\n\t\t\tcanvas.style[key] = value;\n\t\t});\n\n\t\t// The canvas render size might have been changed (and thus the state stack discarded),\n\t\t// we can't use save() and restore() to restore the initial state. So make sure that at\n\t\t// least the canvas context is reset to the default state by setting the canvas width.\n\t\t// https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html\n\t\tcanvas.width = canvas.width;\n\n\t\tdelete canvas[EXPANDO_KEY];\n\t},\n\n\taddEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\taddResizeListener(canvas, listener, chart);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {});\n\t\tvar proxies = expando.proxies || (expando.proxies = {});\n\t\tvar proxy = proxies[chart.id + '_' + type] = function(event) {\n\t\t\tlistener(fromNativeEvent(event, chart));\n\t\t};\n\n\t\taddEventListener(canvas, type, proxy);\n\t},\n\n\tremoveEventListener: function(chart, type, listener) {\n\t\tvar canvas = chart.canvas;\n\t\tif (type === 'resize') {\n\t\t\t// Note: the resize event is not supported on all browsers.\n\t\t\tremoveResizeListener(canvas, listener);\n\t\t\treturn;\n\t\t}\n\n\t\tvar expando = listener[EXPANDO_KEY] || {};\n\t\tvar proxies = expando.proxies || {};\n\t\tvar proxy = proxies[chart.id + '_' + type];\n\t\tif (!proxy) {\n\t\t\treturn;\n\t\t}\n\n\t\tremoveEventListener(canvas, type, proxy);\n\t}\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use EventTarget.addEventListener instead.\n * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener\n * @function Chart.helpers.addEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.addEvent = addEventListener;\n\n/**\n * Provided for backward compatibility, use EventTarget.removeEventListener instead.\n * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+\n * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener\n * @function Chart.helpers.removeEvent\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.removeEvent = removeEventListener;\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar layouts = require('./core.layouts');\n\nmodule.exports = {\n\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t// use the new chart options to grab the correct scale\n\tconstructors: {},\n\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t// old browsers\n\n\t// Scale config defaults\n\tdefaults: {},\n\tregisterScaleType: function(type, scaleConstructor, scaleDefaults) {\n\t\tthis.constructors[type] = scaleConstructor;\n\t\tthis.defaults[type] = helpers.clone(scaleDefaults);\n\t},\n\tgetScaleConstructor: function(type) {\n\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t},\n\tgetScaleDefaults: function(type) {\n\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\treturn this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {};\n\t},\n\tupdateScaleDefaults: function(type, additions) {\n\t\tvar me = this;\n\t\tif (me.defaults.hasOwnProperty(type)) {\n\t\t\tme.defaults[type] = helpers.extend(me.defaults[type], additions);\n\t\t}\n\t},\n\taddScalesToLayout: function(chart) {\n\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\t// Set ILayoutItem parameters for backwards compatibility\n\t\t\tscale.fullWidth = scale.options.fullWidth;\n\t\t\tscale.position = scale.options.position;\n\t\t\tscale.weight = scale.options.weight;\n\t\t\tlayouts.addBox(chart, scale);\n\t\t});\n\t}\n};\n","'use strict';\n\nvar helpers = require('./helpers.core');\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nmodule.exports = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.easingEffects = effects;\n","/**\n * Plugin based on discussion from the following Chart.js issues:\n * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569\n * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897\n */\n\n'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\tplugins: {\n\t\tfiller: {\n\t\t\tpropagate: true\n\t\t}\n\t}\n});\n\nvar mappers = {\n\tdataset: function(source) {\n\t\tvar index = source.fill;\n\t\tvar chart = source.chart;\n\t\tvar meta = chart.getDatasetMeta(index);\n\t\tvar visible = meta && chart.isDatasetVisible(index);\n\t\tvar points = (visible && meta.dataset._children) || [];\n\t\tvar length = points.length || 0;\n\n\t\treturn !length ? null : function(point, i) {\n\t\t\treturn (i < length && points[i]._view) || null;\n\t\t};\n\t},\n\n\tboundary: function(source) {\n\t\tvar boundary = source.boundary;\n\t\tvar x = boundary ? boundary.x : null;\n\t\tvar y = boundary ? boundary.y : null;\n\n\t\treturn function(point) {\n\t\t\treturn {\n\t\t\t\tx: x === null ? point.x : x,\n\t\t\t\ty: y === null ? point.y : y,\n\t\t\t};\n\t\t};\n\t}\n};\n\n// @todo if (fill[0] === '#')\nfunction decodeFill(el, index, count) {\n\tvar model = el._model || {};\n\tvar fill = model.fill;\n\tvar target;\n\n\tif (fill === undefined) {\n\t\tfill = !!model.backgroundColor;\n\t}\n\n\tif (fill === false || fill === null) {\n\t\treturn false;\n\t}\n\n\tif (fill === true) {\n\t\treturn 'origin';\n\t}\n\n\ttarget = parseFloat(fill, 10);\n\tif (isFinite(target) && Math.floor(target) === target) {\n\t\tif (fill[0] === '-' || fill[0] === '+') {\n\t\t\ttarget = index + target;\n\t\t}\n\n\t\tif (target === index || target < 0 || target >= count) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn target;\n\t}\n\n\tswitch (fill) {\n\t// compatibility\n\tcase 'bottom':\n\t\treturn 'start';\n\tcase 'top':\n\t\treturn 'end';\n\tcase 'zero':\n\t\treturn 'origin';\n\t// supported boundaries\n\tcase 'origin':\n\tcase 'start':\n\tcase 'end':\n\t\treturn fill;\n\t// invalid fill values\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nfunction computeBoundary(source) {\n\tvar model = source.el._model || {};\n\tvar scale = source.el._scale || {};\n\tvar fill = source.fill;\n\tvar target = null;\n\tvar horizontal;\n\n\tif (isFinite(fill)) {\n\t\treturn null;\n\t}\n\n\t// Backward compatibility: until v3, we still need to support boundary values set on\n\t// the model (scaleTop, scaleBottom and scaleZero) because some external plugins and\n\t// controllers might still use it (e.g. the Smith chart).\n\n\tif (fill === 'start') {\n\t\ttarget = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom;\n\t} else if (fill === 'end') {\n\t\ttarget = model.scaleTop === undefined ? scale.top : model.scaleTop;\n\t} else if (model.scaleZero !== undefined) {\n\t\ttarget = model.scaleZero;\n\t} else if (scale.getBasePosition) {\n\t\ttarget = scale.getBasePosition();\n\t} else if (scale.getBasePixel) {\n\t\ttarget = scale.getBasePixel();\n\t}\n\n\tif (target !== undefined && target !== null) {\n\t\tif (target.x !== undefined && target.y !== undefined) {\n\t\t\treturn target;\n\t\t}\n\n\t\tif (typeof target === 'number' && isFinite(target)) {\n\t\t\thorizontal = scale.isHorizontal();\n\t\t\treturn {\n\t\t\t\tx: horizontal ? target : null,\n\t\t\t\ty: horizontal ? null : target\n\t\t\t};\n\t\t}\n\t}\n\n\treturn null;\n}\n\nfunction resolveTarget(sources, index, propagate) {\n\tvar source = sources[index];\n\tvar fill = source.fill;\n\tvar visited = [index];\n\tvar target;\n\n\tif (!propagate) {\n\t\treturn fill;\n\t}\n\n\twhile (fill !== false && visited.indexOf(fill) === -1) {\n\t\tif (!isFinite(fill)) {\n\t\t\treturn fill;\n\t\t}\n\n\t\ttarget = sources[fill];\n\t\tif (!target) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (target.visible) {\n\t\t\treturn fill;\n\t\t}\n\n\t\tvisited.push(fill);\n\t\tfill = target.fill;\n\t}\n\n\treturn false;\n}\n\nfunction createMapper(source) {\n\tvar fill = source.fill;\n\tvar type = 'dataset';\n\n\tif (fill === false) {\n\t\treturn null;\n\t}\n\n\tif (!isFinite(fill)) {\n\t\ttype = 'boundary';\n\t}\n\n\treturn mappers[type](source);\n}\n\nfunction isDrawable(point) {\n\treturn point && !point.skip;\n}\n\nfunction drawArea(ctx, curve0, curve1, len0, len1) {\n\tvar i;\n\n\tif (!len0 || !len1) {\n\t\treturn;\n\t}\n\n\t// building first area curve (normal)\n\tctx.moveTo(curve0[0].x, curve0[0].y);\n\tfor (i = 1; i < len0; ++i) {\n\t\thelpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]);\n\t}\n\n\t// joining the two area curves\n\tctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y);\n\n\t// building opposite area curve (reverse)\n\tfor (i = len1 - 1; i > 0; --i) {\n\t\thelpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true);\n\t}\n}\n\nfunction doFill(ctx, points, mapper, view, color, loop) {\n\tvar count = points.length;\n\tvar span = view.spanGaps;\n\tvar curve0 = [];\n\tvar curve1 = [];\n\tvar len0 = 0;\n\tvar len1 = 0;\n\tvar i, ilen, index, p0, p1, d0, d1;\n\n\tctx.beginPath();\n\n\tfor (i = 0, ilen = (count + !!loop); i < ilen; ++i) {\n\t\tindex = i % count;\n\t\tp0 = points[index]._view;\n\t\tp1 = mapper(p0, index, view);\n\t\td0 = isDrawable(p0);\n\t\td1 = isDrawable(p1);\n\n\t\tif (d0 && d1) {\n\t\t\tlen0 = curve0.push(p0);\n\t\t\tlen1 = curve1.push(p1);\n\t\t} else if (len0 && len1) {\n\t\t\tif (!span) {\n\t\t\t\tdrawArea(ctx, curve0, curve1, len0, len1);\n\t\t\t\tlen0 = len1 = 0;\n\t\t\t\tcurve0 = [];\n\t\t\t\tcurve1 = [];\n\t\t\t} else {\n\t\t\t\tif (d0) {\n\t\t\t\t\tcurve0.push(p0);\n\t\t\t\t}\n\t\t\t\tif (d1) {\n\t\t\t\t\tcurve1.push(p1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tdrawArea(ctx, curve0, curve1, len0, len1);\n\n\tctx.closePath();\n\tctx.fillStyle = color;\n\tctx.fill();\n}\n\nmodule.exports = {\n\tid: 'filler',\n\n\tafterDatasetsUpdate: function(chart, options) {\n\t\tvar count = (chart.data.datasets || []).length;\n\t\tvar propagate = options.propagate;\n\t\tvar sources = [];\n\t\tvar meta, i, el, source;\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\tel = meta.dataset;\n\t\t\tsource = null;\n\n\t\t\tif (el && el._model && el instanceof elements.Line) {\n\t\t\t\tsource = {\n\t\t\t\t\tvisible: chart.isDatasetVisible(i),\n\t\t\t\t\tfill: decodeFill(el, i, count),\n\t\t\t\t\tchart: chart,\n\t\t\t\t\tel: el\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tmeta.$filler = source;\n\t\t\tsources.push(source);\n\t\t}\n\n\t\tfor (i = 0; i < count; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!source) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tsource.fill = resolveTarget(sources, i, propagate);\n\t\t\tsource.boundary = computeBoundary(source);\n\t\t\tsource.mapper = createMapper(source);\n\t\t}\n\t},\n\n\tbeforeDatasetDraw: function(chart, args) {\n\t\tvar meta = args.meta.$filler;\n\t\tif (!meta) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar ctx = chart.ctx;\n\t\tvar el = meta.el;\n\t\tvar view = el._view;\n\t\tvar points = el._children || [];\n\t\tvar mapper = meta.mapper;\n\t\tvar color = view.backgroundColor || defaults.global.defaultColor;\n\n\t\tif (mapper && color && points.length) {\n\t\t\thelpers.canvas.clipArea(ctx, chart.chartArea);\n\t\t\tdoFill(ctx, points, mapper, view, color, el._loop);\n\t\t\thelpers.canvas.unclipArea(ctx);\n\t\t}\n\t}\n};\n","'use strict';\n\nmodule.exports = {};\nmodule.exports.Arc = require('./element.arc');\nmodule.exports.Line = require('./element.line');\nmodule.exports.Point = require('./element.point');\nmodule.exports.Rectangle = require('./element.rectangle');\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\n\nvar defaults = require('./core.defaults');\nvar Element = require('./core.element');\nvar helpers = require('../helpers/index');\n\ndefaults._set('global', {\n\ttooltips: {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'nearest',\n\t\tposition: 'average',\n\t\tintersect: true,\n\t\tbackgroundColor: 'rgba(0,0,0,0.8)',\n\t\ttitleFontStyle: 'bold',\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: '#fff',\n\t\ttitleAlign: 'left',\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: '#fff',\n\t\tbodyAlign: 'left',\n\t\tfooterFontStyle: 'bold',\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: '#fff',\n\t\tfooterAlign: 'left',\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tcaretPadding: 2,\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tdisplayColors: true,\n\t\tborderColor: 'rgba(0,0,0,0)',\n\t\tborderWidth: 0,\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar label = data.datasets[tooltipItem.datasetIndex].label || '';\n\n\t\t\t\tif (label) {\n\t\t\t\t\tlabel += ': ';\n\t\t\t\t}\n\t\t\t\tlabel += tooltipItem.yLabel;\n\t\t\t\treturn label;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chart) {\n\t\t\t\tvar meta = chart.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tlabelTextColor: function() {\n\t\t\t\treturn this._options.bodyFontColor;\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t}\n});\n\nvar positioners = {\n\t/**\n\t * Average mode places the tooltip at the average position of the elements shown\n\t * @function Chart.Tooltip.positioners.average\n\t * @param elements {ChartElement[]} the elements being displayed in the tooltip\n\t * @returns {Point} tooltip position\n\t */\n\taverage: function(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar x = 0;\n\t\tvar y = 0;\n\t\tvar count = 0;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\tx += pos.x;\n\t\t\t\ty += pos.y;\n\t\t\t\t++count;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / count),\n\t\t\ty: Math.round(y / count)\n\t\t};\n\t},\n\n\t/**\n\t * Gets the tooltip position nearest of the item nearest to the event position\n\t * @function Chart.Tooltip.positioners.nearest\n\t * @param elements {Chart.Element[]} the tooltip elements\n\t * @param eventPosition {Point} the position of the event in canvas coordinates\n\t * @returns {Point} the tooltip position\n\t */\n\tnearest: function(elements, eventPosition) {\n\t\tvar x = eventPosition.x;\n\t\tvar y = eventPosition.y;\n\t\tvar minDistance = Number.POSITIVE_INFINITY;\n\t\tvar i, len, nearestElement;\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()) {\n\t\t\t\tvar center = el.getCenterPoint();\n\t\t\t\tvar d = helpers.distanceBetweenPoints(eventPosition, center);\n\n\t\t\t\tif (d < minDistance) {\n\t\t\t\t\tminDistance = d;\n\t\t\t\t\tnearestElement = el;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (nearestElement) {\n\t\t\tvar tp = nearestElement.tooltipPosition();\n\t\t\tx = tp.x;\n\t\t\ty = tp.y;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t}\n};\n\n/**\n * Helper method to merge the opacity into a color\n */\nfunction mergeOpacity(colorString, opacity) {\n\tvar color = helpers.color(colorString);\n\treturn color.alpha(opacity * color.alpha()).rgbaString();\n}\n\n// Helper to push or concat based on if the 2nd parameter is an array or not\nfunction pushOrConcat(base, toPush) {\n\tif (toPush) {\n\t\tif (helpers.isArray(toPush)) {\n\t\t\t// base = base.concat(toPush);\n\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t} else {\n\t\t\tbase.push(toPush);\n\t\t}\n\t}\n\n\treturn base;\n}\n\n/**\n * Returns array of strings split by newline\n * @param {String} value - The value to split by newline.\n * @returns {Array} value if newline present - Returned from String split() method\n * @function\n */\nfunction splitNewlines(str) {\n\tif ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n\t\treturn str.split('\\n');\n\t}\n\treturn str;\n}\n\n\n// Private helper to create a tooltip item model\n// @param element : the chart element (point, arc, bar) to create the tooltip item for\n// @return : new tooltip item\nfunction createTooltipItem(element) {\n\tvar xScale = element._xScale;\n\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\tvar index = element._index;\n\tvar datasetIndex = element._datasetIndex;\n\n\treturn {\n\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\tindex: index,\n\t\tdatasetIndex: datasetIndex,\n\t\tx: element._model.x,\n\t\ty: element._model.y\n\t};\n}\n\n/**\n * Helper to get the reset model for the tooltip\n * @param tooltipOpts {Object} the tooltip options\n */\nfunction getBaseModel(tooltipOpts) {\n\tvar globalDefaults = defaults.global;\n\tvar valueOrDefault = helpers.valueOrDefault;\n\n\treturn {\n\t\t// Positioning\n\t\txPadding: tooltipOpts.xPadding,\n\t\tyPadding: tooltipOpts.yPadding,\n\t\txAlign: tooltipOpts.xAlign,\n\t\tyAlign: tooltipOpts.yAlign,\n\n\t\t// Body\n\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t_bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t_bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\tbodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t// Title\n\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t_titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t_titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\ttitleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t// Footer\n\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t_footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t_footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\tfooterFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t// Appearance\n\t\tcaretSize: tooltipOpts.caretSize,\n\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\topacity: 0,\n\t\tlegendColorBackground: tooltipOpts.multiKeyBackground,\n\t\tdisplayColors: tooltipOpts.displayColors,\n\t\tborderColor: tooltipOpts.borderColor,\n\t\tborderWidth: tooltipOpts.borderWidth\n\t};\n}\n\n/**\n * Get the size of the tooltip\n */\nfunction getTooltipSize(tooltip, model) {\n\tvar ctx = tooltip._chart.ctx;\n\n\tvar height = model.yPadding * 2; // Tooltip Padding\n\tvar width = 0;\n\n\t// Count of all lines in the body\n\tvar body = model.body;\n\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t}, 0);\n\tcombinedBodyLength += model.beforeBody.length + model.afterBody.length;\n\n\tvar titleLineCount = model.title.length;\n\tvar footerLineCount = model.footer.length;\n\tvar titleFontSize = model.titleFontSize;\n\tvar bodyFontSize = model.bodyFontSize;\n\tvar footerFontSize = model.footerFontSize;\n\n\theight += titleLineCount * titleFontSize; // Title Lines\n\theight += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing\n\theight += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin\n\theight += combinedBodyLength * bodyFontSize; // Body Lines\n\theight += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing\n\theight += footerLineCount ? model.footerMarginTop : 0; // Footer Margin\n\theight += footerLineCount * (footerFontSize); // Footer Lines\n\theight += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing\n\n\t// Title width\n\tvar widthPadding = 0;\n\tvar maxLineWidth = function(line) {\n\t\twidth = Math.max(width, ctx.measureText(line).width + widthPadding);\n\t};\n\n\tctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily);\n\thelpers.each(model.title, maxLineWidth);\n\n\t// Body width\n\tctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily);\n\thelpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth);\n\n\t// Body lines may include some extra width due to the color box\n\twidthPadding = model.displayColors ? (bodyFontSize + 2) : 0;\n\thelpers.each(body, function(bodyItem) {\n\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t});\n\n\t// Reset back to 0\n\twidthPadding = 0;\n\n\t// Footer width\n\tctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily);\n\thelpers.each(model.footer, maxLineWidth);\n\n\t// Add padding\n\twidth += 2 * model.xPadding;\n\n\treturn {\n\t\twidth: width,\n\t\theight: height\n\t};\n}\n\n/**\n * Helper to get the alignment of a tooltip given the size\n */\nfunction determineAlignment(tooltip, size) {\n\tvar model = tooltip._model;\n\tvar chart = tooltip._chart;\n\tvar chartArea = tooltip._chart.chartArea;\n\tvar xAlign = 'center';\n\tvar yAlign = 'center';\n\n\tif (model.y < size.height) {\n\t\tyAlign = 'top';\n\t} else if (model.y > (chart.height - size.height)) {\n\t\tyAlign = 'bottom';\n\t}\n\n\tvar lf, rf; // functions to determine left, right alignment\n\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\tvar midX = (chartArea.left + chartArea.right) / 2;\n\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\tif (yAlign === 'center') {\n\t\tlf = function(x) {\n\t\t\treturn x <= midX;\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x > midX;\n\t\t};\n\t} else {\n\t\tlf = function(x) {\n\t\t\treturn x <= (size.width / 2);\n\t\t};\n\t\trf = function(x) {\n\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t};\n\t}\n\n\tolf = function(x) {\n\t\treturn x + size.width + model.caretSize + model.caretPadding > chart.width;\n\t};\n\torf = function(x) {\n\t\treturn x - size.width - model.caretSize - model.caretPadding < 0;\n\t};\n\tyf = function(y) {\n\t\treturn y <= midY ? 'top' : 'bottom';\n\t};\n\n\tif (lf(model.x)) {\n\t\txAlign = 'left';\n\n\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\tif (olf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t} else if (rf(model.x)) {\n\t\txAlign = 'right';\n\n\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\tif (orf(model.x)) {\n\t\t\txAlign = 'center';\n\t\t\tyAlign = yf(model.y);\n\t\t}\n\t}\n\n\tvar opts = tooltip._options;\n\treturn {\n\t\txAlign: opts.xAlign ? opts.xAlign : xAlign,\n\t\tyAlign: opts.yAlign ? opts.yAlign : yAlign\n\t};\n}\n\n/**\n * Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment\n */\nfunction getBackgroundPoint(vm, size, alignment, chart) {\n\t// Background Position\n\tvar x = vm.x;\n\tvar y = vm.y;\n\n\tvar caretSize = vm.caretSize;\n\tvar caretPadding = vm.caretPadding;\n\tvar cornerRadius = vm.cornerRadius;\n\tvar xAlign = alignment.xAlign;\n\tvar yAlign = alignment.yAlign;\n\tvar paddingAndSize = caretSize + caretPadding;\n\tvar radiusAndPadding = cornerRadius + caretPadding;\n\n\tif (xAlign === 'right') {\n\t\tx -= size.width;\n\t} else if (xAlign === 'center') {\n\t\tx -= (size.width / 2);\n\t\tif (x + size.width > chart.width) {\n\t\t\tx = chart.width - size.width;\n\t\t}\n\t\tif (x < 0) {\n\t\t\tx = 0;\n\t\t}\n\t}\n\n\tif (yAlign === 'top') {\n\t\ty += paddingAndSize;\n\t} else if (yAlign === 'bottom') {\n\t\ty -= size.height + paddingAndSize;\n\t} else {\n\t\ty -= (size.height / 2);\n\t}\n\n\tif (yAlign === 'center') {\n\t\tif (xAlign === 'left') {\n\t\t\tx += paddingAndSize;\n\t\t} else if (xAlign === 'right') {\n\t\t\tx -= paddingAndSize;\n\t\t}\n\t} else if (xAlign === 'left') {\n\t\tx -= radiusAndPadding;\n\t} else if (xAlign === 'right') {\n\t\tx += radiusAndPadding;\n\t}\n\n\treturn {\n\t\tx: x,\n\t\ty: y\n\t};\n}\n\n/**\n * Helper to build before and after body lines\n */\nfunction getBeforeAfterBodyLines(callback) {\n\treturn pushOrConcat([], splitNewlines(callback));\n}\n\nvar exports = module.exports = Element.extend({\n\tinitialize: function() {\n\t\tthis._model = getBaseModel(this._options);\n\t\tthis._lastActive = [];\n\t},\n\n\t// Get the title\n\t// Args are: (tooltipItem, data)\n\tgetTitle: function() {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\t\tvar callbacks = opts.callbacks;\n\n\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments);\n\t\tvar title = callbacks.title.apply(me, arguments);\n\t\tvar afterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeTitle));\n\t\tlines = pushOrConcat(lines, splitNewlines(title));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterTitle));\n\n\t\treturn lines;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBeforeBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.beforeBody.apply(this, arguments));\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetBody: function(tooltipItems, data) {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\t\tvar bodyItems = [];\n\n\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\tvar bodyItem = {\n\t\t\t\tbefore: [],\n\t\t\t\tlines: [],\n\t\t\t\tafter: []\n\t\t\t};\n\t\t\tpushOrConcat(bodyItem.before, splitNewlines(callbacks.beforeLabel.call(me, tooltipItem, data)));\n\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\tpushOrConcat(bodyItem.after, splitNewlines(callbacks.afterLabel.call(me, tooltipItem, data)));\n\n\t\t\tbodyItems.push(bodyItem);\n\t\t});\n\n\t\treturn bodyItems;\n\t},\n\n\t// Args are: (tooltipItem, data)\n\tgetAfterBody: function() {\n\t\treturn getBeforeAfterBodyLines(this._options.callbacks.afterBody.apply(this, arguments));\n\t},\n\n\t// Get the footer and beforeFooter and afterFooter lines\n\t// Args are: (tooltipItem, data)\n\tgetFooter: function() {\n\t\tvar me = this;\n\t\tvar callbacks = me._options.callbacks;\n\n\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\tvar lines = [];\n\t\tlines = pushOrConcat(lines, splitNewlines(beforeFooter));\n\t\tlines = pushOrConcat(lines, splitNewlines(footer));\n\t\tlines = pushOrConcat(lines, splitNewlines(afterFooter));\n\n\t\treturn lines;\n\t},\n\n\tupdate: function(changed) {\n\t\tvar me = this;\n\t\tvar opts = me._options;\n\n\t\t// Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition\n\t\t// that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time\n\t\t// which breaks any animations.\n\t\tvar existingModel = me._model;\n\t\tvar model = me._model = getBaseModel(opts);\n\t\tvar active = me._active;\n\n\t\tvar data = me._data;\n\n\t\t// In the case where active.length === 0 we need to keep these at existing values for good animations\n\t\tvar alignment = {\n\t\t\txAlign: existingModel.xAlign,\n\t\t\tyAlign: existingModel.yAlign\n\t\t};\n\t\tvar backgroundPoint = {\n\t\t\tx: existingModel.x,\n\t\t\ty: existingModel.y\n\t\t};\n\t\tvar tooltipSize = {\n\t\t\twidth: existingModel.width,\n\t\t\theight: existingModel.height\n\t\t};\n\t\tvar tooltipPosition = {\n\t\t\tx: existingModel.caretX,\n\t\t\ty: existingModel.caretY\n\t\t};\n\n\t\tvar i, len;\n\n\t\tif (active.length) {\n\t\t\tmodel.opacity = 1;\n\n\t\t\tvar labelColors = [];\n\t\t\tvar labelTextColors = [];\n\t\t\ttooltipPosition = positioners[opts.position].call(me, active, me._eventPosition);\n\n\t\t\tvar tooltipItems = [];\n\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t}\n\n\t\t\t// If the user provided a filter function, use it to modify the tooltip items\n\t\t\tif (opts.filter) {\n\t\t\t\ttooltipItems = tooltipItems.filter(function(a) {\n\t\t\t\t\treturn opts.filter(a, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\tif (opts.itemSort) {\n\t\t\t\ttooltipItems = tooltipItems.sort(function(a, b) {\n\t\t\t\t\treturn opts.itemSort(a, b, data);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Determine colors for boxes\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart));\n\t\t\t\tlabelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart));\n\t\t\t});\n\n\n\t\t\t// Build the Text Lines\n\t\t\tmodel.title = me.getTitle(tooltipItems, data);\n\t\t\tmodel.beforeBody = me.getBeforeBody(tooltipItems, data);\n\t\t\tmodel.body = me.getBody(tooltipItems, data);\n\t\t\tmodel.afterBody = me.getAfterBody(tooltipItems, data);\n\t\t\tmodel.footer = me.getFooter(tooltipItems, data);\n\n\t\t\t// Initial positioning and colors\n\t\t\tmodel.x = Math.round(tooltipPosition.x);\n\t\t\tmodel.y = Math.round(tooltipPosition.y);\n\t\t\tmodel.caretPadding = opts.caretPadding;\n\t\t\tmodel.labelColors = labelColors;\n\t\t\tmodel.labelTextColors = labelTextColors;\n\n\t\t\t// data points\n\t\t\tmodel.dataPoints = tooltipItems;\n\n\t\t\t// We need to determine alignment of the tooltip\n\t\t\ttooltipSize = getTooltipSize(this, model);\n\t\t\talignment = determineAlignment(this, tooltipSize);\n\t\t\t// Final Size and Position\n\t\t\tbackgroundPoint = getBackgroundPoint(model, tooltipSize, alignment, me._chart);\n\t\t} else {\n\t\t\tmodel.opacity = 0;\n\t\t}\n\n\t\tmodel.xAlign = alignment.xAlign;\n\t\tmodel.yAlign = alignment.yAlign;\n\t\tmodel.x = backgroundPoint.x;\n\t\tmodel.y = backgroundPoint.y;\n\t\tmodel.width = tooltipSize.width;\n\t\tmodel.height = tooltipSize.height;\n\n\t\t// Point where the caret on the tooltip points to\n\t\tmodel.caretX = tooltipPosition.x;\n\t\tmodel.caretY = tooltipPosition.y;\n\n\t\tme._model = model;\n\n\t\tif (changed && opts.custom) {\n\t\t\topts.custom.call(me, model);\n\t\t}\n\n\t\treturn me;\n\t},\n\n\tdrawCaret: function(tooltipPoint, size) {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar caretPosition = this.getCaretPosition(tooltipPoint, size, vm);\n\n\t\tctx.lineTo(caretPosition.x1, caretPosition.y1);\n\t\tctx.lineTo(caretPosition.x2, caretPosition.y2);\n\t\tctx.lineTo(caretPosition.x3, caretPosition.y3);\n\t},\n\tgetCaretPosition: function(tooltipPoint, size, vm) {\n\t\tvar x1, x2, x3, y1, y2, y3;\n\t\tvar caretSize = vm.caretSize;\n\t\tvar cornerRadius = vm.cornerRadius;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar ptX = tooltipPoint.x;\n\t\tvar ptY = tooltipPoint.y;\n\t\tvar width = size.width;\n\t\tvar height = size.height;\n\n\t\tif (yAlign === 'center') {\n\t\t\ty2 = ptY + (height / 2);\n\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx1 = ptX;\n\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 + caretSize;\n\t\t\t\ty3 = y2 - caretSize;\n\t\t\t} else {\n\t\t\t\tx1 = ptX + width;\n\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\tx3 = x1;\n\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t}\n\t\t} else {\n\t\t\tif (xAlign === 'left') {\n\t\t\t\tx2 = ptX + cornerRadius + (caretSize);\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else if (xAlign === 'right') {\n\t\t\t\tx2 = ptX + width - cornerRadius - caretSize;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t} else {\n\t\t\t\tx2 = vm.caretX;\n\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\tx3 = x2 + caretSize;\n\t\t\t}\n\t\t\tif (yAlign === 'top') {\n\t\t\t\ty1 = ptY;\n\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t} else {\n\t\t\t\ty1 = ptY + height;\n\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\ty3 = y1;\n\t\t\t\t// invert drawing order\n\t\t\t\tvar tmp = x3;\n\t\t\t\tx3 = x1;\n\t\t\t\tx1 = tmp;\n\t\t\t}\n\t\t}\n\t\treturn {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3};\n\t},\n\n\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\tvar title = vm.title;\n\n\t\tif (title.length) {\n\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tvar titleFontSize = vm.titleFontSize;\n\t\t\tvar titleSpacing = vm.titleSpacing;\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\tvar i, len;\n\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\tvar bodySpacing = vm.bodySpacing;\n\t\tvar body = vm.body;\n\n\t\tctx.textAlign = vm._bodyAlign;\n\t\tctx.textBaseline = 'top';\n\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t// Before Body\n\t\tvar xLinePadding = 0;\n\t\tvar fillLineOfText = function(line) {\n\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t};\n\n\t\t// Before body lines\n\t\tctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity);\n\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\tvar drawColorBoxes = vm.displayColors;\n\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t// Draw body lines now\n\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\tvar textColor = mergeOpacity(vm.labelTextColors[i], opacity);\n\t\t\tctx.fillStyle = textColor;\n\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity);\n\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Border\n\t\t\t\t\tctx.lineWidth = 1;\n\t\t\t\t\tctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity);\n\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t// Inner square\n\t\t\t\t\tctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity);\n\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t}\n\n\t\t\t\tfillLineOfText(line);\n\t\t\t});\n\n\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t});\n\n\t\t// Reset back to 0 for after body\n\t\txLinePadding = 0;\n\n\t\t// After body lines\n\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t},\n\n\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\tvar footer = vm.footer;\n\n\t\tif (footer.length) {\n\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\tctx.textBaseline = 'top';\n\n\t\t\tctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity);\n\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\thelpers.each(footer, function(line) {\n\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t});\n\t\t}\n\t},\n\n\tdrawBackground: function(pt, vm, ctx, tooltipSize, opacity) {\n\t\tctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity);\n\t\tctx.strokeStyle = mergeOpacity(vm.borderColor, opacity);\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tvar xAlign = vm.xAlign;\n\t\tvar yAlign = vm.yAlign;\n\t\tvar x = pt.x;\n\t\tvar y = pt.y;\n\t\tvar width = tooltipSize.width;\n\t\tvar height = tooltipSize.height;\n\t\tvar radius = vm.cornerRadius;\n\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tif (yAlign === 'top') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tif (yAlign === 'center' && xAlign === 'right') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tif (yAlign === 'bottom') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tif (yAlign === 'center' && xAlign === 'left') {\n\t\t\tthis.drawCaret(pt, tooltipSize);\n\t\t}\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth > 0) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\n\t\tif (vm.opacity === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar tooltipSize = {\n\t\t\twidth: vm.width,\n\t\t\theight: vm.height\n\t\t};\n\t\tvar pt = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\n\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t// Truthy/falsey value for empty tooltip\n\t\tvar hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length;\n\n\t\tif (this._options.enabled && hasTooltipContent) {\n\t\t\t// Draw Background\n\t\t\tthis.drawBackground(pt, vm, ctx, tooltipSize, opacity);\n\n\t\t\t// Draw Title, Body, and Footer\n\t\t\tpt.x += vm.xPadding;\n\t\t\tpt.y += vm.yPadding;\n\n\t\t\t// Titles\n\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t// Body\n\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t// Footer\n\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t}\n\t},\n\n\t/**\n\t * Handle an event\n\t * @private\n\t * @param {IEvent} event - The event to handle\n\t * @returns {Boolean} true if the tooltip changed\n\t */\n\thandleEvent: function(e) {\n\t\tvar me = this;\n\t\tvar options = me._options;\n\t\tvar changed = false;\n\n\t\tme._lastActive = me._lastActive || [];\n\n\t\t// Find Active Elements for tooltips\n\t\tif (e.type === 'mouseout') {\n\t\t\tme._active = [];\n\t\t} else {\n\t\t\tme._active = me._chart.getElementsAtEventForMode(e, options.mode, options);\n\t\t}\n\n\t\t// Remember Last Actives\n\t\tchanged = !helpers.arrayEquals(me._active, me._lastActive);\n\n\t\t// Only handle target event on tooltip change\n\t\tif (changed) {\n\t\t\tme._lastActive = me._active;\n\n\t\t\tif (options.enabled || options.custom) {\n\t\t\t\tme._eventPosition = {\n\t\t\t\t\tx: e.x,\n\t\t\t\t\ty: e.y\n\t\t\t\t};\n\n\t\t\t\tme.update(true);\n\t\t\t\tme.pivot();\n\t\t\t}\n\t\t}\n\n\t\treturn changed;\n\t}\n});\n\n/**\n * @namespace Chart.Tooltip.positioners\n */\nexports.positioners = positioners;\n\n","'use strict';\n\nvar defaults = require('./core.defaults');\n\ndefaults._set('global', {\n\tresponsive: true,\n\tresponsiveAnimationDuration: 0,\n\tmaintainAspectRatio: true,\n\tevents: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'],\n\thover: {\n\t\tonHover: null,\n\t\tmode: 'nearest',\n\t\tintersect: true,\n\t\tanimationDuration: 400\n\t},\n\tonClick: null,\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tshowLines: true,\n\n\t// Element defaults defined in element extensions\n\telements: {},\n\n\t// Layout options such as padding\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\nmodule.exports = function() {\n\n\t// Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(item, config) {\n\t\tthis.construct(item, config);\n\t\treturn this;\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n};\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Result.vue?vue&type=style&index=0&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Result.vue?vue&type=style&index=0&lang=css&\"","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar Element = require('../core/core.element');\n\ndefaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaults.global.defaultColor,\n\t\t\tborderColor: defaults.global.defaultColor,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(bar) {\n\treturn bar._view.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(bar) {\n\tvar vm = bar._view;\n\tvar x1, x2, y1, y2;\n\n\tif (isVertical(bar)) {\n\t\t// vertical\n\t\tvar halfWidth = vm.width / 2;\n\t\tx1 = vm.x - halfWidth;\n\t\tx2 = vm.x + halfWidth;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\t// horizontal bar\n\t\tvar halfHeight = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - halfHeight;\n\t\ty2 = vm.y + halfHeight;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nmodule.exports = Element.extend({\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar left, right, top, bottom, signX, signY, borderSkipped;\n\t\tvar borderWidth = vm.borderWidth;\n\n\t\tif (!vm.horizontal) {\n\t\t\t// bar\n\t\t\tleft = vm.x - vm.width / 2;\n\t\t\tright = vm.x + vm.width / 2;\n\t\t\ttop = vm.y;\n\t\t\tbottom = vm.base;\n\t\t\tsignX = 1;\n\t\t\tsignY = bottom > top ? 1 : -1;\n\t\t\tborderSkipped = vm.borderSkipped || 'bottom';\n\t\t} else {\n\t\t\t// horizontal bar\n\t\t\tleft = vm.base;\n\t\t\tright = vm.x;\n\t\t\ttop = vm.y - vm.height / 2;\n\t\t\tbottom = vm.y + vm.height / 2;\n\t\t\tsignX = right > left ? 1 : -1;\n\t\t\tsignY = 1;\n\t\t\tborderSkipped = vm.borderSkipped || 'left';\n\t\t}\n\n\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\tif (borderWidth) {\n\t\t\t// borderWidth shold be less than bar width and bar height.\n\t\t\tvar barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n\t\t\tborderWidth = borderWidth > barSize ? barSize : borderWidth;\n\t\t\tvar halfStroke = borderWidth / 2;\n\t\t\t// Adjust borderWidth when bar top position is near vm.base(zero).\n\t\t\tvar borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n\t\t\tvar borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n\t\t\tvar borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n\t\t\tvar borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n\t\t\t// not become a vertical line?\n\t\t\tif (borderLeft !== borderRight) {\n\t\t\t\ttop = borderTop;\n\t\t\t\tbottom = borderBottom;\n\t\t\t}\n\t\t\t// not become a horizontal line?\n\t\t\tif (borderTop !== borderBottom) {\n\t\t\t\tleft = borderLeft;\n\t\t\t\tright = borderRight;\n\t\t\t}\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\t\tctx.lineWidth = borderWidth;\n\n\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t// | 1 2 |\n\t\t// | 0 3 |\n\t\tvar corners = [\n\t\t\t[left, bottom],\n\t\t\t[left, top],\n\t\t\t[right, top],\n\t\t\t[right, bottom]\n\t\t];\n\n\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\tvar startCorner = borders.indexOf(borderSkipped, 0);\n\t\tif (startCorner === -1) {\n\t\t\tstartCorner = 0;\n\t\t}\n\n\t\tfunction cornerAt(index) {\n\t\t\treturn corners[(startCorner + index) % 4];\n\t\t}\n\n\t\t// Draw rectangle from 'startCorner'\n\t\tvar corner = cornerAt(0);\n\t\tctx.moveTo(corner[0], corner[1]);\n\n\t\tfor (var i = 1; i < 4; i++) {\n\t\t\tcorner = cornerAt(i);\n\t\t\tctx.lineTo(corner[0], corner[1]);\n\t\t}\n\n\t\tctx.fill();\n\t\tif (borderWidth) {\n\t\t\tctx.stroke();\n\t\t}\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar inRange = false;\n\n\t\tif (this._view) {\n\t\t\tvar bounds = getBarBounds(this);\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar inRange = false;\n\t\tvar bounds = getBarBounds(me);\n\n\t\tif (isVertical(me)) {\n\t\t\tinRange = mouseX >= bounds.left && mouseX <= bounds.right;\n\t\t} else {\n\t\t\tinRange = mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t\t}\n\n\t\treturn inRange;\n\t},\n\n\tinXRange: function(mouseX) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseX >= bounds.left && mouseX <= bounds.right;\n\t},\n\n\tinYRange: function(mouseY) {\n\t\tvar bounds = getBarBounds(this);\n\t\treturn mouseY >= bounds.top && mouseY <= bounds.bottom;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(this)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.width * Math.abs(vm.y - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\n\ndefaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\tshowLines: false,\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar elements = require('../elements/index');\nvar helpers = require('../helpers/index');\n\ndefaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar text = [];\n\t\ttext.push('
    ');\n\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\n\t\tif (datasets.length) {\n\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\ttext.push('
  • ');\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t}\n\t\t\t\ttext.push('
  • ');\n\t\t\t}\n\t\t}\n\n\t\ttext.push('
');\n\t\treturn text.join('');\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\tvar valueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nmodule.exports = function(Chart) {\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar start = me.chart.options.startAngle || 0;\n\t\t\tvar starts = me._starts = [];\n\t\t\tvar angles = me._angles = [];\n\t\t\tvar i, ilen, angle;\n\n\t\t\tme._updateRadius();\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\t\tstarts[i] = start;\n\t\t\t\tangle = me._computeAngle(i);\n\t\t\t\tangles[i] = angle;\n\t\t\t\tstart += angle;\n\t\t\t}\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_updateRadius: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = me._starts[index];\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: helpers.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tvar elementOpts = this.chart.options.elements.arc;\n\t\t\tvar custom = arc.custom || {};\n\t\t\tvar valueOrDefault = helpers.valueAtIndexOrDefault;\n\t\t\tvar model = arc._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\t_computeAngle: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar count = this.getMeta().count;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\t// Scriptable options\n\t\t\tvar context = {\n\t\t\t\tchart: me.chart,\n\t\t\t\tdataIndex: index,\n\t\t\t\tdataset: dataset,\n\t\t\t\tdatasetIndex: me.index\n\t\t\t};\n\n\t\t\treturn helpers.options.resolve([\n\t\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t\t(2 * Math.PI) / count\n\t\t\t], context, index);\n\t\t}\n\t});\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\n\nvar Animation = require('./core.animation');\nvar animations = require('./core.animations');\nvar defaults = require('./core.defaults');\nvar helpers = require('../helpers/index');\nvar Interaction = require('./core.interaction');\nvar layouts = require('./core.layouts');\nvar platform = require('../platforms/platform');\nvar plugins = require('./core.plugins');\nvar scaleService = require('../core/core.scaleService');\nvar Tooltip = require('./core.tooltip');\n\nmodule.exports = function(Chart) {\n\n\t// Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t// Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t// Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * Initializes the given config with global and chart default values.\n\t */\n\tfunction initConfig(config) {\n\t\tconfig = config || {};\n\n\t\t// Do NOT use configMerge() for the data object because this method merges arrays\n\t\t// and so would change references to labels and datasets, preventing data updates.\n\t\tvar data = config.data = config.data || {};\n\t\tdata.datasets = data.datasets || [];\n\t\tdata.labels = data.labels || [];\n\n\t\tconfig.options = helpers.configMerge(\n\t\t\tdefaults.global,\n\t\t\tdefaults[config.type],\n\t\t\tconfig.options || {});\n\n\t\treturn config;\n\t}\n\n\t/**\n\t * Updates the config of the chart\n\t * @param chart {Chart} chart to update the options for\n\t */\n\tfunction updateConfig(chart) {\n\t\tvar newOptions = chart.options;\n\n\t\thelpers.each(chart.scales, function(scale) {\n\t\t\tlayouts.removeBox(chart, scale);\n\t\t});\n\n\t\tnewOptions = helpers.configMerge(\n\t\t\tChart.defaults.global,\n\t\t\tChart.defaults[chart.config.type],\n\t\t\tnewOptions);\n\n\t\tchart.options = chart.config.options = newOptions;\n\t\tchart.ensureScalesHaveIDs();\n\t\tchart.buildOrUpdateScales();\n\t\t// Tooltip\n\t\tchart.tooltip._options = newOptions.tooltips;\n\t\tchart.tooltip.initialize();\n\t}\n\n\tfunction positionIsHorizontal(position) {\n\t\treturn position === 'top' || position === 'bottom';\n\t}\n\n\thelpers.extend(Chart.prototype, /** @lends Chart */ {\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tconstruct: function(item, config) {\n\t\t\tvar me = this;\n\n\t\t\tconfig = initConfig(config);\n\n\t\t\tvar context = platform.acquireContext(item, config);\n\t\t\tvar canvas = context && context.canvas;\n\t\t\tvar height = canvas && canvas.height;\n\t\t\tvar width = canvas && canvas.width;\n\n\t\t\tme.id = helpers.uid();\n\t\t\tme.ctx = context;\n\t\t\tme.canvas = canvas;\n\t\t\tme.config = config;\n\t\t\tme.width = width;\n\t\t\tme.height = height;\n\t\t\tme.aspectRatio = height ? width / height : null;\n\t\t\tme.options = config.options;\n\t\t\tme._bufferedRender = false;\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, Chart and Chart.Controller have been merged,\n\t\t\t * the \"instance\" still need to be defined since it might be called from plugins.\n\t\t\t * @prop Chart#chart\n\t\t\t * @deprecated since version 2.6.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tme.chart = me;\n\t\t\tme.controller = me; // chart.chart.controller #inception\n\n\t\t\t// Add the chart instance to the global namespace\n\t\t\tChart.instances[me.id] = me;\n\n\t\t\t// Define alias to the config data: `chart.data === chart.config.data`\n\t\t\tObject.defineProperty(me, 'data', {\n\t\t\t\tget: function() {\n\t\t\t\t\treturn me.config.data;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\tme.config.data = value;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (!context || !canvas) {\n\t\t\t\t// The given item is not a compatible context2d element, let's return before finalizing\n\t\t\t\t// the chart initialization but after setting basic chart / controller properties that\n\t\t\t\t// can help to figure out that the chart is not valid (e.g chart.canvas !== null);\n\t\t\t\t// https://github.com/chartjs/Chart.js/issues/2807\n\t\t\t\tconsole.error(\"Failed to create chart: can't acquire context from the given item\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tme.initialize();\n\t\t\tme.update();\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\n\t\t\t// Before init plugin notification\n\t\t\tplugins.notify(me, 'beforeInit');\n\n\t\t\thelpers.retinaScale(me, me.options.devicePixelRatio);\n\n\t\t\tme.bindEvents();\n\n\t\t\tif (me.options.responsive) {\n\t\t\t\t// Initial resize before chart draws (must be silent to preserve initial animations).\n\t\t\t\tme.resize(true);\n\t\t\t}\n\n\t\t\t// Make sure scales have IDs and are built before we build any controllers.\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateScales();\n\t\t\tme.initToolTip();\n\n\t\t\t// After init plugin notification\n\t\t\tplugins.notify(me, 'afterInit');\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.canvas.clear(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occurring\n\t\t\tanimations.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function(silent) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null;\n\n\t\t\t// the canvas render width and height will be casted to integers so make sure that\n\t\t\t// the canvas display style uses the same integer values to avoid blurring effect.\n\n\t\t\t// Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collapsed\n\t\t\tvar newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas)));\n\t\t\tvar newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas)));\n\n\t\t\tif (me.width === newWidth && me.height === newHeight) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcanvas.width = me.width = newWidth;\n\t\t\tcanvas.height = me.height = newHeight;\n\t\t\tcanvas.style.width = newWidth + 'px';\n\t\t\tcanvas.style.height = newHeight + 'px';\n\n\t\t\thelpers.retinaScale(me, options.devicePixelRatio);\n\n\t\t\tif (!silent) {\n\t\t\t\t// Notify any plugins about the resize\n\t\t\t\tvar newSize = {width: newWidth, height: newHeight};\n\t\t\t\tplugins.notify(me, 'resize', [newSize]);\n\n\t\t\t\t// Notify of resize\n\t\t\t\tif (me.options.onResize) {\n\t\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t\t}\n\n\t\t\t\tme.stop();\n\t\t\t\tme.update({\n\t\t\t\t\tduration: me.options.responsiveAnimationDuration\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildOrUpdateScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales || {};\n\t\t\tvar items = [];\n\t\t\tvar updated = Object.keys(scales).reduce(function(obj, id) {\n\t\t\t\tobj[id] = false;\n\t\t\t\treturn obj;\n\t\t\t}, {});\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn {options: xAxisOptions, dtype: 'category', dposition: 'bottom'};\n\t\t\t\t\t}),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn {options: yAxisOptions, dtype: 'linear', dposition: 'left'};\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({\n\t\t\t\t\toptions: options.scale,\n\t\t\t\t\tdtype: 'radialLinear',\n\t\t\t\t\tisDefault: true,\n\t\t\t\t\tdposition: 'chartArea'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar id = scaleOptions.id;\n\t\t\t\tvar scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype);\n\n\t\t\t\tif (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) {\n\t\t\t\t\tscaleOptions.position = item.dposition;\n\t\t\t\t}\n\n\t\t\t\tupdated[id] = true;\n\t\t\t\tvar scale = null;\n\t\t\t\tif (id in scales && scales[id].type === scaleType) {\n\t\t\t\t\tscale = scales[id];\n\t\t\t\t\tscale.options = scaleOptions;\n\t\t\t\t\tscale.ctx = me.ctx;\n\t\t\t\t\tscale.chart = me;\n\t\t\t\t} else {\n\t\t\t\t\tvar scaleClass = scaleService.getScaleConstructor(scaleType);\n\t\t\t\t\tif (!scaleClass) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tscale = new scaleClass({\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\ttype: scaleType,\n\t\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\t\tctx: me.ctx,\n\t\t\t\t\t\tchart: me\n\t\t\t\t\t});\n\t\t\t\t\tscales[scale.id] = scale;\n\t\t\t\t}\n\n\t\t\t\tscale.mergeTicksOptions();\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\t\t\t// clear up discarded scales\n\t\t\thelpers.each(updated, function(hasUpdated, id) {\n\t\t\t\tif (!hasUpdated) {\n\t\t\t\t\tdelete scales[id];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.scales = scales;\n\n\t\t\tscaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tvar type = dataset.type || me.config.type;\n\n\t\t\t\tif (meta.type && meta.type !== type) {\n\t\t\t\t\tme.destroyDatasetMeta(datasetIndex);\n\t\t\t\t\tmeta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t}\n\t\t\t\tmeta.type = type;\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t\tmeta.controller.linkScales();\n\t\t\t\t} else {\n\t\t\t\t\tvar ControllerClass = Chart.controllers[meta.type];\n\t\t\t\t\tif (ControllerClass === undefined) {\n\t\t\t\t\t\tthrow new Error('\"' + meta.type + '\" is not a chart type.');\n\t\t\t\t\t}\n\n\t\t\t\t\tmeta.controller = new ControllerClass(me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\t/**\n\t\t * Reset the elements of all datasets\n\t\t * @private\n\t\t */\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t* Resets the chart back to it's state before the initial animation\n\t\t*/\n\t\treset: function() {\n\t\t\tthis.resetElements();\n\t\t\tthis.tooltip.initialize();\n\t\t},\n\n\t\tupdate: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tupdateConfig(me);\n\n\t\t\t// plugins options references might have change, let's invalidate the cache\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5111#issuecomment-355934167\n\t\t\tplugins._invalidate(me);\n\n\t\t\tif (plugins.notify(me, 'beforeUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tme.updateLayout();\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\tif (me.options.animation && me.options.animation.duration) {\n\t\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\t\tcontroller.reset();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Need to reset tooltip in case it is displayed with elements that are removed\n\t\t\t// after update.\n\t\t\tme.tooltip.initialize();\n\n\t\t\t// Last active contains items that were previously in the tooltip.\n\t\t\t// When we reset the tooltip, we need to clear it\n\t\t\tme.lastActive = [];\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tplugins.notify(me, 'afterUpdate');\n\n\t\t\tif (me._bufferedRender) {\n\t\t\t\tme._bufferedRequest = {\n\t\t\t\t\tduration: config.duration,\n\t\t\t\t\teasing: config.easing,\n\t\t\t\t\tlazy: config.lazy\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tme.render(config);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Updates the chart layout unless a plugin returns `false` to the `beforeLayout`\n\t\t * hook, in which case, plugins will not be called on `afterLayout`.\n\t\t * @private\n\t\t */\n\t\tupdateLayout: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeLayout') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlayouts.update(this, this.width, this.height);\n\n\t\t\t/**\n\t\t\t * Provided for backward compatibility, use `afterLayout` instead.\n\t\t\t * @method IPlugin#afterScaleUpdate\n\t\t\t * @deprecated since version 2.5.0\n\t\t\t * @todo remove at version 3\n\t\t\t * @private\n\t\t\t */\n\t\t\tplugins.notify(me, 'afterScaleUpdate');\n\t\t\tplugins.notify(me, 'afterLayout');\n\t\t},\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsUpdate') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.updateDataset(i);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsUpdate');\n\t\t},\n\n\t\t/**\n\t\t * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetUpdate`.\n\t\t * @private\n\t\t */\n\t\tupdateDataset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.update();\n\n\t\t\tplugins.notify(me, 'afterDatasetUpdate', [args]);\n\t\t},\n\n\t\trender: function(config) {\n\t\t\tvar me = this;\n\n\t\t\tif (!config || typeof config !== 'object') {\n\t\t\t\t// backwards compatibility\n\t\t\t\tconfig = {\n\t\t\t\t\tduration: config,\n\t\t\t\t\tlazy: arguments[1]\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tvar duration = config.duration;\n\t\t\tvar lazy = config.lazy;\n\n\t\t\tif (plugins.notify(me, 'beforeRender') === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tvar onComplete = function(animation) {\n\t\t\t\tplugins.notify(me, 'afterRender');\n\t\t\t\thelpers.callback(animationOptions && animationOptions.onComplete, [animation], me);\n\t\t\t};\n\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Animation({\n\t\t\t\t\tnumSteps: (duration || animationOptions.duration) / 16.66, // 60 fps\n\t\t\t\t\teasing: config.easing || animationOptions.easing,\n\n\t\t\t\t\trender: function(chart, animationObject) {\n\t\t\t\t\t\tvar easingFunction = helpers.easing.effects[animationObject.easing];\n\t\t\t\t\t\tvar currentStep = animationObject.currentStep;\n\t\t\t\t\t\tvar stepDecimal = currentStep / animationObject.numSteps;\n\n\t\t\t\t\t\tchart.draw(easingFunction(stepDecimal), stepDecimal, currentStep);\n\t\t\t\t\t},\n\n\t\t\t\t\tonAnimationProgress: animationOptions.onProgress,\n\t\t\t\t\tonAnimationComplete: onComplete\n\t\t\t\t});\n\n\t\t\t\tanimations.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\n\t\t\t\t// See https://github.com/chartjs/Chart.js/issues/3781\n\t\t\t\tonComplete(new Animation({numSteps: 0, chart: me}));\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tme.clear();\n\n\t\t\tif (helpers.isNullOrUndef(easingValue)) {\n\t\t\t\teasingValue = 1;\n\t\t\t}\n\n\t\t\tme.transition(easingValue);\n\n\t\t\tif (me.width <= 0 || me.height <= 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (plugins.notify(me, 'beforeDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tme.drawDatasets(easingValue);\n\t\t\tme._drawTooltip(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\ttransition: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tfor (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.transition(easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.tooltip.transition(easingValue);\n\t\t},\n\n\t\t/**\n\t\t * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetsDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDatasets: function(easingValue) {\n\t\t\tvar me = this;\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Draw datasets reversed to support proper line stacking\n\t\t\tfor (var i = (me.data.datasets || []).length - 1; i >= 0; --i) {\n\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\tme.drawDataset(i, easingValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterDatasetsDraw', [easingValue]);\n\t\t},\n\n\t\t/**\n\t\t * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw`\n\t\t * hook, in which case, plugins will not be called on `afterDatasetDraw`.\n\t\t * @private\n\t\t */\n\t\tdrawDataset: function(index, easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getDatasetMeta(index);\n\t\t\tvar args = {\n\t\t\t\tmeta: meta,\n\t\t\t\tindex: index,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tmeta.controller.draw(easingValue);\n\n\t\t\tplugins.notify(me, 'afterDatasetDraw', [args]);\n\t\t},\n\n\t\t/**\n\t\t * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw`\n\t\t * hook, in which case, plugins will not be called on `afterTooltipDraw`.\n\t\t * @private\n\t\t */\n\t\t_drawTooltip: function(easingValue) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar args = {\n\t\t\t\ttooltip: tooltip,\n\t\t\t\teasingValue: easingValue\n\t\t\t};\n\n\t\t\tif (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ttooltip.draw();\n\n\t\t\tplugins.notify(me, 'afterTooltipDraw', [args]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\treturn Interaction.modes.single(this, e);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\treturn Interaction.modes.label(this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\treturn Interaction.modes['x-axis'](this, e, {intersect: true});\n\t\t},\n\n\t\tgetElementsAtEventForMode: function(e, mode, options) {\n\t\t\tvar method = Interaction.modes[mode];\n\t\t\tif (typeof method === 'function') {\n\t\t\t\treturn method(this, e, options);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\treturn Interaction.modes.dataset(this, e, {intersect: true});\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\t\ttype: null,\n\t\t\t\t\tdata: [],\n\t\t\t\t\tdataset: null,\n\t\t\t\t\tcontroller: null,\n\t\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\t\txAxisID: null,\n\t\t\t\t\tyAxisID: null\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tdestroyDatasetMeta: function(datasetIndex) {\n\t\t\tvar id = this.id;\n\t\t\tvar dataset = this.data.datasets[datasetIndex];\n\t\t\tvar meta = dataset._meta && dataset._meta[id];\n\n\t\t\tif (meta) {\n\t\t\t\tmeta.controller.destroy();\n\t\t\t\tdelete dataset._meta[id];\n\t\t\t}\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tvar canvas = me.canvas;\n\t\t\tvar i, ilen;\n\n\t\t\tme.stop();\n\n\t\t\t// dataset controllers need to cleanup associated data\n\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tme.destroyDatasetMeta(i);\n\t\t\t}\n\n\t\t\tif (canvas) {\n\t\t\t\tme.unbindEvents();\n\t\t\t\thelpers.canvas.clear(me);\n\t\t\t\tplatform.releaseContext(me.ctx);\n\t\t\t\tme.canvas = null;\n\t\t\t\tme.ctx = null;\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'destroy');\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.canvas.toDataURL.apply(this.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Tooltip({\n\t\t\t\t_chart: me,\n\t\t\t\t_chartInstance: me, // deprecated, backward compatibility\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners = {};\n\t\t\tvar listener = function() {\n\t\t\t\tme.eventHandler.apply(me, arguments);\n\t\t\t};\n\n\t\t\thelpers.each(me.options.events, function(type) {\n\t\t\t\tplatform.addEventListener(me, type, listener);\n\t\t\t\tlisteners[type] = listener;\n\t\t\t});\n\n\t\t\t// Elements used to detect size change should not be injected for non responsive charts.\n\t\t\t// See https://github.com/chartjs/Chart.js/issues/2210\n\t\t\tif (me.options.responsive) {\n\t\t\t\tlistener = function() {\n\t\t\t\t\tme.resize();\n\t\t\t\t};\n\n\t\t\t\tplatform.addEventListener(me, 'resize', listener);\n\t\t\t\tlisteners.resize = listener;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tunbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\tvar listeners = me._listeners;\n\t\t\tif (!listeners) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tdelete me._listeners;\n\t\t\thelpers.each(listeners, function(listener, type) {\n\t\t\t\tplatform.removeEventListener(me, type, listener);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled ? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tfor (i = 0, ilen = elements.length; i < ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @private\n\t\t */\n\t\teventHandler: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\n\t\t\tif (plugins.notify(me, 'beforeEvent', [e]) === false) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Buffer any update calls so that renders do not occur\n\t\t\tme._bufferedRender = true;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\tvar changed = me.handleEvent(e);\n\t\t\t// for smooth tooltip animations issue #4989\n\t\t\t// the tooltip should be the source of change\n\t\t\t// Animation check workaround:\n\t\t\t// tooltip._start will be null when tooltip isn't animating\n\t\t\tif (tooltip) {\n\t\t\t\tchanged = tooltip._start\n\t\t\t\t\t? tooltip.handleEvent(e)\n\t\t\t\t\t: changed | tooltip.handleEvent(e);\n\t\t\t}\n\n\t\t\tplugins.notify(me, 'afterEvent', [e]);\n\n\t\t\tvar bufferedRequest = me._bufferedRequest;\n\t\t\tif (bufferedRequest) {\n\t\t\t\t// If we have an update that was triggered, we need to do a normal render\n\t\t\t\tme.render(bufferedRequest);\n\t\t\t} else if (changed && !me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tme.stop();\n\n\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\tme.render({\n\t\t\t\t\tduration: me.options.hover.animationDuration,\n\t\t\t\t\tlazy: true\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme._bufferedRender = false;\n\t\t\tme._bufferedRequest = null;\n\n\t\t\treturn me;\n\t\t},\n\n\t\t/**\n\t\t * Handle an event\n\t\t * @private\n\t\t * @param {IEvent} event the event to handle\n\t\t * @return {Boolean} true if the chart needs to re-render\n\t\t */\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar changed = false;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions);\n\t\t\t}\n\n\t\t\t// Invoke onHover hook\n\t\t\t// Need to call with native event here to not break backwards compatibility\n\t\t\thelpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me);\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\t// Use e.native here for backwards compatibility\n\t\t\t\t\toptions.onClick.call(me, e.native, me.active);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\tchanged = !helpers.arrayEquals(me.active, me.lastActive);\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\n\t\t\treturn changed;\n\t\t}\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart instead.\n\t * @class Chart.Controller\n\t * @deprecated since version 2.6.0\n\t * @todo remove at version 3\n\t * @private\n\t */\n\tChart.Controller = Chart;\n};\n","/* MIT license */\nvar convert = require('color-convert');\nvar string = require('chartjs-color-string');\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 = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.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 string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.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] = convert[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\nmodule.exports = Color;\n","'use strict';\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isPageLoading)?_c('LoadSpinner'):[_c('div',{staticClass:\"title text-xs-center ma-3\"},[_vm._v(\"\\n \"+_vm._s(_vm.question.inquiry)+\"\\n \")]),(_vm.$props.questionId)?_c('div',{staticClass:\"subheading text-xs-center mb-3\"},[_vm._v(\"\\n \"+_vm._s(_vm.question.timeAsked)+\"\\n \")]):_vm._e(),(!_vm.votes.length)?_c('WarningAlert'):_vm._e(),(_vm.voteLabels.length && _vm.voteValues.length)?_c('ResultGraph',{attrs:{\"values\":_vm.voteValues,\"labels\":_vm.voteLabels}}):_vm._e(),_vm._l((_vm.voteComments),function(voteComment){return [_c('VCard',{key:voteComment.id,staticClass:\"elevation-4 ma-3\"},[_c('VCardTitle',{staticClass:\"font-weight-light font-italic\"},[_vm._v(\"\\n Vote for \"+_vm._s(voteComment.voteOptionName)+\"\\n \")]),_c('VCardText',{staticClass:\"body-1 text-xs-center\"},[_vm._v(\"\\n \"+_vm._s(voteComment.comment)+\"\\n \")]),_c('VCardActions',[_c('VListTile',{staticClass:\"grow\"},[_c('VLayout',{attrs:{\"align-center\":\"\",\"justify-end\":\"\"}},[_c('div',{staticClass:\"like-button\",on:{\"click\":function($event){return _vm.likeCommentToggle(voteComment)}}},[_c('VIcon',{class:{ 'red--text': voteComment.currentUserLike }},[_vm._v(\"\\n favorite\\n \")]),_c('span',{staticClass:\"grey--text ml-1\"},[_vm._v(\"\\n \"+_vm._s(voteComment.likeCount)+\"\\n \")])],1)])],1)],1)],1)]})]],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function dataHandler(newData, oldData) {\n if (oldData) {\n var chart = this.$data._chart;\n var newDatasetLabels = newData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldDatasetLabels = oldData.datasets.map(function (dataset) {\n return dataset.label;\n });\n var oldLabels = JSON.stringify(oldDatasetLabels);\n var newLabels = JSON.stringify(newDatasetLabels);\n\n if (newLabels === oldLabels && oldData.datasets.length === newData.datasets.length) {\n newData.datasets.forEach(function (dataset, i) {\n var oldDatasetKeys = Object.keys(oldData.datasets[i]);\n var newDatasetKeys = Object.keys(dataset);\n var deletionKeys = oldDatasetKeys.filter(function (key) {\n return key !== '_meta' && newDatasetKeys.indexOf(key) === -1;\n });\n deletionKeys.forEach(function (deletionKey) {\n delete chart.data.datasets[i][deletionKey];\n });\n\n for (var attribute in dataset) {\n if (dataset.hasOwnProperty(attribute)) {\n chart.data.datasets[i][attribute] = dataset[attribute];\n }\n }\n });\n\n if (newData.hasOwnProperty('labels')) {\n chart.data.labels = newData.labels;\n this.$emit('labels:update');\n }\n\n if (newData.hasOwnProperty('xLabels')) {\n chart.data.xLabels = newData.xLabels;\n this.$emit('xlabels:update');\n }\n\n if (newData.hasOwnProperty('yLabels')) {\n chart.data.yLabels = newData.yLabels;\n this.$emit('ylabels:update');\n }\n\n chart.update();\n this.$emit('chart:update');\n } else {\n if (chart) {\n chart.destroy();\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n } else {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n\n this.$emit('chart:destroy');\n }\n\n this.renderChart(this.chartData, this.options);\n this.$emit('chart:render');\n }\n}\n\nexport var reactiveData = {\n data: function data() {\n return {\n chartData: null\n };\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport var reactiveProp = {\n props: {\n chartData: {\n required: true\n }\n },\n watch: {\n 'chartData': dataHandler\n }\n};\nexport default {\n reactiveData: reactiveData,\n reactiveProp: reactiveProp\n};","import Chart from 'chart.js';\nexport function generateChart(chartId, chartType) {\n return {\n render: function render(createElement) {\n return createElement('div', {\n style: this.styles,\n class: this.cssClasses\n }, [createElement('canvas', {\n attrs: {\n id: this.chartId,\n width: this.width,\n height: this.height\n },\n ref: 'canvas'\n })]);\n },\n props: {\n chartId: {\n default: chartId,\n type: String\n },\n width: {\n default: 400,\n type: Number\n },\n height: {\n default: 400,\n type: Number\n },\n cssClasses: {\n type: String,\n default: ''\n },\n styles: {\n type: Object\n },\n plugins: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n _chart: null,\n _plugins: this.plugins\n };\n },\n methods: {\n addPlugin: function addPlugin(plugin) {\n this.$data._plugins.push(plugin);\n },\n generateLegend: function generateLegend() {\n if (this.$data._chart) {\n return this.$data._chart.generateLegend();\n }\n },\n renderChart: function renderChart(data, options) {\n if (this.$data._chart) this.$data._chart.destroy();\n this.$data._chart = new Chart(this.$refs.canvas.getContext('2d'), {\n type: chartType,\n data: data,\n options: options,\n plugins: this.$data._plugins\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$data._chart) {\n this.$data._chart.destroy();\n }\n }\n };\n}\nexport var Bar = generateChart('bar-chart', 'bar');\nexport var HorizontalBar = generateChart('horizontalbar-chart', 'horizontalBar');\nexport var Doughnut = generateChart('doughnut-chart', 'doughnut');\nexport var Line = generateChart('line-chart', 'line');\nexport var Pie = generateChart('pie-chart', 'pie');\nexport var PolarArea = generateChart('polar-chart', 'polarArea');\nexport var Radar = generateChart('radar-chart', 'radar');\nexport var Bubble = generateChart('bubble-chart', 'bubble');\nexport var Scatter = generateChart('scatter-chart', 'scatter');\nexport default {\n Bar: Bar,\n HorizontalBar: HorizontalBar,\n Doughnut: Doughnut,\n Line: Line,\n Pie: Pie,\n PolarArea: PolarArea,\n Radar: Radar,\n Bubble: Bubble,\n Scatter: Scatter\n};","var render, staticRenderFns\nimport script from \"./ResultGraph.vue?vue&type=script&lang=js&\"\nexport * from \"./ResultGraph.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"ResultGraph.vue\"\nexport default component.exports","\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultGraph.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResultGraph.vue?vue&type=script&lang=js&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VLayout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('VFlex',{attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md4\":\"\"}},[_c('VAlert',{staticClass:\"mx-3 text-xs-center\",attrs:{\"value\":true,\"color\":\"warning\",\"icon\":\"priority_high\"}},[_vm._v(\"\\n Uh oh! Looks like something may be jacked.\\n \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningAlert.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WarningAlert.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./WarningAlert.vue?vue&type=template&id=39fdedc1&scoped=true&\"\nimport script from \"./WarningAlert.vue?vue&type=script&lang=js&\"\nexport * from \"./WarningAlert.vue?vue&type=script&lang=js&\"\nimport style0 from \"./WarningAlert.vue?vue&type=style&index=0&id=39fdedc1&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"39fdedc1\",\n null\n \n)\n\ncomponent.options.__file = \"WarningAlert.vue\"\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VAlert } from 'vuetify/lib'\nimport { VFlex } from 'vuetify/lib'\nimport { VLayout } from 'vuetify/lib'\ninstallComponents(component, {\n VAlert,\n VFlex,\n VLayout,\n})\n","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Result.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/babel-loader/lib/index.js!../../node_modules/vuetify-loader/lib/loader.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Result.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Result.vue?vue&type=template&id=c18cff34&\"\nimport script from \"./Result.vue?vue&type=script&lang=js&\"\nexport * from \"./Result.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Result.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"Result.vue\"\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VCard } from 'vuetify/lib'\nimport { VCardActions } from 'vuetify/lib'\nimport { VCardText } from 'vuetify/lib'\nimport { VCardTitle } from 'vuetify/lib'\nimport { VIcon } from 'vuetify/lib'\nimport { VLayout } from 'vuetify/lib'\nimport { VListTile } from 'vuetify/lib'\ninstallComponents(component, {\n VCard,\n VCardActions,\n VCardText,\n VCardTitle,\n VIcon,\n VLayout,\n VListTile,\n})\n","'use strict';\n\nvar Scale = require('../core/core.scale');\nvar scaleService = require('../core/core.scaleService');\n\nmodule.exports = function() {\n\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: 'bottom'\n\t};\n\n\tvar DatasetScale = Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = labels.indexOf(me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar data = me.chart.data;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (data.yLabels && !isHorizontal) {\n\t\t\t\treturn me.getRightValue(data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\t\t\treturn me.ticks[index - me.minIndex];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1);\n\n\t\t\t// If value is a data object, then index is the index in the data array,\n\t\t\t// not the index of the scale. We need to change that.\n\t\t\tvar valueCategory;\n\t\t\tif (value !== undefined && value !== null) {\n\t\t\t\tvalueCategory = me.isHorizontal() ? value.x : value.y;\n\t\t\t}\n\t\t\tif (valueCategory !== undefined || (value !== undefined && isNaN(index))) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvalue = valueCategory || value;\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar valueWidth = me.width / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex));\n\n\t\t\t\tif (offset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t}\n\t\t\tvar valueHeight = me.height / offsetAmt;\n\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex));\n\n\t\t\tif (offset) {\n\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t}\n\n\t\t\treturn me.top + Math.round(heightOffset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar offset = me.options.offset;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar valueDimension = (horz ? me.width : me.height) / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (offset) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value + me.minIndex;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('category', DatasetScale, defaultConfig);\n};\n","'use strict';\n\nvar defaults = require('../core/core.defaults');\nvar helpers = require('../helpers/index');\nvar scaleService = require('../core/core.scaleService');\nvar Ticks = require('../core/core.ticks');\n\nmodule.exports = function(Chart) {\n\n\tvar globalDefaults = defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t// Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tposition: 'chartArea',\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: 'rgba(0, 0, 0, 0.1)',\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\tgridLines: {\n\t\t\tcircular: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t// Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t// String - The colour of the label backdrop\n\t\t\tbackdropColor: 'rgba(255,255,255,0.75)',\n\n\t\t\t// Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t// Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2,\n\n\t\t\tcallback: Ticks.formatters.linear\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t// Boolean - if true, show point labels\n\t\t\tdisplay: true,\n\n\t\t\t// Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t// Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tfunction getValueCount(scale) {\n\t\tvar opts = scale.options;\n\t\treturn opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0;\n\t}\n\n\tfunction getPointLabelFontOptions(scale) {\n\t\tvar pointLabelOptions = scale.options.pointLabels;\n\t\tvar fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize);\n\t\tvar fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle);\n\t\tvar fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily);\n\t\tvar font = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\treturn {\n\t\t\tsize: fontSize,\n\t\t\tstyle: fontStyle,\n\t\t\tfamily: fontFamily,\n\t\t\tfont: font\n\t\t};\n\t}\n\n\tfunction measureLabelSize(ctx, fontSize, label) {\n\t\tif (helpers.isArray(label)) {\n\t\t\treturn {\n\t\t\t\tw: helpers.longestText(ctx, ctx.font, label),\n\t\t\t\th: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize)\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tw: ctx.measureText(label).width,\n\t\t\th: fontSize\n\t\t};\n\t}\n\n\tfunction determineLimits(angle, pos, size, min, max) {\n\t\tif (angle === min || angle === max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - (size / 2),\n\t\t\t\tend: pos + (size / 2)\n\t\t\t};\n\t\t} else if (angle < min || angle > max) {\n\t\t\treturn {\n\t\t\t\tstart: pos - size - 5,\n\t\t\t\tend: pos\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tstart: pos,\n\t\t\tend: pos + size + 5\n\t\t};\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with point labels\n\t */\n\tfunction fitWithPointLabels(scale) {\n\t\t/*\n\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t *\n\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t *\n\t\t * Solution:\n\t\t *\n\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t * at each index we check if the text overlaps.\n\t\t *\n\t\t * Where it does, we store that angle and that index.\n\t\t *\n\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t * from the shape radius to move the point inwards by that x.\n\t\t *\n\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t * along with labels.\n\t\t *\n\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t *\n\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t * and position it in the most space efficient manner\n\t\t *\n\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t */\n\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tvar furthestLimits = {\n\t\t\tr: scale.width,\n\t\t\tl: 0,\n\t\t\tt: scale.height,\n\t\t\tb: 0\n\t\t};\n\t\tvar furthestAngles = {};\n\t\tvar i, textSize, pointPosition;\n\n\t\tscale.ctx.font = plFont.font;\n\t\tscale._pointLabelSizes = [];\n\n\t\tvar valueCount = getValueCount(scale);\n\t\tfor (i = 0; i < valueCount; i++) {\n\t\t\tpointPosition = scale.getPointPosition(i, largestPossibleRadius);\n\t\t\ttextSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || '');\n\t\t\tscale._pointLabelSizes[i] = textSize;\n\n\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\tvar angle = helpers.toDegrees(angleRadians) % 360;\n\t\t\tvar hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n\t\t\tvar vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n\n\t\t\tif (hLimits.start < furthestLimits.l) {\n\t\t\t\tfurthestLimits.l = hLimits.start;\n\t\t\t\tfurthestAngles.l = angleRadians;\n\t\t\t}\n\n\t\t\tif (hLimits.end > furthestLimits.r) {\n\t\t\t\tfurthestLimits.r = hLimits.end;\n\t\t\t\tfurthestAngles.r = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.start < furthestLimits.t) {\n\t\t\t\tfurthestLimits.t = vLimits.start;\n\t\t\t\tfurthestAngles.t = angleRadians;\n\t\t\t}\n\n\t\t\tif (vLimits.end > furthestLimits.b) {\n\t\t\t\tfurthestLimits.b = vLimits.end;\n\t\t\t\tfurthestAngles.b = angleRadians;\n\t\t\t}\n\t\t}\n\n\t\tscale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles);\n\t}\n\n\t/**\n\t * Helper function to fit a radial linear scale with no point labels\n\t */\n\tfunction fit(scale) {\n\t\tvar largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2);\n\t\tscale.drawingArea = Math.round(largestPossibleRadius);\n\t\tscale.setCenterPoint(0, 0, 0, 0);\n\t}\n\n\tfunction getTextAlignForAngle(angle) {\n\t\tif (angle === 0 || angle === 180) {\n\t\t\treturn 'center';\n\t\t} else if (angle < 180) {\n\t\t\treturn 'left';\n\t\t}\n\n\t\treturn 'right';\n\t}\n\n\tfunction fillText(ctx, text, position, fontSize) {\n\t\tif (helpers.isArray(text)) {\n\t\t\tvar y = position.y;\n\t\t\tvar spacing = 1.5 * fontSize;\n\n\t\t\tfor (var i = 0; i < text.length; ++i) {\n\t\t\t\tctx.fillText(text[i], position.x, y);\n\t\t\t\ty += spacing;\n\t\t\t}\n\t\t} else {\n\t\t\tctx.fillText(text, position.x, position.y);\n\t\t}\n\t}\n\n\tfunction adjustPointPositionForLabelHeight(angle, textSize, position) {\n\t\tif (angle === 90 || angle === 270) {\n\t\t\tposition.y -= (textSize.h / 2);\n\t\t} else if (angle > 270 || angle < 90) {\n\t\t\tposition.y -= textSize.h;\n\t\t}\n\t}\n\n\tfunction drawPointLabels(scale) {\n\t\tvar ctx = scale.ctx;\n\t\tvar opts = scale.options;\n\t\tvar angleLineOpts = opts.angleLines;\n\t\tvar pointLabelOpts = opts.pointLabels;\n\n\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\tvar outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);\n\n\t\t// Point Label Font\n\t\tvar plFont = getPointLabelFontOptions(scale);\n\n\t\tctx.textBaseline = 'top';\n\n\t\tfor (var i = getValueCount(scale) - 1; i >= 0; i--) {\n\t\t\tif (angleLineOpts.display) {\n\t\t\t\tvar outerPosition = scale.getPointPosition(i, outerDistance);\n\t\t\t\tctx.beginPath();\n\t\t\t\tctx.moveTo(scale.xCenter, scale.yCenter);\n\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\tctx.stroke();\n\t\t\t\tctx.closePath();\n\t\t\t}\n\n\t\t\tif (pointLabelOpts.display) {\n\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\tvar pointLabelPosition = scale.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\tvar pointLabelFontColor = helpers.valueAtIndexOrDefault(pointLabelOpts.fontColor, i, globalDefaults.defaultFontColor);\n\t\t\t\tctx.font = plFont.font;\n\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\tvar angleRadians = scale.getIndexAngle(i);\n\t\t\t\tvar angle = helpers.toDegrees(angleRadians);\n\t\t\t\tctx.textAlign = getTextAlignForAngle(angle);\n\t\t\t\tadjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition);\n\t\t\t\tfillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction drawRadiusLine(scale, gridLineOpts, radius, index) {\n\t\tvar ctx = scale.ctx;\n\t\tctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\tctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\tif (scale.options.gridLines.circular) {\n\t\t\t// Draw circular arcs between the points\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t} else {\n\t\t\t// Draw straight lines connecting each index\n\t\t\tvar valueCount = getValueCount(scale);\n\n\t\t\tif (valueCount === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tvar pointPosition = scale.getPointPosition(0, radius);\n\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\n\t\t\tfor (var i = 1; i < valueCount; i++) {\n\t\t\t\tpointPosition = scale.getPointPosition(i, radius);\n\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t}\n\n\t\t\tctx.closePath();\n\t\t\tctx.stroke();\n\t\t}\n\t}\n\n\tfunction numberOrZero(param) {\n\t\treturn helpers.isNumber(param) ? param : 0;\n\t}\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar min = Number.POSITIVE_INFINITY;\n\t\t\tvar max = Number.NEGATIVE_INFINITY;\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmin = Math.min(value, min);\n\t\t\t\t\t\tmax = Math.max(value, max);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tme.min = (min === Number.POSITIVE_INFINITY ? 0 : min);\n\t\t\tme.max = (max === Number.NEGATIVE_INFINITY ? 0 : max);\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\tif (this.options.pointLabels.display) {\n\t\t\t\tfitWithPointLabels(this);\n\t\t\t} else {\n\t\t\t\tfit(this);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Set radius reductions and determine new radius and center point\n\t\t * @private\n\t\t */\n\t\tsetReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) {\n\t\t\tvar me = this;\n\t\t\tvar radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l);\n\t\t\tvar radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r);\n\t\t\tvar radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t);\n\t\t\tvar radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b);\n\n\t\t\tradiusReductionLeft = numberOrZero(radiusReductionLeft);\n\t\t\tradiusReductionRight = numberOrZero(radiusReductionRight);\n\t\t\tradiusReductionTop = numberOrZero(radiusReductionTop);\n\t\t\tradiusReductionBottom = numberOrZero(radiusReductionBottom);\n\n\t\t\tme.drawingArea = Math.min(\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2),\n\t\t\t\tMath.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2));\n\t\t\tme.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea;\n\t\t\tvar maxLeft = leftMovement + me.drawingArea;\n\t\t\tvar maxTop = topMovement + me.drawingArea;\n\t\t\tvar maxBottom = me.height - bottomMovement - me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\tme.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / getValueCount(this);\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.ticks.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t}\n\t\t\treturn (value - me.min) * scalingFactor;\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index) - (Math.PI / 2);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero ? 0 :\n\t\t\t\tmin < 0 && max < 0 ? max :\n\t\t\t\tmin > 0 && max > 0 ? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar valueOrDefault = helpers.valueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\t\t\t\tvar startAngle = this.getIndexAngle(0);\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || tickOpts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tdrawRadiusLine(me, gridLineOpts, yCenterOffset, index);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tctx.save();\n\t\t\t\t\t\t\tctx.translate(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.rotate(startAngle);\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\t-labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\t-yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, 0, -yCenterOffset);\n\t\t\t\t\t\t\tctx.restore();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (opts.angleLines.display || opts.pointLabels.display) {\n\t\t\t\t\tdrawPointLabels(me);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\tscaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig);\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n"],"sourceRoot":""}