{"version":3,"sources":["../node_modules/color-convert/conversions.js","../node_modules/buffer/index.js","../node_modules/color/index.js","../node_modules/color-string/index.js","../node_modules/color-name/index.js","../node_modules/color-convert/index.js","../node_modules/color-convert/node_modules/color-name/index.js","../node_modules/color-convert/route.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/cipher-base/index.js","../node_modules/classnames/index.js","../node_modules/chart.js/dist/Chart.js","../node_modules/buffer-xor/index.js"],"names":["cssKeywords","require","reverseKeywords","key","hasOwnProperty","convert","module","exports","rgb","channels","labels","hsl","hsv","hwb","cmyk","xyz","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","gray","model","Error","length","Object","defineProperty","value","h","l","r","g","b","min","Math","max","delta","rdif","gdif","bdif","s","v","diff","diffc","c","k","reversed","currentClosestKeyword","x","y","currentClosestDistance","Infinity","distance","pow","z","t1","t2","t3","val","i","smin","lmin","hi","floor","f","p","q","t","sl","vmin","n","wh","bl","ratio","m","y2","x2","z2","a","atan2","PI","sqrt","hr","cos","sin","args","arguments","round","ansi","color","mult","rem","string","toString","toUpperCase","substring","match","colorString","split","map","char","join","integer","parseInt","hue","chroma","mg","pure","w","base64","ieee754","isArray","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","Uint8Array","__proto__","prototype","arg","encodingOrOffset","this","allocUnsafe","from","TypeError","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","slice","fromString","obj","isBuffer","len","checked","copy","buffer","type","data","fromObject","assertSize","size","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","indexOf","call","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","buf","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","push","charCodeAt","asciiToBytes","latin1Write","base64Write","ucs2Write","units","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","apply","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","e","typedArraySupport","poolSize","_augment","Symbol","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","concat","list","pos","swap16","swap32","swap64","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","Array","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","trim","replace","stringtrim","base64clean","src","dst","_slice","skippedModels","hashedModelKeys","keys","forEach","sort","limiters","Color","valpha","result","get","newArr","zeroArray","splice","alpha","hashedKeys","JSON","stringify","freeze","getset","channel","modifier","maxfn","assertArray","places","self","to","percentString","percent","object","unitArray","unitObject","num","toFixed","roundTo","roundToPlace","red","green","blue","saturationl","lightness","saturationv","white","wblack","cyan","magenta","yellow","black","rgbNumber","luminosity","lum","chan","contrast","color2","lum1","lum2","level","contrastRatio","isDark","isLight","negate","lighten","darken","saturate","desaturate","whiten","blacken","grayscale","fade","opaquer","rotate","degrees","mix","mixinColor","weight","color1","w1","w2","newAlpha","raw","colorNames","swizzle","reverseNames","create","name","cs","clamp","hexDouble","hexAlpha","i2","parseFloat","rgba","hsla","hwba","conversions","route","fromModel","routes","toModel","fn","wrappedFn","conversion","wrapRounded","wrapRaw","deriveBFS","graph","models","parent","buildGraph","queue","current","pop","adjacents","adjacent","node","unshift","link","wrapConversion","path","cur","clsx","Transform","StringDecoder","CipherBase","hashMode","_finalOrDigest","final","_final","__final","_decoder","_encoding","inherits","update","inputEnc","outputEnc","outData","_update","_toString","setAutoPadding","getAuthTag","setAuthTag","setAAD","_transform","_","next","err","_flush","done","enc","fin","hasOwn","classNames","classes","argType","inner","default","moment","colorName","createCommonjsModule","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","vals","hexString","rgbString","rgbaString","percentaString","hslString","hslaString","hwbString","scale","valid","values","setValues","whiteness","isValid","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","saturation","blackness","dark","light","greyscale","clearer","clone","source","prop","console","error","spaces","maxes","getValues","space","charAt","capped","chans","sname","index","svalues","window","chartjsColor","helpers","noop","uid","id","isNullOrUndef","isObject","_isFinite","_x","valueOrDefault","defaultValue","valueAtIndexOrDefault","callback","thisArg","each","loopable","reverse","arrayEquals","a0","a1","ilen","v0","v1","klen","_merger","options","tval","sval","merge","_mergerIf","mergeIf","sources","merger","extend","assign","extensions","me","ChartElement","constructor","Surrogate","__super__","_deprecated","scope","previous","warn","helpers_core","callCallback","item","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","effects","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","asin","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","clear","chart","ctx","clearRect","width","height","roundedRect","radius","left","top","right","bottom","moveTo","arc","closePath","rect","drawPoint","style","rotation","xOffset","yOffset","cornerRadius","rad","save","translate","drawImage","restore","beginPath","lineTo","SQRT1_2","stroke","_isPointInArea","point","area","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaults","_set","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","helpers_options","toLineHeight","matches","toPadding","_parseFont","globalDefaults","fontSize","font","family","fontFamily","lineHeight","fontStyle","toFontString","resolve","inputs","context","info","cacheable","exports$2","_factorize","log10","exponent","log","LOG10E","powerOf10","helpers_math","helpers$1","easing","canvas","math","rtl","getRtlAdapter","rectX","setWidth","textAlign","align","xPlus","leftForLtr","itemWidth","_itemWidth","overrideTextDirection","direction","original","getPropertyValue","getPropertyPriority","setProperty","prevTextDirection","restoreTextDirection","Element","configuration","initialize","_type","hidden","pivot","_view","_model","_start","transition","ease","view","origin","c0","c1","interpolate","tooltipPosition","hasValue","isNumber","core_element","exports$3","currentStep","numSteps","render","onAnimationProgress","onAnimationComplete","core_animation","animation","duration","onProgress","onComplete","core_animations","animations","request","addAnimation","lazy","startTime","Date","now","animating","requestAnimationFrame","cancelAnimation","findIndex","requestAnimFrame","startDigest","advance","nextStep","arrayEvents","unlistenArrayEvents","listener","stub","_chartjs","listeners","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","meta","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","reset","destroy","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","_index","metaData","addElementAndReset","element","updateElement","buildOrUpdateElements","isExtensible","enumerable","method","base","resyncElements","_configure","_config","_cachedDataOpts","easingValue","elements","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","backgroundColor","borderColor","hover","readKey","datasetOpts","custom","elementOptions","cached","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","prev","numMeta","numData","insertElements","count","onDataPush","onDataPop","onDataShift","shift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawBorder","vm","borderAlign","lineWidth","lineJoin","fullCircles","drawFullCircleBorders","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","angle","betweenAngles","withinRadius","getCenterPoint","halfAngle","halfRadius","getArea","centreAngle","rangeFromCentre","circumference","fillStyle","strokeStyle","valueOrDefault$1","line","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","points","_children","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","skip","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","abs","hitRadius","pointStyle","element_point","mouseY","inXRange","inYRange","padding","chartArea","defaultColor$2","isVertical","getBarBounds","x1","y1","half","orig","v2","parseBorderWidth","maxW","maxH","edge","borderSkipped","horizontal","parseBorderSkipped","skipX","skipY","bounds","rectangle","element_rectangle","rects","border","outer","boundingRects","fillRect","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","curr","pixels","_length","getTicks","getPixelForTick","computeMinSampleSize","categoryPercentage","barPercentage","chunk","mode","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","stack","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","label","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","head","center","_getStacks","last","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","range","computeFlexCategoryTraits","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","position","tooltips","callbacks","title","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","_options","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","document","createElement","setAttribute","appendChild","createTextNode","outerHTML","legend","generateLabels","controller","text","onClick","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","maxWidth","maxHeight","opts","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","total","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","axis","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","config","showLine","_showLine","lineTension","_scale","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","ds","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","pt","filter","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","display","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","native","parseVisibleItems","handler","metadata","jlen","getIntersectItems","getNearestItems","intersect","distanceMetric","minDistance","POSITIVE_INFINITY","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","indexMode","items","core_interaction","modes","single","nearest","intersectsItem","filterByPosition","where","sortByWeight","getCombinedMax","maxPadding","updateDims","params","layout","newWidth","newHeight","box","getPadding","boxPadding","outerWidth","outerHeight","getMargins","marginForPositions","positions","margin","fitBoxes","boxes","refit","changed","refitBoxes","fullWidth","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","props","layoutOptions","availableWidth","availableHeight","layoutBoxes","wrapBoxes","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","vBoxMaxWidth","hBoxMaxHeight","layouts","setLayoutDims","updatePos","change","handleMaxPadding","stylesheet","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","property","eventListenerOptions","supports","addEventListener","passive","addListener","removeListener","removeEventListener","createEvent","nativeEvent","createDiv","cls","el","className","addResizeListener","expando","resizer","CSS_PREFIX","expand","CSS_SIZE_MONITOR","shrink","_reset","scrollLeft","scrollTop","onScroll","bind","createResizer","ticking","throttled","container","maintainAspectRatio","parentNode","clientWidth","proxy","renderProxy","animationName","reflow","offsetParent","classList","add","watchForRender","insertBefore","firstChild","removeResizeListener","remove","unwatchForRender","removeChild","platform_dom$2","disableCSSInjection","_enabled","_ensureLoaded","root","getRootNode","rootNode","css","containsStyles","injectCSS","host","acquireContext","getElementById","getContext","renderHeight","getAttribute","renderWidth","initial","displayWidth","aspectRatio","displayHeight","initCanvas","releaseContext","removeAttribute","proxies","event","fromNativeEvent","addEvent","removeEvent","implementation","platform","plugins","core_plugins","_plugins","_cacheId","register","plugin","unregister","idx","getAll","notify","hook","descriptor","descriptors","cache","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","enabled","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","footer","afterFooter","positioners","average","eventPosition","nearestElement","d","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","opacity","legendColorBackground","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getTitle","lines","getBeforeBody","getBody","bodyItems","bodyItem","before","after","getAfterBody","getFooter","existingModel","active","_active","alignment","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","body","dataPoints","tooltip","combinedBodyLength","reduce","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","getTooltipSize","paddingAndSize","radiusAndPadding","getBackgroundPoint","lf","rf","olf","orf","yf","midX","midY","determineAlignment","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","fillText","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","updateConfig","newOptions","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","events","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","initConfig","_bufferedRender","instances","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","stop","silent","getMaximumWidth","getMaximumHeight","newSize","onResize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","order","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","toDataURL","_chartInstance","_listeners","eventHandler","updateHoverStyle","bufferedRequest","core_controller","abstract","DateAdapter","Controller","types","configMerge","scaleMerge","formats","parse","format","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","logarithmic","remain","valueOrDefault$a","getPixelForGridLine","validIndex","lineValue","computeLabelSizes","tickFonts","caches","tickFont","nestedLabel","widest","highest","widths","heights","offsets","major","minor","gc","valueAt","gcLen","garbageCollect","first","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","filtered","spacing","majorStart","majorEnd","tick","ceil","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","paddingLeft","paddingTop","paddingRight","paddingBottom","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","numItems","increment","sample","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","fit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","toDegrees","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","widestLabelSize","highestLabelSize","lineSpace","tickPadding","isRotated","angleRadians","toRadians","cosRotation","sinRotation","labelHeight","offsetLeft","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","pixel","getBaseValue","avgMajorSpacing","axisLength","ticksLimit","maxTicksLimit","_tickSize","majorIndices","getMajorIndices","numMajorIndices","skipMajors","factors","factor","evenMajorSpacing","getEvenSpacing","calculateSpacing","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","tl","axisWidth","axisHalfWidth","alignPixel","_alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","tz","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","maxIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","scale_linearbase","handleTickRangeOptions","minSign","sign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","maxTicks","stepSize","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","precision","fixedStepSize","generationOptions","dataRange","niceMin","niceMax","numSpaces","unit","maxNumSpaces","rmin","rmax","niceNum","_decimalPlaces","almostWhole","almostEquals","generateTicks","ticksAsNumbers","_endValue","defaultConfig$1","stackData","neg","getOrCreateStack","relativePoints","updateMinMax","scale_linear","hasStacks","NEGATIVE_INFINITY","stackValues","_defaults$1","valueOrDefault$b","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","minNotZero","valuesPerStack","valuesForType","minVal","maxVal","exp","significand","tickVal","endExp","endSignificand","lastTick","generateTicks$1","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","animate","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","determineLimits","getTextAlignForAngle","adjustPointPositionForLabelHeight","textSize","numberOrZero","param","scale_radialLinear","drawingArea","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","longestText","getIndexAngle","hLimits","vLimits","setReductions","fitWithPointLabels","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","pointLabelOpts","tickBackdropHeight","outerDistance","extra","pointLabelPosition","pointLabelFontColor","drawPointLabels","drawRadiusLine","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","MAX_SAFE_INTEGER","INTERVALS","millisecond","common","steps","second","minute","hour","day","week","month","quarter","year","UNITS","sorter","getMin","time","getMax","interpolate$1","table","skey","tkey","mid","i0","i1","lookup","span","toTimestamp","input","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","interval","ticksFromTimestamps","majorUnit","setMajorTicks","scale_time","adapters","date","displayFormats","timestamp","labelsAdded","timestamps","dataLabels","hash","arrayUnique","_table","_timestamps","timeOpts","getLabelCapacity","distribution","unitStepSize","weekday","isoWeekday","generate","_unit","determineUnitForFormatting","_majorUnit","determineMajorUnit","buildLookupTable","_offsets","computeOffsets","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","displayFormat","category","radialLinear","FORMATS","_id","valueOf","amount","filler","propagate","mappers","boundary","decodeFill","computeBoundary","cx","cy","computeCircularBoundary","scaleBottom","scaleTop","scaleZero","computeLinearBoundary","resolveTarget","visited","visible","createMapper","isDrawable","drawArea","curve0","curve1","len0","len1","doFill","mapper","loop","p0","p1","d0","d1","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","ci","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","cursor","alignmentOffset","dimension","blockSize","itemHeight","textWidth","realX","SQRT2","drawLegendBox","halfFontSize","xLeft","yMiddle","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","_element","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","collection","filterCallback","findNextWhere","arrayToSearch","startIndex","currentItem","findPreviousWhere","epsilon","rounded","radians","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","fa","fb","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","evt","originalEvent","srcElement","boundingRect","getBoundingClientRect","touches","clientX","clientY","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","cw","clientHeight","ch","currentStyle","forceRatio","pixelRatio","pixelSize","arrayOfThings","thing","nestedThing","longest","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","core_helpers","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","cfg","factory"],"mappings":"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","file":"static/js/main~7274e1de.a82b0afb.chunk.js","sourcesContent":["/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","'use strict';\n\nvar colorString = require('color-string');\nvar convert = require('color-convert');\n\nvar _slice = [].slice;\n\nvar skippedModels = [\n\t// to be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// shouldn't really be in color-convert either...\n\t'hex'\n];\n\nvar hashedModelKeys = {};\nObject.keys(convert).forEach(function (model) {\n\thashedModelKeys[_slice.call(convert[model].labels).sort().join('')] = model;\n});\n\nvar limiters = {};\n\nfunction Color(obj, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tvar i;\n\tvar channels;\n\n\tif (obj == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (obj instanceof Color) {\n\t\tthis.model = obj.model;\n\t\tthis.color = obj.color.slice();\n\t\tthis.valpha = obj.valpha;\n\t} else if (typeof obj === 'string') {\n\t\tvar result = colorString.get(obj);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + obj);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (obj.length) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tvar newArr = _slice.call(obj, 0, channels);\n\t\tthis.color = zeroArray(newArr, channels);\n\t\tthis.valpha = typeof obj[channels] === 'number' ? obj[channels] : 1;\n\t} else if (typeof obj === 'number') {\n\t\t// this is always RGB - can be converted later on.\n\t\tobj &= 0xFFFFFF;\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(obj >> 16) & 0xFF,\n\t\t\t(obj >> 8) & 0xFF,\n\t\t\tobj & 0xFF\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tvar keys = Object.keys(obj);\n\t\tif ('alpha' in obj) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof obj.alpha === 'number' ? obj.alpha : 0;\n\t\t}\n\n\t\tvar hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(obj));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tvar labels = convert[this.model].labels;\n\t\tvar color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(obj[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tvar limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString: function () {\n\t\treturn this.string();\n\t},\n\n\ttoJSON: function () {\n\t\treturn this[this.model]();\n\t},\n\n\tstring: function (places) {\n\t\tvar self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString: function (places) {\n\t\tvar self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tvar args = self.valpha === 1 ? self.color : self.color.concat(this.valpha);\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray: function () {\n\t\treturn this.valpha === 1 ? this.color.slice() : this.color.concat(this.valpha);\n\t},\n\n\tobject: function () {\n\t\tvar result = {};\n\t\tvar channels = convert[this.model].channels;\n\t\tvar labels = convert[this.model].labels;\n\n\t\tfor (var i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray: function () {\n\t\tvar rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject: function () {\n\t\tvar rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround: function (places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color(this.color.map(roundToPlace(places)).concat(this.valpha), this.model);\n\t},\n\n\talpha: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(this.color.concat(Math.max(0, Math.min(1, val))), this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, function (val) { return ((val % 360) + 360) % 360; }), // eslint-disable-line brace-style\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(100)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(100)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex: function (val) {\n\t\tif (arguments.length) {\n\t\t\treturn new Color(val);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.rgb().color;\n\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\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\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\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\tisDark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.rgb().color;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight: function () {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = this.rgb();\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\t\treturn rgb;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale: function () {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar rgb = this.rgb().color;\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(val, val, val);\n\t},\n\n\tfade: function (ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer: function (ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.hsl();\n\t\tvar hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix: function (mixinColor, weight) {\n\t\t// ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\t\tvar color1 = mixinColor.rgb();\n\t\tvar color2 = this.rgb();\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 Color.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\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t}\n};\n\n// model conversion methods and static constructors\nObject.keys(convert).forEach(function (model) {\n\tif (skippedModels.indexOf(model) !== -1) {\n\t\treturn;\n\t}\n\n\tvar channels = convert[model].channels;\n\n\t// conversion methods\n\tColor.prototype[model] = function () {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments.length) {\n\t\t\treturn new Color(arguments, model);\n\t\t}\n\n\t\tvar newAlpha = typeof arguments[channels] === 'number' ? channels : this.valpha;\n\t\treturn new Color(assertArray(convert[this.model][model].raw(this.color)).concat(newAlpha), model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (color) {\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(_slice.call(arguments), channels);\n\t\t}\n\t\treturn new Color(color, model);\n\t};\n});\n\nfunction roundTo(num, places) {\n\treturn Number(num.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (num) {\n\t\treturn roundTo(num, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tmodel.forEach(function (m) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t});\n\n\tmodel = model[0];\n\n\treturn function (val) {\n\t\tvar result;\n\n\t\tif (arguments.length) {\n\t\t\tif (modifier) {\n\t\t\t\tval = modifier(val);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = val;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(val) {\n\treturn Array.isArray(val) ? val : [val];\n}\n\nfunction zeroArray(arr, length) {\n\tfor (var i = 0; i < length; i++) {\n\t\tif (typeof arr[i] !== 'number') {\n\t\t\tarr[i] = 0;\n\t\t}\n\t}\n\n\treturn arr;\n}\n\nmodule.exports = Color;\n","/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\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)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\n/**\n * @namespace Chart.helpers\n */\nvar helpers = {\n\t/**\n\t * An empty function that can be used, for example, for optional callback.\n\t */\n\tnoop: function() {},\n\n\t/**\n\t * Returns a unique id, sequentially generated from a global variable.\n\t * @returns {number}\n\t * @function\n\t */\n\tuid: (function() {\n\t\tvar id = 0;\n\t\treturn function() {\n\t\t\treturn id++;\n\t\t};\n\t}()),\n\n\t/**\n\t * Returns true if `value` is neither null nor undefined, else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisNullOrUndef: function(value) {\n\t\treturn value === null || typeof value === 'undefined';\n\t},\n\n\t/**\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @function\n\t */\n\tisArray: function(value) {\n\t\tif (Array.isArray && Array.isArray(value)) {\n\t\t\treturn true;\n\t\t}\n\t\tvar type = Object.prototype.toString.call(value);\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\n\t/**\n\t * Returns true if `value` is an object (excluding null), else returns false.\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t * @since 2.7.0\n\t */\n\tisObject: function(value) {\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\n\t},\n\n\t/**\n\t * Returns true if `value` is a finite number, else returns false\n\t * @param {*} value - The value to test.\n\t * @returns {boolean}\n\t */\n\tisFinite: function(value) {\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\n\t},\n\n\t/**\n\t * Returns `value` if defined, else returns `defaultValue`.\n\t * @param {*} value - The value to return if defined.\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\n\t * @returns {*}\n\t */\n\tvalueOrDefault: function(value, defaultValue) {\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\n\t},\n\n\t/**\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\n\t * @param {Array} value - The array to lookup for value at `index`.\n\t * @param {number} index - The index in `value` to lookup for value.\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\n\t * @returns {*}\n\t */\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\n\t},\n\n\t/**\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n\t * @param {function} fn - The function to call.\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @returns {*}\n\t */\n\tcallback: function(fn, args, thisArg) {\n\t\tif (fn && typeof fn.call === 'function') {\n\t\t\treturn fn.apply(thisArg, args);\n\t\t}\n\t},\n\n\t/**\n\t * Note(SB) for performance sake, this method should only be used when loopable type\n\t * is unknown or in none intensive code (not called often and small loopable). Else\n\t * it's preferable to use a regular for() loop and save extra function calls.\n\t * @param {object|Array} loopable - The object or array to be iterated.\n\t * @param {function} fn - The function to call for each item.\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\n\t */\n\teach: function(loopable, fn, thisArg, reverse) {\n\t\tvar i, len, keys;\n\t\tif (helpers.isArray(loopable)) {\n\t\t\tlen = loopable.length;\n\t\t\tif (reverse) {\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (helpers.isObject(loopable)) {\n\t\t\tkeys = Object.keys(loopable);\n\t\t\tlen = keys.length;\n\t\t\tfor (i = 0; i < len; i++) {\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n\t * @see https://stackoverflow.com/a/14853974\n\t * @param {Array} a0 - The array to compare\n\t * @param {Array} a1 - The array to compare\n\t * @returns {boolean}\n\t */\n\tarrayEquals: function(a0, a1) {\n\t\tvar i, ilen, v0, v1;\n\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\n\t\t\tv0 = a0[i];\n\t\t\tv1 = a1[i];\n\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (v0 !== v1) {\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t/**\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\n\t * @param {*} source - The value to clone.\n\t * @returns {*}\n\t */\n\tclone: function(source) {\n\t\tif (helpers.isArray(source)) {\n\t\t\treturn source.map(helpers.clone);\n\t\t}\n\n\t\tif (helpers.isObject(source)) {\n\t\t\tvar target = {};\n\t\t\tvar keys = Object.keys(source);\n\t\t\tvar klen = keys.length;\n\t\t\tvar k = 0;\n\n\t\t\tfor (; k < klen; ++k) {\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\n\t\t\t}\n\n\t\t\treturn target;\n\t\t}\n\n\t\treturn source;\n\t},\n\n\t/**\n\t * The default merger when Chart.helpers.merge is called without merger option.\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n\t * @private\n\t */\n\t_merger: function(key, target, source, options) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.merge(tval, sval, options);\n\t\t} else {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Merges source[key] in target[key] only if target[key] is undefined.\n\t * @private\n\t */\n\t_mergerIf: function(key, target, source) {\n\t\tvar tval = target[key];\n\t\tvar sval = source[key];\n\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\n\t\t\thelpers.mergeIf(tval, sval);\n\t\t} else if (!target.hasOwnProperty(key)) {\n\t\t\ttarget[key] = helpers.clone(sval);\n\t\t}\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @param {object} [options] - Merging options:\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\n\t * @returns {object} The `target` object.\n\t */\n\tmerge: function(target, source, options) {\n\t\tvar sources = helpers.isArray(source) ? source : [source];\n\t\tvar ilen = sources.length;\n\t\tvar merge, i, keys, klen, k;\n\n\t\tif (!helpers.isObject(target)) {\n\t\t\treturn target;\n\t\t}\n\n\t\toptions = options || {};\n\t\tmerge = options.merger || helpers._merger;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tsource = sources[i];\n\t\t\tif (!helpers.isObject(source)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tkeys = Object.keys(source);\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\n\t\t\t\tmerge(keys[k], target, source, options);\n\t\t\t}\n\t\t}\n\n\t\treturn target;\n\t},\n\n\t/**\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\n\t * @param {object} target - The target object in which all sources are merged into.\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\n\t * @returns {object} The `target` object.\n\t */\n\tmergeIf: function(target, source) {\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\n\t},\n\n\t/**\n\t * Applies the contents of two or more objects together into the first object.\n\t * @param {object} target - The target object in which all objects are merged into.\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\n\t * @param {object} argN - Additional objects containing properties to merge in target.\n\t * @returns {object} The `target` object.\n\t */\n\textend: Object.assign || function(target) {\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\n\t\t\tmerger: function(key, dst, src) {\n\t\t\t\tdst[key] = src[key];\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n\t * Basic javascript inheritance based on the model created in Backbone.js\n\t */\n\tinherits: function(extensions) {\n\t\tvar me = this;\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\n\t\t\treturn me.apply(this, arguments);\n\t\t};\n\n\t\tvar Surrogate = function() {\n\t\t\tthis.constructor = ChartElement;\n\t\t};\n\n\t\tSurrogate.prototype = me.prototype;\n\t\tChartElement.prototype = new Surrogate();\n\t\tChartElement.extend = helpers.inherits;\n\n\t\tif (extensions) {\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\n\t\t}\n\n\t\tChartElement.__super__ = me.prototype;\n\t\treturn ChartElement;\n\t},\n\n\t_deprecated: function(scope, value, previous, current) {\n\t\tif (value !== undefined) {\n\t\t\tconsole.warn(scope + ': \"' + previous +\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n\t\t}\n\t}\n};\n\nvar helpers_core = helpers;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.callback instead.\n * @function Chart.helpers.callCallback\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n * @private\n */\nhelpers.callCallback = helpers.callback;\n\n/**\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\n * @function Chart.helpers.indexOf\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.indexOf = function(array, item, fromIndex) {\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\n};\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\n * @function Chart.helpers.getValueOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueOrDefault = helpers.valueOrDefault;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\n * @function Chart.helpers.getValueAtIndexOrDefault\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easingEffects\n * @see http://www.robertpenner.com/easing/\n */\nvar effects = {\n\tlinear: function(t) {\n\t\treturn t;\n\t},\n\n\teaseInQuad: function(t) {\n\t\treturn t * t;\n\t},\n\n\teaseOutQuad: function(t) {\n\t\treturn -t * (t - 2);\n\t},\n\n\teaseInOutQuad: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t;\n\t\t}\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\n\t},\n\n\teaseInCubic: function(t) {\n\t\treturn t * t * t;\n\t},\n\n\teaseOutCubic: function(t) {\n\t\treturn (t = t - 1) * t * t + 1;\n\t},\n\n\teaseInOutCubic: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\n\t},\n\n\teaseInQuart: function(t) {\n\t\treturn t * t * t * t;\n\t},\n\n\teaseOutQuart: function(t) {\n\t\treturn -((t = t - 1) * t * t * t - 1);\n\t},\n\n\teaseInOutQuart: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t;\n\t\t}\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\n\t},\n\n\teaseInQuint: function(t) {\n\t\treturn t * t * t * t * t;\n\t},\n\n\teaseOutQuint: function(t) {\n\t\treturn (t = t - 1) * t * t * t * t + 1;\n\t},\n\n\teaseInOutQuint: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * t * t * t * t * t;\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\n\t},\n\n\teaseInSine: function(t) {\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\n\t},\n\n\teaseOutSine: function(t) {\n\t\treturn Math.sin(t * (Math.PI / 2));\n\t},\n\n\teaseInOutSine: function(t) {\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\n\t},\n\n\teaseInExpo: function(t) {\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\n\t},\n\n\teaseOutExpo: function(t) {\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\n\t},\n\n\teaseInOutExpo: function(t) {\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\n\t\t}\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\n\t},\n\n\teaseInCirc: function(t) {\n\t\tif (t >= 1) {\n\t\t\treturn t;\n\t\t}\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\n\t},\n\n\teaseOutCirc: function(t) {\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\n\t},\n\n\teaseInOutCirc: function(t) {\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\n\t\t}\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n\t},\n\n\teaseInElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t},\n\n\teaseOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (t === 1) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.3;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\n\t},\n\n\teaseInOutElastic: function(t) {\n\t\tvar s = 1.70158;\n\t\tvar p = 0;\n\t\tvar a = 1;\n\t\tif (t === 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif ((t /= 0.5) === 2) {\n\t\t\treturn 1;\n\t\t}\n\t\tif (!p) {\n\t\t\tp = 0.45;\n\t\t}\n\t\tif (a < 1) {\n\t\t\ta = 1;\n\t\t\ts = p / 4;\n\t\t} else {\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\n\t\t}\n\t\tif (t < 1) {\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\n\t\t}\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\n\t},\n\teaseInBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn t * t * ((s + 1) * t - s);\n\t},\n\n\teaseOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\n\t},\n\n\teaseInOutBack: function(t) {\n\t\tvar s = 1.70158;\n\t\tif ((t /= 0.5) < 1) {\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n\t\t}\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n\t},\n\n\teaseInBounce: function(t) {\n\t\treturn 1 - effects.easeOutBounce(1 - t);\n\t},\n\n\teaseOutBounce: function(t) {\n\t\tif (t < (1 / 2.75)) {\n\t\t\treturn 7.5625 * t * t;\n\t\t}\n\t\tif (t < (2 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\n\t\t}\n\t\tif (t < (2.5 / 2.75)) {\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\n\t\t}\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\n\t},\n\n\teaseInOutBounce: function(t) {\n\t\tif (t < 0.5) {\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\n\t\t}\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\n\t}\n};\n\nvar helpers_easing = {\n\teffects: effects\n};\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\n * @function Chart.helpers.easingEffects\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\nvar RAD_PER_DEG = PI / 180;\nvar DOUBLE_PI = PI * 2;\nvar HALF_PI = PI / 2;\nvar QUARTER_PI = PI / 4;\nvar TWO_THIRDS_PI = PI * 2 / 3;\n\n/**\n * @namespace Chart.helpers.canvas\n */\nvar exports$1 = {\n\t/**\n\t * Clears the entire canvas associated to the given `chart`.\n\t * @param {Chart} chart - The chart for which to clear the canvas.\n\t */\n\tclear: function(chart) {\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\n\t},\n\n\t/**\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\n\t * given size (width, height) and the same `radius` for all corners.\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\n\t * @param {number} width - The rectangle's width.\n\t * @param {number} height - The rectangle's height.\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\n\t */\n\troundedRect: function(ctx, x, y, width, height, radius) {\n\t\tif (radius) {\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\n\t\t\tvar left = x + r;\n\t\t\tvar top = y + r;\n\t\t\tvar right = x + width - r;\n\t\t\tvar bottom = y + height - r;\n\n\t\t\tctx.moveTo(x, top);\n\t\t\tif (left < right && top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\n\t\t\t} else if (left < right) {\n\t\t\t\tctx.moveTo(left, y);\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\n\t\t\t} else if (top < bottom) {\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\n\t\t\t} else {\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\n\t\t\t}\n\t\t\tctx.closePath();\n\t\t\tctx.moveTo(x, y);\n\t\t} else {\n\t\t\tctx.rect(x, y, width, height);\n\t\t}\n\t},\n\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\n\n\t\tif (style && typeof style === 'object') {\n\t\t\ttype = style.toString();\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n\t\t\t\tctx.save();\n\t\t\t\tctx.translate(x, y);\n\t\t\t\tctx.rotate(rad);\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n\t\t\t\tctx.restore();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isNaN(radius) || radius <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.beginPath();\n\n\t\tswitch (style) {\n\t\t// Default includes circle\n\t\tdefault:\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'triangle':\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\trad += TWO_THIRDS_PI;\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rectRounded':\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\n\t\t\t// circle with `radius`. For more details, see the following PRs:\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\n\t\t\tcornerRadius = radius * 0.516;\n\t\t\tsize = radius - cornerRadius;\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'rect':\n\t\t\tif (!rotation) {\n\t\t\t\tsize = Math.SQRT1_2 * radius;\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'rectRot':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tctx.closePath();\n\t\t\tbreak;\n\t\tcase 'crossRot':\n\t\t\trad += QUARTER_PI;\n\t\t\t/* falls through */\n\t\tcase 'cross':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'star':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\trad += QUARTER_PI;\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\n\t\t\tbreak;\n\t\tcase 'line':\n\t\t\txOffset = Math.cos(rad) * radius;\n\t\t\tyOffset = Math.sin(rad) * radius;\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\n\t\t\tbreak;\n\t\tcase 'dash':\n\t\t\tctx.moveTo(x, y);\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n\t\t\tbreak;\n\t\t}\n\n\t\tctx.fill();\n\t\tctx.stroke();\n\t},\n\n\t/**\n\t * Returns true if the point is inside the rectangle\n\t * @param {object} point - The point to test\n\t * @param {object} area - The rectangle\n\t * @returns {boolean}\n\t * @private\n\t */\n\t_isPointInArea: function(point, area) {\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\n\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\n\t},\n\n\tclipArea: function(ctx, area) {\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n\t\tctx.clip();\n\t},\n\n\tunclipArea: function(ctx) {\n\t\tctx.restore();\n\t},\n\n\tlineTo: function(ctx, previous, target, flip) {\n\t\tvar stepped = target.steppedLine;\n\t\tif (stepped) {\n\t\t\tif (stepped === 'middle') {\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\n\t\t\t\tctx.lineTo(previous.x, target.y);\n\t\t\t} else {\n\t\t\t\tctx.lineTo(target.x, previous.y);\n\t\t\t}\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!target.tension) {\n\t\t\tctx.lineTo(target.x, target.y);\n\t\t\treturn;\n\t\t}\n\n\t\tctx.bezierCurveTo(\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\n\t\t\ttarget.x,\n\t\t\ttarget.y);\n\t}\n};\n\nvar helpers_canvas = exports$1;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\n * @namespace Chart.helpers.clear\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.clear = exports$1.clear;\n\n/**\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\n * @namespace Chart.helpers.drawRoundedRectangle\n * @deprecated since version 2.7.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.drawRoundedRectangle = function(ctx) {\n\tctx.beginPath();\n\texports$1.roundedRect.apply(exports$1, arguments);\n};\n\nvar defaults = {\n\t/**\n\t * @private\n\t */\n\t_set: function(scope, values) {\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\n\t}\n};\n\n// TODO(v3): remove 'global' from namespace. all default are global and\n// there's inconsistency around which options are under 'global'\ndefaults._set('global', {\n\tdefaultColor: 'rgba(0,0,0,0.1)',\n\tdefaultFontColor: '#666',\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n\tdefaultFontSize: 12,\n\tdefaultFontStyle: 'normal',\n\tdefaultLineHeight: 1.2,\n\tshowLines: true\n});\n\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\n\n/**\n * Converts the given font object into a CSS font string.\n * @param {object} font - A font object.\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\n\t\treturn null;\n\t}\n\n\treturn (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\n\n/**\n * @alias Chart.helpers.options\n * @namespace\n */\nvar helpers_options = {\n\t/**\n\t * Converts the given line height `value` in pixels for a specific font `size`.\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n\t * @since 2.7.0\n\t */\n\ttoLineHeight: function(value, size) {\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\n\t\tif (!matches || matches[1] === 'normal') {\n\t\t\treturn size * 1.2;\n\t\t}\n\n\t\tvalue = +matches[2];\n\n\t\tswitch (matches[3]) {\n\t\tcase 'px':\n\t\t\treturn value;\n\t\tcase '%':\n\t\t\tvalue /= 100;\n\t\t\tbreak;\n\t\t}\n\n\t\treturn size * value;\n\t},\n\n\t/**\n\t * Converts the given value into a padding object with pre-computed width/height.\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\n\t * else, if and object, use defined properties and sets undefined ones to 0.\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\n\t * @since 2.7.0\n\t */\n\ttoPadding: function(value) {\n\t\tvar t, r, b, l;\n\n\t\tif (helpers_core.isObject(value)) {\n\t\t\tt = +value.top || 0;\n\t\t\tr = +value.right || 0;\n\t\t\tb = +value.bottom || 0;\n\t\t\tl = +value.left || 0;\n\t\t} else {\n\t\t\tt = r = b = l = +value || 0;\n\t\t}\n\n\t\treturn {\n\t\t\ttop: t,\n\t\t\tright: r,\n\t\t\tbottom: b,\n\t\t\tleft: l,\n\t\t\theight: t + b,\n\t\t\twidth: l + r\n\t\t};\n\t},\n\n\t/**\n\t * Parses font options and returns the font object.\n\t * @param {object} options - A object that contains font options to be parsed.\n\t * @return {object} The font object.\n\t * @todo Support font.* options and renamed to toFont().\n\t * @private\n\t */\n\t_parseFont: function(options) {\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\n\t\tvar font = {\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\n\t\t\tsize: size,\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\n\t\t\tweight: null,\n\t\t\tstring: ''\n\t\t};\n\n\t\tfont.string = toFontString(font);\n\t\treturn font;\n\t},\n\n\t/**\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\n\t * @param {Array} inputs - An array of values, falling back to the last value.\n\t * @param {object} [context] - If defined and the current value is a function, the value\n\t * is called with `context` as first argument and the result becomes the new input.\n\t * @param {number} [index] - If defined and the current value is an array, the value\n\t * at `index` become the new input.\n\t * @param {object} [info] - object to return information about resolution in\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\n\t * @since 2.7.0\n\t */\n\tresolve: function(inputs, context, index, info) {\n\t\tvar cacheable = true;\n\t\tvar i, ilen, value;\n\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\n\t\t\tvalue = inputs[i];\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (context !== undefined && typeof value === 'function') {\n\t\t\t\tvalue = value(context);\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\n\t\t\t\tvalue = value[index];\n\t\t\t\tcacheable = false;\n\t\t\t}\n\t\t\tif (value !== undefined) {\n\t\t\t\tif (info && !cacheable) {\n\t\t\t\t\tinfo.cacheable = false;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t}\n};\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nvar exports$2 = {\n\t/**\n\t * Returns an array of factors sorted from 1 to sqrt(value)\n\t * @private\n\t */\n\t_factorize: function(value) {\n\t\tvar result = [];\n\t\tvar sqrt = Math.sqrt(value);\n\t\tvar i;\n\n\t\tfor (i = 1; i < sqrt; i++) {\n\t\t\tif (value % i === 0) {\n\t\t\t\tresult.push(i);\n\t\t\t\tresult.push(value / i);\n\t\t\t}\n\t\t}\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\n\t\t\tresult.push(sqrt);\n\t\t}\n\n\t\tresult.sort(function(a, b) {\n\t\t\treturn a - b;\n\t\t}).pop();\n\t\treturn result;\n\t},\n\n\tlog10: Math.log10 || function(x) {\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\n\t\t// Check for whole powers of 10,\n\t\t// which due to floating point rounding error should be corrected.\n\t\tvar powerOf10 = Math.round(exponent);\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\n\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\n\t}\n};\n\nvar helpers_math = exports$2;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\n * @namespace Chart.helpers.log10\n * @deprecated since version 2.9.0\n * @todo remove at version 3\n * @private\n */\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn rectX + rectX + width - x;\n\t\t},\n\t\tsetWidth: function(w) {\n\t\t\twidth = w;\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\tif (align === 'center') {\n\t\t\t\treturn align;\n\t\t\t}\n\t\t\treturn align === 'right' ? 'left' : 'right';\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x - value;\n\t\t},\n\t\tleftForLtr: function(x, itemWidth) {\n\t\t\treturn x - itemWidth;\n\t\t},\n\t};\n};\n\nvar getLtrAdapter = function() {\n\treturn {\n\t\tx: function(x) {\n\t\t\treturn x;\n\t\t},\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\n\t\t},\n\t\ttextAlign: function(align) {\n\t\t\treturn align;\n\t\t},\n\t\txPlus: function(x, value) {\n\t\t\treturn x + value;\n\t\t},\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\n\t\t\treturn x;\n\t\t},\n\t};\n};\n\nvar getAdapter = function(rtl, rectX, width) {\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\n};\n\nvar overrideTextDirection = function(ctx, direction) {\n\tvar style, original;\n\tif (direction === 'ltr' || direction === 'rtl') {\n\t\tstyle = ctx.canvas.style;\n\t\toriginal = [\n\t\t\tstyle.getPropertyValue('direction'),\n\t\t\tstyle.getPropertyPriority('direction'),\n\t\t];\n\n\t\tstyle.setProperty('direction', direction, 'important');\n\t\tctx.prevTextDirection = original;\n\t}\n};\n\nvar restoreTextDirection = function(ctx) {\n\tvar original = ctx.prevTextDirection;\n\tif (original !== undefined) {\n\t\tdelete ctx.prevTextDirection;\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\n\t}\n};\n\nvar helpers_rtl = {\n\tgetRtlAdapter: getAdapter,\n\toverrideTextDirection: overrideTextDirection,\n\trestoreTextDirection: restoreTextDirection,\n};\n\nvar helpers$1 = helpers_core;\nvar easing = helpers_easing;\nvar canvas = helpers_canvas;\nvar options = helpers_options;\nvar math = helpers_math;\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\n\tvar keys = Object.keys(model);\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\n\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\tkey = keys[i];\n\n\t\ttarget = model[key];\n\n\t\t// if a value is added to the model after pivot() has been called, the view\n\t\t// doesn't contain it, so let's initialize the view to the target value.\n\t\tif (!view.hasOwnProperty(key)) {\n\t\t\tview[key] = target;\n\t\t}\n\n\t\tactual = view[key];\n\n\t\tif (actual === target || key[0] === '_') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!start.hasOwnProperty(key)) {\n\t\t\tstart[key] = actual;\n\t\t}\n\n\t\torigin = start[key];\n\n\t\ttype = typeof target;\n\n\t\tif (type === typeof origin) {\n\t\t\tif (type === 'string') {\n\t\t\t\tc0 = chartjsColor(origin);\n\t\t\t\tif (c0.valid) {\n\t\t\t\t\tc1 = chartjsColor(target);\n\t\t\t\t\tif (c1.valid) {\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\n\t\t\t\tview[key] = origin + (target - origin) * ease;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tview[key] = target;\n\t}\n}\n\nvar Element = function(configuration) {\n\thelpers$1.extend(this, configuration);\n\tthis.initialize.apply(this, arguments);\n};\n\nhelpers$1.extend(Element.prototype, {\n\t_type: undefined,\n\n\tinitialize: function() {\n\t\tthis.hidden = false;\n\t},\n\n\tpivot: function() {\n\t\tvar me = this;\n\t\tif (!me._view) {\n\t\t\tme._view = helpers$1.extend({}, me._model);\n\t\t}\n\t\tme._start = {};\n\t\treturn me;\n\t},\n\n\ttransition: function(ease) {\n\t\tvar me = this;\n\t\tvar model = me._model;\n\t\tvar start = me._start;\n\t\tvar view = me._view;\n\n\t\t// No animation -> No Transition\n\t\tif (!model || ease === 1) {\n\t\t\tme._view = helpers$1.extend({}, model);\n\t\t\tme._start = null;\n\t\t\treturn me;\n\t\t}\n\n\t\tif (!view) {\n\t\t\tview = me._view = {};\n\t\t}\n\n\t\tif (!start) {\n\t\t\tstart = me._start = {};\n\t\t}\n\n\t\tinterpolate(start, view, model, ease);\n\n\t\treturn me;\n\t},\n\n\ttooltipPosition: function() {\n\t\treturn {\n\t\t\tx: this._model.x,\n\t\t\ty: this._model.y\n\t\t};\n\t},\n\n\thasValue: function() {\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\n\t}\n});\n\nElement.extend = helpers$1.inherits;\n\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\n\tchart: null, // the animation associated chart instance\n\tcurrentStep: 0, // the current animation step\n\tnumSteps: 60, // default number of steps\n\teasing: '', // the easing to use for this animation\n\trender: null, // render function used by the animation service\n\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\n});\n\nvar core_animation = exports$3;\n\n// DEPRECATIONS\n\n/**\n * Provided for backward compatibility, use Chart.Animation instead\n * @prop Chart.Animation#animationObject\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'animationObject', {\n\tget: function() {\n\t\treturn this;\n\t}\n});\n\n/**\n * Provided for backward compatibility, use Chart.Animation#chart instead\n * @prop Chart.Animation#chartInstance\n * @deprecated since version 2.6.0\n * @todo remove at version 3\n */\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\n\tget: function() {\n\t\treturn this.chart;\n\t},\n\tset: function(value) {\n\t\tthis.chart = value;\n\t}\n});\n\ncore_defaults._set('global', {\n\tanimation: {\n\t\tduration: 1000,\n\t\teasing: 'easeOutQuart',\n\t\tonProgress: helpers$1.noop,\n\t\tonComplete: helpers$1.noop\n\t}\n});\n\nvar core_animations = {\n\tanimations: [],\n\trequest: null,\n\n\t/**\n\t * @param {Chart} chart - The chart to animate.\n\t * @param {Chart.Animation} animation - The animation that we will animate.\n\t * @param {number} duration - The animation duration in ms.\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\n\t */\n\taddAnimation: function(chart, animation, duration, lazy) {\n\t\tvar animations = this.animations;\n\t\tvar i, ilen;\n\n\t\tanimation.chart = chart;\n\t\tanimation.startTime = Date.now();\n\t\tanimation.duration = duration;\n\n\t\tif (!lazy) {\n\t\t\tchart.animating = true;\n\t\t}\n\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\n\t\t\tif (animations[i].chart === chart) {\n\t\t\t\tanimations[i] = animation;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tanimations.push(animation);\n\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\n\t\tif (animations.length === 1) {\n\t\t\tthis.requestAnimationFrame();\n\t\t}\n\t},\n\n\tcancelAnimation: function(chart) {\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\n\t\t\treturn animation.chart === chart;\n\t\t});\n\n\t\tif (index !== -1) {\n\t\t\tthis.animations.splice(index, 1);\n\t\t\tchart.animating = false;\n\t\t}\n\t},\n\n\trequestAnimationFrame: function() {\n\t\tvar me = this;\n\t\tif (me.request === null) {\n\t\t\t// Skip animation frame requests until the active one is executed.\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\n\t\t\t// and 'mouseout' events will trigger multiple renders.\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tme.request = null;\n\t\t\t\tme.startDigest();\n\t\t\t});\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tstartDigest: function() {\n\t\tvar me = this;\n\n\t\tme.advance();\n\n\t\t// Do we have more stuff to animate?\n\t\tif (me.animations.length > 0) {\n\t\t\tme.requestAnimationFrame();\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tadvance: function() {\n\t\tvar animations = this.animations;\n\t\tvar animation, chart, numSteps, nextStep;\n\t\tvar i = 0;\n\n\t\t// 1 animation per chart, so we are looping charts here\n\t\twhile (i < animations.length) {\n\t\t\tanimation = animations[i];\n\t\t\tchart = animation.chart;\n\t\t\tnumSteps = animation.numSteps;\n\n\t\t\t// Make sure that currentStep starts at 1\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\n\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\n\n\t\t\tif (animation.currentStep >= numSteps) {\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\n\t\t\t\tchart.animating = false;\n\t\t\t\tanimations.splice(i, 1);\n\t\t\t} else {\n\t\t\t\t++i;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar resolve = helpers$1.options.resolve;\n\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\n\n/**\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\n */\nfunction listenArrayEvents(array, listener) {\n\tif (array._chartjs) {\n\t\tarray._chartjs.listeners.push(listener);\n\t\treturn;\n\t}\n\n\tObject.defineProperty(array, '_chartjs', {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\tvalue: {\n\t\t\tlisteners: [listener]\n\t\t}\n\t});\n\n\tarrayEvents.forEach(function(key) {\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\n\t\tvar base = array[key];\n\n\t\tObject.defineProperty(array, key, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: function() {\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\t\t\tvar res = base.apply(this, args);\n\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\n\t\t\t\t\tif (typeof object[method] === 'function') {\n\t\t\t\t\t\tobject[method].apply(object, args);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn res;\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Removes the given array event listener and cleanup extra attached properties (such as\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\n */\nfunction unlistenArrayEvents(array, listener) {\n\tvar stub = array._chartjs;\n\tif (!stub) {\n\t\treturn;\n\t}\n\n\tvar listeners = stub.listeners;\n\tvar index = listeners.indexOf(listener);\n\tif (index !== -1) {\n\t\tlisteners.splice(index, 1);\n\t}\n\n\tif (listeners.length > 0) {\n\t\treturn;\n\t}\n\n\tarrayEvents.forEach(function(key) {\n\t\tdelete array[key];\n\t});\n\n\tdelete array._chartjs;\n}\n\n// Base class for all dataset controllers (line, bar, etc)\nvar DatasetController = function(chart, datasetIndex) {\n\tthis.initialize(chart, datasetIndex);\n};\n\nhelpers$1.extend(DatasetController.prototype, {\n\n\t/**\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\n\t * @type {Chart.core.element}\n\t */\n\tdatasetElementType: null,\n\n\t/**\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\n\t * @type {Chart.core.element}\n\t */\n\tdataElementType: null,\n\n\t/**\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth'\n\t],\n\n\t/**\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\n\t * A derived controller may override this to resolve controller-specific options.\n\t * The keys defined here are for backward compatibility for legend styles.\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'pointStyle'\n\t],\n\n\tinitialize: function(chart, datasetIndex) {\n\t\tvar me = this;\n\t\tme.chart = chart;\n\t\tme.index = datasetIndex;\n\t\tme.linkScales();\n\t\tme.addElements();\n\t\tme._type = me.getMeta().type;\n\t},\n\n\tupdateIndex: function(datasetIndex) {\n\t\tthis.index = datasetIndex;\n\t},\n\n\tlinkScales: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar chart = me.chart;\n\t\tvar scales = chart.scales;\n\t\tvar dataset = me.getDataset();\n\t\tvar scalesOpts = chart.options.scales;\n\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\n\t\t}\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\n\t\t}\n\t},\n\n\tgetDataset: function() {\n\t\treturn this.chart.data.datasets[this.index];\n\t},\n\n\tgetMeta: function() {\n\t\treturn this.chart.getDatasetMeta(this.index);\n\t},\n\n\tgetScaleForId: function(scaleID) {\n\t\treturn this.chart.scales[scaleID];\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScale: function() {\n\t\treturn this.getScaleForId(this._getValueScaleId());\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScale: function() {\n\t\treturn this.getScaleForId(this._getIndexScaleId());\n\t},\n\n\treset: function() {\n\t\tthis._update(true);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tdestroy: function() {\n\t\tif (this._data) {\n\t\t\tunlistenArrayEvents(this._data, this);\n\t\t}\n\t},\n\n\tcreateMetaDataset: function() {\n\t\tvar me = this;\n\t\tvar type = me.datasetElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index\n\t\t});\n\t},\n\n\tcreateMetaData: function(index) {\n\t\tvar me = this;\n\t\tvar type = me.dataElementType;\n\t\treturn type && new type({\n\t\t\t_chart: me.chart,\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index\n\t\t});\n\t},\n\n\taddElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data || [];\n\t\tvar metaData = meta.data;\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\n\t\t}\n\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\n\t},\n\n\taddElementAndReset: function(index) {\n\t\tvar element = this.createMetaData(index);\n\t\tthis.getMeta().data.splice(index, 0, element);\n\t\tthis.updateElement(element, index, true);\n\t},\n\n\tbuildOrUpdateElements: function() {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar data = dataset.data || (dataset.data = []);\n\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\n\t\t// the internal meta data accordingly.\n\t\tif (me._data !== data) {\n\t\t\tif (me._data) {\n\t\t\t\t// This case happens when the user replaced the data array instance.\n\t\t\t\tunlistenArrayEvents(me._data, me);\n\t\t\t}\n\n\t\t\tif (data && Object.isExtensible(data)) {\n\t\t\t\tlistenArrayEvents(data, me);\n\t\t\t}\n\t\t\tme._data = data;\n\t\t}\n\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\n\t\t// any updates and so make sure that we handle number of datapoints changing.\n\t\tme.resyncElements();\n\t},\n\n\t/**\n\t * Returns the merged user-supplied and default dataset-level options\n\t * @private\n\t */\n\t_configure: function() {\n\t\tvar me = this;\n\t\tme._config = helpers$1.merge({}, [\n\t\t\tme.chart.options.datasets[me._type],\n\t\t\tme.getDataset(),\n\t\t], {\n\t\t\tmerger: function(key, target, source) {\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\n\t\t\t\t\thelpers$1._merger(key, target, source);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\t_update: function(reset) {\n\t\tvar me = this;\n\t\tme._configure();\n\t\tme._cachedDataOpts = null;\n\t\tme.update(reset);\n\t},\n\n\tupdate: helpers$1.noop,\n\n\ttransition: function(easingValue) {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].transition(easingValue);\n\t\t}\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.transition(easingValue);\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar meta = this.getMeta();\n\t\tvar elements = meta.data || [];\n\t\tvar ilen = elements.length;\n\t\tvar i = 0;\n\n\t\tif (meta.dataset) {\n\t\t\tmeta.dataset.draw();\n\t\t}\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\telements[i].draw();\n\t\t}\n\t},\n\n\t/**\n\t * Returns a set of predefined style properties that should be used to represent the dataset\n\t * or the data if the index is specified\n\t * @param {number} index - data index\n\t * @return {IStyleInterface} style object\n\t */\n\tgetStyle: function(index) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = meta.dataset;\n\t\tvar style;\n\n\t\tme._configure();\n\t\tif (dataset && index === undefined) {\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\n\t\t} else {\n\t\t\tindex = index || 0;\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\n\t\t}\n\n\t\tif (style.fill === false || style.fill === null) {\n\t\t\tstyle.backgroundColor = style.borderColor;\n\t\t}\n\n\t\treturn style;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element, hover) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\n\t\tvar elementOptions = me._datasetElementOptions;\n\t\tvar values = {};\n\t\tvar i, ilen, key, readKey;\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index,\n\t\t\thover: hover\n\t\t};\n\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\tkey = elementOptions[i];\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\n\t\t\tvalues[key] = resolve([\n\t\t\t\tcustom[readKey],\n\t\t\t\tdatasetOpts[readKey],\n\t\t\t\toptions[readKey]\n\t\t\t], context);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(element, index) {\n\t\tvar me = this;\n\t\tvar custom = element && element.custom;\n\t\tvar cached = me._cachedDataOpts;\n\t\tif (cached && !custom) {\n\t\t\treturn cached;\n\t\t}\n\t\tvar chart = me.chart;\n\t\tvar datasetOpts = me._config;\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\n\t\tvar elementOptions = me._dataElementOptions;\n\t\tvar values = {};\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: me.getDataset(),\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\n\t\tvar info = {cacheable: !custom};\n\n\t\tvar keys, i, ilen, key;\n\n\t\tcustom = custom || {};\n\n\t\tif (helpers$1.isArray(elementOptions)) {\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\n\t\t\t\tkey = elementOptions[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t} else {\n\t\t\tkeys = Object.keys(elementOptions);\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\t\tkey = keys[i];\n\t\t\t\tvalues[key] = resolve([\n\t\t\t\t\tcustom[key],\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\n\t\t\t\t\tdatasetOpts[key],\n\t\t\t\t\toptions[key]\n\t\t\t\t], context, index, info);\n\t\t\t}\n\t\t}\n\n\t\tif (info.cacheable) {\n\t\t\tme._cachedDataOpts = Object.freeze(values);\n\t\t}\n\n\t\treturn values;\n\t},\n\n\tremoveHoverStyle: function(element) {\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\n\t\tdelete element.$previousStyle;\n\t},\n\n\tsetHoverStyle: function(element) {\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\n\t\tvar index = element._index;\n\t\tvar custom = element.custom || {};\n\t\tvar model = element._model;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\telement.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth\n\t\t};\n\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_removeDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\n\t\tif (element) {\n\t\t\tthis.removeHoverStyle(element);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_setDatasetHoverStyle: function() {\n\t\tvar element = this.getMeta().dataset;\n\t\tvar prev = {};\n\t\tvar i, ilen, key, keys, hoverOptions, model;\n\n\t\tif (!element) {\n\t\t\treturn;\n\t\t}\n\n\t\tmodel = element._model;\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\n\n\t\tkeys = Object.keys(hoverOptions);\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\n\t\t\tkey = keys[i];\n\t\t\tprev[key] = model[key];\n\t\t\tmodel[key] = hoverOptions[key];\n\t\t}\n\n\t\telement.$previousStyle = prev;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tresyncElements: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar data = me.getDataset().data;\n\t\tvar numMeta = meta.data.length;\n\t\tvar numData = data.length;\n\n\t\tif (numData < numMeta) {\n\t\t\tmeta.data.splice(numData, numMeta - numData);\n\t\t} else if (numData > numMeta) {\n\t\t\tme.insertElements(numMeta, numData - numMeta);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tinsertElements: function(start, count) {\n\t\tfor (var i = 0; i < count; ++i) {\n\t\t\tthis.addElementAndReset(start + i);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPush: function() {\n\t\tvar count = arguments.length;\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataPop: function() {\n\t\tthis.getMeta().data.pop();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataShift: function() {\n\t\tthis.getMeta().data.shift();\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataSplice: function(start, count) {\n\t\tthis.getMeta().data.splice(start, count);\n\t\tthis.insertElements(start, arguments.length - 2);\n\t},\n\n\t/**\n\t * @private\n\t */\n\tonDataUnshift: function() {\n\t\tthis.insertElements(0, arguments.length);\n\t}\n});\n\nDatasetController.extend = helpers$1.inherits;\n\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tarc: {\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\n\t\t\tborderColor: '#fff',\n\t\t\tborderWidth: 2,\n\t\t\tborderAlign: 'center'\n\t\t}\n\t}\n});\n\nfunction clipArc(ctx, arc) {\n\tvar startAngle = arc.startAngle;\n\tvar endAngle = arc.endAngle;\n\tvar pixelMargin = arc.pixelMargin;\n\tvar angleMargin = pixelMargin / arc.outerRadius;\n\tvar x = arc.x;\n\tvar y = arc.y;\n\n\t// Draw an inner border by cliping the arc and drawing a double-width border\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n\tctx.beginPath();\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n\tif (arc.innerRadius > pixelMargin) {\n\t\tangleMargin = pixelMargin / arc.innerRadius;\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\n\t} else {\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\n\t}\n\tctx.closePath();\n\tctx.clip();\n}\n\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\n\tvar endAngle = arc.endAngle;\n\tvar i;\n\n\tif (inner) {\n\t\tarc.endAngle = arc.startAngle + TAU;\n\t\tclipArc(ctx, arc);\n\t\tarc.endAngle = endAngle;\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\n\t\t\tarc.endAngle += TAU;\n\t\t\tarc.fullCircles--;\n\t\t}\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\n\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\tctx.stroke();\n\t}\n}\n\nfunction drawBorder(ctx, vm, arc) {\n\tvar inner = vm.borderAlign === 'inner';\n\n\tif (inner) {\n\t\tctx.lineWidth = vm.borderWidth * 2;\n\t\tctx.lineJoin = 'round';\n\t} else {\n\t\tctx.lineWidth = vm.borderWidth;\n\t\tctx.lineJoin = 'bevel';\n\t}\n\n\tif (arc.fullCircles) {\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\n\t}\n\n\tif (inner) {\n\t\tclipArc(ctx, arc);\n\t}\n\n\tctx.beginPath();\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\tctx.closePath();\n\tctx.stroke();\n}\n\nvar element_arc = core_element.extend({\n\t_type: 'arc',\n\n\tinLabelRange: function(mouseX) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\n\t\t}\n\t\treturn false;\n\t},\n\n\tinRange: function(chartX, chartY) {\n\t\tvar vm = this._view;\n\n\t\tif (vm) {\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\n\t\t\tvar angle = pointRelativePosition.angle;\n\t\t\tvar distance = pointRelativePosition.distance;\n\n\t\t\t// Sanitise angle range\n\t\t\tvar startAngle = vm.startAngle;\n\t\t\tvar endAngle = vm.endAngle;\n\t\t\twhile (endAngle < startAngle) {\n\t\t\t\tendAngle += TAU;\n\t\t\t}\n\t\t\twhile (angle > endAngle) {\n\t\t\t\tangle -= TAU;\n\t\t\t}\n\t\t\twhile (angle < startAngle) {\n\t\t\t\tangle += TAU;\n\t\t\t}\n\n\t\t\t// Check if within the range of the open/close angle\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\n\n\t\t\treturn (betweenAngles && withinRadius);\n\t\t}\n\t\treturn false;\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\n\t\treturn {\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\n\n\t\treturn {\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\n\t\tvar arc = {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tinnerRadius: vm.innerRadius,\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\n\t\t\tpixelMargin: pixelMargin,\n\t\t\tstartAngle: vm.startAngle,\n\t\t\tendAngle: vm.endAngle,\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\n\t\t};\n\t\tvar i;\n\n\t\tctx.save();\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.strokeStyle = vm.borderColor;\n\n\t\tif (arc.fullCircles) {\n\t\t\tarc.endAngle = arc.startAngle + TAU;\n\t\t\tctx.beginPath();\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\t\tctx.closePath();\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\n\t\t\t\tctx.fill();\n\t\t\t}\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\n\t\t}\n\n\t\tctx.beginPath();\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\n\t\tctx.closePath();\n\t\tctx.fill();\n\n\t\tif (vm.borderWidth) {\n\t\t\tdrawBorder(ctx, vm, arc);\n\t\t}\n\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\n\nvar defaultColor = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tline: {\n\t\t\ttension: 0.4,\n\t\t\tbackgroundColor: defaultColor,\n\t\t\tborderWidth: 3,\n\t\t\tborderColor: defaultColor,\n\t\t\tborderCapStyle: 'butt',\n\t\t\tborderDash: [],\n\t\t\tborderDashOffset: 0.0,\n\t\t\tborderJoinStyle: 'miter',\n\t\t\tcapBezierPoints: true,\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\n\t\t}\n\t}\n});\n\nvar element_line = core_element.extend({\n\t_type: 'line',\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar vm = me._view;\n\t\tvar ctx = me._chart.ctx;\n\t\tvar spanGaps = vm.spanGaps;\n\t\tvar points = me._children.slice(); // clone array\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\n\t\tvar lastDrawnIndex = -1;\n\t\tvar closePath = me._loop;\n\t\tvar index, previous, currentVM;\n\n\t\tif (!points.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (me._loop) {\n\t\t\tfor (index = 0; index < points.length; ++index) {\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\n\t\t\t\t// If the line has an open path, shift the point array\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\n\t\t\t\t\tclosePath = spanGaps;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the line has a close path, add the first point again\n\t\t\tif (closePath) {\n\t\t\t\tpoints.push(points[0]);\n\t\t\t}\n\t\t}\n\n\t\tctx.save();\n\n\t\t// Stroke Line Options\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\n\n\t\t// IE 9 and 10 do not support line dash\n\t\tif (ctx.setLineDash) {\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\n\t\t}\n\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\n\n\t\t// Stroke Line\n\t\tctx.beginPath();\n\n\t\t// First point moves to it's starting position no matter what\n\t\tcurrentVM = points[0]._view;\n\t\tif (!currentVM.skip) {\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\tlastDrawnIndex = 0;\n\t\t}\n\n\t\tfor (index = 1; index < points.length; ++index) {\n\t\t\tcurrentVM = points[index]._view;\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\n\n\t\t\tif (!currentVM.skip) {\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\n\t\t\t\t\t// There was a gap and this is the first point after the gap\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\n\t\t\t\t} else {\n\t\t\t\t\t// Line to next point\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\n\t\t\t\t}\n\t\t\t\tlastDrawnIndex = index;\n\t\t\t}\n\t\t}\n\n\t\tif (closePath) {\n\t\t\tctx.closePath();\n\t\t}\n\n\t\tctx.stroke();\n\t\tctx.restore();\n\t}\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\n\nvar defaultColor$1 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\tpoint: {\n\t\t\tradius: 3,\n\t\t\tpointStyle: 'circle',\n\t\t\tbackgroundColor: defaultColor$1,\n\t\t\tborderColor: defaultColor$1,\n\t\t\tborderWidth: 1,\n\t\t\t// Hover\n\t\t\thitRadius: 1,\n\t\t\thoverRadius: 4,\n\t\t\thoverBorderWidth: 1\n\t\t}\n\t}\n});\n\nfunction xRange(mouseX) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\n}\n\nfunction yRange(mouseY) {\n\tvar vm = this._view;\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\n}\n\nvar element_point = core_element.extend({\n\t_type: 'point',\n\n\tinRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\n\t},\n\n\tinLabelRange: xRange,\n\tinXRange: xRange,\n\tinYRange: yRange,\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t},\n\n\tgetArea: function() {\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y,\n\t\t\tpadding: vm.radius + vm.borderWidth\n\t\t};\n\t},\n\n\tdraw: function(chartArea) {\n\t\tvar vm = this._view;\n\t\tvar ctx = this._chart.ctx;\n\t\tvar pointStyle = vm.pointStyle;\n\t\tvar rotation = vm.rotation;\n\t\tvar radius = vm.radius;\n\t\tvar x = vm.x;\n\t\tvar y = vm.y;\n\t\tvar globalDefaults = core_defaults.global;\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\n\n\t\tif (vm.skip) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clipping for Points.\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\n\t\t}\n\t}\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\n\ncore_defaults._set('global', {\n\telements: {\n\t\trectangle: {\n\t\t\tbackgroundColor: defaultColor$2,\n\t\t\tborderColor: defaultColor$2,\n\t\t\tborderSkipped: 'bottom',\n\t\t\tborderWidth: 0\n\t\t}\n\t}\n});\n\nfunction isVertical(vm) {\n\treturn vm && vm.width !== undefined;\n}\n\n/**\n * Helper function to get the bounds of the bar regardless of the orientation\n * @param bar {Chart.Element.Rectangle} the bar\n * @return {Bounds} bounds of the bar\n * @private\n */\nfunction getBarBounds(vm) {\n\tvar x1, x2, y1, y2, half;\n\n\tif (isVertical(vm)) {\n\t\thalf = vm.width / 2;\n\t\tx1 = vm.x - half;\n\t\tx2 = vm.x + half;\n\t\ty1 = Math.min(vm.y, vm.base);\n\t\ty2 = Math.max(vm.y, vm.base);\n\t} else {\n\t\thalf = vm.height / 2;\n\t\tx1 = Math.min(vm.x, vm.base);\n\t\tx2 = Math.max(vm.x, vm.base);\n\t\ty1 = vm.y - half;\n\t\ty2 = vm.y + half;\n\t}\n\n\treturn {\n\t\tleft: x1,\n\t\ttop: y1,\n\t\tright: x2,\n\t\tbottom: y2\n\t};\n}\n\nfunction swap(orig, v1, v2) {\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\n\nfunction parseBorderSkipped(vm) {\n\tvar edge = vm.borderSkipped;\n\tvar res = {};\n\n\tif (!edge) {\n\t\treturn res;\n\t}\n\n\tif (vm.horizontal) {\n\t\tif (vm.base > vm.x) {\n\t\t\tedge = swap(edge, 'left', 'right');\n\t\t}\n\t} else if (vm.base < vm.y) {\n\t\tedge = swap(edge, 'bottom', 'top');\n\t}\n\n\tres[edge] = true;\n\treturn res;\n}\n\nfunction parseBorderWidth(vm, maxW, maxH) {\n\tvar value = vm.borderWidth;\n\tvar skip = parseBorderSkipped(vm);\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = +value.top || 0;\n\t\tr = +value.right || 0;\n\t\tb = +value.bottom || 0;\n\t\tl = +value.left || 0;\n\t} else {\n\t\tt = r = b = l = +value || 0;\n\t}\n\n\treturn {\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\n\t};\n}\n\nfunction boundingRects(vm) {\n\tvar bounds = getBarBounds(vm);\n\tvar width = bounds.right - bounds.left;\n\tvar height = bounds.bottom - bounds.top;\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\n\n\treturn {\n\t\touter: {\n\t\t\tx: bounds.left,\n\t\t\ty: bounds.top,\n\t\t\tw: width,\n\t\t\th: height\n\t\t},\n\t\tinner: {\n\t\t\tx: bounds.left + border.l,\n\t\t\ty: bounds.top + border.t,\n\t\t\tw: width - border.l - border.r,\n\t\t\th: height - border.t - border.b\n\t\t}\n\t};\n}\n\nfunction inRange(vm, x, y) {\n\tvar skipX = x === null;\n\tvar skipY = y === null;\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\n\n\treturn bounds\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\n}\n\nvar element_rectangle = core_element.extend({\n\t_type: 'rectangle',\n\n\tdraw: function() {\n\t\tvar ctx = this._chart.ctx;\n\t\tvar vm = this._view;\n\t\tvar rects = boundingRects(vm);\n\t\tvar outer = rects.outer;\n\t\tvar inner = rects.inner;\n\n\t\tctx.fillStyle = vm.backgroundColor;\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\n\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\n\t\t\treturn;\n\t\t}\n\n\t\tctx.save();\n\t\tctx.beginPath();\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\n\t\tctx.clip();\n\t\tctx.fillStyle = vm.borderColor;\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\n\t\tctx.fill('evenodd');\n\t\tctx.restore();\n\t},\n\n\theight: function() {\n\t\tvar vm = this._view;\n\t\treturn vm.base - vm.y;\n\t},\n\n\tinRange: function(mouseX, mouseY) {\n\t\treturn inRange(this._view, mouseX, mouseY);\n\t},\n\n\tinLabelRange: function(mouseX, mouseY) {\n\t\tvar vm = this._view;\n\t\treturn isVertical(vm)\n\t\t\t? inRange(vm, mouseX, null)\n\t\t\t: inRange(vm, null, mouseY);\n\t},\n\n\tinXRange: function(mouseX) {\n\t\treturn inRange(this._view, mouseX, null);\n\t},\n\n\tinYRange: function(mouseY) {\n\t\treturn inRange(this._view, null, mouseY);\n\t},\n\n\tgetCenterPoint: function() {\n\t\tvar vm = this._view;\n\t\tvar x, y;\n\t\tif (isVertical(vm)) {\n\t\t\tx = vm.x;\n\t\t\ty = (vm.y + vm.base) / 2;\n\t\t} else {\n\t\t\tx = (vm.x + vm.base) / 2;\n\t\t\ty = vm.y;\n\t\t}\n\n\t\treturn {x: x, y: y};\n\t},\n\n\tgetArea: function() {\n\t\tvar vm = this._view;\n\n\t\treturn isVertical(vm)\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\n\t},\n\n\ttooltipPosition: function() {\n\t\tvar vm = this._view;\n\t\treturn {\n\t\t\tx: vm.x,\n\t\t\ty: vm.y\n\t\t};\n\t}\n});\n\nvar elements = {};\nvar Arc = element_arc;\nvar Line = element_line;\nvar Point = element_point;\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\n\ncore_defaults._set('bar', {\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'linear'\n\t\t}]\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tbar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\n/**\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\n * @private\n */\nfunction computeMinSampleSize(scale, pixels) {\n\tvar min = scale._length;\n\tvar prev, curr, i, ilen;\n\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\n\t}\n\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\n\t\tcurr = scale.getPixelForTick(i);\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\n\t\tprev = curr;\n\t}\n\n\treturn min;\n}\n\n/**\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\n * @private\n */\nfunction computeFitCategoryTraits(index, ruler, options) {\n\tvar thickness = options.barThickness;\n\tvar count = ruler.stackCount;\n\tvar curr = ruler.pixels[index];\n\tvar min = helpers$1.isNullOrUndef(thickness)\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\n\t\t: -1;\n\tvar size, ratio;\n\n\tif (helpers$1.isNullOrUndef(thickness)) {\n\t\tsize = min * options.categoryPercentage;\n\t\tratio = options.barPercentage;\n\t} else {\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\n\t\tsize = thickness * count;\n\t\tratio = 1;\n\t}\n\n\treturn {\n\t\tchunk: size / count,\n\t\tratio: ratio,\n\t\tstart: curr - (size / 2)\n\t};\n}\n\n/**\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\n * percentage options are 1), based on the previous and following categories. This mode\n * generates bars with different widths when data are not evenly spaced.\n * @private\n */\nfunction computeFlexCategoryTraits(index, ruler, options) {\n\tvar pixels = ruler.pixels;\n\tvar curr = pixels[index];\n\tvar prev = index > 0 ? pixels[index - 1] : null;\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\n\tvar percent = options.categoryPercentage;\n\tvar start, size;\n\n\tif (prev === null) {\n\t\t// first data: its size is double based on the next point or,\n\t\t// if it's also the last data, we use the scale size.\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n\t}\n\n\tif (next === null) {\n\t\t// last data: its size is also double based on the previous point.\n\t\tnext = curr + curr - prev;\n\t}\n\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\n\tsize = Math.abs(next - prev) / 2 * percent;\n\n\treturn {\n\t\tchunk: size / ruler.stackCount,\n\t\tratio: options.barPercentage,\n\t\tstart: start\n\t};\n}\n\nvar controller_bar = core_datasetController.extend({\n\n\tdataElementType: elements.Rectangle,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderSkipped',\n\t\t'borderWidth',\n\t\t'barPercentage',\n\t\t'barThickness',\n\t\t'categoryPercentage',\n\t\t'maxBarThickness',\n\t\t'minBarLength'\n\t],\n\n\tinitialize: function() {\n\t\tvar me = this;\n\t\tvar meta, scaleOpts;\n\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\n\n\t\tmeta = me.getMeta();\n\t\tmeta.stack = me.getDataset().stack;\n\t\tmeta.bar = true;\n\n\t\tscaleOpts = me._getIndexScale().options;\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar rects = me.getMeta().data;\n\t\tvar i, ilen;\n\n\t\tme._ruler = me.getRuler();\n\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\n\t\t\tme.updateElement(rects[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(rectangle, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar dataset = me.getDataset();\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\n\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\n\t\trectangle._datasetIndex = me.index;\n\t\trectangle._index = index;\n\t\trectangle._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderSkipped: options.borderSkipped,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\tdatasetLabel: dataset.label,\n\t\t\tlabel: me.chart.data.labels[index]\n\t\t};\n\n\t\tif (helpers$1.isArray(dataset.data[index])) {\n\t\t\trectangle._model.borderSkipped = null;\n\t\t}\n\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\n\n\t\trectangle.pivot();\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\n\t\tvar me = this;\n\t\tvar model = rectangle._model;\n\t\tvar vscale = me._getValueScale();\n\t\tvar base = vscale.getBasePixel();\n\t\tvar horizontal = vscale.isHorizontal();\n\t\tvar ruler = me._ruler || me.getRuler();\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\n\n\t\tmodel.horizontal = horizontal;\n\t\tmodel.base = reset ? base : vpixels.base;\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\n\t},\n\n\t/**\n\t * Returns the stacks based on groups and bar visibility.\n\t * @param {number} [last] - The dataset index\n\t * @returns {string[]} The list of stack IDs\n\t * @private\n\t */\n\t_getStacks: function(last) {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar stacked = scale.options.stacked;\n\t\tvar ilen = metasets.length;\n\t\tvar stacks = [];\n\t\tvar i, meta;\n\n\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\tmeta = metasets[i];\n\t\t\t// stacked | meta.stack\n\t\t\t// | found | not found | undefined\n\t\t\t// false | x | x | x\n\t\t\t// true | | x |\n\t\t\t// undefined | | x | x\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\n\t\t\t\tstacks.push(meta.stack);\n\t\t\t}\n\t\t\tif (meta.index === last) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn stacks;\n\t},\n\n\t/**\n\t * Returns the effective number of stacks based on groups and bar visibility.\n\t * @private\n\t */\n\tgetStackCount: function() {\n\t\treturn this._getStacks().length;\n\t},\n\n\t/**\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\n\t * @param {number} [datasetIndex] - The dataset index\n\t * @param {string} [name] - The stack name to find\n\t * @returns {number} The stack index\n\t * @private\n\t */\n\tgetStackIndex: function(datasetIndex, name) {\n\t\tvar stacks = this._getStacks(datasetIndex);\n\t\tvar index = (name !== undefined)\n\t\t\t? stacks.indexOf(name)\n\t\t\t: -1; // indexOf returns -1 if element is not present\n\n\t\treturn (index === -1)\n\t\t\t? stacks.length - 1\n\t\t\t: index;\n\t},\n\n\t/**\n\t * @private\n\t */\n\tgetRuler: function() {\n\t\tvar me = this;\n\t\tvar scale = me._getIndexScale();\n\t\tvar pixels = [];\n\t\tvar i, ilen;\n\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\n\t\t}\n\n\t\treturn {\n\t\t\tpixels: pixels,\n\t\t\tstart: scale._startPixel,\n\t\t\tend: scale._endPixel,\n\t\t\tstackCount: me.getStackCount(),\n\t\t\tscale: scale\n\t\t};\n\t},\n\n\t/**\n\t * Note: pixel values are not clamped to the scale area.\n\t * @private\n\t */\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar isHorizontal = scale.isHorizontal();\n\t\tvar datasets = chart.data.datasets;\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\n\t\tvar minBarLength = options.minBarLength;\n\t\tvar stacked = scale.options.stacked;\n\t\tvar stack = me.getMeta().stack;\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\n\t\tvar ilen = metasets.length;\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\n\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\timeta = metasets[i];\n\n\t\t\t\tif (imeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (imeta.stack === stack) {\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\n\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\n\t\t\t\t\t\tstart += ivalue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbase = scale.getPixelForValue(start);\n\t\thead = scale.getPixelForValue(start + length);\n\t\tsize = head - base;\n\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\n\t\t\tsize = minBarLength;\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\n\t\t\t\thead = base - minBarLength;\n\t\t\t} else {\n\t\t\t\thead = base + minBarLength;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsize: size,\n\t\t\tbase: base,\n\t\t\thead: head,\n\t\t\tcenter: head + size / 2\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\n\t\tvar me = this;\n\t\tvar range = options.barThickness === 'flex'\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\n\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n\t\tvar size = Math.min(\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\n\t\t\trange.chunk * range.ratio);\n\n\t\treturn {\n\t\t\tbase: center - size / 2,\n\t\t\thead: center + size / 2,\n\t\t\tcenter: center,\n\t\t\tsize: size\n\t\t};\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar scale = me._getValueScale();\n\t\tvar rects = me.getMeta().data;\n\t\tvar dataset = me.getDataset();\n\t\tvar ilen = rects.length;\n\t\tvar i = 0;\n\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\n\t\t\t\trects[i].draw();\n\t\t\t}\n\t\t}\n\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function() {\n\t\tvar me = this;\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\n\t\tvar indexOpts = me._getIndexScale().options;\n\t\tvar valueOpts = me._getValueScale().options;\n\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\n\n\t\treturn values;\n\t}\n\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\nvar resolve$1 = helpers$1.options.resolve;\n\ncore_defaults._set('bubble', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\n\t\t\tposition: 'bottom',\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_bubble = core_datasetController.extend({\n\t/**\n\t * @protected\n\t */\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t\t'hoverRadius',\n\t\t'hitRadius',\n\t\t'pointStyle',\n\t\t'rotation'\n\t],\n\n\t/**\n\t * @protected\n\t */\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data;\n\n\t\t// Update Points\n\t\thelpers$1.each(points, function(point, index) {\n\t\t\tme.updateElement(point, index, reset);\n\t\t});\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar data = me.getDataset().data[index];\n\t\tvar dsIndex = me.index;\n\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\n\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = dsIndex;\n\t\tpoint._index = index;\n\t\tpoint._model = {\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\thitRadius: options.hitRadius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tradius: reset ? 0 : options.radius,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t};\n\n\t\tpoint.pivot();\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = options.radius + options.hoverRadius;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDataElementOptions: function(point, index) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar custom = point.custom || {};\n\t\tvar data = dataset.data[index] || {};\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\t// In case values were cached (and thus frozen), we need to clone the values\n\t\tif (me._cachedDataOpts === values) {\n\t\t\tvalues = helpers$1.extend({}, values);\n\t\t}\n\n\t\t// Custom radius resolution\n\t\tvalues.radius = resolve$1([\n\t\t\tcustom.radius,\n\t\t\tdata.r,\n\t\t\tme._config.radius,\n\t\t\tchart.options.elements.point.radius\n\t\t], context, index);\n\n\t\treturn values;\n\t}\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\n\nvar PI$1 = Math.PI;\nvar DOUBLE_PI$1 = PI$1 * 2;\nvar HALF_PI$1 = PI$1 / 2;\n\ncore_defaults._set('doughnut', {\n\tanimation: {\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\n\t\tanimateRotate: true,\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\n\t\tanimateScale: false\n\t},\n\thover: {\n\t\tmode: 'single'\n\t},\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t// toggle visibility of index if exists\n\t\t\t\tif (meta.data[index]) {\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// The percentage of the chart that we cut out of the middle.\n\tcutoutPercentage: 50,\n\n\t// The rotation of the chart, where the first data arc begins.\n\trotation: -HALF_PI$1,\n\n\t// The total circumference of the chart.\n\tcircumference: DOUBLE_PI$1,\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(tooltipItem, data) {\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\n\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\n\t\t\t\t\t// show value on first line of multiline label\n\t\t\t\t\t// need to clone because we are changing the value\n\t\t\t\t\tdataLabel = dataLabel.slice();\n\t\t\t\t\tdataLabel[0] += value;\n\t\t\t\t} else {\n\t\t\t\t\tdataLabel += value;\n\t\t\t\t}\n\n\t\t\t\treturn dataLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_doughnut = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\n\tgetRingIndex: function(datasetIndex) {\n\t\tvar ringIndex = 0;\n\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\n\t\t\tif (this.chart.isDatasetVisible(j)) {\n\t\t\t\t++ringIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn ringIndex;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar ratioX = 1;\n\t\tvar ratioY = 1;\n\t\tvar offsetX = 0;\n\t\tvar offsetY = 0;\n\t\tvar meta = me.getMeta();\n\t\tvar arcs = meta.data;\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\n\t\tvar circumference = opts.circumference;\n\t\tvar chartWeight = me._getRingWeight(me.index);\n\t\tvar maxWidth, maxHeight, i, ilen;\n\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\n\t\tif (circumference < DOUBLE_PI$1) {\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\n\t\t\tvar endAngle = startAngle + circumference;\n\t\t\tvar startX = Math.cos(startAngle);\n\t\t\tvar startY = Math.sin(startAngle);\n\t\t\tvar endX = Math.cos(endAngle);\n\t\t\tvar endY = Math.sin(endAngle);\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\n\t\t\tratioX = (maxX - minX) / 2;\n\t\t\tratioY = (maxY - minY) / 2;\n\t\t\toffsetX = -(maxX + minX) / 2;\n\t\t\toffsetY = -(maxY + minY) / 2;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t}\n\n\t\tchart.borderWidth = me.getMaxBorderWidth();\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\n\t\tchart.offsetX = offsetX * chart.outerRadius;\n\t\tchart.offsetY = offsetY * chart.outerRadius;\n\n\t\tmeta.total = me.calculateTotal();\n\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\n\t\tvar startAngle = opts.rotation; // non reset case handled later\n\t\tvar endAngle = opts.rotation; // non reset case handled later\n\t\tvar dataset = me.getDataset();\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX + chart.offsetX,\n\t\t\t\ty: centerY + chart.offsetY,\n\t\t\t\tstartAngle: startAngle,\n\t\t\t\tendAngle: endAngle,\n\t\t\t\tcircumference: circumference,\n\t\t\t\touterRadius: outerRadius,\n\t\t\t\tinnerRadius: innerRadius,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\n\t\t\t}\n\t\t});\n\n\t\tvar model = arc._model;\n\n\t\t// Set correct angles if not resetting\n\t\tif (!reset || !animationOpts.animateRotate) {\n\t\t\tif (index === 0) {\n\t\t\t\tmodel.startAngle = opts.rotation;\n\t\t\t} else {\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\n\t\t\t}\n\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\n\t\t}\n\n\t\tarc.pivot();\n\t},\n\n\tcalculateTotal: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar total = 0;\n\t\tvar value;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tvalue = dataset.data[index];\n\t\t\tif (!isNaN(value) && !element.hidden) {\n\t\t\t\ttotal += Math.abs(value);\n\t\t\t}\n\t\t});\n\n\t\t/* if (total === 0) {\n\t\t\ttotal = NaN;\n\t\t}*/\n\n\t\treturn total;\n\t},\n\n\tcalculateCircumference: function(value) {\n\t\tvar total = this.getMeta().total;\n\t\tif (total > 0 && !isNaN(value)) {\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// gets the max border or hover width to properly scale pie charts\n\tgetMaxBorderWidth: function(arcs) {\n\t\tvar me = this;\n\t\tvar max = 0;\n\t\tvar chart = me.chart;\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\n\n\t\tif (!arcs) {\n\t\t\t// Find the outmost visible dataset\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n\t\t\t\tif (chart.isDatasetVisible(i)) {\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\t\tarcs = meta.data;\n\t\t\t\t\tif (i !== me.index) {\n\t\t\t\t\t\tcontroller = meta.controller;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!arcs) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarc = arcs[i];\n\t\t\tif (controller) {\n\t\t\t\tcontroller._configure();\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\n\t\t\t} else {\n\t\t\t\toptions = arc._options;\n\t\t\t}\n\t\t\tif (options.borderAlign !== 'inner') {\n\t\t\t\tborderWidth = options.borderWidth;\n\t\t\t\thoverWidth = options.hoverBorderWidth;\n\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\n\t\t\t}\n\t\t}\n\t\treturn max;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\n\t * @private\n\t */\n\t_getRingWeightOffset: function(datasetIndex) {\n\t\tvar ringWeightOffset = 0;\n\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\n\t\t\tif (this.chart.isDatasetVisible(i)) {\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\n\t\t\t}\n\t\t}\n\n\t\treturn ringWeightOffset;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getRingWeight: function(dataSetIndex) {\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\n\t},\n\n\t/**\n\t * Returns the sum of all visibile data set weights. This value can be 0.\n\t * @private\n\t */\n\t_getVisibleDatasetWeightTotal: function() {\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\n\t}\n});\n\ncore_defaults._set('horizontalBar', {\n\thover: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tposition: 'bottom'\n\t\t}],\n\n\t\tyAxes: [{\n\t\t\ttype: 'category',\n\t\t\tposition: 'left',\n\t\t\toffset: true,\n\t\t\tgridLines: {\n\t\t\t\toffsetGridLines: true\n\t\t\t}\n\t\t}]\n\t},\n\n\telements: {\n\t\trectangle: {\n\t\t\tborderSkipped: 'left'\n\t\t}\n\t},\n\n\ttooltips: {\n\t\tmode: 'index',\n\t\taxis: 'y'\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\thorizontalBar: {\n\t\t\tcategoryPercentage: 0.8,\n\t\t\tbarPercentage: 0.9\n\t\t}\n\t}\n});\n\nvar controller_horizontalBar = controller_bar.extend({\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.getMeta().xAxisID;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.getMeta().yAxisID;\n\t}\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\nvar resolve$2 = helpers$1.options.resolve;\nvar isPointInArea = helpers$1.canvas._isPointInArea;\n\ncore_defaults._set('line', {\n\tshowLines: true,\n\tspanGaps: false,\n\n\thover: {\n\t\tmode: 'label'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\ttype: 'category',\n\t\t\tid: 'x-axis-0'\n\t\t}],\n\t\tyAxes: [{\n\t\t\ttype: 'linear',\n\t\t\tid: 'y-axis-0'\n\t\t}]\n\t}\n});\n\nfunction scaleClip(scale, halfBorderWidth) {\n\tvar tickOpts = scale && scale.options.ticks || {};\n\tvar reverse = tickOpts.reverse;\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\n\treturn {\n\t\tstart: reverse ? max : min,\n\t\tend: reverse ? min : max\n\t};\n}\n\nfunction defaultClip(xScale, yScale, borderWidth) {\n\tvar halfBorderWidth = borderWidth / 2;\n\tvar x = scaleClip(xScale, halfBorderWidth);\n\tvar y = scaleClip(yScale, halfBorderWidth);\n\n\treturn {\n\t\ttop: y.end,\n\t\tright: x.end,\n\t\tbottom: y.start,\n\t\tleft: x.start\n\t};\n}\n\nfunction toClip(value) {\n\tvar t, r, b, l;\n\n\tif (helpers$1.isObject(value)) {\n\t\tt = value.top;\n\t\tr = value.right;\n\t\tb = value.bottom;\n\t\tl = value.left;\n\t} else {\n\t\tt = r = b = l = value;\n\t}\n\n\treturn {\n\t\ttop: t,\n\t\tright: r,\n\t\tbottom: b,\n\t\tleft: l\n\t};\n}\n\n\nvar controller_line = core_datasetController.extend({\n\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderCapStyle',\n\t\t'borderColor',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'borderWidth',\n\t\t'cubicInterpolationMode',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar options = me.chart.options;\n\t\tvar config = me._config;\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\n\t\tvar i, ilen;\n\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\n\n\t\t// Update Line\n\t\tif (showLine) {\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\t\tconfig.lineTension = config.tension;\n\t\t\t}\n\n\t\t\t// Utility\n\t\t\tline._scale = me._yScale;\n\t\t\tline._datasetIndex = me.index;\n\t\t\t// Data\n\t\t\tline._children = points;\n\t\t\t// Model\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\t\tline.pivot();\n\t\t}\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\tif (showLine && line._model.tension !== 0) {\n\t\t\tme.updateBezierControlPoints();\n\t\t}\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar datasetIndex = me.index;\n\t\tvar value = dataset.data[index];\n\t\tvar xScale = me._xScale;\n\t\tvar yScale = me._yScale;\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar x, y;\n\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\n\n\t\t// Utility\n\t\tpoint._xScale = xScale;\n\t\tpoint._yScale = yScale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = datasetIndex;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x,\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function(element) {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar custom = element.custom || {};\n\t\tvar options = me.chart.options;\n\t\tvar lineOptions = options.elements.line;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\t// The default behavior of lines is to break at null values, according\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\n\t\t// This option gives lines the ability to span gaps\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\n\n\t\treturn values;\n\t},\n\n\tcalculatePointY: function(value, index, datasetIndex) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar yScale = me._yScale;\n\t\tvar sumPos = 0;\n\t\tvar sumNeg = 0;\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\n\n\t\tif (yScale.options.stacked) {\n\t\t\trightValue = +yScale.getRightValue(value);\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\n\t\t\tilen = metasets.length;\n\n\t\t\tfor (i = 0; i < ilen; ++i) {\n\t\t\t\tdsMeta = metasets[i];\n\t\t\t\tif (dsMeta.index === datasetIndex) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\n\t\t\t\t\tif (stackedRightValue < 0) {\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (rightValue < 0) {\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\n\t\t\t}\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\n\t\t}\n\t\treturn yScale.getPixelForValue(value);\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar lineModel = meta.dataset._model;\n\t\tvar area = chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (lineModel.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\n\t\t\thelpers$1.splineCurveMonotone(points);\n\t\t} else {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\n\t\t\t\t\tmodel,\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\n\t\t\t\t\tlineModel.tension\n\t\t\t\t);\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\n\t\t\t}\n\t\t}\n\n\t\tif (chart.options.elements.line.capBezierPoints) {\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\t\tmodel = points[i]._model;\n\t\t\t\tif (isPointInArea(model, area)) {\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tdraw: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar meta = me.getMeta();\n\t\tvar points = meta.data || [];\n\t\tvar area = chart.chartArea;\n\t\tvar canvas = chart.canvas;\n\t\tvar i = 0;\n\t\tvar ilen = points.length;\n\t\tvar clip;\n\n\t\tif (me._showLine) {\n\t\t\tclip = meta.dataset._model.clip;\n\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\n\t\t\t});\n\n\t\t\tmeta.dataset.draw();\n\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\n\t\t}\n\n\t\t// Draw the points\n\t\tfor (; i < ilen; ++i) {\n\t\t\tpoints[i].draw(area);\n\t\t}\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\n\t},\n});\n\nvar resolve$3 = helpers$1.options.resolve;\n\ncore_defaults._set('polarArea', {\n\tscale: {\n\t\ttype: 'radialLinear',\n\t\tangleLines: {\n\t\t\tdisplay: false\n\t\t},\n\t\tgridLines: {\n\t\t\tcircular: true\n\t\t},\n\t\tpointLabels: {\n\t\t\tdisplay: false\n\t\t},\n\t\tticks: {\n\t\t\tbeginAtZero: true\n\t\t}\n\t},\n\n\t// Boolean - Whether to animate the rotation of the chart\n\tanimation: {\n\t\tanimateRotate: true,\n\t\tanimateScale: true\n\t},\n\n\tstartAngle: -0.5 * Math.PI,\n\tlegendCallback: function(chart) {\n\t\tvar list = document.createElement('ul');\n\t\tvar data = chart.data;\n\t\tvar datasets = data.datasets;\n\t\tvar labels = data.labels;\n\t\tvar i, ilen, listItem, listItemSpan;\n\n\t\tlist.setAttribute('class', chart.id + '-legend');\n\t\tif (datasets.length) {\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\n\t\t\t\tif (labels[i]) {\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn list.outerHTML;\n\t},\n\tlegend: {\n\t\tlabels: {\n\t\t\tgenerateLabels: function(chart) {\n\t\t\t\tvar data = chart.data;\n\t\t\t\tif (data.labels.length && data.datasets.length) {\n\t\t\t\t\treturn data.labels.map(function(label, i) {\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\ttext: label,\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\n\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\n\t\t\t\t\t\t\tindex: i\n\t\t\t\t\t\t};\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\t\t},\n\n\t\tonClick: function(e, legendItem) {\n\t\t\tvar index = legendItem.index;\n\t\t\tvar chart = this.chart;\n\t\t\tvar i, ilen, meta;\n\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\n\t\t\t\tmeta = chart.getDatasetMeta(i);\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\n\t\t\t}\n\n\t\t\tchart.update();\n\t\t}\n\t},\n\n\t// Need to override these to give a nice default\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn '';\n\t\t\t},\n\t\t\tlabel: function(item, data) {\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\n\t\t\t}\n\t\t}\n\t}\n});\n\nvar controller_polarArea = core_datasetController.extend({\n\n\tdataElementType: elements.Arc,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderColor',\n\t\t'borderWidth',\n\t\t'borderAlign',\n\t\t'hoverBackgroundColor',\n\t\t'hoverBorderColor',\n\t\t'hoverBorderWidth',\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\t\tvar start = me.chart.options.startAngle || 0;\n\t\tvar starts = me._starts = [];\n\t\tvar angles = me._angles = [];\n\t\tvar arcs = meta.data;\n\t\tvar i, ilen, angle;\n\n\t\tme._updateRadius();\n\n\t\tmeta.count = me.countVisibleElements();\n\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\n\t\t\tstarts[i] = start;\n\t\t\tangle = me._computeAngle(i);\n\t\t\tangles[i] = angle;\n\t\t\tstart += angle;\n\t\t}\n\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\n\t\t\tme.updateElement(arcs[i], i, reset);\n\t\t}\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_updateRadius: function() {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar chartArea = chart.chartArea;\n\t\tvar opts = chart.options;\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\n\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\n\t},\n\n\tupdateElement: function(arc, index, reset) {\n\t\tvar me = this;\n\t\tvar chart = me.chart;\n\t\tvar dataset = me.getDataset();\n\t\tvar opts = chart.options;\n\t\tvar animationOpts = opts.animation;\n\t\tvar scale = chart.scale;\n\t\tvar labels = chart.data.labels;\n\n\t\tvar centerX = scale.xCenter;\n\t\tvar centerY = scale.yCenter;\n\n\t\t// var negHalfPI = -0.5 * Math.PI;\n\t\tvar datasetStartAngle = opts.startAngle;\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar startAngle = me._starts[index];\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\n\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\n\t\tvar options = arc._options || {};\n\n\t\thelpers$1.extend(arc, {\n\t\t\t// Utility\n\t\t\t_datasetIndex: me.index,\n\t\t\t_index: index,\n\t\t\t_scale: scale,\n\n\t\t\t// Desired view properties\n\t\t\t_model: {\n\t\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\t\tborderColor: options.borderColor,\n\t\t\t\tborderWidth: options.borderWidth,\n\t\t\t\tborderAlign: options.borderAlign,\n\t\t\t\tx: centerX,\n\t\t\t\ty: centerY,\n\t\t\t\tinnerRadius: 0,\n\t\t\t\touterRadius: reset ? resetRadius : distance,\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\n\t\t\t}\n\t\t});\n\n\t\tarc.pivot();\n\t},\n\n\tcountVisibleElements: function() {\n\t\tvar dataset = this.getDataset();\n\t\tvar meta = this.getMeta();\n\t\tvar count = 0;\n\n\t\thelpers$1.each(meta.data, function(element, index) {\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\n\t\t\t\tcount++;\n\t\t\t}\n\t\t});\n\n\t\treturn count;\n\t},\n\n\t/**\n\t * @protected\n\t */\n\tsetHoverStyle: function(arc) {\n\t\tvar model = arc._model;\n\t\tvar options = arc._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\n\n\t\tarc.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_computeAngle: function(index) {\n\t\tvar me = this;\n\t\tvar count = this.getMeta().count;\n\t\tvar dataset = me.getDataset();\n\t\tvar meta = me.getMeta();\n\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Scriptable options\n\t\tvar context = {\n\t\t\tchart: me.chart,\n\t\t\tdataIndex: index,\n\t\t\tdataset: dataset,\n\t\t\tdatasetIndex: me.index\n\t\t};\n\n\t\treturn resolve$3([\n\t\t\tme.chart.options.elements.arc.angle,\n\t\t\t(2 * Math.PI) / count\n\t\t], context, index);\n\t}\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\ncore_defaults._set('pie', {\n\tcutoutPercentage: 0\n});\n\n// Pie charts are Doughnut chart with different defaults\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\n\ncore_defaults._set('radar', {\n\tspanGaps: false,\n\tscale: {\n\t\ttype: 'radialLinear'\n\t},\n\telements: {\n\t\tline: {\n\t\t\tfill: 'start',\n\t\t\ttension: 0 // no bezier in radar\n\t\t}\n\t}\n});\n\nvar controller_radar = core_datasetController.extend({\n\tdatasetElementType: elements.Line,\n\n\tdataElementType: elements.Point,\n\n\tlinkScales: helpers$1.noop,\n\n\t/**\n\t * @private\n\t */\n\t_datasetElementOptions: [\n\t\t'backgroundColor',\n\t\t'borderWidth',\n\t\t'borderColor',\n\t\t'borderCapStyle',\n\t\t'borderDash',\n\t\t'borderDashOffset',\n\t\t'borderJoinStyle',\n\t\t'fill'\n\t],\n\n\t/**\n\t * @private\n\t */\n\t_dataElementOptions: {\n\t\tbackgroundColor: 'pointBackgroundColor',\n\t\tborderColor: 'pointBorderColor',\n\t\tborderWidth: 'pointBorderWidth',\n\t\thitRadius: 'pointHitRadius',\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\n\t\thoverBorderColor: 'pointHoverBorderColor',\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\n\t\thoverRadius: 'pointHoverRadius',\n\t\tpointStyle: 'pointStyle',\n\t\tradius: 'pointRadius',\n\t\trotation: 'pointRotation'\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getIndexScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_getValueScaleId: function() {\n\t\treturn this.chart.scale.id;\n\t},\n\n\tupdate: function(reset) {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar line = meta.dataset;\n\t\tvar points = meta.data || [];\n\t\tvar scale = me.chart.scale;\n\t\tvar config = me._config;\n\t\tvar i, ilen;\n\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\n\t\t\tconfig.lineTension = config.tension;\n\t\t}\n\n\t\t// Utility\n\t\tline._scale = scale;\n\t\tline._datasetIndex = me.index;\n\t\t// Data\n\t\tline._children = points;\n\t\tline._loop = true;\n\t\t// Model\n\t\tline._model = me._resolveDatasetElementOptions(line);\n\n\t\tline.pivot();\n\n\t\t// Update Points\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tme.updateElement(points[i], i, reset);\n\t\t}\n\n\t\t// Update bezier control points\n\t\tme.updateBezierControlPoints();\n\n\t\t// Now pivot the point for animation\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tpoints[i].pivot();\n\t\t}\n\t},\n\n\tupdateElement: function(point, index, reset) {\n\t\tvar me = this;\n\t\tvar custom = point.custom || {};\n\t\tvar dataset = me.getDataset();\n\t\tvar scale = me.chart.scale;\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\n\t\tvar options = me._resolveDataElementOptions(point, index);\n\t\tvar lineModel = me.getMeta().dataset._model;\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\n\n\t\t// Utility\n\t\tpoint._scale = scale;\n\t\tpoint._options = options;\n\t\tpoint._datasetIndex = me.index;\n\t\tpoint._index = index;\n\n\t\t// Desired view properties\n\t\tpoint._model = {\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\n\t\t\ty: y,\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\n\t\t\t// Appearance\n\t\t\tradius: options.radius,\n\t\t\tpointStyle: options.pointStyle,\n\t\t\trotation: options.rotation,\n\t\t\tbackgroundColor: options.backgroundColor,\n\t\t\tborderColor: options.borderColor,\n\t\t\tborderWidth: options.borderWidth,\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\n\n\t\t\t// Tooltip\n\t\t\thitRadius: options.hitRadius\n\t\t};\n\t},\n\n\t/**\n\t * @private\n\t */\n\t_resolveDatasetElementOptions: function() {\n\t\tvar me = this;\n\t\tvar config = me._config;\n\t\tvar options = me.chart.options;\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\n\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\n\n\t\treturn values;\n\t},\n\n\tupdateBezierControlPoints: function() {\n\t\tvar me = this;\n\t\tvar meta = me.getMeta();\n\t\tvar area = me.chart.chartArea;\n\t\tvar points = meta.data || [];\n\t\tvar i, ilen, model, controlPoints;\n\n\t\t// Only consider points that are drawn in case the spanGaps option is used\n\t\tif (meta.dataset._model.spanGaps) {\n\t\t\tpoints = points.filter(function(pt) {\n\t\t\t\treturn !pt._model.skip;\n\t\t\t});\n\t\t}\n\n\t\tfunction capControlPoint(pt, min, max) {\n\t\t\treturn Math.max(Math.min(pt, max), min);\n\t\t}\n\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\n\t\t\tmodel = points[i]._model;\n\t\t\tcontrolPoints = helpers$1.splineCurve(\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\n\t\t\t\tmodel,\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\n\t\t\t\tmodel.tension\n\t\t\t);\n\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\n\t\t}\n\t},\n\n\tsetHoverStyle: function(point) {\n\t\tvar model = point._model;\n\t\tvar options = point._options;\n\t\tvar getHoverColor = helpers$1.getHoverColor;\n\n\t\tpoint.$previousStyle = {\n\t\t\tbackgroundColor: model.backgroundColor,\n\t\t\tborderColor: model.borderColor,\n\t\t\tborderWidth: model.borderWidth,\n\t\t\tradius: model.radius\n\t\t};\n\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\n\t}\n});\n\ncore_defaults._set('scatter', {\n\thover: {\n\t\tmode: 'single'\n\t},\n\n\tscales: {\n\t\txAxes: [{\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\n\t\t\ttype: 'linear', // scatter should not use a category axis\n\t\t\tposition: 'bottom'\n\t\t}],\n\t\tyAxes: [{\n\t\t\tid: 'y-axis-1',\n\t\t\ttype: 'linear',\n\t\t\tposition: 'left'\n\t\t}]\n\t},\n\n\ttooltips: {\n\t\tcallbacks: {\n\t\t\ttitle: function() {\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\n\t\t\t},\n\t\t\tlabel: function(item) {\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\n\t\t\t}\n\t\t}\n\t}\n});\n\ncore_defaults._set('global', {\n\tdatasets: {\n\t\tscatter: {\n\t\t\tshowLine: false\n\t\t}\n\t}\n});\n\n// Scatter charts use line controllers\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\n// the class, and so must be CamelCase in order to be correctly retrieved\n// by the controller in core.controller.js (`controllers[meta.type]`).\n\nvar controllers = {\n\tbar: controller_bar,\n\tbubble: controller_bubble,\n\tdoughnut: controller_doughnut,\n\thorizontalBar: controller_horizontalBar,\n\tline: controller_line,\n\tpolarArea: controller_polarArea,\n\tpie: controller_pie,\n\tradar: controller_radar,\n\tscatter: controller_scatter\n};\n\n/**\n * Helper function to get relative position for an event\n * @param {Event|IEvent} event - The event to get the position for\n * @param {Chart} chart - The chart\n * @returns {object} the event position\n */\nfunction getRelativePosition(e, chart) {\n\tif (e.native) {\n\t\treturn {\n\t\t\tx: e.x,\n\t\t\ty: e.y\n\t\t};\n\t}\n\n\treturn helpers$1.getRelativePosition(e, chart);\n}\n\n/**\n * Helper function to traverse all of the visible elements in the chart\n * @param {Chart} chart - the chart\n * @param {function} handler - the callback to execute for each visible item\n */\nfunction parseVisibleItems(chart, handler) {\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\n\tvar metadata, i, j, ilen, jlen, element;\n\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\n\t\tmetadata = metasets[i].data;\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\n\t\t\telement = metadata[j];\n\t\t\tif (!element._view.skip) {\n\t\t\t\thandler(element);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Helper function to get the items that intersect the event position\n * @param {ChartElement[]} items - elements to filter\n * @param {object} position - the point to be nearest to\n * @return {ChartElement[]} the nearest items\n */\nfunction getIntersectItems(chart, position) {\n\tvar elements = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (element.inRange(position.x, position.y)) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\n * @param {Chart} chart - the chart to look at elements from\n * @param {object} position - the point to be nearest to\n * @param {boolean} intersect - if true, only consider items that intersect the position\n * @param {function} distanceMetric - function to provide the distance between points\n * @return {ChartElement[]} the nearest items\n */\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\n\tvar minDistance = Number.POSITIVE_INFINITY;\n\tvar nearestItems = [];\n\n\tparseVisibleItems(chart, function(element) {\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar center = element.getCenterPoint();\n\t\tvar distance = distanceMetric(position, center);\n\t\tif (distance < minDistance) {\n\t\t\tnearestItems = [element];\n\t\t\tminDistance = distance;\n\t\t} else if (distance === minDistance) {\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\n\t\t\tnearestItems.push(element);\n\t\t}\n\t});\n\n\treturn nearestItems;\n}\n\n/**\n * Get a distance metric function for two points based on the\n * axis mode setting\n * @param {string} axis - the axis mode. x|y|xy\n */\nfunction getDistanceMetricForAxis(axis) {\n\tvar useX = axis.indexOf('x') !== -1;\n\tvar useY = axis.indexOf('y') !== -1;\n\n\treturn function(pt1, pt2) {\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n\t};\n}\n\nfunction indexMode(chart, e, options) {\n\tvar position = getRelativePosition(e, chart);\n\t// Default axis for index mode is 'x' to match old behaviour\n\toptions.axis = options.axis || 'x';\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\tvar elements = [];\n\n\tif (!items.length) {\n\t\treturn [];\n\t}\n\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\n\t\tvar element = meta.data[items[0]._index];\n\n\t\t// don't count items that are skipped (null data)\n\t\tif (element && !element._view.skip) {\n\t\t\telements.push(element);\n\t\t}\n\t});\n\n\treturn elements;\n}\n\n/**\n * @interface IInteractionOptions\n */\n/**\n * If true, only consider items that intersect the point\n * @name IInterfaceOptions#boolean\n * @type Boolean\n */\n\n/**\n * Contains interaction related functions\n * @namespace Chart.Interaction\n */\nvar core_interaction = {\n\t// Helper function for different modes\n\tmodes: {\n\t\tsingle: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar elements = [];\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\telements.push(element);\n\t\t\t\t\treturn elements;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn elements.slice(0, 1);\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.label\n\t\t * @deprecated since version 2.4.0\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\tlabel: indexMode,\n\n\t\t/**\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\n\t\t * @function Chart.Interaction.modes.index\n\t\t * @since v2.4.0\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tindex: indexMode,\n\n\t\t/**\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\n\t\t * @function Chart.Interaction.modes.dataset\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use during interaction\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tdataset: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\n\n\t\t\tif (items.length > 0) {\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\n\t\t\t}\n\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * @function Chart.Interaction.modes.x-axis\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\n\t\t * @todo remove at version 3\n\t\t * @private\n\t\t */\n\t\t'x-axis': function(chart, e) {\n\t\t\treturn indexMode(chart, e, {intersect: false});\n\t\t},\n\n\t\t/**\n\t\t * Point mode returns all elements that hit test based on the event position\n\t\t * of the event\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tpoint: function(chart, e) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\treturn getIntersectItems(chart, position);\n\t\t},\n\n\t\t/**\n\t\t * nearest mode returns the element closest to the point\n\t\t * @function Chart.Interaction.modes.intersect\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tnearest: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\toptions.axis = options.axis || 'xy';\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\n\t\t},\n\n\t\t/**\n\t\t * x mode returns the elements that hit-test at the current x coordinate\n\t\t * @function Chart.Interaction.modes.x\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\tx: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inXRange(position.x)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t},\n\n\t\t/**\n\t\t * y mode returns the elements that hit-test at the current y coordinate\n\t\t * @function Chart.Interaction.modes.y\n\t\t * @param {Chart} chart - the chart we are returning items from\n\t\t * @param {Event} e - the event we are find things at\n\t\t * @param {IInteractionOptions} options - options to use\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\n\t\t */\n\t\ty: function(chart, e, options) {\n\t\t\tvar position = getRelativePosition(e, chart);\n\t\t\tvar items = [];\n\t\t\tvar intersectsItem = false;\n\n\t\t\tparseVisibleItems(chart, function(element) {\n\t\t\t\tif (element.inYRange(position.y)) {\n\t\t\t\t\titems.push(element);\n\t\t\t\t}\n\n\t\t\t\tif (element.inRange(position.x, position.y)) {\n\t\t\t\t\tintersectsItem = true;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// If we want to trigger on an intersect and we don't have any items\n\t\t\t// that intersect the position, return nothing\n\t\t\tif (options.intersect && !intersectsItem) {\n\t\t\t\titems = [];\n\t\t\t}\n\t\t\treturn items;\n\t\t}\n\t}\n};\n\nvar extend = helpers$1.extend;\n\nfunction filterByPosition(array, position) {\n\treturn helpers$1.where(array, function(v) {\n\t\treturn v.pos === position;\n\t});\n}\n\nfunction sortByWeight(array, reverse) {\n\treturn array.sort(function(a, b) {\n\t\tvar v0 = reverse ? b : a;\n\t\tvar v1 = reverse ? a : b;\n\t\treturn v0.weight === v1.weight ?\n\t\t\tv0.index - v1.index :\n\t\t\tv0.weight - v1.weight;\n\t});\n}\n\nfunction wrapBoxes(boxes) {\n\tvar layoutBoxes = [];\n\tvar i, ilen, box;\n\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n\t\tbox = boxes[i];\n\t\tlayoutBoxes.push({\n\t\t\tindex: i,\n\t\t\tbox: box,\n\t\t\tpos: box.position,\n\t\t\thorizontal: box.isHorizontal(),\n\t\t\tweight: box.weight\n\t\t});\n\t}\n\treturn layoutBoxes;\n}\n\nfunction setLayoutDims(layouts, params) {\n\tvar i, ilen, layout;\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\n\t\tlayout = layouts[i];\n\t\t// store width used instead of chartArea.w in fitBoxes\n\t\tlayout.width = layout.horizontal\n\t\t\t? layout.box.fullWidth && params.availableWidth\n\t\t\t: params.vBoxMaxWidth;\n\t\t// store height used instead of chartArea.h in fitBoxes\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\n\t}\n}\n\nfunction buildLayoutBoxes(boxes) {\n\tvar layoutBoxes = wrapBoxes(boxes);\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n\n\treturn {\n\t\tleftAndTop: left.concat(top),\n\t\trightAndBottom: right.concat(bottom),\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\n\t\tvertical: left.concat(right),\n\t\thorizontal: top.concat(bottom)\n\t};\n}\n\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\n\nfunction updateDims(chartArea, params, layout) {\n\tvar box = layout.box;\n\tvar maxPadding = chartArea.maxPadding;\n\tvar newWidth, newHeight;\n\n\tif (layout.size) {\n\t\t// this layout was already counted for, lets first reduce old size\n\t\tchartArea[layout.pos] -= layout.size;\n\t}\n\tlayout.size = layout.horizontal ? box.height : box.width;\n\tchartArea[layout.pos] += layout.size;\n\n\tif (box.getPadding) {\n\t\tvar boxPadding = box.getPadding();\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n\t}\n\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\n\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\n\t\tchartArea.w = newWidth;\n\t\tchartArea.h = newHeight;\n\n\t\t// return true if chart area changed in layout's direction\n\t\treturn layout.horizontal ? newWidth !== chartArea.w : newHeight !== chartArea.h;\n\t}\n}\n\nfunction handleMaxPadding(chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction updatePos(pos) {\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n\t\tchartArea[pos] += change;\n\t\treturn change;\n\t}\n\tchartArea.y += updatePos('top');\n\tchartArea.x += updatePos('left');\n\tupdatePos('right');\n\tupdatePos('bottom');\n}\n\nfunction getMargins(horizontal, chartArea) {\n\tvar maxPadding = chartArea.maxPadding;\n\n\tfunction marginForPositions(positions) {\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\n\t\tpositions.forEach(function(pos) {\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n\t\t});\n\t\treturn margin;\n\t}\n\n\treturn horizontal\n\t\t? marginForPositions(['left', 'right'])\n\t\t: marginForPositions(['top', 'bottom']);\n}\n\nfunction fitBoxes(boxes, chartArea, params) {\n\tvar refitBoxes = [];\n\tvar i, ilen, layout, box, refit, changed;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\n\t\tbox.update(\n\t\t\tlayout.width || chartArea.w,\n\t\t\tlayout.height || chartArea.h,\n\t\t\tgetMargins(layout.horizontal, chartArea)\n\t\t);\n\t\tif (updateDims(chartArea, params, layout)) {\n\t\t\tchanged = true;\n\t\t\tif (refitBoxes.length) {\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\n\t\t\t\t// -> we have to refit those\n\t\t\t\trefit = true;\n\t\t\t}\n\t\t}\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\n\t\t\trefitBoxes.push(layout);\n\t\t}\n\t}\n\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\n}\n\nfunction placeBoxes(boxes, chartArea, params) {\n\tvar userPadding = params.padding;\n\tvar x = chartArea.x;\n\tvar y = chartArea.y;\n\tvar i, ilen, layout, box;\n\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\n\t\tlayout = boxes[i];\n\t\tbox = layout.box;\n\t\tif (layout.horizontal) {\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\n\t\t\tbox.top = y;\n\t\t\tbox.bottom = y + box.height;\n\t\t\tbox.width = box.right - box.left;\n\t\t\ty = box.bottom;\n\t\t} else {\n\t\t\tbox.left = x;\n\t\t\tbox.right = x + box.width;\n\t\t\tbox.top = chartArea.top;\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\n\t\t\tbox.height = box.bottom - box.top;\n\t\t\tx = box.right;\n\t\t}\n\t}\n\n\tchartArea.x = x;\n\tchartArea.y = y;\n}\n\ncore_defaults._set('global', {\n\tlayout: {\n\t\tpadding: {\n\t\t\ttop: 0,\n\t\t\tright: 0,\n\t\t\tbottom: 0,\n\t\t\tleft: 0\n\t\t}\n\t}\n});\n\n/**\n * @interface ILayoutItem\n * @prop {string} position - The position of the item in the chart layout. Possible values are\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\n * @prop {function} getPadding - Returns an object with padding on the edges\n * @prop {number} width - Width of item. Must be valid after update()\n * @prop {number} height - Height of item. Must be valid after update()\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\n */\n\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\n// It is this service's responsibility of carrying out that layout.\nvar core_layouts = {\n\tdefaults: {},\n\n\t/**\n\t * Register a box to a chart.\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\n\t * @param {Chart} chart - the chart to use\n\t * @param {ILayoutItem} item - the item to add to be layed out\n\t */\n\taddBox: function(chart, item) {\n\t\tif (!chart.boxes) {\n\t\t\tchart.boxes = [];\n\t\t}\n\n\t\t// initialize item with default values\n\t\titem.fullWidth = item.fullWidth || false;\n\t\titem.position = item.position || 'top';\n\t\titem.weight = item.weight || 0;\n\t\titem._layers = item._layers || function() {\n\t\t\treturn [{\n\t\t\t\tz: 0,\n\t\t\t\tdraw: function() {\n\t\t\t\t\titem.draw.apply(item, arguments);\n\t\t\t\t}\n\t\t\t}];\n\t\t};\n\n\t\tchart.boxes.push(item);\n\t},\n\n\t/**\n\t * Remove a layoutItem from a chart\n\t * @param {Chart} chart - the chart to remove the box from\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\n\t */\n\tremoveBox: function(chart, layoutItem) {\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n\t\tif (index !== -1) {\n\t\t\tchart.boxes.splice(index, 1);\n\t\t}\n\t},\n\n\t/**\n\t * Sets (or updates) options on the given `item`.\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\n\t * @param {ILayoutItem} item - the item to configure with the given options\n\t * @param {object} options - the new item options.\n\t */\n\tconfigure: function(chart, item, options) {\n\t\tvar props = ['fullWidth', 'position', 'weight'];\n\t\tvar ilen = props.length;\n\t\tvar i = 0;\n\t\tvar prop;\n\n\t\tfor (; i < ilen; ++i) {\n\t\t\tprop = props[i];\n\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\titem[prop] = options[prop];\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Fits boxes of the given chart into the given size by having each box measure itself\n\t * then running a fitting algorithm\n\t * @param {Chart} chart - the chart\n\t * @param {number} width - the width to fit into\n\t * @param {number} height - the height to fit into\n\t */\n\tupdate: function(chart, width, height) {\n\t\tif (!chart) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar layoutOptions = chart.options.layout || {};\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\n\n\t\tvar availableWidth = width - padding.width;\n\t\tvar availableHeight = height - padding.height;\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\n\t\tvar verticalBoxes = boxes.vertical;\n\t\tvar horizontalBoxes = boxes.horizontal;\n\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\n\t\t// Our canvas looks like the following.\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\n\t\t// B1 is the bottom axis\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\n\t\t// an error will be thrown.\n\t\t//\n\t\t// |----------------------------------------------------|\n\t\t// | T1 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t// | | | T2 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | C1 | | C2 | |\n\t\t// | | |----| |----| |\n\t\t// | | | | |\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\n\t\t// | | | | |\n\t\t// | | |----| |----| |\n\t\t// | | | C3 | | C4 | |\n\t\t// | |----|-------------------------------------|----|\n\t\t// | | | B1 | |\n\t\t// |----------------------------------------------------|\n\t\t// | B2 (Full Width) |\n\t\t// |----------------------------------------------------|\n\t\t//\n\n\t\tvar params = Object.freeze({\n\t\t\touterWidth: width,\n\t\t\touterHeight: height,\n\t\t\tpadding: padding,\n\t\t\tavailableWidth: availableWidth,\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\n\t\t\thBoxMaxHeight: availableHeight / 2\n\t\t});\n\t\tvar chartArea = extend({\n\t\t\tmaxPadding: extend({}, padding),\n\t\t\tw: availableWidth,\n\t\t\th: availableHeight,\n\t\t\tx: padding.left,\n\t\t\ty: padding.top\n\t\t}, padding);\n\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n\n\t\t// First fit vertical boxes\n\t\tfitBoxes(verticalBoxes, chartArea, params);\n\n\t\t// Then fit horizontal boxes\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\n\t\t\t// if the area changed, re-fit vertical boxes\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\n\t\t}\n\n\t\thandleMaxPadding(chartArea);\n\n\t\t// Finally place the boxes to correct coordinates\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\n\n\t\t// Move to opposite side of chart\n\t\tchartArea.x += chartArea.w;\n\t\tchartArea.y += chartArea.h;\n\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\n\n\t\tchart.chartArea = {\n\t\t\tleft: chartArea.left,\n\t\t\ttop: chartArea.top,\n\t\t\tright: chartArea.left + chartArea.w,\n\t\t\tbottom: chartArea.top + chartArea.h\n\t\t};\n\n\t\t// Finally update boxes in chartArea (radial scale for example)\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\n\t\t\tvar box = layout.box;\n\t\t\textend(box, chart.chartArea);\n\t\t\tbox.update(chartArea.w, chartArea.h);\n\t\t});\n\t}\n};\n\n/**\n * Platform fallback implementation (minimal).\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\n */\n\nvar platform_basic = {\n\tacquireContext: function(item) {\n\t\tif (item && item.canvas) {\n\t\t\t// Support for any object associated to a canvas (including a context2d)\n\t\t\titem = item.canvas;\n\t\t}\n\n\t\treturn item && item.getContext('2d') || null;\n\t}\n};\n\nvar platform_dom = \"/*\\n * DOM element rendering detection\\n * https://davidwalsh.name/detect-node-insertion\\n */\\n@keyframes chartjs-render-animation {\\n\\tfrom { opacity: 0.99; }\\n\\tto { opacity: 1; }\\n}\\n\\n.chartjs-render-monitor {\\n\\tanimation: chartjs-render-animation 0.001s;\\n}\\n\\n/*\\n * DOM element resizing detection\\n * https://github.com/marcj/css-element-queries\\n */\\n.chartjs-size-monitor,\\n.chartjs-size-monitor-expand,\\n.chartjs-size-monitor-shrink {\\n\\tposition: absolute;\\n\\tdirection: ltr;\\n\\tleft: 0;\\n\\ttop: 0;\\n\\tright: 0;\\n\\tbottom: 0;\\n\\toverflow: hidden;\\n\\tpointer-events: none;\\n\\tvisibility: hidden;\\n\\tz-index: -1;\\n}\\n\\n.chartjs-size-monitor-expand > div {\\n\\tposition: absolute;\\n\\twidth: 1000000px;\\n\\theight: 1000000px;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\\n.chartjs-size-monitor-shrink > div {\\n\\tposition: absolute;\\n\\twidth: 200%;\\n\\theight: 200%;\\n\\tleft: 0;\\n\\ttop: 0;\\n}\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\nvar CSS_PREFIX = 'chartjs-';\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\n\n/**\n * DOM event types -> Chart.js event types.\n * Note: only events with different types are mapped.\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\n */\nvar EVENT_TYPES = {\n\ttouchstart: 'mousedown',\n\ttouchmove: 'mousemove',\n\ttouchend: 'mouseup',\n\tpointerenter: 'mouseenter',\n\tpointerdown: 'mousedown',\n\tpointermove: 'mousemove',\n\tpointerup: 'mouseup',\n\tpointerleave: 'mouseout',\n\tpointerout: 'mouseout'\n};\n\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns {number} Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n\tvar value = helpers$1.getStyle(element, property);\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n\treturn matches ? Number(matches[1]) : undefined;\n}\n\n/**\n * Initializes the canvas style and render size without modifying the canvas display size,\n * since responsiveness is handled by the controller.resize() method. The config is used\n * to determine the aspect ratio to apply in case no explicit height has been specified.\n */\nfunction initCanvas(canvas, config) {\n\tvar style = canvas.style;\n\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\n\tvar renderHeight = canvas.getAttribute('height');\n\tvar renderWidth = canvas.getAttribute('width');\n\n\t// Chart.js modifies some canvas values that we want to restore on destroy\n\tcanvas[EXPANDO_KEY] = {\n\t\tinitial: {\n\t\t\theight: renderHeight,\n\t\t\twidth: renderWidth,\n\t\t\tstyle: {\n\t\t\t\tdisplay: style.display,\n\t\t\t\theight: style.height,\n\t\t\t\twidth: style.width\n\t\t\t}\n\t\t}\n\t};\n\n\t// Force canvas to display as block to avoid extra space caused by inline\n\t// elements, which would interfere with the responsive resize process.\n\t// https://github.com/chartjs/Chart.js/issues/2538\n\tstyle.display = style.display || 'block';\n\n\tif (renderWidth === null || renderWidth === '') {\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\n\t\tif (displayWidth !== undefined) {\n\t\t\tcanvas.width = displayWidth;\n\t\t}\n\t}\n\n\tif (renderHeight === null || renderHeight === '') {\n\t\tif (canvas.style.height === '') {\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\n\t\t\t// which one can be specified by the user but also by charts as default option\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\n\t\t} else {\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\n\t\t\tif (displayWidth !== undefined) {\n\t\t\t\tcanvas.height = displayHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn canvas;\n}\n\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nvar supportsEventListenerOptions = (function() {\n\tvar supports = false;\n\ttry {\n\t\tvar options = Object.defineProperty({}, 'passive', {\n\t\t\t// eslint-disable-next-line getter-return\n\t\t\tget: function() {\n\t\t\t\tsupports = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener('e', null, options);\n\t} catch (e) {\n\t\t// continue regardless of error\n\t}\n\treturn supports;\n}());\n\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\n// https://github.com/chartjs/Chart.js/issues/4287\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\n\nfunction addListener(node, type, listener) {\n\tnode.addEventListener(type, listener, eventListenerOptions);\n}\n\nfunction removeListener(node, type, listener) {\n\tnode.removeEventListener(type, listener, eventListenerOptions);\n}\n\nfunction createEvent(type, chart, x, y, nativeEvent) {\n\treturn {\n\t\ttype: type,\n\t\tchart: chart,\n\t\tnative: nativeEvent || null,\n\t\tx: x !== undefined ? x : null,\n\t\ty: y !== undefined ? y : null,\n\t};\n}\n\nfunction fromNativeEvent(event, chart) {\n\tvar type = EVENT_TYPES[event.type] || event.type;\n\tvar pos = helpers$1.getRelativePosition(event, chart);\n\treturn createEvent(type, chart, pos.x, pos.y, event);\n}\n\nfunction throttled(fn, thisArg) {\n\tvar ticking = false;\n\tvar args = [];\n\n\treturn function() {\n\t\targs = Array.prototype.slice.call(arguments);\n\t\tthisArg = thisArg || this;\n\n\t\tif (!ticking) {\n\t\t\tticking = true;\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\n\t\t\t\tticking = false;\n\t\t\t\tfn.apply(thisArg, args);\n\t\t\t});\n\t\t}\n\t};\n}\n\nfunction createDiv(cls) {\n\tvar el = document.createElement('div');\n\tel.className = cls || '';\n\treturn el;\n}\n\n// Implementation based on https://github.com/marcj/css-element-queries\nfunction createResizer(handler) {\n\tvar maxSize = 1000000;\n\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\n\t// https://github.com/chartjs/Chart.js/issues/5902\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\n\n\texpand.appendChild(createDiv());\n\tshrink.appendChild(createDiv());\n\n\tresizer.appendChild(expand);\n\tresizer.appendChild(shrink);\n\tresizer._reset = function() {\n\t\texpand.scrollLeft = maxSize;\n\t\texpand.scrollTop = maxSize;\n\t\tshrink.scrollLeft = maxSize;\n\t\tshrink.scrollTop = maxSize;\n\t};\n\n\tvar onScroll = function() {\n\t\tresizer._reset();\n\t\thandler();\n\t};\n\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\n\n\treturn resizer;\n}\n\n// https://davidwalsh.name/detect-node-insertion\nfunction watchForRender(node, handler) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\tvar proxy = expando.renderProxy = function(e) {\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\n\t\t\thandler();\n\t\t}\n\t};\n\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\taddListener(node, type, proxy);\n\t});\n\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\n\t// is removed then added back immediately (same animation frame?). Accessing the\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\n\t// https://github.com/chartjs/Chart.js/issues/4737\n\texpando.reflow = !!node.offsetParent;\n\n\tnode.classList.add(CSS_RENDER_MONITOR);\n}\n\nfunction unwatchForRender(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar proxy = expando.renderProxy;\n\n\tif (proxy) {\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\n\t\t\tremoveListener(node, type, proxy);\n\t\t});\n\n\t\tdelete expando.renderProxy;\n\t}\n\n\tnode.classList.remove(CSS_RENDER_MONITOR);\n}\n\nfunction addResizeListener(node, listener, chart) {\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\n\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\n\t\t\tvar w = container ? container.clientWidth : 0;\n\t\t\tlistener(createEvent('resize', chart));\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\n\t\t\t\t// If the container size shrank during chart resize, let's assume\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\n\t\t\t\t// events are ignored during this whole 2 resize process.\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\n\t\t\t\t// twice in a frame (potential performance issue)\n\t\t\t\tlistener(createEvent('resize', chart));\n\t\t\t}\n\t\t}\n\t}));\n\n\t// The resizer needs to be attached to the node parent, so we first need to be\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\n\twatchForRender(node, function() {\n\t\tif (expando.resizer) {\n\t\t\tvar container = node.parentNode;\n\t\t\tif (container && container !== resizer.parentNode) {\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\n\t\t\t}\n\n\t\t\t// The container size might have changed, let's reset the resizer state.\n\t\t\tresizer._reset();\n\t\t}\n\t});\n}\n\nfunction removeResizeListener(node) {\n\tvar expando = node[EXPANDO_KEY] || {};\n\tvar resizer = expando.resizer;\n\n\tdelete expando.resizer;\n\tunwatchForRender(node);\n\n\tif (resizer && resizer.parentNode) {\n\t\tresizer.parentNode.removeChild(resizer);\n\t}\n}\n\n/**\n * Injects CSS styles inline if the styles are not already present.\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the