{"version":3,"sources":["webpack:///./node_modules/chart.js/dist/Chart.js"],"names":["module","exports","moment","hasOwnProperty","colorName","conversions","fn","createCommonjsModule","reverseKeywords","key","convert","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","Error","length","Object","defineProperty","value","h","l","r","g","b","min","Math","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","val","i","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","args","arguments","round","ansi","color","mult","rem","string","toString","toUpperCase","substring","match","colorString","split","map","char","join","integer","parseInt","hue","chroma","mg","pure","w","deriveBFS","fromModel","graph","models","keys","len","parent","buildGraph","queue","current","pop","adjacents","adjacent","node","unshift","link","from","to","wrapConversion","toModel","path","cur","conversion","forEach","routes","route","wrappedFn","Array","prototype","slice","call","result","wrapRounded","raw","wrapRaw","colorConvert","colorName$1","getRgba","getHsla","getRgb","rgba","getHsl","hsla","getHwb","getAlpha","vals","hexString","undefined","hexDouble","rgbString","alpha","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","hexAlpha","parseFloat","scale","isNaN","num","str","name","Color","obj","this","valid","values","setValues","red","lightness","whiteness","cyan","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","setChannel","green","blue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","dark","light","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","w1","w2","toJSON","clone","type","source","target","prop","console","error","spaces","maxes","getValues","space","charAt","capped","chans","sname","index","svalues","window","id","chartjsColor","helpers","noop","uid","isNullOrUndef","isArray","substr","isObject","isFinite","Number","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","apply","each","loopable","reverse","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","assign","dst","src","inherits","extensions","me","ChartElement","constructor","Surrogate","__super__","_deprecated","scope","previous","warn","helpers_core","callCallback","indexOf","array","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","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","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","size","cornerRadius","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","fill","stroke","_isPointInArea","point","area","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","global","fontSize","font","family","fontFamily","lineHeight","fontStyle","toFontString","resolve","inputs","context","info","cacheable","exports$2","_factorize","push","sort","log10","exponent","log","LOG10E","powerOf10","helpers_math","helpers$1","easing","canvas","math","rtl","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","_itemWidth","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","ease","start","view","actual","origin","c0","c1","interpolate","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","get","set","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","Date","now","animating","requestAnimationFrame","cancelAnimation","findIndex","splice","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","data","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","_update","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","configurable","enumerable","method","base","res","object","resyncElements","_configure","_config","_cachedDataOpts","update","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","freeze","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawBorder","vm","inner","borderAlign","lineWidth","lineJoin","fullCircles","drawFullCircleBorders","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","swap","orig","v2","parseBorderWidth","maxW","maxH","edge","borderSkipped","horizontal","parseBorderSkipped","skipX","skipY","bounds","rectangle","element_rectangle","rects","border","outer","boundingRects","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","curr","pixels","_length","getTicks","getPixelForTick","computeMinSampleSize","categoryPercentage","barPercentage","chunk","mode","offset","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","label","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","end","_endPixel","imeta","ivalue","stackLength","_parseValue","range","next","percent","computeFlexCategoryTraits","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","position","tooltips","callbacks","title","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","list","document","createElement","setAttribute","appendChild","createTextNode","outerHTML","legend","generateLabels","controller","text","onClick","e","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","j","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","pos","sortByWeight","getCombinedMax","maxPadding","updateDims","params","layout","newWidth","newHeight","box","getPadding","boxPadding","outerWidth","outerHeight","getMargins","marginForPositions","positions","margin","fitBoxes","boxes","refit","changed","refitBoxes","fullWidth","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","availableWidth","availableHeight","layoutBoxes","wrapBoxes","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","setLayoutDims","updatePos","change","handleMaxPadding","stylesheet","__proto__","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","eventListenerOptions","supports","addEventListener","passive","addListener","removeListener","removeEventListener","createEvent","nativeEvent","createDiv","cls","el","className","addResizeListener","ticking","expando","resizer","CSS_PREFIX","expand","CSS_SIZE_MONITOR","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","createResizer","container","maintainAspectRatio","parentNode","clientWidth","proxy","renderProxy","animationName","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","root","getRootNode","rootNode","css","containsStyles","injectCSS","host","acquireContext","getElementById","getContext","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","initCanvas","releaseContext","removeAttribute","proxies","event","fromNativeEvent","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","String","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","indexScale","valueScale","existingModel","active","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","getLabelForIndex","itemSort","body","dataPoints","tooltip","combinedBodyLength","reduce","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","rf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","initConfig","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","abstract","DateAdapter","Controller","types","configMerge","scaleMerge","formats","parse","format","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","caches","tickFont","nestedLabel","widest","highest","widths","heights","offsets","major","minor","gc","valueAt","gcLen","garbageCollect","first","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","filtered","spacing","majorStart","majorEnd","tick","ceil","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","paddingLeft","paddingTop","paddingRight","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","arr","numItems","increment","sample","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","toDegrees","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","factors","factor","evenMajorSpacing","getEvenSpacing","calculateSpacing","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","sign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","precision","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","unit","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","generateTicks","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","getOrCreateStack","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","exp","significand","tickVal","endExp","endSignificand","lastTick","generateTicks$1","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","textSize","numberOrZero","param","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawPointLabels","drawRadiusLine","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","getMin","time","getMax","interpolate$1","table","skey","tkey","mid","i0","i1","lo","lookup","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","ticksFromTimestamps","majorUnit","setMajorTicks","scale_time","adapters","date","displayFormats","timestamp","labelsAdded","timestamps","dataLabels","hash","out","arrayUnique","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","weekday","isoWeekday","generate","_unit","determineUnitForFormatting","_majorUnit","determineMajorUnit","buildLookupTable","_offsets","computeOffsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","displayFormat","category","radialLinear","FORMATS","_id","valueOf","amount","filler","propagate","mappers","boundary","decodeFill","computeBoundary","cx","cy","computeCircularBoundary","scaleBottom","scaleTop","scaleZero","computeLinearBoundary","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","loop","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","alignmentOffset","dimension","blockSize","itemHeight","textWidth","realX","SQRT2","drawLegendBox","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","epsilon","rounded","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","thing","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","core_helpers","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","toLowerCase","factory"],"mappings":"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","file":"js/app~46fbf940.cb2a21ff.js","sourcesContent":["/*!\n * Chart.js v2.9.3\n * https://www.chartjs.org\n * (c) 2019 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\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 (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\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 true if `value` is a finite number, else returns false\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\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 https://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): also used by mergeConfig and mergeScaleConfig 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|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|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: Object.assign || function(target) {\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, dst, src) {\n\t\t\t\tdst[key] = src[key];\n\t\t\t}\n\t\t});\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\t_deprecated: function(scope, value, previous, current) {\n\t\tif (value !== undefined) {\n\t\t\tconsole.warn(scope + ': \"' + previous +\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n\t\t}\n\t}\n};\n\nvar helpers_core = 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\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\nvar helpers_easing = {\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_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\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\tvar r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\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, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\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.save();\n\t\t\t\tctx.translate(x, y);\n\t\t\t\tctx.rotate(rad);\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n\t\t\t\tctx.restore();\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.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\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\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== '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\nvar helpers_canvas = exports$1;\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_core.clear = exports$1.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_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n// TODO(v3): remove 'global' from namespace. all default are global and\n// there's inconsistency around which options are under 'global'\ndefaults._set('global', {\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\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\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\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_core.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 * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\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 * @param {object} [info] - object to return information about resolution in\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index, info) {\n\t\tvar cacheable = true;\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\tcacheable = false;\n\t\t\t}\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (info && !cacheable) {\n\t\t\t\t\tinfo.cacheable = false;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nvar exports$2 = {\n\t/**\n\t * Returns an array of factors sorted from 1 to sqrt(value)\n\t * @private\n\t */\n\t_factorize: function(value) {\n\t\tvar result = [];\n\t\tvar sqrt = Math.sqrt(value);\n\t\tvar i;\n\n\t\tfor (i = 1; i < sqrt; i++) {\n\t\t\tif (value % i === 0) {\n\t\t\t\tresult.push(i);\n\t\t\t\tresult.push(value / i);\n\t\t\t}\n\t\t}\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\n\t\t\tresult.push(sqrt);\n\t\t}\n\n\t\tresult.sort(function(a, b) {\n\t\t\treturn a - b;\n\t\t}).pop();\n\t\treturn result;\n\t},\n\n\tlog10: Math.log10 || function(x) {\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t// Check for whole powers of 10,\n\t\t// which due to floating point rounding error should be corrected.\n\t\tvar powerOf10 = Math.round(exponent);\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t}\n};\n\nvar helpers_math = exports$2;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n * @namespace Chart.helpers.log10\n * @deprecated since version 2.9.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn rectX + rectX + width - x;\n\t\t},\n\t\tsetWidth: function(w) {\n\t\t\twidth = w;\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\tif (align === 'center') {\n\t\t\t\treturn align;\n\t\t\t}\n\t\t\treturn align === 'right' ? 'left' : 'right';\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x - value;\n\t\t},\n\t\tleftForLtr: function(x, itemWidth) {\n\t\t\treturn x - itemWidth;\n\t\t},\n\t};\n};\n\nvar getLtrAdapter = function() {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn x;\n\t\t},\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\treturn align;\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x + value;\n\t\t},\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\n\t\t\treturn x;\n\t\t},\n\t};\n};\n\nvar getAdapter = function(rtl, rectX, width) {\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n};\n\nvar overrideTextDirection = function(ctx, direction) {\n\tvar style, original;\n\tif (direction === 'ltr' || direction === 'rtl') {\n\t\tstyle = ctx.canvas.style;\n\t\toriginal = [\n\t\t\tstyle.getPropertyValue('direction'),\n\t\t\tstyle.getPropertyPriority('direction'),\n\t\t];\n\n\t\tstyle.setProperty('direction', direction, 'important');\n\t\tctx.prevTextDirection = original;\n\t}\n};\n\nvar restoreTextDirection = function(ctx) {\n\tvar original = ctx.prevTextDirection;\n\tif (original !== undefined) {\n\t\tdelete ctx.prevTextDirection;\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\n\t}\n};\n\nvar helpers_rtl = {\n\tgetRtlAdapter: getAdapter,\n\toverrideTextDirection: overrideTextDirection,\n\trestoreTextDirection: restoreTextDirection,\n};\n\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nvar math = helpers_math;\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\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 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(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 (helpers$1.isFinite(origin) && helpers$1.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$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.extend(Element.prototype, {\n\t_type: undefined,\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$1.extend({}, 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 = helpers$1.extend({}, 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$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$3 = core_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\nvar core_animation = exports$3;\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$3.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$3.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\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\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\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\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$1.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$1.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\n\t\tme.advance();\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() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.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\nvar resolve = helpers$1.options.resolve;\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\t/**\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth'\n\t],\n\n\t/**\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'pointStyle'\n\t],\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t\tme._type = me.getMeta().type;\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar chart = me.chart;\n\t\tvar scales = chart.scales;\n\t\tvar dataset = me.getDataset();\n\t\tvar scalesOpts = chart.options.scales;\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis._update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\t/**\n\t * Returns the merged user-supplied and default dataset-level options\n\t * @private\n\t */\n\t_configure: function() {\n\t\tvar me = this;\n\t\tme._config = helpers$1.merge({}, [\n\t\t\tme.chart.options.datasets[me._type],\n\t\t\tme.getDataset(),\n\t\t], {\n\t\t\tmerger: function(key, target, source) {\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\n\t\t\t\t\thelpers$1._merger(key, target, source);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_update: function(reset) {\n\t\tvar me = this;\n\t\tme._configure();\n\t\tme._cachedDataOpts = null;\n\t\tme.update(reset);\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\t/**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @return {IStyleInterface} style object\n\t */\n\tgetStyle: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = meta.dataset;\n\t\tvar style;\n\n\t\tme._configure();\n\t\tif (dataset && index === undefined) {\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\n\t\t} else {\n\t\t\tindex = index || 0;\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\n\t\t}\n\n\t\tif (style.fill === false || style.fill === null) {\n\t\t\tstyle.backgroundColor = style.borderColor;\n\t\t}\n\n\t\treturn style;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element, hover) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n\t\tvar elementOptions = me._datasetElementOptions;\n\t\tvar values = {};\n\t\tvar i, ilen, key, readKey;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index,\n\t\t\thover: hover\n\t\t};\n\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\tkey = elementOptions[i];\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n\t\t\tvalues[key] = resolve([\n\t\t\t\tcustom[readKey],\n\t\t\t\tdatasetOpts[readKey],\n\t\t\t\toptions[readKey]\n\t\t\t], context);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar custom = element && element.custom;\n\t\tvar cached = me._cachedDataOpts;\n\t\tif (cached && !custom) {\n\t\t\treturn cached;\n\t\t}\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\n\t\tvar elementOptions = me._dataElementOptions;\n\t\tvar values = {};\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\n\t\tvar info = {cacheable: !custom};\n\n\t\tvar keys, i, ilen, key;\n\n\t\tcustom = custom || {};\n\n\t\tif (helpers$1.isArray(elementOptions)) {\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\t\tkey = elementOptions[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t} else {\n\t\t\tkeys = Object.keys(elementOptions);\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\tdatasetOpts[elementOptions[key]],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t}\n\n\t\tif (info.cacheable) {\n\t\t\tme._cachedDataOpts = Object.freeze(values);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_removeDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\n\t\tif (element) {\n\t\t\tthis.removeHoverStyle(element);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_setDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\t\tvar prev = {};\n\t\tvar i, ilen, key, keys, hoverOptions, model;\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel = element._model;\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\n\n\t\tkeys = Object.keys(hoverOptions);\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tprev[key] = model[key];\n\t\t\tmodel[key] = hoverOptions[key];\n\t\t}\n\n\t\telement.$previousStyle = prev;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nfunction clipArc(ctx, arc) {\n\tvar startAngle = arc.startAngle;\n\tvar endAngle = arc.endAngle;\n\tvar pixelMargin = arc.pixelMargin;\n\tvar angleMargin = pixelMargin / arc.outerRadius;\n\tvar x = arc.x;\n\tvar y = arc.y;\n\n\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\tctx.beginPath();\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\tif (arc.innerRadius > pixelMargin) {\n\t\tangleMargin = pixelMargin / arc.innerRadius;\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n\t} else {\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n\t}\n\tctx.closePath();\n\tctx.clip();\n}\n\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\n\tvar endAngle = arc.endAngle;\n\tvar i;\n\n\tif (inner) {\n\t\tarc.endAngle = arc.startAngle + TAU;\n\t\tclipArc(ctx, arc);\n\t\tarc.endAngle = endAngle;\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\n\t\t\tarc.endAngle += TAU;\n\t\t\tarc.fullCircles--;\n\t\t}\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n}\n\nfunction drawBorder(ctx, vm, arc) {\n\tvar inner = vm.borderAlign === 'inner';\n\n\tif (inner) {\n\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\tctx.lineJoin = 'round';\n\t} else {\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tctx.lineJoin = 'bevel';\n\t}\n\n\tif (arc.fullCircles) {\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\n\t}\n\n\tif (inner) {\n\t\tclipArc(ctx, arc);\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\tctx.closePath();\n\tctx.stroke();\n}\n\nvar element_arc = core_element.extend({\n\t_type: 'arc',\n\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$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar angle = 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 += TAU;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= TAU;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += TAU;\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 pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar arc = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tinnerRadius: vm.innerRadius,\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n\t\t\tpixelMargin: pixelMargin,\n\t\t\tstartAngle: vm.startAngle,\n\t\t\tendAngle: vm.endAngle,\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\n\t\t};\n\t\tvar i;\n\n\t\tctx.save();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\n\t\tif (arc.fullCircles) {\n\t\t\tarc.endAngle = arc.startAngle + TAU;\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\t\tctx.closePath();\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tdrawBorder(ctx, vm, arc);\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: 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\nvar element_line = core_element.extend({\n\t_type: 'line',\n\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 globalDefaults = core_defaults.global;\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar closePath = me._loop;\n\t\tvar index, previous, currentVM;\n\n\t\tif (!points.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (me._loop) {\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\n\t\t\t\t// If the line has an open path, shift the point array\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\n\t\t\t\t\tclosePath = spanGaps;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the line has a close path, add the first point again\n\t\t\tif (closePath) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\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 = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\n\t\t// First point moves to it's starting position no matter what\n\t\tcurrentVM = points[0]._view;\n\t\tif (!currentVM.skip) {\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\tlastDrawnIndex = 0;\n\t\t}\n\n\t\tfor (index = 1; index < points.length; ++index) {\n\t\t\tcurrentVM = points[index]._view;\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n\t\t\tif (!currentVM.skip) {\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t} else {\n\t\t\t\t\t// Line to next point\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n\t\t\t\t}\n\t\t\t\tlastDrawnIndex = index;\n\t\t\t}\n\t\t}\n\n\t\tif (closePath) {\n\t\t\tctx.closePath();\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\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\nvar element_point = core_element.extend({\n\t_type: 'point',\n\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 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 globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\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 || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.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(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = 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 - half;\n\t\ty2 = vm.y + half;\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\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\t_type: 'rectangle',\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\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\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\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\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - 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\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\toffset: true,\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\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tbar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\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._length;\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, Math.abs(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 min = helpers$1.isNullOrUndef(thickness)\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\n\t\t: -1;\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = 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 size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : 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 - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(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\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderSkipped',\n\t\t'borderWidth',\n\t\t'barPercentage',\n\t\t'barThickness',\n\t\t'categoryPercentage',\n\t\t'maxBarThickness',\n\t\t'minBarLength'\n\t],\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta, scaleOpts;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\n\t\tscaleOpts = me._getIndexScale().options;\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tif (helpers$1.isArray(dataset.data[index])) {\n\t\t\trectangle._model.borderSkipped = null;\n\t\t}\n\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = metasets.length;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = metasets[i];\n\t\t\t// stacked | meta.stack\n\t\t\t// | found | not found | undefined\n\t\t\t// false | x | x | x\n\t\t\t// true | | x |\n\t\t\t// undefined | | x | x\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t\tif (meta.index === last) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar pixels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\n\t\t}\n\n\t\treturn {\n\t\t\tpixels: pixels,\n\t\t\tstart: scale._startPixel,\n\t\t\tend: scale._endPixel,\n\t\t\tstackCount: me.getStackCount(),\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = me.getMeta().stack;\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n\t\tvar ilen = metasets.length;\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\timeta = metasets[i];\n\n\t\t\t\tif (imeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (imeta.stack === stack) {\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + length);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\n\t\tvar me = this;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function() {\n\t\tvar me = this;\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\t\tvar indexOpts = me._getIndexScale().options;\n\t\tvar valueOpts = me._getValueScale().options;\n\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n\n\t\treturn values;\n\t}\n\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._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\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t\t'hoverRadius',\n\t\t'hitRadius',\n\t\t'pointStyle',\n\t\t'rotation'\n\t],\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = point.custom || {};\n\t\tvar data = dataset.data[index] || {};\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// In case values were cached (and thus frozen), we need to clone the values\n\t\tif (me._cachedDataOpts === values) {\n\t\t\tvalues = helpers$1.extend({}, values);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$1([\n\t\t\tcustom.radius,\n\t\t\tdata.r,\n\t\t\tme._config.radius,\n\t\t\tchart.options.elements.point.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\n\nvar PI$1 = Math.PI;\nvar DOUBLE_PI$1 = PI$1 * 2;\nvar HALF_PI$1 = PI$1 / 2;\n\ncore_defaults._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 list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\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 style = meta.controller.getStyle(i);\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: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].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: -HALF_PI$1,\n\n\t// The total circumference of the chart.\n\tcircumference: DOUBLE_PI$1,\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$1.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\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar ratioX = 1;\n\t\tvar ratioY = 1;\n\t\tvar offsetX = 0;\n\t\tvar offsetY = 0;\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar maxWidth, maxHeight, i, ilen;\n\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\t\tif (circumference < DOUBLE_PI$1) {\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar startX = Math.cos(startAngle);\n\t\t\tvar startY = Math.sin(startAngle);\n\t\t\tvar endX = Math.cos(endAngle);\n\t\t\tvar endY = Math.sin(endAngle);\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n\t\t\tratioX = (maxX - minX) / 2;\n\t\t\tratioY = (maxY - minY) / 2;\n\t\t\toffsetX = -(maxX + minX) / 2;\n\t\t\toffsetY = -(maxY + minY) / 2;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offsetX * chart.outerRadius;\n\t\tchart.offsetY = offsetY * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_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\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\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\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\tif (controller) {\n\t\t\t\tcontroller._configure();\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\n\t\t\t} else {\n\t\t\t\toptions = arc._options;\n\t\t\t}\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\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}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights. This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._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\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\toffset: true,\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\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\thorizontalBar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._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\nfunction scaleClip(scale, halfBorderWidth) {\n\tvar tickOpts = scale && scale.options.ticks || {};\n\tvar reverse = tickOpts.reverse;\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\n\treturn {\n\t\tstart: reverse ? max : min,\n\t\tend: reverse ? min : max\n\t};\n}\n\nfunction defaultClip(xScale, yScale, borderWidth) {\n\tvar halfBorderWidth = borderWidth / 2;\n\tvar x = scaleClip(xScale, halfBorderWidth);\n\tvar y = scaleClip(yScale, halfBorderWidth);\n\n\treturn {\n\t\ttop: y.end,\n\t\tright: x.end,\n\t\tbottom: y.start,\n\t\tleft: x.start\n\t};\n}\n\nfunction toClip(value) {\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = value.top;\n\t\tr = value.right;\n\t\tb = value.bottom;\n\t\tl = value.left;\n\t} else {\n\t\tt = r = b = l = value;\n\t}\n\n\treturn {\n\t\ttop: t,\n\t\tright: r,\n\t\tbottom: b,\n\t\tleft: l\n\t};\n}\n\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth',\n\t\t'cubicInterpolationMode',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar options = me.chart.options;\n\t\tvar config = me._config;\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n\t\tvar i, ilen;\n\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t// Update Line\n\t\tif (showLine) {\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\t\tconfig.lineTension = config.tension;\n\t\t\t}\n\n\t\t\t// Utility\n\t\t\tline._scale = me._yScale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar xScale = me._xScale;\n\t\tvar yScale = me._yScale;\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element) {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = me.chart.options;\n\t\tvar lineOptions = options.elements.line;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar yScale = me._yScale;\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n\t\tif (yScale.options.stacked) {\n\t\t\trightValue = +yScale.getRightValue(value);\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\n\t\t\tilen = metasets.length;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tdsMeta = metasets[i];\n\t\t\t\tif (dsMeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar canvas = chart.canvas;\n\t\tvar i = 0;\n\t\tvar ilen = points.length;\n\t\tvar clip;\n\n\t\tif (me._showLine) {\n\t\t\tclip = meta.dataset._model.clip;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$3 = helpers$1.options.resolve;\n\ncore_defaults._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 list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\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 style = meta.controller.getStyle(i);\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: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].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\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_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\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$3([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._set('radar', {\n\tspanGaps: false,\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\tfill: 'start',\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nvar controller_radar = core_datasetController.extend({\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderWidth',\n\t\t'borderColor',\n\t\t'borderCapStyle',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar config = me._config;\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\tconfig.lineTension = config.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function() {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar options = me.chart.options;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (meta.dataset._model.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._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\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\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tscatter: {\n\t\t\tshowLine: false\n\t\t}\n\t}\n});\n\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\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 {object} 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$1.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 {function} handler - the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\n\tvar metadata, i, j, ilen, jlen, element;\n\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\n\t\tmetadata = metasets[i].data;\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\n\t\t\telement = metadata[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 {ChartElement[]} items - elements to filter\n * @param {object} position - 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 {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - 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\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._getSortedVisibleDatasetMetas().forEach(function(meta) {\n\t\tvar element = meta.data[items[0]._index];\n\n\t\t// don't count items that are skipped (null data)\n\t\tif (element && !element._view.skip) {\n\t\t\telements.push(element);\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 */\nvar core_interaction = {\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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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 {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - 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\nvar extend = helpers$1.extend;\n\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.pos === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\treturn array.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.index - v1.index :\n\t\t\tv0.weight - v1.weight;\n\t});\n}\n\nfunction wrapBoxes(boxes) {\n\tvar layoutBoxes = [];\n\tvar i, ilen, box;\n\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n\t\tbox = boxes[i];\n\t\tlayoutBoxes.push({\n\t\t\tindex: i,\n\t\t\tbox: box,\n\t\t\tpos: box.position,\n\t\t\thorizontal: box.isHorizontal(),\n\t\t\tweight: box.weight\n\t\t});\n\t}\n\treturn layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n\tvar i, ilen, layout;\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\n\t\tlayout = layouts[i];\n\t\t// store width used instead of chartArea.w in fitBoxes\n\t\tlayout.width = layout.horizontal\n\t\t\t? layout.box.fullWidth && params.availableWidth\n\t\t\t: params.vBoxMaxWidth;\n\t\t// store height used instead of chartArea.h in fitBoxes\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\n\t}\n}\n\nfunction buildLayoutBoxes(boxes) {\n\tvar layoutBoxes = wrapBoxes(boxes);\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n\n\treturn {\n\t\tleftAndTop: left.concat(top),\n\t\trightAndBottom: right.concat(bottom),\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\n\t\tvertical: left.concat(right),\n\t\thorizontal: top.concat(bottom)\n\t};\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateDims(chartArea, params, layout) {\n\tvar box = layout.box;\n\tvar maxPadding = chartArea.maxPadding;\n\tvar newWidth, newHeight;\n\n\tif (layout.size) {\n\t\t// this layout was already counted for, lets first reduce old size\n\t\tchartArea[layout.pos] -= layout.size;\n\t}\n\tlayout.size = layout.horizontal ? box.height : box.width;\n\tchartArea[layout.pos] += layout.size;\n\n\tif (box.getPadding) {\n\t\tvar boxPadding = box.getPadding();\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n\t}\n\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n\t\tchartArea.w = newWidth;\n\t\tchartArea.h = newHeight;\n\n\t\t// return true if chart area changed in layout's direction\n\t\treturn layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n\t}\n}\n\nfunction handleMaxPadding(chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction updatePos(pos) {\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n\t\tchartArea[pos] += change;\n\t\treturn change;\n\t}\n\tchartArea.y += updatePos('top');\n\tchartArea.x += updatePos('left');\n\tupdatePos('right');\n\tupdatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction marginForPositions(positions) {\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\n\t\tpositions.forEach(function(pos) {\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n\t\t});\n\t\treturn margin;\n\t}\n\n\treturn horizontal\n\t\t? marginForPositions(['left', 'right'])\n\t\t: marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n\tvar refitBoxes = [];\n\tvar i, ilen, layout, box, refit, changed;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\n\t\tbox.update(\n\t\t\tlayout.width || chartArea.w,\n\t\t\tlayout.height || chartArea.h,\n\t\t\tgetMargins(layout.horizontal, chartArea)\n\t\t);\n\t\tif (updateDims(chartArea, params, layout)) {\n\t\t\tchanged = true;\n\t\t\tif (refitBoxes.length) {\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\n\t\t\t\t// -> we have to refit those\n\t\t\t\trefit = true;\n\t\t\t}\n\t\t}\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\n\t\t\trefitBoxes.push(layout);\n\t\t}\n\t}\n\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n\tvar userPadding = params.padding;\n\tvar x = chartArea.x;\n\tvar y = chartArea.y;\n\tvar i, ilen, layout, box;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\t\tif (layout.horizontal) {\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n\t\t\tbox.top = y;\n\t\t\tbox.bottom = y + box.height;\n\t\t\tbox.width = box.right - box.left;\n\t\t\ty = box.bottom;\n\t\t} else {\n\t\t\tbox.left = x;\n\t\t\tbox.right = x + box.width;\n\t\t\tbox.top = chartArea.top;\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\n\t\t\tbox.height = box.bottom - box.top;\n\t\t\tx = box.right;\n\t\t}\n\t}\n\n\tchartArea.x = x;\n\tchartArea.y = y;\n}\n\ncore_defaults._set('global', {\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\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.\nvar core_layouts = {\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\t\titem._layers = item._layers || function() {\n\t\t\treturn [{\n\t\t\t\tz: 0,\n\t\t\t\tdraw: function() {\n\t\t\t\t\titem.draw.apply(item, arguments);\n\t\t\t\t}\n\t\t\t}];\n\t\t};\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 {ILayoutItem} 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 {ILayoutItem} 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$1.options.toPadding(layoutOptions.padding);\n\n\t\tvar availableWidth = width - padding.width;\n\t\tvar availableHeight = height - padding.height;\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\n\t\tvar verticalBoxes = boxes.vertical;\n\t\tvar horizontalBoxes = boxes.horizontal;\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\n\t\tvar params = Object.freeze({\n\t\t\touterWidth: width,\n\t\t\touterHeight: height,\n\t\t\tpadding: padding,\n\t\t\tavailableWidth: availableWidth,\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n\t\t\thBoxMaxHeight: availableHeight / 2\n\t\t});\n\t\tvar chartArea = extend({\n\t\t\tmaxPadding: extend({}, padding),\n\t\t\tw: availableWidth,\n\t\t\th: availableHeight,\n\t\t\tx: padding.left,\n\t\t\ty: padding.top\n\t\t}, padding);\n\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n\t\t// First fit vertical boxes\n\t\tfitBoxes(verticalBoxes, chartArea, params);\n\n\t\t// Then fit horizontal boxes\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\n\t\t\t// if the area changed, re-fit vertical boxes\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\n\t\t}\n\n\t\thandleMaxPadding(chartArea);\n\n\t\t// Finally place the boxes to correct coordinates\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\n\n\t\t// Move to opposite side of chart\n\t\tchartArea.x += chartArea.w;\n\t\tchartArea.y += chartArea.h;\n\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\n\n\t\tchart.chartArea = {\n\t\t\tleft: chartArea.left,\n\t\t\ttop: chartArea.top,\n\t\t\tright: chartArea.left + chartArea.w,\n\t\t\tbottom: chartArea.top + chartArea.h\n\t\t};\n\n\t\t// Finally update boxes in chartArea (radial scale for example)\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\n\t\t\tvar box = layout.box;\n\t\t\textend(box, chart.chartArea);\n\t\t\tbox.update(chartArea.w, chartArea.h);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\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\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\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$1.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\t// eslint-disable-next-line getter-return\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 addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(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$1.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$1.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\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\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\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(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$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(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\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\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\n/**\n * Injects CSS styles inline if the styles are not already present.\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the