1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-20 00:11:35 +02:00
invoiceninja/public/js/Chart.min.js.map
2020-03-29 09:39:57 +03:00

1 line
539 KiB
Plaintext

{"version":3,"sources":["Chart.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","Chart","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length","1","2","getRgba","string","abbr","hex","rgba","per","keyword","rgb","match","parseInt","slice","parseFloat","Math","round","colorNames","scale","getHsla","hsl","alpha","h","isNaN","getHwb","hwb","w","b","getRgb","getHsl","hsla","getAlpha","vals","hexString","hexDouble","rgbString","rgbaString","undefined","percentString","percentaString","hslString","hslaString","hwbString","reverseNames","num","min","max","str","toString","toUpperCase","name","6","3","convert","Color","obj","values","hsv","cmyk","setValues","red","lightness","v","value","whiteness","c","cyan","JSON","stringify","prototype","setSpace","arguments","rgbArray","hslArray","hsvArray","hwbArray","concat","cmykArray","rgbaArray","hslaArray","val","setChannel","green","blue","hue","saturation","saturationv","blackness","magenta","yellow","black","rgbNumber","luminosity","lum","chan","pow","contrast","color2","lum1","lum2","level","contrastRatio","dark","yiq","light","negate","lighten","ratio","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","rotate","degrees","mix","mixinColor","weight","color1","p","w1","w2","toJSON","clone","type","result","source","target","prop","hasOwnProperty","console","error","spaces","maxes","getValues","space","charAt","chans","capped","sname","args","Array","index","svalues","5","4","rgb2hsl","delta","rgb2hsv","rgb2hwb","rgb2cmyk","m","y","k","rgb2keyword","reverseKeywords","rgb2xyz","x","z","rgb2lab","xyz","rgb2lch","lab2lch","hsl2rgb","t1","t2","t3","hsl2hsv","sv","hsl2hwb","hsl2cmyk","hsl2keyword","hsv2rgb","hi","floor","q","hsv2hsl","sl","hsv2hwb","hsv2cmyk","hsv2keyword","hwb2rgb","wh","bl","hwb2hsl","hwb2hsv","hwb2cmyk","hwb2keyword","cmyk2rgb","cmyk2hsl","cmyk2hsv","cmyk2hwb","cmyk2keyword","xyz2rgb","xyz2lab","xyz2lch","lab2xyz","lab","y2","hr","atan2","PI","sqrt","lab2rgb","lch2lab","lch","cos","sin","lch2xyz","lch2rgb","keyword2rgb","cssKeywords","keyword2hsl","keyword2hsv","keyword2hwb","keyword2cmyk","keyword2lab","keyword2xyz","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellowgreen","key","conversions","Converter","func","arg","pair","exec","from","to","convs","routeSpace","fspace","forEach","7","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","8","9","Bar","context","config","Bubble","Doughnut","Line","PolarArea","Radar","options","helpers","configMerge","aspectRatio","defaultConfig","hover","mode","scales","xAxes","position","id","yAxes","tooltips","callbacks","title","label","tooltipItem","xLabel","yLabel","defaults","scatter","controllers","line","Scatter","bar","categoryPercentage","barPercentage","gridLines","offsetGridLines","DatasetController","extend","dataElementType","elements","Rectangle","initialize","chart","datasetIndex","getMeta","getBarCount","me","barCount","each","data","datasets","dataset","meta","getDatasetMeta","isDatasetVisible","update","reset","rectangle","updateElement","xScale","getScaleForId","xAxisID","yScale","yAxisID","scaleBase","getBasePixel","rectangleElementOptions","custom","getDataset","_xScale","_yScale","_datasetIndex","_index","_model","calculateBarX","calculateBarY","labels","datasetLabel","base","calculateBarBase","width","calculateBarWidth","backgroundColor","getValueAtIndexOrDefault","borderSkipped","borderColor","borderWidth","pivot","stacked","Number","currentDs","currentDsMeta","currentVal","getPixelForValue","getRuler","tickWidth","datasetCount","getPixelForTick","ticks","categoryWidth","categorySpacing","fullBarWidth","perc","barWidth","barSpacing","barThickness","ruler","getBarIndex","j","barIndex","leftTick","isCombo","sumPos","sumNeg","ds","dsMeta","stackedVal","draw","ease","easingDecimal","d","transition","setHoverStyle","model","hoverBackgroundColor","getHoverColor","hoverBorderColor","hoverBorderWidth","removeHoverStyle","horizontalBar","tooltipItems","height","calculateBarHeight","cornerAt","corners","startCorner","ctx","_chart","vm","_view","halfHeight","topY","bottomY","right","halfStroke","beginPath","fillStyle","strokeStyle","lineWidth","borders","indexOf","moveTo","apply","lineTo","fill","stroke","inRange","mouseX","mouseY","tickHeight","categoryHeight","fullBarHeight","barHeight","topTick","bubble","dataPoint","Point","points","point","pointElementOptions","dsIndex","getPixelForDecimal","NaN","radius","getRadius","hitRadius","skip","hoverRadius","dataVal","doughnut","animation","animateRotate","animateScale","legendCallback","text","push","join","legend","generateLabels","map","arc","arcOpts","bw","hidden","onClick","legendItem","ilen","cutoutPercentage","rotation","circumference","pie","Arc","linkScales","noop","getRingIndex","ringIndex","chartArea","opts","availableWidth","left","availableHeight","bottom","top","minSize","offset","startAngle","endAngle","start","end","contains0","contains90","contains180","contains270","cutout","size","getMaxBorderWidth","outerRadius","innerRadius","radiusLength","getVisibleDatasetCount","offsetX","offsetY","total","calculateTotal","animationOpts","centerX","centerY","calculateCircumference","valueAtIndexOrDefault","element","abs","hoverWidth","lineEnabled","getValueOrDefault","showLine","showLines","spanGaps","datasetElementType","addElementAndReset","tension","updateBezierControlPoints","lineElementOptions","lineTension","_scale","_children","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","steppedLine","stepped","cubicInterpolationMode","scaleTop","scaleBottom","scaleZero","getPointBackgroundColor","pointBackgroundColor","getPointBorderColor","pointBorderColor","getPointBorderWidth","pointBorderWidth","pointOptions","includeOffset","pointRadius","pointHitRadius","calculatePointY","pointStyle","stackedRightValue","getRightValue","rightValue","capControlPoint","pt","area","filter","controlPoints","splineCurveMonotone","splineCurve","previousItem","nextItem","controlPointPreviousX","previous","controlPointPreviousY","controlPointNextX","next","controlPointNextY","capBezierPoints","pointHoverRadius","pointHoverBackgroundColor","pointHoverBorderColor","pointHoverBorderWidth","polarArea","lineArc","beginAtZero","count","countVisibleElements","xCenter","yCenter","visibleCount","datasetStartAngle","distance","getDistanceFromCenterForValue","resetRadius","radar","_loop","getBasePosition","pointPosition","getPointPositionForValue","duration","easing","onProgress","onComplete","Animation","Element","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","animationService","frameDuration","animations","dropFrames","request","addAnimation","chartInstance","animationObject","lazy","animating","requestAnimationFrame","cancelAnimation","findIndex","animationWrapper","splice","requestAnimFrame","startDigest","startTime","Date","now","framesToDrop","endTime","canvasHelpers","drawPoint","edgeLength","xOffset","yOffset","drawImage","closePath","SQRT2","fillRect","strokeRect","types","instances","Controller","instance","uid","Object","defineProperty","get","responsive","resize","plugins","notify","bindEvents","ensureScalesHaveIDs","buildOrUpdateControllers","buildScales","updateLayout","resetElements","initToolTip","clear","stop","silent","canvas","newWidth","getMaximumWidth","newHeight","maintainAspectRatio","isFinite","getMaximumHeight","sizeChanged","retinaScale","newSize","onResize","responsiveAnimationDuration","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","items","dtype","isDefault","item","scaleType","scaleClass","scaleService","getScaleConstructor","addScalesToLayout","layoutService","newControllers","controller","updateIndex","animationDuration","tooltip","_data","buildOrUpdateElements","updateDatasets","animationOptions","easingFunction","easingEffects","stepDecimal","easeDecimal","boxes","box","getElementAtEvent","eventPosition","getRelativePosition","elementsArray","getElementsAtEvent","found","getElementsAtXAxis","inLabelRange","it","getElementsAtEventForMode","getDatasetAtEvent","_meta","generateLegend","destroy","unbindEvents","events","removeResizeListener","parentNode","originalDevicePixelRatio","style","originalCanvasStyleWidth","originalCanvasStyleHeight","toBase64Image","toDataURL","Tooltip","_chartInstance","_options","evt","eventHandler","updateHoverStyle","enabled","method","hoverOptions","tooltipsOptions","lastActive","lastTooltipActive","active","tooltipActive","onHover","handleEvent","_active","arrayEquals","addElements","scaleID","createMetaDataset","createMetaData","metaData","md","numData","numMetaData","elementOpts","valueOrDefault","inherits","configuration","_start","color","err","startVal","tooltipPosition","hasValue","isNumber","parseMaxStyle","styleValue","node","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","view","document","defaultView","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","POSITIVE_INFINITY","loopable","callback","reverse","len","isArray","keys","objClone","setFn","_base","extension","scaleMerge","getScaleDefaults","baseArray","valueObj","axisType","axisDefaults","defaultValue","array","where","collection","filterCallback","filtered","scope","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","extensions","parent","ChartElement","constructor","Surrogate","__super__","almostEquals","epsilon","reduce","NEGATIVE_INFINITY","sign","log10","log","LN10","toRadians","toDegrees","radians","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","aliasPixel","pixelWidth","firstPoint","middlePoint","afterPoint","current","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","pointsWithTangents","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","deltaX","loop","niceNum","range","niceFraction","exponent","fraction","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","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","cancelAnimFrame","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","clearTimeout","originalEvent","currentTarget","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","paddingLeft","getStyle","paddingTop","paddingRight","paddingBottom","currentDevicePixelRatio","addEvent","eventType","addEventListener","attachEvent","removeEvent","handler","removeEventListener","detachEvent","arrayOfEvents","eventName","getConstraintWidth","getConstraintHeight","container","padding","clientWidth","cw","clientHeight","ch","el","property","currentStyle","getPropertyValue","pixelRatio","devicePixelRatio","clearRect","fontString","pixelSize","fontStyle","fontFamily","longestText","font","arrayOfThings","cache","gc","garbageCollect","longest","thing","measureText","nestedThing","gcLen","textWidth","numberOfLabelLines","numberOfLines","drawRoundedRectangle","quadraticCurveTo","CanvasGradient","defaultColor","addResizeListener","hiddenIframe","createElement","hiddenIframeClass","classlist","add","setAttribute","tabIndex","display","border","margin","insertBefore","firstChild","contentWindow","onresize","querySelector","removeChild","a0","a1","v0","v1","callCallback","fn","_tArg","CanvasPattern","getContext","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","addBox","removeBox","getMinimumBoxSize","isHorizontal","fullWidth","chartWidth","maxChartAreaWidth","horizontalBoxHeight","maxChartAreaHeight","verticalBoxWidth","chartAreaHeight","minBoxSizes","horizontal","fitBox","minBoxSize","scaleMargin","totalLeftBoxesWidth","totalRightBoxesWidth","chartHeight","finalFitVerticalBox","totalTopBoxesHeight","totalBottomBoxesHeight","placeBox","xPadding","yPadding","leftBoxes","rightBoxes","topBoxes","bottomBoxes","chartAreaBoxes","sort","chartAreaWidth","newMaxChartAreaHeight","newMaxChartAreaWidth","ci","boxWidth","lineCap","lineDash","lineDashOffset","lineJoin","Legend","legendHitBoxes","doughnutMode","beforeUpdate","maxWidth","maxHeight","margins","beforeSetDimensions","setDimensions","afterSetDimensions","beforeBuildLabels","buildLabels","afterBuildLabels","beforeFit","fit","afterFit","afterUpdate","legendItems","labelOpts","globalDefault","itemOrDefault","fontSize","labelFont","hitboxes","lineWidths","totalHeight","textAlign","textBaseline","usePointStyle","vPadding","columnWidths","totalWidth","currentColWidth","currentColHeight","itemHeight","itemWidth","lineDefault","legendWidth","cursor","fontColor","drawLegendBox","save","setLineDash","offSet","restore","fillText","lh","hitBox","register","beforeInit","legendOpts","_plugins","plugin","unregister","idx","getAll","PluginBase","afterInit","beforeDraw","afterDraw","pluginService","drawBorder","drawOnChartArea","drawTicks","tickMarkLength","zeroLineWidth","zeroLineColor","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","beforeTickToLabelConversion","convertTicksToLabels","afterTickToLabelConversion","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","numericalTick","userCallback","globalDefaults","optionTicks","tickFontSize","tickFontStyle","tickFontFamily","tickLabelFont","firstRotated","firstWidth","lastWidth","labelRotation","longestTextCache","cosRotation","sinRotation","originalLabelWidth","labelWidth","yLabelWidth","tickOpts","scaleLabelOpts","gridLineOpts","scaleLabelFontSize","isFullWidth","largestTextWidth","tallestLabelHeightInLines","lineSpace","longestLabelWidth","labelHeight","firstLabelWidth","lastLabelWidth","maxLabelWidth","rawValue","getLabelForIndex","getValueForPixel","innerWidth","pixel","finalVal","innerHeight","decimal","valueOffset","skipRatio","maxTicks","isRotated","useAutoskipper","maxTicksLimit","tickFontColor","tl","scaleLabelFontColor","scaleLabelFontStyle","scaleLabelFontFamily","scaleLabelFont","labelRotationRadians","longestRotatedLabel","itemsToDraw","xTickStart","xTickEnd","yTickStart","yTickEnd","isLastTick","shouldSkip","lineColor","zeroLineIndex","tx1","ty1","tx2","ty2","x1","y1","x2","labelX","labelY","xLineValue","yLineValue","glWidth","glColor","glBorderDash","glBorderDashOffset","itemToDraw","translate","scaleLabelX","scaleLabelY","isLeft","constructors","registerScaleType","scaleConstructor","updateScaleDefaults","additions","Title","chartOpts","pos","titleX","titleY","titleFont","titleOpts","titleBlock","pushOrConcat","toPush","getAveragePosition","xPositions","yPositions","createTooltipItem","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yAlign","xAlign","caretSize","cornerRadius","multiKeyBackground","beforeTitle","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","activeElement","afterLabel","afterBody","beforeFooter","footer","afterFooter","tooltipOpts","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","changed","labelColors","itemSort","body","caretPadding","tooltipSize","getTooltipSize","determineAlignment","getBackgroundPoint","combinedBodyLength","titleLineCount","footerLineCount","widthPadding","maxLineWidth","lf","rf","olf","orf","yf","midX","midY","paddingAndSize","radiusAndPadding","drawCaret","tooltipPoint","x3","y3","ptX","ptY","bgColor","drawTitle","drawBody","textColor","xLinePadding","fillLineOfText","drawColorBoxes","drawFooter","globalOpts","chartX","chartY","pointRelativePosition","betweenAngles","withinRadius","centreAngle","rangeFromCentre","sA","eA","lineToPoint","previousPoint","bezierCurveTo","lastDrawnIndex","currentVM","globalOptionLineElements","halfWidth","leftX","rightX","DatasetScale","getLabels","xLabels","yLabels","minIndex","maxIndex","offsetAmt","valueWidth","widthOffset","valueHeight","heightOffset","horz","innerDimension","valueDimension","tickValue","logDelta","tickString","numDecimal","toFixed","LinearScale","LinearScaleBase","IDMatches","valuesPerType","hasPositiveValues","hasNegativeValues","positiveValues","negativeValues","relativePoints","valuesForType","minVal","maxVal","handleTickRangeOptions","getTickLimit","ceil","handleDirectionalChanges","ticksAsNumbers","minSign","maxSign","suggestedMin","suggestedMax","spacing","fixedStepSizeSet","fixedStepSize","stepSize","niceRange","niceMin","niceMax","numSpaces","arr","remain","toExponential","LogarithmicScale","minNotZero","tickVal","exp","significand","lastTick","tickValues","newVal","animate","angleLines","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","pointLabels","LinearRadialScale","getValueCount","drawingArea","halfTextWidth","furthestRightIndex","furthestRightAngle","furthestLeftIndex","furthestLeftAngle","xProtrusionLeft","xProtrusionRight","radiusReductionRight","radiusReductionLeft","pointLabelFontSize","pointLabeFontStyle","pointLabeFontFamily","pointLabeFont","largestPossibleRadius","furthestRight","furthestLeft","getPointPosition","angleRadians","getIndexAngle","setCenterPoint","leftMovement","rightMovement","maxRight","maxLeft","angleMultiplier","startAngleRadians","scalingFactor","distanceFromCenter","thisAngle","angleLineOpts","pointLabelOpts","yCenterOffset","yHeight","outerDistance","outerPosition","pointLabelPosition","pointLabelFontColor","moment","time","units","steps","maxStep","parser","format","unit","displayFormat","isoWeekday","displayFormats","millisecond","second","minute","hour","day","week","month","quarter","year","TimeScale","getLabelMoment","labelMoments","getMomentStartOf","tick","startOf","tickUnit","scaleLabelMoments","labelMoment","parseTime","isValid","firstTick","momentsForDataset","datasetVisible","unitScale","scaleSizeInUnits","diff","unitStepSize","tempFirstLabel","tickFormatFunction","tickLabelWidth","labelCapacity","unitDefinitionIndex","unitDefinition","leadingUnitBuffer","trailingUnitBuffer","roundedStart","roundedEnd","newTick","tooltipFormat","formattedTick","tickMoments","asSeconds","getMonth","warn"],"mappings":"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","file":"Chart.min.js","sourcesContent":["/*!\n * Chart.js\n * http://chartjs.org/\n * Version: 2.2.2\n *\n * Copyright 2016 Nick Downie\n * Released under the MIT license\n * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md\n */\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n\n},{}],2:[function(require,module,exports){\n/* MIT license */\nvar colorNames = require(6);\n\nmodule.exports = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n}\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3})$/,\n hex = /^#([a-fA-F0-9]{6})$/,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr);\n if (match) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n }\n else if (match = string.match(hex)) {\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorNames[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgb) {\n return \"#\" + hexDouble(rgb[0]) + hexDouble(rgb[1])\n + hexDouble(rgb[2]);\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorNames) {\n reverseNames[colorNames[name]] = name;\n}\n\n},{\"6\":6}],3:[function(require,module,exports){\n/* MIT license */\nvar convert = require(5);\nvar string = require(2);\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.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = string.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = string.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = string.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else {\n\t\t\tthrow new Error('Unable to parse color from string \"' + obj + '\"');\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} else {\n\t\t\tthrow new Error('Unable to parse color from object ' + JSON.stringify(obj));\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn string.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn string.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn string.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn string.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn string.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn string.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn string.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn string.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = convert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nmodule.exports = Color;\n\n},{\"2\":2,\"5\":5}],4:[function(require,module,exports){\n/* MIT license */\n\nmodule.exports = {\n rgb2hsl: rgb2hsl,\n rgb2hsv: rgb2hsv,\n rgb2hwb: rgb2hwb,\n rgb2cmyk: rgb2cmyk,\n rgb2keyword: rgb2keyword,\n rgb2xyz: rgb2xyz,\n rgb2lab: rgb2lab,\n rgb2lch: rgb2lch,\n\n hsl2rgb: hsl2rgb,\n hsl2hsv: hsl2hsv,\n hsl2hwb: hsl2hwb,\n hsl2cmyk: hsl2cmyk,\n hsl2keyword: hsl2keyword,\n\n hsv2rgb: hsv2rgb,\n hsv2hsl: hsv2hsl,\n hsv2hwb: hsv2hwb,\n hsv2cmyk: hsv2cmyk,\n hsv2keyword: hsv2keyword,\n\n hwb2rgb: hwb2rgb,\n hwb2hsl: hwb2hsl,\n hwb2hsv: hwb2hsv,\n hwb2cmyk: hwb2cmyk,\n hwb2keyword: hwb2keyword,\n\n cmyk2rgb: cmyk2rgb,\n cmyk2hsl: cmyk2hsl,\n cmyk2hsv: cmyk2hsv,\n cmyk2hwb: cmyk2hwb,\n cmyk2keyword: cmyk2keyword,\n\n keyword2rgb: keyword2rgb,\n keyword2hsl: keyword2hsl,\n keyword2hsv: keyword2hsv,\n keyword2hwb: keyword2hwb,\n keyword2cmyk: keyword2cmyk,\n keyword2lab: keyword2lab,\n keyword2xyz: keyword2xyz,\n\n xyz2rgb: xyz2rgb,\n xyz2lab: xyz2lab,\n xyz2lch: xyz2lch,\n\n lab2xyz: lab2xyz,\n lab2rgb: lab2rgb,\n lab2lch: lab2lch,\n\n lch2lab: lch2lab,\n lch2xyz: lch2xyz,\n lch2rgb: lch2rgb\n}\n\n\nfunction rgb2hsl(rgb) {\n var r = rgb[0]/255,\n g = rgb[1]/255,\n b = rgb[2]/255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, l;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g)/ delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n l = (min + max) / 2;\n\n if (max == min)\n s = 0;\n else if (l <= 0.5)\n s = delta / (max + min);\n else\n s = delta / (2 - max - min);\n\n return [h, s * 100, l * 100];\n}\n\nfunction rgb2hsv(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n delta = max - min,\n h, s, v;\n\n if (max == 0)\n s = 0;\n else\n s = (delta/max * 1000)/10;\n\n if (max == min)\n h = 0;\n else if (r == max)\n h = (g - b) / delta;\n else if (g == max)\n h = 2 + (b - r) / delta;\n else if (b == max)\n h = 4 + (r - g) / delta;\n\n h = Math.min(h * 60, 360);\n\n if (h < 0)\n h += 360;\n\n v = ((max / 255) * 1000) / 10;\n\n return [h, s, v];\n}\n\nfunction rgb2hwb(rgb) {\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2],\n h = rgb2hsl(rgb)[0],\n w = 1/255 * Math.min(r, Math.min(g, b)),\n b = 1 - 1/255 * Math.max(r, Math.max(g, b));\n\n return [h, w * 100, b * 100];\n}\n\nfunction rgb2cmyk(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255,\n c, m, y, k;\n\n k = Math.min(1 - r, 1 - g, 1 - b);\n c = (1 - r - k) / (1 - k) || 0;\n m = (1 - g - k) / (1 - k) || 0;\n y = (1 - b - k) / (1 - k) || 0;\n return [c * 100, m * 100, y * 100, k * 100];\n}\n\nfunction rgb2keyword(rgb) {\n return reverseKeywords[JSON.stringify(rgb)];\n}\n\nfunction rgb2xyz(rgb) {\n var r = rgb[0] / 255,\n g = rgb[1] / 255,\n b = rgb[2] / 255;\n\n // assume sRGB\n r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n return [x * 100, y *100, z * 100];\n}\n\nfunction rgb2lab(rgb) {\n var xyz = rgb2xyz(rgb),\n x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction rgb2lch(args) {\n return lab2lch(rgb2lab(args));\n}\n\nfunction hsl2rgb(hsl) {\n var h = hsl[0] / 360,\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n t1, t2, t3, rgb, val;\n\n if (s == 0) {\n val = l * 255;\n return [val, val, val];\n }\n\n if (l < 0.5)\n t2 = l * (1 + s);\n else\n t2 = l + s - l * s;\n t1 = 2 * l - t2;\n\n rgb = [0, 0, 0];\n for (var i = 0; i < 3; i++) {\n t3 = h + 1 / 3 * - (i - 1);\n t3 < 0 && t3++;\n t3 > 1 && t3--;\n\n if (6 * t3 < 1)\n val = t1 + (t2 - t1) * 6 * t3;\n else if (2 * t3 < 1)\n val = t2;\n else if (3 * t3 < 2)\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n else\n val = t1;\n\n rgb[i] = val * 255;\n }\n\n return rgb;\n}\n\nfunction hsl2hsv(hsl) {\n var h = hsl[0],\n s = hsl[1] / 100,\n l = hsl[2] / 100,\n sv, v;\n\n if(l === 0) {\n // no need to do calc on black\n // also avoids divide by 0 error\n return [0, 0, 0];\n }\n\n l *= 2;\n s *= (l <= 1) ? l : 2 - l;\n v = (l + s) / 2;\n sv = (2 * s) / (l + s);\n return [h, sv * 100, v * 100];\n}\n\nfunction hsl2hwb(args) {\n return rgb2hwb(hsl2rgb(args));\n}\n\nfunction hsl2cmyk(args) {\n return rgb2cmyk(hsl2rgb(args));\n}\n\nfunction hsl2keyword(args) {\n return rgb2keyword(hsl2rgb(args));\n}\n\n\nfunction hsv2rgb(hsv) {\n var h = hsv[0] / 60,\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n hi = Math.floor(h) % 6;\n\n var f = h - Math.floor(h),\n p = 255 * v * (1 - s),\n q = 255 * v * (1 - (s * f)),\n t = 255 * v * (1 - (s * (1 - f))),\n v = 255 * v;\n\n switch(hi) {\n case 0:\n return [v, t, p];\n case 1:\n return [q, v, p];\n case 2:\n return [p, v, t];\n case 3:\n return [p, q, v];\n case 4:\n return [t, p, v];\n case 5:\n return [v, p, q];\n }\n}\n\nfunction hsv2hsl(hsv) {\n var h = hsv[0],\n s = hsv[1] / 100,\n v = hsv[2] / 100,\n sl, l;\n\n l = (2 - s) * v;\n sl = s * v;\n sl /= (l <= 1) ? l : 2 - l;\n sl = sl || 0;\n l /= 2;\n return [h, sl * 100, l * 100];\n}\n\nfunction hsv2hwb(args) {\n return rgb2hwb(hsv2rgb(args))\n}\n\nfunction hsv2cmyk(args) {\n return rgb2cmyk(hsv2rgb(args));\n}\n\nfunction hsv2keyword(args) {\n return rgb2keyword(hsv2rgb(args));\n}\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nfunction hwb2rgb(hwb) {\n var h = hwb[0] / 360,\n wh = hwb[1] / 100,\n bl = hwb[2] / 100,\n ratio = wh + bl,\n i, v, f, n;\n\n // wh + bl cant be > 1\n if (ratio > 1) {\n wh /= ratio;\n bl /= ratio;\n }\n\n i = Math.floor(6 * h);\n v = 1 - bl;\n f = 6 * h - i;\n if ((i & 0x01) != 0) {\n f = 1 - f;\n }\n n = wh + f * (v - wh); // linear interpolation\n\n switch (i) {\n default:\n case 6:\n case 0: r = v; g = n; b = wh; break;\n case 1: r = n; g = v; b = wh; break;\n case 2: r = wh; g = v; b = n; break;\n case 3: r = wh; g = n; b = v; break;\n case 4: r = n; g = wh; b = v; break;\n case 5: r = v; g = wh; b = n; break;\n }\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction hwb2hsl(args) {\n return rgb2hsl(hwb2rgb(args));\n}\n\nfunction hwb2hsv(args) {\n return rgb2hsv(hwb2rgb(args));\n}\n\nfunction hwb2cmyk(args) {\n return rgb2cmyk(hwb2rgb(args));\n}\n\nfunction hwb2keyword(args) {\n return rgb2keyword(hwb2rgb(args));\n}\n\nfunction cmyk2rgb(cmyk) {\n var c = cmyk[0] / 100,\n m = cmyk[1] / 100,\n y = cmyk[2] / 100,\n k = cmyk[3] / 100,\n r, g, b;\n\n r = 1 - Math.min(1, c * (1 - k) + k);\n g = 1 - Math.min(1, m * (1 - k) + k);\n b = 1 - Math.min(1, y * (1 - k) + k);\n return [r * 255, g * 255, b * 255];\n}\n\nfunction cmyk2hsl(args) {\n return rgb2hsl(cmyk2rgb(args));\n}\n\nfunction cmyk2hsv(args) {\n return rgb2hsv(cmyk2rgb(args));\n}\n\nfunction cmyk2hwb(args) {\n return rgb2hwb(cmyk2rgb(args));\n}\n\nfunction cmyk2keyword(args) {\n return rgb2keyword(cmyk2rgb(args));\n}\n\n\nfunction xyz2rgb(xyz) {\n var x = xyz[0] / 100,\n y = xyz[1] / 100,\n z = xyz[2] / 100,\n r, g, b;\n\n r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n // assume sRGB\n r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n : r = (r * 12.92);\n\n g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n : g = (g * 12.92);\n\n b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n : b = (b * 12.92);\n\n r = Math.min(Math.max(0, r), 1);\n g = Math.min(Math.max(0, g), 1);\n b = Math.min(Math.max(0, b), 1);\n\n return [r * 255, g * 255, b * 255];\n}\n\nfunction xyz2lab(xyz) {\n var x = xyz[0],\n y = xyz[1],\n z = xyz[2],\n l, a, b;\n\n x /= 95.047;\n y /= 100;\n z /= 108.883;\n\n x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116);\n y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116);\n z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116);\n\n l = (116 * y) - 16;\n a = 500 * (x - y);\n b = 200 * (y - z);\n\n return [l, a, b];\n}\n\nfunction xyz2lch(args) {\n return lab2lch(xyz2lab(args));\n}\n\nfunction lab2xyz(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n x, y, z, y2;\n\n if (l <= 8) {\n y = (l * 100) / 903.3;\n y2 = (7.787 * (y / 100)) + (16 / 116);\n } else {\n y = 100 * Math.pow((l + 16) / 116, 3);\n y2 = Math.pow(y / 100, 1/3);\n }\n\n x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3);\n\n z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3);\n\n return [x, y, z];\n}\n\nfunction lab2lch(lab) {\n var l = lab[0],\n a = lab[1],\n b = lab[2],\n hr, h, c;\n\n hr = Math.atan2(b, a);\n h = hr * 360 / 2 / Math.PI;\n if (h < 0) {\n h += 360;\n }\n c = Math.sqrt(a * a + b * b);\n return [l, c, h];\n}\n\nfunction lab2rgb(args) {\n return xyz2rgb(lab2xyz(args));\n}\n\nfunction lch2lab(lch) {\n var l = lch[0],\n c = lch[1],\n h = lch[2],\n a, b, hr;\n\n hr = h / 360 * 2 * Math.PI;\n a = c * Math.cos(hr);\n b = c * Math.sin(hr);\n return [l, a, b];\n}\n\nfunction lch2xyz(args) {\n return lab2xyz(lch2lab(args));\n}\n\nfunction lch2rgb(args) {\n return lab2rgb(lch2lab(args));\n}\n\nfunction keyword2rgb(keyword) {\n return cssKeywords[keyword];\n}\n\nfunction keyword2hsl(args) {\n return rgb2hsl(keyword2rgb(args));\n}\n\nfunction keyword2hsv(args) {\n return rgb2hsv(keyword2rgb(args));\n}\n\nfunction keyword2hwb(args) {\n return rgb2hwb(keyword2rgb(args));\n}\n\nfunction keyword2cmyk(args) {\n return rgb2cmyk(keyword2rgb(args));\n}\n\nfunction keyword2lab(args) {\n return rgb2lab(keyword2rgb(args));\n}\n\nfunction keyword2xyz(args) {\n return rgb2xyz(keyword2rgb(args));\n}\n\nvar cssKeywords = {\n aliceblue: [240,248,255],\n antiquewhite: [250,235,215],\n aqua: [0,255,255],\n aquamarine: [127,255,212],\n azure: [240,255,255],\n beige: [245,245,220],\n bisque: [255,228,196],\n black: [0,0,0],\n blanchedalmond: [255,235,205],\n blue: [0,0,255],\n blueviolet: [138,43,226],\n brown: [165,42,42],\n burlywood: [222,184,135],\n cadetblue: [95,158,160],\n chartreuse: [127,255,0],\n chocolate: [210,105,30],\n coral: [255,127,80],\n cornflowerblue: [100,149,237],\n cornsilk: [255,248,220],\n crimson: [220,20,60],\n cyan: [0,255,255],\n darkblue: [0,0,139],\n darkcyan: [0,139,139],\n darkgoldenrod: [184,134,11],\n darkgray: [169,169,169],\n darkgreen: [0,100,0],\n darkgrey: [169,169,169],\n darkkhaki: [189,183,107],\n darkmagenta: [139,0,139],\n darkolivegreen: [85,107,47],\n darkorange: [255,140,0],\n darkorchid: [153,50,204],\n darkred: [139,0,0],\n darksalmon: [233,150,122],\n darkseagreen: [143,188,143],\n darkslateblue: [72,61,139],\n darkslategray: [47,79,79],\n darkslategrey: [47,79,79],\n darkturquoise: [0,206,209],\n darkviolet: [148,0,211],\n deeppink: [255,20,147],\n deepskyblue: [0,191,255],\n dimgray: [105,105,105],\n dimgrey: [105,105,105],\n dodgerblue: [30,144,255],\n firebrick: [178,34,34],\n floralwhite: [255,250,240],\n forestgreen: [34,139,34],\n fuchsia: [255,0,255],\n gainsboro: [220,220,220],\n ghostwhite: [248,248,255],\n gold: [255,215,0],\n goldenrod: [218,165,32],\n gray: [128,128,128],\n green: [0,128,0],\n greenyellow: [173,255,47],\n grey: [128,128,128],\n honeydew: [240,255,240],\n hotpink: [255,105,180],\n indianred: [205,92,92],\n indigo: [75,0,130],\n ivory: [255,255,240],\n khaki: [240,230,140],\n lavender: [230,230,250],\n lavenderblush: [255,240,245],\n lawngreen: [124,252,0],\n lemonchiffon: [255,250,205],\n lightblue: [173,216,230],\n lightcoral: [240,128,128],\n lightcyan: [224,255,255],\n lightgoldenrodyellow: [250,250,210],\n lightgray: [211,211,211],\n lightgreen: [144,238,144],\n lightgrey: [211,211,211],\n lightpink: [255,182,193],\n lightsalmon: [255,160,122],\n lightseagreen: [32,178,170],\n lightskyblue: [135,206,250],\n lightslategray: [119,136,153],\n lightslategrey: [119,136,153],\n lightsteelblue: [176,196,222],\n lightyellow: [255,255,224],\n lime: [0,255,0],\n limegreen: [50,205,50],\n linen: [250,240,230],\n magenta: [255,0,255],\n maroon: [128,0,0],\n mediumaquamarine: [102,205,170],\n mediumblue: [0,0,205],\n mediumorchid: [186,85,211],\n mediumpurple: [147,112,219],\n mediumseagreen: [60,179,113],\n mediumslateblue: [123,104,238],\n mediumspringgreen: [0,250,154],\n mediumturquoise: [72,209,204],\n mediumvioletred: [199,21,133],\n midnightblue: [25,25,112],\n mintcream: [245,255,250],\n mistyrose: [255,228,225],\n moccasin: [255,228,181],\n navajowhite: [255,222,173],\n navy: [0,0,128],\n oldlace: [253,245,230],\n olive: [128,128,0],\n olivedrab: [107,142,35],\n orange: [255,165,0],\n orangered: [255,69,0],\n orchid: [218,112,214],\n palegoldenrod: [238,232,170],\n palegreen: [152,251,152],\n paleturquoise: [175,238,238],\n palevioletred: [219,112,147],\n papayawhip: [255,239,213],\n peachpuff: [255,218,185],\n peru: [205,133,63],\n pink: [255,192,203],\n plum: [221,160,221],\n powderblue: [176,224,230],\n purple: [128,0,128],\n rebeccapurple: [102, 51, 153],\n red: [255,0,0],\n rosybrown: [188,143,143],\n royalblue: [65,105,225],\n saddlebrown: [139,69,19],\n salmon: [250,128,114],\n sandybrown: [244,164,96],\n seagreen: [46,139,87],\n seashell: [255,245,238],\n sienna: [160,82,45],\n silver: [192,192,192],\n skyblue: [135,206,235],\n slateblue: [106,90,205],\n slategray: [112,128,144],\n slategrey: [112,128,144],\n snow: [255,250,250],\n springgreen: [0,255,127],\n steelblue: [70,130,180],\n tan: [210,180,140],\n teal: [0,128,128],\n thistle: [216,191,216],\n tomato: [255,99,71],\n turquoise: [64,224,208],\n violet: [238,130,238],\n wheat: [245,222,179],\n white: [255,255,255],\n whitesmoke: [245,245,245],\n yellow: [255,255,0],\n yellowgreen: [154,205,50]\n};\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n reverseKeywords[JSON.stringify(cssKeywords[key])] = key;\n}\n\n},{}],5:[function(require,module,exports){\nvar conversions = require(4);\n\nvar convert = function() {\n return new Converter();\n}\n\nfor (var func in conversions) {\n // export Raw versions\n convert[func + \"Raw\"] = (function(func) {\n // accept array or plain args\n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n return conversions[func](arg);\n }\n })(func);\n\n var pair = /(\\w+)2(\\w+)/.exec(func),\n from = pair[1],\n to = pair[2];\n\n // export rgb2hsl and [\"rgb\"][\"hsl\"]\n convert[from] = convert[from] || {};\n\n convert[from][to] = convert[func] = (function(func) { \n return function(arg) {\n if (typeof arg == \"number\")\n arg = Array.prototype.slice.call(arguments);\n \n var val = conversions[func](arg);\n if (typeof val == \"string\" || val === undefined)\n return val; // keyword\n\n for (var i = 0; i < val.length; i++)\n val[i] = Math.round(val[i]);\n return val;\n }\n })(func);\n}\n\n\n/* Converter does lazy conversion and caching */\nvar Converter = function() {\n this.convs = {};\n};\n\n/* Either get the values for a space or\n set the values for a space, depending on args */\nConverter.prototype.routeSpace = function(space, args) {\n var values = args[0];\n if (values === undefined) {\n // color.rgb()\n return this.getValues(space);\n }\n // color.rgb(10, 10, 10)\n if (typeof values == \"number\") {\n values = Array.prototype.slice.call(args); \n }\n\n return this.setValues(space, values);\n};\n \n/* Set the values for a space, invalidating cache */\nConverter.prototype.setValues = function(space, values) {\n this.space = space;\n this.convs = {};\n this.convs[space] = values;\n return this;\n};\n\n/* Get the values for a space. If there's already\n a conversion for the space, fetch it, otherwise\n compute it */\nConverter.prototype.getValues = function(space) {\n var vals = this.convs[space];\n if (!vals) {\n var fspace = this.space,\n from = this.convs[fspace];\n vals = convert[fspace][space](from);\n\n this.convs[space] = vals;\n }\n return vals;\n};\n\n[\"rgb\", \"hsl\", \"hsv\", \"cmyk\", \"keyword\"].forEach(function(space) {\n Converter.prototype[space] = function(vals) {\n return this.routeSpace(space, arguments);\n }\n});\n\nmodule.exports = convert;\n},{\"4\":4}],6:[function(require,module,exports){\nmodule.exports = {\n\t\"aliceblue\": [240, 248, 255],\n\t\"antiquewhite\": [250, 235, 215],\n\t\"aqua\": [0, 255, 255],\n\t\"aquamarine\": [127, 255, 212],\n\t\"azure\": [240, 255, 255],\n\t\"beige\": [245, 245, 220],\n\t\"bisque\": [255, 228, 196],\n\t\"black\": [0, 0, 0],\n\t\"blanchedalmond\": [255, 235, 205],\n\t\"blue\": [0, 0, 255],\n\t\"blueviolet\": [138, 43, 226],\n\t\"brown\": [165, 42, 42],\n\t\"burlywood\": [222, 184, 135],\n\t\"cadetblue\": [95, 158, 160],\n\t\"chartreuse\": [127, 255, 0],\n\t\"chocolate\": [210, 105, 30],\n\t\"coral\": [255, 127, 80],\n\t\"cornflowerblue\": [100, 149, 237],\n\t\"cornsilk\": [255, 248, 220],\n\t\"crimson\": [220, 20, 60],\n\t\"cyan\": [0, 255, 255],\n\t\"darkblue\": [0, 0, 139],\n\t\"darkcyan\": [0, 139, 139],\n\t\"darkgoldenrod\": [184, 134, 11],\n\t\"darkgray\": [169, 169, 169],\n\t\"darkgreen\": [0, 100, 0],\n\t\"darkgrey\": [169, 169, 169],\n\t\"darkkhaki\": [189, 183, 107],\n\t\"darkmagenta\": [139, 0, 139],\n\t\"darkolivegreen\": [85, 107, 47],\n\t\"darkorange\": [255, 140, 0],\n\t\"darkorchid\": [153, 50, 204],\n\t\"darkred\": [139, 0, 0],\n\t\"darksalmon\": [233, 150, 122],\n\t\"darkseagreen\": [143, 188, 143],\n\t\"darkslateblue\": [72, 61, 139],\n\t\"darkslategray\": [47, 79, 79],\n\t\"darkslategrey\": [47, 79, 79],\n\t\"darkturquoise\": [0, 206, 209],\n\t\"darkviolet\": [148, 0, 211],\n\t\"deeppink\": [255, 20, 147],\n\t\"deepskyblue\": [0, 191, 255],\n\t\"dimgray\": [105, 105, 105],\n\t\"dimgrey\": [105, 105, 105],\n\t\"dodgerblue\": [30, 144, 255],\n\t\"firebrick\": [178, 34, 34],\n\t\"floralwhite\": [255, 250, 240],\n\t\"forestgreen\": [34, 139, 34],\n\t\"fuchsia\": [255, 0, 255],\n\t\"gainsboro\": [220, 220, 220],\n\t\"ghostwhite\": [248, 248, 255],\n\t\"gold\": [255, 215, 0],\n\t\"goldenrod\": [218, 165, 32],\n\t\"gray\": [128, 128, 128],\n\t\"green\": [0, 128, 0],\n\t\"greenyellow\": [173, 255, 47],\n\t\"grey\": [128, 128, 128],\n\t\"honeydew\": [240, 255, 240],\n\t\"hotpink\": [255, 105, 180],\n\t\"indianred\": [205, 92, 92],\n\t\"indigo\": [75, 0, 130],\n\t\"ivory\": [255, 255, 240],\n\t\"khaki\": [240, 230, 140],\n\t\"lavender\": [230, 230, 250],\n\t\"lavenderblush\": [255, 240, 245],\n\t\"lawngreen\": [124, 252, 0],\n\t\"lemonchiffon\": [255, 250, 205],\n\t\"lightblue\": [173, 216, 230],\n\t\"lightcoral\": [240, 128, 128],\n\t\"lightcyan\": [224, 255, 255],\n\t\"lightgoldenrodyellow\": [250, 250, 210],\n\t\"lightgray\": [211, 211, 211],\n\t\"lightgreen\": [144, 238, 144],\n\t\"lightgrey\": [211, 211, 211],\n\t\"lightpink\": [255, 182, 193],\n\t\"lightsalmon\": [255, 160, 122],\n\t\"lightseagreen\": [32, 178, 170],\n\t\"lightskyblue\": [135, 206, 250],\n\t\"lightslategray\": [119, 136, 153],\n\t\"lightslategrey\": [119, 136, 153],\n\t\"lightsteelblue\": [176, 196, 222],\n\t\"lightyellow\": [255, 255, 224],\n\t\"lime\": [0, 255, 0],\n\t\"limegreen\": [50, 205, 50],\n\t\"linen\": [250, 240, 230],\n\t\"magenta\": [255, 0, 255],\n\t\"maroon\": [128, 0, 0],\n\t\"mediumaquamarine\": [102, 205, 170],\n\t\"mediumblue\": [0, 0, 205],\n\t\"mediumorchid\": [186, 85, 211],\n\t\"mediumpurple\": [147, 112, 219],\n\t\"mediumseagreen\": [60, 179, 113],\n\t\"mediumslateblue\": [123, 104, 238],\n\t\"mediumspringgreen\": [0, 250, 154],\n\t\"mediumturquoise\": [72, 209, 204],\n\t\"mediumvioletred\": [199, 21, 133],\n\t\"midnightblue\": [25, 25, 112],\n\t\"mintcream\": [245, 255, 250],\n\t\"mistyrose\": [255, 228, 225],\n\t\"moccasin\": [255, 228, 181],\n\t\"navajowhite\": [255, 222, 173],\n\t\"navy\": [0, 0, 128],\n\t\"oldlace\": [253, 245, 230],\n\t\"olive\": [128, 128, 0],\n\t\"olivedrab\": [107, 142, 35],\n\t\"orange\": [255, 165, 0],\n\t\"orangered\": [255, 69, 0],\n\t\"orchid\": [218, 112, 214],\n\t\"palegoldenrod\": [238, 232, 170],\n\t\"palegreen\": [152, 251, 152],\n\t\"paleturquoise\": [175, 238, 238],\n\t\"palevioletred\": [219, 112, 147],\n\t\"papayawhip\": [255, 239, 213],\n\t\"peachpuff\": [255, 218, 185],\n\t\"peru\": [205, 133, 63],\n\t\"pink\": [255, 192, 203],\n\t\"plum\": [221, 160, 221],\n\t\"powderblue\": [176, 224, 230],\n\t\"purple\": [128, 0, 128],\n\t\"rebeccapurple\": [102, 51, 153],\n\t\"red\": [255, 0, 0],\n\t\"rosybrown\": [188, 143, 143],\n\t\"royalblue\": [65, 105, 225],\n\t\"saddlebrown\": [139, 69, 19],\n\t\"salmon\": [250, 128, 114],\n\t\"sandybrown\": [244, 164, 96],\n\t\"seagreen\": [46, 139, 87],\n\t\"seashell\": [255, 245, 238],\n\t\"sienna\": [160, 82, 45],\n\t\"silver\": [192, 192, 192],\n\t\"skyblue\": [135, 206, 235],\n\t\"slateblue\": [106, 90, 205],\n\t\"slategray\": [112, 128, 144],\n\t\"slategrey\": [112, 128, 144],\n\t\"snow\": [255, 250, 250],\n\t\"springgreen\": [0, 255, 127],\n\t\"steelblue\": [70, 130, 180],\n\t\"tan\": [210, 180, 140],\n\t\"teal\": [0, 128, 128],\n\t\"thistle\": [216, 191, 216],\n\t\"tomato\": [255, 99, 71],\n\t\"turquoise\": [64, 224, 208],\n\t\"violet\": [238, 130, 238],\n\t\"wheat\": [245, 222, 179],\n\t\"white\": [255, 255, 255],\n\t\"whitesmoke\": [245, 245, 245],\n\t\"yellow\": [255, 255, 0],\n\t\"yellowgreen\": [154, 205, 50]\n};\n},{}],7:[function(require,module,exports){\n/**\n * @namespace Chart\n */\nvar Chart = require(27)();\n\nrequire(26)(Chart);\nrequire(22)(Chart);\nrequire(25)(Chart);\nrequire(21)(Chart);\nrequire(23)(Chart);\nrequire(24)(Chart);\nrequire(28)(Chart);\nrequire(32)(Chart);\nrequire(30)(Chart);\nrequire(31)(Chart);\nrequire(33)(Chart);\nrequire(29)(Chart);\nrequire(34)(Chart);\n\nrequire(35)(Chart);\nrequire(36)(Chart);\nrequire(37)(Chart);\nrequire(38)(Chart);\n\nrequire(41)(Chart);\nrequire(39)(Chart);\nrequire(40)(Chart);\nrequire(42)(Chart);\nrequire(43)(Chart);\nrequire(44)(Chart);\n\n// Controllers must be loaded after elements\n// See Chart.core.datasetController.dataElementType\nrequire(15)(Chart);\nrequire(16)(Chart);\nrequire(17)(Chart);\nrequire(18)(Chart);\nrequire(19)(Chart);\nrequire(20)(Chart);\n\nrequire(8)(Chart);\nrequire(9)(Chart);\nrequire(10)(Chart);\nrequire(11)(Chart);\nrequire(12)(Chart);\nrequire(13)(Chart);\nrequire(14)(Chart);\n\nwindow.Chart = module.exports = Chart;\n\n},{\"10\":10,\"11\":11,\"12\":12,\"13\":13,\"14\":14,\"15\":15,\"16\":16,\"17\":17,\"18\":18,\"19\":19,\"20\":20,\"21\":21,\"22\":22,\"23\":23,\"24\":24,\"25\":25,\"26\":26,\"27\":27,\"28\":28,\"29\":29,\"30\":30,\"31\":31,\"32\":32,\"33\":33,\"34\":34,\"35\":35,\"36\":36,\"37\":37,\"38\":38,\"39\":39,\"40\":40,\"41\":41,\"42\":42,\"43\":43,\"44\":44,\"8\":8,\"9\":9}],8:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tChart.Bar = function(context, config) {\n\t\tconfig.type = 'bar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],9:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tChart.Bubble = function(context, config) {\n\t\tconfig.type = 'bubble';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],10:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tChart.Doughnut = function(context, config) {\n\t\tconfig.type = 'doughnut';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],11:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tChart.Line = function(context, config) {\n\t\tconfig.type = 'line';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],12:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tChart.PolarArea = function(context, config) {\n\t\tconfig.type = 'polarArea';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],13:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\t\n\tChart.Radar = function(context, config) {\n\t\tconfig.options = Chart.helpers.configMerge({ aspectRatio: 1 }, config.options);\n\t\tconfig.type = 'radar';\n\n\t\treturn new Chart(context, config);\n\t};\n\n};\n\n},{}],14:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar defaultConfig = {\n\t\thover: {\n\t\t\tmode: 'single'\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: \"linear\", // scatter should not use a category axis\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tid: \"x-axis-1\" // need an ID so datasets can reference the scale\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: \"linear\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tid: \"y-axis-1\"\n\t\t\t}]\n\t\t},\n\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem) {\n\t\t\t\t\treturn '(' + tooltipItem.xLabel + ', ' + tooltipItem.yLabel + ')';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\t// Register the default config for this type\n\tChart.defaults.scatter = defaultConfig;\n\n\t// Scatter charts use line controllers\n\tChart.controllers.scatter = Chart.controllers.line;\n\n\tChart.Scatter = function(context, config) {\n\t\tconfig.type = 'scatter';\n\t\treturn new Chart(context, config);\n\t};\n\n};\n},{}],15:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.bar = {\n\t\thover: {\n\t\t\tmode: \"label\"\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: \"category\",\n\n\t\t\t\t// Specific to Bar Controller\n\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\tbarPercentage: 0.9,\n\n\t\t\t\t// grid line settings\n\t\t\t\tgridLines: {\n\t\t\t\t\toffsetGridLines: true\n\t\t\t\t}\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: \"linear\"\n\t\t\t}]\n\t\t}\n\t};\n\n\tChart.controllers.bar = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Rectangle,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tChart.DatasetController.prototype.initialize.call(this, chart, datasetIndex);\n\n\t\t\t// Use this to indicate that this is a bar dataset.\n\t\t\tthis.getMeta().bar = true;\n\t\t},\n\n\t\t// Get the number of datasets that display bars. We use this to correctly calculate the bar width\n\t\tgetBarCount: function() {\n\t\t\tvar me = this;\n\t\t\tvar barCount = 0;\n\t\t\thelpers.each(me.chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.chart.getDatasetMeta(datasetIndex);\n\t\t\t\tif (meta.bar && me.chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\t++barCount;\n\t\t\t\t}\n\t\t\t}, me);\n\t\t\treturn barCount;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.getMeta().data, function(rectangle, index) {\n\t\t\t\tme.updateElement(rectangle, index, reset);\n\t\t\t}, me);\n\t\t},\n\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar scaleBase = yScale.getBasePixel();\n\t\t\tvar rectangleElementOptions = me.chart.options.elements.rectangle;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\thelpers.extend(rectangle, {\n\t\t\t\t// Utility\n\t\t\t\t_xScale: xScale,\n\t\t\t\t_yScale: yScale,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: me.calculateBarX(index, me.index),\n\t\t\t\t\ty: reset ? scaleBase : me.calculateBarY(index, me.index),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\tlabel: me.chart.data.labels[index],\n\t\t\t\t\tdatasetLabel: dataset.label,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\tbase: reset ? scaleBase : me.calculateBarBase(me.index, index),\n\t\t\t\t\twidth: me.calculateBarWidth(index),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),\n\t\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth)\n\t\t\t\t}\n\t\t\t});\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\tcalculateBarBase: function(datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar base = 0;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tvar chart = me.chart;\n\t\t\t\tvar datasets = chart.data.datasets;\n\t\t\t\tvar value = Number(datasets[datasetIndex].data[index]);\n\n\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tvar currentDs = datasets[i];\n\t\t\t\t\tvar currentDsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (currentDsMeta.bar && currentDsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar currentVal = Number(currentDs.data[index]);\n\t\t\t\t\t\tbase += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn yScale.getPixelForValue(base);\n\t\t\t}\n\n\t\t\treturn yScale.getBasePixel();\n\t\t},\n\n\t\tgetRuler: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar datasetCount = me.getBarCount();\n\n\t\t\tvar tickWidth;\n\n\t\t\tif (xScale.options.type === 'category') {\n\t\t\t\ttickWidth = xScale.getPixelForTick(index + 1) - xScale.getPixelForTick(index);\n\t\t\t} else {\n\t\t\t\t// Average width\n\t\t\t\ttickWidth = xScale.width / xScale.ticks.length;\n\t\t\t}\n\t\t\tvar categoryWidth = tickWidth * xScale.options.categoryPercentage;\n\t\t\tvar categorySpacing = (tickWidth - (tickWidth * xScale.options.categoryPercentage)) / 2;\n\t\t\tvar fullBarWidth = categoryWidth / datasetCount;\n\n\t\t\tif (xScale.ticks.length !== me.chart.data.labels.length) {\n\t\t\t var perc = xScale.ticks.length / me.chart.data.labels.length;\n\t\t\t fullBarWidth = fullBarWidth * perc;\n\t\t\t}\n\n\t\t\tvar barWidth = fullBarWidth * xScale.options.barPercentage;\n\t\t\tvar barSpacing = fullBarWidth - (fullBarWidth * xScale.options.barPercentage);\n\n\t\t\treturn {\n\t\t\t\tdatasetCount: datasetCount,\n\t\t\t\ttickWidth: tickWidth,\n\t\t\t\tcategoryWidth: categoryWidth,\n\t\t\t\tcategorySpacing: categorySpacing,\n\t\t\t\tfullBarWidth: fullBarWidth,\n\t\t\t\tbarWidth: barWidth,\n\t\t\t\tbarSpacing: barSpacing\n\t\t\t};\n\t\t},\n\n\t\tcalculateBarWidth: function(index) {\n\t\t\tvar xScale = this.getScaleForId(this.getMeta().xAxisID);\n\t\t\tif (xScale.options.barThickness) {\n\t\t\t\treturn xScale.options.barThickness;\n\t\t\t}\n\t\t\tvar ruler = this.getRuler(index);\n\t\t\treturn xScale.options.stacked ? ruler.categoryWidth : ruler.barWidth;\n\t\t},\n\n\t\t// Get bar index from the given dataset index accounting for the fact that not all bars are visible\n\t\tgetBarIndex: function(datasetIndex) {\n\t\t\tvar barIndex = 0;\n\t\t\tvar meta, j;\n\n\t\t\tfor (j = 0; j < datasetIndex; ++j) {\n\t\t\t\tmeta = this.chart.getDatasetMeta(j);\n\t\t\t\tif (meta.bar && this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++barIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn barIndex;\n\t\t},\n\n\t\tcalculateBarX: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar barIndex = me.getBarIndex(datasetIndex);\n\n\t\t\tvar ruler = me.getRuler(index);\n\t\t\tvar leftTick = xScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo);\n\t\t\tleftTick -= me.chart.isCombo ? (ruler.tickWidth / 2) : 0;\n\n\t\t\tif (xScale.options.stacked) {\n\t\t\t\treturn leftTick + (ruler.categoryWidth / 2) + ruler.categorySpacing;\n\t\t\t}\n\n\t\t\treturn leftTick +\n\t\t\t\t(ruler.barWidth / 2) +\n\t\t\t\truler.categorySpacing +\n\t\t\t\t(ruler.barWidth * barIndex) +\n\t\t\t\t(ruler.barSpacing / 2) +\n\t\t\t\t(ruler.barSpacing * barIndex);\n\t\t},\n\n\t\tcalculateBarY: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar value = Number(me.getDataset().data[index]);\n\n\t\t\tif (yScale.options.stacked) {\n\n\t\t\t\tvar sumPos = 0,\n\t\t\t\t\tsumNeg = 0;\n\n\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tvar ds = me.chart.data.datasets[i];\n\t\t\t\t\tvar dsMeta = me.chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.bar && dsMeta.yAxisID === yScale.id && me.chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedVal = Number(ds.data[index]);\n\t\t\t\t\t\tif (stackedVal < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedVal || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedVal || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (value < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + value);\n\t\t\t\t} else {\n\t\t\t\t\treturn yScale.getPixelForValue(sumPos + value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tdraw: function(ease) {\n\t\t\tvar me = this;\n\t\t\tvar easingDecimal = ease || 1;\n\t\t\thelpers.each(me.getMeta().data, function(rectangle, index) {\n\t\t\t\tvar d = me.getDataset().data[index];\n\t\t\t\tif (d !== null && d !== undefined && !isNaN(d)) {\n\t\t\t\t\trectangle.transition(easingDecimal).draw();\n\t\t\t\t}\n\t\t\t}, me);\n\t\t},\n\n\t\tsetHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(rectangle) {\n\t\t\tvar dataset = this.chart.data.datasets[rectangle._datasetIndex];\n\t\t\tvar index = rectangle._index;\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar model = rectangle._model;\n\t\t\tvar rectangleElementOptions = this.chart.options.elements.rectangle;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth);\n\t\t}\n\n\t});\n\n\n\t// including horizontalBar in the bar file, instead of a file of its own\n\t// it extends bar (like pie extends doughnut)\n\tChart.defaults.horizontalBar = {\n\t\thover: {\n\t\t\tmode: \"label\"\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: \"linear\",\n\t\t\t\tposition: \"bottom\"\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\tposition: \"left\",\n\t\t\t\ttype: \"category\",\n\n\t\t\t\t// Specific to Horizontal Bar Controller\n\t\t\t\tcategoryPercentage: 0.8,\n\t\t\t\tbarPercentage: 0.9,\n\n\t\t\t\t// grid line settings\n\t\t\t\tgridLines: {\n\t\t\t\t\toffsetGridLines: true\n\t\t\t\t}\n\t\t\t}]\n\t\t},\n\t\telements: {\n\t\t\trectangle: {\n\t\t\t\tborderSkipped: 'left'\n\t\t\t}\n\t\t},\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t\t// Pick first xLabel for now\n\t\t\t\t\tvar title = '';\n\n\t\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\t\tif (tooltipItems[0].yLabel) {\n\t\t\t\t\t\t\ttitle = tooltipItems[0].yLabel;\n\t\t\t\t\t\t} else if (data.labels.length > 0 && tooltipItems[0].index < data.labels.length) {\n\t\t\t\t\t\t\ttitle = data.labels[tooltipItems[0].index];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn title;\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + tooltipItem.xLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.horizontalBar = Chart.controllers.bar.extend({\n\t\tupdateElement: function(rectangle, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar scaleBase = xScale.getBasePixel();\n\t\t\tvar custom = rectangle.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar rectangleElementOptions = me.chart.options.elements.rectangle;\n\n\t\t\thelpers.extend(rectangle, {\n\t\t\t\t// Utility\n\t\t\t\t_xScale: xScale,\n\t\t\t\t_yScale: yScale,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scaleBase : me.calculateBarX(index, me.index),\n\t\t\t\t\ty: me.calculateBarY(index, me.index),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\tlabel: me.chart.data.labels[index],\n\t\t\t\t\tdatasetLabel: dataset.label,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\tbase: reset ? scaleBase : me.calculateBarBase(me.index, index),\n\t\t\t\t\theight: me.calculateBarHeight(index),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor),\n\t\t\t\t\tborderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleElementOptions.borderSkipped,\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth)\n\t\t\t\t},\n\n\t\t\t\tdraw: function () {\n\t\t\t\t\tvar ctx = this._chart.ctx;\n\t\t\t\t\tvar vm = this._view;\n\n\t\t\t\t\tvar halfHeight = vm.height / 2,\n\t\t\t\t\t\ttopY = vm.y - halfHeight,\n\t\t\t\t\t\tbottomY = vm.y + halfHeight,\n\t\t\t\t\t\tright = vm.base - (vm.base - vm.x),\n\t\t\t\t\t\thalfStroke = vm.borderWidth / 2;\n\n\t\t\t\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t\t\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\t\t\t\tif (vm.borderWidth) {\n\t\t\t\t\t\ttopY += halfStroke;\n\t\t\t\t\t\tbottomY -= halfStroke;\n\t\t\t\t\t\tright += halfStroke;\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.beginPath();\n\n\t\t\t\t\tctx.fillStyle = vm.backgroundColor;\n\t\t\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\t\t\tctx.lineWidth = vm.borderWidth;\n\n\t\t\t\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t\t\t\t// | 1 2 |\n\t\t\t\t\t// | 0 3 |\n\t\t\t\t\tvar corners = [\n\t\t\t\t\t\t[vm.base, bottomY],\n\t\t\t\t\t\t[vm.base, topY],\n\t\t\t\t\t\t[right, topY],\n\t\t\t\t\t\t[right, bottomY]\n\t\t\t\t\t];\n\n\t\t\t\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\t\t\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\t\t\t\tvar startCorner = borders.indexOf(vm.borderSkipped, 0);\n\t\t\t\t\tif (startCorner === -1)\n\t\t\t\t\t\tstartCorner = 0;\n\n\t\t\t\t\tfunction cornerAt(index) {\n\t\t\t\t\t\treturn corners[(startCorner + index) % 4];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Draw rectangle from 'startCorner'\n\t\t\t\t\tctx.moveTo.apply(ctx, cornerAt(0));\n\t\t\t\t\tfor (var i = 1; i < 4; i++)\n\t\t\t\t\t\tctx.lineTo.apply(ctx, cornerAt(i));\n\n\t\t\t\t\tctx.fill();\n\t\t\t\t\tif (vm.borderWidth) {\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\t\tinRange: function (mouseX, mouseY) {\n\t\t\t\t\tvar vm = this._view;\n\t\t\t\t\tvar inRange = false;\n\n\t\t\t\t\tif (vm) {\n\t\t\t\t\t\tif (vm.x < vm.base) {\n\t\t\t\t\t\t\tinRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.x && mouseX <= vm.base);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tinRange = (mouseY >= vm.y - vm.height / 2 && mouseY <= vm.y + vm.height / 2) && (mouseX >= vm.base && mouseX <= vm.x);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn inRange;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\trectangle.pivot();\n\t\t},\n\n\t\tcalculateBarBase: function (datasetIndex, index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar base = 0;\n\n\t\t\tif (xScale.options.stacked) {\n\t\t\t\tvar chart = me.chart;\n\t\t\t\tvar datasets = chart.data.datasets;\n\t\t\t\tvar value = Number(datasets[datasetIndex].data[index]);\n\n\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tvar currentDs = datasets[i];\n\t\t\t\t\tvar currentDsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (currentDsMeta.bar && currentDsMeta.xAxisID === xScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar currentVal = Number(currentDs.data[index]);\n\t\t\t\t\t\tbase += value < 0 ? Math.min(currentVal, 0) : Math.max(currentVal, 0);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn xScale.getPixelForValue(base);\n\t\t\t}\n\n\t\t\treturn xScale.getBasePixel();\n\t\t},\n\n\t\tgetRuler: function (index) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar datasetCount = me.getBarCount();\n\n\t\t\tvar tickHeight;\n\t\t\tif (yScale.options.type === 'category') {\n\t\t\t\ttickHeight = yScale.getPixelForTick(index + 1) - yScale.getPixelForTick(index);\n\t\t\t} else {\n\t\t\t\t// Average width\n\t\t\t\ttickHeight = yScale.width / yScale.ticks.length;\n\t\t\t}\n\t\t\tvar categoryHeight = tickHeight * yScale.options.categoryPercentage;\n\t\t\tvar categorySpacing = (tickHeight - (tickHeight * yScale.options.categoryPercentage)) / 2;\n\t\t\tvar fullBarHeight = categoryHeight / datasetCount;\n\n\t\t\tif (yScale.ticks.length !== me.chart.data.labels.length) {\n\t\t\t\tvar perc = yScale.ticks.length / me.chart.data.labels.length;\n\t\t\t\tfullBarHeight = fullBarHeight * perc;\n\t\t\t}\n\n\t\t\tvar barHeight = fullBarHeight * yScale.options.barPercentage;\n\t\t\tvar barSpacing = fullBarHeight - (fullBarHeight * yScale.options.barPercentage);\n\n\t\t\treturn {\n\t\t\t\tdatasetCount: datasetCount,\n\t\t\t\ttickHeight: tickHeight,\n\t\t\t\tcategoryHeight: categoryHeight,\n\t\t\t\tcategorySpacing: categorySpacing,\n\t\t\t\tfullBarHeight: fullBarHeight,\n\t\t\t\tbarHeight: barHeight,\n\t\t\t\tbarSpacing: barSpacing\n\t\t\t};\n\t\t},\n\n\t\tcalculateBarHeight: function (index) {\n\t\t\tvar me = this;\n\t\t\tvar yScale = me.getScaleForId(me.getMeta().yAxisID);\n\t\t\tif (yScale.options.barThickness) {\n\t\t\t\treturn yScale.options.barThickness;\n\t\t\t}\n\t\t\tvar ruler = me.getRuler(index);\n\t\t\treturn yScale.options.stacked ? ruler.categoryHeight : ruler.barHeight;\n\t\t},\n\n\t\tcalculateBarX: function (index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar value = Number(me.getDataset().data[index]);\n\n\t\t\tif (xScale.options.stacked) {\n\n\t\t\t\tvar sumPos = 0,\n\t\t\t\t\tsumNeg = 0;\n\n\t\t\t\tfor (var i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tvar ds = me.chart.data.datasets[i];\n\t\t\t\t\tvar dsMeta = me.chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.bar && dsMeta.xAxisID === xScale.id && me.chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedVal = Number(ds.data[index]);\n\t\t\t\t\t\tif (stackedVal < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedVal || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedVal || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (value < 0) {\n\t\t\t\t\treturn xScale.getPixelForValue(sumNeg + value);\n\t\t\t\t} else {\n\t\t\t\t\treturn xScale.getPixelForValue(sumPos + value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn xScale.getPixelForValue(value);\n\t\t},\n\n\t\tcalculateBarY: function (index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar barIndex = me.getBarIndex(datasetIndex);\n\n\t\t\tvar ruler = me.getRuler(index);\n\t\t\tvar topTick = yScale.getPixelForValue(null, index, datasetIndex, me.chart.isCombo);\n\t\t\ttopTick -= me.chart.isCombo ? (ruler.tickHeight / 2) : 0;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\treturn topTick + (ruler.categoryHeight / 2) + ruler.categorySpacing;\n\t\t\t}\n\n\t\t\treturn topTick +\n\t\t\t\t(ruler.barHeight / 2) +\n\t\t\t\truler.categorySpacing +\n\t\t\t\t(ruler.barHeight * barIndex) +\n\t\t\t\t(ruler.barSpacing / 2) +\n\t\t\t\t(ruler.barSpacing * barIndex);\n\t\t}\n\t});\n};\n\n},{}],16:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.bubble = {\n\t\thover: {\n\t\t\tmode: \"single\"\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: \"linear\", // bubble should probably use a linear scale by default\n\t\t\t\tposition: \"bottom\",\n\t\t\t\tid: \"x-axis-0\" // need an ID so datasets can reference the scale\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: \"linear\",\n\t\t\t\tposition: \"left\",\n\t\t\t\tid: \"y-axis-0\"\n\t\t\t}]\n\t\t},\n\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\t\tvar dataPoint = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\t\t\t\t\treturn datasetLabel + ': (' + dataPoint.x + ', ' + dataPoint.y + ', ' + dataPoint.r + ')';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.bubble = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data;\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar data = dataset.data[index];\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar dsIndex = me.index;\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_xScale: xScale,\n\t\t\t\t_yScale: yScale,\n\t\t\t\t_datasetIndex: dsIndex,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex, me.chart.isCombo),\n\t\t\t\t\ty: reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex),\n\t\t\t\t\t// Appearance\n\t\t\t\t\tradius: reset ? 0 : custom.radius ? custom.radius : me.getRadius(data),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Trick to reset the styles of the point\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, pointElementOptions);\n\n\t\t\tvar model = point._model;\n\t\t\tmodel.skip = custom.skip ? custom.skip : (isNaN(model.x) || isNaN(model.y));\n\n\t\t\tpoint.pivot();\n\t\t},\n\n\t\tgetRadius: function(value) {\n\t\t\treturn value.r || this.chart.options.elements.point.radius;\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tChart.DatasetController.prototype.setHoverStyle.call(me, point);\n\n\t\t\t// Radius\n\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : (helpers.getValueAtIndexOrDefault(dataset.hoverRadius, index, me.chart.options.elements.point.hoverRadius)) + me.getRadius(dataset.data[index]);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(me, point, me.chart.options.elements.point);\n\n\t\t\tvar dataVal = me.chart.data.datasets[point._datasetIndex].data[point._index];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.radius ? custom.radius : me.getRadius(dataVal);\n\t\t}\n\t});\n};\n\n},{}],17:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tdefaults = Chart.defaults;\n\n\tdefaults.doughnut = {\n\t\tanimation: {\n\t\t\t//Boolean - Whether we animate the rotation of the Doughnut\n\t\t\tanimateRotate: true,\n\t\t\t//Boolean - Whether we animate scaling the Doughnut from the centre\n\t\t\tanimateScale: false\n\t\t},\n\t\taspectRatio: 1,\n\t\thover: {\n\t\t\tmode: 'single'\n\t\t},\n\t\tlegendCallback: function(chart) {\n\t\t\tvar text = [];\n\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar labels = data.labels;\n\n\t\t\tif (datasets.length) {\n\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\"></span>');\n\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</li>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext.push('</ul>');\n\t\t\treturn text.join(\"\");\n\t\t},\n\t\tlegend: {\n\t\t\tlabels: {\n\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\tvar custom = arc && arc.custom || {};\n\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonClick: function(e, legendItem) {\n\t\t\t\tvar index = legendItem.index;\n\t\t\t\tvar chart = this.chart;\n\t\t\t\tvar i, ilen, meta;\n\n\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\n\t\t//The percentage of the chart that we cut out of the middle.\n\t\tcutoutPercentage: 50,\n\n\t\t//The rotation of the chart, where the first data arc begins.\n\t\trotation: Math.PI * -0.5,\n\n\t\t//The total circumference of the chart.\n\t\tcircumference: Math.PI * 2.0,\n\n\t\t// Need to override these to give a nice default\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\treturn data.labels[tooltipItem.index] + ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tdefaults.pie = helpers.clone(defaults.doughnut);\n\thelpers.extend(defaults.pie, {\n\t\tcutoutPercentage: 0\n\t});\n\n\n\tChart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\t\tgetRingIndex: function(datasetIndex) {\n\t\t\tvar ringIndex = 0;\n\n\t\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t\t++ringIndex;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ringIndex;\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart,\n\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\topts = chart.options,\n\t\t\t\tarcOpts = opts.elements.arc,\n\t\t\t\tavailableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth,\n\t\t\t\tavailableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth,\n\t\t\t\tminSize = Math.min(availableWidth, availableHeight),\n\t\t\t\toffset = {\n\t\t\t\t\tx: 0,\n\t\t\t\t\ty: 0\n\t\t\t\t},\n\t\t\t\tmeta = me.getMeta(),\n\t\t\t\tcutoutPercentage = opts.cutoutPercentage,\n\t\t\t\tcircumference = opts.circumference;\n\n\t\t\t// If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc\n\t\t\tif (circumference < Math.PI * 2.0) {\n\t\t\t\tvar startAngle = opts.rotation % (Math.PI * 2.0);\n\t\t\t\tstartAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0);\n\t\t\t\tvar endAngle = startAngle + circumference;\n\t\t\t\tvar start = {x: Math.cos(startAngle), y: Math.sin(startAngle)};\n\t\t\t\tvar end = {x: Math.cos(endAngle), y: Math.sin(endAngle)};\n\t\t\t\tvar contains0 = (startAngle <= 0 && 0 <= endAngle) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle);\n\t\t\t\tvar contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle);\n\t\t\t\tvar contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle);\n\t\t\t\tvar contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle);\n\t\t\t\tvar cutout = cutoutPercentage / 100.0;\n\t\t\t\tvar min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))};\n\t\t\t\tvar max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))};\n\t\t\t\tvar size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5};\n\t\t\t\tminSize = Math.min(availableWidth / size.width, availableHeight / size.height);\n\t\t\t\toffset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5};\n\t\t\t}\n chart.borderWidth = me.getMaxBorderWidth(meta.data);\n\n\t\t\tchart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\t\t\tchart.offsetX = offset.x * chart.outerRadius;\n\t\t\tchart.offsetY = offset.y * chart.outerRadius;\n\n\t\t\tmeta.total = me.calculateTotal();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index));\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart,\n\t\t\t\tchartArea = chart.chartArea,\n\t\t\t\topts = chart.options,\n\t\t\t\tanimationOpts = opts.animation,\n\t\t\t\tcenterX = (chartArea.left + chartArea.right) / 2,\n\t\t\t\tcenterY = (chartArea.top + chartArea.bottom) / 2,\n\t\t\t\tstartAngle = opts.rotation, // non reset case handled later\n\t\t\t\tendAngle = opts.rotation, // non reset case handled later\n\t\t\t\tdataset = me.getDataset(),\n\t\t\t\tcircumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)),\n\t\t\t\tinnerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius,\n\t\t\t\touterRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius,\n\t\t\t\tvalueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\t\tstartAngle: startAngle,\n\t\t\t\t\tendAngle: endAngle,\n\t\t\t\t\tcircumference: circumference,\n\t\t\t\t\touterRadius: outerRadius,\n\t\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\t\tlabel: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tvar model = arc._model;\n\t\t\t// Resets the visual styles\n\t\t\tthis.removeHoverStyle(arc);\n\n\t\t\t// Set correct angles if not resetting\n\t\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t\t} else {\n\t\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t\t}\n\n\t\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t\t}\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcalculateTotal: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar total = 0;\n\t\t\tvar value;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tvalue = dataset.data[index];\n\t\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\t\ttotal += Math.abs(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t/*if (total === 0) {\n\t\t\t\ttotal = NaN;\n\t\t\t}*/\n\n\t\t\treturn total;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar total = this.getMeta().total;\n\t\t\tif (total > 0 && !isNaN(value)) {\n\t\t\t\treturn (Math.PI * 2.0) * (value / total);\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\t\n\t\t//gets the max border or hover width to properly scale pie charts\n getMaxBorderWidth: function (elements) {\n var max = 0,\n\t\t\t\tindex = this.index,\n\t\t\t\tlength = elements.length,\n\t\t\t\tborderWidth,\n\t\t\t\thoverWidth;\n\n for (var i = 0; i < length; i++) {\n \tborderWidth = elements[i]._model ? elements[i]._model.borderWidth : 0;\n hoverWidth = elements[i]._chart ? elements[i]._chart.config.data.datasets[index].hoverBorderWidth : 0;\n\t\t\t\t\n max = borderWidth > max ? borderWidth : max;\n max = hoverWidth > max ? hoverWidth : max;\n }\n return max;\n }\n\t});\n};\n\n},{}],18:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.line = {\n\t\tshowLines: true,\n\t\tspanGaps: false,\n\n\t\thover: {\n\t\t\tmode: \"label\"\n\t\t},\n\n\t\tscales: {\n\t\t\txAxes: [{\n\t\t\t\ttype: \"category\",\n\t\t\t\tid: 'x-axis-0'\n\t\t\t}],\n\t\t\tyAxes: [{\n\t\t\t\ttype: \"linear\",\n\t\t\t\tid: 'y-axis-0'\n\t\t\t}]\n\t\t}\n\t};\n\n\tfunction lineEnabled(dataset, options) {\n\t\treturn helpers.getValueOrDefault(dataset.showLine, options.showLines);\n\t}\n\n\tChart.controllers.line = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: Chart.elements.Line,\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.chart.options;\n\t\t\tvar meta = me.getMeta();\n\n\t\t\tChart.DatasetController.prototype.addElementAndReset.call(me, index);\n\n\t\t\t// Make sure bezier control points are updated\n\t\t\tif (lineEnabled(me.getDataset(), options) && meta.dataset._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data || [];\n\t\t\tvar options = me.chart.options;\n\t\t\tvar lineElementOptions = options.elements.line;\n\t\t\tvar scale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar i, ilen, custom;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar showLine = lineEnabled(dataset, options);\n\n\t\t\t// Update Line\n\t\t\tif (showLine) {\n\t\t\t\tcustom = line.custom || {};\n\n\t\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t\t}\n\n\t\t\t\t// Utility\n\t\t\t\tline._scale = scale;\n\t\t\t\tline._datasetIndex = me.index;\n\t\t\t\t// Data\n\t\t\t\tline._children = points;\n\t\t\t\t// Model\n\t\t\t\tline._model = {\n\t\t\t\t\t// Appearance\n\t\t\t\t\t// The default behavior of lines is to break at null values, according\n\t\t\t\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t\t\t\t// This option gives linse the ability to span gaps\n\t\t\t\t\tspanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps,\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tsteppedLine: custom.steppedLine ? custom.steppedLine : helpers.getValueOrDefault(dataset.steppedLine, lineElementOptions.stepped),\n\t\t\t\t\tcubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.getValueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode),\n\t\t\t\t\t// Scale\n\t\t\t\t\tscaleTop: scale.top,\n\t\t\t\t\tscaleBottom: scale.bottom,\n\t\t\t\t\tscaleZero: scale.getBasePixel()\n\t\t\t\t};\n\n\t\t\t\tline.pivot();\n\t\t\t}\n\n\t\t\t// Update Points\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tme.updateElement(points[i], i, reset);\n\t\t\t}\n\n\t\t\tif (showLine && line._model.tension !== 0) {\n\t\t\t\tme.updateBezierControlPoints();\n\t\t\t}\n\n\t\t\t// Now pivot the point for animation\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tpoints[i].pivot();\n\t\t\t}\n\t\t},\n\n\t\tgetPointBackgroundColor: function(point, index) {\n\t\t\tvar backgroundColor = this.chart.options.elements.point.backgroundColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.backgroundColor) {\n\t\t\t\tbackgroundColor = custom.backgroundColor;\n\t\t\t} else if (dataset.pointBackgroundColor) {\n\t\t\t\tbackgroundColor = helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor);\n\t\t\t} else if (dataset.backgroundColor) {\n\t\t\t\tbackgroundColor = dataset.backgroundColor;\n\t\t\t}\n\n\t\t\treturn backgroundColor;\n\t\t},\n\n\t\tgetPointBorderColor: function(point, index) {\n\t\t\tvar borderColor = this.chart.options.elements.point.borderColor;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderColor) {\n\t\t\t\tborderColor = custom.borderColor;\n\t\t\t} else if (dataset.pointBorderColor) {\n\t\t\t\tborderColor = helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor);\n\t\t\t} else if (dataset.borderColor) {\n\t\t\t\tborderColor = dataset.borderColor;\n\t\t\t}\n\n\t\t\treturn borderColor;\n\t\t},\n\n\t\tgetPointBorderWidth: function(point, index) {\n\t\t\tvar borderWidth = this.chart.options.elements.point.borderWidth;\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar custom = point.custom || {};\n\n\t\t\tif (custom.borderWidth) {\n\t\t\t\tborderWidth = custom.borderWidth;\n\t\t\t} else if (dataset.pointBorderWidth) {\n\t\t\t\tborderWidth = helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth);\n\t\t\t} else if (dataset.borderWidth) {\n\t\t\t\tborderWidth = dataset.borderWidth;\n\t\t\t}\n\n\t\t\treturn borderWidth;\n\t\t},\n\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar datasetIndex = me.index;\n\t\t\tvar value = dataset.data[index];\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\t\tvar pointOptions = me.chart.options.elements.point;\n\t\t\tvar x, y;\n\t\t\tvar labels = me.chart.data.labels || [];\n\t\t\tvar includeOffset = (labels.length === 1 || dataset.data.length === 1) || me.chart.isCombo;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\t\t\tif ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) {\n\t\t\t\tdataset.pointHitRadius = dataset.hitRadius;\n\t\t\t}\n\n\t\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex, includeOffset);\n\t\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t\t// Utility\n\t\t\tpoint._xScale = xScale;\n\t\t\tpoint._yScale = yScale;\n\t\t\tpoint._datasetIndex = datasetIndex;\n\t\t\tpoint._index = index;\n\n\t\t\t// Desired view properties\n\t\t\tpoint._model = {\n\t\t\t\tx: x,\n\t\t\t\ty: y,\n\t\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t\t// Appearance\n\t\t\t\tradius: custom.radius || helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius),\n\t\t\t\tpointStyle: custom.pointStyle || helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle),\n\t\t\t\tbackgroundColor: me.getPointBackgroundColor(point, index),\n\t\t\t\tborderColor: me.getPointBorderColor(point, index),\n\t\t\t\tborderWidth: me.getPointBorderWidth(point, index),\n\t\t\t\ttension: meta.dataset._model ? meta.dataset._model.tension : 0,\n\t\t\t\tsteppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false,\n\t\t\t\t// Tooltip\n\t\t\t\thitRadius: custom.hitRadius || helpers.getValueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius)\n\t\t\t};\n\t\t},\n\n\t\tcalculatePointY: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\t\tvar sumPos = 0;\n\t\t\tvar sumNeg = 0;\n\t\t\tvar i, ds, dsMeta;\n\n\t\t\tif (yScale.options.stacked) {\n\t\t\t\tfor (i = 0; i < datasetIndex; i++) {\n\t\t\t\t\tds = chart.data.datasets[i];\n\t\t\t\t\tdsMeta = chart.getDatasetMeta(i);\n\t\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) {\n\t\t\t\t\t\tvar stackedRightValue = Number(yScale.getRightValue(ds.data[index]));\n\t\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar rightValue = Number(yScale.getRightValue(value));\n\t\t\t\tif (rightValue < 0) {\n\t\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t\t} else {\n\t\t\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn yScale.getPixelForValue(value);\n\t\t},\n\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar area = me.chart.chartArea;\n\n\t\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\t\tvar points = (meta.data || []);\n\t\t\tif (meta.dataset._model.spanGaps) points = points.filter(function(pt) { return !pt._model.skip; });\n\t\t\tvar i, ilen, point, model, controlPoints;\n\n\t\t\tfunction capControlPoint(pt, min, max) {\n\t\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t\t}\n\n\t\t\tif (meta.dataset._model.cubicInterpolationMode == 'monotone') {\n\t\t\t\thelpers.splineCurveMonotone(points);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tpoint = points[i];\n\t\t\t\t\tmodel = point._model;\n\t\t\t\t\tcontrolPoints = helpers.splineCurve(\n\t\t\t\t\t\thelpers.previousItem(points, i)._model,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\thelpers.nextItem(points, i)._model,\n\t\t\t\t\t\tmeta.dataset._model.tension\n\t\t\t\t\t);\n\t\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.chart.options.elements.line.capBezierPoints) {\n\t\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\t\tmodel = points[i]._model;\n\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t}\n\t\t\t}\n\n\t\t},\n\n\t\tdraw: function(ease) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar points = meta.data || [];\n\t\t\tvar easingDecimal = ease || 1;\n\t\t\tvar i, ilen;\n\n\t\t\t// Transition Point Locations\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tpoints[i].transition(easingDecimal);\n\t\t\t}\n\n\t\t\t// Transition and Draw the line\n\t\t\tif (lineEnabled(me.getDataset(), me.chart.options)) {\n\t\t\t\tmeta.dataset.transition(easingDecimal).draw();\n\t\t\t}\n\n\t\t\t// Draw the points\n\t\t\tfor (i=0, ilen=points.length; i<ilen; ++i) {\n\t\t\t\tpoints[i].draw();\n\t\t\t}\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius || helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor || helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor || helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth || helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.chart.data.datasets[point._datasetIndex];\n\t\t\tvar index = point._index;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar model = point._model;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) {\n\t\t\t\tdataset.pointRadius = dataset.radius;\n\t\t\t}\n\n\t\t\tmodel.radius = custom.radius || helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius);\n\t\t\tmodel.backgroundColor = me.getPointBackgroundColor(point, index);\n\t\t\tmodel.borderColor = me.getPointBorderColor(point, index);\n\t\t\tmodel.borderWidth = me.getPointBorderWidth(point, index);\n\t\t}\n\t});\n};\n\n},{}],19:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.polarArea = {\n\n\t\tscale: {\n\t\t\ttype: \"radialLinear\",\n\t\t\tlineArc: true, // so that lines are circular\n\t\t\tticks: {\n\t\t\t\tbeginAtZero: true\n\t\t\t}\n\t\t},\n\n\t\t//Boolean - Whether to animate the rotation of the chart\n\t\tanimation: {\n\t\t\tanimateRotate: true,\n\t\t\tanimateScale: true\n\t\t},\n\n\t\tstartAngle: -0.5 * Math.PI,\n\t\taspectRatio: 1,\n\t\tlegendCallback: function(chart) {\n\t\t\tvar text = [];\n\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar labels = data.labels;\n\n\t\t\tif (datasets.length) {\n\t\t\t\tfor (var i = 0; i < datasets[0].data.length; ++i) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + datasets[0].backgroundColor[i] + '\">');\n\t\t\t\t\tif (labels[i]) {\n\t\t\t\t\t\ttext.push(labels[i]);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</span></li>');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttext.push('</ul>');\n\t\t\treturn text.join(\"\");\n\t\t},\n\t\tlegend: {\n\t\t\tlabels: {\n\t\t\t\tgenerateLabels: function(chart) {\n\t\t\t\t\tvar data = chart.data;\n\t\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\t\tvar ds = data.datasets[0];\n\t\t\t\t\t\t\tvar arc = meta.data[i];\n\t\t\t\t\t\t\tvar custom = arc.custom || {};\n\t\t\t\t\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\t\t\t\t\tvar arcOpts = chart.options.elements.arc;\n\t\t\t\t\t\t\tvar fill = custom.backgroundColor ? custom.backgroundColor : getValueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor);\n\t\t\t\t\t\t\tvar stroke = custom.borderColor ? custom.borderColor : getValueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor);\n\t\t\t\t\t\t\tvar bw = custom.borderWidth ? custom.borderWidth : getValueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth);\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\t\tfillStyle: fill,\n\t\t\t\t\t\t\t\tstrokeStyle: stroke,\n\t\t\t\t\t\t\t\tlineWidth: bw,\n\t\t\t\t\t\t\t\thidden: isNaN(ds.data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tonClick: function(e, legendItem) {\n\t\t\t\tvar index = legendItem.index;\n\t\t\t\tvar chart = this.chart;\n\t\t\t\tvar i, ilen, meta;\n\n\t\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\n\t\t\t\tchart.update();\n\t\t\t}\n\t\t},\n\n\t\t// Need to override these to give a nice default\n\t\ttooltips: {\n\t\t\tcallbacks: {\n\t\t\t\ttitle: function() {\n\t\t\t\t\treturn '';\n\t\t\t\t},\n\t\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\t\treturn data.labels[tooltipItem.index] + ': ' + tooltipItem.yLabel;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.polarArea = Chart.DatasetController.extend({\n\n\t\tdataElementType: Chart.elements.Arc,\n\n\t\tlinkScales: helpers.noop,\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar chartArea = chart.chartArea;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar opts = chart.options;\n\t\t\tvar arcOpts = opts.elements.arc;\n\t\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\t\t\tchart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0);\n\t\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\n\t\t\tmeta.count = me.countVisibleElements();\n\n\t\t\thelpers.each(meta.data, function(arc, index) {\n\t\t\t\tme.updateElement(arc, index, reset);\n\t\t\t});\n\t\t},\n\n\t\tupdateElement: function(arc, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar opts = chart.options;\n\t\t\tvar animationOpts = opts.animation;\n\t\t\tvar scale = chart.scale;\n\t\t\tvar getValueAtIndexOrDefault = helpers.getValueAtIndexOrDefault;\n\t\t\tvar labels = chart.data.labels;\n\n\t\t\tvar circumference = me.calculateCircumference(dataset.data[index]);\n\t\t\tvar centerX = scale.xCenter;\n\t\t\tvar centerY = scale.yCenter;\n\n\t\t\t// If there is NaN data before us, we need to calculate the starting angle correctly.\n\t\t\t// We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data\n\t\t\tvar visibleCount = 0;\n\t\t\tvar meta = me.getMeta();\n\t\t\tfor (var i = 0; i < index; ++i) {\n\t\t\t\tif (!isNaN(dataset.data[i]) && !meta.data[i].hidden) {\n\t\t\t\t\t++visibleCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//var negHalfPI = -0.5 * Math.PI;\n\t\t\tvar datasetStartAngle = opts.startAngle;\n\t\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\t\tvar startAngle = datasetStartAngle + (circumference * visibleCount);\n\t\t\tvar endAngle = startAngle + (arc.hidden ? 0 : circumference);\n\n\t\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\n\t\t\thelpers.extend(arc, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: centerX,\n\t\t\t\t\ty: centerY,\n\t\t\t\t\tinnerRadius: 0,\n\t\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\t\tlabel: getValueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply border and fill style\n\t\t\tme.removeHoverStyle(arc);\n\n\t\t\tarc.pivot();\n\t\t},\n\n\t\tremoveHoverStyle: function(arc) {\n\t\t\tChart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc);\n\t\t},\n\n\t\tcountVisibleElements: function() {\n\t\t\tvar dataset = this.getDataset();\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar count = 0;\n\n\t\t\thelpers.each(meta.data, function(element, index) {\n\t\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn count;\n\t\t},\n\n\t\tcalculateCircumference: function(value) {\n\t\t\tvar count = this.getMeta().count;\n\t\t\tif (count > 0 && !isNaN(value)) {\n\t\t\t\treturn (2 * Math.PI) / count;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],20:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.radar = {\n\t\tscale: {\n\t\t\ttype: \"radialLinear\"\n\t\t},\n\t\telements: {\n\t\t\tline: {\n\t\t\t\ttension: 0 // no bezier in radar\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.controllers.radar = Chart.DatasetController.extend({\n\n\t\tdatasetElementType: Chart.elements.Line,\n\n\t\tdataElementType: Chart.elements.Point,\n\n\t\tlinkScales: helpers.noop,\n\n\t\taddElementAndReset: function(index) {\n\t\t\tChart.DatasetController.prototype.addElementAndReset.call(this, index);\n\n\t\t\t// Make sure bezier control points are updated\n\t\t\tthis.updateBezierControlPoints();\n\t\t},\n\n\t\tupdate: function(reset) {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar line = meta.dataset;\n\t\t\tvar points = meta.data;\n\t\t\tvar custom = line.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar lineElementOptions = me.chart.options.elements.line;\n\t\t\tvar scale = me.chart.scale;\n\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) {\n\t\t\t\tdataset.lineTension = dataset.tension;\n\t\t\t}\n\n\t\t\thelpers.extend(meta.dataset, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t// Data\n\t\t\t\t_children: points,\n\t\t\t\t_loop: true,\n\t\t\t\t// Model\n\t\t\t\t_model: {\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.lineTension, lineElementOptions.tension),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor),\n\t\t\t\t\tfill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill),\n\t\t\t\t\tborderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle),\n\t\t\t\t\tborderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash),\n\t\t\t\t\tborderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset),\n\t\t\t\t\tborderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle),\n\n\t\t\t\t\t// Scale\n\t\t\t\t\tscaleTop: scale.top,\n\t\t\t\t\tscaleBottom: scale.bottom,\n\t\t\t\t\tscaleZero: scale.getBasePosition()\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmeta.dataset.pivot();\n\n\t\t\t// Update Points\n\t\t\thelpers.each(points, function(point, index) {\n\t\t\t\tme.updateElement(point, index, reset);\n\t\t\t}, me);\n\n\n\t\t\t// Update bezier control points\n\t\t\tme.updateBezierControlPoints();\n\t\t},\n\t\tupdateElement: function(point, index, reset) {\n\t\t\tvar me = this;\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar dataset = me.getDataset();\n\t\t\tvar scale = me.chart.scale;\n\t\t\tvar pointElementOptions = me.chart.options.elements.point;\n\t\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\n\t\t\thelpers.extend(point, {\n\t\t\t\t// Utility\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index,\n\t\t\t\t_scale: scale,\n\n\t\t\t\t// Desired view properties\n\t\t\t\t_model: {\n\t\t\t\t\tx: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\t\t\ty: reset ? scale.yCenter : pointPosition.y,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\ttension: custom.tension ? custom.tension : helpers.getValueOrDefault(dataset.tension, me.chart.options.elements.line.tension),\n\t\t\t\t\tradius: custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius),\n\t\t\t\t\tbackgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor),\n\t\t\t\t\tborderColor: custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor),\n\t\t\t\t\tborderWidth: custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth),\n\t\t\t\t\tpointStyle: custom.pointStyle ? custom.pointStyle : helpers.getValueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle),\n\n\t\t\t\t\t// Tooltip\n\t\t\t\t\thitRadius: custom.hitRadius ? custom.hitRadius : helpers.getValueAtIndexOrDefault(dataset.hitRadius, index, pointElementOptions.hitRadius)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tpoint._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y));\n\t\t},\n\t\tupdateBezierControlPoints: function() {\n\t\t\tvar chartArea = this.chart.chartArea;\n\t\t\tvar meta = this.getMeta();\n\n\t\t\thelpers.each(meta.data, function(point, index) {\n\t\t\t\tvar model = point._model;\n\t\t\t\tvar controlPoints = helpers.splineCurve(\n\t\t\t\t\thelpers.previousItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers.nextItem(meta.data, index, true)._model,\n\t\t\t\t\tmodel.tension\n\t\t\t\t);\n\n\t\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\t\tmodel.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\tmodel.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left);\n\t\t\t\tmodel.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top);\n\n\t\t\t\t// Now pivot the point for animation\n\t\t\t\tpoint.pivot();\n\t\t\t});\n\t\t},\n\n\t\tdraw: function(ease) {\n\t\t\tvar meta = this.getMeta();\n\t\t\tvar easingDecimal = ease || 1;\n\n\t\t\t// Transition Point Locations\n\t\t\thelpers.each(meta.data, function(point) {\n\t\t\t\tpoint.transition(easingDecimal);\n\t\t\t});\n\n\t\t\t// Transition and Draw the line\n\t\t\tmeta.dataset.transition(easingDecimal).draw();\n\n\t\t\t// Draw the points\n\t\t\thelpers.each(meta.data, function(point) {\n\t\t\t\tpoint.draw();\n\t\t\t});\n\t\t},\n\n\t\tsetHoverStyle: function(point) {\n\t\t\t// Point\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\n\t\t\tmodel.radius = custom.hoverRadius ? custom.hoverRadius : helpers.getValueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius);\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.getValueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth);\n\t\t},\n\n\t\tremoveHoverStyle: function(point) {\n\t\t\tvar dataset = this.chart.data.datasets[point._datasetIndex];\n\t\t\tvar custom = point.custom || {};\n\t\t\tvar index = point._index;\n\t\t\tvar model = point._model;\n\t\t\tvar pointElementOptions = this.chart.options.elements.point;\n\n\t\t\tmodel.radius = custom.radius ? custom.radius : helpers.getValueAtIndexOrDefault(dataset.radius, index, pointElementOptions.radius);\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.getValueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : helpers.getValueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.getValueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth);\n\t\t}\n\t});\n};\n\n},{}],21:[function(require,module,exports){\n/*global window: false */\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.global.animation = {\n\t\tduration: 1000,\n\t\teasing: \"easeOutQuart\",\n\t\tonProgress: helpers.noop,\n\t\tonComplete: helpers.noop\n\t};\n\n\tChart.Animation = Chart.Element.extend({\n\t\tcurrentStep: null, // the current animation step\n\t\tnumSteps: 60, // default number of steps\n\t\teasing: \"\", // the easing to use for this animation\n\t\trender: null, // render function used by the animation service\n\n\t\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\t\tonAnimationComplete: null // user specified callback to fire when the animation finishes\n\t});\n\n\tChart.animationService = {\n\t\tframeDuration: 17,\n\t\tanimations: [],\n\t\tdropFrames: 0,\n\t\trequest: null,\n\t\taddAnimation: function(chartInstance, animationObject, duration, lazy) {\n\t\t\tvar me = this;\n\n\t\t\tif (!lazy) {\n\t\t\t\tchartInstance.animating = true;\n\t\t\t}\n\n\t\t\tfor (var index = 0; index < me.animations.length; ++index) {\n\t\t\t\tif (me.animations[index].chartInstance === chartInstance) {\n\t\t\t\t\t// replacing an in progress animation\n\t\t\t\t\tme.animations[index].animationObject = animationObject;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.animations.push({\n\t\t\t\tchartInstance: chartInstance,\n\t\t\t\tanimationObject: animationObject\n\t\t\t});\n\n\t\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\t\tif (me.animations.length === 1) {\n\t\t\t\tme.requestAnimationFrame();\n\t\t\t}\n\t\t},\n\t\t// Cancel the animation for a given chart instance\n\t\tcancelAnimation: function(chartInstance) {\n\t\t\tvar index = helpers.findIndex(this.animations, function(animationWrapper) {\n\t\t\t\treturn animationWrapper.chartInstance === chartInstance;\n\t\t\t});\n\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.animations.splice(index, 1);\n\t\t\t\tchartInstance.animating = false;\n\t\t\t}\n\t\t},\n\t\trequestAnimationFrame: function() {\n\t\t\tvar me = this;\n\t\t\tif (me.request === null) {\n\t\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\t\tme.request = helpers.requestAnimFrame.call(window, function() {\n\t\t\t\t\tme.request = null;\n\t\t\t\t\tme.startDigest();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tstartDigest: function() {\n\t\t\tvar me = this;\n\n\t\t\tvar startTime = Date.now();\n\t\t\tvar framesToDrop = 0;\n\n\t\t\tif (me.dropFrames > 1) {\n\t\t\t\tframesToDrop = Math.floor(me.dropFrames);\n\t\t\t\tme.dropFrames = me.dropFrames % 1;\n\t\t\t}\n\n\t\t\tvar i = 0;\n\t\t\twhile (i < me.animations.length) {\n\t\t\t\tif (me.animations[i].animationObject.currentStep === null) {\n\t\t\t\t\tme.animations[i].animationObject.currentStep = 0;\n\t\t\t\t}\n\n\t\t\t\tme.animations[i].animationObject.currentStep += 1 + framesToDrop;\n\n\t\t\t\tif (me.animations[i].animationObject.currentStep > me.animations[i].animationObject.numSteps) {\n\t\t\t\t\tme.animations[i].animationObject.currentStep = me.animations[i].animationObject.numSteps;\n\t\t\t\t}\n\n\t\t\t\tme.animations[i].animationObject.render(me.animations[i].chartInstance, me.animations[i].animationObject);\n\t\t\t\tif (me.animations[i].animationObject.onAnimationProgress && me.animations[i].animationObject.onAnimationProgress.call) {\n\t\t\t\t\tme.animations[i].animationObject.onAnimationProgress.call(me.animations[i].chartInstance, me.animations[i]);\n\t\t\t\t}\n\n\t\t\t\tif (me.animations[i].animationObject.currentStep === me.animations[i].animationObject.numSteps) {\n\t\t\t\t\tif (me.animations[i].animationObject.onAnimationComplete && me.animations[i].animationObject.onAnimationComplete.call) {\n\t\t\t\t\t\tme.animations[i].animationObject.onAnimationComplete.call(me.animations[i].chartInstance, me.animations[i]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// executed the last frame. Remove the animation.\n\t\t\t\t\tme.animations[i].chartInstance.animating = false;\n\n\t\t\t\t\tme.animations.splice(i, 1);\n\t\t\t\t} else {\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar endTime = Date.now();\n\t\t\tvar dropFrames = (endTime - startTime) / me.frameDuration;\n\n\t\t\tme.dropFrames += dropFrames;\n\n\t\t\t// Do we have more stuff to animate?\n\t\t\tif (me.animations.length > 0) {\n\t\t\t\tme.requestAnimationFrame();\n\t\t\t}\n\t\t}\n\t};\n};\n},{}],22:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\t// Global Chart canvas helpers object for drawing items to canvas\n\tvar helpers = Chart.canvasHelpers = {};\n\n\thelpers.drawPoint = function(ctx, pointStyle, radius, x, y) {\n\t\tvar type, edgeLength, xOffset, yOffset, height, size;\n\n\t\tif (typeof pointStyle === 'object') {\n\t\t\ttype = pointStyle.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.drawImage(pointStyle, x - pointStyle.width / 2, y - pointStyle.height / 2);\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\tswitch (pointStyle) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(x, y, radius, 0, Math.PI * 2);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.beginPath();\n\t\t\tedgeLength = 3 * radius / Math.sqrt(3);\n\t\t\theight = edgeLength * Math.sqrt(3) / 2;\n\t\t\tctx.moveTo(x - edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x + edgeLength / 2, y + height / 3);\n\t\t\tctx.lineTo(x, y - 2 * height / 3);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.fillRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tctx.strokeRect(x - size, y - size, 2 * size, 2 * size);\n\t\t\tbreak;\n\t\tcase 'rectRot':\n\t\t\tsize = 1 / Math.SQRT2 * radius;\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - size, y);\n\t\t\tctx.lineTo(x, y + size);\n\t\t\tctx.lineTo(x + size, y);\n\t\t\tctx.lineTo(x, y - size);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t\tbreak;\n\t\tcase 'cross':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\tctx.beginPath();\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y + radius);\n\t\t\tctx.lineTo(x, y - radius);\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\txOffset = Math.cos(Math.PI / 4) * radius;\n\t\t\tyOffset = Math.sin(Math.PI / 4) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x - xOffset, y + yOffset);\n\t\t\tctx.lineTo(x + xOffset, y - yOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x - radius, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + radius, y);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.stroke();\n\t};\n};\n},{}],23:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\t//Create a dictionary of chart types, to allow for extension of existing types\n\tChart.types = {};\n\n\t//Store a reference to each instance - allowing us to globally resize chart instances on window resize.\n\t//Destroy method on the chart will remove the instance of the chart from this reference.\n\tChart.instances = {};\n\n\t// Controllers available for dataset visualization eg. bar, line, slice, etc.\n\tChart.controllers = {};\n\n\t/**\n\t * @class Chart.Controller\n\t * The main controller of a chart.\n\t */\n\tChart.Controller = function(instance) {\n\n\t\tthis.chart = instance;\n\t\tthis.config = instance.config;\n\t\tthis.options = this.config.options = helpers.configMerge(Chart.defaults.global, Chart.defaults[this.config.type], this.config.options || {});\n\t\tthis.id = helpers.uid();\n\n\t\tObject.defineProperty(this, 'data', {\n\t\t\tget: function() {\n\t\t\t\treturn this.config.data;\n\t\t\t}\n\t\t});\n\n\t\t//Add the chart instance to the global namespace\n\t\tChart.instances[this.id] = this;\n\n\t\tif (this.options.responsive) {\n\t\t\t// Silent resize before chart draws\n\t\t\tthis.resize(true);\n\t\t}\n\n\t\tthis.initialize();\n\n\t\treturn this;\n\t};\n\n\thelpers.extend(Chart.Controller.prototype, /** @lends Chart.Controller */ {\n\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\t// Before init plugin notification\n\t\t\tChart.plugins.notify('beforeInit', [me]);\n\n\t\t\tme.bindEvents();\n\n\t\t\t// Make sure controllers are built first so that each dataset is bound to an axis before the scales\n\t\t\t// are built\n\t\t\tme.ensureScalesHaveIDs();\n\t\t\tme.buildOrUpdateControllers();\n\t\t\tme.buildScales();\n\t\t\tme.updateLayout();\n\t\t\tme.resetElements();\n\t\t\tme.initToolTip();\n\t\t\tme.update();\n\n\t\t\t// After init plugin notification\n\t\t\tChart.plugins.notify('afterInit', [me]);\n\n\t\t\treturn me;\n\t\t},\n\n\t\tclear: function() {\n\t\t\thelpers.clear(this.chart);\n\t\t\treturn this;\n\t\t},\n\n\t\tstop: function() {\n\t\t\t// Stops any current animation loop occuring\n\t\t\tChart.animationService.cancelAnimation(this);\n\t\t\treturn this;\n\t\t},\n\n\t\tresize: function resize(silent) {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tvar canvas = chart.canvas;\n\t\t\tvar newWidth = helpers.getMaximumWidth(canvas);\n\t\t\tvar aspectRatio = chart.aspectRatio;\n\t\t\tvar newHeight = (me.options.maintainAspectRatio && isNaN(aspectRatio) === false && isFinite(aspectRatio) && aspectRatio !== 0) ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas);\n\n\t\t\tvar sizeChanged = chart.width !== newWidth || chart.height !== newHeight;\n\n\t\t\tif (!sizeChanged) {\n\t\t\t\treturn me;\n\t\t\t}\n\n\t\t\tcanvas.width = chart.width = newWidth;\n\t\t\tcanvas.height = chart.height = newHeight;\n\n\t\t\thelpers.retinaScale(chart);\n\n\t\t\t// Notify any plugins about the resize\n\t\t\tvar newSize = { width: newWidth, height: newHeight };\n\t\t\tChart.plugins.notify('resize', [me, newSize]);\n\n\t\t\t// Notify of resize\n\t\t\tif (me.options.onResize) {\n\t\t\t\tme.options.onResize(me, newSize);\n\t\t\t}\n\n\t\t\tif (!silent) {\n\t\t\t\tme.stop();\n\t\t\t\tme.update(me.options.responsiveAnimationDuration);\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\n\t\tensureScalesHaveIDs: function() {\n\t\t\tvar options = this.options;\n\t\t\tvar scalesOptions = options.scales || {};\n\t\t\tvar scaleOptions = options.scale;\n\n\t\t\thelpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {\n\t\t\t\txAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);\n\t\t\t});\n\n\t\t\thelpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {\n\t\t\t\tyAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);\n\t\t\t});\n\n\t\t\tif (scaleOptions) {\n\t\t\t\tscaleOptions.id = scaleOptions.id || 'scale';\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Builds a map of scale ID to scale object for future lookup.\n\t\t */\n\t\tbuildScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tvar scales = me.scales = {};\n\t\t\tvar items = [];\n\n\t\t\tif (options.scales) {\n\t\t\t\titems = items.concat(\n\t\t\t\t\t(options.scales.xAxes || []).map(function(xAxisOptions) {\n\t\t\t\t\t\treturn { options: xAxisOptions, dtype: 'category' }; }),\n\t\t\t\t\t(options.scales.yAxes || []).map(function(yAxisOptions) {\n\t\t\t\t\t\treturn { options: yAxisOptions, dtype: 'linear' }; }));\n\t\t\t}\n\n\t\t\tif (options.scale) {\n\t\t\t\titems.push({ options: options.scale, dtype: 'radialLinear', isDefault: true });\n\t\t\t}\n\n\t\t\thelpers.each(items, function(item) {\n\t\t\t\tvar scaleOptions = item.options;\n\t\t\t\tvar scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype);\n\t\t\t\tvar scaleClass = Chart.scaleService.getScaleConstructor(scaleType);\n\t\t\t\tif (!scaleClass) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar scale = new scaleClass({\n\t\t\t\t\tid: scaleOptions.id,\n\t\t\t\t\toptions: scaleOptions,\n\t\t\t\t\tctx: me.chart.ctx,\n\t\t\t\t\tchart: me\n\t\t\t\t});\n\n\t\t\t\tscales[scale.id] = scale;\n\n\t\t\t\t// TODO(SB): I think we should be able to remove this custom case (options.scale)\n\t\t\t\t// and consider it as a regular scale part of the \"scales\"\" map only! This would\n\t\t\t\t// make the logic easier and remove some useless? custom code.\n\t\t\t\tif (item.isDefault) {\n\t\t\t\t\tme.scale = scale;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tChart.scaleService.addScalesToLayout(this);\n\t\t},\n\n\t\tupdateLayout: function() {\n\t\t\tChart.layoutService.update(this, this.chart.width, this.chart.height);\n\t\t},\n\n\t\tbuildOrUpdateControllers: function() {\n\t\t\tvar me = this;\n\t\t\tvar types = [];\n\t\t\tvar newControllers = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\tif (!meta.type) {\n\t\t\t\t\tmeta.type = dataset.type || me.config.type;\n\t\t\t\t}\n\n\t\t\t\ttypes.push(meta.type);\n\n\t\t\t\tif (meta.controller) {\n\t\t\t\t\tmeta.controller.updateIndex(datasetIndex);\n\t\t\t\t} else {\n\t\t\t\t\tmeta.controller = new Chart.controllers[meta.type](me, datasetIndex);\n\t\t\t\t\tnewControllers.push(meta.controller);\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\tif (types.length > 1) {\n\t\t\t\tfor (var i = 1; i < types.length; i++) {\n\t\t\t\t\tif (types[i] !== types[i - 1]) {\n\t\t\t\t\t\tme.isCombo = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn newControllers;\n\t\t},\n\n\t\tresetElements: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.reset();\n\t\t\t}, me);\n\t\t},\n\n\t\tupdate: function update(animationDuration, lazy) {\n\t\t\tvar me = this;\n\t\t\tChart.plugins.notify('beforeUpdate', [me]);\n\n\t\t\t// In case the entire data object changed\n\t\t\tme.tooltip._data = me.data;\n\n\t\t\t// Make sure dataset controllers are updated and new controllers are reset\n\t\t\tvar newControllers = me.buildOrUpdateControllers();\n\n\t\t\t// Make sure all dataset controllers have correct meta data counts\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tme.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();\n\t\t\t}, me);\n\n\t\t\tChart.layoutService.update(me, me.chart.width, me.chart.height);\n\n\t\t\t// Apply changes to the dataets that require the scales to have been calculated i.e BorderColor chages\n\t\t\tChart.plugins.notify('afterScaleUpdate', [me]);\n\n\t\t\t// Can only reset the new controllers after the scales have been updated\n\t\t\thelpers.each(newControllers, function(controller) {\n\t\t\t\tcontroller.reset();\n\t\t\t});\n\n\t\t\tme.updateDatasets();\n\n\t\t\t// Do this before render so that any plugins that need final scale updates can use it\n\t\t\tChart.plugins.notify('afterUpdate', [me]);\n\n\t\t\tme.render(animationDuration, lazy);\n\t\t},\n\n\t\t/**\n\t\t * @method beforeDatasetsUpdate\n\t\t * @description Called before all datasets are updated. If a plugin returns false,\n\t\t * the datasets update will be cancelled until another chart update is triggered.\n\t\t * @param {Object} instance the chart instance being updated.\n\t\t * @returns {Boolean} false to cancel the datasets update.\n\t\t * @memberof Chart.PluginBase\n\t\t * @since version 2.1.5\n\t\t * @instance\n\t\t */\n\n\t\t/**\n\t\t * @method afterDatasetsUpdate\n\t\t * @description Called after all datasets have been updated. Note that this\n\t\t * extension will not be called if the datasets update has been cancelled.\n\t\t * @param {Object} instance the chart instance being updated.\n\t\t * @memberof Chart.PluginBase\n\t\t * @since version 2.1.5\n\t\t * @instance\n\t\t */\n\n\t\t/**\n\t\t * Updates all datasets unless a plugin returns false to the beforeDatasetsUpdate\n\t\t * extension, in which case no datasets will be updated and the afterDatasetsUpdate\n\t\t * notification will be skipped.\n\t\t * @protected\n\t\t * @instance\n\t\t */\n\t\tupdateDatasets: function() {\n\t\t\tvar me = this;\n\t\t\tvar i, ilen;\n\n\t\t\tif (Chart.plugins.notify('beforeDatasetsUpdate', [ me ])) {\n\t\t\t\tfor (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) {\n\t\t\t\t\tme.getDatasetMeta(i).controller.update();\n\t\t\t\t}\n\n\t\t\t\tChart.plugins.notify('afterDatasetsUpdate', [ me ]);\n\t\t\t}\n\t\t},\n\n\t\trender: function render(duration, lazy) {\n\t\t\tvar me = this;\n\t\t\tChart.plugins.notify('beforeRender', [me]);\n\n\t\t\tvar animationOptions = me.options.animation;\n\t\t\tif (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {\n\t\t\t\tvar animation = new Chart.Animation();\n\t\t\t\tanimation.numSteps = (duration || animationOptions.duration) / 16.66; //60 fps\n\t\t\t\tanimation.easing = animationOptions.easing;\n\n\t\t\t\t// render function\n\t\t\t\tanimation.render = function(chartInstance, animationObject) {\n\t\t\t\t\tvar easingFunction = helpers.easingEffects[animationObject.easing];\n\t\t\t\t\tvar stepDecimal = animationObject.currentStep / animationObject.numSteps;\n\t\t\t\t\tvar easeDecimal = easingFunction(stepDecimal);\n\n\t\t\t\t\tchartInstance.draw(easeDecimal, stepDecimal, animationObject.currentStep);\n\t\t\t\t};\n\n\t\t\t\t// user events\n\t\t\t\tanimation.onAnimationProgress = animationOptions.onProgress;\n\t\t\t\tanimation.onAnimationComplete = animationOptions.onComplete;\n\n\t\t\t\tChart.animationService.addAnimation(me, animation, duration, lazy);\n\t\t\t} else {\n\t\t\t\tme.draw();\n\t\t\t\tif (animationOptions && animationOptions.onComplete && animationOptions.onComplete.call) {\n\t\t\t\t\tanimationOptions.onComplete.call(me);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn me;\n\t\t},\n\n\t\tdraw: function(ease) {\n\t\t\tvar me = this;\n\t\t\tvar easingDecimal = ease || 1;\n\t\t\tme.clear();\n\n\t\t\tChart.plugins.notify('beforeDraw', [me, easingDecimal]);\n\n\t\t\t// Draw all the scales\n\t\t\thelpers.each(me.boxes, function(box) {\n\t\t\t\tbox.draw(me.chartArea);\n\t\t\t}, me);\n\t\t\tif (me.scale) {\n\t\t\t\tme.scale.draw();\n\t\t\t}\n\n\t\t\tChart.plugins.notify('beforeDatasetsDraw', [me, easingDecimal]);\n\n\t\t\t// Draw each dataset via its respective controller (reversed to support proper line stacking)\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tme.getDatasetMeta(datasetIndex).controller.draw(ease);\n\t\t\t\t}\n\t\t\t}, me, true);\n\n\t\t\tChart.plugins.notify('afterDatasetsDraw', [me, easingDecimal]);\n\n\t\t\t// Finally draw the tooltip\n\t\t\tme.tooltip.transition(easingDecimal).draw();\n\n\t\t\tChart.plugins.notify('afterDraw', [me, easingDecimal]);\n\t\t},\n\n\t\t// Get the single element that was clicked on\n\t\t// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw\n\t\tgetElementAtEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\tvar elementsArray = [];\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t\thelpers.each(meta.data, function(element) {\n\t\t\t\t\t\tif (element.inRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\telementsArray.push(element);\n\t\t\t\t\t\t\treturn elementsArray;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elementsArray.slice(0, 1);\n\t\t},\n\n\t\tgetElementsAtEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\tvar elementsArray = [];\n\n\t\t\tvar found = (function() {\n\t\t\t\tif (me.data.datasets) {\n\t\t\t\t\tfor (var i = 0; i < me.data.datasets.length; i++) {\n\t\t\t\t\t\tvar meta = me.getDatasetMeta(i);\n\t\t\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tfor (var j = 0; j < meta.data.length; j++) {\n\t\t\t\t\t\t\t\tif (meta.data[j].inRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\t\t\treturn meta.data[j];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).call(me);\n\n\t\t\tif (!found) {\n\t\t\t\treturn elementsArray;\n\t\t\t}\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex),\n\t\t\t\t\t\telement = meta.data[found._index];\n\t\t\t\t\tif(element && !element._view.skip){\n\t\t\t\t\t\telementsArray.push(element);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn elementsArray;\n\t\t},\n\n\t\tgetElementsAtXAxis: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar eventPosition = helpers.getRelativePosition(e, me.chart);\n\t\t\tvar elementsArray = [];\n\n\t\t\tvar found = (function() {\n\t\t\t\tif (me.data.datasets) {\n\t\t\t\t\tfor (var i = 0; i < me.data.datasets.length; i++) {\n\t\t\t\t\t\tvar meta = me.getDatasetMeta(i);\n\t\t\t\t\t\tif (me.isDatasetVisible(i)) {\n\t\t\t\t\t\t\tfor (var j = 0; j < meta.data.length; j++) {\n\t\t\t\t\t\t\t\tif (meta.data[j].inLabelRange(eventPosition.x, eventPosition.y)) {\n\t\t\t\t\t\t\t\t\treturn meta.data[j];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}).call(me);\n\n\t\t\tif (!found) {\n\t\t\t\treturn elementsArray;\n\t\t\t}\n\n\t\t\thelpers.each(me.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (me.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = me.getDatasetMeta(datasetIndex);\n\t\t\t\t\tvar index = helpers.findIndex(meta.data, function (it) {\n\t\t\t\t\t\treturn found._model.x === it._model.x;\n\t\t\t\t\t});\n\t\t\t\t\tif(index !== -1 && !meta.data[index]._view.skip) {\n\t\t\t\t\t\telementsArray.push(meta.data[index]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, me);\n\n\t\t\treturn elementsArray;\n\t\t},\t\t\n\n\t\tgetElementsAtEventForMode: function(e, mode) {\n\t\t\tvar me = this;\n\t\t\tswitch (mode) {\n\t\t\tcase 'single':\n\t\t\t\treturn me.getElementAtEvent(e);\n\t\t\tcase 'label':\n\t\t\t\treturn me.getElementsAtEvent(e);\n\t\t\tcase 'dataset':\n\t\t\t\treturn me.getDatasetAtEvent(e);\n case 'x-axis':\n return me.getElementsAtXAxis(e);\n\t\t\tdefault:\n\t\t\t\treturn e;\n\t\t\t}\n\t\t},\n\n\t\tgetDatasetAtEvent: function(e) {\n\t\t\tvar elementsArray = this.getElementAtEvent(e);\n\n\t\t\tif (elementsArray.length > 0) {\n\t\t\t\telementsArray = this.getDatasetMeta(elementsArray[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn elementsArray;\n\t\t},\n\n\t\tgetDatasetMeta: function(datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar dataset = me.data.datasets[datasetIndex];\n\t\t\tif (!dataset._meta) {\n\t\t\t\tdataset._meta = {};\n\t\t\t}\n\n\t\t\tvar meta = dataset._meta[me.id];\n\t\t\tif (!meta) {\n\t\t\t\tmeta = dataset._meta[me.id] = {\n\t\t\t\ttype: null,\n\t\t\t\tdata: [],\n\t\t\t\tdataset: null,\n\t\t\t\tcontroller: null,\n\t\t\t\thidden: null,\t\t\t// See isDatasetVisible() comment\n\t\t\t\txAxisID: null,\n\t\t\t\tyAxisID: null\n\t\t\t};\n\t\t\t}\n\n\t\t\treturn meta;\n\t\t},\n\n\t\tgetVisibleDatasetCount: function() {\n\t\t\tvar count = 0;\n\t\t\tfor (var i = 0, ilen = this.data.datasets.length; i<ilen; ++i) {\n\t\t\t\t if (this.isDatasetVisible(i)) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\tisDatasetVisible: function(datasetIndex) {\n\t\t\tvar meta = this.getDatasetMeta(datasetIndex);\n\n\t\t\t// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,\n\t\t\t// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.\n\t\t\treturn typeof meta.hidden === 'boolean'? !meta.hidden : !this.data.datasets[datasetIndex].hidden;\n\t\t},\n\n\t\tgenerateLegend: function() {\n\t\t\treturn this.options.legendCallback(this);\n\t\t},\n\n\t\tdestroy: function() {\n\t\t\tvar me = this;\n\t\t\tme.stop();\n\t\t\tme.clear();\n\t\t\thelpers.unbindEvents(me, me.events);\n\t\t\thelpers.removeResizeListener(me.chart.canvas.parentNode);\n\n\t\t\t// Reset canvas height/width attributes\n\t\t\tvar canvas = me.chart.canvas;\n\t\t\tcanvas.width = me.chart.width;\n\t\t\tcanvas.height = me.chart.height;\n\n\t\t\t// if we scaled the canvas in response to a devicePixelRatio !== 1, we need to undo that transform here\n\t\t\tif (me.chart.originalDevicePixelRatio !== undefined) {\n\t\t\t\tme.chart.ctx.scale(1 / me.chart.originalDevicePixelRatio, 1 / me.chart.originalDevicePixelRatio);\n\t\t\t}\n\n\t\t\t// Reset to the old style since it may have been changed by the device pixel ratio changes\n\t\t\tcanvas.style.width = me.chart.originalCanvasStyleWidth;\n\t\t\tcanvas.style.height = me.chart.originalCanvasStyleHeight;\n\n\t\t\tChart.plugins.notify('destroy', [me]);\n\n\t\t\tdelete Chart.instances[me.id];\n\t\t},\n\n\t\ttoBase64Image: function() {\n\t\t\treturn this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments);\n\t\t},\n\n\t\tinitToolTip: function() {\n\t\t\tvar me = this;\n\t\t\tme.tooltip = new Chart.Tooltip({\n\t\t\t\t_chart: me.chart,\n\t\t\t\t_chartInstance: me,\n\t\t\t\t_data: me.data,\n\t\t\t\t_options: me.options.tooltips\n\t\t\t}, me);\n\t\t},\n\n\t\tbindEvents: function() {\n\t\t\tvar me = this;\n\t\t\thelpers.bindEvents(me, me.options.events, function(evt) {\n\t\t\t\tme.eventHandler(evt);\n\t\t\t});\n\t\t},\n\n\t\tupdateHoverStyle: function(elements, mode, enabled) {\n\t\t\tvar method = enabled? 'setHoverStyle' : 'removeHoverStyle';\n\t\t\tvar element, i, ilen;\n\n\t\t\tswitch (mode) {\n\t\t\tcase 'single':\n\t\t\t\telements = [ elements[0] ];\n\t\t\t\tbreak;\n\t\t\tcase 'label':\n\t\t\tcase 'dataset':\n case 'x-axis':\n\t\t\t\t// elements = elements;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// unsupported mode\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (i=0, ilen=elements.length; i<ilen; ++i) {\n\t\t\t\telement = elements[i];\n\t\t\t\tif (element) {\n\t\t\t\t\tthis.getDatasetMeta(element._datasetIndex).controller[method](element);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\teventHandler: function eventHandler(e) {\n\t\t\tvar me = this;\n\t\t\tvar tooltip = me.tooltip;\n\t\t\tvar options = me.options || {};\n\t\t\tvar hoverOptions = options.hover;\n\t\t\tvar tooltipsOptions = options.tooltips;\n\n\t\t\tme.lastActive = me.lastActive || [];\n\t\t\tme.lastTooltipActive = me.lastTooltipActive || [];\n\n\t\t\t// Find Active Elements for hover and tooltips\n\t\t\tif (e.type === 'mouseout') {\n\t\t\t\tme.active = [];\n\t\t\t\tme.tooltipActive = [];\n\t\t\t} else {\n\t\t\t\tme.active = me.getElementsAtEventForMode(e, hoverOptions.mode);\n\t\t\t\tme.tooltipActive = me.getElementsAtEventForMode(e, tooltipsOptions.mode);\n\t\t\t}\n\n\t\t\t// On Hover hook\n\t\t\tif (hoverOptions.onHover) {\n\t\t\t\thoverOptions.onHover.call(me, me.active);\n\t\t\t}\n\n\t\t\tif (e.type === 'mouseup' || e.type === 'click') {\n\t\t\t\tif (options.onClick) {\n\t\t\t\t\toptions.onClick.call(me, e, me.active);\n\t\t\t\t}\n\t\t\t\tif (me.legend && me.legend.handleEvent) {\n\t\t\t\t\tme.legend.handleEvent(e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove styling for last active (even if it may still be active)\n\t\t\tif (me.lastActive.length) {\n\t\t\t\tme.updateHoverStyle(me.lastActive, hoverOptions.mode, false);\n\t\t\t}\n\n\t\t\t// Built in hover styling\n\t\t\tif (me.active.length && hoverOptions.mode) {\n\t\t\t\tme.updateHoverStyle(me.active, hoverOptions.mode, true);\n\t\t\t}\n\n\t\t\t// Built in Tooltips\n\t\t\tif (tooltipsOptions.enabled || tooltipsOptions.custom) {\n\t\t\t\ttooltip.initialize();\n\t\t\t\ttooltip._active = me.tooltipActive;\n\t\t\t\ttooltip.update(true);\n\t\t\t}\n\n\t\t\t// Hover animations\n\t\t\ttooltip.pivot();\n\n\t\t\tif (!me.animating) {\n\t\t\t\t// If entering, leaving, or changing elements, animate the change via pivot\n\t\t\t\tif (!helpers.arrayEquals(me.active, me.lastActive) ||\n\t\t\t\t\t!helpers.arrayEquals(me.tooltipActive, me.lastTooltipActive)) {\n\n\t\t\t\t\tme.stop();\n\n\t\t\t\t\tif (tooltipsOptions.enabled || tooltipsOptions.custom) {\n\t\t\t\t\t\ttooltip.update(true);\n\t\t\t\t\t}\n\n\t\t\t\t\t// We only need to render at this point. Updating will cause scales to be\n\t\t\t\t\t// recomputed generating flicker & using more memory than necessary.\n\t\t\t\t\tme.render(hoverOptions.animationDuration, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remember Last Actives\n\t\t\tme.lastActive = me.active;\n\t\t\tme.lastTooltipActive = me.tooltipActive;\n\t\t\treturn me;\n\t\t}\n\t});\n};\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar noop = helpers.noop;\n\n\t// Base class for all dataset controllers (line, bar, etc)\n\tChart.DatasetController = function(chart, datasetIndex) {\n\t\tthis.initialize.call(this, chart, datasetIndex);\n\t};\n\n\thelpers.extend(Chart.DatasetController.prototype, {\n\n\t\t/**\n\t\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdatasetElementType: null,\n\n\t\t/**\n\t\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t\t * @type {Chart.core.element}\n\t\t */\n\t\tdataElementType: null,\n\n\t\tinitialize: function(chart, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tme.chart = chart;\n\t\t\tme.index = datasetIndex;\n\t\t\tme.linkScales();\n\t\t\tme.addElements();\n\t\t},\n\n\t\tupdateIndex: function(datasetIndex) {\n\t\t\tthis.index = datasetIndex;\n\t\t},\n\n\t\tlinkScales: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar dataset = me.getDataset();\n\n\t\t\tif (meta.xAxisID === null) {\n\t\t\t\tmeta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id;\n\t\t\t}\n\t\t\tif (meta.yAxisID === null) {\n\t\t\t\tmeta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id;\n\t\t\t}\n\t\t},\n\n\t\tgetDataset: function() {\n\t\t\treturn this.chart.data.datasets[this.index];\n\t\t},\n\n\t\tgetMeta: function() {\n\t\t\treturn this.chart.getDatasetMeta(this.index);\n\t\t},\n\n\t\tgetScaleForId: function(scaleID) {\n\t\t\treturn this.chart.scales[scaleID];\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.update(true);\n\t\t},\n\n\t\tcreateMetaDataset: function() {\n\t\t\tvar me = this;\n\t\t\tvar type = me.datasetElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart.chart,\n\t\t\t\t_datasetIndex: me.index\n\t\t\t});\n\t\t},\n\n\t\tcreateMetaData: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar type = me.dataElementType;\n\t\t\treturn type && new type({\n\t\t\t\t_chart: me.chart.chart,\n\t\t\t\t_datasetIndex: me.index,\n\t\t\t\t_index: index\n\t\t\t});\n\t\t},\n\n\t\taddElements: function() {\n\t\t\tvar me = this;\n\t\t\tvar meta = me.getMeta();\n\t\t\tvar data = me.getDataset().data || [];\n\t\t\tvar metaData = meta.data;\n\t\t\tvar i, ilen;\n\n\t\t\tfor (i=0, ilen=data.length; i<ilen; ++i) {\n\t\t\t\tmetaData[i] = metaData[i] || me.createMetaData(meta, i);\n\t\t\t}\n\n\t\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t\t},\n\n\t\taddElementAndReset: function(index) {\n\t\t\tvar me = this;\n\t\t\tvar element = me.createMetaData(index);\n\t\t\tme.getMeta().data.splice(index, 0, element);\n\t\t\tme.updateElement(element, index, true);\n\t\t},\n\n\t\tbuildOrUpdateElements: function() {\n\t\t\t// Handle the number of data points changing\n\t\t\tvar meta = this.getMeta(),\n\t\t\t\tmd = meta.data,\n\t\t\t\tnumData = this.getDataset().data.length,\n\t\t\t\tnumMetaData = md.length;\n\n\t\t\t// Make sure that we handle number of datapoints changing\n\t\t\tif (numData < numMetaData) {\n\t\t\t\t// Remove excess bars for data points that have been removed\n\t\t\t\tmd.splice(numData, numMetaData - numData);\n\t\t\t} else if (numData > numMetaData) {\n\t\t\t\t// Add new elements\n\t\t\t\tfor (var index = numMetaData; index < numData; ++index) {\n\t\t\t\t\tthis.addElementAndReset(index);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdate: noop,\n\n\t\tdraw: function(ease) {\n\t\t\tvar easingDecimal = ease || 1;\n\t\t\thelpers.each(this.getMeta().data, function(element) {\n\t\t\t\telement.transition(easingDecimal).draw();\n\t\t\t});\n\t\t},\n\n\t\tremoveHoverStyle: function(element, elementOpts) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex],\n\t\t\t\tindex = element._index,\n\t\t\t\tcustom = element.custom || {},\n\t\t\t\tvalueOrDefault = helpers.getValueAtIndexOrDefault,\n\t\t\t\tmodel = element._model;\n\n\t\t\tmodel.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor);\n\t\t\tmodel.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor);\n\t\t\tmodel.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth);\n\t\t},\n\n\t\tsetHoverStyle: function(element) {\n\t\t\tvar dataset = this.chart.data.datasets[element._datasetIndex],\n\t\t\t\tindex = element._index,\n\t\t\t\tcustom = element.custom || {},\n\t\t\t\tvalueOrDefault = helpers.getValueAtIndexOrDefault,\n\t\t\t\tgetHoverColor = helpers.getHoverColor,\n\t\t\t\tmodel = element._model;\n\n\t\t\tmodel.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor));\n\t\t\tmodel.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor));\n\t\t\tmodel.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth);\n\t\t}\n\t\t\n });\n\t\n\n\tChart.DatasetController.extend = helpers.inherits;\n};\n},{}],25:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n var helpers = Chart.helpers;\n\n Chart.elements = {};\n\n Chart.Element = function(configuration) {\n helpers.extend(this, configuration);\n this.initialize.apply(this, arguments);\n };\n\n helpers.extend(Chart.Element.prototype, {\n\n initialize: function() {\n this.hidden = false;\n },\n\n pivot: function() {\n var me = this;\n if (!me._view) {\n me._view = helpers.clone(me._model);\n }\n me._start = helpers.clone(me._view);\n return me;\n },\n\n transition: function(ease) {\n var me = this;\n \n if (!me._view) {\n me._view = helpers.clone(me._model);\n }\n\n // No animation -> No Transition\n if (ease === 1) {\n me._view = me._model;\n me._start = null;\n return me;\n }\n\n if (!me._start) {\n me.pivot();\n }\n\n helpers.each(me._model, function(value, key) {\n\n if (key[0] === '_') {\n // Only non-underscored properties\n }\n\n // Init if doesn't exist\n else if (!me._view.hasOwnProperty(key)) {\n if (typeof value === 'number' && !isNaN(me._view[key])) {\n me._view[key] = value * ease;\n } else {\n me._view[key] = value;\n }\n }\n\n // No unnecessary computations\n else if (value === me._view[key]) {\n // It's the same! Woohoo!\n }\n\n // Color transitions if possible\n else if (typeof value === 'string') {\n try {\n var color = helpers.color(me._model[key]).mix(helpers.color(me._start[key]), ease);\n me._view[key] = color.rgbString();\n } catch (err) {\n me._view[key] = value;\n }\n }\n // Number transitions\n else if (typeof value === 'number') {\n var startVal = me._start[key] !== undefined && isNaN(me._start[key]) === false ? me._start[key] : 0;\n me._view[key] = ((me._model[key] - startVal) * ease) + startVal;\n }\n // Everything else\n else {\n me._view[key] = value;\n }\n }, me);\n\n return me;\n },\n\n tooltipPosition: function() {\n return {\n x: this._model.x,\n y: this._model.y\n };\n },\n\n hasValue: function() {\n return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y);\n }\n });\n\n Chart.Element.extend = helpers.inherits;\n\n};\n\n},{}],26:[function(require,module,exports){\n/*global window: false */\n/*global document: false */\n\"use strict\";\n\nvar color = require(3);\n\nmodule.exports = function(Chart) {\n\t//Global Chart helpers object for utility methods and classes\n\tvar helpers = Chart.helpers = {};\n\n\t//-- Basic js utility methods\n\thelpers.each = function(loopable, callback, self, reverse) {\n\t\t// Check to see if null or undefined firstly.\n\t\tvar i, len;\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\tcallback.call(self, 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\tcallback.call(self, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (typeof loopable === 'object') {\n\t\t\tvar keys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tcallback.call(self, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t};\n\thelpers.clone = function(obj) {\n\t\tvar objClone = {};\n\t\thelpers.each(obj, function(value, key) {\n\t\t\tif (helpers.isArray(value)) {\n\t\t\t\tobjClone[key] = value.slice(0);\n\t\t\t} else if (typeof value === 'object' && value !== null) {\n\t\t\t\tobjClone[key] = helpers.clone(value);\n\t\t\t} else {\n\t\t\t\tobjClone[key] = value;\n\t\t\t}\n\t\t});\n\t\treturn objClone;\n\t};\n\thelpers.extend = function(base) {\n\t\tvar setFn = function(value, key) { base[key] = value; };\n\t\tfor (var i = 1, ilen = arguments.length; i < ilen; i++) {\n\t\t\thelpers.each(arguments[i], setFn);\n\t\t}\n\t\treturn base;\n\t};\n\t// Need a special merge function to chart configs since they are now grouped\n\thelpers.configMerge = function(_base) {\n\t\tvar base = helpers.clone(_base);\n\t\thelpers.each(Array.prototype.slice.call(arguments, 1), function(extension) {\n\t\t\thelpers.each(extension, function(value, key) {\n\t\t\t\tif (key === 'scales') {\n\t\t\t\t\t// Scale config merging is complex. Add out own function here for that\n\t\t\t\t\tbase[key] = helpers.scaleMerge(base.hasOwnProperty(key) ? base[key] : {}, value);\n\n\t\t\t\t} else if (key === 'scale') {\n\t\t\t\t\t// Used in polar area & radar charts since there is only one scale\n\t\t\t\t\tbase[key] = helpers.configMerge(base.hasOwnProperty(key) ? base[key] : {}, Chart.scaleService.getScaleDefaults(value.type), value);\n\t\t\t\t} else if (base.hasOwnProperty(key) && helpers.isArray(base[key]) && helpers.isArray(value)) {\n\t\t\t\t\t// In this case we have an array of objects replacing another array. Rather than doing a strict replace,\n\t\t\t\t\t// merge. This allows easy scale option merging\n\t\t\t\t\tvar baseArray = base[key];\n\n\t\t\t\t\thelpers.each(value, function(valueObj, index) {\n\n\t\t\t\t\t\tif (index < baseArray.length) {\n\t\t\t\t\t\t\tif (typeof baseArray[index] === 'object' && baseArray[index] !== null && typeof valueObj === 'object' && valueObj !== null) {\n\t\t\t\t\t\t\t\t// Two objects are coming together. Do a merge of them.\n\t\t\t\t\t\t\t\tbaseArray[index] = helpers.configMerge(baseArray[index], valueObj);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Just overwrite in this case since there is nothing to merge\n\t\t\t\t\t\t\t\tbaseArray[index] = valueObj;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbaseArray.push(valueObj); // nothing to merge\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t} else if (base.hasOwnProperty(key) && typeof base[key] === \"object\" && base[key] !== null && typeof value === \"object\") {\n\t\t\t\t\t// If we are overwriting an object with an object, do a merge of the properties.\n\t\t\t\t\tbase[key] = helpers.configMerge(base[key], value);\n\n\t\t\t\t} else {\n\t\t\t\t\t// can just overwrite the value in this case\n\t\t\t\t\tbase[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn base;\n\t};\n\thelpers.scaleMerge = function(_base, extension) {\n\t\tvar base = helpers.clone(_base);\n\n\t\thelpers.each(extension, function(value, key) {\n\t\t\tif (key === 'xAxes' || key === 'yAxes') {\n\t\t\t\t// These properties are arrays of items\n\t\t\t\tif (base.hasOwnProperty(key)) {\n\t\t\t\t\thelpers.each(value, function(valueObj, index) {\n\t\t\t\t\t\tvar axisType = helpers.getValueOrDefault(valueObj.type, key === 'xAxes' ? 'category' : 'linear');\n\t\t\t\t\t\tvar axisDefaults = Chart.scaleService.getScaleDefaults(axisType);\n\t\t\t\t\t\tif (index >= base[key].length || !base[key][index].type) {\n\t\t\t\t\t\t\tbase[key].push(helpers.configMerge(axisDefaults, valueObj));\n\t\t\t\t\t\t} else if (valueObj.type && valueObj.type !== base[key][index].type) {\n\t\t\t\t\t\t\t// Type changed. Bring in the new defaults before we bring in valueObj so that valueObj can override the correct scale defaults\n\t\t\t\t\t\t\tbase[key][index] = helpers.configMerge(base[key][index], axisDefaults, valueObj);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Type is the same\n\t\t\t\t\t\t\tbase[key][index] = helpers.configMerge(base[key][index], valueObj);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tbase[key] = [];\n\t\t\t\t\thelpers.each(value, function(valueObj) {\n\t\t\t\t\t\tvar axisType = helpers.getValueOrDefault(valueObj.type, key === 'xAxes' ? 'category' : 'linear');\n\t\t\t\t\t\tbase[key].push(helpers.configMerge(Chart.scaleService.getScaleDefaults(axisType), valueObj));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (base.hasOwnProperty(key) && typeof base[key] === \"object\" && base[key] !== null && typeof value === \"object\") {\n\t\t\t\t// If we are overwriting an object with an object, do a merge of the properties.\n\t\t\t\tbase[key] = helpers.configMerge(base[key], value);\n\n\t\t\t} else {\n\t\t\t\t// can just overwrite the value in this case\n\t\t\t\tbase[key] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn base;\n\t};\n\thelpers.getValueAtIndexOrDefault = function(value, index, defaultValue) {\n\t\tif (value === undefined || value === null) {\n\t\t\treturn defaultValue;\n\t\t}\n\n\t\tif (helpers.isArray(value)) {\n\t\t\treturn index < value.length ? value[index] : defaultValue;\n\t\t}\n\n\t\treturn value;\n\t};\n\thelpers.getValueOrDefault = function(value, defaultValue) {\n\t\treturn value === undefined ? defaultValue : value;\n\t};\n\thelpers.indexOf = Array.prototype.indexOf?\n\t\tfunction(array, item) { return array.indexOf(item); } :\n\t\tfunction(array, item) {\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (array[i] === item) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.where = function(collection, filterCallback) {\n\t\tif (helpers.isArray(collection) && Array.prototype.filter) {\n\t\t\treturn collection.filter(filterCallback);\n\t\t} else {\n\t\t\tvar filtered = [];\n\n\t\t\thelpers.each(collection, function(item) {\n\t\t\t\tif (filterCallback(item)) {\n\t\t\t\t\tfiltered.push(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn filtered;\n\t\t}\n\t};\n\thelpers.findIndex = Array.prototype.findIndex?\n\t\tfunction(array, callback, scope) { return array.findIndex(callback, scope); } :\n\t\tfunction(array, callback, scope) {\n\t\t\tscope = scope === undefined? array : scope;\n\t\t\tfor (var i = 0, ilen = array.length; i < ilen; ++i) {\n\t\t\t\tif (callback.call(scope, array[i], i, array)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\thelpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to start of the array\n\t\tif (startIndex === undefined || startIndex === null) {\n\t\t\tstartIndex = -1;\n\t\t}\n\t\tfor (var i = startIndex + 1; i < arrayToSearch.length; i++) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) {\n\t\t// Default to end of the array\n\t\tif (startIndex === undefined || startIndex === null) {\n\t\t\tstartIndex = arrayToSearch.length;\n\t\t}\n\t\tfor (var i = startIndex - 1; i >= 0; i--) {\n\t\t\tvar currentItem = arrayToSearch[i];\n\t\t\tif (filterCallback(currentItem)) {\n\t\t\t\treturn currentItem;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.inherits = function(extensions) {\n\t\t//Basic javascript inheritance based on the model created in Backbone.js\n\t\tvar parent = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty(\"constructor\")) ? extensions.constructor : function() {\n\t\t\treturn parent.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\t\tSurrogate.prototype = parent.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\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__ = parent.prototype;\n\n\t\treturn ChartElement;\n\t};\n\thelpers.noop = function() {};\n\thelpers.uid = (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t})();\n\t//-- Math methods\n\thelpers.isNumber = function(n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t};\n\thelpers.almostEquals = function(x, y, epsilon) {\n\t\treturn Math.abs(x - y) < epsilon;\n\t};\n\thelpers.max = function(array) {\n\t\treturn array.reduce(function(max, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.max(max, value);\n\t\t\t} else {\n\t\t\t\treturn max;\n\t\t\t}\n\t\t}, Number.NEGATIVE_INFINITY);\n\t};\n\thelpers.min = function(array) {\n\t\treturn array.reduce(function(min, value) {\n\t\t\tif (!isNaN(value)) {\n\t\t\t\treturn Math.min(min, value);\n\t\t\t} else {\n\t\t\t\treturn min;\n\t\t\t}\n\t\t}, Number.POSITIVE_INFINITY);\n\t};\n\thelpers.sign = Math.sign?\n\t\tfunction(x) { return Math.sign(x); } :\n\t\tfunction(x) {\n\t\t\tx = +x; // convert to a number\n\t\t\tif (x === 0 || isNaN(x)) {\n\t\t\t\treturn x;\n\t\t\t}\n\t\t\treturn x > 0 ? 1 : -1;\n\t\t};\n\thelpers.log10 = Math.log10?\n\t\tfunction(x) { return Math.log10(x); } :\n\t\tfunction(x) {\n\t\t\treturn Math.log(x) / Math.LN10;\n\t\t};\n\thelpers.toRadians = function(degrees) {\n\t\treturn degrees * (Math.PI / 180);\n\t};\n\thelpers.toDegrees = function(radians) {\n\t\treturn radians * (180 / Math.PI);\n\t};\n\t// Gets the angle from vertical upright to the point about a centre.\n\thelpers.getAngleFromPoint = function(centrePoint, anglePoint) {\n\t\tvar distanceFromXCenter = anglePoint.x - centrePoint.x,\n\t\t\tdistanceFromYCenter = anglePoint.y - centrePoint.y,\n\t\t\tradialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n\n\t\tvar angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n\n\t\tif (angle < (-0.5 * Math.PI)) {\n\t\t\tangle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n\t\t}\n\n\t\treturn {\n\t\t\tangle: angle,\n\t\t\tdistance: radialDistanceFromCenter\n\t\t};\n\t};\n\thelpers.aliasPixel = function(pixelWidth) {\n\t\treturn (pixelWidth % 2 === 0) ? 0 : 0.5;\n\t};\n\thelpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) {\n\t\t//Props to Rob Spencer at scaled innovation for his post on splining between points\n\t\t//http://scaledinnovation.com/analytics/splines/aboutSplines.html\n\n\t\t// This function must also respect \"skipped\" points\n\n\t\tvar previous = firstPoint.skip ? middlePoint : firstPoint,\n\t\t\tcurrent = middlePoint,\n\t\t\tnext = afterPoint.skip ? middlePoint : afterPoint;\n\n\t\tvar d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2));\n\t\tvar d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2));\n\n\t\tvar s01 = d01 / (d01 + d12);\n\t\tvar s12 = d12 / (d01 + d12);\n\n\t\t// If all points are the same, s01 & s02 will be inf\n\t\ts01 = isNaN(s01) ? 0 : s01;\n\t\ts12 = isNaN(s12) ? 0 : s12;\n\n\t\tvar fa = t * s01; // scaling factor for triangle Ta\n\t\tvar fb = t * s12;\n\n\t\treturn {\n\t\t\tprevious: {\n\t\t\t\tx: current.x - fa * (next.x - previous.x),\n\t\t\t\ty: current.y - fa * (next.y - previous.y)\n\t\t\t},\n\t\t\tnext: {\n\t\t\t\tx: current.x + fb * (next.x - previous.x),\n\t\t\t\ty: current.y + fb * (next.y - previous.y)\n\t\t\t}\n\t\t};\n\t};\n\thelpers.EPSILON = Number.EPSILON || 1e-14;\n\thelpers.splineCurveMonotone = function(points) {\n\t\t// This function calculates Bézier control points in a similar way than |splineCurve|,\n\t\t// but preserves monotonicity of the provided data and ensures no local extremums are added\n\t\t// between the dataset discrete points due to the interpolation.\n\t\t// See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n\n\t\tvar pointsWithTangents = (points || []).map(function(point) {\n\t\t\treturn {\n\t\t\t\tmodel: point._model,\n\t\t\t\tdeltaK: 0,\n\t\t\t\tmK: 0\n\t\t\t};\n\t\t});\n\n\t\t// Calculate slopes (deltaK) and initialize tangents (mK)\n\t\tvar pointsLen = pointsWithTangents.length;\n\t\tvar i, pointBefore, pointCurrent, pointAfter;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) continue;\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tpointCurrent.deltaK = (pointAfter.model.y - pointCurrent.model.y) / (pointAfter.model.x - pointCurrent.model.x);\n\t\t\t}\n\t\t\tif (!pointBefore || pointBefore.model.skip) pointCurrent.mK = pointCurrent.deltaK;\n\t\t\telse if (!pointAfter || pointAfter.model.skip) pointCurrent.mK = pointBefore.deltaK;\n\t\t\telse if (this.sign(pointBefore.deltaK) != this.sign(pointCurrent.deltaK)) pointCurrent.mK = 0;\n\t\t\telse pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2;\n\t\t}\n\n\t\t// Adjust tangents to ensure monotonic properties\n\t\tvar alphaK, betaK, tauK, squaredMagnitude;\n\t\tfor (i = 0; i < pointsLen - 1; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tpointAfter = pointsWithTangents[i + 1];\n\t\t\tif (pointCurrent.model.skip || pointAfter.model.skip) continue;\n\t\t\tif (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON))\n\t\t\t{\n\t\t\t\tpointCurrent.mK = pointAfter.mK = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\talphaK = pointCurrent.mK / pointCurrent.deltaK;\n\t\t\tbetaK = pointAfter.mK / pointCurrent.deltaK;\n\t\t\tsquaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n\t\t\tif (squaredMagnitude <= 9) continue;\n\t\t\ttauK = 3 / Math.sqrt(squaredMagnitude);\n\t\t\tpointCurrent.mK = alphaK * tauK * pointCurrent.deltaK;\n\t\t\tpointAfter.mK = betaK * tauK * pointCurrent.deltaK;\n\t\t}\n\n\t\t// Compute control points\n\t\tvar deltaX;\n\t\tfor (i = 0; i < pointsLen; ++i) {\n\t\t\tpointCurrent = pointsWithTangents[i];\n\t\t\tif (pointCurrent.model.skip) continue;\n\t\t\tpointBefore = i > 0 ? pointsWithTangents[i - 1] : null;\n\t\t\tpointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null;\n\t\t\tif (pointBefore && !pointBefore.model.skip) {\n\t\t\t\tdeltaX = (pointCurrent.model.x - pointBefore.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX;\n\t\t\t\tpointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t\tif (pointAfter && !pointAfter.model.skip) {\n\t\t\t\tdeltaX = (pointAfter.model.x - pointCurrent.model.x) / 3;\n\t\t\t\tpointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX;\n\t\t\t\tpointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK;\n\t\t\t}\n\t\t}\n\t};\n\thelpers.nextItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index >= collection.length - 1 ? collection[0] : collection[index + 1];\n\t\t}\n\n\t\treturn index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1];\n\t};\n\thelpers.previousItem = function(collection, index, loop) {\n\t\tif (loop) {\n\t\t\treturn index <= 0 ? collection[collection.length - 1] : collection[index - 1];\n\t\t}\n\t\treturn index <= 0 ? collection[0] : collection[index - 1];\n\t};\n\t// Implementation of the nice number algorithm used in determining where axis labels will go\n\thelpers.niceNum = function(range, round) {\n\t\tvar exponent = Math.floor(helpers.log10(range));\n\t\tvar fraction = range / Math.pow(10, exponent);\n\t\tvar niceFraction;\n\n\t\tif (round) {\n\t\t\tif (fraction < 1.5) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction < 3) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction < 7) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t} else {\n\t\t\tif (fraction <= 1.0) {\n\t\t\t\tniceFraction = 1;\n\t\t\t} else if (fraction <= 2) {\n\t\t\t\tniceFraction = 2;\n\t\t\t} else if (fraction <= 5) {\n\t\t\t\tniceFraction = 5;\n\t\t\t} else {\n\t\t\t\tniceFraction = 10;\n\t\t\t}\n\t\t}\n\n\t\treturn niceFraction * Math.pow(10, exponent);\n\t};\n\t//Easing functions adapted from Robert Penner's easing equations\n\t//http://www.robertpenner.com/easing/\n\tvar easingEffects = helpers.easingEffects = {\n\t\tlinear: function(t) {\n\t\t\treturn t;\n\t\t},\n\t\teaseInQuad: function(t) {\n\t\t\treturn t * t;\n\t\t},\n\t\teaseOutQuad: function(t) {\n\t\t\treturn -1 * t * (t - 2);\n\t\t},\n\t\teaseInOutQuad: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t;\n\t\t\t}\n\t\t\treturn -1 / 2 * ((--t) * (t - 2) - 1);\n\t\t},\n\t\teaseInCubic: function(t) {\n\t\t\treturn t * t * t;\n\t\t},\n\t\teaseOutCubic: function(t) {\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * t + 1);\n\t\t},\n\t\teaseInOutCubic: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t;\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * t + 2);\n\t\t},\n\t\teaseInQuart: function(t) {\n\t\t\treturn t * t * t * t;\n\t\t},\n\t\teaseOutQuart: function(t) {\n\t\t\treturn -1 * ((t = t / 1 - 1) * t * t * t - 1);\n\t\t},\n\t\teaseInOutQuart: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t * t;\n\t\t\t}\n\t\t\treturn -1 / 2 * ((t -= 2) * t * t * t - 2);\n\t\t},\n\t\teaseInQuint: function(t) {\n\t\t\treturn 1 * (t /= 1) * t * t * t * t;\n\t\t},\n\t\teaseOutQuint: function(t) {\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * t * t * t + 1);\n\t\t},\n\t\teaseInOutQuint: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * t * t * t * t * t;\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * t * t * t + 2);\n\t\t},\n\t\teaseInSine: function(t) {\n\t\t\treturn -1 * Math.cos(t / 1 * (Math.PI / 2)) + 1;\n\t\t},\n\t\teaseOutSine: function(t) {\n\t\t\treturn 1 * Math.sin(t / 1 * (Math.PI / 2));\n\t\t},\n\t\teaseInOutSine: function(t) {\n\t\t\treturn -1 / 2 * (Math.cos(Math.PI * t / 1) - 1);\n\t\t},\n\t\teaseInExpo: function(t) {\n\t\t\treturn (t === 0) ? 1 : 1 * Math.pow(2, 10 * (t / 1 - 1));\n\t\t},\n\t\teaseOutExpo: function(t) {\n\t\t\treturn (t === 1) ? 1 : 1 * (-Math.pow(2, -10 * t / 1) + 1);\n\t\t},\n\t\teaseInOutExpo: function(t) {\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (t === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * Math.pow(2, 10 * (t - 1));\n\t\t\t}\n\t\t\treturn 1 / 2 * (-Math.pow(2, -10 * --t) + 2);\n\t\t},\n\t\teaseInCirc: function(t) {\n\t\t\tif (t >= 1) {\n\t\t\t\treturn t;\n\t\t\t}\n\t\t\treturn -1 * (Math.sqrt(1 - (t /= 1) * t) - 1);\n\t\t},\n\t\teaseOutCirc: function(t) {\n\t\t\treturn 1 * Math.sqrt(1 - (t = t / 1 - 1) * t);\n\t\t},\n\t\teaseInOutCirc: function(t) {\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn -1 / 2 * (Math.sqrt(1 - t * t) - 1);\n\t\t\t}\n\t\t\treturn 1 / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t\t},\n\t\teaseInElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1) === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * 0.3;\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));\n\t\t},\n\t\teaseOutElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1) === 1) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * 0.3;\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) + 1;\n\t\t},\n\t\teaseInOutElastic: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tvar p = 0;\n\t\t\tvar a = 1;\n\t\t\tif (t === 0) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ((t /= 1 / 2) === 2) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tif (!p) {\n\t\t\t\tp = 1 * (0.3 * 1.5);\n\t\t\t}\n\t\t\tif (a < Math.abs(1)) {\n\t\t\t\ta = 1;\n\t\t\t\ts = p / 4;\n\t\t\t} else {\n\t\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t\t}\n\t\t\tif (t < 1) {\n\t\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p));\n\t\t\t}\n\t\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * 1 - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t\t},\n\t\teaseInBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1 * (t /= 1) * t * ((s + 1) * t - s);\n\t\t},\n\t\teaseOutBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\treturn 1 * ((t = t / 1 - 1) * t * ((s + 1) * t + s) + 1);\n\t\t},\n\t\teaseInOutBack: function(t) {\n\t\t\tvar s = 1.70158;\n\t\t\tif ((t /= 1 / 2) < 1) {\n\t\t\t\treturn 1 / 2 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t\t}\n\t\t\treturn 1 / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t\t},\n\t\teaseInBounce: function(t) {\n\t\t\treturn 1 - easingEffects.easeOutBounce(1 - t);\n\t\t},\n\t\teaseOutBounce: function(t) {\n\t\t\tif ((t /= 1) < (1 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * t * t);\n\t\t\t} else if (t < (2 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75);\n\t\t\t} else if (t < (2.5 / 2.75)) {\n\t\t\t\treturn 1 * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375);\n\t\t\t} else {\n\t\t\t\treturn 1 * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375);\n\t\t\t}\n\t\t},\n\t\teaseInOutBounce: function(t) {\n\t\t\tif (t < 1 / 2) {\n\t\t\t\treturn easingEffects.easeInBounce(t * 2) * 0.5;\n\t\t\t}\n\t\t\treturn easingEffects.easeOutBounce(t * 2 - 1) * 0.5 + 1 * 0.5;\n\t\t}\n\t};\n\t//Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/\n\thelpers.requestAnimFrame = (function() {\n\t\treturn window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\twindow.oRequestAnimationFrame ||\n\t\t\twindow.msRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000 / 60);\n\t\t\t};\n\t})();\n\thelpers.cancelAnimFrame = (function() {\n\t\treturn window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.oCancelAnimationFrame ||\n\t\t\twindow.msCancelAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.clearTimeout(callback, 1000 / 60);\n\t\t\t};\n\t})();\n\t//-- DOM methods\n\thelpers.getRelativePosition = function(evt, chart) {\n\t\tvar mouseX, mouseY;\n\t\tvar e = evt.originalEvent || evt,\n\t\t\tcanvas = evt.currentTarget || evt.srcElement,\n\t\t\tboundingRect = canvas.getBoundingClientRect();\n\n\t\tvar touches = e.touches;\n\t\tif (touches && touches.length > 0) {\n\t\t\tmouseX = touches[0].clientX;\n\t\t\tmouseY = touches[0].clientY;\n\n\t\t} else {\n\t\t\tmouseX = e.clientX;\n\t\t\tmouseY = e.clientY;\n\t\t}\n\n\t\t// Scale mouse coordinates into canvas coordinates\n\t\t// by following the pattern laid out by 'jerryj' in the comments of\n\t\t// http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/\n\t\tvar paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left'));\n\t\tvar paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top'));\n\t\tvar paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right'));\n\t\tvar paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom'));\n\t\tvar width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight;\n\t\tvar height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom;\n\n\t\t// We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However\n\t\t// the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here\n\t\tmouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio);\n\t\tmouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio);\n\n\t\treturn {\n\t\t\tx: mouseX,\n\t\t\ty: mouseY\n\t\t};\n\n\t};\n\thelpers.addEvent = function(node, eventType, method) {\n\t\tif (node.addEventListener) {\n\t\t\tnode.addEventListener(eventType, method);\n\t\t} else if (node.attachEvent) {\n\t\t\tnode.attachEvent(\"on\" + eventType, method);\n\t\t} else {\n\t\t\tnode[\"on\" + eventType] = method;\n\t\t}\n\t};\n\thelpers.removeEvent = function(node, eventType, handler) {\n\t\tif (node.removeEventListener) {\n\t\t\tnode.removeEventListener(eventType, handler, false);\n\t\t} else if (node.detachEvent) {\n\t\t\tnode.detachEvent(\"on\" + eventType, handler);\n\t\t} else {\n\t\t\tnode[\"on\" + eventType] = helpers.noop;\n\t\t}\n\t};\n\thelpers.bindEvents = function(chartInstance, arrayOfEvents, handler) {\n\t\t// Create the events object if it's not already present\n\t\tvar events = chartInstance.events = chartInstance.events || {};\n\n\t\thelpers.each(arrayOfEvents, function(eventName) {\n\t\t\tevents[eventName] = function() {\n\t\t\t\thandler.apply(chartInstance, arguments);\n\t\t\t};\n\t\t\thelpers.addEvent(chartInstance.chart.canvas, eventName, events[eventName]);\n\t\t});\n\t};\n\thelpers.unbindEvents = function(chartInstance, arrayOfEvents) {\n\t\tvar canvas = chartInstance.chart.canvas;\n\t\thelpers.each(arrayOfEvents, function(handler, eventName) {\n\t\t\thelpers.removeEvent(canvas, eventName, handler);\n\t\t});\n\t};\n\n\t// Private helper function to convert max-width/max-height values that may be percentages into a number\n\tfunction parseMaxStyle(styleValue, node, parentProperty) {\n\t\tvar valueInPixels;\n\t\tif (typeof(styleValue) === 'string') {\n\t\t\tvalueInPixels = parseInt(styleValue, 10);\n\n\t\t\tif (styleValue.indexOf('%') != -1) {\n\t\t\t\t// percentage * size in dimension\n\t\t\t\tvalueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n\t\t\t}\n\t\t} else {\n\t\t\tvalueInPixels = styleValue;\n\t\t}\n\n\t\treturn valueInPixels;\n\t}\n\n\t/**\n\t * Returns if the given value contains an effective constraint.\n\t * @private\n\t */\n\tfunction isConstrainedValue(value) {\n\t\treturn value !== undefined && value !== null && value !== 'none';\n\t}\n\n\t// Private helper to get a constraint dimension\n\t// @param domNode : the node to check the constraint on\n\t// @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight)\n\t// @param percentageProperty : property of parent to use when calculating width as a percentage\n\t// @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser\n\tfunction getConstraintDimension(domNode, maxStyle, percentageProperty) {\n\t\tvar view = document.defaultView;\n\t\tvar parentNode = domNode.parentNode;\n\t\tvar constrainedNode = view.getComputedStyle(domNode)[maxStyle];\n\t\tvar constrainedContainer = view.getComputedStyle(parentNode)[maxStyle];\n\t\tvar hasCNode = isConstrainedValue(constrainedNode);\n\t\tvar hasCContainer = isConstrainedValue(constrainedContainer);\n\t\tvar infinity = Number.POSITIVE_INFINITY;\n\n\t\tif (hasCNode || hasCContainer) {\n\t\t\treturn Math.min(\n\t\t\t\thasCNode? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity,\n\t\t\t\thasCContainer? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity);\n\t\t}\n\n\t\treturn 'none';\n\t}\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintWidth = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-width', 'clientWidth');\n\t};\n\t// returns Number or undefined if no constraint\n\thelpers.getConstraintHeight = function(domNode) {\n\t\treturn getConstraintDimension(domNode, 'max-height', 'clientHeight');\n\t};\n\thelpers.getMaximumWidth = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tvar padding = parseInt(helpers.getStyle(container, 'padding-left')) + parseInt(helpers.getStyle(container, 'padding-right'));\n\t\tvar w = container.clientWidth - padding;\n\t\tvar cw = helpers.getConstraintWidth(domNode);\n\t\treturn isNaN(cw)? w : Math.min(w, cw);\n\t};\n\thelpers.getMaximumHeight = function(domNode) {\n\t\tvar container = domNode.parentNode;\n\t\tvar padding = parseInt(helpers.getStyle(container, 'padding-top')) + parseInt(helpers.getStyle(container, 'padding-bottom'));\n\t\tvar h = container.clientHeight - padding;\n\t\tvar ch = helpers.getConstraintHeight(domNode);\n\t\treturn isNaN(ch)? h : Math.min(h, ch);\n\t};\n\thelpers.getStyle = function(el, property) {\n\t\treturn el.currentStyle ?\n\t\t\tel.currentStyle[property] :\n\t\t\tdocument.defaultView.getComputedStyle(el, null).getPropertyValue(property);\n\t};\n\thelpers.retinaScale = function(chart) {\n\t\tvar ctx = chart.ctx;\n\t\tvar canvas = chart.canvas;\n\t\tvar width = canvas.width;\n\t\tvar height = canvas.height;\n\t\tvar pixelRatio = chart.currentDevicePixelRatio = window.devicePixelRatio || 1;\n\n\t\tif (pixelRatio !== 1) {\n\t\t\tcanvas.height = height * pixelRatio;\n\t\t\tcanvas.width = width * pixelRatio;\n\t\t\tctx.scale(pixelRatio, pixelRatio);\n\n\t\t\t// Store the device pixel ratio so that we can go backwards in `destroy`.\n\t\t\t// The devicePixelRatio changes with zoom, so there are no guarantees that it is the same\n\t\t\t// when destroy is called\n\t\t\tchart.originalDevicePixelRatio = chart.originalDevicePixelRatio || pixelRatio;\n\t\t}\n\n\t\tcanvas.style.width = width + 'px';\n\t\tcanvas.style.height = height + 'px';\n\t};\n\t//-- Canvas methods\n\thelpers.clear = function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t};\n\thelpers.fontString = function(pixelSize, fontStyle, fontFamily) {\n\t\treturn fontStyle + \" \" + pixelSize + \"px \" + fontFamily;\n\t};\n\thelpers.longestText = function(ctx, font, arrayOfThings, cache) {\n\t\tcache = cache || {};\n\t\tvar data = cache.data = cache.data || {};\n\t\tvar gc = cache.garbageCollect = cache.garbageCollect || [];\n\n\t\tif (cache.font !== font) {\n\t\t\tdata = cache.data = {};\n\t\t\tgc = cache.garbageCollect = [];\n\t\t\tcache.font = font;\n\t\t}\n\n\t\tctx.font = font;\n\t\tvar longest = 0;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\t// Undefined strings and arrays should not be measured\n\t\t\tif (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) {\n\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, thing);\n\t\t\t} else if (helpers.isArray(thing)) {\n\t\t\t\t// if it is an array lets measure each element\n\t\t\t\t// to do maybe simplify this function a bit so we can do this more recursively?\n\t\t\t\thelpers.each(thing, function(nestedThing) {\n\t\t\t\t\t// Undefined strings and arrays should not be measured\n\t\t\t\t\tif (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) {\n\t\t\t\t\t\tlongest = helpers.measureText(ctx, data, gc, longest, nestedThing);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tvar gcLen = gc.length / 2;\n\t\tif (gcLen > arrayOfThings.length) {\n\t\t\tfor (var i = 0; i < gcLen; i++) {\n\t\t\t\tdelete data[gc[i]];\n\t\t\t}\n\t\t\tgc.splice(0, gcLen);\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.measureText = function (ctx, data, gc, longest, string) {\n\t\tvar textWidth = data[string];\n\t\tif (!textWidth) {\n\t\t\ttextWidth = data[string] = ctx.measureText(string).width;\n\t\t\tgc.push(string);\n\t\t}\n\t\tif (textWidth > longest) {\n\t\t\tlongest = textWidth;\n\t\t}\n\t\treturn longest;\n\t};\n\thelpers.numberOfLabelLines = function(arrayOfThings) {\n\t\tvar numberOfLines = 1;\n\t\thelpers.each(arrayOfThings, function(thing) {\n\t\t\tif (helpers.isArray(thing)) {\n\t\t\t\tif (thing.length > numberOfLines) {\n\t\t\t\t\tnumberOfLines = thing.length;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn numberOfLines;\n\t};\n\thelpers.drawRoundedRectangle = function(ctx, x, y, width, height, radius) {\n\t\tctx.beginPath();\n\t\tctx.moveTo(x + radius, y);\n\t\tctx.lineTo(x + width - radius, y);\n\t\tctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n\t\tctx.lineTo(x + width, y + height - radius);\n\t\tctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n\t\tctx.lineTo(x + radius, y + height);\n\t\tctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n\t\tctx.lineTo(x, y + radius);\n\t\tctx.quadraticCurveTo(x, y, x + radius, y);\n\t\tctx.closePath();\n\t};\n\thelpers.color = function(c) {\n\t\tif (!color) {\n\t\t\tconsole.log('Color.js not found!');\n\t\t\treturn c;\n\t\t}\n\n\t\t/* global CanvasGradient */\n\t\tif (c instanceof CanvasGradient) {\n\t\t\treturn color(Chart.defaults.global.defaultColor);\n\t\t}\n\n\t\treturn color(c);\n\t};\n\thelpers.addResizeListener = function(node, callback) {\n\t\t// Hide an iframe before the node\n\t\tvar hiddenIframe = document.createElement('iframe');\n\t\tvar hiddenIframeClass = 'chartjs-hidden-iframe';\n\n\t\tif (hiddenIframe.classlist) {\n\t\t\t// can use classlist\n\t\t\thiddenIframe.classlist.add(hiddenIframeClass);\n\t\t} else {\n\t\t\thiddenIframe.setAttribute('class', hiddenIframeClass);\n\t\t}\n\n\t\t// Set the style\n\t\thiddenIframe.tabIndex = -1;\n\t\tvar style = hiddenIframe.style;\n\t\tstyle.width = '100%';\n\t\tstyle.display = 'block';\n\t\tstyle.border = 0;\n\t\tstyle.height = 0;\n\t\tstyle.margin = 0;\n\t\tstyle.position = 'absolute';\n\t\tstyle.left = 0;\n\t\tstyle.right = 0;\n\t\tstyle.top = 0;\n\t\tstyle.bottom = 0;\n\n\t\t// Insert the iframe so that contentWindow is available\n\t\tnode.insertBefore(hiddenIframe, node.firstChild);\n\n\t\t(hiddenIframe.contentWindow || hiddenIframe).onresize = function() {\n\t\t\tif (callback) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t};\n\t};\n\thelpers.removeResizeListener = function(node) {\n\t\tvar hiddenIframe = node.querySelector('.chartjs-hidden-iframe');\n\n\t\t// Remove the resize detect iframe\n\t\tif (hiddenIframe) {\n\t\t\thiddenIframe.parentNode.removeChild(hiddenIframe);\n\t\t}\n\t};\n\thelpers.isArray = Array.isArray?\n\t\tfunction(obj) { return Array.isArray(obj); } :\n\t\tfunction(obj) {\n\t\t\treturn Object.prototype.toString.call(obj) === '[object Array]';\n\t\t};\n\t//! @see http://stackoverflow.com/a/14853974\n\thelpers.arrayEquals = 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\thelpers.callCallback = function(fn, args, _tArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\tfn.apply(_tArg, args);\n\t\t}\n\t};\n\thelpers.getHoverColor = function(color) {\n\t\t/* global CanvasPattern */\n\t\treturn (color instanceof CanvasPattern) ?\n\t\t\tcolor :\n\t\t\thelpers.color(color).saturate(0.5).darken(0.1).rgbString();\n\t};\n};\n\n},{\"3\":3}],27:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function() {\n\n\t//Occupy the global variable of Chart, and create a simple base class\n\tvar Chart = function(context, config) {\n\t\tvar me = this;\n\t\tvar helpers = Chart.helpers;\n\t\tme.config = config || { \n\t\t\tdata: {\n\t\t\t\tdatasets: []\n\t\t\t}\n\t\t};\n\n\t\t// Support a jQuery'd canvas element\n\t\tif (context.length && context[0].getContext) {\n\t\t\tcontext = context[0];\n\t\t}\n\n\t\t// Support a canvas domnode\n\t\tif (context.getContext) {\n\t\t\tcontext = context.getContext(\"2d\");\n\t\t}\n\n\t\tme.ctx = context;\n\t\tme.canvas = context.canvas;\n\n\t\tcontext.canvas.style.display = context.canvas.style.display || 'block';\n\n\t\t// Figure out what the size of the chart will be.\n\t\t// If the canvas has a specified width and height, we use those else\n\t\t// we look to see if the canvas node has a CSS width and height.\n\t\t// If there is still no height, fill the parent container\n\t\tme.width = context.canvas.width || parseInt(helpers.getStyle(context.canvas, 'width'), 10) || helpers.getMaximumWidth(context.canvas);\n\t\tme.height = context.canvas.height || parseInt(helpers.getStyle(context.canvas, 'height'), 10) || helpers.getMaximumHeight(context.canvas);\n\n\t\tme.aspectRatio = me.width / me.height;\n\n\t\tif (isNaN(me.aspectRatio) || isFinite(me.aspectRatio) === false) {\n\t\t\t// If the canvas has no size, try and figure out what the aspect ratio will be.\n\t\t\t// Some charts prefer square canvases (pie, radar, etc). If that is specified, use that\n\t\t\t// else use the canvas default ratio of 2\n\t\t\tme.aspectRatio = config.aspectRatio !== undefined ? config.aspectRatio : 2;\n\t\t}\n\n\t\t// Store the original style of the element so we can set it back\n\t\tme.originalCanvasStyleWidth = context.canvas.style.width;\n\t\tme.originalCanvasStyleHeight = context.canvas.style.height;\n\n\t\t// High pixel density displays - multiply the size of the canvas height/width by the device pixel ratio, then scale.\n\t\thelpers.retinaScale(me);\n\t\tme.controller = new Chart.Controller(me);\n\n\t\t// Always bind this so that if the responsive state changes we still work\n\t\thelpers.addResizeListener(context.canvas.parentNode, function() {\n\t\t\tif (me.controller && me.controller.config.options.responsive) {\n\t\t\t\tme.controller.resize();\n\t\t\t}\n\t\t});\n\n\t\treturn me.controller ? me.controller : me;\n\n\t};\n\n\t//Globally expose the defaults to allow for user updating/changing\n\tChart.defaults = {\n\t\tglobal: {\n\t\t\tresponsive: true,\n\t\t\tresponsiveAnimationDuration: 0,\n\t\t\tmaintainAspectRatio: true,\n\t\t\tevents: [\"mousemove\", \"mouseout\", \"click\", \"touchstart\", \"touchmove\"],\n\t\t\thover: {\n\t\t\t\tonHover: null,\n\t\t\t\tmode: 'single',\n\t\t\t\tanimationDuration: 400\n\t\t\t},\n\t\t\tonClick: null,\n\t\t\tdefaultColor: 'rgba(0,0,0,0.1)',\n\t\t\tdefaultFontColor: '#666',\n\t\t\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\t\t\tdefaultFontSize: 12,\n\t\t\tdefaultFontStyle: 'normal',\n\t\t\tshowLines: true,\n\n\t\t\t// Element defaults defined in element extensions\n\t\t\telements: {},\n\n\t\t\t// Legend callback string\n\t\t\tlegendCallback: function(chart) {\n\t\t\t\tvar text = [];\n\t\t\t\ttext.push('<ul class=\"' + chart.id + '-legend\">');\n\t\t\t\tfor (var i = 0; i < chart.data.datasets.length; i++) {\n\t\t\t\t\ttext.push('<li><span style=\"background-color:' + chart.data.datasets[i].backgroundColor + '\"></span>');\n\t\t\t\t\tif (chart.data.datasets[i].label) {\n\t\t\t\t\t\ttext.push(chart.data.datasets[i].label);\n\t\t\t\t\t}\n\t\t\t\t\ttext.push('</li>');\n\t\t\t\t}\n\t\t\t\ttext.push('</ul>');\n\n\t\t\t\treturn text.join(\"\");\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.Chart = Chart;\n\n\treturn Chart;\n\n};\n\n},{}],28:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\t// The layout service is very self explanatory. It's responsible for the layout within a chart.\n\t// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n\t// It is this service's responsibility of carrying out that layout.\n\tChart.layoutService = {\n\t\tdefaults: {},\n\n\t\t// Register a box to a chartInstance. A box is simply a reference to an object that requires layout. eg. Scales, Legend, Plugins.\n\t\taddBox: function(chartInstance, box) {\n\t\t\tif (!chartInstance.boxes) {\n\t\t\t\tchartInstance.boxes = [];\n\t\t\t}\n\t\t\tchartInstance.boxes.push(box);\n\t\t},\n\n\t\tremoveBox: function(chartInstance, box) {\n\t\t\tif (!chartInstance.boxes) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tchartInstance.boxes.splice(chartInstance.boxes.indexOf(box), 1);\n\t\t},\n\n\t\t// The most important function\n\t\tupdate: function(chartInstance, width, height) {\n\n\t\t\tif (!chartInstance) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar xPadding = 0;\n\t\t\tvar yPadding = 0;\n\n\t\t\tvar leftBoxes = helpers.where(chartInstance.boxes, function(box) {\n\t\t\t\treturn box.options.position === \"left\";\n\t\t\t});\n\t\t\tvar rightBoxes = helpers.where(chartInstance.boxes, function(box) {\n\t\t\t\treturn box.options.position === \"right\";\n\t\t\t});\n\t\t\tvar topBoxes = helpers.where(chartInstance.boxes, function(box) {\n\t\t\t\treturn box.options.position === \"top\";\n\t\t\t});\n\t\t\tvar bottomBoxes = helpers.where(chartInstance.boxes, function(box) {\n\t\t\t\treturn box.options.position === \"bottom\";\n\t\t\t});\n\n\t\t\t// Boxes that overlay the chartarea such as the radialLinear scale\n\t\t\tvar chartAreaBoxes = helpers.where(chartInstance.boxes, function(box) {\n\t\t\t\treturn box.options.position === \"chartArea\";\n\t\t\t});\n\n\t\t\t// Ensure that full width boxes are at the very top / bottom\n\t\t\ttopBoxes.sort(function(a, b) {\n\t\t\t\treturn (b.options.fullWidth ? 1 : 0) - (a.options.fullWidth ? 1 : 0);\n\t\t\t});\n\t\t\tbottomBoxes.sort(function(a, b) {\n\t\t\t\treturn (a.options.fullWidth ? 1 : 0) - (b.options.fullWidth ? 1 : 0);\n\t\t\t});\n\n\t\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t\t// Our canvas looks like the following.\n\t\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\t// B1 is the bottom axis\n\t\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t\t// an error will be thrown.\n\t\t\t//\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | T1 (Full Width) |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | | | T2 | |\n\t\t\t// | |----|-------------------------------------|----|\n\t\t\t// | | | C1 | | C2 | |\n\t\t\t// | | |----| |----| |\n\t\t\t// | | | | |\n\t\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t\t// | | | | |\n\t\t\t// | | |----| |----| |\n\t\t\t// | | | C3 | | C4 | |\n\t\t\t// | |----|-------------------------------------|----|\n\t\t\t// | | | B1 | |\n\t\t\t// |----------------------------------------------------|\n\t\t\t// | B2 (Full Width) |\n\t\t\t// |----------------------------------------------------|\n\t\t\t//\n\t\t\t// What we do to find the best sizing, we do the following\n\t\t\t// 1. Determine the minimum size of the chart area.\n\t\t\t// 2. Split the remaining width equally between each vertical axis\n\t\t\t// 3. Split the remaining height equally between each horizontal axis\n\t\t\t// 4. Give each layout the maximum size it can be. The layout will return it's minimum size\n\t\t\t// 5. Adjust the sizes of each axis based on it's minimum reported size.\n\t\t\t// 6. Refit each axis\n\t\t\t// 7. Position each axis in the final location\n\t\t\t// 8. Tell the chart the final location of the chart area\n\t\t\t// 9. Tell any axes that overlay the chart area the positions of the chart area\n\n\t\t\t// Step 1\n\t\t\tvar chartWidth = width - (2 * xPadding);\n\t\t\tvar chartHeight = height - (2 * yPadding);\n\t\t\tvar chartAreaWidth = chartWidth / 2; // min 50%\n\t\t\tvar chartAreaHeight = chartHeight / 2; // min 50%\n\n\t\t\t// Step 2\n\t\t\tvar verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);\n\n\t\t\t// Step 3\n\t\t\tvar horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);\n\n\t\t\t// Step 4\n\t\t\tvar maxChartAreaWidth = chartWidth;\n\t\t\tvar maxChartAreaHeight = chartHeight;\n\t\t\tvar minBoxSizes = [];\n\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);\n\n\t\t\tfunction getMinimumBoxSize(box) {\n\t\t\t\tvar minSize;\n\t\t\t\tvar isHorizontal = box.isHorizontal();\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize = box.update(box.options.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);\n\t\t\t\t\tmaxChartAreaHeight -= minSize.height;\n\t\t\t\t} else {\n\t\t\t\t\tminSize = box.update(verticalBoxWidth, chartAreaHeight);\n\t\t\t\t\tmaxChartAreaWidth -= minSize.width;\n\t\t\t\t}\n\n\t\t\t\tminBoxSizes.push({\n\t\t\t\t\thorizontal: isHorizontal,\n\t\t\t\t\tminSize: minSize,\n\t\t\t\t\tbox: box\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could\n\t\t\t// be if the axes are drawn at their minimum sizes.\n\n\t\t\t// Steps 5 & 6\n\t\t\tvar totalLeftBoxesWidth = xPadding;\n\t\t\tvar totalRightBoxesWidth = xPadding;\n\t\t\tvar totalTopBoxesHeight = yPadding;\n\t\t\tvar totalBottomBoxesHeight = yPadding;\n\n\t\t\t// Update, and calculate the left and right margins for the horizontal boxes\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), fitBox);\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\t// Set the Left and Right margins for the horizontal boxes\n\t\t\thelpers.each(topBoxes.concat(bottomBoxes), fitBox);\n\n\t\t\t// Function to fit a box\n\t\t\tfunction fitBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBoxSize) {\n\t\t\t\t\treturn minBoxSize.box === box;\n\t\t\t\t});\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\t\tvar scaleMargin = {\n\t\t\t\t\t\t\tleft: totalLeftBoxesWidth,\n\t\t\t\t\t\t\tright: totalRightBoxesWidth,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\tbottom: 0\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends\n\t\t\t\t\t\t// on the margin. Sometimes they need to increase in size slightly\n\t\t\t\t\t\tbox.update(box.options.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Figure out how much margin is on the top and bottom of the vertical boxes\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\t// Let the left layout know the final margin\n\t\t\thelpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);\n\n\t\t\tfunction finalFitVerticalBox(box) {\n\t\t\t\tvar minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBoxSize) {\n\t\t\t\t\treturn minBoxSize.box === box;\n\t\t\t\t});\n\n\t\t\t\tvar scaleMargin = {\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: 0,\n\t\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\t\tbottom: totalBottomBoxesHeight\n\t\t\t\t};\n\n\t\t\t\tif (minBoxSize) {\n\t\t\t\t\tbox.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)\n\t\t\ttotalLeftBoxesWidth = xPadding;\n\t\t\ttotalRightBoxesWidth = xPadding;\n\t\t\ttotalTopBoxesHeight = yPadding;\n\t\t\ttotalBottomBoxesHeight = yPadding;\n\n\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\ttotalLeftBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\ttotalRightBoxesWidth += box.width;\n\t\t\t});\n\n\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\ttotalTopBoxesHeight += box.height;\n\t\t\t});\n\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\ttotalBottomBoxesHeight += box.height;\n\t\t\t});\n\n\t\t\t// Figure out if our chart area changed. This would occur if the dataset layout label rotation\n\t\t\t// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do\n\t\t\t// without calling `fit` again\n\t\t\tvar newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;\n\t\t\tvar newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;\n\n\t\t\tif (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {\n\t\t\t\thelpers.each(leftBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(rightBoxes, function(box) {\n\t\t\t\t\tbox.height = newMaxChartAreaHeight;\n\t\t\t\t});\n\n\t\t\t\thelpers.each(topBoxes, function(box) {\n\t\t\t\t\tif (!box.options.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bottomBoxes, function(box) {\n\t\t\t\t\tif (!box.options.fullWidth) {\n\t\t\t\t\t\tbox.width = newMaxChartAreaWidth;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tmaxChartAreaHeight = newMaxChartAreaHeight;\n\t\t\t\tmaxChartAreaWidth = newMaxChartAreaWidth;\n\t\t\t}\n\n\t\t\t// Step 7 - Position the boxes\n\t\t\tvar left = xPadding;\n\t\t\tvar top = yPadding;\n\n\t\t\thelpers.each(leftBoxes.concat(topBoxes), placeBox);\n\n\t\t\t// Account for chart width and height\n\t\t\tleft += maxChartAreaWidth;\n\t\t\ttop += maxChartAreaHeight;\n\n\t\t\thelpers.each(rightBoxes, placeBox);\n\t\t\thelpers.each(bottomBoxes, placeBox);\n\n\t\t\tfunction placeBox(box) {\n\t\t\t\tif (box.isHorizontal()) {\n\t\t\t\t\tbox.left = box.options.fullWidth ? xPadding : totalLeftBoxesWidth;\n\t\t\t\t\tbox.right = box.options.fullWidth ? width - xPadding : totalLeftBoxesWidth + maxChartAreaWidth;\n\t\t\t\t\tbox.top = top;\n\t\t\t\t\tbox.bottom = top + box.height;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\ttop = box.bottom;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbox.left = left;\n\t\t\t\t\tbox.right = left + box.width;\n\t\t\t\t\tbox.top = totalTopBoxesHeight;\n\t\t\t\t\tbox.bottom = totalTopBoxesHeight + maxChartAreaHeight;\n\n\t\t\t\t\t// Move to next point\n\t\t\t\t\tleft = box.right;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Step 8\n\t\t\tchartInstance.chartArea = {\n\t\t\t\tleft: totalLeftBoxesWidth,\n\t\t\t\ttop: totalTopBoxesHeight,\n\t\t\t\tright: totalLeftBoxesWidth + maxChartAreaWidth,\n\t\t\t\tbottom: totalTopBoxesHeight + maxChartAreaHeight\n\t\t\t};\n\n\t\t\t// Step 9\n\t\t\thelpers.each(chartAreaBoxes, function(box) {\n\t\t\t\tbox.left = chartInstance.chartArea.left;\n\t\t\t\tbox.top = chartInstance.chartArea.top;\n\t\t\t\tbox.right = chartInstance.chartArea.right;\n\t\t\t\tbox.bottom = chartInstance.chartArea.bottom;\n\n\t\t\t\tbox.update(maxChartAreaWidth, maxChartAreaHeight);\n\t\t\t});\n\t\t}\n\t};\n};\n\n},{}],29:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar noop = helpers.noop;\n\n\tChart.defaults.global.legend = {\n\n\t\tdisplay: true,\n\t\tposition: 'top',\n\t\tfullWidth: true, // marks that this box should take the full width of the canvas (pushing down other boxes)\n\t\treverse: false,\n\n\t\t// a callback that will handle\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.datasetIndex;\n\t\t\tvar ci = this.chart;\n\t\t\tvar meta = ci.getDatasetMeta(index);\n\n\t\t\t// See controller.isDatasetVisible comment\n\t\t\tmeta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;\n\n\t\t\t// We hid a dataset ... rerender the chart\n\t\t\tci.update();\n\t\t},\n\n\t\tlabels: {\n\t\t\tboxWidth: 40,\n\t\t\tpadding: 10,\n\t\t\t// Generates labels shown in the legend\n\t\t\t// Valid properties to return:\n\t\t\t// text : text to display\n\t\t\t// fillStyle : fill of coloured box\n\t\t\t// strokeStyle: stroke of coloured box\n\t\t\t// hidden : if this legend item refers to a hidden item\n\t\t\t// lineCap : cap style for line\n\t\t\t// lineDash\n\t\t\t// lineDashOffset :\n\t\t\t// lineJoin :\n\t\t\t// lineWidth :\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\treturn helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttext: dataset.label,\n\t\t\t\t\t\tfillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]),\n\t\t\t\t\t\thidden: !chart.isDatasetVisible(i),\n\t\t\t\t\t\tlineCap: dataset.borderCapStyle,\n\t\t\t\t\t\tlineDash: dataset.borderDash,\n\t\t\t\t\t\tlineDashOffset: dataset.borderDashOffset,\n\t\t\t\t\t\tlineJoin: dataset.borderJoinStyle,\n\t\t\t\t\t\tlineWidth: dataset.borderWidth,\n\t\t\t\t\t\tstrokeStyle: dataset.borderColor,\n\t\t\t\t\t\tpointStyle: dataset.pointStyle,\n\n\t\t\t\t\t\t// Below is extra data used for toggling the datasets\n\t\t\t\t\t\tdatasetIndex: i\n\t\t\t\t\t};\n\t\t\t\t}, this) : [];\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.Legend = Chart.Element.extend({\n\n\t\tinitialize: function(config) {\n\t\t\thelpers.extend(this, config);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tthis.legendHitBoxes = [];\n\n\t\t\t// Are we in doughnut mode which has a different data type\n\t\t\tthis.doughnutMode = false;\n\t\t},\n\n\t\t// These methods are ordered by lifecyle. Utilities then follow.\n\t\t// Any function defined here is inherited by all legend types.\n\t\t// Any function can be extended by the legend type\n\n\t\tbeforeUpdate: noop,\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.legendItems = me.options.labels.generateLabels.call(me, me.chart);\n\t\t\tif(me.options.reverse){\n\t\t\t\tme.legendItems.reverse();\n\t\t\t}\n\t\t},\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar display = opts.display;\n\n\t\t\tvar ctx = me.ctx;\n\n\t\t\tvar globalDefault = Chart.defaults.global,\n\t\t\t\titemOrDefault = helpers.getValueOrDefault,\n\t\t\t\tfontSize = itemOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize),\n\t\t\t\tfontStyle = itemOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle),\n\t\t\t\tfontFamily = itemOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily),\n\t\t\t\tlabelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t\t// Reset hit boxes\n\t\t\tvar hitboxes = me.legendHitBoxes = [];\n\n\t\t\tvar minSize = me.minSize;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = display ? 10 : 0;\n\t\t\t} else {\n\t\t\t\tminSize.width = display ? 10 : 0;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Increase sizes here\n\t\t\tif (display) {\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// Labels\n\n\t\t\t\t\t// Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one\n\t\t\t\t\tvar lineWidths = me.lineWidths = [0];\n\t\t\t\t\tvar totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0;\n\n\t\t\t\t\tctx.textAlign = \"left\";\n\t\t\t\t\tctx.textBaseline = 'top';\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\tvar boxWidth = labelOpts.usePointStyle ?\n\t\t\t\t\t\t\tfontSize * Math.sqrt(2) :\n\t\t\t\t\t\t\tlabelOpts.boxWidth;\n\n\t\t\t\t\t\tvar width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\t\t\t\t\t\tif (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) {\n\t\t\t\t\t\t\ttotalHeight += fontSize + (labelOpts.padding);\n\t\t\t\t\t\t\tlineWidths[lineWidths.length] = me.left;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlineWidths[lineWidths.length - 1] += width + labelOpts.padding;\n\t\t\t\t\t});\n\n\t\t\t\t\tminSize.height += totalHeight;\n\n\t\t\t\t} else {\n\t\t\t\t\tvar vPadding = labelOpts.padding;\n\t\t\t\t\tvar columnWidths = me.columnWidths = [];\n\t\t\t\t\tvar totalWidth = labelOpts.padding;\n\t\t\t\t\tvar currentColWidth = 0;\n\t\t\t\t\tvar currentColHeight = 0;\n\t\t\t\t\tvar itemHeight = fontSize + vPadding;\n\n\t\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\t\t// If usePointStyle is set, multiple boxWidth by 2 since it represents\n\t\t\t\t\t\t// the radius and not truly the width\n\t\t\t\t\t\tvar boxWidth = labelOpts.usePointStyle ? 2 * labelOpts.boxWidth : labelOpts.boxWidth;\n\n\t\t\t\t\t\tvar itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n\n\t\t\t\t\t\t// If too tall, go to new column\n\t\t\t\t\t\tif (currentColHeight + itemHeight > minSize.height) {\n\t\t\t\t\t\t\ttotalWidth += currentColWidth + labelOpts.padding;\n\t\t\t\t\t\t\tcolumnWidths.push(currentColWidth); // previous column width\n\n\t\t\t\t\t\t\tcurrentColWidth = 0;\n\t\t\t\t\t\t\tcurrentColHeight = 0;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Get max width\n\t\t\t\t\t\tcurrentColWidth = Math.max(currentColWidth, itemWidth);\n\t\t\t\t\t\tcurrentColHeight += itemHeight;\n\n\t\t\t\t\t\t// Store the hitbox width and height here. Final position will be updated in `draw`\n\t\t\t\t\t\thitboxes[i] = {\n\t\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\t\twidth: itemWidth,\n\t\t\t\t\t\t\theight: fontSize\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\n\t\t\t\t\ttotalWidth += currentColWidth;\n\t\t\t\t\tcolumnWidths.push(currentColWidth);\n\t\t\t\t\tminSize.width += totalWidth;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === \"top\" || this.options.position === \"bottom\";\n\t\t},\n\n\t\t// Actualy draw the legend on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar labelOpts = opts.labels;\n\t\t\tvar globalDefault = Chart.defaults.global,\n\t\t\t\tlineDefault = globalDefault.elements.line,\n\t\t\t\tlegendWidth = me.width,\n\t\t\t\tlineWidths = me.lineWidths;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx,\n\t\t\t\t\tcursor,\n\t\t\t\t\titemOrDefault = helpers.getValueOrDefault,\n\t\t\t\t\tfontColor = itemOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor),\n\t\t\t\t\tfontSize = itemOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize),\n\t\t\t\t\tfontStyle = itemOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle),\n\t\t\t\t\tfontFamily = itemOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily),\n\t\t\t\t\tlabelFont = helpers.fontString(fontSize, fontStyle, fontFamily);\n\n\t\t\t\t// Canvas setup\n\t\t\t\tctx.textAlign = \"left\";\n\t\t\t\tctx.textBaseline = 'top';\n\t\t\t\tctx.lineWidth = 0.5;\n\t\t\t\tctx.strokeStyle = fontColor; // for strikethrough effect\n\t\t\t\tctx.fillStyle = fontColor; // render in correct colour\n\t\t\t\tctx.font = labelFont;\n\n\t\t\t\tvar boxWidth = labelOpts.boxWidth,\n\t\t\t\t\thitboxes = me.legendHitBoxes;\n\n\t\t\t\t// current position\n\t\t\t\tvar drawLegendBox = function(x, y, legendItem) {\n\t\t\t\t\tif (isNaN(boxWidth) || boxWidth <= 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set the ctx for the box\n\t\t\t\t\tctx.save();\n\n\t\t\t\t\tctx.fillStyle = itemOrDefault(legendItem.fillStyle, globalDefault.defaultColor);\n\t\t\t\t\tctx.lineCap = itemOrDefault(legendItem.lineCap, lineDefault.borderCapStyle);\n\t\t\t\t\tctx.lineDashOffset = itemOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset);\n\t\t\t\t\tctx.lineJoin = itemOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle);\n\t\t\t\t\tctx.lineWidth = itemOrDefault(legendItem.lineWidth, lineDefault.borderWidth);\n\t\t\t\t\tctx.strokeStyle = itemOrDefault(legendItem.strokeStyle, globalDefault.defaultColor);\n\n\t\t\t\t\tif (ctx.setLineDash) {\n\t\t\t\t\t\t// IE 9 and 10 do not support line dash\n\t\t\t\t\t\tctx.setLineDash(itemOrDefault(legendItem.lineDash, lineDefault.borderDash));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (opts.labels && opts.labels.usePointStyle) {\n\t\t\t\t\t\t// Recalulate x and y for drawPoint() because its expecting\n\t\t\t\t\t\t// x and y to be center of figure (instead of top left)\n\t\t\t\t\t\tvar radius = fontSize * Math.SQRT2 / 2;\n\t\t\t\t\t\tvar offSet = radius / Math.SQRT2;\n\t\t\t\t\t\tvar centerX = x + offSet;\n\t\t\t\t\t\tvar centerY = y + offSet;\n\n\t\t\t\t\t\t// Draw pointStyle as legend symbol\n\t\t\t\t\t\tChart.canvasHelpers.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Draw box as legend symbol\n\t\t\t\t\t\tctx.strokeRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t\tctx.fillRect(x, y, boxWidth, fontSize);\n\t\t\t\t\t}\n\n\t\t\t\t\tctx.restore();\n\t\t\t\t};\n\t\t\t\tvar fillText = function(x, y, legendItem, textWidth) {\n\t\t\t\t\tctx.fillText(legendItem.text, boxWidth + (fontSize / 2) + x, y);\n\n\t\t\t\t\tif (legendItem.hidden) {\n\t\t\t\t\t\t// Strikethrough the text if hidden\n\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\tctx.lineWidth = 2;\n\t\t\t\t\t\tctx.moveTo(boxWidth + (fontSize / 2) + x, y + (fontSize / 2));\n\t\t\t\t\t\tctx.lineTo(boxWidth + (fontSize / 2) + x + textWidth, y + (fontSize / 2));\n\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\t// Horizontal\n\t\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + ((legendWidth - lineWidths[0]) / 2),\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tcursor = {\n\t\t\t\t\t\tx: me.left + labelOpts.padding,\n\t\t\t\t\t\ty: me.top + labelOpts.padding,\n\t\t\t\t\t\tline: 0\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tvar itemHeight = fontSize + labelOpts.padding;\n\t\t\t\thelpers.each(me.legendItems, function(legendItem, i) {\n\t\t\t\t\tvar textWidth = ctx.measureText(legendItem.text).width,\n\t\t\t\t\t\twidth = labelOpts.usePointStyle ?\n\t\t\t\t\t\t\tfontSize + (fontSize / 2) + textWidth :\n\t\t\t\t\t\t\tboxWidth + (fontSize / 2) + textWidth,\n\t\t\t\t\t\tx = cursor.x,\n\t\t\t\t\t\ty = cursor.y;\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tif (x + width >= legendWidth) {\n\t\t\t\t\t\t\ty = cursor.y += itemHeight;\n\t\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\t\tx = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (y + itemHeight > me.bottom) {\n\t\t\t\t\t\t\tx = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding;\n\t\t\t\t\t\t\ty = cursor.y = me.top;\n\t\t\t\t\t\t\tcursor.line++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdrawLegendBox(x, y, legendItem);\n\n\t\t\t\t\thitboxes[i].left = x;\n\t\t\t\t\thitboxes[i].top = y;\n\n\t\t\t\t\t// Fill the actual label\n\t\t\t\t\tfillText(x, y, legendItem, textWidth);\n\n\t\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t\tcursor.x += width + (labelOpts.padding);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcursor.y += itemHeight;\n\t\t\t\t\t}\n\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t// Handle an event\n\t\thandleEvent: function(e) {\n\t\t\tvar me = this;\n\t\t\tvar position = helpers.getRelativePosition(e, me.chart.chart),\n\t\t\t\tx = position.x,\n\t\t\t\ty = position.y,\n\t\t\t\topts = me.options;\n\n\t\t\tif (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) {\n\t\t\t\t// See if we are touching one of the dataset boxes\n\t\t\t\tvar lh = me.legendHitBoxes;\n\t\t\t\tfor (var i = 0; i < lh.length; ++i) {\n\t\t\t\t\tvar hitBox = lh[i];\n\n\t\t\t\t\tif (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) {\n\t\t\t\t\t\t// Touching an element\n\t\t\t\t\t\tif (opts.onClick) {\n\t\t\t\t\t\t\topts.onClick.call(me, e, me.legendItems[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\t// Register the legend plugin\n\tChart.plugins.register({\n\t\tbeforeInit: function(chartInstance) {\n\t\t\tvar opts = chartInstance.options;\n\t\t\tvar legendOpts = opts.legend;\n\n\t\t\tif (legendOpts) {\n\t\t\t\tchartInstance.legend = new Chart.Legend({\n\t\t\t\t\tctx: chartInstance.chart.ctx,\n\t\t\t\t\toptions: legendOpts,\n\t\t\t\t\tchart: chartInstance\n\t\t\t\t});\n\n\t\t\t\tChart.layoutService.addBox(chartInstance, chartInstance.legend);\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],30:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar noop = Chart.helpers.noop;\n\n\t/**\n\t * The plugin service singleton\n\t * @namespace Chart.plugins\n\t * @since 2.1.0\n\t */\n\tChart.plugins = {\n\t\t_plugins: [],\n\n\t\t/**\n\t\t * Registers the given plugin(s) if not already registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tif (p.indexOf(plugin) === -1) {\n\t\t\t\t\tp.push(plugin);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Unregisters the given plugin(s) only if registered.\n\t\t * @param {Array|Object} plugins plugin instance(s).\n\t\t */\n\t\tunregister: function(plugins) {\n\t\t\tvar p = this._plugins;\n\t\t\t([]).concat(plugins).forEach(function(plugin) {\n\t\t\t\tvar idx = p.indexOf(plugin);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\tp.splice(idx, 1);\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t/**\n\t\t * Remove all registered p^lugins.\n\t\t * @since 2.1.5\n\t\t */\n\t\tclear: function() {\n\t\t\tthis._plugins = [];\n\t\t},\n\n\t\t/**\n\t\t * Returns the number of registered plugins?\n\t\t * @returns {Number}\n\t\t * @since 2.1.5\n\t\t */\n\t\tcount: function() {\n\t\t\treturn this._plugins.length;\n\t\t},\n\n\t\t/**\n\t\t * Returns all registered plugin intances.\n\t\t * @returns {Array} array of plugin objects.\n\t\t * @since 2.1.5\n\t\t */\n\t\tgetAll: function() {\n\t\t\treturn this._plugins;\n\t\t},\n\n\t\t/**\n\t\t * Calls registered plugins on the specified extension, with the given args. This\n\t\t * method immediately returns as soon as a plugin explicitly returns false. The\n\t\t * returned value can be used, for instance, to interrupt the current action.\n\t\t * @param {String} extension the name of the plugin method to call (e.g. 'beforeUpdate').\n\t\t * @param {Array} [args] extra arguments to apply to the extension call.\n\t\t * @returns {Boolean} false if any of the plugins return false, else returns true.\n\t\t */\n\t\tnotify: function(extension, args) {\n\t\t\tvar plugins = this._plugins;\n\t\t\tvar ilen = plugins.length;\n\t\t\tvar i, plugin;\n\n\t\t\tfor (i=0; i<ilen; ++i) {\n\t\t\t\tplugin = plugins[i];\n\t\t\t\tif (typeof plugin[extension] === 'function') {\n\t\t\t\t\tif (plugin[extension].apply(plugin, args || []) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\t};\n\n\t/**\n\t * Plugin extension methods.\n\t * @interface Chart.PluginBase\n\t * @since 2.1.0\n\t */\n\tChart.PluginBase = Chart.Element.extend({\n\t\t// Called at start of chart init\n\t\tbeforeInit: noop,\n\n\t\t// Called at end of chart init\n\t\tafterInit: noop,\n\n\t\t// Called at start of update\n\t\tbeforeUpdate: noop,\n\n\t\t// Called at end of update\n\t\tafterUpdate: noop,\n\n\t\t// Called at start of draw\n\t\tbeforeDraw: noop,\n\n\t\t// Called at end of draw\n\t\tafterDraw: noop,\n\n\t\t// Called during destroy\n\t\tdestroy: noop\n\t});\n\n\t/**\n\t * Provided for backward compatibility, use Chart.plugins instead\n\t * @namespace Chart.pluginService\n\t * @deprecated since version 2.1.5\n\t * @todo remove me at version 3\n\t */\n\tChart.pluginService = Chart.plugins;\n};\n\n},{}],31:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.scale = {\n\t\tdisplay: true,\n\t\tposition: \"left\",\n\n\t\t// grid line settings\n\t\tgridLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: \"rgba(0, 0, 0, 0.1)\",\n\t\t\tlineWidth: 1,\n\t\t\tdrawBorder: true,\n\t\t\tdrawOnChartArea: true,\n\t\t\tdrawTicks: true,\n\t\t\ttickMarkLength: 10,\n\t\t\tzeroLineWidth: 1,\n\t\t\tzeroLineColor: \"rgba(0,0,0,0.25)\",\n\t\t\toffsetGridLines: false,\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0\n\t\t},\n\n\t\t// scale label\n\t\tscaleLabel: {\n\t\t\t// actual label\n\t\t\tlabelString: '',\n\n\t\t\t// display property\n\t\t\tdisplay: false\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tbeginAtZero: false,\n\t\t\tminRotation: 0,\n\t\t\tmaxRotation: 50,\n\t\t\tmirror: false,\n\t\t\tpadding: 10,\n\t\t\treverse: false,\n\t\t\tdisplay: true,\n\t\t\tautoSkip: true,\n\t\t\tautoSkipPadding: 0,\n\t\t\tlabelOffset: 0,\n\t\t\t// We pass through arrays to be rendered as multiline labels, we convert Others to strings here.\n\t\t\tcallback: function(value) {\n\t\t\t\treturn helpers.isArray(value) ? value : '' + value;\n\t\t\t}\n\t\t}\n\t};\n\n\tChart.Scale = Chart.Element.extend({\n\n\t\t// These methods are ordered by lifecyle. Utilities then follow.\n\t\t// Any function defined here is inherited by all scale types.\n\t\t// Any function can be extended by the scale type\n\n\t\tbeforeUpdate: function() {\n\t\t\thelpers.callCallback(this.options.beforeUpdate, [this]);\n\t\t},\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = helpers.extend({\n\t\t\t\tleft: 0,\n\t\t\t\tright: 0,\n\t\t\t\ttop: 0,\n\t\t\t\tbottom: 0\n\t\t\t}, margins);\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\n\t\t\t// Data min/max\n\t\t\tme.beforeDataLimits();\n\t\t\tme.determineDataLimits();\n\t\t\tme.afterDataLimits();\n\n\t\t\t// Ticks\n\t\t\tme.beforeBuildTicks();\n\t\t\tme.buildTicks();\n\t\t\tme.afterBuildTicks();\n\n\t\t\tme.beforeTickToLabelConversion();\n\t\t\tme.convertTicksToLabels();\n\t\t\tme.afterTickToLabelConversion();\n\n\t\t\t// Tick Rotation\n\t\t\tme.beforeCalculateTickRotation();\n\t\t\tme.calculateTickRotation();\n\t\t\tme.afterCalculateTickRotation();\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: function() {\n\t\t\thelpers.callCallback(this.options.afterUpdate, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeSetDimensions: function() {\n\t\t\thelpers.callCallback(this.options.beforeSetDimensions, [this]);\n\t\t},\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\t\t},\n\t\tafterSetDimensions: function() {\n\t\t\thelpers.callCallback(this.options.afterSetDimensions, [this]);\n\t\t},\n\n\t\t// Data limits\n\t\tbeforeDataLimits: function() {\n\t\t\thelpers.callCallback(this.options.beforeDataLimits, [this]);\n\t\t},\n\t\tdetermineDataLimits: helpers.noop,\n\t\tafterDataLimits: function() {\n\t\t\thelpers.callCallback(this.options.afterDataLimits, [this]);\n\t\t},\n\n\t\t//\n\t\tbeforeBuildTicks: function() {\n\t\t\thelpers.callCallback(this.options.beforeBuildTicks, [this]);\n\t\t},\n\t\tbuildTicks: helpers.noop,\n\t\tafterBuildTicks: function() {\n\t\t\thelpers.callCallback(this.options.afterBuildTicks, [this]);\n\t\t},\n\n\t\tbeforeTickToLabelConversion: function() {\n\t\t\thelpers.callCallback(this.options.beforeTickToLabelConversion, [this]);\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\t// Convert ticks to strings\n\t\t\tme.ticks = me.ticks.map(function(numericalTick, index, ticks) {\n\t\t\t\t\tif (me.options.ticks.userCallback) {\n\t\t\t\t\t\treturn me.options.ticks.userCallback(numericalTick, index, ticks);\n\t\t\t\t\t}\n\t\t\t\t\treturn me.options.ticks.callback(numericalTick, index, ticks);\n\t\t\t\t},\n\t\t\t\tme);\n\t\t},\n\t\tafterTickToLabelConversion: function() {\n\t\t\thelpers.callCallback(this.options.afterTickToLabelConversion, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeCalculateTickRotation: function() {\n\t\t\thelpers.callCallback(this.options.beforeCalculateTickRotation, [this]);\n\t\t},\n\t\tcalculateTickRotation: function() {\n\t\t\tvar me = this;\n\t\t\tvar context = me.ctx;\n\t\t\tvar globalDefaults = Chart.defaults.global;\n\t\t\tvar optionTicks = me.options.ticks;\n\n\t\t\t//Get the width of each grid by calculating the difference\n\t\t\t//between x offsets between 0 and 1.\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(optionTicks.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar tickFontStyle = helpers.getValueOrDefault(optionTicks.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar tickFontFamily = helpers.getValueOrDefault(optionTicks.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\t\t\tcontext.font = tickLabelFont;\n\n\t\t\tvar firstWidth = context.measureText(me.ticks[0]).width;\n\t\t\tvar lastWidth = context.measureText(me.ticks[me.ticks.length - 1]).width;\n\t\t\tvar firstRotated;\n\n\t\t\tme.labelRotation = optionTicks.minRotation || 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingLeft = 0;\n\n\t\t\tif (me.options.display) {\n\t\t\t\tif (me.isHorizontal()) {\n\t\t\t\t\tme.paddingRight = lastWidth / 2 + 3;\n\t\t\t\t\tme.paddingLeft = firstWidth / 2 + 3;\n\n\t\t\t\t\tif (!me.longestTextCache) {\n\t\t\t\t\t\tme.longestTextCache = {};\n\t\t\t\t\t}\n\t\t\t\t\tvar originalLabelWidth = helpers.longestText(context, tickLabelFont, me.ticks, me.longestTextCache);\n\t\t\t\t\tvar labelWidth = originalLabelWidth;\n\t\t\t\t\tvar cosRotation;\n\t\t\t\t\tvar sinRotation;\n\n\t\t\t\t\t// Allow 3 pixels x2 padding either side for label readability\n\t\t\t\t\t// only the index matters for a dataset scale, but we want a consistent interface between scales\n\t\t\t\t\tvar tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6;\n\n\t\t\t\t\t//Max label rotation can be set or default to 90 - also act as a loop counter\n\t\t\t\t\twhile (labelWidth > tickWidth && me.labelRotation < optionTicks.maxRotation) {\n\t\t\t\t\t\tcosRotation = Math.cos(helpers.toRadians(me.labelRotation));\n\t\t\t\t\t\tsinRotation = Math.sin(helpers.toRadians(me.labelRotation));\n\n\t\t\t\t\t\tfirstRotated = cosRotation * firstWidth;\n\n\t\t\t\t\t\t// We're right aligning the text now.\n\t\t\t\t\t\tif (firstRotated + tickFontSize / 2 > me.yLabelWidth) {\n\t\t\t\t\t\t\tme.paddingLeft = firstRotated + tickFontSize / 2;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tme.paddingRight = tickFontSize / 2;\n\n\t\t\t\t\t\tif (sinRotation * originalLabelWidth > me.maxHeight) {\n\t\t\t\t\t\t\t// go back one step\n\t\t\t\t\t\t\tme.labelRotation--;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tme.labelRotation++;\n\t\t\t\t\t\tlabelWidth = cosRotation * originalLabelWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.margins) {\n\t\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\t}\n\t\t},\n\t\tafterCalculateTickRotation: function() {\n\t\t\thelpers.callCallback(this.options.afterCalculateTickRotation, [this]);\n\t\t},\n\n\t\t//\n\n\t\tbeforeFit: function() {\n\t\t\thelpers.callCallback(this.options.beforeFit, [this]);\n\t\t},\n\t\tfit: function() {\n\t\t\tvar me = this;\n\t\t\t// Reset\n\t\t\tvar minSize = me.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\n\t\t\tvar opts = me.options;\n\t\t\tvar globalDefaults = Chart.defaults.global;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar scaleLabelOpts = opts.scaleLabel;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar display = opts.display;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar tickFontStyle = helpers.getValueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar tickFontFamily = helpers.getValueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\tvar scaleLabelFontSize = helpers.getValueOrDefault(scaleLabelOpts.fontSize, globalDefaults.defaultFontSize);\n\n\t\t\tvar tickMarkLength = opts.gridLines.tickMarkLength;\n\n\t\t\t// Width\n\t\t\tif (isHorizontal) {\n\t\t\t\t// subtract the margins to line up with the chartArea if we are a full width scale\n\t\t\t\tminSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth;\n\t\t\t} else {\n\t\t\t\tminSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t}\n\n\t\t\t// height\n\t\t\tif (isHorizontal) {\n\t\t\t\tminSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0;\n\t\t\t} else {\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\t// Are we showing a title for the scale?\n\t\t\tif (scaleLabelOpts.display && display) {\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tminSize.height += (scaleLabelFontSize * 1.5);\n\t\t\t\t} else {\n\t\t\t\t\tminSize.width += (scaleLabelFontSize * 1.5);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.display && display) {\n\t\t\t\t// Don't bother fitting the ticks if we are not showing them\n\t\t\t\tif (!me.longestTextCache) {\n\t\t\t\t\tme.longestTextCache = {};\n\t\t\t\t}\n\n\t\t\t\tvar largestTextWidth = helpers.longestText(me.ctx, tickLabelFont, me.ticks, me.longestTextCache);\n\t\t\t\tvar tallestLabelHeightInLines = helpers.numberOfLabelLines(me.ticks);\n\t\t\t\tvar lineSpace = tickFontSize * 0.5;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\t// A horizontal axis is more constrained by the height.\n\t\t\t\t\tme.longestLabelWidth = largestTextWidth;\n\n\t\t\t\t\t// TODO - improve this calculation\n\t\t\t\t\tvar labelHeight = (Math.sin(helpers.toRadians(me.labelRotation)) * me.longestLabelWidth) + (tickFontSize * tallestLabelHeightInLines) + (lineSpace * tallestLabelHeightInLines);\n\n\t\t\t\t\tminSize.height = Math.min(me.maxHeight, minSize.height + labelHeight);\n\t\t\t\t\tme.ctx.font = tickLabelFont;\n\n\t\t\t\t\tvar firstLabelWidth = me.ctx.measureText(me.ticks[0]).width;\n\t\t\t\t\tvar lastLabelWidth = me.ctx.measureText(me.ticks[me.ticks.length - 1]).width;\n\n\t\t\t\t\t// Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned which means that the right padding is dominated\n\t\t\t\t\t// by the font height\n\t\t\t\t\tvar cosRotation = Math.cos(helpers.toRadians(me.labelRotation));\n\t\t\t\t\tvar sinRotation = Math.sin(helpers.toRadians(me.labelRotation));\n\t\t\t\t\tme.paddingLeft = me.labelRotation !== 0 ? (cosRotation * firstLabelWidth) + 3 : firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges\n\t\t\t\t\tme.paddingRight = me.labelRotation !== 0 ? (sinRotation * (tickFontSize / 2)) + 3 : lastLabelWidth / 2 + 3; // when rotated\n\t\t\t\t} else {\n\t\t\t\t\t// A vertical axis is more constrained by the width. Labels are the dominant factor here, so get that length first\n\t\t\t\t\tvar maxLabelWidth = me.maxWidth - minSize.width;\n\n\t\t\t\t\t// Account for padding\n\t\t\t\t\tvar mirror = tickOpts.mirror;\n\t\t\t\t\tif (!mirror) {\n\t\t\t\t\t\tlargestTextWidth += me.options.ticks.padding;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If mirrored text is on the inside so don't expand\n\t\t\t\t\t\tlargestTextWidth = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (largestTextWidth < maxLabelWidth) {\n\t\t\t\t\t\t// We don't need all the room\n\t\t\t\t\t\tminSize.width += largestTextWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Expand to max size\n\t\t\t\t\t\tminSize.width = me.maxWidth;\n\t\t\t\t\t}\n\n\t\t\t\t\tme.paddingTop = tickFontSize / 2;\n\t\t\t\t\tme.paddingBottom = tickFontSize / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (me.margins) {\n\t\t\t\tme.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0);\n\t\t\t\tme.paddingTop = Math.max(me.paddingTop - me.margins.top, 0);\n\t\t\t\tme.paddingRight = Math.max(me.paddingRight - me.margins.right, 0);\n\t\t\t\tme.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0);\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\n\t\t},\n\t\tafterFit: function() {\n\t\t\thelpers.callCallback(this.options.afterFit, [this]);\n\t\t},\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\treturn this.options.position === \"top\" || this.options.position === \"bottom\";\n\t\t},\n\t\tisFullWidth: function() {\n\t\t\treturn (this.options.fullWidth);\n\t\t},\n\n\t\t// Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not\n\t\tgetRightValue: function(rawValue) {\n\t\t\t// Null and undefined values first\n\t\t\tif (rawValue === null || typeof(rawValue) === 'undefined') {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// isNaN(object) returns true, so make sure NaN is checking for a number\n\t\t\tif (typeof(rawValue) === 'number' && isNaN(rawValue)) {\n\t\t\t\treturn NaN;\n\t\t\t}\n\t\t\t// If it is in fact an object, dive in one more level\n\t\t\tif (typeof(rawValue) === \"object\") {\n\t\t\t\tif ((rawValue instanceof Date) || (rawValue.isValid)) {\n\t\t\t\t\treturn rawValue;\n\t\t\t\t} else {\n\t\t\t\t\treturn this.getRightValue(this.isHorizontal() ? rawValue.x : rawValue.y);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Value is good, return it\n\t\t\treturn rawValue;\n\t\t},\n\n\t\t// Used to get the value to display in the tooltip for the data at the given index\n\t\t// function getLabelForIndex(index, datasetIndex)\n\t\tgetLabelForIndex: helpers.noop,\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: helpers.noop,\n\n\t\t// Used to get the data value from a given pixel. This is the inverse of getPixelForValue\n\t\tgetValueForPixel: helpers.noop,\n\n\t\t// Used for tick location, should\n\t\tgetPixelForTick: function(index, includeOffset) {\n\t\t\tvar me = this;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar tickWidth = innerWidth / Math.max((me.ticks.length - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\t\t\t\tvar pixel = (tickWidth * index) + me.paddingLeft;\n\n\t\t\t\tif (includeOffset) {\n\t\t\t\t\tpixel += tickWidth / 2;\n\t\t\t\t}\n\n\t\t\t\tvar finalVal = me.left + Math.round(pixel);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t} else {\n\t\t\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\t\treturn me.top + (index * (innerHeight / (me.ticks.length - 1)));\n\t\t\t}\n\t\t},\n\n\t\t// Utility for getting the pixel location of a percentage of scale\n\t\tgetPixelForDecimal: function(decimal /*, includeOffset*/ ) {\n\t\t\tvar me = this;\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\t\tvar finalVal = me.left + Math.round(valueOffset);\n\t\t\t\tfinalVal += me.isFullWidth() ? me.margins.left : 0;\n\t\t\t\treturn finalVal;\n\t\t\t} else {\n\t\t\t\treturn me.top + (decimal * me.height);\n\t\t\t}\n\t\t},\n\n\t\tgetBasePixel: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPixelForValue(\n\t\t\t\tme.beginAtZero? 0:\n\t\t\t\tmin < 0 && max < 0? max :\n\t\t\t\tmin > 0 && max > 0? min :\n\t\t\t\t0);\n\t\t},\n\n\t\t// Actualy draw the scale on the canvas\n\t\t// @param {rectangle} chartArea : the area of the chart to draw full grid lines on\n\t\tdraw: function(chartArea) {\n\t\t\tvar me = this;\n\t\t\tvar options = me.options;\n\t\t\tif (!options.display) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar context = me.ctx;\n\t\t\tvar globalDefaults = Chart.defaults.global;\n\t\t\tvar optionTicks = options.ticks;\n\t\t\tvar gridLines = options.gridLines;\n\t\t\tvar scaleLabel = options.scaleLabel;\n\n\t\t\tvar isRotated = me.labelRotation !== 0;\n\t\t\tvar skipRatio;\n\t\t\tvar useAutoskipper = optionTicks.autoSkip;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\t// figure out the maximum number of gridlines to show\n\t\t\tvar maxTicks;\n\t\t\tif (optionTicks.maxTicksLimit) {\n\t\t\t\tmaxTicks = optionTicks.maxTicksLimit;\n\t\t\t}\n\n\t\t\tvar tickFontColor = helpers.getValueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(optionTicks.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar tickFontStyle = helpers.getValueOrDefault(optionTicks.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar tickFontFamily = helpers.getValueOrDefault(optionTicks.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\t\t\tvar tl = gridLines.tickMarkLength;\n\t\t\tvar borderDash = helpers.getValueOrDefault(gridLines.borderDash, globalDefaults.borderDash);\n\t\t\tvar borderDashOffset = helpers.getValueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset);\n\n\t\t\tvar scaleLabelFontColor = helpers.getValueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor);\n\t\t\tvar scaleLabelFontSize = helpers.getValueOrDefault(scaleLabel.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar scaleLabelFontStyle = helpers.getValueOrDefault(scaleLabel.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar scaleLabelFontFamily = helpers.getValueOrDefault(scaleLabel.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar scaleLabelFont = helpers.fontString(scaleLabelFontSize, scaleLabelFontStyle, scaleLabelFontFamily);\n\n\t\t\tvar labelRotationRadians = helpers.toRadians(me.labelRotation);\n\t\t\tvar cosRotation = Math.cos(labelRotationRadians);\n\t\t\tvar longestRotatedLabel = me.longestLabelWidth * cosRotation;\n\n\t\t\t// Make sure we draw text in the correct color and font\n\t\t\tcontext.fillStyle = tickFontColor;\n\n\t\t\tvar itemsToDraw = [];\n\n\t\t\tif (isHorizontal) {\n\t\t\t\tskipRatio = false;\n\n\t\t\t\t// Only calculate the skip ratio with the half width of longestRotateLabel if we got an actual rotation\n\t\t\t\t// See #2584\n\t\t\t\tif (isRotated) {\n\t\t\t\t\tlongestRotatedLabel /= 2;\n\t\t\t\t}\n\n\t\t\t\tif ((longestRotatedLabel + optionTicks.autoSkipPadding) * me.ticks.length > (me.width - (me.paddingLeft + me.paddingRight))) {\n\t\t\t\t\tskipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * me.ticks.length) / (me.width - (me.paddingLeft + me.paddingRight)));\n\t\t\t\t}\n\n\t\t\t\t// if they defined a max number of optionTicks,\n\t\t\t\t// increase skipRatio until that number is met\n\t\t\t\tif (maxTicks && me.ticks.length > maxTicks) {\n\t\t\t\t\twhile (!skipRatio || me.ticks.length / (skipRatio || 1) > maxTicks) {\n\t\t\t\t\t\tif (!skipRatio) {\n\t\t\t\t\t\t\tskipRatio = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tskipRatio += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!useAutoskipper) {\n\t\t\t\t\tskipRatio = false;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\tvar xTickStart = options.position === \"right\" ? me.left : me.right - tl;\n\t\t\tvar xTickEnd = options.position === \"right\" ? me.left + tl : me.right;\n\t\t\tvar yTickStart = options.position === \"bottom\" ? me.top : me.bottom - tl;\n\t\t\tvar yTickEnd = options.position === \"bottom\" ? me.top + tl : me.bottom;\n\n\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t// If the callback returned a null or undefined value, do not draw this line\n\t\t\t\tif (label === undefined || label === null) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar isLastTick = me.ticks.length === index + 1;\n\n\t\t\t\t// Since we always show the last tick,we need may need to hide the last shown one before\n\t\t\t\tvar shouldSkip = (skipRatio > 1 && index % skipRatio > 0) || (index % skipRatio === 0 && index + skipRatio >= me.ticks.length);\n\t\t\t\tif (shouldSkip && !isLastTick || (label === undefined || label === null)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar lineWidth, lineColor;\n\t\t\t\tif (index === (typeof me.zeroLineIndex !== 'undefined' ? me.zeroLineIndex : 0)) {\n\t\t\t\t\t// Draw the first index specially\n\t\t\t\t\tlineWidth = gridLines.zeroLineWidth;\n\t\t\t\t\tlineColor = gridLines.zeroLineColor;\n\t\t\t\t} else {\n\t\t\t\t\tlineWidth = helpers.getValueAtIndexOrDefault(gridLines.lineWidth, index);\n\t\t\t\t\tlineColor = helpers.getValueAtIndexOrDefault(gridLines.color, index);\n\t\t\t\t}\n\n\t\t\t\t// Common properties\n\t\t\t\tvar tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY;\n\t\t\t\tvar textAlign, textBaseline = 'middle';\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tif (!isRotated) {\n\t\t\t\t\t\ttextBaseline = options.position === 'top' ? 'bottom' : 'top';\n\t\t\t\t\t}\n\n\t\t\t\t\ttextAlign = isRotated ? 'right' : 'center';\n\n\t\t\t\t\tvar xLineValue = me.getPixelForTick(index) + helpers.aliasPixel(lineWidth); // xvalues for grid lines\n\t\t\t\t\tlabelX = me.getPixelForTick(index, gridLines.offsetGridLines) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option)\n\t\t\t\t\tlabelY = (isRotated) ? me.top + 12 : options.position === 'top' ? me.bottom - tl : me.top + tl;\n\n\t\t\t\t\ttx1 = tx2 = x1 = x2 = xLineValue;\n\t\t\t\t\tty1 = yTickStart;\n\t\t\t\t\tty2 = yTickEnd;\n\t\t\t\t\ty1 = chartArea.top;\n\t\t\t\t\ty2 = chartArea.bottom;\n\t\t\t\t} else {\n\t\t\t\t\tif (options.position === 'left') {\n\t\t\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\t\t\tlabelX = me.right + optionTicks.padding;\n\t\t\t\t\t\t\ttextAlign = 'left';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlabelX = me.right - optionTicks.padding;\n\t\t\t\t\t\t\ttextAlign = 'right';\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// right side\n\t\t\t\t\t\tif (optionTicks.mirror) {\n\t\t\t\t\t\t\tlabelX = me.left - optionTicks.padding;\n\t\t\t\t\t\t\ttextAlign = 'right';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlabelX = me.left + optionTicks.padding;\n\t\t\t\t\t\t\ttextAlign = 'left';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar yLineValue = me.getPixelForTick(index); // xvalues for grid lines\n\t\t\t\t\tyLineValue += helpers.aliasPixel(lineWidth);\n\t\t\t\t\tlabelY = me.getPixelForTick(index, gridLines.offsetGridLines);\n\n\t\t\t\t\ttx1 = xTickStart;\n\t\t\t\t\ttx2 = xTickEnd;\n\t\t\t\t\tx1 = chartArea.left;\n\t\t\t\t\tx2 = chartArea.right;\n\t\t\t\t\tty1 = ty2 = y1 = y2 = yLineValue;\n\t\t\t\t}\n\n\t\t\t\titemsToDraw.push({\n\t\t\t\t\ttx1: tx1,\n\t\t\t\t\tty1: ty1,\n\t\t\t\t\ttx2: tx2,\n\t\t\t\t\tty2: ty2,\n\t\t\t\t\tx1: x1,\n\t\t\t\t\ty1: y1,\n\t\t\t\t\tx2: x2,\n\t\t\t\t\ty2: y2,\n\t\t\t\t\tlabelX: labelX,\n\t\t\t\t\tlabelY: labelY,\n\t\t\t\t\tglWidth: lineWidth,\n\t\t\t\t\tglColor: lineColor,\n\t\t\t\t\tglBorderDash: borderDash,\n\t\t\t\t\tglBorderDashOffset: borderDashOffset,\n\t\t\t\t\trotation: -1 * labelRotationRadians,\n\t\t\t\t\tlabel: label,\n\t\t\t\t\ttextBaseline: textBaseline,\n\t\t\t\t\ttextAlign: textAlign\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Draw all of the tick labels, tick marks, and grid lines at the correct places\n\t\t\thelpers.each(itemsToDraw, function(itemToDraw) {\n\t\t\t\tif (gridLines.display) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.lineWidth = itemToDraw.glWidth;\n\t\t\t\t\tcontext.strokeStyle = itemToDraw.glColor;\n\t\t\t\t\tif (context.setLineDash) {\n\t\t\t\t\t\tcontext.setLineDash(itemToDraw.glBorderDash);\n\t\t\t\t\t\tcontext.lineDashOffset = itemToDraw.glBorderDashOffset;\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.beginPath();\n\n\t\t\t\t\tif (gridLines.drawTicks) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.tx1, itemToDraw.ty1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.tx2, itemToDraw.ty2);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (gridLines.drawOnChartArea) {\n\t\t\t\t\t\tcontext.moveTo(itemToDraw.x1, itemToDraw.y1);\n\t\t\t\t\t\tcontext.lineTo(itemToDraw.x2, itemToDraw.y2);\n\t\t\t\t\t}\n\n\t\t\t\t\tcontext.stroke();\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\n\t\t\t\tif (optionTicks.display) {\n\t\t\t\t\tcontext.save();\n\t\t\t\t\tcontext.translate(itemToDraw.labelX, itemToDraw.labelY);\n\t\t\t\t\tcontext.rotate(itemToDraw.rotation);\n\t\t\t\t\tcontext.font = tickLabelFont;\n\t\t\t\t\tcontext.textBaseline = itemToDraw.textBaseline;\n\t\t\t\t\tcontext.textAlign = itemToDraw.textAlign;\n\n\t\t\t\t\tvar label = itemToDraw.label;\n\t\t\t\t\tif (helpers.isArray(label)) {\n\t\t\t\t\t\tfor (var i = 0, y = 0; i < label.length; ++i) {\n\t\t\t\t\t\t\t// We just make sure the multiline element is a string here..\n\t\t\t\t\t\t\tcontext.fillText('' + label[i], 0, y);\n\t\t\t\t\t\t\t// apply same lineSpacing as calculated @ L#320\n\t\t\t\t\t\t\ty += (tickFontSize * 1.5);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.fillText(label, 0, 0);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.restore();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (scaleLabel.display) {\n\t\t\t\t// Draw the scale label\n\t\t\t\tvar scaleLabelX;\n\t\t\t\tvar scaleLabelY;\n\t\t\t\tvar rotation = 0;\n\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\tscaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width\n\t\t\t\t\tscaleLabelY = options.position === 'bottom' ? me.bottom - (scaleLabelFontSize / 2) : me.top + (scaleLabelFontSize / 2);\n\t\t\t\t} else {\n\t\t\t\t\tvar isLeft = options.position === 'left';\n\t\t\t\t\tscaleLabelX = isLeft ? me.left + (scaleLabelFontSize / 2) : me.right - (scaleLabelFontSize / 2);\n\t\t\t\t\tscaleLabelY = me.top + ((me.bottom - me.top) / 2);\n\t\t\t\t\trotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI;\n\t\t\t\t}\n\n\t\t\t\tcontext.save();\n\t\t\t\tcontext.translate(scaleLabelX, scaleLabelY);\n\t\t\t\tcontext.rotate(rotation);\n\t\t\t\tcontext.textAlign = 'center';\n\t\t\t\tcontext.textBaseline = 'middle';\n\t\t\t\tcontext.fillStyle = scaleLabelFontColor; // render in correct colour\n\t\t\t\tcontext.font = scaleLabelFont;\n\t\t\t\tcontext.fillText(scaleLabel.labelString, 0, 0);\n\t\t\t\tcontext.restore();\n\t\t\t}\n\n\t\t\tif (gridLines.drawBorder) {\n\t\t\t\t// Draw the line at the edge of the axis\n\t\t\t\tcontext.lineWidth = helpers.getValueAtIndexOrDefault(gridLines.lineWidth, 0);\n\t\t\t\tcontext.strokeStyle = helpers.getValueAtIndexOrDefault(gridLines.color, 0);\n\t\t\t\tvar x1 = me.left,\n\t\t\t\t\tx2 = me.right,\n\t\t\t\t\ty1 = me.top,\n\t\t\t\t\ty2 = me.bottom;\n\n\t\t\t\tvar aliasPixel = helpers.aliasPixel(context.lineWidth);\n\t\t\t\tif (isHorizontal) {\n\t\t\t\t\ty1 = y2 = options.position === 'top' ? me.bottom : me.top;\n\t\t\t\t\ty1 += aliasPixel;\n\t\t\t\t\ty2 += aliasPixel;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = x2 = options.position === 'left' ? me.right : me.left;\n\t\t\t\t\tx1 += aliasPixel;\n\t\t\t\t\tx2 += aliasPixel;\n\t\t\t\t}\n\n\t\t\t\tcontext.beginPath();\n\t\t\t\tcontext.moveTo(x1, y1);\n\t\t\t\tcontext.lineTo(x2, y2);\n\t\t\t\tcontext.stroke();\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],32:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.scaleService = {\n\t\t// Scale registration object. Extensions can register new scale types (such as log or DB scales) and then\n\t\t// use the new chart options to grab the correct scale\n\t\tconstructors: {},\n\t\t// Use a registration function so that we can move to an ES6 map when we no longer need to support\n\t\t// old browsers\n\n\t\t// Scale config defaults\n\t\tdefaults: {},\n\t\tregisterScaleType: function(type, scaleConstructor, defaults) {\n\t\t\tthis.constructors[type] = scaleConstructor;\n\t\t\tthis.defaults[type] = helpers.clone(defaults);\n\t\t},\n\t\tgetScaleConstructor: function(type) {\n\t\t\treturn this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined;\n\t\t},\n\t\tgetScaleDefaults: function(type) {\n\t\t\t// Return the scale defaults merged with the global settings so that we always use the latest ones\n\t\t\treturn this.defaults.hasOwnProperty(type) ? helpers.scaleMerge(Chart.defaults.scale, this.defaults[type]) : {};\n\t\t},\n\t\tupdateScaleDefaults: function(type, additions) {\n\t\t\tvar defaults = this.defaults;\n\t\t\tif (defaults.hasOwnProperty(type)) {\n\t\t\t\tdefaults[type] = helpers.extend(defaults[type], additions);\n\t\t\t}\n\t\t},\n\t\taddScalesToLayout: function(chartInstance) {\n\t\t\t// Adds each scale to the chart.boxes array to be sized accordingly\n\t\t\thelpers.each(chartInstance.scales, function(scale) {\n\t\t\t\tChart.layoutService.addBox(chartInstance, scale);\n\t\t\t});\n\t\t}\n\t};\n};\n},{}],33:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.global.title = {\n\t\tdisplay: false,\n\t\tposition: 'top',\n\t\tfullWidth: true, // marks that this box should take the full width of the canvas (pushing down other boxes)\n\n\t\tfontStyle: 'bold',\n\t\tpadding: 10,\n\n\t\t// actual title\n\t\ttext: ''\n\t};\n\n\tvar noop = helpers.noop;\n\tChart.Title = Chart.Element.extend({\n\n\t\tinitialize: function(config) {\n\t\t\tvar me = this;\n\t\t\thelpers.extend(me, config);\n\t\t\tme.options = helpers.configMerge(Chart.defaults.global.title, config.options);\n\n\t\t\t// Contains hit boxes for each dataset (in dataset order)\n\t\t\tme.legendHitBoxes = [];\n\t\t},\n\n\t\t// These methods are ordered by lifecyle. Utilities then follow.\n\n\t\tbeforeUpdate: function () {\n\t\t\tvar chartOpts = this.chart.options;\n\t\t\tif (chartOpts && chartOpts.title) {\n\t\t\t\tthis.options = helpers.configMerge(Chart.defaults.global.title, chartOpts.title);\n\t\t\t}\n\t\t},\n\t\tupdate: function(maxWidth, maxHeight, margins) {\n\t\t\tvar me = this;\n\n\t\t\t// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)\n\t\t\tme.beforeUpdate();\n\n\t\t\t// Absorb the master measurements\n\t\t\tme.maxWidth = maxWidth;\n\t\t\tme.maxHeight = maxHeight;\n\t\t\tme.margins = margins;\n\n\t\t\t// Dimensions\n\t\t\tme.beforeSetDimensions();\n\t\t\tme.setDimensions();\n\t\t\tme.afterSetDimensions();\n\t\t\t// Labels\n\t\t\tme.beforeBuildLabels();\n\t\t\tme.buildLabels();\n\t\t\tme.afterBuildLabels();\n\n\t\t\t// Fit\n\t\t\tme.beforeFit();\n\t\t\tme.fit();\n\t\t\tme.afterFit();\n\t\t\t//\n\t\t\tme.afterUpdate();\n\n\t\t\treturn me.minSize;\n\n\t\t},\n\t\tafterUpdate: noop,\n\n\t\t//\n\n\t\tbeforeSetDimensions: noop,\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.width = me.maxWidth;\n\t\t\t\tme.left = 0;\n\t\t\t\tme.right = me.width;\n\t\t\t} else {\n\t\t\t\tme.height = me.maxHeight;\n\n\t\t\t\t// Reset position before calculating rotation\n\t\t\t\tme.top = 0;\n\t\t\t\tme.bottom = me.height;\n\t\t\t}\n\n\t\t\t// Reset padding\n\t\t\tme.paddingLeft = 0;\n\t\t\tme.paddingTop = 0;\n\t\t\tme.paddingRight = 0;\n\t\t\tme.paddingBottom = 0;\n\n\t\t\t// Reset minSize\n\t\t\tme.minSize = {\n\t\t\t\twidth: 0,\n\t\t\t\theight: 0\n\t\t\t};\n\t\t},\n\t\tafterSetDimensions: noop,\n\n\t\t//\n\n\t\tbeforeBuildLabels: noop,\n\t\tbuildLabels: noop,\n\t\tafterBuildLabels: noop,\n\n\t\t//\n\n\t\tbeforeFit: noop,\n\t\tfit: function() {\n\t\t\tvar me = this,\n\t\t\t\tvalueOrDefault = helpers.getValueOrDefault,\n\t\t\t\topts = me.options,\n\t\t\t\tglobalDefaults = Chart.defaults.global,\n\t\t\t\tdisplay = opts.display,\n\t\t\t\tfontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),\n\t\t\t\tminSize = me.minSize;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tminSize.width = me.maxWidth; // fill all the width\n\t\t\t\tminSize.height = display ? fontSize + (opts.padding * 2) : 0;\n\t\t\t} else {\n\t\t\t\tminSize.width = display ? fontSize + (opts.padding * 2) : 0;\n\t\t\t\tminSize.height = me.maxHeight; // fill all the height\n\t\t\t}\n\n\t\t\tme.width = minSize.width;\n\t\t\tme.height = minSize.height;\n\n\t\t},\n\t\tafterFit: noop,\n\n\t\t// Shared Methods\n\t\tisHorizontal: function() {\n\t\t\tvar pos = this.options.position;\n\t\t\treturn pos === \"top\" || pos === \"bottom\";\n\t\t},\n\n\t\t// Actualy draw the title block on the canvas\n\t\tdraw: function() {\n\t\t\tvar me = this,\n\t\t\t\tctx = me.ctx,\n\t\t\t\tvalueOrDefault = helpers.getValueOrDefault,\n\t\t\t\topts = me.options,\n\t\t\t\tglobalDefaults = Chart.defaults.global;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),\n\t\t\t\t\tfontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\t\t\tfontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\t\t\ttitleFont = helpers.fontString(fontSize, fontStyle, fontFamily),\n\t\t\t\t\trotation = 0,\n\t\t\t\t\ttitleX,\n\t\t\t\t\ttitleY,\n\t\t\t\t\ttop = me.top,\n\t\t\t\t\tleft = me.left,\n\t\t\t\t\tbottom = me.bottom,\n\t\t\t\t\tright = me.right;\n\n\t\t\t\tctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour\n\t\t\t\tctx.font = titleFont;\n\n\t\t\t\t// Horizontal\n\t\t\t\tif (me.isHorizontal()) {\n\t\t\t\t\ttitleX = left + ((right - left) / 2); // midpoint of the width\n\t\t\t\t\ttitleY = top + ((bottom - top) / 2); // midpoint of the height\n\t\t\t\t} else {\n\t\t\t\t\ttitleX = opts.position === 'left' ? left + (fontSize / 2) : right - (fontSize / 2);\n\t\t\t\t\ttitleY = top + ((bottom - top) / 2);\n\t\t\t\t\trotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);\n\t\t\t\t}\n\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(titleX, titleY);\n\t\t\t\tctx.rotate(rotation);\n\t\t\t\tctx.textAlign = 'center';\n\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\tctx.fillText(opts.text, 0, 0);\n\t\t\t\tctx.restore();\n\t\t\t}\n\t\t}\n\t});\n\n\t// Register the title plugin\n\tChart.plugins.register({\n\t\tbeforeInit: function(chartInstance) {\n\t\t\tvar opts = chartInstance.options;\n\t\t\tvar titleOpts = opts.title;\n\n\t\t\tif (titleOpts) {\n\t\t\t\tchartInstance.titleBlock = new Chart.Title({\n\t\t\t\t\tctx: chartInstance.chart.ctx,\n\t\t\t\t\toptions: titleOpts,\n\t\t\t\t\tchart: chartInstance\n\t\t\t\t});\n\n\t\t\t\tChart.layoutService.addBox(chartInstance, chartInstance.titleBlock);\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],34:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tChart.defaults.global.tooltips = {\n\t\tenabled: true,\n\t\tcustom: null,\n\t\tmode: 'single',\n\t\tbackgroundColor: \"rgba(0,0,0,0.8)\",\n\t\ttitleFontStyle: \"bold\",\n\t\ttitleSpacing: 2,\n\t\ttitleMarginBottom: 6,\n\t\ttitleFontColor: \"#fff\",\n\t\ttitleAlign: \"left\",\n\t\tbodySpacing: 2,\n\t\tbodyFontColor: \"#fff\",\n\t\tbodyAlign: \"left\",\n\t\tfooterFontStyle: \"bold\",\n\t\tfooterSpacing: 2,\n\t\tfooterMarginTop: 6,\n\t\tfooterFontColor: \"#fff\",\n\t\tfooterAlign: \"left\",\n\t\tyPadding: 6,\n\t\txPadding: 6,\n\t\tyAlign : 'center',\n\t\txAlign : 'center',\n\t\tcaretSize: 5,\n\t\tcornerRadius: 6,\n\t\tmultiKeyBackground: '#fff',\n\t\tcallbacks: {\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeTitle: helpers.noop,\n\t\t\ttitle: function(tooltipItems, data) {\n\t\t\t\t// Pick first xLabel for now\n\t\t\t\tvar title = '';\n\t\t\t\tvar labels = data.labels;\n\t\t\t\tvar labelCount = labels ? labels.length : 0;\n\n\t\t\t\tif (tooltipItems.length > 0) {\n\t\t\t\t\tvar item = tooltipItems[0];\n\n\t\t\t\t\tif (item.xLabel) {\n\t\t\t\t\t\ttitle = item.xLabel;\n\t\t\t\t\t} else if (labelCount > 0 && item.index < labelCount) {\n\t\t\t\t\t\ttitle = labels[item.index];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn title;\n\t\t\t},\n\t\t\tafterTitle: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItem, data)\n\t\t\tbeforeLabel: helpers.noop,\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar datasetLabel = data.datasets[tooltipItem.datasetIndex].label || '';\n\t\t\t\treturn datasetLabel + ': ' + tooltipItem.yLabel;\n\t\t\t},\n\t\t\tlabelColor: function(tooltipItem, chartInstance) {\n\t\t\t\tvar meta = chartInstance.getDatasetMeta(tooltipItem.datasetIndex);\n\t\t\t\tvar activeElement = meta.data[tooltipItem.index];\n\t\t\t\tvar view = activeElement._view;\n\t\t\t\treturn {\n\t\t\t\t\tborderColor: view.borderColor,\n\t\t\t\t\tbackgroundColor: view.backgroundColor\n\t\t\t\t};\n\t\t\t},\n\t\t\tafterLabel: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tafterBody: helpers.noop,\n\n\t\t\t// Args are: (tooltipItems, data)\n\t\t\tbeforeFooter: helpers.noop,\n\t\t\tfooter: helpers.noop,\n\t\t\tafterFooter: helpers.noop\n\t\t}\n\t};\n\n\t// Helper to push or concat based on if the 2nd parameter is an array or not\n\tfunction pushOrConcat(base, toPush) {\n\t\tif (toPush) {\n\t\t\tif (helpers.isArray(toPush)) {\n\t\t\t\t//base = base.concat(toPush);\n\t\t\t\tArray.prototype.push.apply(base, toPush);\n\t\t\t} else {\n\t\t\t\tbase.push(toPush);\n\t\t\t}\n\t\t}\n\n\t\treturn base;\n\t}\n\n\tfunction getAveragePosition(elements) {\n\t\tif (!elements.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar i, len;\n\t\tvar xPositions = [];\n\t\tvar yPositions = [];\n\n\t\tfor (i = 0, len = elements.length; i < len; ++i) {\n\t\t\tvar el = elements[i];\n\t\t\tif (el && el.hasValue()){\n\t\t\t\tvar pos = el.tooltipPosition();\n\t\t\t\txPositions.push(pos.x);\n\t\t\t\tyPositions.push(pos.y);\n\t\t\t}\n\t\t}\n\n\t\tvar x = 0,\n\t\t\ty = 0;\n\t\tfor (i = 0; i < xPositions.length; ++i) {\n\t\t\tif (xPositions[ i ]) {\n\t\t\t\tx += xPositions[i];\n\t\t\t\ty += yPositions[i];\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tx: Math.round(x / xPositions.length),\n\t\t\ty: Math.round(y / xPositions.length)\n\t\t};\n\t}\n\n\t// Private helper to create a tooltip iteam model\n\t// @param element : the chart element (point, arc, bar) to create the tooltip item for\n\t// @return : new tooltip item\n\tfunction createTooltipItem(element) {\n\t\tvar xScale = element._xScale;\n\t\tvar yScale = element._yScale || element._scale; // handle radar || polarArea charts\n\t\tvar index = element._index,\n\t\t\tdatasetIndex = element._datasetIndex;\n\n\t\treturn {\n\t\t\txLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tyLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '',\n\t\t\tindex: index,\n\t\t\tdatasetIndex: datasetIndex\n\t\t};\n\t}\n\n\tChart.Tooltip = Chart.Element.extend({\n\t\tinitialize: function() {\n\t\t\tvar me = this;\n\t\t\tvar globalDefaults = Chart.defaults.global;\n\t\t\tvar tooltipOpts = me._options;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\thelpers.extend(me, {\n\t\t\t\t_model: {\n\t\t\t\t\t// Positioning\n\t\t\t\t\txPadding: tooltipOpts.xPadding,\n\t\t\t\t\tyPadding: tooltipOpts.yPadding,\n\t\t\t\t\txAlign : tooltipOpts.xAlign,\n\t\t\t\t\tyAlign : tooltipOpts.yAlign,\n\n\t\t\t\t\t// Body\n\t\t\t\t\tbodyFontColor: tooltipOpts.bodyFontColor,\n\t\t\t\t\t_bodyFontFamily: getValueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t\t\t_bodyFontStyle: getValueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle),\n\t\t\t\t\t_bodyAlign: tooltipOpts.bodyAlign,\n\t\t\t\t\tbodyFontSize: getValueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize),\n\t\t\t\t\tbodySpacing: tooltipOpts.bodySpacing,\n\n\t\t\t\t\t// Title\n\t\t\t\t\ttitleFontColor: tooltipOpts.titleFontColor,\n\t\t\t\t\t_titleFontFamily: getValueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t\t\t_titleFontStyle: getValueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle),\n\t\t\t\t\ttitleFontSize: getValueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize),\n\t\t\t\t\t_titleAlign: tooltipOpts.titleAlign,\n\t\t\t\t\ttitleSpacing: tooltipOpts.titleSpacing,\n\t\t\t\t\ttitleMarginBottom: tooltipOpts.titleMarginBottom,\n\n\t\t\t\t\t// Footer\n\t\t\t\t\tfooterFontColor: tooltipOpts.footerFontColor,\n\t\t\t\t\t_footerFontFamily: getValueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily),\n\t\t\t\t\t_footerFontStyle: getValueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle),\n\t\t\t\t\tfooterFontSize: getValueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize),\n\t\t\t\t\t_footerAlign: tooltipOpts.footerAlign,\n\t\t\t\t\tfooterSpacing: tooltipOpts.footerSpacing,\n\t\t\t\t\tfooterMarginTop: tooltipOpts.footerMarginTop,\n\n\t\t\t\t\t// Appearance\n\t\t\t\t\tcaretSize: tooltipOpts.caretSize,\n\t\t\t\t\tcornerRadius: tooltipOpts.cornerRadius,\n\t\t\t\t\tbackgroundColor: tooltipOpts.backgroundColor,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\tlegendColorBackground: tooltipOpts.multiKeyBackground\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t// Get the title\n\t\t// Args are: (tooltipItem, data)\n\t\tgetTitle: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\t\t\tvar callbacks = opts.callbacks;\n\n\t\t\tvar beforeTitle = callbacks.beforeTitle.apply(me, arguments),\n\t\t\t\ttitle = callbacks.title.apply(me, arguments),\n\t\t\t\tafterTitle = callbacks.afterTitle.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeTitle);\n\t\t\tlines = pushOrConcat(lines, title);\n\t\t\tlines = pushOrConcat(lines, afterTitle);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBeforeBody: function() {\n\t\t\tvar lines = this._options.callbacks.beforeBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetBody: function(tooltipItems, data) {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\t\t\tvar bodyItems = [];\n\n\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\tvar bodyItem = {\n\t\t\t\t\tbefore: [],\n\t\t\t\t\tlines: [],\n\t\t\t\t\tafter: []\n\t\t\t\t};\n\t\t\t\tpushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data));\n\t\t\t\tpushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data));\n\n\t\t\t\tbodyItems.push(bodyItem);\n\t\t\t});\n\n\t\t\treturn bodyItems;\n\t\t},\n\n\t\t// Args are: (tooltipItem, data)\n\t\tgetAfterBody: function() {\n\t\t\tvar lines = this._options.callbacks.afterBody.apply(this, arguments);\n\t\t\treturn helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : [];\n\t\t},\n\n\t\t// Get the footer and beforeFooter and afterFooter lines\n\t\t// Args are: (tooltipItem, data)\n\t\tgetFooter: function() {\n\t\t\tvar me = this;\n\t\t\tvar callbacks = me._options.callbacks;\n\n\t\t\tvar beforeFooter = callbacks.beforeFooter.apply(me, arguments);\n\t\t\tvar footer = callbacks.footer.apply(me, arguments);\n\t\t\tvar afterFooter = callbacks.afterFooter.apply(me, arguments);\n\n\t\t\tvar lines = [];\n\t\t\tlines = pushOrConcat(lines, beforeFooter);\n\t\t\tlines = pushOrConcat(lines, footer);\n\t\t\tlines = pushOrConcat(lines, afterFooter);\n\n\t\t\treturn lines;\n\t\t},\n\n\t\tupdate: function(changed) {\n\t\t\tvar me = this;\n\t\t\tvar opts = me._options;\n\t\t\tvar model = me._model;\n\t\t\tvar active = me._active;\n\n\t\t\tvar data = me._data;\n\t\t\tvar chartInstance = me._chartInstance;\n\n\t\t\tvar i, len;\n\n\t\t\tif (active.length) {\n\t\t\t\tmodel.opacity = 1;\n\n\t\t\t\tvar labelColors = [],\n\t\t\t\t\ttooltipPosition = getAveragePosition(active);\n\n\t\t\t\tvar tooltipItems = [];\n\t\t\t\tfor (i = 0, len = active.length; i < len; ++i) {\n\t\t\t\t\ttooltipItems.push(createTooltipItem(active[i]));\n\t\t\t\t}\n\n\t\t\t\t// If the user provided a sorting function, use it to modify the tooltip items\n\t\t\t\tif (opts.itemSort) {\n\t\t\t\t\ttooltipItems = tooltipItems.sort(function(a,b) {\n\t\t\t\t\t\treturn opts.itemSort(a,b, data);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// If there is more than one item, show color items\n\t\t\t\tif (active.length > 1) {\n\t\t\t\t\thelpers.each(tooltipItems, function(tooltipItem) {\n\t\t\t\t\t\tlabelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, chartInstance));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Build the Text Lines\n\t\t\t\thelpers.extend(model, {\n\t\t\t\t\ttitle: me.getTitle(tooltipItems, data),\n\t\t\t\t\tbeforeBody: me.getBeforeBody(tooltipItems, data),\n\t\t\t\t\tbody: me.getBody(tooltipItems, data),\n\t\t\t\t\tafterBody: me.getAfterBody(tooltipItems, data),\n\t\t\t\t\tfooter: me.getFooter(tooltipItems, data),\n\t\t\t\t\tx: Math.round(tooltipPosition.x),\n\t\t\t\t\ty: Math.round(tooltipPosition.y),\n\t\t\t\t\tcaretPadding: helpers.getValueOrDefault(tooltipPosition.padding, 2),\n\t\t\t\t\tlabelColors: labelColors\n\t\t\t\t});\n\n\t\t\t\t// We need to determine alignment of\n\t\t\t\tvar tooltipSize = me.getTooltipSize(model);\n\t\t\t\tme.determineAlignment(tooltipSize); // Smart Tooltip placement to stay on the canvas\n\n\t\t\t\thelpers.extend(model, me.getBackgroundPoint(model, tooltipSize));\n\t\t\t} else {\n\t\t\t\tme._model.opacity = 0;\n\t\t\t}\n\n\t\t\tif (changed && opts.custom) {\n\t\t\t\topts.custom.call(me, model);\n\t\t\t}\n\n\t\t\treturn me;\n\t\t},\n\t\tgetTooltipSize: function(vm) {\n\t\t\tvar ctx = this._chart.ctx;\n\n\t\t\tvar size = {\n\t\t\t\theight: vm.yPadding * 2, // Tooltip Padding\n\t\t\t\twidth: 0\n\t\t\t};\n\n\t\t\t// Count of all lines in the body\n\t\t\tvar body = vm.body;\n\t\t\tvar combinedBodyLength = body.reduce(function(count, bodyItem) {\n\t\t\t\treturn count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length;\n\t\t\t}, 0);\n\t\t\tcombinedBodyLength += vm.beforeBody.length + vm.afterBody.length;\n\n\t\t\tvar titleLineCount = vm.title.length;\n\t\t\tvar footerLineCount = vm.footer.length;\n\t\t\tvar titleFontSize = vm.titleFontSize,\n\t\t\t\tbodyFontSize = vm.bodyFontSize,\n\t\t\t\tfooterFontSize = vm.footerFontSize;\n\n\t\t\tsize.height += titleLineCount * titleFontSize; // Title Lines\n\t\t\tsize.height += (titleLineCount - 1) * vm.titleSpacing; // Title Line Spacing\n\t\t\tsize.height += titleLineCount ? vm.titleMarginBottom : 0; // Title's bottom Margin\n\t\t\tsize.height += combinedBodyLength * bodyFontSize; // Body Lines\n\t\t\tsize.height += combinedBodyLength ? (combinedBodyLength - 1) * vm.bodySpacing : 0; // Body Line Spacing\n\t\t\tsize.height += footerLineCount ? vm.footerMarginTop : 0; // Footer Margin\n\t\t\tsize.height += footerLineCount * (footerFontSize); // Footer Lines\n\t\t\tsize.height += footerLineCount ? (footerLineCount - 1) * vm.footerSpacing : 0; // Footer Line Spacing\n\n\t\t\t// Title width\n\t\t\tvar widthPadding = 0;\n\t\t\tvar maxLineWidth = function(line) {\n\t\t\t\tsize.width = Math.max(size.width, ctx.measureText(line).width + widthPadding);\n\t\t\t};\n\n\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\t\t\thelpers.each(vm.title, maxLineWidth);\n\n\t\t\t// Body width\n\t\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\t\t\thelpers.each(vm.beforeBody.concat(vm.afterBody), maxLineWidth);\n\n\t\t\t// Body lines may include some extra width due to the color box\n\t\t\twidthPadding = body.length > 1 ? (bodyFontSize + 2) : 0;\n\t\t\thelpers.each(body, function(bodyItem) {\n\t\t\t\thelpers.each(bodyItem.before, maxLineWidth);\n\t\t\t\thelpers.each(bodyItem.lines, maxLineWidth);\n\t\t\t\thelpers.each(bodyItem.after, maxLineWidth);\n\t\t\t});\n\n\t\t\t// Reset back to 0\n\t\t\twidthPadding = 0;\n\n\t\t\t// Footer width\n\t\t\tctx.font = helpers.fontString(footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\t\t\thelpers.each(vm.footer, maxLineWidth);\n\n\t\t\t// Add padding\n\t\t\tsize.width += 2 * vm.xPadding;\n\n\t\t\treturn size;\n\t\t},\n\t\tdetermineAlignment: function(size) {\n\t\t\tvar me = this;\n\t\t\tvar model = me._model;\n\t\t\tvar chart = me._chart;\n\t\t\tvar chartArea = me._chartInstance.chartArea;\n\n\t\t\tif (model.y < size.height) {\n\t\t\t\tmodel.yAlign = 'top';\n\t\t\t} else if (model.y > (chart.height - size.height)) {\n\t\t\t\tmodel.yAlign = 'bottom';\n\t\t\t}\n\n\t\t\tvar lf, rf; // functions to determine left, right alignment\n\t\t\tvar olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart\n\t\t\tvar yf; // function to get the y alignment if the tooltip goes outside of the left or right edges\n\t\t\tvar midX = (chartArea.left + chartArea.right) / 2;\n\t\t\tvar midY = (chartArea.top + chartArea.bottom) / 2;\n\n\t\t\tif (model.yAlign === 'center') {\n\t\t\t\tlf = function(x) {\n\t\t\t\t\treturn x <= midX;\n\t\t\t\t};\n\t\t\t\trf = function(x) {\n\t\t\t\t\treturn x > midX;\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\tlf = function(x) {\n\t\t\t\t\treturn x <= (size.width / 2);\n\t\t\t\t};\n\t\t\t\trf = function(x) {\n\t\t\t\t\treturn x >= (chart.width - (size.width / 2));\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tolf = function(x) {\n\t\t\t\treturn x + size.width > chart.width;\n\t\t\t};\n\t\t\torf = function(x) {\n\t\t\t\treturn x - size.width < 0;\n\t\t\t};\n\t\t\tyf = function(y) {\n\t\t\t\treturn y <= midY ? 'top' : 'bottom';\n\t\t\t};\n\n\t\t\tif (lf(model.x)) {\n\t\t\t\tmodel.xAlign = 'left';\n\n\t\t\t\t// Is tooltip too wide and goes over the right side of the chart.?\n\t\t\t\tif (olf(model.x)) {\n\t\t\t\t\tmodel.xAlign = 'center';\n\t\t\t\t\tmodel.yAlign = yf(model.y);\n\t\t\t\t}\n\t\t\t} else if (rf(model.x)) {\n\t\t\t\tmodel.xAlign = 'right';\n\n\t\t\t\t// Is tooltip too wide and goes outside left edge of canvas?\n\t\t\t\tif (orf(model.x)) {\n\t\t\t\t\tmodel.xAlign = 'center';\n\t\t\t\t\tmodel.yAlign = yf(model.y);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetBackgroundPoint: function(vm, size) {\n\t\t\t// Background Position\n\t\t\tvar pt = {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\n\t\t\tvar caretSize = vm.caretSize,\n\t\t\t\tcaretPadding = vm.caretPadding,\n\t\t\t\tcornerRadius = vm.cornerRadius,\n\t\t\t\txAlign = vm.xAlign,\n\t\t\t\tyAlign = vm.yAlign,\n\t\t\t\tpaddingAndSize = caretSize + caretPadding,\n\t\t\t\tradiusAndPadding = cornerRadius + caretPadding;\n\n\t\t\tif (xAlign === 'right') {\n\t\t\t\tpt.x -= size.width;\n\t\t\t} else if (xAlign === 'center') {\n\t\t\t\tpt.x -= (size.width / 2);\n\t\t\t}\n\n\t\t\tif (yAlign === 'top') {\n\t\t\t\tpt.y += paddingAndSize;\n\t\t\t} else if (yAlign === 'bottom') {\n\t\t\t\tpt.y -= size.height + paddingAndSize;\n\t\t\t} else {\n\t\t\t\tpt.y -= (size.height / 2);\n\t\t\t}\n\n\t\t\tif (yAlign === 'center') {\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tpt.x += paddingAndSize;\n\t\t\t\t} else if (xAlign === 'right') {\n\t\t\t\t\tpt.x -= paddingAndSize;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tpt.x -= radiusAndPadding;\n\t\t\t\t} else if (xAlign === 'right') {\n\t\t\t\t\tpt.x += radiusAndPadding;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn pt;\n\t\t},\n\t\tdrawCaret: function(tooltipPoint, size, opacity) {\n\t\t\tvar vm = this._view;\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar x1, x2, x3;\n\t\t\tvar y1, y2, y3;\n\t\t\tvar caretSize = vm.caretSize;\n\t\t\tvar cornerRadius = vm.cornerRadius;\n\t\t\tvar xAlign = vm.xAlign,\n\t\t\t\tyAlign = vm.yAlign;\n\t\t\tvar ptX = tooltipPoint.x,\n\t\t\t\tptY = tooltipPoint.y;\n\t\t\tvar width = size.width,\n\t\t\t\theight = size.height;\n\n\t\t\tif (yAlign === 'center') {\n\t\t\t\t// Left or right side\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx1 = ptX;\n\t\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\t\tx3 = x1;\n\t\t\t\t} else {\n\t\t\t\t\tx1 = ptX + width;\n\t\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\t\tx3 = x1;\n\t\t\t\t}\n\n\t\t\t\ty2 = ptY + (height / 2);\n\t\t\t\ty1 = y2 - caretSize;\n\t\t\t\ty3 = y2 + caretSize;\n\t\t\t} else {\n\t\t\t\tif (xAlign === 'left') {\n\t\t\t\t\tx1 = ptX + cornerRadius;\n\t\t\t\t\tx2 = x1 + caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t} else if (xAlign === 'right') {\n\t\t\t\t\tx1 = ptX + width - cornerRadius;\n\t\t\t\t\tx2 = x1 - caretSize;\n\t\t\t\t\tx3 = x2 - caretSize;\n\t\t\t\t} else {\n\t\t\t\t\tx2 = ptX + (width / 2);\n\t\t\t\t\tx1 = x2 - caretSize;\n\t\t\t\t\tx3 = x2 + caretSize;\n\t\t\t\t}\n\n\t\t\t\tif (yAlign === 'top') {\n\t\t\t\t\ty1 = ptY;\n\t\t\t\t\ty2 = y1 - caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t} else {\n\t\t\t\t\ty1 = ptY + height;\n\t\t\t\t\ty2 = y1 + caretSize;\n\t\t\t\t\ty3 = y1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar bgColor = helpers.color(vm.backgroundColor);\n\t\t\tctx.fillStyle = bgColor.alpha(opacity * bgColor.alpha()).rgbString();\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x1, y1);\n\t\t\tctx.lineTo(x2, y2);\n\t\t\tctx.lineTo(x3, y3);\n\t\t\tctx.closePath();\n\t\t\tctx.fill();\n\t\t},\n\t\tdrawTitle: function(pt, vm, ctx, opacity) {\n\t\t\tvar title = vm.title;\n\n\t\t\tif (title.length) {\n\t\t\t\tctx.textAlign = vm._titleAlign;\n\t\t\t\tctx.textBaseline = \"top\";\n\n\t\t\t\tvar titleFontSize = vm.titleFontSize,\n\t\t\t\t\ttitleSpacing = vm.titleSpacing;\n\n\t\t\t\tvar titleFontColor = helpers.color(vm.titleFontColor);\n\t\t\t\tctx.fillStyle = titleFontColor.alpha(opacity * titleFontColor.alpha()).rgbString();\n\t\t\t\tctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily);\n\n\t\t\t\tvar i, len;\n\t\t\t\tfor (i = 0, len = title.length; i < len; ++i) {\n\t\t\t\t\tctx.fillText(title[i], pt.x, pt.y);\n\t\t\t\t\tpt.y += titleFontSize + titleSpacing; // Line Height and spacing\n\n\t\t\t\t\tif (i + 1 === title.length) {\n\t\t\t\t\t\tpt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdrawBody: function(pt, vm, ctx, opacity) {\n\t\t\tvar bodyFontSize = vm.bodyFontSize;\n\t\t\tvar bodySpacing = vm.bodySpacing;\n\t\t\tvar body = vm.body;\n\n\t\t\tctx.textAlign = vm._bodyAlign;\n\t\t\tctx.textBaseline = \"top\";\n\n\t\t\tvar bodyFontColor = helpers.color(vm.bodyFontColor);\n\t\t\tvar textColor = bodyFontColor.alpha(opacity * bodyFontColor.alpha()).rgbString();\n\t\t\tctx.fillStyle = textColor;\n\t\t\tctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily);\n\n\t\t\t// Before Body\n\t\t\tvar xLinePadding = 0;\n\t\t\tvar fillLineOfText = function(line) {\n\t\t\t\tctx.fillText(line, pt.x + xLinePadding, pt.y);\n\t\t\t\tpt.y += bodyFontSize + bodySpacing;\n\t\t\t};\n\n\t\t\t// Before body lines\n\t\t\thelpers.each(vm.beforeBody, fillLineOfText);\n\n\t\t\tvar drawColorBoxes = body.length > 1;\n\t\t\txLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0;\n\n\t\t\t// Draw body lines now\n\t\t\thelpers.each(body, function(bodyItem, i) {\n\t\t\t\thelpers.each(bodyItem.before, fillLineOfText);\n\n\t\t\t\thelpers.each(bodyItem.lines, function(line) {\n\t\t\t\t\t// Draw Legend-like boxes if needed\n\t\t\t\t\tif (drawColorBoxes) {\n\t\t\t\t\t\t// Fill a white rect so that colours merge nicely if the opacity is < 1\n\t\t\t\t\t\tctx.fillStyle = helpers.color(vm.legendColorBackground).alpha(opacity).rgbaString();\n\t\t\t\t\t\tctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Border\n\t\t\t\t\t\tctx.strokeStyle = helpers.color(vm.labelColors[i].borderColor).alpha(opacity).rgbaString();\n\t\t\t\t\t\tctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize);\n\n\t\t\t\t\t\t// Inner square\n\t\t\t\t\t\tctx.fillStyle = helpers.color(vm.labelColors[i].backgroundColor).alpha(opacity).rgbaString();\n\t\t\t\t\t\tctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2);\n\n\t\t\t\t\t\tctx.fillStyle = textColor;\n\t\t\t\t\t}\n\n\t\t\t\t\tfillLineOfText(line);\n\t\t\t\t});\n\n\t\t\t\thelpers.each(bodyItem.after, fillLineOfText);\n\t\t\t});\n\n\t\t\t// Reset back to 0 for after body\n\t\t\txLinePadding = 0;\n\n\t\t\t// After body lines\n\t\t\thelpers.each(vm.afterBody, fillLineOfText);\n\t\t\tpt.y -= bodySpacing; // Remove last body spacing\n\t\t},\n\t\tdrawFooter: function(pt, vm, ctx, opacity) {\n\t\t\tvar footer = vm.footer;\n\n\t\t\tif (footer.length) {\n\t\t\t\tpt.y += vm.footerMarginTop;\n\n\t\t\t\tctx.textAlign = vm._footerAlign;\n\t\t\t\tctx.textBaseline = \"top\";\n\n\t\t\t\tvar footerFontColor = helpers.color(vm.footerFontColor);\n\t\t\t\tctx.fillStyle = footerFontColor.alpha(opacity * footerFontColor.alpha()).rgbString();\n\t\t\t\tctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily);\n\n\t\t\t\thelpers.each(footer, function(line) {\n\t\t\t\t\tctx.fillText(line, pt.x, pt.y);\n\t\t\t\t\tpt.y += vm.footerFontSize + vm.footerSpacing;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\n\t\t\tif (vm.opacity === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tooltipSize = this.getTooltipSize(vm);\n\t\t\tvar pt = {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\n\t\t\t// IE11/Edge does not like very small opacities, so snap to 0\n\t\t\tvar opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity;\n\n\t\t\tif (this._options.enabled) {\n\t\t\t\t// Draw Background\n\t\t\t\tvar bgColor = helpers.color(vm.backgroundColor);\n\t\t\t\tctx.fillStyle = bgColor.alpha(opacity * bgColor.alpha()).rgbString();\n\t\t\t\thelpers.drawRoundedRectangle(ctx, pt.x, pt.y, tooltipSize.width, tooltipSize.height, vm.cornerRadius);\n\t\t\t\tctx.fill();\n\n\t\t\t\t// Draw Caret\n\t\t\t\tthis.drawCaret(pt, tooltipSize, opacity);\n\n\t\t\t\t// Draw Title, Body, and Footer\n\t\t\t\tpt.x += vm.xPadding;\n\t\t\t\tpt.y += vm.yPadding;\n\n\t\t\t\t// Titles\n\t\t\t\tthis.drawTitle(pt, vm, ctx, opacity);\n\n\t\t\t\t// Body\n\t\t\t\tthis.drawBody(pt, vm, ctx, opacity);\n\n\t\t\t\t// Footer\n\t\t\t\tthis.drawFooter(pt, vm, ctx, opacity);\n\t\t\t}\n\t\t}\n\t});\n};\n\n},{}],35:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n var helpers = Chart.helpers,\n globalOpts = Chart.defaults.global;\n\n globalOpts.elements.arc = {\n backgroundColor: globalOpts.defaultColor,\n borderColor: \"#fff\",\n borderWidth: 2\n };\n\n Chart.elements.Arc = Chart.Element.extend({\n inLabelRange: function(mouseX) {\n var vm = this._view;\n\n if (vm) {\n return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n } else {\n return false;\n }\n },\n inRange: function(chartX, chartY) {\n var vm = this._view;\n\n if (vm) {\n var pointRelativePosition = helpers.getAngleFromPoint(vm, {\n x: chartX,\n y: chartY\n }),\n angle = pointRelativePosition.angle,\n distance = pointRelativePosition.distance;\n\n //Sanitise angle range\n var startAngle = vm.startAngle;\n var endAngle = vm.endAngle;\n while (endAngle < startAngle) {\n endAngle += 2.0 * Math.PI;\n }\n while (angle > endAngle) {\n angle -= 2.0 * Math.PI;\n }\n while (angle < startAngle) {\n angle += 2.0 * Math.PI;\n }\n\n //Check if within the range of the open/close angle\n var betweenAngles = (angle >= startAngle && angle <= endAngle),\n withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n return (betweenAngles && withinRadius);\n } else {\n return false;\n }\n },\n tooltipPosition: function() {\n var vm = this._view;\n\n var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2),\n rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n return {\n x: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n y: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n };\n },\n draw: function() {\n\n var ctx = this._chart.ctx,\n vm = this._view,\n sA = vm.startAngle,\n eA = vm.endAngle;\n\n ctx.beginPath();\n\n ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA);\n ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true);\n\n ctx.closePath();\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = vm.borderWidth;\n\n ctx.fillStyle = vm.backgroundColor;\n\n ctx.fill();\n ctx.lineJoin = 'bevel';\n\n if (vm.borderWidth) {\n ctx.stroke();\n }\n }\n });\n};\n\n},{}],36:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar globalDefaults = Chart.defaults.global;\n\n\tChart.defaults.global.elements.line = {\n\t\ttension: 0.4,\n\t\tbackgroundColor: globalDefaults.defaultColor,\n\t\tborderWidth: 3,\n\t\tborderColor: globalDefaults.defaultColor,\n\t\tborderCapStyle: 'butt',\n\t\tborderDash: [],\n\t\tborderDashOffset: 0.0,\n\t\tborderJoinStyle: 'miter',\n\t\tcapBezierPoints: true,\n\t\tfill: true // do we fill in the area between the line and its base axis\n\t};\n\n\tChart.elements.Line = Chart.Element.extend({\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar vm = me._view;\n\t\t\tvar spanGaps = vm.spanGaps;\n\t\t\tvar scaleZero = vm.scaleZero;\n\t\t\tvar loop = me._loop;\n\n\t\t\tvar ctx = me._chart.ctx;\n\t\t\tctx.save();\n\n\t\t\t// Helper function to draw a line to a point\n\t\t\tfunction lineToPoint(previousPoint, point) {\n\t\t\t\tvar vm = point._view;\n\t\t\t\tif (point._view.steppedLine === true) {\n\t\t\t\t\tctx.lineTo(point._view.x, previousPoint._view.y);\n\t\t\t\t\tctx.lineTo(point._view.x, point._view.y);\t\t\t\t\n\t\t\t\t} else if (point._view.tension === 0) {\n\t\t\t\t\tctx.lineTo(vm.x, vm.y);\n\t\t\t\t} else {\n\t\t\t\t\tctx.bezierCurveTo(\n\t\t\t\t\t\tpreviousPoint._view.controlPointNextX,\n\t\t\t\t\t\tpreviousPoint._view.controlPointNextY,\n\t\t\t\t\t\tvm.controlPointPreviousX,\n\t\t\t\t\t\tvm.controlPointPreviousY,\n\t\t\t\t\t\tvm.x,\n\t\t\t\t\t\tvm.y\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar points = me._children.slice(); // clone array\n\t\t\tvar lastDrawnIndex = -1;\n\n\t\t\t// If we are looping, adding the first point again\n\t\t\tif (loop && points.length) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\n\t\t\tvar index, current, previous, currentVM;\n\n\t\t\t// Fill Line\n\t\t\tif (points.length && vm.fill) {\n\t\t\t\tctx.beginPath();\n\n\t\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\t\tcurrent = points[index];\n\t\t\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\t\t\tcurrentVM = current._view;\n\n\t\t\t\t\t// First point moves to it's starting position no matter what\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\tctx.moveTo(scaleZero.x, scaleZero.y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tctx.moveTo(currentVM.x, scaleZero);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t\t\tctx.lineTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\t\t\tif (currentVM.skip) {\n\t\t\t\t\t\t\t// Only do this if this is the first point that is skipped\n\t\t\t\t\t\t\tif (!spanGaps && lastDrawnIndex === (index - 1)) {\n\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\tctx.lineTo(scaleZero.x, scaleZero.y);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tctx.lineTo(previous._view.x, scaleZero);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (lastDrawnIndex !== (index - 1)) {\n\t\t\t\t\t\t\t\t// There was a gap and this is the first point after the gap. If we've never drawn a point, this is a special case. \n\t\t\t\t\t\t\t\t// If the first data point is NaN, then there is no real gap to skip\n\t\t\t\t\t\t\t\tif (spanGaps && lastDrawnIndex !== -1) {\n\t\t\t\t\t\t\t\t\t// We are spanning the gap, so simple draw a line to this point\n\t\t\t\t\t\t\t\t\tlineToPoint(previous, current);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\t\tctx.lineTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tctx.lineTo(currentVM.x, scaleZero);\n\t\t\t\t\t\t\t\t\t\tctx.lineTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\t\t\tlineToPoint(previous, current);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!loop && lastDrawnIndex !== -1) {\n\t\t\t\t\tctx.lineTo(points[lastDrawnIndex]._view.x, scaleZero);\n\t\t\t\t}\n\n\t\t\t\tctx.fillStyle = vm.backgroundColor || globalDefaults.defaultColor;\n\t\t\t\tctx.closePath();\n\t\t\t\tctx.fill();\n\t\t\t}\n\n\t\t\t// Stroke Line Options\n\t\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t\t// IE 9 and 10 do not support line dash\n\t\t\tif (ctx.setLineDash) {\n\t\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t\t}\n\n\t\t\tctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset;\n\t\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\t\tctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth;\n\t\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t\t// Stroke Line\n\t\t\tctx.beginPath();\n\t\t\tlastDrawnIndex = -1;\n\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tcurrent = points[index];\n\t\t\t\tprevious = helpers.previousItem(points, index);\n\t\t\t\tcurrentVM = current._view;\n\n\t\t\t\t// First point moves to it's starting position no matter what\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tprevious = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex];\n\n\t\t\t\t\tif (!currentVM.skip) {\n\t\t\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Line to next point\n\t\t\t\t\t\t\tlineToPoint(previous, current);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlastDrawnIndex = index;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tctx.stroke();\n\t\t\tctx.restore();\n\t\t}\n\t});\n};\n},{}],37:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tglobalOpts = Chart.defaults.global,\n\t\tdefaultColor = globalOpts.defaultColor;\n\n\tglobalOpts.elements.point = {\n\t\tradius: 3,\n\t\tpointStyle: 'circle',\n\t\tbackgroundColor: defaultColor,\n\t\tborderWidth: 1,\n\t\tborderColor: defaultColor,\n\t\t// Hover\n\t\thitRadius: 1,\n\t\thoverRadius: 4,\n\t\thoverBorderWidth: 1\n\t};\n\n\tChart.elements.Point = Chart.Element.extend({\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar vm = this._view;\n\t\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\t},\n\t\tinLabelRange: function(mouseX) {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false;\n\t\t},\n\t\ttooltipPosition: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y,\n\t\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t\t};\n\t\t},\n\t\tdraw: function() {\n\t\t\tvar vm = this._view;\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar pointStyle = vm.pointStyle;\n\t\t\tvar radius = vm.radius;\n\t\t\tvar x = vm.x;\n\t\t\tvar y = vm.y;\n\n\t\t\tif (vm.skip) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = helpers.getValueOrDefault(vm.borderWidth, globalOpts.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\n\t\t\tChart.canvasHelpers.drawPoint(ctx, pointStyle, radius, x, y);\n\t\t}\n\t});\n};\n\n},{}],38:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar globalOpts = Chart.defaults.global;\n\n\tglobalOpts.elements.rectangle = {\n\t\tbackgroundColor: globalOpts.defaultColor,\n\t\tborderWidth: 0,\n\t\tborderColor: globalOpts.defaultColor,\n\t\tborderSkipped: 'bottom'\n\t};\n\n\tChart.elements.Rectangle = Chart.Element.extend({\n\t\tdraw: function() {\n\t\t\tvar ctx = this._chart.ctx;\n\t\t\tvar vm = this._view;\n\n\t\t\tvar halfWidth = vm.width / 2,\n\t\t\t\tleftX = vm.x - halfWidth,\n\t\t\t\trightX = vm.x + halfWidth,\n\t\t\t\ttop = vm.base - (vm.base - vm.y),\n\t\t\t\thalfStroke = vm.borderWidth / 2;\n\n\t\t\t// Canvas doesn't allow us to stroke inside the width so we can\n\t\t\t// adjust the sizes to fit if we're setting a stroke on the line\n\t\t\tif (vm.borderWidth) {\n\t\t\t\tleftX += halfStroke;\n\t\t\t\trightX -= halfStroke;\n\t\t\t\ttop += halfStroke;\n\t\t\t}\n\n\t\t\tctx.beginPath();\n\t\t\tctx.fillStyle = vm.backgroundColor;\n\t\t\tctx.strokeStyle = vm.borderColor;\n\t\t\tctx.lineWidth = vm.borderWidth;\n\n\t\t\t// Corner points, from bottom-left to bottom-right clockwise\n\t\t\t// | 1 2 |\n\t\t\t// | 0 3 |\n\t\t\tvar corners = [\n\t\t\t\t[leftX, vm.base],\n\t\t\t\t[leftX, top],\n\t\t\t\t[rightX, top],\n\t\t\t\t[rightX, vm.base]\n\t\t\t];\n\n\t\t\t// Find first (starting) corner with fallback to 'bottom'\n\t\t\tvar borders = ['bottom', 'left', 'top', 'right'];\n\t\t\tvar startCorner = borders.indexOf(vm.borderSkipped, 0);\n\t\t\tif (startCorner === -1)\n\t\t\t\tstartCorner = 0;\n\n\t\t\tfunction cornerAt(index) {\n\t\t\t\treturn corners[(startCorner + index) % 4];\n\t\t\t}\n\n\t\t\t// Draw rectangle from 'startCorner'\n\t\t\tctx.moveTo.apply(ctx, cornerAt(0));\n\t\t\tfor (var i = 1; i < 4; i++)\n\t\t\t\tctx.lineTo.apply(ctx, cornerAt(i));\n\n\t\t\tctx.fill();\n\t\t\tif (vm.borderWidth) {\n\t\t\t\tctx.stroke();\n\t\t\t}\n\t\t},\n\t\theight: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm.base - vm.y;\n\t\t},\n\t\tinRange: function(mouseX, mouseY) {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm ?\n\t\t\t\t\t(vm.y < vm.base ?\n\t\t\t\t\t\t(mouseX >= vm.x - vm.width / 2 && mouseX <= vm.x + vm.width / 2) && (mouseY >= vm.y && mouseY <= vm.base) :\n\t\t\t\t\t\t(mouseX >= vm.x - vm.width / 2 && mouseX <= vm.x + vm.width / 2) && (mouseY >= vm.base && mouseY <= vm.y)) :\n\t\t\t\t\tfalse;\n\t\t},\n\t\tinLabelRange: function(mouseX) {\n\t\t\tvar vm = this._view;\n\t\t\treturn vm ? (mouseX >= vm.x - vm.width / 2 && mouseX <= vm.x + vm.width / 2) : false;\n\t\t},\n\t\ttooltipPosition: function() {\n\t\t\tvar vm = this._view;\n\t\t\treturn {\n\t\t\t\tx: vm.x,\n\t\t\t\ty: vm.y\n\t\t\t};\n\t\t}\n\t});\n\n};\n},{}],39:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\t// Default config for a category scale\n\tvar defaultConfig = {\n\t\tposition: \"bottom\"\n\t};\n\n\tvar DatasetScale = Chart.Scale.extend({\n\t\t/**\n\t\t* Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use tose\n\t\t* else fall back to data.labels\n\t\t* @private\n\t\t*/\n\t\tgetLabels: function() {\n\t\t\tvar data = this.chart.data;\n\t\t\treturn (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels;\n\t\t},\n\t\t// Implement this so that\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\tme.minIndex = 0;\n\t\t\tme.maxIndex = labels.length - 1;\n\t\t\tvar findIndex;\n\n\t\t\tif (me.options.ticks.min !== undefined) {\n\t\t\t\t// user specified min value\n\t\t\t\tfindIndex = helpers.indexOf(labels, me.options.ticks.min);\n\t\t\t\tme.minIndex = findIndex !== -1 ? findIndex : me.minIndex;\n\t\t\t}\n\n\t\t\tif (me.options.ticks.max !== undefined) {\n\t\t\t\t// user specified max value\n\t\t\t\tfindIndex = helpers.indexOf(labels, me.options.ticks.max);\n\t\t\t\tme.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex;\n\t\t\t}\n\n\t\t\tme.min = labels[me.minIndex];\n\t\t\tme.max = labels[me.maxIndex];\n\t\t},\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar labels = me.getLabels();\n\t\t\t// If we are viewing some subset of labels, slice the original array\n\t\t\tme.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1);\n\t\t},\n\n\t\tgetLabelForIndex: function(index) {\n\t\t\treturn this.ticks[index];\n\t\t},\n\n\t\t// Used to get data value locations. Value can either be an index or a numerical value\n\t\tgetPixelForValue: function(value, index, datasetIndex, includeOffset) {\n\t\t\tvar me = this;\n\t\t\t// 1 is added because we need the length but we have the indexes\n\t\t\tvar offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\n\t\t\tif (value !== undefined && isNaN(index)) {\n\t\t\t\tvar labels = me.getLabels();\n\t\t\t\tvar idx = labels.indexOf(value);\n\t\t\t\tindex = idx !== -1 ? idx : index;\n\t\t\t}\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvar valueWidth = innerWidth / offsetAmt;\n\t\t\t\tvar widthOffset = (valueWidth * (index - me.minIndex)) + me.paddingLeft;\n\n\t\t\tif (me.options.gridLines.offsetGridLines && includeOffset || me.maxIndex === me.minIndex && includeOffset) {\n\t\t\t\t\twidthOffset += (valueWidth / 2);\n\t\t\t}\n\n\t\t\t\treturn me.left + Math.round(widthOffset);\n\t\t\t} else {\n\t\t\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\t\tvar valueHeight = innerHeight / offsetAmt;\n\t\t\t\tvar heightOffset = (valueHeight * (index - me.minIndex)) + me.paddingTop;\n\n\t\t\t\tif (me.options.gridLines.offsetGridLines && includeOffset) {\n\t\t\t\t\theightOffset += (valueHeight / 2);\n\t\t\t\t}\n\n\t\t\t\treturn me.top + Math.round(heightOffset);\n\t\t\t}\n\t\t},\n\t\tgetPixelForTick: function(index, includeOffset) {\n\t\t\treturn this.getPixelForValue(this.ticks[index], index + this.minIndex, null, includeOffset);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar value;\n\t\t\tvar offsetAmt = Math.max((me.ticks.length - ((me.options.gridLines.offsetGridLines) ? 0 : 1)), 1);\n\t\t\tvar horz = me.isHorizontal();\n\t\t\tvar innerDimension = horz ? me.width - (me.paddingLeft + me.paddingRight) : me.height - (me.paddingTop + me.paddingBottom);\n\t\t\tvar valueDimension = innerDimension / offsetAmt;\n\n\t\t\tpixel -= horz ? me.left : me.top;\n\n\t\t\tif (me.options.gridLines.offsetGridLines) {\n\t\t\t\tpixel -= (valueDimension / 2);\n\t\t\t}\n\t\t\tpixel -= horz ? me.paddingLeft : me.paddingTop;\n\n\t\t\tif (pixel <= 0) {\n\t\t\t\tvalue = 0;\n\t\t\t} else {\n\t\t\t\tvalue = Math.round(pixel / valueDimension);\n\t\t\t}\n\n\t\t\treturn value;\n\t\t},\n\t\tgetBasePixel: function() {\n\t\t\treturn this.bottom;\n\t\t}\n\t});\n\n\tChart.scaleService.registerScaleType(\"category\", DatasetScale, defaultConfig);\n\n};\n},{}],40:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tvar defaultConfig = {\n\t\tposition: \"left\",\n\t\tticks: {\n\t\t\tcallback: function(tickValue, index, ticks) {\n\t\t\t\t// If we have lots of ticks, don't use the ones\n\t\t\t\tvar delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0];\n\n\t\t\t\t// If we have a number like 2.5 as the delta, figure out how many decimal places we need\n\t\t\t\tif (Math.abs(delta) > 1) {\n\t\t\t\t\tif (tickValue !== Math.floor(tickValue)) {\n\t\t\t\t\t\t// not an integer\n\t\t\t\t\t\tdelta = tickValue - Math.floor(tickValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar logDelta = helpers.log10(Math.abs(delta));\n\t\t\t\tvar tickString = '';\n\n\t\t\t\tif (tickValue !== 0) {\n\t\t\t\t\tvar numDecimal = -1 * Math.floor(logDelta);\n\t\t\t\t\tnumDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places\n\t\t\t\t\ttickString = tickValue.toFixed(numDecimal);\n\t\t\t\t} else {\n\t\t\t\t\ttickString = '0'; // never show decimal places for 0\n\t\t\t\t}\n\n\t\t\t\treturn tickString;\n\t\t\t}\n\t\t}\n\t};\n\n\tvar LinearScale = Chart.LinearScaleBase.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// First Calculate the range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tvar valuesPerType = {};\n\t\t\t\tvar hasPositiveValues = false;\n\t\t\t\tvar hasNegativeValues = false;\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (valuesPerType[meta.type] === undefined) {\n\t\t\t\t\t\tvaluesPerType[meta.type] = {\n\t\t\t\t\t\t\tpositiveValues: [],\n\t\t\t\t\t\t\tnegativeValues: []\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Store these per type\n\t\t\t\t\tvar positiveValues = valuesPerType[meta.type].positiveValues;\n\t\t\t\t\tvar negativeValues = valuesPerType[meta.type].negativeValues;\n\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tpositiveValues[index] = positiveValues[index] || 0;\n\t\t\t\t\t\t\tnegativeValues[index] = negativeValues[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tpositiveValues[index] = 100;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (value < 0) {\n\t\t\t\t\t\t\t\t\thasNegativeValues = true;\n\t\t\t\t\t\t\t\t\tnegativeValues[index] += value;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\thasPositiveValues = true;\n\t\t\t\t\t\t\t\t\tpositiveValues[index] += value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerType, function(valuesForType) {\n\t\t\t\t\tvar values = valuesForType.positiveValues.concat(valuesForType.negativeValues);\n\t\t\t\t\tvar minVal = helpers.min(values);\n\t\t\t\t\tvar maxVal = helpers.max(values);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tthis.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar maxTicks;\n\t\t\tvar me = this;\n\t\t\tvar tickOpts = me.options.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50));\n\t\t\t} else {\n\t\t\t\t// The factor of 2 used to scale the font size has been experimentally determined.\n\t\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, Chart.defaults.global.defaultFontSize);\n\t\t\t\tmaxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize)));\n\t\t\t}\n\n\t\t\treturn maxTicks;\n\t\t},\n\t\t// Called after the ticks are built. We need\n\t\thandleDirectionalChanges: function() {\n\t\t\tif (!this.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tthis.ticks.reverse();\n\t\t\t}\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\t// Utils\n\t\tgetPixelForValue: function(value) {\n\t\t\t// This must be called after fit has been run so that\n\t\t\t// this.left, this.top, this.right, and this.bottom have been defined\n\t\t\tvar me = this;\n\t\t\tvar paddingLeft = me.paddingLeft;\n\t\t\tvar paddingBottom = me.paddingBottom;\n\t\t\tvar start = me.start;\n\n\t\t\tvar rightValue = +me.getRightValue(value);\n\t\t\tvar pixel;\n\t\t\tvar innerDimension;\n\t\t\tvar range = me.end - start;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width - (paddingLeft + me.paddingRight);\n\t\t\t\tpixel = me.left + (innerDimension / range * (rightValue - start));\n\t\t\t\treturn Math.round(pixel + paddingLeft);\n\t\t\t} else {\n\t\t\t\tinnerDimension = me.height - (me.paddingTop + paddingBottom);\n\t\t\t\tpixel = (me.bottom - paddingBottom) - (innerDimension / range * (rightValue - start));\n\t\t\t\treturn Math.round(pixel);\n\t\t\t}\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tvar paddingLeft = me.paddingLeft;\n\t\t\tvar paddingBottom = me.paddingBottom;\n\t\t\tvar innerDimension = isHorizontal ? me.width - (paddingLeft + me.paddingRight) : me.height - (me.paddingTop + paddingBottom);\n\t\t\tvar offset = (isHorizontal ? pixel - me.left - paddingLeft : me.bottom - paddingBottom - pixel) / innerDimension;\n\t\t\treturn me.start + ((me.end - me.start) * offset);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.ticksAsNumbers[index]);\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType(\"linear\", LinearScale, defaultConfig);\n\n};\n},{}],41:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers,\n\t\tnoop = helpers.noop;\n\n\tChart.LinearScaleBase = Chart.Scale.extend({\n\t\thandleTickRangeOptions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\t// If we are forcing it to begin at 0, but 0 will already be rendered on the chart,\n\t\t\t// do nothing since that would make the chart weird. If the user really wants a weird chart\n\t\t\t// axis, they can manually override it\n\t\t\tif (tickOpts.beginAtZero) {\n\t\t\t\tvar minSign = helpers.sign(me.min);\n\t\t\t\tvar maxSign = helpers.sign(me.max);\n\n\t\t\t\tif (minSign < 0 && maxSign < 0) {\n\t\t\t\t\t// move the top up to 0\n\t\t\t\t\tme.max = 0;\n\t\t\t\t} else if (minSign > 0 && maxSign > 0) {\n\t\t\t\t\t// move the botttom down to 0\n\t\t\t\t\tme.min = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (tickOpts.min !== undefined) {\n\t\t\t\tme.min = tickOpts.min;\n\t\t\t} else if (tickOpts.suggestedMin !== undefined) {\n\t\t\t\tme.min = Math.min(me.min, tickOpts.suggestedMin);\n\t\t\t}\n\n\t\t\tif (tickOpts.max !== undefined) {\n\t\t\t\tme.max = tickOpts.max;\n\t\t\t} else if (tickOpts.suggestedMax !== undefined) {\n\t\t\t\tme.max = Math.max(me.max, tickOpts.suggestedMax);\n\t\t\t}\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tme.max++;\n\n\t\t\t\tif (!tickOpts.beginAtZero) {\n\t\t\t\t\tme.min--;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetTickLimit: noop,\n\t\thandleDirectionalChanges: noop,\n\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar ticks = me.ticks = [];\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph\n\n\t\t\tvar maxTicks = me.getTickLimit();\n\n\t\t\t// Make sure we always have at least 2 ticks\n\t\t\tmaxTicks = Math.max(2, maxTicks);\n\n\t\t\t// To get a \"nice\" value for the tick spacing, we will use the appropriately named\n\t\t\t// \"nice number\" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks\n\t\t\t// for details.\n\n\t\t\tvar spacing;\n\t\t\tvar fixedStepSizeSet = (tickOpts.fixedStepSize && tickOpts.fixedStepSize > 0) || (tickOpts.stepSize && tickOpts.stepSize > 0);\n\t\t\tif (fixedStepSizeSet) {\n\t\t\t\tspacing = getValueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize);\n\t\t\t} else {\n\t\t\t\tvar niceRange = helpers.niceNum(me.max - me.min, false);\n\t\t\t\tspacing = helpers.niceNum(niceRange / (maxTicks - 1), true);\n\t\t\t}\n\t\t\tvar niceMin = Math.floor(me.min / spacing) * spacing;\n\t\t\tvar niceMax = Math.ceil(me.max / spacing) * spacing;\n\t\t\tvar numSpaces = (niceMax - niceMin) / spacing;\n\n\t\t\t// If very close to our rounded value, use it.\n\t\t\tif (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n\t\t\t\tnumSpaces = Math.round(numSpaces);\n\t\t\t} else {\n\t\t\t\tnumSpaces = Math.ceil(numSpaces);\n\t\t\t}\n\n\t\t\t// Put the values into the ticks array\n\t\t\tticks.push(tickOpts.min !== undefined ? tickOpts.min : niceMin);\n\t\t\tfor (var j = 1; j < numSpaces; ++j) {\n\t\t\t\tticks.push(niceMin + (j * spacing));\n\t\t\t}\n\t\t\tticks.push(tickOpts.max !== undefined ? tickOpts.max : niceMax);\n\n\t\t\tme.handleDirectionalChanges();\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.ticksAsNumbers = me.ticks.slice();\n\t\t\tme.zeroLineIndex = me.ticks.indexOf(0);\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(me);\n\t\t}\n\t});\n};\n},{}],42:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\n\tvar defaultConfig = {\n\t\tposition: \"left\",\n\n\t\t// label settings\n\t\tticks: {\n\t\t\tcallback: function(value, index, arr) {\n\t\t\t\tvar remain = value / (Math.pow(10, Math.floor(helpers.log10(value))));\n\n\t\t\t\tif (value === 0){\n\t\t\t\t\treturn '0';\n\t\t\t\t} else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === arr.length - 1) {\n\t\t\t\t\treturn value.toExponential();\n\t\t\t\t} else {\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tvar LogarithmicScale = Chart.Scale.extend({\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar chart = me.chart;\n\t\t\tvar data = chart.data;\n\t\t\tvar datasets = data.datasets;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\t\t\tvar isHorizontal = me.isHorizontal();\n\t\t\tfunction IDMatches(meta) {\n\t\t\t\treturn isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id;\n\t\t\t}\n\n\t\t\t// Calculate Range\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\t\t\tme.minNotZero = null;\n\n\t\t\tif (opts.stacked) {\n\t\t\t\tvar valuesPerType = {};\n\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\tif (valuesPerType[meta.type] === undefined) {\n\t\t\t\t\t\t\tvaluesPerType[meta.type] = [];\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar values = valuesPerType[meta.type];\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tvalues[index] = values[index] || 0;\n\n\t\t\t\t\t\t\tif (opts.relativePoints) {\n\t\t\t\t\t\t\t\tvalues[index] = 100;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Don't need to split positive and negative since the log scale can't handle a 0 crossing\n\t\t\t\t\t\t\t\tvalues[index] += value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\thelpers.each(valuesPerType, function(valuesForType) {\n\t\t\t\t\tvar minVal = helpers.min(valuesForType);\n\t\t\t\t\tvar maxVal = helpers.max(valuesForType);\n\t\t\t\t\tme.min = me.min === null ? minVal : Math.min(me.min, minVal);\n\t\t\t\t\tme.max = me.max === null ? maxVal : Math.max(me.max, maxVal);\n\t\t\t\t});\n\n\t\t\t} else {\n\t\t\t\thelpers.each(datasets, function(dataset, datasetIndex) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\t\t\t\t\tif (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) {\n\t\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif(value !== 0 && (me.minNotZero === null || value < me.minNotZero)) {\n\t\t\t\t\t\t\t\tme.minNotZero = value;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tme.min = getValueOrDefault(tickOpts.min, me.min);\n\t\t\tme.max = getValueOrDefault(tickOpts.max, me.max);\n\n\t\t\tif (me.min === me.max) {\n\t\t\t\tif (me.min !== 0 && me.min !== null) {\n\t\t\t\t\tme.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1);\n\t\t\t\t\tme.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1);\n\t\t\t\t} else {\n\t\t\t\t\tme.min = 1;\n\t\t\t\t\tme.max = 10;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\t// Reset the ticks array. Later on, we will draw a grid line at these positions\n\t\t\t// The array simply contains the numerical value of the spots where ticks will be\n\t\t\tvar ticks = me.ticks = [];\n\n\t\t\t// Figure out what the max number of ticks we can support it is based on the size of\n\t\t\t// the axis area. For now, we say that the minimum tick spacing in pixels must be 50\n\t\t\t// We also limit the maximum number of ticks to 11 which gives a nice 10 squares on\n\t\t\t// the graph\n\n\t\t\tvar tickVal = getValueOrDefault(tickOpts.min, Math.pow(10, Math.floor(helpers.log10(me.min))));\n\n\t\t\twhile (tickVal < me.max) {\n\t\t\t\tticks.push(tickVal);\n\n\t\t\t\tvar exp;\n\t\t\t\tvar significand;\n\n\t\t\t\tif(tickVal === 0){\n\t\t\t\t\texp = Math.floor(helpers.log10(me.minNotZero));\n\t\t\t\t\tsignificand = Math.round(me.minNotZero / Math.pow(10, exp));\n\t\t\t\t} else {\n\t\t\t\t\texp = Math.floor(helpers.log10(tickVal));\n\t\t\t\t\tsignificand = Math.floor(tickVal / Math.pow(10, exp)) + 1;\n\t\t\t\t}\n\n\t\t\t\tif (significand === 10) {\n\t\t\t\t\tsignificand = 1;\n\t\t\t\t\t++exp;\n\t\t\t\t}\n\n\t\t\t\ttickVal = significand * Math.pow(10, exp);\n\t\t\t}\n\n\t\t\tvar lastTick = getValueOrDefault(tickOpts.max, tickVal);\n\t\t\tticks.push(lastTick);\n\n\t\t\tif (!me.isHorizontal()) {\n\t\t\t\t// We are in a vertical orientation. The top value is the highest. So reverse the array\n\t\t\t\tticks.reverse();\n\t\t\t}\n\n\t\t\t// At this point, we need to update our max and min given the tick values since we have expanded the\n\t\t\t// range of the scale\n\t\t\tme.max = helpers.max(ticks);\n\t\t\tme.min = helpers.min(ticks);\n\n\t\t\tif (tickOpts.reverse) {\n\t\t\t\tticks.reverse();\n\n\t\t\t\tme.start = me.max;\n\t\t\t\tme.end = me.min;\n\t\t\t} else {\n\t\t\t\tme.start = me.min;\n\t\t\t\tme.end = me.max;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tthis.tickValues = this.ticks.slice();\n\n\t\t\tChart.Scale.prototype.convertTicksToLabels.call(this);\n\t\t},\n\t\t// Get the correct tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickValues[index]);\n\t\t},\n\t\tgetPixelForValue: function(value) {\n\t\t\tvar me = this;\n\t\t\tvar innerDimension;\n\t\t\tvar pixel;\n\n\t\t\tvar start = me.start;\n\t\t\tvar newVal = +me.getRightValue(value);\n\t\t\tvar range;\n\t\t\tvar paddingTop = me.paddingTop;\n\t\t\tvar paddingBottom = me.paddingBottom;\n\t\t\tvar paddingLeft = me.paddingLeft;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0\n\t\t\t\tif (newVal === 0) {\n\t\t\t\t\tpixel = me.left + paddingLeft;\n\t\t\t\t} else {\n\t\t\t\t\tinnerDimension = me.width - (paddingLeft + me.paddingRight);\n\t\t\t\t\tpixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t\t\tpixel += paddingLeft;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Bottom - top since pixels increase downard on a screen\n\t\t\t\tinnerDimension = me.height - (paddingTop + paddingBottom);\n\t\t\t\tif(start === 0 && !tickOpts.reverse){\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === start) {\n\t\t\t\t\t\tpixel = me.bottom - paddingBottom;\n\t\t\t\t\t} else if(newVal === me.minNotZero){\n\t\t\t\t\t\tpixel = me.bottom - paddingBottom - innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.bottom - paddingBottom - innerDimension * 0.02 - (innerDimension * 0.98/ range * (helpers.log10(newVal)-helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else if (me.end === 0 && tickOpts.reverse){\n\t\t\t\t\trange = helpers.log10(me.start) - helpers.log10(me.minNotZero);\n\t\t\t\t\tif (newVal === me.end) {\n\t\t\t\t\t\tpixel = me.top + paddingTop;\n\t\t\t\t\t} else if(newVal === me.minNotZero){\n\t\t\t\t\t\tpixel = me.top + paddingTop + innerDimension * 0.02;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tpixel = me.top + paddingTop + innerDimension * 0.02 + (innerDimension * 0.98/ range * (helpers.log10(newVal)-helpers.log10(me.minNotZero)));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\trange = helpers.log10(me.end) - helpers.log10(start);\n\t\t\t\t\tinnerDimension = me.height - (paddingTop + paddingBottom);\n\t\t\t\t\tpixel = (me.bottom - paddingBottom) - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start)));\n\t\t\t }\n\t\t\t}\n\t\t\treturn pixel;\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar range = helpers.log10(me.end) - helpers.log10(me.start);\n\t\t\tvar value, innerDimension;\n\n\t\t\tif (me.isHorizontal()) {\n\t\t\t\tinnerDimension = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\tvalue = me.start * Math.pow(10, (pixel - me.left - me.paddingLeft) * range / innerDimension);\n\t\t\t} else { // todo: if start === 0\n\t\t\t\tinnerDimension = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\t\tvalue = Math.pow(10, (me.bottom - me.paddingBottom - pixel) * range / innerDimension) / me.start;\n\t\t\t}\n\t\t\treturn value;\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType(\"logarithmic\", LogarithmicScale, defaultConfig);\n\n};\n},{}],43:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar globalDefaults = Chart.defaults.global;\n\n\tvar defaultConfig = {\n\t\tdisplay: true,\n\n\t\t//Boolean - Whether to animate scaling the chart from the centre\n\t\tanimate: true,\n\t\tlineArc: false,\n\t\tposition: \"chartArea\",\n\n\t\tangleLines: {\n\t\t\tdisplay: true,\n\t\t\tcolor: \"rgba(0, 0, 0, 0.1)\",\n\t\t\tlineWidth: 1\n\t\t},\n\n\t\t// label settings\n\t\tticks: {\n\t\t\t//Boolean - Show a backdrop to the scale label\n\t\t\tshowLabelBackdrop: true,\n\n\t\t\t//String - The colour of the label backdrop\n\t\t\tbackdropColor: \"rgba(255,255,255,0.75)\",\n\n\t\t\t//Number - The backdrop padding above & below the label in pixels\n\t\t\tbackdropPaddingY: 2,\n\n\t\t\t//Number - The backdrop padding to the side of the label in pixels\n\t\t\tbackdropPaddingX: 2\n\t\t},\n\n\t\tpointLabels: {\n\t\t\t//Number - Point label font size in pixels\n\t\t\tfontSize: 10,\n\n\t\t\t//Function - Used to convert point labels\n\t\t\tcallback: function(label) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t}\n\t};\n\n\tvar LinearRadialScale = Chart.LinearScaleBase.extend({\n\t\tgetValueCount: function() {\n\t\t\treturn this.chart.data.labels.length;\n\t\t},\n\t\tsetDimensions: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\t// Set the unconstrained dimension before label rotation\n\t\t\tme.width = me.maxWidth;\n\t\t\tme.height = me.maxHeight;\n\t\t\tme.xCenter = Math.round(me.width / 2);\n\t\t\tme.yCenter = Math.round(me.height / 2);\n\n\t\t\tvar minSize = helpers.min([me.height, me.width]);\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\tme.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2);\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tvar chart = me.chart;\n\t\t\tme.min = null;\n\t\t\tme.max = null;\n\n\n\t\t\thelpers.each(chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tif (chart.isDatasetVisible(datasetIndex)) {\n\t\t\t\t\tvar meta = chart.getDatasetMeta(datasetIndex);\n\n\t\t\t\t\thelpers.each(dataset.data, function(rawValue, index) {\n\t\t\t\t\t\tvar value = +me.getRightValue(rawValue);\n\t\t\t\t\t\tif (isNaN(value) || meta.data[index].hidden) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.min === null) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t} else if (value < me.min) {\n\t\t\t\t\t\t\tme.min = value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (me.max === null) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t} else if (value > me.max) {\n\t\t\t\t\t\t\tme.max = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero\n\t\t\tme.handleTickRangeOptions();\n\t\t},\n\t\tgetTickLimit: function() {\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\treturn Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize)));\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tChart.LinearScaleBase.prototype.convertTicksToLabels.call(me);\n\n\t\t\t// Point labels\n\t\t\tme.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me);\n\t\t},\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\treturn +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]);\n\t\t},\n\t\tfit: function() {\n\t\t\t/*\n\t\t\t * Right, this is really confusing and there is a lot of maths going on here\n\t\t\t * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9\n\t\t\t *\n\t\t\t * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif\n\t\t\t *\n\t\t\t * Solution:\n\t\t\t *\n\t\t\t * We assume the radius of the polygon is half the size of the canvas at first\n\t\t\t * at each index we check if the text overlaps.\n\t\t\t *\n\t\t\t * Where it does, we store that angle and that index.\n\t\t\t *\n\t\t\t * After finding the largest index and angle we calculate how much we need to remove\n\t\t\t * from the shape radius to move the point inwards by that x.\n\t\t\t *\n\t\t\t * We average the left and right distances to get the maximum shape radius that can fit in the box\n\t\t\t * along with labels.\n\t\t\t *\n\t\t\t * Once we have that, we can find the centre point for the chart, by taking the x text protrusion\n\t\t\t * on each side, removing that from the size, halving it and adding the left x protrusion width.\n\t\t\t *\n\t\t\t * This will mean we have a shape fitted to the canvas, as large as it can be with the labels\n\t\t\t * and position it in the most space efficient manner\n\t\t\t *\n\t\t\t * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif\n\t\t\t */\n\n\t\t\tvar pointLabels = this.options.pointLabels;\n\t\t\tvar pointLabelFontSize = helpers.getValueOrDefault(pointLabels.fontSize, globalDefaults.defaultFontSize);\n\t\t\tvar pointLabeFontStyle = helpers.getValueOrDefault(pointLabels.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\tvar pointLabeFontFamily = helpers.getValueOrDefault(pointLabels.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\tvar pointLabeFont = helpers.fontString(pointLabelFontSize, pointLabeFontStyle, pointLabeFontFamily);\n\n\t\t\t// Get maximum radius of the polygon. Either half the height (minus the text width) or half the width.\n\t\t\t// Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points\n\t\t\tvar largestPossibleRadius = helpers.min([(this.height / 2 - pointLabelFontSize - 5), this.width / 2]),\n\t\t\t\tpointPosition,\n\t\t\t\ti,\n\t\t\t\ttextWidth,\n\t\t\t\thalfTextWidth,\n\t\t\t\tfurthestRight = this.width,\n\t\t\t\tfurthestRightIndex,\n\t\t\t\tfurthestRightAngle,\n\t\t\t\tfurthestLeft = 0,\n\t\t\t\tfurthestLeftIndex,\n\t\t\t\tfurthestLeftAngle,\n\t\t\t\txProtrusionLeft,\n\t\t\t\txProtrusionRight,\n\t\t\t\tradiusReductionRight,\n\t\t\t\tradiusReductionLeft;\n\t\t\tthis.ctx.font = pointLabeFont;\n\n\t\t\tfor (i = 0; i < this.getValueCount(); i++) {\n\t\t\t\t// 5px to space the text slightly out - similar to what we do in the draw function.\n\t\t\t\tpointPosition = this.getPointPosition(i, largestPossibleRadius);\n\t\t\t\ttextWidth = this.ctx.measureText(this.pointLabels[i] ? this.pointLabels[i] : '').width + 5;\n\n\t\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\t\tvar angleRadians = this.getIndexAngle(i) + (Math.PI / 2);\n\t\t\t\tvar angle = (angleRadians * 360 / (2 * Math.PI)) % 360;\n\n\t\t\t\tif (angle === 0 || angle === 180) {\n\t\t\t\t\t// At angle 0 and 180, we're at exactly the top/bottom\n\t\t\t\t\t// of the radar chart, so text will be aligned centrally, so we'll half it and compare\n\t\t\t\t\t// w/left and right text sizes\n\t\t\t\t\thalfTextWidth = textWidth / 2;\n\t\t\t\t\tif (pointPosition.x + halfTextWidth > furthestRight) {\n\t\t\t\t\t\tfurthestRight = pointPosition.x + halfTextWidth;\n\t\t\t\t\t\tfurthestRightIndex = i;\n\t\t\t\t\t}\n\t\t\t\t\tif (pointPosition.x - halfTextWidth < furthestLeft) {\n\t\t\t\t\t\tfurthestLeft = pointPosition.x - halfTextWidth;\n\t\t\t\t\t\tfurthestLeftIndex = i;\n\t\t\t\t\t}\n\t\t\t\t} else if (angle < 180) {\n\t\t\t\t\t// Less than half the values means we'll left align the text\n\t\t\t\t\tif (pointPosition.x + textWidth > furthestRight) {\n\t\t\t\t\t\tfurthestRight = pointPosition.x + textWidth;\n\t\t\t\t\t\tfurthestRightIndex = i;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// More than half the values means we'll right align the text\n\t\t\t\t\tif (pointPosition.x - textWidth < furthestLeft) {\n\t\t\t\t\t\tfurthestLeft = pointPosition.x - textWidth;\n\t\t\t\t\t\tfurthestLeftIndex = i;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txProtrusionLeft = furthestLeft;\n\t\t\txProtrusionRight = Math.ceil(furthestRight - this.width);\n\n\t\t\tfurthestRightAngle = this.getIndexAngle(furthestRightIndex);\n\t\t\tfurthestLeftAngle = this.getIndexAngle(furthestLeftIndex);\n\n\t\t\tradiusReductionRight = xProtrusionRight / Math.sin(furthestRightAngle + Math.PI / 2);\n\t\t\tradiusReductionLeft = xProtrusionLeft / Math.sin(furthestLeftAngle + Math.PI / 2);\n\n\t\t\t// Ensure we actually need to reduce the size of the chart\n\t\t\tradiusReductionRight = (helpers.isNumber(radiusReductionRight)) ? radiusReductionRight : 0;\n\t\t\tradiusReductionLeft = (helpers.isNumber(radiusReductionLeft)) ? radiusReductionLeft : 0;\n\n\t\t\tthis.drawingArea = Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2);\n\t\t\tthis.setCenterPoint(radiusReductionLeft, radiusReductionRight);\n\t\t},\n\t\tsetCenterPoint: function(leftMovement, rightMovement) {\n\t\t\tvar me = this;\n\t\t\tvar maxRight = me.width - rightMovement - me.drawingArea,\n\t\t\t\tmaxLeft = leftMovement + me.drawingArea;\n\n\t\t\tme.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left);\n\t\t\t// Always vertically in the centre as the text height doesn't change\n\t\t\tme.yCenter = Math.round((me.height / 2) + me.top);\n\t\t},\n\n\t\tgetIndexAngle: function(index) {\n\t\t\tvar angleMultiplier = (Math.PI * 2) / this.getValueCount();\n\t\t\tvar startAngle = this.chart.options && this.chart.options.startAngle ?\n\t\t\t\tthis.chart.options.startAngle :\n\t\t\t\t0;\n\n\t\t\tvar startAngleRadians = startAngle * Math.PI * 2 / 360;\n\n\t\t\t// Start from the top instead of right, so remove a quarter of the circle\n\t\t\treturn index * angleMultiplier - (Math.PI / 2) + startAngleRadians;\n\t\t},\n\t\tgetDistanceFromCenterForValue: function(value) {\n\t\t\tvar me = this;\n\n\t\t\tif (value === null) {\n\t\t\t\treturn 0; // null always in center\n\t\t\t}\n\n\t\t\t// Take into account half font size + the yPadding of the top value\n\t\t\tvar scalingFactor = me.drawingArea / (me.max - me.min);\n\t\t\tif (me.options.reverse) {\n\t\t\t\treturn (me.max - value) * scalingFactor;\n\t\t\t} else {\n\t\t\t\treturn (value - me.min) * scalingFactor;\n\t\t\t}\n\t\t},\n\t\tgetPointPosition: function(index, distanceFromCenter) {\n\t\t\tvar me = this;\n\t\t\tvar thisAngle = me.getIndexAngle(index);\n\t\t\treturn {\n\t\t\t\tx: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter,\n\t\t\t\ty: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter\n\t\t\t};\n\t\t},\n\t\tgetPointPositionForValue: function(index, value) {\n\t\t\treturn this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n\t\t},\n\n\t\tgetBasePosition: function() {\n\t\t\tvar me = this;\n\t\t\tvar min = me.min;\n\t\t\tvar max = me.max;\n\n\t\t\treturn me.getPointPositionForValue(0,\n\t\t\t\tme.beginAtZero? 0:\n\t\t\t\tmin < 0 && max < 0? max :\n\t\t\t\tmin > 0 && max > 0? min :\n\t\t\t\t0);\n\t\t},\n\n\t\tdraw: function() {\n\t\t\tvar me = this;\n\t\t\tvar opts = me.options;\n\t\t\tvar gridLineOpts = opts.gridLines;\n\t\t\tvar tickOpts = opts.ticks;\n\t\t\tvar angleLineOpts = opts.angleLines;\n\t\t\tvar pointLabelOpts = opts.pointLabels;\n\t\t\tvar getValueOrDefault = helpers.getValueOrDefault;\n\n\t\t\tif (opts.display) {\n\t\t\t\tvar ctx = me.ctx;\n\n\t\t\t\t// Tick Font\n\t\t\t\tvar tickFontSize = getValueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\tvar tickFontStyle = getValueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\tvar tickFontFamily = getValueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\n\t\t\t\thelpers.each(me.ticks, function(label, index) {\n\t\t\t\t\t// Don't draw a centre value (if it is minimum)\n\t\t\t\t\tif (index > 0 || opts.reverse) {\n\t\t\t\t\t\tvar yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]);\n\t\t\t\t\t\tvar yHeight = me.yCenter - yCenterOffset;\n\n\t\t\t\t\t\t// Draw circular lines around the scale\n\t\t\t\t\t\tif (gridLineOpts.display && index !== 0) {\n\t\t\t\t\t\t\tctx.strokeStyle = helpers.getValueAtIndexOrDefault(gridLineOpts.color, index - 1);\n\t\t\t\t\t\t\tctx.lineWidth = helpers.getValueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1);\n\n\t\t\t\t\t\t\tif (opts.lineArc) {\n\t\t\t\t\t\t\t\t// Draw circular arcs between the points\n\t\t\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\t\t\tctx.arc(me.xCenter, me.yCenter, yCenterOffset, 0, Math.PI * 2);\n\t\t\t\t\t\t\t\tctx.closePath();\n\t\t\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Draw straight lines connecting each index\n\t\t\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\t\t\tfor (var i = 0; i < me.getValueCount(); i++) {\n\t\t\t\t\t\t\t\t\tvar pointPosition = me.getPointPosition(i, yCenterOffset);\n\t\t\t\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\t\t\tctx.moveTo(pointPosition.x, pointPosition.y);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tctx.lineTo(pointPosition.x, pointPosition.y);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tctx.closePath();\n\t\t\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tickOpts.display) {\n\t\t\t\t\t\t\tvar tickFontColor = getValueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\t\tctx.font = tickLabelFont;\n\n\t\t\t\t\t\t\tif (tickOpts.showLabelBackdrop) {\n\t\t\t\t\t\t\t\tvar labelWidth = ctx.measureText(label).width;\n\t\t\t\t\t\t\t\tctx.fillStyle = tickOpts.backdropColor;\n\t\t\t\t\t\t\t\tctx.fillRect(\n\t\t\t\t\t\t\t\t\tme.xCenter - labelWidth / 2 - tickOpts.backdropPaddingX,\n\t\t\t\t\t\t\t\t\tyHeight - tickFontSize / 2 - tickOpts.backdropPaddingY,\n\t\t\t\t\t\t\t\t\tlabelWidth + tickOpts.backdropPaddingX * 2,\n\t\t\t\t\t\t\t\t\ttickFontSize + tickOpts.backdropPaddingY * 2\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t\tctx.textBaseline = \"middle\";\n\t\t\t\t\t\t\tctx.fillStyle = tickFontColor;\n\t\t\t\t\t\t\tctx.fillText(label, me.xCenter, yHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (!opts.lineArc) {\n\t\t\t\t\tctx.lineWidth = angleLineOpts.lineWidth;\n\t\t\t\t\tctx.strokeStyle = angleLineOpts.color;\n\n\t\t\t\t\tvar outerDistance = me.getDistanceFromCenterForValue(opts.reverse ? me.min : me.max);\n\n\t\t\t\t\t// Point Label Font\n\t\t\t\t\tvar pointLabelFontSize = getValueOrDefault(pointLabelOpts.fontSize, globalDefaults.defaultFontSize);\n\t\t\t\t\tvar pointLabeFontStyle = getValueOrDefault(pointLabelOpts.fontStyle, globalDefaults.defaultFontStyle);\n\t\t\t\t\tvar pointLabeFontFamily = getValueOrDefault(pointLabelOpts.fontFamily, globalDefaults.defaultFontFamily);\n\t\t\t\t\tvar pointLabeFont = helpers.fontString(pointLabelFontSize, pointLabeFontStyle, pointLabeFontFamily);\n\n\t\t\t\t\tfor (var i = me.getValueCount() - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (angleLineOpts.display) {\n\t\t\t\t\t\t\tvar outerPosition = me.getPointPosition(i, outerDistance);\n\t\t\t\t\t\t\tctx.beginPath();\n\t\t\t\t\t\t\tctx.moveTo(me.xCenter, me.yCenter);\n\t\t\t\t\t\t\tctx.lineTo(outerPosition.x, outerPosition.y);\n\t\t\t\t\t\t\tctx.stroke();\n\t\t\t\t\t\t\tctx.closePath();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Extra 3px out for some label spacing\n\t\t\t\t\t\tvar pointLabelPosition = me.getPointPosition(i, outerDistance + 5);\n\n\t\t\t\t\t\t// Keep this in loop since we may support array properties here\n\t\t\t\t\t\tvar pointLabelFontColor = getValueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor);\n\t\t\t\t\t\tctx.font = pointLabeFont;\n\t\t\t\t\t\tctx.fillStyle = pointLabelFontColor;\n\n\t\t\t\t\t\tvar pointLabels = me.pointLabels;\n\n\t\t\t\t\t\t// Add quarter circle to make degree 0 mean top of circle\n\t\t\t\t\t\tvar angleRadians = this.getIndexAngle(i) + (Math.PI / 2);\n\t\t\t\t\t\tvar angle = (angleRadians * 360 / (2 * Math.PI)) % 360;\n\n\t\t\t\t\t\tif (angle === 0 || angle === 180) {\n\t\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t\t} else if (angle < 180) {\n\t\t\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tctx.textAlign = 'right';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Set the correct text baseline based on outer positioning\n\t\t\t\t\t\tif (angle === 90 || angle === 270) {\n\t\t\t\t\t\t\tctx.textBaseline = 'middle';\n\t\t\t\t\t\t} else if (angle > 270 || angle < 90) {\n\t\t\t\t\t\t\tctx.textBaseline = 'bottom';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tctx.textBaseline = 'top';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tctx.fillText(pointLabels[i] ? pointLabels[i] : '', pointLabelPosition.x, pointLabelPosition.y);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType(\"radialLinear\", LinearRadialScale, defaultConfig);\n\n};\n\n},{}],44:[function(require,module,exports){\n/*global window: false */\n\"use strict\";\n\nvar moment = require(1);\nmoment = typeof(moment) === 'function' ? moment : window.moment;\n\nmodule.exports = function(Chart) {\n\n\tvar helpers = Chart.helpers;\n\tvar time = {\n\t\tunits: [{\n\t\t\tname: 'millisecond',\n\t\t\tsteps: [1, 2, 5, 10, 20, 50, 100, 250, 500]\n\t\t}, {\n\t\t\tname: 'second',\n\t\t\tsteps: [1, 2, 5, 10, 30]\n\t\t}, {\n\t\t\tname: 'minute',\n\t\t\tsteps: [1, 2, 5, 10, 30]\n\t\t}, {\n\t\t\tname: 'hour',\n\t\t\tsteps: [1, 2, 3, 6, 12]\n\t\t}, {\n\t\t\tname: 'day',\n\t\t\tsteps: [1, 2, 5]\n\t\t}, {\n\t\t\tname: 'week',\n\t\t\tmaxStep: 4\n\t\t}, {\n\t\t\tname: 'month',\n\t\t\tmaxStep: 3\n\t\t}, {\n\t\t\tname: 'quarter',\n\t\t\tmaxStep: 4\n\t\t}, {\n\t\t\tname: 'year',\n\t\t\tmaxStep: false\n\t\t}]\n\t};\n\n\tvar defaultConfig = {\n\t\tposition: \"bottom\",\n\n\t\ttime: {\n\t\t\tparser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment\n\t\t\tformat: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/\n\t\t\tunit: false, // false == automatic or override with week, month, year, etc.\n\t\t\tround: false, // none, or override with week, month, year, etc.\n\t\t\tdisplayFormat: false, // DEPRECATED\n\t\t\tisoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/\n\n\t\t\t// defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/\n\t\t\tdisplayFormats: {\n\t\t\t\t'millisecond': 'h:mm:ss.SSS a', // 11:20:01.123 AM,\n\t\t\t\t'second': 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\t'minute': 'h:mm:ss a', // 11:20:01 AM\n\t\t\t\t'hour': 'MMM D, hA', // Sept 4, 5PM\n\t\t\t\t'day': 'll', // Sep 4 2015\n\t\t\t\t'week': 'll', // Week 46, or maybe \"[W]WW - YYYY\" ?\n\t\t\t\t'month': 'MMM YYYY', // Sept 2015\n\t\t\t\t'quarter': '[Q]Q - YYYY', // Q3\n\t\t\t\t'year': 'YYYY' // 2015\n\t\t\t}\n\t\t},\n\t\tticks: {\n\t\t\tautoSkip: false\n\t\t}\n\t};\n\n\tvar TimeScale = Chart.Scale.extend({\n\t\tinitialize: function() {\n\t\t\tif (!moment) {\n\t\t\t\tthrow new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com');\n\t\t\t}\n\n\t\t\tChart.Scale.prototype.initialize.call(this);\n\t\t},\n\t\tgetLabelMoment: function(datasetIndex, index) {\n\t\t\tif (typeof this.labelMoments[datasetIndex] != 'undefined') {\n\t\t\t\treturn this.labelMoments[datasetIndex][index];\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tgetMomentStartOf: function(tick) {\n\t\t\tvar me = this;\n\t\t\tif (me.options.time.unit === 'week' && me.options.time.isoWeekday !== false) {\n\t\t\t\treturn tick.clone().startOf('isoWeek').isoWeekday(me.options.time.isoWeekday);\n\t\t\t} else {\n\t\t\t\treturn tick.clone().startOf(me.tickUnit);\n\t\t\t}\n\t\t},\n\t\tdetermineDataLimits: function() {\n\t\t\tvar me = this;\n\t\t\tme.labelMoments = [];\n\n\t\t\t// Only parse these once. If the dataset does not have data as x,y pairs, we will use\n\t\t\t// these\n\t\t\tvar scaleLabelMoments = [];\n\t\t\tif (me.chart.data.labels && me.chart.data.labels.length > 0) {\n\t\t\t\thelpers.each(me.chart.data.labels, function(label) {\n\t\t\t\t\tvar labelMoment = me.parseTime(label);\n\n\t\t\t\t\tif (labelMoment.isValid()) {\n\t\t\t\t\t\tif (me.options.time.round) {\n\t\t\t\t\t\t\tlabelMoment.startOf(me.options.time.round);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscaleLabelMoments.push(labelMoment);\n\t\t\t\t\t}\n\t\t\t\t}, me);\n\n\t\t\t\tme.firstTick = moment.min.call(me, scaleLabelMoments);\n\t\t\t\tme.lastTick = moment.max.call(me, scaleLabelMoments);\n\t\t\t} else {\n\t\t\t\tme.firstTick = null;\n\t\t\t\tme.lastTick = null;\n\t\t\t}\n\n\t\t\thelpers.each(me.chart.data.datasets, function(dataset, datasetIndex) {\n\t\t\t\tvar momentsForDataset = [];\n\t\t\t\tvar datasetVisible = me.chart.isDatasetVisible(datasetIndex);\n\n\t\t\t\tif (typeof dataset.data[0] === 'object' && dataset.data[0] !== null) {\n\t\t\t\t\thelpers.each(dataset.data, function(value) {\n\t\t\t\t\t\tvar labelMoment = me.parseTime(me.getRightValue(value));\n\n\t\t\t\t\t\tif (labelMoment.isValid()) {\n\t\t\t\t\t\t\tif (me.options.time.round) {\n\t\t\t\t\t\t\t\tlabelMoment.startOf(me.options.time.round);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tmomentsForDataset.push(labelMoment);\n\n\t\t\t\t\t\t\tif (datasetVisible) {\n\t\t\t\t\t\t\t\t// May have gone outside the scale ranges, make sure we keep the first and last ticks updated\n\t\t\t\t\t\t\t\tme.firstTick = me.firstTick !== null ? moment.min(me.firstTick, labelMoment) : labelMoment;\n\t\t\t\t\t\t\t\tme.lastTick = me.lastTick !== null ? moment.max(me.lastTick, labelMoment) : labelMoment;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}, me);\n\t\t\t\t} else {\n\t\t\t\t\t// We have no labels. Use the ones from the scale\n\t\t\t\t\tmomentsForDataset = scaleLabelMoments;\n\t\t\t\t}\n\n\t\t\t\tme.labelMoments.push(momentsForDataset);\n\t\t\t}, me);\n\n\t\t\t// Set these after we've done all the data\n\t\t\tif (me.options.time.min) {\n\t\t\t\tme.firstTick = me.parseTime(me.options.time.min);\n\t\t\t}\n\n\t\t\tif (me.options.time.max) {\n\t\t\t\tme.lastTick = me.parseTime(me.options.time.max);\n\t\t\t}\n\n\t\t\t// We will modify these, so clone for later\n\t\t\tme.firstTick = (me.firstTick || moment()).clone();\n\t\t\tme.lastTick = (me.lastTick || moment()).clone();\n\t\t},\n\t\tbuildTicks: function() {\n\t\t\tvar me = this;\n\n\t\t\tme.ctx.save();\n\t\t\tvar tickFontSize = helpers.getValueOrDefault(me.options.ticks.fontSize, Chart.defaults.global.defaultFontSize);\n\t\t\tvar tickFontStyle = helpers.getValueOrDefault(me.options.ticks.fontStyle, Chart.defaults.global.defaultFontStyle);\n\t\t\tvar tickFontFamily = helpers.getValueOrDefault(me.options.ticks.fontFamily, Chart.defaults.global.defaultFontFamily);\n\t\t\tvar tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily);\n\t\t\tme.ctx.font = tickLabelFont;\n\n\t\t\tme.ticks = [];\n\t\t\tme.unitScale = 1; // How much we scale the unit by, ie 2 means 2x unit per step\n\t\t\tme.scaleSizeInUnits = 0; // How large the scale is in the base unit (seconds, minutes, etc)\n\n\t\t\t// Set unit override if applicable\n\t\t\tif (me.options.time.unit) {\n\t\t\t\tme.tickUnit = me.options.time.unit || 'day';\n\t\t\t\tme.displayFormat = me.options.time.displayFormats[me.tickUnit];\n\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.firstTick, me.tickUnit, true);\n\t\t\t\tme.unitScale = helpers.getValueOrDefault(me.options.time.unitStepSize, 1);\n\t\t\t} else {\n\t\t\t\t// Determine the smallest needed unit of the time\n\t\t\t\tvar innerWidth = me.isHorizontal() ? me.width - (me.paddingLeft + me.paddingRight) : me.height - (me.paddingTop + me.paddingBottom);\n\n\t\t\t\t// Crude approximation of what the label length might be\n\t\t\t\tvar tempFirstLabel = me.tickFormatFunction(me.firstTick, 0, []);\n\t\t\t\tvar tickLabelWidth = me.ctx.measureText(tempFirstLabel).width;\n\t\t\t\tvar cosRotation = Math.cos(helpers.toRadians(me.options.ticks.maxRotation));\n\t\t\t\tvar sinRotation = Math.sin(helpers.toRadians(me.options.ticks.maxRotation));\n\t\t\t\ttickLabelWidth = (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation);\n\t\t\t\tvar labelCapacity = innerWidth / (tickLabelWidth);\n\n\t\t\t\t// Start as small as possible\n\t\t\t\tme.tickUnit = 'millisecond';\n\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.firstTick, me.tickUnit, true);\n\t\t\t\tme.displayFormat = me.options.time.displayFormats[me.tickUnit];\n\n\t\t\t\tvar unitDefinitionIndex = 0;\n\t\t\t\tvar unitDefinition = time.units[unitDefinitionIndex];\n\n\t\t\t\t// While we aren't ideal and we don't have units left\n\t\t\t\twhile (unitDefinitionIndex < time.units.length) {\n\t\t\t\t\t// Can we scale this unit. If `false` we can scale infinitely\n\t\t\t\t\tme.unitScale = 1;\n\n\t\t\t\t\tif (helpers.isArray(unitDefinition.steps) && Math.ceil(me.scaleSizeInUnits / labelCapacity) < helpers.max(unitDefinition.steps)) {\n\t\t\t\t\t\t// Use one of the prefedined steps\n\t\t\t\t\t\tfor (var idx = 0; idx < unitDefinition.steps.length; ++idx) {\n\t\t\t\t\t\t\tif (unitDefinition.steps[idx] >= Math.ceil(me.scaleSizeInUnits / labelCapacity)) {\n\t\t\t\t\t\t\t\tme.unitScale = helpers.getValueOrDefault(me.options.time.unitStepSize, unitDefinition.steps[idx]);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if ((unitDefinition.maxStep === false) || (Math.ceil(me.scaleSizeInUnits / labelCapacity) < unitDefinition.maxStep)) {\n\t\t\t\t\t\t// We have a max step. Scale this unit\n\t\t\t\t\t\tme.unitScale = helpers.getValueOrDefault(me.options.time.unitStepSize, Math.ceil(me.scaleSizeInUnits / labelCapacity));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Move to the next unit up\n\t\t\t\t\t\t++unitDefinitionIndex;\n\t\t\t\t\t\tunitDefinition = time.units[unitDefinitionIndex];\n\n\t\t\t\t\t\tme.tickUnit = unitDefinition.name;\n\t\t\t\t\t\tvar leadingUnitBuffer = me.firstTick.diff(me.getMomentStartOf(me.firstTick), me.tickUnit, true);\n\t\t\t\t\t\tvar trailingUnitBuffer = me.getMomentStartOf(me.lastTick.clone().add(1, me.tickUnit)).diff(me.lastTick, me.tickUnit, true);\n\t\t\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.firstTick, me.tickUnit, true) + leadingUnitBuffer + trailingUnitBuffer;\n\t\t\t\t\t\tme.displayFormat = me.options.time.displayFormats[unitDefinition.name];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar roundedStart;\n\n\t\t\t// Only round the first tick if we have no hard minimum\n\t\t\tif (!me.options.time.min) {\n\t\t\t\tme.firstTick = me.getMomentStartOf(me.firstTick);\n\t\t\t\troundedStart = me.firstTick;\n\t\t\t} else {\n\t\t\t\troundedStart = me.getMomentStartOf(me.firstTick);\n\t\t\t}\n\n\t\t\t// Only round the last tick if we have no hard maximum\n\t\t\tif (!me.options.time.max) {\n\t\t\t\tvar roundedEnd = me.getMomentStartOf(me.lastTick);\n\t\t\t\tvar delta = roundedEnd.diff(me.lastTick, me.tickUnit, true);\n\t\t\t\tif (delta < 0) {\n\t\t\t\t\t// Do not use end of because we need me to be in the next time unit\n\t\t\t\t\tme.lastTick = me.getMomentStartOf(me.lastTick.add(1, me.tickUnit));\n\t\t\t\t} else if (delta >= 0) {\n\t\t\t\t\tme.lastTick = roundedEnd;\n\t\t\t\t}\n\n\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.firstTick, me.tickUnit, true);\n\t\t\t}\n\n\t\t\t// Tick displayFormat override\n\t\t\tif (me.options.time.displayFormat) {\n\t\t\t\tme.displayFormat = me.options.time.displayFormat;\n\t\t\t}\n\n\t\t\t// first tick. will have been rounded correctly if options.time.min is not specified\n\t\t\tme.ticks.push(me.firstTick.clone());\n\n\t\t\t// For every unit in between the first and last moment, create a moment and add it to the ticks tick\n\t\t\tfor (var i = 1; i <= me.scaleSizeInUnits; ++i) {\n\t\t\t\tvar newTick = roundedStart.clone().add(i, me.tickUnit);\n\n\t\t\t\t// Are we greater than the max time\n\t\t\t\tif (me.options.time.max && newTick.diff(me.lastTick, me.tickUnit, true) >= 0) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (i % me.unitScale === 0) {\n\t\t\t\t\tme.ticks.push(newTick);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Always show the right tick\n\t\t\tvar diff = me.ticks[me.ticks.length - 1].diff(me.lastTick, me.tickUnit);\n\t\t\tif (diff !== 0 || me.scaleSizeInUnits === 0) {\n\t\t\t\t// this is a weird case. If the <max> option is the same as the end option, we can't just diff the times because the tick was created from the roundedStart\n\t\t\t\t// but the last tick was not rounded.\n\t\t\t\tif (me.options.time.max) {\n\t\t\t\t\tme.ticks.push(me.lastTick.clone());\n\t\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.ticks[0], me.tickUnit, true);\n\t\t\t\t} else {\n\t\t\t\t\tme.ticks.push(me.lastTick.clone());\n\t\t\t\t\tme.scaleSizeInUnits = me.lastTick.diff(me.firstTick, me.tickUnit, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tme.ctx.restore();\n\t\t},\n\t\t// Get tooltip label\n\t\tgetLabelForIndex: function(index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tvar label = me.chart.data.labels && index < me.chart.data.labels.length ? me.chart.data.labels[index] : '';\n\n\t\t\tif (typeof me.chart.data.datasets[datasetIndex].data[0] === 'object') {\n\t\t\t\tlabel = me.getRightValue(me.chart.data.datasets[datasetIndex].data[index]);\n\t\t\t}\n\n\t\t\t// Format nicely\n\t\t\tif (me.options.time.tooltipFormat) {\n\t\t\t\tlabel = me.parseTime(label).format(me.options.time.tooltipFormat);\n\t\t\t}\n\n\t\t\treturn label;\n\t\t},\n\t\t// Function to format an individual tick mark\n\t\ttickFormatFunction: function(tick, index, ticks) {\n\t\t\tvar formattedTick = tick.format(this.displayFormat);\n\t\t\tvar tickOpts = this.options.ticks;\n\t\t\tvar callback = helpers.getValueOrDefault(tickOpts.callback, tickOpts.userCallback);\n\n\t\t\tif (callback) {\n\t\t\t\treturn callback(formattedTick, index, ticks);\n\t\t\t} else {\n\t\t\t\treturn formattedTick;\n\t\t\t}\n\t\t},\n\t\tconvertTicksToLabels: function() {\n\t\t\tvar me = this;\n\t\t\tme.tickMoments = me.ticks;\n\t\t\tme.ticks = me.ticks.map(me.tickFormatFunction, me);\n\t\t},\n\t\tgetPixelForValue: function(value, index, datasetIndex) {\n\t\t\tvar me = this;\n\t\t\tif (!value || !value.isValid) {\n\t\t\t\t// not already a moment object\n\t\t\t\tvalue = me.parseTime(me.getRightValue(value));\n\t\t\t}\n\t\t\tvar labelMoment = value && value.isValid && value.isValid() ? value : me.getLabelMoment(datasetIndex, index);\n\n\t\t\tif (labelMoment) {\n\t\t\t\tvar offset = labelMoment.diff(me.firstTick, me.tickUnit, true);\n\n\t\t\t\tvar decimal = offset !== 0 ? offset / me.scaleSizeInUnits : offset;\n\n\t\t\t\tif (me.isHorizontal()) {\n\t\t\t\t\tvar innerWidth = me.width - (me.paddingLeft + me.paddingRight);\n\t\t\t\t\tvar valueOffset = (innerWidth * decimal) + me.paddingLeft;\n\n\t\t\t\t\treturn me.left + Math.round(valueOffset);\n\t\t\t\t} else {\n\t\t\t\t\tvar innerHeight = me.height - (me.paddingTop + me.paddingBottom);\n\t\t\t\t\tvar heightOffset = (innerHeight * decimal) + me.paddingTop;\n\n\t\t\t\t\treturn me.top + Math.round(heightOffset);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetPixelForTick: function(index) {\n\t\t\treturn this.getPixelForValue(this.tickMoments[index], null, null);\n\t\t},\n\t\tgetValueForPixel: function(pixel) {\n\t\t\tvar me = this;\n\t\t\tvar innerDimension = me.isHorizontal() ? me.width - (me.paddingLeft + me.paddingRight) : me.height - (me.paddingTop + me.paddingBottom);\n\t\t\tvar offset = (pixel - (me.isHorizontal() ? me.left + me.paddingLeft : me.top + me.paddingTop)) / innerDimension;\n\t\t\toffset *= me.scaleSizeInUnits;\n\t\t\treturn me.firstTick.clone().add(moment.duration(offset, me.tickUnit).asSeconds(), 'seconds');\n\t\t},\n\t\tparseTime: function(label) {\n\t\t\tvar me = this;\n\t\t\tif (typeof me.options.time.parser === 'string') {\n\t\t\t\treturn moment(label, me.options.time.parser);\n\t\t\t}\n\t\t\tif (typeof me.options.time.parser === 'function') {\n\t\t\t\treturn me.options.time.parser(label);\n\t\t\t}\n\t\t\t// Date objects\n\t\t\tif (typeof label.getMonth === 'function' || typeof label === 'number') {\n\t\t\t\treturn moment(label);\n\t\t\t}\n\t\t\t// Moment support\n\t\t\tif (label.isValid && label.isValid()) {\n\t\t\t\treturn label;\n\t\t\t}\n\t\t\t// Custom parsing (return an instance of moment)\n\t\t\tif (typeof me.options.time.format !== 'string' && me.options.time.format.call) {\n\t\t\t\tconsole.warn(\"options.time.format is deprecated and replaced by options.time.parser. See http://nnnick.github.io/Chart.js/docs-v2/#scales-time-scale\");\n\t\t\t\treturn me.options.time.format(label);\n\t\t\t}\n\t\t\t// Moment format parsing\n\t\t\treturn moment(label, me.options.time.format);\n\t\t}\n\t});\n\tChart.scaleService.registerScaleType(\"time\", TimeScale, defaultConfig);\n\n};\n\n},{\"1\":1}]},{},[7])(7)\n});"]}