{"version":3,"sources":["webpack:///webpack/universalModuleDefinition?5ca6*********","webpack:///stackedBar.min.js","webpack:///webpack/bootstrap 0a1eb6cfa29181d5999f?cc57*********","webpack:///./src/charts/stacked-bar.js","webpack:///./~/d3-array/build/d3-array.js?d8bc********","webpack:///./~/d3-ease/build/d3-ease.js?034c********","webpack:///./~/d3-axis/build/d3-axis.js?abd6****","webpack:///./~/d3-color/build/d3-color.js?f7c1********","webpack:///./~/d3-dispatch/build/d3-dispatch.js?a489********","webpack:///./~/d3-format/build/d3-format.js?fb4a********","webpack:///./~/d3-scale/build/d3-scale.js?7e54*******","webpack:///./~/d3-collection/build/d3-collection.js?6c84*******","webpack:///./~/d3-interpolate/build/d3-interpolate.js?f797********","webpack:///./~/d3-time/build/d3-time.js?70a1*******","webpack:///./~/d3-time-format/build/d3-time-format.js?bb40*******","webpack:///./~/d3-selection/build/d3-selection.js?6638********","webpack:///./~/d3-transition/build/d3-transition.js?07b0********","webpack:///./~/d3-timer/build/d3-timer.js?2468********","webpack:///./src/charts/helpers/exportChart.js?f69b*****","webpack:///./src/charts/helpers/colors.js?2682********","webpack:///./src/charts/helpers/constants.js?4e60******","webpack:///./src/charts/helpers/serializeWithStyles.js?b833*****","webpack:///./~/base-64/base64.js?68a6*****","webpack:///(webpack)/buildin/module.js?c3c2*****","webpack:///./~/d3-shape/build/d3-shape.js?77ca****","webpack:///./~/d3-path/build/d3-path.js?f6d5****","webpack:///./~/lodash.assign/index.js?78b4*"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","__WEBPACK_AMD_DEFINE_RESULT__","_slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","push","value","length","err","Array","isArray","Object","TypeError","require","d3Array","d3Axis","d3Color","d3Collection","d3Dispatch","d3Ease","d3Interpolate","d3Scale","d3Shape","d3Selection","assign","_require","exportChart","colorHelper","NUMBER_FORMAT","uniq","arrArg","filter","elem","pos","indexOf","_selection","each","_data","chartWidth","width","margin","left","right","chartHeight","height","top","bottom","data","cleanData","prepareData","buildScales","buildLayers","buildSVG","drawGridLines","buildAxis","drawAxis","drawStackedBar","addMouseEvents","shouldShowTooltip","svg","on","d","handleMouseOver","handleMouseOut","handleMouseMove","selectAll","handleBarsMouseOver","handleBarsMouseOut","adjustYTickLabels","selection","attr","yTickTextXOffset","yTickTextYOffset","isHorizontal","xAxis","axisBottom","xScale","ticks","xTicks","valueLabelFormat","yAxis","axisLeft","yScale","yTicks","buildContainerGroups","container","append","classed","stack3","stack","keys","stacks","dataInitial","transformedData","map","item","ret","forEach","key","layers","yMax","max","total","scaleLinear","domain","rangeRound","scaleBand","getName","padding","nice","colorScale","scaleOrdinal","range","colorSchema","getStack","categoryColorMap","reduce","memo","v","name","select","valueLabel","stackLabel","topicName","nameLabel","xAxisPadding","scale","grid","slice","enter","drawVerticalExtendedLine","drawHorizontalExtendedLine","drawHorizontalBars","series","bars","_ref","bandwidth","_ref2","isAnimated","style","transition","delay","_","animationDelays","duration","animationDuration","ease","tween","node","interpolateRound","j","interpolateNumber","t","baseLine","drawVerticalBars","_ref3","_ref4","exit","remove","getMousePosition","event","mouse","getNearestDataPoint","mouseX","adjustedMouseX","dataByValueParsed","epsilon","nearest","find","_ref5","Math","abs","getNearestDataPoint2","mouseY","adjustedMouseY","stackedArray","d1","found","values","d2","merge","e","_this","color","parentNode","darker","_this2","_getMousePosition","_getMousePosition2","dataPoint","x","y","moveTooltipOriginXY","dispatcher","originXPosition","originYPosition","_ref6","nest","rollup","entry","getValue","entries","sum","permute","tooltipThreshold","aspectRatio","percentageAxisToMaxRatio","colorSchemas","britecharts","easeQuadInOut","maxBarNumber","animationDelayStep","nameLabelFormat","dispatch","_x","arguments","filename","title","ceil","apply","global","ascendingComparator","f","ascending","pair","a","b","tickIncrement","start","stop","count","step","power","floor","log","LN10","error","pow","e10","e5","e2","tickStep","step0","step1","NaN","bisector","compare","lo","hi","mid","ascendingBisect","bisectRight","bisectLeft","pairs","array","n","cross","values0","values1","i0","i1","value0","n0","n1","descending","number","variance","valueof","delta","mean","isNaN","deviation","sqrt","extent","min","prototype","constant","identity","reverse","isFinite","sturges","LN2","histogram","xz","x0","x1","tz","threshold","shift","pop","bin","bins","thresholds","quantile","value1","freedmanDiaconis","sort","scott","median","numbers","arrays","merged","indexes","permutes","scan","xi","xj","shuffle","random","transpose","matrix","row","zip","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","defineProperty","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","sinIn","cos","halfPi","sinOut","sin","sinInOut","pi","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","bounceIn","bounceOut","b1","b0","b3","b2","b4","b6","b5","b7","b8","b9","bounceInOut","exponent","polyIn","custom","polyOut","polyInOut","PI","overshoot","backIn","s","backOut","backInOut","tau","amplitude","period","elasticIn","asin","elasticOut","elasticInOut","easeLinear","easeQuad","easeQuadIn","easeQuadOut","easeCubic","easeCubicIn","easeCubicOut","easeCubicInOut","easePoly","easePolyIn","easePolyOut","easePolyInOut","easeSin","easeSinIn","easeSinOut","easeSinInOut","easeExp","easeExpIn","easeExpOut","easeExpInOut","easeCircle","easeCircleIn","easeCircleOut","easeCircleInOut","easeBounce","easeBounceIn","easeBounceOut","easeBounceInOut","easeBack","easeBackIn","easeBackOut","easeBackInOut","easeElastic","easeElasticIn","easeElasticOut","easeElasticInOut","translateX","translateY","center","offset","round","entering","__axis","axis","orient","context","tickValues","tickArguments","format","tickFormat","spacing","tickSizeInner","tickPadding","range0","range1","position","copy","path","tick","order","tickExit","tickEnter","line","text","insert","k","transform","getAttribute","tickSizeOuter","tickSize","axisTop","axisRight","extend","parent","definition","create","Color","trim","toLowerCase","reHex3","exec","parseInt","Rgb","reHex6","rgbn","reRgbInteger","reRgbPercent","reRgbaInteger","rgba","reRgbaPercent","reHslPercent","hsla","reHslaPercent","named","hasOwnProperty","r","g","rgbConvert","o","rgb","opacity","h","l","Hsl","hslConvert","hsl","hsl2rgb","m1","m2","labConvert","Lab","Hcl","deg2rad","rgb2xyz","xyz2lab","Xn","Yn","z","Zn","lab","t3","t2","t0","lab2xyz","t1","xyz2rgb","hclConvert","atan2","rad2deg","hcl","cubehelixConvert","Cubehelix","BC_DA","ED","EB","bl","E","C","D","cubehelix","constructor","brighter","reI","reN","reP","RegExp","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","displayable","toString","Kn","A","B","cosh","sinh","Error","Dispatch","parseTypenames","typenames","types","split","type","get","set","callback","noop","concat","typename","T","that","args","formatSpecifier","specifier","FormatSpecifier","match","re","fill","align","sign","symbol","zero","comma","precision","formatTypes","defaultLocale","locale","formatLocale","formatPrefix","prefixExponent","formatDecimal","toExponential","coefficient","formatGroup","grouping","thousands","substring","join","formatNumerals","numerals","replace","formatDefault","toPrecision","out","formatPrefixAuto","formatRounded","","%","toFixed","X","toUpperCase","prefixes","newFormat","valuePrefix","prefix","valueSuffix","suffix","formatType","valueNegative","maybeSuffix","charCodeAt","decimal","group","Infinity","currency","test","percent","precisionFixed","precisionPrefix","precisionRound","formatDefaultLocale","d3Format","d3Time","d3TimeFormat","ordinal","range$$1","index","unknown","implicit","has","band","rescale","paddingInner","paddingOuter","ordinalRange","pointish","point","deinterpolateLinear","deinterpolateClamp","deinterpolate","reinterpolateClamp","reinterpolate","bimap","d0","r0","r1","polymap","source","target","interpolate","clamp","continuous","piecewise","output","input","interpolate$$1","unit","invert","map$1","linearish","pow10","powp","base","exp","logp","log10","log2","reflect","logs","pows","u","raise","quantile$1","invertExtent","quantiles","quantize","date","Date","number$1","calendar","year","month","week","day","hour","minute","second","millisecond","format$$1","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickInterval","interval","tickIntervals","durationYear","every","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","ramp","sequential","interpolator","time","timeYear","timeMonth","timeWeek","timeDay","timeHour","timeMinute","timeSecond","timeMillisecond","timeFormat","utcTime","utcYear","utcMonth","utcWeek","utcDay","utcHour","utcMinute","utcSecond","utcMillisecond","utcFormat","UTC","colors","category10","category20b","category20c","category20","cubehelix$1","interpolateCubehelixLong","warm","cool","rainbow","rainbow$1","ts","viridis","magma","inferno","plasma","scalePoint","scaleIdentity","scaleLog","scaleImplicit","scalePow","scaleSqrt","scaleQuantile","scaleQuantize","scaleThreshold","scaleTime","scaleUtc","schemeCategory10","schemeCategory20b","schemeCategory20c","schemeCategory20","interpolateCubehelixDefault","interpolateRainbow","interpolateWarm","interpolateCool","interpolateViridis","interpolateMagma","interpolateInferno","interpolatePlasma","scaleSequential","Map","object","createObject","setObject","createMap","setMap","map$$1","Set","add","property","clear","size","empty","depth","createResult","setResult","sortValues","keyValue","valuesByKey","result","sortKey","sortKeys","proto","basis","v0","v1","v2","v3","exponential","hue","gamma","nogamma","rgbSpline","spline","color$$1","one","parseCss","cssNode","document","createElement","cssRoot","documentElement","cssView","defaultView","getComputedStyle","appendChild","getPropertyValue","removeChild","decompose","parseSvg","svgNode","createElementNS","setAttribute","baseVal","consolidate","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","q","rotate","skewX","scaleX","scaleY","tanh","hsl$1","hue$$1","end","lab$1","hcl$1","cubehelixGamma","cubehelix$$1","basis$1","basisClosed","rgb$1","rgbGamma","rgb$$1","rgbBasis","rgbBasisClosed","nb","na","setTime","reA","reB","string","am","bm","bs","bi","lastIndex","valueOf","degrees","atan","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","rho2","rho4","epsilon2","zoom","p0","p1","S","ux0","uy0","w0","ux1","uy1","w1","dx","dy","coshr0","hsl$2","hslLong","hcl$2","hclLong","cubehelix$2","cubehelixLong","samples","interpolateArray","interpolateBasis","interpolateBasisClosed","interpolateDate","interpolateObject","interpolateString","interpolateZoom","interpolateRgb","interpolateRgbBasis","interpolateRgbBasisClosed","interpolateHsl","interpolateHslLong","interpolateLab","interpolateHcl","interpolateHclLong","interpolateCubehelix","newInterval","floori","offseti","field","weekday","setDate","getDate","getDay","setHours","getTimezoneOffset","utcWeekday","setUTCDate","getUTCDate","getUTCDay","setUTCHours","milliseconds","getUTCSeconds","seconds","getMinutes","minutes","getHours","hours","days","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","setMonth","getMonth","getFullYear","months","setFullYear","years","setUTCSeconds","getUTCMinutes","utcMinutes","setUTCMinutes","getUTCHours","utcHours","utcDays","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","setUTCMonth","getUTCMonth","getUTCFullYear","utcMonths","setUTCFullYear","utcYears","timeInterval","timeMilliseconds","utcMilliseconds","timeSeconds","utcSeconds","timeMinutes","timeHours","timeDays","timeWeeks","timeSunday","timeSundays","timeMonday","timeMondays","timeTuesday","timeTuesdays","timeWednesday","timeWednesdays","timeThursday","timeThursdays","timeFriday","timeFridays","timeSaturday","timeSaturdays","timeMonths","timeYears","utcWeeks","localDate","H","M","L","utcDate","newYear","formats","pad","pads","charAt","newParse","newDate","parseSpecifier","w","W","U","Z","parses","parsePeriod","periodRe","periodLookup","parseShortWeekday","shortWeekdayRe","shortWeekdayLookup","parseWeekday","weekdayRe","weekdayLookup","parseShortMonth","shortMonthRe","shortMonthLookup","parseMonth","monthRe","monthLookup","parseLocaleDateTime","locale_dateTime","parseLocaleDate","locale_date","parseLocaleTime","locale_time","formatShortWeekday","locale_shortWeekdays","formatWeekday","locale_weekdays","formatShortMonth","locale_shortMonths","locale_months","formatPeriod","locale_periods","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCPeriod","dateTime","periods","shortDays","shortMonths","formatRe","formatLookup","formatDayOfMonth","formatHour24","I","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatSeconds","formatWeekNumberSunday","formatWeekdayNumber","formatWeekNumberMonday","Y","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekNumberSunday","formatUTCWeekdayNumber","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parseDayOfMonth","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseSeconds","parseWeekNumberSunday","parseWeekdayNumber","parseWeekNumberMonday","parseYear","parseFullYear","parseZone","parseLiteralPercent","utcParse","requote","requoteRe","names","numberRe","percentRe","getMilliseconds","getSeconds","getUTCMilliseconds","locale$1","timeParse","formatIsoNative","toISOString","parseIsoNative","-","0","isoSpecifier","formatIso","parseIso","timeFormatDefaultLocale","timeFormatLocale","isoFormat","isoParse","creatorInherit","ownerDocument","uri","namespaceURI","xhtml","creatorFixed","fullname","space","local","Local","nextId","filterContextListener","listener","contextListener","related","relatedTarget","compareDocumentPosition","event1","event0","__data__","onRemove","__on","removeEventListener","capture","onAdd","wrap","filterEvents","addEventListener","customEvent","sourceEvent","none","EnterNode","datum","_next","_parent","bindIndex","update","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyPrefix","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","propertyRemove","propertyConstant","propertyFunction","classArray","classList","ClassList","_node","_names","classedAdd","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","nextSibling","lower","previousSibling","insertBefore","firstChild","constantNull","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","Selection","groups","parents","_groups","_parents","namespaces","xlink","xml","xmlns","namespace","creator","matcher","selector","matches","element","vendorMatches","webkitMatchesSelector","msMatchesSelector","mozMatchesSelector","oMatchesSelector","matcher$1","element$1","mouseenter","mouseleave","selection_on","current","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","changedTouches","querySelector","selection_select","subgroups","subnode","subgroup","selectorAll","querySelectorAll","selection_selectAll","selection_filter","sparse","selection_enter","_enter","child","selection_data","bind","enterGroup","updateGroup","exitGroup","previous","_exit","selection_exit","selection_merge","groups0","groups1","m0","merges","group0","group1","selection_order","selection_sort","compareNode","sortgroups","sortgroup","selection_call","selection_nodes","nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","getAttributeNS","selection_style","selection_property","splice","contains","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","before","selection_remove","selection_datum","selection_dispatch","html","touch","touches","identifier","points","d3Timer","init","schedule","__transition","state","CREATED","STARTING","self","elapsed","SCHEDULED","timer","restart","schedules","STARTED","timeout","RUNNING","ENDED","ENDING","tweenRemove","tween0","tween1","tweenFunction","tweenValue","_id","value00","interpolate0","value10","attrTweenNS","_value","attrTween","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","onFunction","on0","on1","sit","removeFunction","styleRemoveEnd","styleTween","Transition","_name","newId","inherit","timing","defaultTiming","now","emptyOn","emptyTween","interrupt","active","selection_interrupt","transition_tween","transition_attr","transition_attrTween","transition_delay","transition_duration","transition_ease","transition_filter","transition_merge","transition_on","transition_remove","transition_select","transition_selectAll","children","transition_selection","transition_style","transition_styleTween","transition_text","transition_transition","id0","id1","selection_prototype","selection_transition","clockNow","setFrame","clearNow","clock","clockSkew","Timer","_call","_time","timerFlush","frame","taskHead","wake","clockLast","nap","poke","pokeDelay","taskTail","sleep","clearTimeout","setTimeout","clearInterval","setInterval","performance","requestAnimationFrame","timeout$1","interval$1","d3svg","img","createImage","convertSvgToHtml","onload","handleImageLoad","createCanvas","addBackground","config","styleBackgroundString","serializer","serializeWithStyles","initializeSerializer","formatHtmlByBrowser","prependTitle","canvas","svgHtml","Image","src","imageSourceBase","b64EncodeUnicode","drawImageOnCanvas","image","getContext","drawImage","downloadCanvas","defaultFilename","extensionType","url","toDataURL","link","href","download","body","click","navigator","userAgent","search","constants","lineGradientId","preventDefault","svgWidth","titleTopOffset","titleFontFamily","titleFontSize","encoder","btoa","encode","str","encodeURIComponent","String","fromCharCode","styleClass","chartBackground","britechartGradients","greenBlue","orangePink","bluePurple","blueGreen","aloeGreen","colorSchemasHuman","singleColors","colorGradients","colorGradientsHuman","axisTimeCombinations","MINUTE_HOUR","HOUR_DAY","DAY_MONTH","MONTH_YEAR","timeBenchmarks","ONE_AND_A_HALF_YEARS","ONE_YEAR","ONE_DAY","computeDefaultStyleByTagName","tagName","defaultStyle","computedStyle","getDefaultStyleByTagName","defaultStylesByTagName","cssTexts","elements","nodeType","Node","ELEMENT_NODE","el","noStyleTags","cssText","cssPropName","outerHTML","BASE","HEAD","HTML","META","NOFRAME","NOSCRIPT","PARAM","SCRIPT","STYLE","TITLE","tagNames","freeExports","freeGlobal","InvalidCharacterError","message","TABLE","REGEX_SPACE_CHARACTERS","decode","bitStorage","buffer","bitCounter","base64","version","webpackPolyfill","deprecate","paths","d3Path","acos","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","y0","y1","x2","y2","x3","y3","x10","y10","x32","y32","cornerTangents","rc","cw","x01","y01","ox","oy","x11","y11","x00","y00","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","Linear","_context","Radial","curve","_curve","curveRadial","radial","lineRadial","angle","radius","linkSource","linkTarget","argv","x$$1","y$$1","curveHorizontal","moveTo","bezierCurveTo","curveVertical","curveRadial$1","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","_x0","_x1","_y0","_y1","Basis","BasisClosed","BasisOpen","Bundle","beta","_basis","_beta","point$1","_k","_x2","_y2","Cardinal","tension","CardinalClosed","CardinalOpen","point$2","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","alpha","_alpha","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","s0","s1","slope2","point$3","MonotoneX","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","controlPoints","Step","_t","stepBefore","stepAfter","stackValue","arc","a0","a1","da","a01","a11","a00","a10","da0","da1","ap","rp","padRadius","cornerRadius","rc0","rc1","oc","ax","ay","bx","by","kc","lc","lineTo","closePath","centroid","areaStart","_line","areaEnd","lineStart","_point","lineEnd","curveLinear","defined0","defined","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","pie","arcs","pa","curveRadialLinear","lineRadial$1","areaRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","circle","draw","tan30","tan30_2","diamond","ka","kr","kx","ky","star","square","sqrt3","triangle","wye","symbols","_x3","_x4","_y3","_y4","basisOpen","_y","bundle","cardinal","_x5","_y5","cardinalClosed","cardinalOpen","x23","y23","catmullRom","catmullRomClosed","catmullRomOpen","linearClosed","_t0","px","py","natural","none$1","oz","kz","sz","sij","ki","si","expand","diverging","yp","yn","silhouette","wiggle","s2","sij0","sij1","s3","sk","skj0","skj1","sums","descending$1","insideOut","tops","bottoms","radialArea","radialLine","symbolCircle","symbolCross","symbolDiamond","symbolSquare","symbolStar","symbolTriangle","symbolWye","curveBasisClosed","curveBasisOpen","curveBasis","curveBundle","curveCardinalClosed","curveCardinalOpen","curveCardinal","curveCatmullRomClosed","curveCatmullRomOpen","curveCatmullRom","curveLinearClosed","curveMonotoneX","curveMonotoneY","curveNatural","curveStep","curveStepAfter","curveStepBefore","stackOffsetExpand","stackOffsetDiverging","stackOffsetNone","stackOffsetSilhouette","stackOffsetWiggle","stackOrderAscending","stackOrderDescending","stackOrderInsideOut","stackOrderNone","stackOrderReverse","Path","tauEpsilon","quadraticCurveTo","arcTo","x21","y21","l01_2","x20","y20","l21_2","l20_2","l21","l01","t01","t21","ccw","func","thisArg","baseTimes","iteratee","overArg","arg","arrayLikeKeys","inherited","isArguments","skipIndexes","isIndex","assignValue","objValue","eq","baseKeys","isPrototype","nativeKeys","baseRest","nativeMax","otherArgs","copyObject","props","customizer","newValue","createAssigner","assigner","sources","guard","isIterateeCall","MAX_SAFE_INTEGER","reIsUint","isObject","isArrayLike","Ctor","objectProto","other","isArrayLikeObject","propertyIsEnumerable","objectToString","argsTag","isLength","isFunction","isObjectLike","tag","funcTag","genTag","nonEnumShadows"],"mappings":"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","file":"stackedBar.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"stackedBar\"] = factory();\n\telse\n\t\troot[\"britecharts\"] = root[\"britecharts\"] || {}, root[\"britecharts\"][\"stackedBar\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"stackedBar\"] = factory();\n\telse\n\t\troot[\"britecharts\"] = root[\"britecharts\"] || {}, root[\"britecharts\"][\"stackedBar\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\t 'use strict';\n\t\n\t var d3Array = __webpack_require__(1);\n\t var d3Axis = __webpack_require__(3);\n\t var d3Color = __webpack_require__(4);\n\t var d3Collection = __webpack_require__(8);\n\t var d3Dispatch = __webpack_require__(5);\n\t var d3Ease = __webpack_require__(2);\n\t var d3Interpolate = __webpack_require__(9);\n\t var d3Scale = __webpack_require__(7);\n\t var d3Shape = __webpack_require__(24);\n\t var d3Selection = __webpack_require__(12);\n\t var assign = __webpack_require__(28);\n\t var d3Transition = __webpack_require__(13);\n\t\n\t var _require = __webpack_require__(16),\n\t exportChart = _require.exportChart;\n\t\n\t var colorHelper = __webpack_require__(17);\n\t var NUMBER_FORMAT = ',f';\n\t var uniq = function uniq(arrArg) {\n\t return arrArg.filter(function (elem, pos, arr) {\n\t return arr.indexOf(elem) == pos;\n\t });\n\t };\n\t\n\t /**\n\t * @typdef D3Layout\n\t * @type function\n\t */\n\t\n\t /**\n\t * @typedef stackedBarData\n\t * @type {Object}\n\t * @property {Object[]} data All data entries\n\t * @property {String} name Name of the entry\n\t * @property {String} stack Stack of the entry\n\t * @property {Number} value Value of the entry\n\t *\n\t * @example\n\t * {\n\t * 'data': [\n\t * {\n\t * \"name\": \"2011-01\",\n\t * \"stack\": \"Direct\",\n\t * \"value\": 0\n\t * }\n\t * ]\n\t * }\n\t */\n\t\n\t /**\n\t * Stacked Area Chart reusable API module that allows us\n\t * rendering a multi area and configurable chart.\n\t *\n\t * @module Stacked-bar\n\t * @tutorial stacked-bar\n\t * @requires d3-array, d3-axis, d3-color, d3-collection, d3-dispatch, d3-ease,\n\t * d3-interpolate, d3-scale, d3-shape, d3-selection, lodash assign\n\t *\n\t * @example\n\t * let stackedBar = stackedBar();\n\t *\n\t * stackedBar\n\t * .width(containerWidth);\n\t *\n\t * d3Selection.select('.css-selector')\n\t * .datum(dataset.data)\n\t * .call(stackedBar);\n\t *\n\t */\n\t return function module() {\n\t\n\t var margin = {\n\t top: 40,\n\t right: 30,\n\t bottom: 60,\n\t left: 70\n\t },\n\t width = 960,\n\t height = 500,\n\t xScale = void 0,\n\t xAxis = void 0,\n\t yScale = void 0,\n\t yAxis = void 0,\n\t aspectRatio = null,\n\t yTickTextYOffset = -8,\n\t yTickTextXOffset = -20,\n\t yTicks = 5,\n\t xTicks = 5,\n\t percentageAxisToMaxRatio = 1,\n\t colorSchema = colorHelper.colorSchemas.britecharts,\n\t colorScale = void 0,\n\t categoryColorMap = void 0,\n\t layers = void 0,\n\t ease = d3Ease.easeQuadInOut,\n\t isHorizontal = false,\n\t svg = void 0,\n\t chartWidth = void 0,\n\t chartHeight = void 0,\n\t data = void 0,\n\t transformedData = void 0,\n\t stacks = void 0,\n\t tooltipThreshold = 480,\n\t baseLine = void 0,\n\t xAxisPadding = {\n\t top: 0,\n\t left: 0,\n\t bottom: 0,\n\t right: 0\n\t },\n\t maxBarNumber = 8,\n\t animationDelayStep = 20,\n\t animationDelays = d3Array.range(animationDelayStep, maxBarNumber * animationDelayStep, animationDelayStep),\n\t animationDuration = 1000,\n\t grid = null,\n\t nameLabel = 'name',\n\t valueLabel = 'value',\n\t stackLabel = 'stack',\n\t nameLabelFormat = void 0,\n\t valueLabelFormat = NUMBER_FORMAT,\n\t\n\t\n\t // getters\n\t getName = function getName(data) {\n\t return data[nameLabel];\n\t },\n\t getValue = function getValue(data) {\n\t return data[valueLabel];\n\t },\n\t getStack = function getStack(data) {\n\t return data[stackLabel];\n\t },\n\t isAnimated = false,\n\t\n\t\n\t // events\n\t dispatcher = d3Dispatch.dispatch('customMouseOver', 'customMouseOut', 'customMouseMove');\n\t\n\t /**\n\t * This function creates the graph using the selection and data provided\n\t * @param {D3Selection} _selection A d3 selection that represents\n\t * the container(s) where the chart(s) will be rendered\n\t * @param {stackedBarData} _data The data to attach and generate the chart\n\t */\n\t function exports(_selection) {\n\t _selection.each(function (_data) {\n\t chartWidth = width - margin.left - margin.right;\n\t chartHeight = height - margin.top - margin.bottom;\n\t data = cleanData(_data);\n\t\n\t prepareData(data);\n\t buildScales();\n\t buildLayers();\n\t buildSVG(this);\n\t drawGridLines();\n\t buildAxis();\n\t drawAxis();\n\t drawStackedBar();\n\t addMouseEvents();\n\t });\n\t }\n\t\n\t /**\n\t * Adds events to the container group if the environment is not mobile\n\t * Adding: mouseover, mouseout and mousemove\n\t */\n\t function addMouseEvents() {\n\t if (shouldShowTooltip()) {\n\t svg.on('mouseover', function (d) {\n\t handleMouseOver(this, d);\n\t }).on('mouseout', function (d) {\n\t handleMouseOut(this, d);\n\t }).on('mousemove', function (d) {\n\t handleMouseMove(this, d);\n\t });\n\t }\n\t\n\t svg.selectAll('.bar').on('mouseover', handleBarsMouseOver).on('mouseout', handleBarsMouseOut);\n\t }\n\t\n\t /**\n\t * Adjusts the position of the y axis' ticks\n\t * @param {D3Selection} selection Y axis group\n\t * @return void\n\t */\n\t function adjustYTickLabels(selection) {\n\t selection.selectAll('.tick text').attr('transform', 'translate(' + yTickTextXOffset + ', ' + yTickTextYOffset + ')');\n\t }\n\t\n\t /**\n\t * Creates the d3 x and y axis, setting orientations\n\t * @private\n\t */\n\t function buildAxis() {\n\t if (isHorizontal) {\n\t xAxis = d3Axis.axisBottom(xScale).ticks(xTicks, valueLabelFormat);\n\t yAxis = d3Axis.axisLeft(yScale);\n\t } else {\n\t xAxis = d3Axis.axisBottom(xScale);\n\t yAxis = d3Axis.axisLeft(yScale).ticks(yTicks, valueLabelFormat);\n\t }\n\t }\n\t\n\t /**\n\t * Builds containers for the chart, the axis and a wrapper for all of them\n\t * NOTE: The order of drawing of this group elements is really important,\n\t * as everything else will be drawn on top of them\n\t * @private\n\t */\n\t function buildContainerGroups() {\n\t var container = svg.append('g').classed('container-group', true).attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\n\t\n\t container.append('g').classed('x-axis-group', true).append('g').classed('x axis', true);\n\t container.selectAll('.x-axis-group').append('g').classed('month-axis', true);\n\t container.append('g').classed('y-axis-group axis', true);\n\t container.append('g').classed('grid-lines-group', true);\n\t container.append('g').classed('chart-group', true);\n\t container.append('g').classed('metadata-group', true);\n\t }\n\t\n\t /**\n\t * Builds the stacked layers layout\n\t * @return {D3Layout} Layout for drawing the chart\n\t * @private\n\t */\n\t function buildLayers() {\n\t var stack3 = d3Shape.stack().keys(stacks),\n\t dataInitial = transformedData.map(function (item) {\n\t var ret = {};\n\t\n\t stacks.forEach(function (key) {\n\t ret[key] = item[key];\n\t });\n\t\n\t return assign({}, item, ret);\n\t });\n\t\n\t layers = stack3(dataInitial);\n\t }\n\t\n\t /**\n\t * Creates the x, y and color scales of the chart\n\t * @private\n\t */\n\t function buildScales() {\n\t var yMax = d3Array.max(transformedData.map(function (d) {\n\t return d.total;\n\t }));\n\t\n\t if (isHorizontal) {\n\t xScale = d3Scale.scaleLinear().domain([0, yMax]).rangeRound([0, chartWidth - 1]);\n\t // 1 pix for edge tick\n\t\n\t yScale = d3Scale.scaleBand().domain(data.map(getName)).rangeRound([chartHeight, 0]).padding(0.1);\n\t } else {\n\t xScale = d3Scale.scaleBand().domain(data.map(getName)).rangeRound([0, chartWidth]).padding(0.1);\n\t\n\t yScale = d3Scale.scaleLinear().domain([0, yMax]).rangeRound([chartHeight, 0]).nice();\n\t }\n\t\n\t colorScale = d3Scale.scaleOrdinal().range(colorSchema).domain(data.map(getStack));\n\t\n\t categoryColorMap = colorScale.domain(data.map(getName)).domain().reduce(function (memo, item) {\n\t data.forEach(function (v) {\n\t if (getName(v) === item) {\n\t memo[v.name] = colorScale(v.stack);\n\t memo[v.stack] = colorScale(v.stack);\n\t memo[v.stack + item] = colorScale(v.stack);\n\t }\n\t });\n\t return memo;\n\t }, {});\n\t }\n\t\n\t /**\n\t * @param {HTMLElement} container DOM element that will work as the container of the graph\n\t * @private\n\t */\n\t function buildSVG(container) {\n\t if (!svg) {\n\t svg = d3Selection.select(container).append('svg').classed('britechart stacked-bar', true);\n\t\n\t buildContainerGroups();\n\t }\n\t\n\t svg.attr('width', width).attr('height', height);\n\t }\n\t\n\t /**\n\t * Parses dates and values into JS Date objects and numbers\n\t * @param {obj} data Raw data from JSON file\n\t * @return {obj} Parsed data with values and dates\n\t */\n\t function cleanData(data) {\n\t return data.map(function (d) {\n\t d.value = +d[valueLabel];\n\t d.stack = d[stackLabel];\n\t d.topicName = getStack(d); // for tooltip\n\t d.name = d[nameLabel];\n\t\n\t return d;\n\t });\n\t }\n\t\n\t /**\n\t * Draws the x and y axis on the svg object within their\n\t * respective groups\n\t * @private\n\t */\n\t function drawAxis() {\n\t if (isHorizontal) {\n\t svg.select('.x-axis-group .axis.x').attr('transform', 'translate( 0, ' + chartHeight + ' )').call(xAxis);\n\t\n\t svg.select('.y-axis-group.axis').attr('transform', 'translate( ' + -xAxisPadding.left + ', 0)').call(yAxis);\n\t } else {\n\t svg.select('.x-axis-group .axis.x').attr('transform', 'translate( 0, ' + chartHeight + ' )').call(xAxis);\n\t\n\t svg.select('.y-axis-group.axis').attr('transform', 'translate( ' + -xAxisPadding.left + ', 0)').call(yAxis).call(adjustYTickLabels);\n\t }\n\t }\n\t\n\t /**\n\t * Draws grid lines on the background of the chart\n\t * @return void\n\t */\n\t function drawGridLines() {\n\t var scale = isHorizontal ? xScale : yScale;\n\t\n\t if (grid === 'horizontal' || grid === 'full') {\n\t svg.select('.grid-lines-group').selectAll('line.horizontal-grid-line').data(scale.ticks(yTicks).slice(1)).enter().append('line').attr('class', 'horizontal-grid-line').attr('x1', -xAxisPadding.left + 1).attr('x2', chartWidth).attr('y1', function (d) {\n\t return yScale(d);\n\t }).attr('y2', function (d) {\n\t return yScale(d);\n\t });\n\t }\n\t\n\t if (grid === 'vertical' || grid === 'full') {\n\t svg.select('.grid-lines-group').selectAll('line.vertical-grid-line').data(scale.ticks(xTicks).slice(1)).enter().append('line').attr('class', 'vertical-grid-line').attr('y1', 0).attr('y2', chartHeight).attr('x1', function (d) {\n\t return xScale(d);\n\t }).attr('x2', function (d) {\n\t return xScale(d);\n\t });\n\t }\n\t\n\t if (isHorizontal) {\n\t drawVerticalExtendedLine();\n\t } else {\n\t drawHorizontalExtendedLine();\n\t }\n\t }\n\t\n\t /**\n\t * Draws the bars along the x axis\n\t * @param {D3Selection} bars Selection of bars\n\t * @return {void}\n\t */\n\t function drawHorizontalBars(series) {\n\t // Enter + Update\n\t var context = void 0,\n\t bars = series.data(layers).enter().append('g').classed('layer', true).attr('fill', function (_ref) {\n\t var key = _ref.key;\n\t return categoryColorMap[key];\n\t }).selectAll('.bar').data(function (d) {\n\t return d;\n\t }).enter().append('rect').classed('bar', true).attr('x', function (d) {\n\t return xScale(d[0]);\n\t }).attr('y', function (d) {\n\t return yScale(d.data.key);\n\t }).attr('height', yScale.bandwidth()).attr('fill', function (_ref2) {\n\t var data = _ref2.data;\n\t return categoryColorMap[data.stack + data.key];\n\t });\n\t\n\t if (isAnimated) {\n\t bars.style('opacity', 0.24).transition().delay(function (_, i) {\n\t return animationDelays[i];\n\t }).duration(animationDuration).ease(ease).tween('attr.width', function (d) {\n\t var node = d3Selection.select(this),\n\t i = d3Interpolate.interpolateRound(0, xScale(d[1] - d[0])),\n\t j = d3Interpolate.interpolateNumber(0, 1);\n\t\n\t return function (t) {\n\t node.attr('width', i(t));\n\t node.style('opacity', j(t));\n\t };\n\t });\n\t } else {\n\t bars.attr('width', function (d) {\n\t return xScale(d[1] - d[0]);\n\t });\n\t }\n\t }\n\t\n\t /**\n\t * Draws a vertical line to extend x-axis till the edges\n\t * @return {void}\n\t */\n\t function drawHorizontalExtendedLine() {\n\t baseLine = svg.select('.grid-lines-group').selectAll('line.extended-x-line').data([0]).enter().append('line').attr('class', 'extended-x-line').attr('x1', xAxisPadding.left).attr('x2', chartWidth).attr('y1', chartHeight).attr('y2', chartHeight);\n\t }\n\t\n\t /**\n\t * Draws the bars along the y axis\n\t * @param {D3Selection} bars Selection of bars\n\t * @return {void}\n\t */\n\t function drawVerticalBars(series) {\n\t // Enter + Update\n\t var bars = series.data(layers).enter().append('g').classed('layer', true).attr('fill', function (_ref3) {\n\t var key = _ref3.key;\n\t return categoryColorMap[key];\n\t }).selectAll('.bar').data(function (d) {\n\t return d;\n\t }).enter().append('rect').classed('bar', true).attr('x', function (d) {\n\t return xScale(d.data.key);\n\t }).attr('y', function (d) {\n\t return yScale(d[1]);\n\t }).attr('width', xScale.bandwidth).attr('fill', function (_ref4) {\n\t var data = _ref4.data;\n\t return categoryColorMap[data.stack + data.key];\n\t }),\n\t context = void 0;\n\t\n\t if (isAnimated) {\n\t bars.style('opacity', 0.24).transition().delay(function (_, i) {\n\t return animationDelays[i];\n\t }).duration(animationDuration).ease(ease).tween('attr.height', function (d) {\n\t var node = d3Selection.select(this),\n\t i = d3Interpolate.interpolateRound(0, yScale(d[0]) - yScale(d[1])),\n\t j = d3Interpolate.interpolateNumber(0, 1);\n\t\n\t return function (t) {\n\t node.attr('height', i(t));\n\t node.style('opacity', j(t));\n\t };\n\t });\n\t } else {\n\t bars.attr('height', function (d) {\n\t return yScale(d[0]) - yScale(d[1]);\n\t });\n\t }\n\t }\n\t\n\t /**\n\t * Draws a vertical line to extend y-axis till the edges\n\t * @return {void}\n\t */\n\t function drawVerticalExtendedLine() {\n\t baseLine = svg.select('.grid-lines-group').selectAll('line.extended-y-line').data([0]).enter().append('line').attr('class', 'extended-y-line').attr('y1', xAxisPadding.bottom).attr('y2', chartHeight).attr('x1', 0).attr('x2', 0);\n\t }\n\t\n\t /**\n\t * Draws the different areas into the chart-group element\n\t * @private\n\t */\n\t function drawStackedBar() {\n\t var series = svg.select('.chart-group').selectAll('.layer');\n\t\n\t if (isHorizontal) {\n\t drawHorizontalBars(series);\n\t } else {\n\t drawVerticalBars(series);\n\t }\n\t // Exit\n\t series.exit().transition().style('opacity', 0).remove();\n\t }\n\t\n\t /**\n\t * Extract X position on the chart from a given mouse event\n\t * @param {obj} event D3 mouse event\n\t * @return {Number} Position on the x axis of the mouse\n\t * @private\n\t */\n\t function getMousePosition(event) {\n\t return d3Selection.mouse(event);\n\t }\n\t\n\t /**\n\t * Finds out the data entry that is closer to the given position on pixels\n\t * @param {Number} mouseX X position of the mouse\n\t * @return {obj} Data entry that is closer to that x axis position\n\t */\n\t function getNearestDataPoint(mouseX) {\n\t var adjustedMouseX = mouseX - margin.left,\n\t dataByValueParsed = transformedData.map(function (item) {\n\t item.key = item.key;\n\t return item;\n\t }),\n\t epsilon = void 0,\n\t nearest = void 0;\n\t\n\t epsilon = xScale(dataByValueParsed[1].key) - xScale(dataByValueParsed[0].key);\n\t nearest = dataByValueParsed.find(function (_ref5) {\n\t var key = _ref5.key;\n\t return Math.abs(xScale(key) - adjustedMouseX) <= epsilon;\n\t });\n\t\n\t return nearest;\n\t }\n\t\n\t /**\n\t * Finds out the data entry that is closer to the given position on pixels\n\t * @param {Number} mouseY Y position of the mouse\n\t * @return {obj} Data entry that is closer to that y axis position\n\t */\n\t\n\t function getNearestDataPoint2(mouseY) {\n\t var adjustedMouseY = mouseY - margin.bottom,\n\t epsilon = yScale.bandwidth(),\n\t nearest = void 0;\n\t\n\t nearest = layers.map(function (stackedArray) {\n\t return stackedArray.map(function (d1) {\n\t var found = d1.data.values.find(function (d2) {\n\t return Math.abs(adjustedMouseY >= yScale(d2[nameLabel])) && Math.abs(adjustedMouseY - yScale(d2[nameLabel]) <= epsilon * 2);\n\t });\n\t\n\t return found ? d1.data : undefined;\n\t });\n\t });\n\t nearest = d3Array.merge(nearest).filter(function (e) {\n\t return e;\n\t });\n\t\n\t return nearest.length ? nearest[0] : undefined;\n\t }\n\t\n\t /**\n\t * Handles a mouseover event on top of a bar\n\t * @return {void}\n\t */\n\t function handleBarsMouseOver() {\n\t var _this = this;\n\t\n\t d3Selection.select(this).attr('fill', function () {\n\t return d3Color.color(d3Selection.select(_this.parentNode).attr('fill')).darker();\n\t });\n\t }\n\t\n\t /**\n\t * Handles a mouseout event out of a bar\n\t * @return {void}\n\t */\n\t function handleBarsMouseOut() {\n\t var _this2 = this;\n\t\n\t d3Selection.select(this).attr('fill', function () {\n\t return d3Selection.select(_this2.parentNode).attr('fill');\n\t });\n\t }\n\t\n\t /**\n\t * MouseMove handler, calculates the nearest dataPoint to the cursor\n\t * and updates metadata related to it\n\t * @private\n\t */\n\t function handleMouseMove(e) {\n\t var _getMousePosition = getMousePosition(e),\n\t _getMousePosition2 = _slicedToArray(_getMousePosition, 2),\n\t mouseX = _getMousePosition2[0],\n\t mouseY = _getMousePosition2[1],\n\t dataPoint = isHorizontal ? getNearestDataPoint2(mouseY) : getNearestDataPoint(mouseX),\n\t x = void 0,\n\t y = void 0;\n\t\n\t if (dataPoint) {\n\t // Move verticalMarker to that datapoint\n\t if (isHorizontal) {\n\t x = mouseX - margin.left;\n\t y = yScale(dataPoint.key) + yScale.bandwidth() / 2;\n\t } else {\n\t x = xScale(dataPoint.key) + margin.left;\n\t y = mouseY - margin.bottom;\n\t }\n\t moveTooltipOriginXY(x, y);\n\t\n\t // Emit event with xPosition for tooltip or similar feature\n\t dispatcher.call('customMouseMove', e, dataPoint, categoryColorMap, x, y);\n\t }\n\t }\n\t\n\t /**\n\t * MouseOut handler, hides overlay and removes active class on verticalMarkerLine\n\t * It also resets the container of the vertical marker\n\t * @private\n\t */\n\t function handleMouseOut(e, d) {\n\t svg.select('.metadata-group').attr('transform', 'translate(9999, 0)');\n\t dispatcher.call('customMouseOut', e, d, d3Selection.mouse(e));\n\t }\n\t\n\t /**\n\t * Mouseover handler, shows overlay and adds active class to verticalMarkerLine\n\t * @private\n\t */\n\t function handleMouseOver(e, d) {\n\t dispatcher.call('customMouseOver', e, d, d3Selection.mouse(e));\n\t }\n\t\n\t /**\n\t * Helper method to update the x position of the vertical marker\n\t * @param {obj} dataPoint Data entry to extract info\n\t * @return void\n\t */\n\t function moveTooltipOriginXY(originXPosition, originYPosition) {\n\t svg.select('.metadata-group').attr('transform', 'translate(' + originXPosition + ',' + originYPosition + ')');\n\t }\n\t\n\t /**\n\t * Prepare data for create chart.\n\t * @private\n\t */\n\t function prepareData(data) {\n\t stacks = uniq(data.map(function (_ref6) {\n\t var stack = _ref6.stack;\n\t return stack;\n\t }));\n\t transformedData = d3Collection.nest().key(getName).rollup(function (values) {\n\t var ret = {};\n\t\n\t values.forEach(function (entry) {\n\t if (entry && entry[stackLabel]) {\n\t ret[entry[stackLabel]] = getValue(entry);\n\t }\n\t });\n\t ret.values = values; //for tooltip\n\t\n\t return ret;\n\t }).entries(data).map(function (data) {\n\t return assign({}, {\n\t total: d3Array.sum(d3Array.permute(data.value, stacks)),\n\t key: data.key\n\t }, data.value);\n\t });\n\t }\n\t\n\t /**\n\t * Determines if we should add the tooltip related logic depending on the\n\t * size of the chart and the tooltipThreshold variable value\n\t * @return {boolean} Should we build the tooltip?\n\t * @private\n\t */\n\t function shouldShowTooltip() {\n\t return width > tooltipThreshold;\n\t }\n\t\n\t // API\n\t /**\n\t * Gets or Sets the aspect ratio of the chart\n\t * @param {Number} _x Desired aspect ratio for the graph\n\t * @return { (Number | Module) } Current aspect ratio or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.aspectRatio = function (_x) {\n\t if (!arguments.length) {\n\t return aspectRatio;\n\t }\n\t aspectRatio = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the colorSchema of the chart\n\t * @param {String[]} _x Desired colorSchema for the graph\n\t * @return { colorSchema | module} Current colorSchema or Chart module to chain calls\n\t * @public\n\t */\n\t exports.colorSchema = function (_x) {\n\t if (!arguments.length) {\n\t return colorSchema;\n\t }\n\t colorSchema = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Chart exported to png and a download action is fired\n\t * @public\n\t */\n\t exports.exportChart = function (filename, title) {\n\t exportChart.call(exports, svg, filename, title);\n\t };\n\t\n\t /**\n\t * Gets or Sets the grid mode.\n\t *\n\t * @param {String} _x Desired mode for the grid ('vertical'|'horizontal'|'full')\n\t * @return { String | module} Current mode of the grid or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.grid = function (_x) {\n\t if (!arguments.length) {\n\t return grid;\n\t }\n\t grid = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the height of the chart\n\t * @param {Number} _x Desired width for the graph\n\t * @return { height | module} Current height or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.height = function (_x) {\n\t if (!arguments.length) {\n\t return height;\n\t }\n\t if (aspectRatio) {\n\t width = Math.ceil(_x / aspectRatio);\n\t }\n\t height = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the horizontal direction of the chart\n\t * @param {number} _x Desired horizontal direction for the graph\n\t * @return { isHorizontal | module} If it is horizontal or Bar Chart module to chain calls\n\t * @public\n\t */\n\t exports.isHorizontal = function (_x) {\n\t if (!arguments.length) {\n\t return isHorizontal;\n\t }\n\t isHorizontal = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the isAnimated property of the chart, making it to animate when render.\n\t * By default this is 'false'\n\t *\n\t * @param {Boolean} _x Desired animation flag\n\t * @return { isAnimated | module} Current isAnimated flag or Chart module\n\t * @public\n\t */\n\t exports.isAnimated = function (_x) {\n\t if (!arguments.length) {\n\t return isAnimated;\n\t }\n\t isAnimated = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the margin of the chart\n\t * @param {Object} _x Margin object to get/set\n\t * @return { margin | module} Current margin or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.margin = function (_x) {\n\t if (!arguments.length) {\n\t return margin;\n\t }\n\t margin = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the nameLabel of the chart\n\t * @param {Number} _x Desired dateLabel for the graph\n\t * @return { nameLabel | module} Current nameLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.nameLabel = function (_x) {\n\t if (!arguments.length) {\n\t return nameLabel;\n\t }\n\t nameLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the valueLabelFormat of the chart\n\t * @param {String[]} _x Desired valueLabelFormat for the graph\n\t * @return { valueLabelFormat | module} Current valueLabelFormat or Chart module to chain calls\n\t * @public\n\t */\n\t exports.nameLabelFormat = function (_x) {\n\t if (!arguments.length) {\n\t return nameLabelFormat;\n\t }\n\t nameLabelFormat = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the number of ticks of the x axis on the chart\n\t * (Default is 5)\n\t * @param {Number} _x Desired horizontal ticks\n\t * @return {Number | module} Current xTicks or Chart module to chain calls\n\t * @public\n\t */\n\t exports.xTicks = function (_x) {\n\t if (!arguments.length) {\n\t return xTicks;\n\t }\n\t xTicks = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the number of vertical ticks of the axis on the chart\n\t * @param {Number} _x Desired vertical ticks\n\t * @return {Number | module} Current yTicks or Chart module to chain calls\n\t * @public\n\t */\n\t exports.yTicks = function (_x) {\n\t if (!arguments.length) {\n\t return yTicks;\n\t }\n\t yTicks = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Exposes an 'on' method that acts as a bridge with the event dispatcher\n\t * We are going to expose this events:\n\t * customMouseOver, customMouseMove and customMouseOut\n\t *\n\t * @return {module} Bar Chart\n\t * @public\n\t */\n\t exports.on = function () {\n\t var value = dispatcher.on.apply(dispatcher, arguments);\n\t\n\t return value === dispatcher ? exports : value;\n\t };\n\t\n\t /**\n\t * Configurable extension of the x axis\n\t * if your max point was 50% you might want to show x axis to 60%, pass 1.2\n\t * @param {number} _x ratio to max data point to add to the x axis\n\t * @return { ratio | module} Current ratio or Bar Chart module to chain calls\n\t * @public\n\t */\n\t exports.percentageAxisToMaxRatio = function (_x) {\n\t if (!arguments.length) {\n\t return percentageAxisToMaxRatio;\n\t }\n\t percentageAxisToMaxRatio = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the stackLabel of the chart\n\t * @param {String} _x Desired stackLabel for the graph\n\t * @return { stackLabel | module} Current stackLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.stackLabel = function (_x) {\n\t if (!arguments.length) {\n\t return stackLabel;\n\t }\n\t stackLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the minimum width of the graph in order to show the tooltip\n\t * NOTE: This could also depend on the aspect ratio\n\t *\n\t * @param {Object} _x Margin object to get/set\n\t * @return { tooltipThreshold | module} Current tooltipThreshold or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.tooltipThreshold = function (_x) {\n\t if (!arguments.length) {\n\t return tooltipThreshold;\n\t }\n\t tooltipThreshold = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the valueLabel of the chart\n\t * @param {Number} _x Desired valueLabel for the graph\n\t * @return { valueLabel | module} Current valueLabel or Chart module to chain calls\n\t * @public\n\t */\n\t exports.valueLabel = function (_x) {\n\t if (!arguments.length) {\n\t return valueLabel;\n\t }\n\t valueLabel = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the valueLabelFormat of the chart\n\t * @param {String[]} _x Desired valueLabelFormat for the graph\n\t * @return { valueLabelFormat | module} Current valueLabelFormat or Chart module to chain calls\n\t * @public\n\t */\n\t exports.valueLabelFormat = function (_x) {\n\t if (!arguments.length) {\n\t return valueLabelFormat;\n\t }\n\t valueLabelFormat = _x;\n\t\n\t return this;\n\t };\n\t\n\t /**\n\t * Gets or Sets the width of the chart\n\t * @param {Number} _x Desired width for the graph\n\t * @return { width | module} Current width or Area Chart module to chain calls\n\t * @public\n\t */\n\t exports.width = function (_x) {\n\t if (!arguments.length) {\n\t return width;\n\t }\n\t if (aspectRatio) {\n\t height = Math.ceil(_x * aspectRatio);\n\t }\n\t width = _x;\n\t\n\t return this;\n\t };\n\t\n\t return exports;\n\t };\n\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-array/ Version 1.2.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar ascending = function(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t};\n\t\n\tvar bisector = function(compare) {\n\t if (compare.length === 1) compare = ascendingComparator(compare);\n\t return {\n\t left: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) < 0) lo = mid + 1;\n\t else hi = mid;\n\t }\n\t return lo;\n\t },\n\t right: function(a, x, lo, hi) {\n\t if (lo == null) lo = 0;\n\t if (hi == null) hi = a.length;\n\t while (lo < hi) {\n\t var mid = lo + hi >>> 1;\n\t if (compare(a[mid], x) > 0) hi = mid;\n\t else lo = mid + 1;\n\t }\n\t return lo;\n\t }\n\t };\n\t};\n\t\n\tfunction ascendingComparator(f) {\n\t return function(d, x) {\n\t return ascending(f(d), x);\n\t };\n\t}\n\t\n\tvar ascendingBisect = bisector(ascending);\n\tvar bisectRight = ascendingBisect.right;\n\tvar bisectLeft = ascendingBisect.left;\n\t\n\tvar pairs = function(array, f) {\n\t if (f == null) f = pair;\n\t var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n\t while (i < n) pairs[i] = f(p, p = array[++i]);\n\t return pairs;\n\t};\n\t\n\tfunction pair(a, b) {\n\t return [a, b];\n\t}\n\t\n\tvar cross = function(values0, values1, reduce) {\n\t var n0 = values0.length,\n\t n1 = values1.length,\n\t values = new Array(n0 * n1),\n\t i0,\n\t i1,\n\t i,\n\t value0;\n\t\n\t if (reduce == null) reduce = pair;\n\t\n\t for (i0 = i = 0; i0 < n0; ++i0) {\n\t for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n\t values[i] = reduce(value0, values1[i1]);\n\t }\n\t }\n\t\n\t return values;\n\t};\n\t\n\tvar descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t};\n\t\n\tvar number = function(x) {\n\t return x === null ? NaN : +x;\n\t};\n\t\n\tvar variance = function(values, valueof) {\n\t var n = values.length,\n\t m = 0,\n\t i = -1,\n\t mean = 0,\n\t value,\n\t delta,\n\t sum = 0;\n\t\n\t if (valueof == null) {\n\t while (++i < n) {\n\t if (!isNaN(value = number(values[i]))) {\n\t delta = value - mean;\n\t mean += delta / ++m;\n\t sum += delta * (value - mean);\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (!isNaN(value = number(valueof(values[i], i, values)))) {\n\t delta = value - mean;\n\t mean += delta / ++m;\n\t sum += delta * (value - mean);\n\t }\n\t }\n\t }\n\t\n\t if (m > 1) return sum / (m - 1);\n\t};\n\t\n\tvar deviation = function(array, f) {\n\t var v = variance(array, f);\n\t return v ? Math.sqrt(v) : v;\n\t};\n\t\n\tvar extent = function(values, valueof) {\n\t var n = values.length,\n\t i = -1,\n\t value,\n\t min,\n\t max;\n\t\n\t if (valueof == null) {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = values[i]) != null && value >= value) {\n\t min = max = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = values[i]) != null) {\n\t if (min > value) min = value;\n\t if (max < value) max = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = valueof(values[i], i, values)) != null && value >= value) {\n\t min = max = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = valueof(values[i], i, values)) != null) {\n\t if (min > value) min = value;\n\t if (max < value) max = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return [min, max];\n\t};\n\t\n\tvar array = Array.prototype;\n\t\n\tvar slice = array.slice;\n\tvar map = array.map;\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tvar identity = function(x) {\n\t return x;\n\t};\n\t\n\tvar range = function(start, stop, step) {\n\t start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\t\n\t var i = -1,\n\t n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n\t range = new Array(n);\n\t\n\t while (++i < n) {\n\t range[i] = start + i * step;\n\t }\n\t\n\t return range;\n\t};\n\t\n\tvar e10 = Math.sqrt(50);\n\tvar e5 = Math.sqrt(10);\n\tvar e2 = Math.sqrt(2);\n\t\n\tvar ticks = function(start, stop, count) {\n\t var reverse = stop < start,\n\t i = -1,\n\t n,\n\t ticks,\n\t step;\n\t\n\t if (reverse) n = start, start = stop, stop = n;\n\t\n\t if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\t\n\t if (step > 0) {\n\t start = Math.ceil(start / step);\n\t stop = Math.floor(stop / step);\n\t ticks = new Array(n = Math.ceil(stop - start + 1));\n\t while (++i < n) ticks[i] = (start + i) * step;\n\t } else {\n\t start = Math.floor(start * step);\n\t stop = Math.ceil(stop * step);\n\t ticks = new Array(n = Math.ceil(start - stop + 1));\n\t while (++i < n) ticks[i] = (start - i) / step;\n\t }\n\t\n\t if (reverse) ticks.reverse();\n\t\n\t return ticks;\n\t};\n\t\n\tfunction tickIncrement(start, stop, count) {\n\t var step = (stop - start) / Math.max(0, count),\n\t power = Math.floor(Math.log(step) / Math.LN10),\n\t error = step / Math.pow(10, power);\n\t return power >= 0\n\t ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n\t : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n\t}\n\t\n\tfunction tickStep(start, stop, count) {\n\t var step0 = Math.abs(stop - start) / Math.max(0, count),\n\t step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n\t error = step0 / step1;\n\t if (error >= e10) step1 *= 10;\n\t else if (error >= e5) step1 *= 5;\n\t else if (error >= e2) step1 *= 2;\n\t return stop < start ? -step1 : step1;\n\t}\n\t\n\tvar sturges = function(values) {\n\t return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n\t};\n\t\n\tvar histogram = function() {\n\t var value = identity,\n\t domain = extent,\n\t threshold = sturges;\n\t\n\t function histogram(data) {\n\t var i,\n\t n = data.length,\n\t x,\n\t values = new Array(n);\n\t\n\t for (i = 0; i < n; ++i) {\n\t values[i] = value(data[i], i, data);\n\t }\n\t\n\t var xz = domain(values),\n\t x0 = xz[0],\n\t x1 = xz[1],\n\t tz = threshold(values, x0, x1);\n\t\n\t // Convert number of thresholds into uniform thresholds.\n\t if (!Array.isArray(tz)) {\n\t tz = tickStep(x0, x1, tz);\n\t tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive\n\t }\n\t\n\t // Remove any thresholds outside the domain.\n\t var m = tz.length;\n\t while (tz[0] <= x0) tz.shift(), --m;\n\t while (tz[m - 1] > x1) tz.pop(), --m;\n\t\n\t var bins = new Array(m + 1),\n\t bin;\n\t\n\t // Initialize bins.\n\t for (i = 0; i <= m; ++i) {\n\t bin = bins[i] = [];\n\t bin.x0 = i > 0 ? tz[i - 1] : x0;\n\t bin.x1 = i < m ? tz[i] : x1;\n\t }\n\t\n\t // Assign data to bins by value, ignoring any outside the domain.\n\t for (i = 0; i < n; ++i) {\n\t x = values[i];\n\t if (x0 <= x && x <= x1) {\n\t bins[bisectRight(tz, x, 0, m)].push(data[i]);\n\t }\n\t }\n\t\n\t return bins;\n\t }\n\t\n\t histogram.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n\t };\n\t\n\t histogram.domain = function(_) {\n\t return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n\t };\n\t\n\t histogram.thresholds = function(_) {\n\t return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n\t };\n\t\n\t return histogram;\n\t};\n\t\n\tvar quantile = function(values, p, valueof) {\n\t if (valueof == null) valueof = number;\n\t if (!(n = values.length)) return;\n\t if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n\t if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n\t var n,\n\t i = (n - 1) * p,\n\t i0 = Math.floor(i),\n\t value0 = +valueof(values[i0], i0, values),\n\t value1 = +valueof(values[i0 + 1], i0 + 1, values);\n\t return value0 + (value1 - value0) * (i - i0);\n\t};\n\t\n\tvar freedmanDiaconis = function(values, min, max) {\n\t values = map.call(values, number).sort(ascending);\n\t return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n\t};\n\t\n\tvar scott = function(values, min, max) {\n\t return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n\t};\n\t\n\tvar max = function(values, valueof) {\n\t var n = values.length,\n\t i = -1,\n\t value,\n\t max;\n\t\n\t if (valueof == null) {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = values[i]) != null && value >= value) {\n\t max = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = values[i]) != null && value > max) {\n\t max = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = valueof(values[i], i, values)) != null && value >= value) {\n\t max = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = valueof(values[i], i, values)) != null && value > max) {\n\t max = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return max;\n\t};\n\t\n\tvar mean = function(values, valueof) {\n\t var n = values.length,\n\t m = n,\n\t i = -1,\n\t value,\n\t sum = 0;\n\t\n\t if (valueof == null) {\n\t while (++i < n) {\n\t if (!isNaN(value = number(values[i]))) sum += value;\n\t else --m;\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n\t else --m;\n\t }\n\t }\n\t\n\t if (m) return sum / m;\n\t};\n\t\n\tvar median = function(values, valueof) {\n\t var n = values.length,\n\t i = -1,\n\t value,\n\t numbers = [];\n\t\n\t if (valueof == null) {\n\t while (++i < n) {\n\t if (!isNaN(value = number(values[i]))) {\n\t numbers.push(value);\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (!isNaN(value = number(valueof(values[i], i, values)))) {\n\t numbers.push(value);\n\t }\n\t }\n\t }\n\t\n\t return quantile(numbers.sort(ascending), 0.5);\n\t};\n\t\n\tvar merge = function(arrays) {\n\t var n = arrays.length,\n\t m,\n\t i = -1,\n\t j = 0,\n\t merged,\n\t array;\n\t\n\t while (++i < n) j += arrays[i].length;\n\t merged = new Array(j);\n\t\n\t while (--n >= 0) {\n\t array = arrays[n];\n\t m = array.length;\n\t while (--m >= 0) {\n\t merged[--j] = array[m];\n\t }\n\t }\n\t\n\t return merged;\n\t};\n\t\n\tvar min = function(values, valueof) {\n\t var n = values.length,\n\t i = -1,\n\t value,\n\t min;\n\t\n\t if (valueof == null) {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = values[i]) != null && value >= value) {\n\t min = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = values[i]) != null && min > value) {\n\t min = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) { // Find the first comparable value.\n\t if ((value = valueof(values[i], i, values)) != null && value >= value) {\n\t min = value;\n\t while (++i < n) { // Compare the remaining values.\n\t if ((value = valueof(values[i], i, values)) != null && min > value) {\n\t min = value;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t\n\t return min;\n\t};\n\t\n\tvar permute = function(array, indexes) {\n\t var i = indexes.length, permutes = new Array(i);\n\t while (i--) permutes[i] = array[indexes[i]];\n\t return permutes;\n\t};\n\t\n\tvar scan = function(values, compare) {\n\t if (!(n = values.length)) return;\n\t var n,\n\t i = 0,\n\t j = 0,\n\t xi,\n\t xj = values[j];\n\t\n\t if (compare == null) compare = ascending;\n\t\n\t while (++i < n) {\n\t if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n\t xj = xi, j = i;\n\t }\n\t }\n\t\n\t if (compare(xj, xj) === 0) return j;\n\t};\n\t\n\tvar shuffle = function(array, i0, i1) {\n\t var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n\t t,\n\t i;\n\t\n\t while (m) {\n\t i = Math.random() * m-- | 0;\n\t t = array[m + i0];\n\t array[m + i0] = array[i + i0];\n\t array[i + i0] = t;\n\t }\n\t\n\t return array;\n\t};\n\t\n\tvar sum = function(values, valueof) {\n\t var n = values.length,\n\t i = -1,\n\t value,\n\t sum = 0;\n\t\n\t if (valueof == null) {\n\t while (++i < n) {\n\t if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n\t }\n\t }\n\t\n\t else {\n\t while (++i < n) {\n\t if (value = +valueof(values[i], i, values)) sum += value;\n\t }\n\t }\n\t\n\t return sum;\n\t};\n\t\n\tvar transpose = function(matrix) {\n\t if (!(n = matrix.length)) return [];\n\t for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n\t for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n\t row[j] = matrix[j][i];\n\t }\n\t }\n\t return transpose;\n\t};\n\t\n\tfunction length(d) {\n\t return d.length;\n\t}\n\t\n\tvar zip = function() {\n\t return transpose(arguments);\n\t};\n\t\n\texports.bisect = bisectRight;\n\texports.bisectRight = bisectRight;\n\texports.bisectLeft = bisectLeft;\n\texports.ascending = ascending;\n\texports.bisector = bisector;\n\texports.cross = cross;\n\texports.descending = descending;\n\texports.deviation = deviation;\n\texports.extent = extent;\n\texports.histogram = histogram;\n\texports.thresholdFreedmanDiaconis = freedmanDiaconis;\n\texports.thresholdScott = scott;\n\texports.thresholdSturges = sturges;\n\texports.max = max;\n\texports.mean = mean;\n\texports.median = median;\n\texports.merge = merge;\n\texports.min = min;\n\texports.pairs = pairs;\n\texports.permute = permute;\n\texports.quantile = quantile;\n\texports.range = range;\n\texports.scan = scan;\n\texports.shuffle = shuffle;\n\texports.sum = sum;\n\texports.ticks = ticks;\n\texports.tickIncrement = tickIncrement;\n\texports.tickStep = tickStep;\n\texports.transpose = transpose;\n\texports.variance = variance;\n\texports.zip = zip;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tfunction linear(t) {\n\t return +t;\n\t}\n\t\n\tfunction quadIn(t) {\n\t return t * t;\n\t}\n\t\n\tfunction quadOut(t) {\n\t return t * (2 - t);\n\t}\n\t\n\tfunction quadInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n\t}\n\t\n\tfunction cubicIn(t) {\n\t return t * t * t;\n\t}\n\t\n\tfunction cubicOut(t) {\n\t return --t * t * t + 1;\n\t}\n\t\n\tfunction cubicInOut(t) {\n\t return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n\t}\n\t\n\tvar exponent = 3;\n\t\n\tvar polyIn = (function custom(e) {\n\t e = +e;\n\t\n\t function polyIn(t) {\n\t return Math.pow(t, e);\n\t }\n\t\n\t polyIn.exponent = custom;\n\t\n\t return polyIn;\n\t})(exponent);\n\t\n\tvar polyOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyOut(t) {\n\t return 1 - Math.pow(1 - t, e);\n\t }\n\t\n\t polyOut.exponent = custom;\n\t\n\t return polyOut;\n\t})(exponent);\n\t\n\tvar polyInOut = (function custom(e) {\n\t e = +e;\n\t\n\t function polyInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n\t }\n\t\n\t polyInOut.exponent = custom;\n\t\n\t return polyInOut;\n\t})(exponent);\n\t\n\tvar pi = Math.PI;\n\tvar halfPi = pi / 2;\n\t\n\tfunction sinIn(t) {\n\t return 1 - Math.cos(t * halfPi);\n\t}\n\t\n\tfunction sinOut(t) {\n\t return Math.sin(t * halfPi);\n\t}\n\t\n\tfunction sinInOut(t) {\n\t return (1 - Math.cos(pi * t)) / 2;\n\t}\n\t\n\tfunction expIn(t) {\n\t return Math.pow(2, 10 * t - 10);\n\t}\n\t\n\tfunction expOut(t) {\n\t return 1 - Math.pow(2, -10 * t);\n\t}\n\t\n\tfunction expInOut(t) {\n\t return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n\t}\n\t\n\tfunction circleIn(t) {\n\t return 1 - Math.sqrt(1 - t * t);\n\t}\n\t\n\tfunction circleOut(t) {\n\t return Math.sqrt(1 - --t * t);\n\t}\n\t\n\tfunction circleInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n\t}\n\t\n\tvar b1 = 4 / 11;\n\tvar b2 = 6 / 11;\n\tvar b3 = 8 / 11;\n\tvar b4 = 3 / 4;\n\tvar b5 = 9 / 11;\n\tvar b6 = 10 / 11;\n\tvar b7 = 15 / 16;\n\tvar b8 = 21 / 22;\n\tvar b9 = 63 / 64;\n\tvar b0 = 1 / b1 / b1;\n\t\n\tfunction bounceIn(t) {\n\t return 1 - bounceOut(1 - t);\n\t}\n\t\n\tfunction bounceOut(t) {\n\t return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n\t}\n\t\n\tfunction bounceInOut(t) {\n\t return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n\t}\n\t\n\tvar overshoot = 1.70158;\n\t\n\tvar backIn = (function custom(s) {\n\t s = +s;\n\t\n\t function backIn(t) {\n\t return t * t * ((s + 1) * t - s);\n\t }\n\t\n\t backIn.overshoot = custom;\n\t\n\t return backIn;\n\t})(overshoot);\n\t\n\tvar backOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backOut(t) {\n\t return --t * t * ((s + 1) * t + s) + 1;\n\t }\n\t\n\t backOut.overshoot = custom;\n\t\n\t return backOut;\n\t})(overshoot);\n\t\n\tvar backInOut = (function custom(s) {\n\t s = +s;\n\t\n\t function backInOut(t) {\n\t return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n\t }\n\t\n\t backInOut.overshoot = custom;\n\t\n\t return backInOut;\n\t})(overshoot);\n\t\n\tvar tau = 2 * Math.PI;\n\tvar amplitude = 1;\n\tvar period = 0.3;\n\t\n\tvar elasticIn = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticIn(t) {\n\t return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n\t }\n\t\n\t elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticIn.period = function(p) { return custom(a, p); };\n\t\n\t return elasticIn;\n\t})(amplitude, period);\n\t\n\tvar elasticOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticOut(t) {\n\t return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n\t }\n\t\n\t elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticOut;\n\t})(amplitude, period);\n\t\n\tvar elasticInOut = (function custom(a, p) {\n\t var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\t\n\t function elasticInOut(t) {\n\t return ((t = t * 2 - 1) < 0\n\t ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n\t : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n\t }\n\t\n\t elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n\t elasticInOut.period = function(p) { return custom(a, p); };\n\t\n\t return elasticInOut;\n\t})(amplitude, period);\n\t\n\texports.easeLinear = linear;\n\texports.easeQuad = quadInOut;\n\texports.easeQuadIn = quadIn;\n\texports.easeQuadOut = quadOut;\n\texports.easeQuadInOut = quadInOut;\n\texports.easeCubic = cubicInOut;\n\texports.easeCubicIn = cubicIn;\n\texports.easeCubicOut = cubicOut;\n\texports.easeCubicInOut = cubicInOut;\n\texports.easePoly = polyInOut;\n\texports.easePolyIn = polyIn;\n\texports.easePolyOut = polyOut;\n\texports.easePolyInOut = polyInOut;\n\texports.easeSin = sinInOut;\n\texports.easeSinIn = sinIn;\n\texports.easeSinOut = sinOut;\n\texports.easeSinInOut = sinInOut;\n\texports.easeExp = expInOut;\n\texports.easeExpIn = expIn;\n\texports.easeExpOut = expOut;\n\texports.easeExpInOut = expInOut;\n\texports.easeCircle = circleInOut;\n\texports.easeCircleIn = circleIn;\n\texports.easeCircleOut = circleOut;\n\texports.easeCircleInOut = circleInOut;\n\texports.easeBounce = bounceOut;\n\texports.easeBounceIn = bounceIn;\n\texports.easeBounceOut = bounceOut;\n\texports.easeBounceInOut = bounceInOut;\n\texports.easeBack = backInOut;\n\texports.easeBackIn = backIn;\n\texports.easeBackOut = backOut;\n\texports.easeBackInOut = backInOut;\n\texports.easeElastic = elasticOut;\n\texports.easeElasticIn = elasticIn;\n\texports.easeElasticOut = elasticOut;\n\texports.easeElasticInOut = elasticInOut;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-axis/ Version 1.0.8. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar slice = Array.prototype.slice;\n\t\n\tvar identity = function(x) {\n\t return x;\n\t};\n\t\n\tvar top = 1;\n\tvar right = 2;\n\tvar bottom = 3;\n\tvar left = 4;\n\tvar epsilon = 1e-6;\n\t\n\tfunction translateX(x) {\n\t return \"translate(\" + (x + 0.5) + \",0)\";\n\t}\n\t\n\tfunction translateY(y) {\n\t return \"translate(0,\" + (y + 0.5) + \")\";\n\t}\n\t\n\tfunction number(scale) {\n\t return function(d) {\n\t return +scale(d);\n\t };\n\t}\n\t\n\tfunction center(scale) {\n\t var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n\t if (scale.round()) offset = Math.round(offset);\n\t return function(d) {\n\t return +scale(d) + offset;\n\t };\n\t}\n\t\n\tfunction entering() {\n\t return !this.__axis;\n\t}\n\t\n\tfunction axis(orient, scale) {\n\t var tickArguments = [],\n\t tickValues = null,\n\t tickFormat = null,\n\t tickSizeInner = 6,\n\t tickSizeOuter = 6,\n\t tickPadding = 3,\n\t k = orient === top || orient === left ? -1 : 1,\n\t x = orient === left || orient === right ? \"x\" : \"y\",\n\t transform = orient === top || orient === bottom ? translateX : translateY;\n\t\n\t function axis(context) {\n\t var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n\t format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n\t spacing = Math.max(tickSizeInner, 0) + tickPadding,\n\t range = scale.range(),\n\t range0 = +range[0] + 0.5,\n\t range1 = +range[range.length - 1] + 0.5,\n\t position = (scale.bandwidth ? center : number)(scale.copy()),\n\t selection = context.selection ? context.selection() : context,\n\t path = selection.selectAll(\".domain\").data([null]),\n\t tick = selection.selectAll(\".tick\").data(values, scale).order(),\n\t tickExit = tick.exit(),\n\t tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n\t line = tick.select(\"line\"),\n\t text = tick.select(\"text\");\n\t\n\t path = path.merge(path.enter().insert(\"path\", \".tick\")\n\t .attr(\"class\", \"domain\")\n\t .attr(\"stroke\", \"#000\"));\n\t\n\t tick = tick.merge(tickEnter);\n\t\n\t line = line.merge(tickEnter.append(\"line\")\n\t .attr(\"stroke\", \"#000\")\n\t .attr(x + \"2\", k * tickSizeInner));\n\t\n\t text = text.merge(tickEnter.append(\"text\")\n\t .attr(\"fill\", \"#000\")\n\t .attr(x, k * spacing)\n\t .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\t\n\t if (context !== selection) {\n\t path = path.transition(context);\n\t tick = tick.transition(context);\n\t line = line.transition(context);\n\t text = text.transition(context);\n\t\n\t tickExit = tickExit.transition(context)\n\t .attr(\"opacity\", epsilon)\n\t .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\t\n\t tickEnter\n\t .attr(\"opacity\", epsilon)\n\t .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n\t }\n\t\n\t tickExit.remove();\n\t\n\t path\n\t .attr(\"d\", orient === left || orient == right\n\t ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n\t : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\t\n\t tick\n\t .attr(\"opacity\", 1)\n\t .attr(\"transform\", function(d) { return transform(position(d)); });\n\t\n\t line\n\t .attr(x + \"2\", k * tickSizeInner);\n\t\n\t text\n\t .attr(x, k * spacing)\n\t .text(format);\n\t\n\t selection.filter(entering)\n\t .attr(\"fill\", \"none\")\n\t .attr(\"font-size\", 10)\n\t .attr(\"font-family\", \"sans-serif\")\n\t .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\t\n\t selection\n\t .each(function() { this.__axis = position; });\n\t }\n\t\n\t axis.scale = function(_) {\n\t return arguments.length ? (scale = _, axis) : scale;\n\t };\n\t\n\t axis.ticks = function() {\n\t return tickArguments = slice.call(arguments), axis;\n\t };\n\t\n\t axis.tickArguments = function(_) {\n\t return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n\t };\n\t\n\t axis.tickValues = function(_) {\n\t return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n\t };\n\t\n\t axis.tickFormat = function(_) {\n\t return arguments.length ? (tickFormat = _, axis) : tickFormat;\n\t };\n\t\n\t axis.tickSize = function(_) {\n\t return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n\t };\n\t\n\t axis.tickSizeInner = function(_) {\n\t return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n\t };\n\t\n\t axis.tickSizeOuter = function(_) {\n\t return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n\t };\n\t\n\t axis.tickPadding = function(_) {\n\t return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n\t };\n\t\n\t return axis;\n\t}\n\t\n\tfunction axisTop(scale) {\n\t return axis(top, scale);\n\t}\n\t\n\tfunction axisRight(scale) {\n\t return axis(right, scale);\n\t}\n\t\n\tfunction axisBottom(scale) {\n\t return axis(bottom, scale);\n\t}\n\t\n\tfunction axisLeft(scale) {\n\t return axis(left, scale);\n\t}\n\t\n\texports.axisTop = axisTop;\n\texports.axisRight = axisRight;\n\texports.axisBottom = axisBottom;\n\texports.axisLeft = axisLeft;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar define = function(constructor, factory, prototype) {\n\t constructor.prototype = factory.prototype = prototype;\n\t prototype.constructor = constructor;\n\t};\n\t\n\tfunction extend(parent, definition) {\n\t var prototype = Object.create(parent.prototype);\n\t for (var key in definition) prototype[key] = definition[key];\n\t return prototype;\n\t}\n\t\n\tfunction Color() {}\n\t\n\tvar darker = 0.7;\n\tvar brighter = 1 / darker;\n\t\n\tvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\n\tvar reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\n\tvar reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\n\tvar reHex3 = /^#([0-9a-f]{3})$/;\n\tvar reHex6 = /^#([0-9a-f]{6})$/;\n\tvar reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\n\tvar reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\n\tvar reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\n\tvar reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\n\tvar reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\n\tvar reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\t\n\tvar named = {\n\t aliceblue: 0xf0f8ff,\n\t antiquewhite: 0xfaebd7,\n\t aqua: 0x00ffff,\n\t aquamarine: 0x7fffd4,\n\t azure: 0xf0ffff,\n\t beige: 0xf5f5dc,\n\t bisque: 0xffe4c4,\n\t black: 0x000000,\n\t blanchedalmond: 0xffebcd,\n\t blue: 0x0000ff,\n\t blueviolet: 0x8a2be2,\n\t brown: 0xa52a2a,\n\t burlywood: 0xdeb887,\n\t cadetblue: 0x5f9ea0,\n\t chartreuse: 0x7fff00,\n\t chocolate: 0xd2691e,\n\t coral: 0xff7f50,\n\t cornflowerblue: 0x6495ed,\n\t cornsilk: 0xfff8dc,\n\t crimson: 0xdc143c,\n\t cyan: 0x00ffff,\n\t darkblue: 0x00008b,\n\t darkcyan: 0x008b8b,\n\t darkgoldenrod: 0xb8860b,\n\t darkgray: 0xa9a9a9,\n\t darkgreen: 0x006400,\n\t darkgrey: 0xa9a9a9,\n\t darkkhaki: 0xbdb76b,\n\t darkmagenta: 0x8b008b,\n\t darkolivegreen: 0x556b2f,\n\t darkorange: 0xff8c00,\n\t darkorchid: 0x9932cc,\n\t darkred: 0x8b0000,\n\t darksalmon: 0xe9967a,\n\t darkseagreen: 0x8fbc8f,\n\t darkslateblue: 0x483d8b,\n\t darkslategray: 0x2f4f4f,\n\t darkslategrey: 0x2f4f4f,\n\t darkturquoise: 0x00ced1,\n\t darkviolet: 0x9400d3,\n\t deeppink: 0xff1493,\n\t deepskyblue: 0x00bfff,\n\t dimgray: 0x696969,\n\t dimgrey: 0x696969,\n\t dodgerblue: 0x1e90ff,\n\t firebrick: 0xb22222,\n\t floralwhite: 0xfffaf0,\n\t forestgreen: 0x228b22,\n\t fuchsia: 0xff00ff,\n\t gainsboro: 0xdcdcdc,\n\t ghostwhite: 0xf8f8ff,\n\t gold: 0xffd700,\n\t goldenrod: 0xdaa520,\n\t gray: 0x808080,\n\t green: 0x008000,\n\t greenyellow: 0xadff2f,\n\t grey: 0x808080,\n\t honeydew: 0xf0fff0,\n\t hotpink: 0xff69b4,\n\t indianred: 0xcd5c5c,\n\t indigo: 0x4b0082,\n\t ivory: 0xfffff0,\n\t khaki: 0xf0e68c,\n\t lavender: 0xe6e6fa,\n\t lavenderblush: 0xfff0f5,\n\t lawngreen: 0x7cfc00,\n\t lemonchiffon: 0xfffacd,\n\t lightblue: 0xadd8e6,\n\t lightcoral: 0xf08080,\n\t lightcyan: 0xe0ffff,\n\t lightgoldenrodyellow: 0xfafad2,\n\t lightgray: 0xd3d3d3,\n\t lightgreen: 0x90ee90,\n\t lightgrey: 0xd3d3d3,\n\t lightpink: 0xffb6c1,\n\t lightsalmon: 0xffa07a,\n\t lightseagreen: 0x20b2aa,\n\t lightskyblue: 0x87cefa,\n\t lightslategray: 0x778899,\n\t lightslategrey: 0x778899,\n\t lightsteelblue: 0xb0c4de,\n\t lightyellow: 0xffffe0,\n\t lime: 0x00ff00,\n\t limegreen: 0x32cd32,\n\t linen: 0xfaf0e6,\n\t magenta: 0xff00ff,\n\t maroon: 0x800000,\n\t mediumaquamarine: 0x66cdaa,\n\t mediumblue: 0x0000cd,\n\t mediumorchid: 0xba55d3,\n\t mediumpurple: 0x9370db,\n\t mediumseagreen: 0x3cb371,\n\t mediumslateblue: 0x7b68ee,\n\t mediumspringgreen: 0x00fa9a,\n\t mediumturquoise: 0x48d1cc,\n\t mediumvioletred: 0xc71585,\n\t midnightblue: 0x191970,\n\t mintcream: 0xf5fffa,\n\t mistyrose: 0xffe4e1,\n\t moccasin: 0xffe4b5,\n\t navajowhite: 0xffdead,\n\t navy: 0x000080,\n\t oldlace: 0xfdf5e6,\n\t olive: 0x808000,\n\t olivedrab: 0x6b8e23,\n\t orange: 0xffa500,\n\t orangered: 0xff4500,\n\t orchid: 0xda70d6,\n\t palegoldenrod: 0xeee8aa,\n\t palegreen: 0x98fb98,\n\t paleturquoise: 0xafeeee,\n\t palevioletred: 0xdb7093,\n\t papayawhip: 0xffefd5,\n\t peachpuff: 0xffdab9,\n\t peru: 0xcd853f,\n\t pink: 0xffc0cb,\n\t plum: 0xdda0dd,\n\t powderblue: 0xb0e0e6,\n\t purple: 0x800080,\n\t rebeccapurple: 0x663399,\n\t red: 0xff0000,\n\t rosybrown: 0xbc8f8f,\n\t royalblue: 0x4169e1,\n\t saddlebrown: 0x8b4513,\n\t salmon: 0xfa8072,\n\t sandybrown: 0xf4a460,\n\t seagreen: 0x2e8b57,\n\t seashell: 0xfff5ee,\n\t sienna: 0xa0522d,\n\t silver: 0xc0c0c0,\n\t skyblue: 0x87ceeb,\n\t slateblue: 0x6a5acd,\n\t slategray: 0x708090,\n\t slategrey: 0x708090,\n\t snow: 0xfffafa,\n\t springgreen: 0x00ff7f,\n\t steelblue: 0x4682b4,\n\t tan: 0xd2b48c,\n\t teal: 0x008080,\n\t thistle: 0xd8bfd8,\n\t tomato: 0xff6347,\n\t turquoise: 0x40e0d0,\n\t violet: 0xee82ee,\n\t wheat: 0xf5deb3,\n\t white: 0xffffff,\n\t whitesmoke: 0xf5f5f5,\n\t yellow: 0xffff00,\n\t yellowgreen: 0x9acd32\n\t};\n\t\n\tdefine(Color, color, {\n\t displayable: function() {\n\t return this.rgb().displayable();\n\t },\n\t toString: function() {\n\t return this.rgb() + \"\";\n\t }\n\t});\n\t\n\tfunction color(format) {\n\t var m;\n\t format = (format + \"\").trim().toLowerCase();\n\t return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n\t : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n\t : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n\t : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n\t : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n\t : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n\t : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n\t : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n\t : named.hasOwnProperty(format) ? rgbn(named[format])\n\t : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n\t : null;\n\t}\n\t\n\tfunction rgbn(n) {\n\t return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n\t}\n\t\n\tfunction rgba(r, g, b, a) {\n\t if (a <= 0) r = g = b = NaN;\n\t return new Rgb(r, g, b, a);\n\t}\n\t\n\tfunction rgbConvert(o) {\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Rgb;\n\t o = o.rgb();\n\t return new Rgb(o.r, o.g, o.b, o.opacity);\n\t}\n\t\n\tfunction rgb(r, g, b, opacity) {\n\t return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Rgb(r, g, b, opacity) {\n\t this.r = +r;\n\t this.g = +g;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Rgb, rgb, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n\t },\n\t rgb: function() {\n\t return this;\n\t },\n\t displayable: function() {\n\t return (0 <= this.r && this.r <= 255)\n\t && (0 <= this.g && this.g <= 255)\n\t && (0 <= this.b && this.b <= 255)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t },\n\t toString: function() {\n\t var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n\t return (a === 1 ? \"rgb(\" : \"rgba(\")\n\t + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n\t + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n\t + (a === 1 ? \")\" : \", \" + a + \")\");\n\t }\n\t}));\n\t\n\tfunction hsla(h, s, l, a) {\n\t if (a <= 0) h = s = l = NaN;\n\t else if (l <= 0 || l >= 1) h = s = NaN;\n\t else if (s <= 0) h = NaN;\n\t return new Hsl(h, s, l, a);\n\t}\n\t\n\tfunction hslConvert(o) {\n\t if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Color)) o = color(o);\n\t if (!o) return new Hsl;\n\t if (o instanceof Hsl) return o;\n\t o = o.rgb();\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t min = Math.min(r, g, b),\n\t max = Math.max(r, g, b),\n\t h = NaN,\n\t s = max - min,\n\t l = (max + min) / 2;\n\t if (s) {\n\t if (r === max) h = (g - b) / s + (g < b) * 6;\n\t else if (g === max) h = (b - r) / s + 2;\n\t else h = (r - g) / s + 4;\n\t s /= l < 0.5 ? max + min : 2 - max - min;\n\t h *= 60;\n\t } else {\n\t s = l > 0 && l < 1 ? 0 : h;\n\t }\n\t return new Hsl(h, s, l, o.opacity);\n\t}\n\t\n\tfunction hsl(h, s, l, opacity) {\n\t return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Hsl(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Hsl, hsl, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Hsl(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = this.h % 360 + (this.h < 0) * 360,\n\t s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n\t l = this.l,\n\t m2 = l + (l < 0.5 ? l : 1 - l) * s,\n\t m1 = 2 * l - m2;\n\t return new Rgb(\n\t hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n\t hsl2rgb(h, m1, m2),\n\t hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n\t this.opacity\n\t );\n\t },\n\t displayable: function() {\n\t return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n\t && (0 <= this.l && this.l <= 1)\n\t && (0 <= this.opacity && this.opacity <= 1);\n\t }\n\t}));\n\t\n\t/* From FvD 13.37, CSS Color Module Level 3 */\n\tfunction hsl2rgb(h, m1, m2) {\n\t return (h < 60 ? m1 + (m2 - m1) * h / 60\n\t : h < 180 ? m2\n\t : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n\t : m1) * 255;\n\t}\n\t\n\tvar deg2rad = Math.PI / 180;\n\tvar rad2deg = 180 / Math.PI;\n\t\n\tvar Kn = 18;\n\tvar Xn = 0.950470;\n\tvar Yn = 1;\n\tvar Zn = 1.088830;\n\tvar t0 = 4 / 29;\n\tvar t1 = 6 / 29;\n\tvar t2 = 3 * t1 * t1;\n\tvar t3 = t1 * t1 * t1;\n\t\n\tfunction labConvert(o) {\n\t if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n\t if (o instanceof Hcl) {\n\t var h = o.h * deg2rad;\n\t return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n\t }\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var b = rgb2xyz(o.r),\n\t a = rgb2xyz(o.g),\n\t l = rgb2xyz(o.b),\n\t x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n\t y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n\t z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\t return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n\t}\n\t\n\tfunction lab(l, a, b, opacity) {\n\t return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Lab(l, a, b, opacity) {\n\t this.l = +l;\n\t this.a = +a;\n\t this.b = +b;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Lab, lab, extend(Color, {\n\t brighter: function(k) {\n\t return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n\t },\n\t rgb: function() {\n\t var y = (this.l + 16) / 116,\n\t x = isNaN(this.a) ? y : y + this.a / 500,\n\t z = isNaN(this.b) ? y : y - this.b / 200;\n\t y = Yn * lab2xyz(y);\n\t x = Xn * lab2xyz(x);\n\t z = Zn * lab2xyz(z);\n\t return new Rgb(\n\t xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n\t xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n\t xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n\t this.opacity\n\t );\n\t }\n\t}));\n\t\n\tfunction xyz2lab(t) {\n\t return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n\t}\n\t\n\tfunction lab2xyz(t) {\n\t return t > t1 ? t * t * t : t2 * (t - t0);\n\t}\n\t\n\tfunction xyz2rgb(x) {\n\t return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n\t}\n\t\n\tfunction rgb2xyz(x) {\n\t return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n\t}\n\t\n\tfunction hclConvert(o) {\n\t if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n\t if (!(o instanceof Lab)) o = labConvert(o);\n\t var h = Math.atan2(o.b, o.a) * rad2deg;\n\t return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n\t}\n\t\n\tfunction hcl(h, c, l, opacity) {\n\t return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Hcl(h, c, l, opacity) {\n\t this.h = +h;\n\t this.c = +c;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Hcl, hcl, extend(Color, {\n\t brighter: function(k) {\n\t return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t darker: function(k) {\n\t return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n\t },\n\t rgb: function() {\n\t return labConvert(this).rgb();\n\t }\n\t}));\n\t\n\tvar A = -0.14861;\n\tvar B = +1.78277;\n\tvar C = -0.29227;\n\tvar D = -0.90649;\n\tvar E = +1.97294;\n\tvar ED = E * D;\n\tvar EB = E * B;\n\tvar BC_DA = B * C - D * A;\n\t\n\tfunction cubehelixConvert(o) {\n\t if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n\t if (!(o instanceof Rgb)) o = rgbConvert(o);\n\t var r = o.r / 255,\n\t g = o.g / 255,\n\t b = o.b / 255,\n\t l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n\t bl = b - l,\n\t k = (E * (g - l) - C * bl) / D,\n\t s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n\t h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n\t return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n\t}\n\t\n\tfunction cubehelix(h, s, l, opacity) {\n\t return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n\t}\n\t\n\tfunction Cubehelix(h, s, l, opacity) {\n\t this.h = +h;\n\t this.s = +s;\n\t this.l = +l;\n\t this.opacity = +opacity;\n\t}\n\t\n\tdefine(Cubehelix, cubehelix, extend(Color, {\n\t brighter: function(k) {\n\t k = k == null ? brighter : Math.pow(brighter, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t darker: function(k) {\n\t k = k == null ? darker : Math.pow(darker, k);\n\t return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n\t },\n\t rgb: function() {\n\t var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n\t l = +this.l,\n\t a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n\t cosh = Math.cos(h),\n\t sinh = Math.sin(h);\n\t return new Rgb(\n\t 255 * (l + a * (A * cosh + B * sinh)),\n\t 255 * (l + a * (C * cosh + D * sinh)),\n\t 255 * (l + a * (E * cosh)),\n\t this.opacity\n\t );\n\t }\n\t}));\n\t\n\texports.color = color;\n\texports.rgb = rgb;\n\texports.hsl = hsl;\n\texports.lab = lab;\n\texports.hcl = hcl;\n\texports.cubehelix = cubehelix;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar noop = {value: function() {}};\n\t\n\tfunction dispatch() {\n\t for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n\t if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n\t _[t] = [];\n\t }\n\t return new Dispatch(_);\n\t}\n\t\n\tfunction Dispatch(_) {\n\t this._ = _;\n\t}\n\t\n\tfunction parseTypenames(typenames, types) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n\t return {type: t, name: name};\n\t });\n\t}\n\t\n\tDispatch.prototype = dispatch.prototype = {\n\t constructor: Dispatch,\n\t on: function(typename, callback) {\n\t var _ = this._,\n\t T = parseTypenames(typename + \"\", _),\n\t t,\n\t i = -1,\n\t n = T.length;\n\t\n\t // If no callback was specified, return the callback of the given type and name.\n\t if (arguments.length < 2) {\n\t while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n\t return;\n\t }\n\t\n\t // If a type was specified, set the callback for the given type and name.\n\t // Otherwise, if a null callback was specified, remove callbacks of the given name.\n\t if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n\t while (++i < n) {\n\t if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n\t else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n\t }\n\t\n\t return this;\n\t },\n\t copy: function() {\n\t var copy = {}, _ = this._;\n\t for (var t in _) copy[t] = _[t].slice();\n\t return new Dispatch(copy);\n\t },\n\t call: function(type, that) {\n\t if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t },\n\t apply: function(type, that, args) {\n\t if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n\t for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n\t }\n\t};\n\t\n\tfunction get(type, name) {\n\t for (var i = 0, n = type.length, c; i < n; ++i) {\n\t if ((c = type[i]).name === name) {\n\t return c.value;\n\t }\n\t }\n\t}\n\t\n\tfunction set(type, name, callback) {\n\t for (var i = 0, n = type.length; i < n; ++i) {\n\t if (type[i].name === name) {\n\t type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n\t break;\n\t }\n\t }\n\t if (callback != null) type.push({name: name, value: callback});\n\t return type;\n\t}\n\t\n\texports.dispatch = dispatch;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\t// Computes the decimal coefficient and exponent of the specified number x with\n\t// significant digits p, where x is positive and p is in [1, 21] or undefined.\n\t// For example, formatDecimal(1.23) returns [\"123\", 0].\n\tvar formatDecimal = function(x, p) {\n\t if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n\t var i, coefficient = x.slice(0, i);\n\t\n\t // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n\t // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n\t return [\n\t coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n\t +x.slice(i + 1)\n\t ];\n\t};\n\t\n\tvar exponent = function(x) {\n\t return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n\t};\n\t\n\tvar formatGroup = function(grouping, thousands) {\n\t return function(value, width) {\n\t var i = value.length,\n\t t = [],\n\t j = 0,\n\t g = grouping[0],\n\t length = 0;\n\t\n\t while (i > 0 && g > 0) {\n\t if (length + g + 1 > width) g = Math.max(1, width - length);\n\t t.push(value.substring(i -= g, i + g));\n\t if ((length += g + 1) > width) break;\n\t g = grouping[j = (j + 1) % grouping.length];\n\t }\n\t\n\t return t.reverse().join(thousands);\n\t };\n\t};\n\t\n\tvar formatNumerals = function(numerals) {\n\t return function(value) {\n\t return value.replace(/[0-9]/g, function(i) {\n\t return numerals[+i];\n\t });\n\t };\n\t};\n\t\n\tvar formatDefault = function(x, p) {\n\t x = x.toPrecision(p);\n\t\n\t out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n\t switch (x[i]) {\n\t case \".\": i0 = i1 = i; break;\n\t case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n\t case \"e\": break out;\n\t default: if (i0 > 0) i0 = 0; break;\n\t }\n\t }\n\t\n\t return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n\t};\n\t\n\tvar prefixExponent;\n\t\n\tvar formatPrefixAuto = function(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1],\n\t i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n\t n = coefficient.length;\n\t return i === n ? coefficient\n\t : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n\t : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n\t : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n\t};\n\t\n\tvar formatRounded = function(x, p) {\n\t var d = formatDecimal(x, p);\n\t if (!d) return x + \"\";\n\t var coefficient = d[0],\n\t exponent = d[1];\n\t return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n\t : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n\t : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n\t};\n\t\n\tvar formatTypes = {\n\t \"\": formatDefault,\n\t \"%\": function(x, p) { return (x * 100).toFixed(p); },\n\t \"b\": function(x) { return Math.round(x).toString(2); },\n\t \"c\": function(x) { return x + \"\"; },\n\t \"d\": function(x) { return Math.round(x).toString(10); },\n\t \"e\": function(x, p) { return x.toExponential(p); },\n\t \"f\": function(x, p) { return x.toFixed(p); },\n\t \"g\": function(x, p) { return x.toPrecision(p); },\n\t \"o\": function(x) { return Math.round(x).toString(8); },\n\t \"p\": function(x, p) { return formatRounded(x * 100, p); },\n\t \"r\": formatRounded,\n\t \"s\": formatPrefixAuto,\n\t \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n\t \"x\": function(x) { return Math.round(x).toString(16); }\n\t};\n\t\n\t// [[fill]align][sign][symbol][0][width][,][.precision][type]\n\tvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\t\n\tfunction formatSpecifier(specifier) {\n\t return new FormatSpecifier(specifier);\n\t}\n\t\n\tformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\t\n\tfunction FormatSpecifier(specifier) {\n\t if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\t\n\t var match,\n\t fill = match[1] || \" \",\n\t align = match[2] || \">\",\n\t sign = match[3] || \"-\",\n\t symbol = match[4] || \"\",\n\t zero = !!match[5],\n\t width = match[6] && +match[6],\n\t comma = !!match[7],\n\t precision = match[8] && +match[8].slice(1),\n\t type = match[9] || \"\";\n\t\n\t // The \"n\" type is an alias for \",g\".\n\t if (type === \"n\") comma = true, type = \"g\";\n\t\n\t // Map invalid types to the default format.\n\t else if (!formatTypes[type]) type = \"\";\n\t\n\t // If zero fill is specified, padding goes after sign and before digits.\n\t if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\t\n\t this.fill = fill;\n\t this.align = align;\n\t this.sign = sign;\n\t this.symbol = symbol;\n\t this.zero = zero;\n\t this.width = width;\n\t this.comma = comma;\n\t this.precision = precision;\n\t this.type = type;\n\t}\n\t\n\tFormatSpecifier.prototype.toString = function() {\n\t return this.fill\n\t + this.align\n\t + this.sign\n\t + this.symbol\n\t + (this.zero ? \"0\" : \"\")\n\t + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n\t + (this.comma ? \",\" : \"\")\n\t + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n\t + this.type;\n\t};\n\t\n\tvar identity = function(x) {\n\t return x;\n\t};\n\t\n\tvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\t\n\tvar formatLocale = function(locale) {\n\t var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n\t currency = locale.currency,\n\t decimal = locale.decimal,\n\t numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n\t percent = locale.percent || \"%\";\n\t\n\t function newFormat(specifier) {\n\t specifier = formatSpecifier(specifier);\n\t\n\t var fill = specifier.fill,\n\t align = specifier.align,\n\t sign = specifier.sign,\n\t symbol = specifier.symbol,\n\t zero = specifier.zero,\n\t width = specifier.width,\n\t comma = specifier.comma,\n\t precision = specifier.precision,\n\t type = specifier.type;\n\t\n\t // Compute the prefix and suffix.\n\t // For SI-prefix, the suffix is lazily computed.\n\t var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n\t suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\t\n\t // What format function should we use?\n\t // Is this an integer type?\n\t // Can this type generate exponential notation?\n\t var formatType = formatTypes[type],\n\t maybeSuffix = !type || /[defgprs%]/.test(type);\n\t\n\t // Set the default precision if not specified,\n\t // or clamp the specified precision to the supported range.\n\t // For significant precision, it must be in [1, 21].\n\t // For fixed precision, it must be in [0, 20].\n\t precision = precision == null ? (type ? 6 : 12)\n\t : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n\t : Math.max(0, Math.min(20, precision));\n\t\n\t function format(value) {\n\t var valuePrefix = prefix,\n\t valueSuffix = suffix,\n\t i, n, c;\n\t\n\t if (type === \"c\") {\n\t valueSuffix = formatType(value) + valueSuffix;\n\t value = \"\";\n\t } else {\n\t value = +value;\n\t\n\t // Perform the initial formatting.\n\t var valueNegative = value < 0;\n\t value = formatType(Math.abs(value), precision);\n\t\n\t // If a negative value rounds to zero during formatting, treat as positive.\n\t if (valueNegative && +value === 0) valueNegative = false;\n\t\n\t // Compute the prefix and suffix.\n\t valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n\t valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\t\n\t // Break the formatted value into the integer “value” part that can be\n\t // grouped, and fractional or exponential “suffix” part that is not.\n\t if (maybeSuffix) {\n\t i = -1, n = value.length;\n\t while (++i < n) {\n\t if (c = value.charCodeAt(i), 48 > c || c > 57) {\n\t valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n\t value = value.slice(0, i);\n\t break;\n\t }\n\t }\n\t }\n\t }\n\t\n\t // If the fill character is not \"0\", grouping is applied before padding.\n\t if (comma && !zero) value = group(value, Infinity);\n\t\n\t // Compute the padding.\n\t var length = valuePrefix.length + value.length + valueSuffix.length,\n\t padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\t\n\t // If the fill character is \"0\", grouping is applied after padding.\n\t if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\t\n\t // Reconstruct the final output based on the desired alignment.\n\t switch (align) {\n\t case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n\t case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n\t case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n\t default: value = padding + valuePrefix + value + valueSuffix; break;\n\t }\n\t\n\t return numerals(value);\n\t }\n\t\n\t format.toString = function() {\n\t return specifier + \"\";\n\t };\n\t\n\t return format;\n\t }\n\t\n\t function formatPrefix(specifier, value) {\n\t var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n\t e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n\t k = Math.pow(10, -e),\n\t prefix = prefixes[8 + e / 3];\n\t return function(value) {\n\t return f(k * value) + prefix;\n\t };\n\t }\n\t\n\t return {\n\t format: newFormat,\n\t formatPrefix: formatPrefix\n\t };\n\t};\n\t\n\tvar locale;\n\t\n\t\n\t\n\tdefaultLocale({\n\t decimal: \".\",\n\t thousands: \",\",\n\t grouping: [3],\n\t currency: [\"$\", \"\"]\n\t});\n\t\n\tfunction defaultLocale(definition) {\n\t locale = formatLocale(definition);\n\t exports.format = locale.format;\n\t exports.formatPrefix = locale.formatPrefix;\n\t return locale;\n\t}\n\t\n\tvar precisionFixed = function(step) {\n\t return Math.max(0, -exponent(Math.abs(step)));\n\t};\n\t\n\tvar precisionPrefix = function(step, value) {\n\t return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n\t};\n\t\n\tvar precisionRound = function(step, max) {\n\t step = Math.abs(step), max = Math.abs(max) - step;\n\t return Math.max(0, exponent(max) - exponent(step)) + 1;\n\t};\n\t\n\texports.formatDefaultLocale = defaultLocale;\n\texports.formatLocale = formatLocale;\n\texports.formatSpecifier = formatSpecifier;\n\texports.precisionFixed = precisionFixed;\n\texports.precisionPrefix = precisionPrefix;\n\texports.precisionRound = precisionRound;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-scale/ Version 1.0.6. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(1), __webpack_require__(8), __webpack_require__(9), __webpack_require__(6), __webpack_require__(10), __webpack_require__(11), __webpack_require__(4)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format', 'd3-color'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n\t}(this, (function (exports,d3Array,d3Collection,d3Interpolate,d3Format,d3Time,d3TimeFormat,d3Color) { 'use strict';\n\t\n\tvar array = Array.prototype;\n\t\n\tvar map$1 = array.map;\n\tvar slice = array.slice;\n\t\n\tvar implicit = {name: \"implicit\"};\n\t\n\tfunction ordinal(range$$1) {\n\t var index = d3Collection.map(),\n\t domain = [],\n\t unknown = implicit;\n\t\n\t range$$1 = range$$1 == null ? [] : slice.call(range$$1);\n\t\n\t function scale(d) {\n\t var key = d + \"\", i = index.get(key);\n\t if (!i) {\n\t if (unknown !== implicit) return unknown;\n\t index.set(key, i = domain.push(d));\n\t }\n\t return range$$1[(i - 1) % range$$1.length];\n\t }\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [], index = d3Collection.map();\n\t var i = -1, n = _.length, d, key;\n\t while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n\t return scale;\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();\n\t };\n\t\n\t scale.unknown = function(_) {\n\t return arguments.length ? (unknown = _, scale) : unknown;\n\t };\n\t\n\t scale.copy = function() {\n\t return ordinal()\n\t .domain(domain)\n\t .range(range$$1)\n\t .unknown(unknown);\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tfunction band() {\n\t var scale = ordinal().unknown(undefined),\n\t domain = scale.domain,\n\t ordinalRange = scale.range,\n\t range$$1 = [0, 1],\n\t step,\n\t bandwidth,\n\t round = false,\n\t paddingInner = 0,\n\t paddingOuter = 0,\n\t align = 0.5;\n\t\n\t delete scale.unknown;\n\t\n\t function rescale() {\n\t var n = domain().length,\n\t reverse = range$$1[1] < range$$1[0],\n\t start = range$$1[reverse - 0],\n\t stop = range$$1[1 - reverse];\n\t step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n\t if (round) step = Math.floor(step);\n\t start += (stop - start - step * (n - paddingInner)) * align;\n\t bandwidth = step * (1 - paddingInner);\n\t if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n\t var values = d3Array.range(n).map(function(i) { return start + step * i; });\n\t return ordinalRange(reverse ? values.reverse() : values);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range$$1 = [+_[0], +_[1]], round = true, rescale();\n\t };\n\t\n\t scale.bandwidth = function() {\n\t return bandwidth;\n\t };\n\t\n\t scale.step = function() {\n\t return step;\n\t };\n\t\n\t scale.round = function(_) {\n\t return arguments.length ? (round = !!_, rescale()) : round;\n\t };\n\t\n\t scale.padding = function(_) {\n\t return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingInner = function(_) {\n\t return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n\t };\n\t\n\t scale.paddingOuter = function(_) {\n\t return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n\t };\n\t\n\t scale.align = function(_) {\n\t return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n\t };\n\t\n\t scale.copy = function() {\n\t return band()\n\t .domain(domain())\n\t .range(range$$1)\n\t .round(round)\n\t .paddingInner(paddingInner)\n\t .paddingOuter(paddingOuter)\n\t .align(align);\n\t };\n\t\n\t return rescale();\n\t}\n\t\n\tfunction pointish(scale) {\n\t var copy = scale.copy;\n\t\n\t scale.padding = scale.paddingOuter;\n\t delete scale.paddingInner;\n\t delete scale.paddingOuter;\n\t\n\t scale.copy = function() {\n\t return pointish(copy());\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tfunction point() {\n\t return pointish(band().paddingInner(1));\n\t}\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tvar number = function(x) {\n\t return +x;\n\t};\n\t\n\tvar unit = [0, 1];\n\t\n\tfunction deinterpolateLinear(a, b) {\n\t return (b -= (a = +a))\n\t ? function(x) { return (x - a) / b; }\n\t : constant(b);\n\t}\n\t\n\tfunction deinterpolateClamp(deinterpolate) {\n\t return function(a, b) {\n\t var d = deinterpolate(a = +a, b = +b);\n\t return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n\t };\n\t}\n\t\n\tfunction reinterpolateClamp(reinterpolate) {\n\t return function(a, b) {\n\t var r = reinterpolate(a = +a, b = +b);\n\t return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n\t };\n\t}\n\t\n\tfunction bimap(domain, range$$1, deinterpolate, reinterpolate) {\n\t var d0 = domain[0], d1 = domain[1], r0 = range$$1[0], r1 = range$$1[1];\n\t if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n\t else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n\t return function(x) { return r0(d0(x)); };\n\t}\n\t\n\tfunction polymap(domain, range$$1, deinterpolate, reinterpolate) {\n\t var j = Math.min(domain.length, range$$1.length) - 1,\n\t d = new Array(j),\n\t r = new Array(j),\n\t i = -1;\n\t\n\t // Reverse descending domains.\n\t if (domain[j] < domain[0]) {\n\t domain = domain.slice().reverse();\n\t range$$1 = range$$1.slice().reverse();\n\t }\n\t\n\t while (++i < j) {\n\t d[i] = deinterpolate(domain[i], domain[i + 1]);\n\t r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);\n\t }\n\t\n\t return function(x) {\n\t var i = d3Array.bisect(domain, x, 1, j) - 1;\n\t return r[i](d[i](x));\n\t };\n\t}\n\t\n\tfunction copy(source, target) {\n\t return target\n\t .domain(source.domain())\n\t .range(source.range())\n\t .interpolate(source.interpolate())\n\t .clamp(source.clamp());\n\t}\n\t\n\t// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n\t// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\n\tfunction continuous(deinterpolate, reinterpolate) {\n\t var domain = unit,\n\t range$$1 = unit,\n\t interpolate$$1 = d3Interpolate.interpolate,\n\t clamp = false,\n\t piecewise,\n\t output,\n\t input;\n\t\n\t function rescale() {\n\t piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;\n\t output = input = null;\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n\t };\n\t\n\t scale.rangeRound = function(_) {\n\t return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, rescale()) : clamp;\n\t };\n\t\n\t scale.interpolate = function(_) {\n\t return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;\n\t };\n\t\n\t return rescale();\n\t}\n\t\n\tvar tickFormat = function(domain, count, specifier) {\n\t var start = domain[0],\n\t stop = domain[domain.length - 1],\n\t step = d3Array.tickStep(start, stop, count == null ? 10 : count),\n\t precision;\n\t specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n\t switch (specifier.type) {\n\t case \"s\": {\n\t var value = Math.max(Math.abs(start), Math.abs(stop));\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n\t return d3Format.formatPrefix(specifier, value);\n\t }\n\t case \"\":\n\t case \"e\":\n\t case \"g\":\n\t case \"p\":\n\t case \"r\": {\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n\t break;\n\t }\n\t case \"f\":\n\t case \"%\": {\n\t if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n\t break;\n\t }\n\t }\n\t return d3Format.format(specifier);\n\t};\n\t\n\tfunction linearish(scale) {\n\t var domain = scale.domain;\n\t\n\t scale.ticks = function(count) {\n\t var d = domain();\n\t return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return tickFormat(domain(), count, specifier);\n\t };\n\t\n\t scale.nice = function(count) {\n\t if (count == null) count = 10;\n\t\n\t var d = domain(),\n\t i0 = 0,\n\t i1 = d.length - 1,\n\t start = d[i0],\n\t stop = d[i1],\n\t step;\n\t\n\t if (stop < start) {\n\t step = start, start = stop, stop = step;\n\t step = i0, i0 = i1, i1 = step;\n\t }\n\t\n\t step = d3Array.tickIncrement(start, stop, count);\n\t\n\t if (step > 0) {\n\t start = Math.floor(start / step) * step;\n\t stop = Math.ceil(stop / step) * step;\n\t step = d3Array.tickIncrement(start, stop, count);\n\t } else if (step < 0) {\n\t start = Math.ceil(start * step) / step;\n\t stop = Math.floor(stop * step) / step;\n\t step = d3Array.tickIncrement(start, stop, count);\n\t }\n\t\n\t if (step > 0) {\n\t d[i0] = Math.floor(start / step) * step;\n\t d[i1] = Math.ceil(stop / step) * step;\n\t domain(d);\n\t } else if (step < 0) {\n\t d[i0] = Math.ceil(start * step) / step;\n\t d[i1] = Math.floor(stop * step) / step;\n\t domain(d);\n\t }\n\t\n\t return scale;\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tfunction linear() {\n\t var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);\n\t\n\t scale.copy = function() {\n\t return copy(scale, linear());\n\t };\n\t\n\t return linearish(scale);\n\t}\n\t\n\tfunction identity() {\n\t var domain = [0, 1];\n\t\n\t function scale(x) {\n\t return +x;\n\t }\n\t\n\t scale.invert = scale;\n\t\n\t scale.domain = scale.range = function(_) {\n\t return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return identity().domain(domain);\n\t };\n\t\n\t return linearish(scale);\n\t}\n\t\n\tvar nice = function(domain, interval) {\n\t domain = domain.slice();\n\t\n\t var i0 = 0,\n\t i1 = domain.length - 1,\n\t x0 = domain[i0],\n\t x1 = domain[i1],\n\t t;\n\t\n\t if (x1 < x0) {\n\t t = i0, i0 = i1, i1 = t;\n\t t = x0, x0 = x1, x1 = t;\n\t }\n\t\n\t domain[i0] = interval.floor(x0);\n\t domain[i1] = interval.ceil(x1);\n\t return domain;\n\t};\n\t\n\tfunction deinterpolate(a, b) {\n\t return (b = Math.log(b / a))\n\t ? function(x) { return Math.log(x / a) / b; }\n\t : constant(b);\n\t}\n\t\n\tfunction reinterpolate(a, b) {\n\t return a < 0\n\t ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n\t : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n\t}\n\t\n\tfunction pow10(x) {\n\t return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n\t}\n\t\n\tfunction powp(base) {\n\t return base === 10 ? pow10\n\t : base === Math.E ? Math.exp\n\t : function(x) { return Math.pow(base, x); };\n\t}\n\t\n\tfunction logp(base) {\n\t return base === Math.E ? Math.log\n\t : base === 10 && Math.log10\n\t || base === 2 && Math.log2\n\t || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n\t}\n\t\n\tfunction reflect(f) {\n\t return function(x) {\n\t return -f(-x);\n\t };\n\t}\n\t\n\tfunction log() {\n\t var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n\t domain = scale.domain,\n\t base = 10,\n\t logs = logp(10),\n\t pows = powp(10);\n\t\n\t function rescale() {\n\t logs = logp(base), pows = powp(base);\n\t if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n\t return scale;\n\t }\n\t\n\t scale.base = function(_) {\n\t return arguments.length ? (base = +_, rescale()) : base;\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain(_), rescale()) : domain();\n\t };\n\t\n\t scale.ticks = function(count) {\n\t var d = domain(),\n\t u = d[0],\n\t v = d[d.length - 1],\n\t r;\n\t\n\t if (r = v < u) i = u, u = v, v = i;\n\t\n\t var i = logs(u),\n\t j = logs(v),\n\t p,\n\t k,\n\t t,\n\t n = count == null ? 10 : +count,\n\t z = [];\n\t\n\t if (!(base % 1) && j - i < n) {\n\t i = Math.round(i) - 1, j = Math.round(j) + 1;\n\t if (u > 0) for (; i < j; ++i) {\n\t for (k = 1, p = pows(i); k < base; ++k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t } else for (; i < j; ++i) {\n\t for (k = base - 1, p = pows(i); k >= 1; --k) {\n\t t = p * k;\n\t if (t < u) continue;\n\t if (t > v) break;\n\t z.push(t);\n\t }\n\t }\n\t } else {\n\t z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n\t }\n\t\n\t return r ? z.reverse() : z;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n\t if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n\t if (count === Infinity) return specifier;\n\t if (count == null) count = 10;\n\t var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n\t return function(d) {\n\t var i = d / pows(Math.round(logs(d)));\n\t if (i * base < base - 0.5) i *= base;\n\t return i <= k ? specifier(d) : \"\";\n\t };\n\t };\n\t\n\t scale.nice = function() {\n\t return domain(nice(domain(), {\n\t floor: function(x) { return pows(Math.floor(logs(x))); },\n\t ceil: function(x) { return pows(Math.ceil(logs(x))); }\n\t }));\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, log().base(base));\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tfunction raise(x, exponent) {\n\t return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n\t}\n\t\n\tfunction pow() {\n\t var exponent = 1,\n\t scale = continuous(deinterpolate, reinterpolate),\n\t domain = scale.domain;\n\t\n\t function deinterpolate(a, b) {\n\t return (b = raise(b, exponent) - (a = raise(a, exponent)))\n\t ? function(x) { return (raise(x, exponent) - a) / b; }\n\t : constant(b);\n\t }\n\t\n\t function reinterpolate(a, b) {\n\t b = raise(b, exponent) - (a = raise(a, exponent));\n\t return function(t) { return raise(a + b * t, 1 / exponent); };\n\t }\n\t\n\t scale.exponent = function(_) {\n\t return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, pow().exponent(exponent));\n\t };\n\t\n\t return linearish(scale);\n\t}\n\t\n\tfunction sqrt() {\n\t return pow().exponent(0.5);\n\t}\n\t\n\tfunction quantile$1() {\n\t var domain = [],\n\t range$$1 = [],\n\t thresholds = [];\n\t\n\t function rescale() {\n\t var i = 0, n = Math.max(1, range$$1.length);\n\t thresholds = new Array(n - 1);\n\t while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);\n\t return scale;\n\t }\n\t\n\t function scale(x) {\n\t if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];\n\t }\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range$$1.indexOf(y);\n\t return i < 0 ? [NaN, NaN] : [\n\t i > 0 ? thresholds[i - 1] : domain[0],\n\t i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n\t ];\n\t };\n\t\n\t scale.domain = function(_) {\n\t if (!arguments.length) return domain.slice();\n\t domain = [];\n\t for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n\t domain.sort(d3Array.ascending);\n\t return rescale();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n\t };\n\t\n\t scale.quantiles = function() {\n\t return thresholds.slice();\n\t };\n\t\n\t scale.copy = function() {\n\t return quantile$1()\n\t .domain(domain)\n\t .range(range$$1);\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tfunction quantize() {\n\t var x0 = 0,\n\t x1 = 1,\n\t n = 1,\n\t domain = [0.5],\n\t range$$1 = [0, 1];\n\t\n\t function scale(x) {\n\t if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n\t }\n\t\n\t function rescale() {\n\t var i = -1;\n\t domain = new Array(n);\n\t while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n\t return scale;\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range$$1.indexOf(y);\n\t return i < 0 ? [NaN, NaN]\n\t : i < 1 ? [x0, domain[0]]\n\t : i >= n ? [domain[n - 1], x1]\n\t : [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return quantize()\n\t .domain([x0, x1])\n\t .range(range$$1);\n\t };\n\t\n\t return linearish(scale);\n\t}\n\t\n\tfunction threshold() {\n\t var domain = [0.5],\n\t range$$1 = [0, 1],\n\t n = 1;\n\t\n\t function scale(x) {\n\t if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();\n\t };\n\t\n\t scale.range = function(_) {\n\t return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();\n\t };\n\t\n\t scale.invertExtent = function(y) {\n\t var i = range$$1.indexOf(y);\n\t return [domain[i - 1], domain[i]];\n\t };\n\t\n\t scale.copy = function() {\n\t return threshold()\n\t .domain(domain)\n\t .range(range$$1);\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tvar durationSecond = 1000;\n\tvar durationMinute = durationSecond * 60;\n\tvar durationHour = durationMinute * 60;\n\tvar durationDay = durationHour * 24;\n\tvar durationWeek = durationDay * 7;\n\tvar durationMonth = durationDay * 30;\n\tvar durationYear = durationDay * 365;\n\t\n\tfunction date(t) {\n\t return new Date(t);\n\t}\n\t\n\tfunction number$1(t) {\n\t return t instanceof Date ? +t : +new Date(+t);\n\t}\n\t\n\tfunction calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {\n\t var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),\n\t invert = scale.invert,\n\t domain = scale.domain;\n\t\n\t var formatMillisecond = format$$1(\".%L\"),\n\t formatSecond = format$$1(\":%S\"),\n\t formatMinute = format$$1(\"%I:%M\"),\n\t formatHour = format$$1(\"%I %p\"),\n\t formatDay = format$$1(\"%a %d\"),\n\t formatWeek = format$$1(\"%b %d\"),\n\t formatMonth = format$$1(\"%B\"),\n\t formatYear = format$$1(\"%Y\");\n\t\n\t var tickIntervals = [\n\t [second, 1, durationSecond],\n\t [second, 5, 5 * durationSecond],\n\t [second, 15, 15 * durationSecond],\n\t [second, 30, 30 * durationSecond],\n\t [minute, 1, durationMinute],\n\t [minute, 5, 5 * durationMinute],\n\t [minute, 15, 15 * durationMinute],\n\t [minute, 30, 30 * durationMinute],\n\t [ hour, 1, durationHour ],\n\t [ hour, 3, 3 * durationHour ],\n\t [ hour, 6, 6 * durationHour ],\n\t [ hour, 12, 12 * durationHour ],\n\t [ day, 1, durationDay ],\n\t [ day, 2, 2 * durationDay ],\n\t [ week, 1, durationWeek ],\n\t [ month, 1, durationMonth ],\n\t [ month, 3, 3 * durationMonth ],\n\t [ year, 1, durationYear ]\n\t ];\n\t\n\t function tickFormat(date) {\n\t return (second(date) < date ? formatMillisecond\n\t : minute(date) < date ? formatSecond\n\t : hour(date) < date ? formatMinute\n\t : day(date) < date ? formatHour\n\t : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n\t : year(date) < date ? formatMonth\n\t : formatYear)(date);\n\t }\n\t\n\t function tickInterval(interval, start, stop, step) {\n\t if (interval == null) interval = 10;\n\t\n\t // If a desired tick count is specified, pick a reasonable tick interval\n\t // based on the extent of the domain and a rough estimate of tick size.\n\t // Otherwise, assume interval is already a time interval and use it.\n\t if (typeof interval === \"number\") {\n\t var target = Math.abs(stop - start) / interval,\n\t i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n\t if (i === tickIntervals.length) {\n\t step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n\t interval = year;\n\t } else if (i) {\n\t i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n\t step = i[1];\n\t interval = i[0];\n\t } else {\n\t step = d3Array.tickStep(start, stop, interval);\n\t interval = millisecond;\n\t }\n\t }\n\t\n\t return step == null ? interval : interval.every(step);\n\t }\n\t\n\t scale.invert = function(y) {\n\t return new Date(invert(y));\n\t };\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);\n\t };\n\t\n\t scale.ticks = function(interval, step) {\n\t var d = domain(),\n\t t0 = d[0],\n\t t1 = d[d.length - 1],\n\t r = t1 < t0,\n\t t;\n\t if (r) t = t0, t0 = t1, t1 = t;\n\t t = tickInterval(interval, t0, t1, step);\n\t t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n\t return r ? t.reverse() : t;\n\t };\n\t\n\t scale.tickFormat = function(count, specifier) {\n\t return specifier == null ? tickFormat : format$$1(specifier);\n\t };\n\t\n\t scale.nice = function(interval, step) {\n\t var d = domain();\n\t return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n\t ? domain(nice(d, interval))\n\t : scale;\n\t };\n\t\n\t scale.copy = function() {\n\t return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));\n\t };\n\t\n\t return scale;\n\t}\n\t\n\tvar time = function() {\n\t return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n\t};\n\t\n\tvar utcTime = function() {\n\t return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n\t};\n\t\n\tvar colors = function(s) {\n\t return s.match(/.{6}/g).map(function(x) {\n\t return \"#\" + x;\n\t });\n\t};\n\t\n\tvar category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\t\n\tvar category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\t\n\tvar category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\t\n\tvar category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\t\n\tvar cubehelix$1 = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0));\n\t\n\tvar warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\t\n\tvar cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\t\n\tvar rainbow = d3Color.cubehelix();\n\t\n\tvar rainbow$1 = function(t) {\n\t if (t < 0 || t > 1) t -= Math.floor(t);\n\t var ts = Math.abs(t - 0.5);\n\t rainbow.h = 360 * t - 100;\n\t rainbow.s = 1.5 - 1.5 * ts;\n\t rainbow.l = 0.8 - 0.9 * ts;\n\t return rainbow + \"\";\n\t};\n\t\n\tfunction ramp(range$$1) {\n\t var n = range$$1.length;\n\t return function(t) {\n\t return range$$1[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n\t };\n\t}\n\t\n\tvar viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\t\n\tvar magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\t\n\tvar inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\t\n\tvar plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\t\n\tfunction sequential(interpolator) {\n\t var x0 = 0,\n\t x1 = 1,\n\t clamp = false;\n\t\n\t function scale(x) {\n\t var t = (x - x0) / (x1 - x0);\n\t return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n\t }\n\t\n\t scale.domain = function(_) {\n\t return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n\t };\n\t\n\t scale.clamp = function(_) {\n\t return arguments.length ? (clamp = !!_, scale) : clamp;\n\t };\n\t\n\t scale.interpolator = function(_) {\n\t return arguments.length ? (interpolator = _, scale) : interpolator;\n\t };\n\t\n\t scale.copy = function() {\n\t return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n\t };\n\t\n\t return linearish(scale);\n\t}\n\t\n\texports.scaleBand = band;\n\texports.scalePoint = point;\n\texports.scaleIdentity = identity;\n\texports.scaleLinear = linear;\n\texports.scaleLog = log;\n\texports.scaleOrdinal = ordinal;\n\texports.scaleImplicit = implicit;\n\texports.scalePow = pow;\n\texports.scaleSqrt = sqrt;\n\texports.scaleQuantile = quantile$1;\n\texports.scaleQuantize = quantize;\n\texports.scaleThreshold = threshold;\n\texports.scaleTime = time;\n\texports.scaleUtc = utcTime;\n\texports.schemeCategory10 = category10;\n\texports.schemeCategory20b = category20b;\n\texports.schemeCategory20c = category20c;\n\texports.schemeCategory20 = category20;\n\texports.interpolateCubehelixDefault = cubehelix$1;\n\texports.interpolateRainbow = rainbow$1;\n\texports.interpolateWarm = warm;\n\texports.interpolateCool = cool;\n\texports.interpolateViridis = viridis;\n\texports.interpolateMagma = magma;\n\texports.interpolateInferno = inferno;\n\texports.interpolatePlasma = plasma;\n\texports.scaleSequential = sequential;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar prefix = \"$\";\n\t\n\tfunction Map() {}\n\t\n\tMap.prototype = map.prototype = {\n\t constructor: Map,\n\t has: function(key) {\n\t return (prefix + key) in this;\n\t },\n\t get: function(key) {\n\t return this[prefix + key];\n\t },\n\t set: function(key, value) {\n\t this[prefix + key] = value;\n\t return this;\n\t },\n\t remove: function(key) {\n\t var property = prefix + key;\n\t return property in this && delete this[property];\n\t },\n\t clear: function() {\n\t for (var property in this) if (property[0] === prefix) delete this[property];\n\t },\n\t keys: function() {\n\t var keys = [];\n\t for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n\t return keys;\n\t },\n\t values: function() {\n\t var values = [];\n\t for (var property in this) if (property[0] === prefix) values.push(this[property]);\n\t return values;\n\t },\n\t entries: function() {\n\t var entries = [];\n\t for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n\t return entries;\n\t },\n\t size: function() {\n\t var size = 0;\n\t for (var property in this) if (property[0] === prefix) ++size;\n\t return size;\n\t },\n\t empty: function() {\n\t for (var property in this) if (property[0] === prefix) return false;\n\t return true;\n\t },\n\t each: function(f) {\n\t for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n\t }\n\t};\n\t\n\tfunction map(object, f) {\n\t var map = new Map;\n\t\n\t // Copy constructor.\n\t if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\t\n\t // Index array by numeric index or specified key function.\n\t else if (Array.isArray(object)) {\n\t var i = -1,\n\t n = object.length,\n\t o;\n\t\n\t if (f == null) while (++i < n) map.set(i, object[i]);\n\t else while (++i < n) map.set(f(o = object[i], i, object), o);\n\t }\n\t\n\t // Convert object to map.\n\t else if (object) for (var key in object) map.set(key, object[key]);\n\t\n\t return map;\n\t}\n\t\n\tvar nest = function() {\n\t var keys = [],\n\t sortKeys = [],\n\t sortValues,\n\t rollup,\n\t nest;\n\t\n\t function apply(array, depth, createResult, setResult) {\n\t if (depth >= keys.length) {\n\t if (sortValues != null) array.sort(sortValues);\n\t return rollup != null ? rollup(array) : array;\n\t }\n\t\n\t var i = -1,\n\t n = array.length,\n\t key = keys[depth++],\n\t keyValue,\n\t value,\n\t valuesByKey = map(),\n\t values,\n\t result = createResult();\n\t\n\t while (++i < n) {\n\t if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n\t values.push(value);\n\t } else {\n\t valuesByKey.set(keyValue, [value]);\n\t }\n\t }\n\t\n\t valuesByKey.each(function(values, key) {\n\t setResult(result, key, apply(values, depth, createResult, setResult));\n\t });\n\t\n\t return result;\n\t }\n\t\n\t function entries(map$$1, depth) {\n\t if (++depth > keys.length) return map$$1;\n\t var array, sortKey = sortKeys[depth - 1];\n\t if (rollup != null && depth >= keys.length) array = map$$1.entries();\n\t else array = [], map$$1.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n\t return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n\t }\n\t\n\t return nest = {\n\t object: function(array) { return apply(array, 0, createObject, setObject); },\n\t map: function(array) { return apply(array, 0, createMap, setMap); },\n\t entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n\t key: function(d) { keys.push(d); return nest; },\n\t sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n\t sortValues: function(order) { sortValues = order; return nest; },\n\t rollup: function(f) { rollup = f; return nest; }\n\t };\n\t};\n\t\n\tfunction createObject() {\n\t return {};\n\t}\n\t\n\tfunction setObject(object, key, value) {\n\t object[key] = value;\n\t}\n\t\n\tfunction createMap() {\n\t return map();\n\t}\n\t\n\tfunction setMap(map$$1, key, value) {\n\t map$$1.set(key, value);\n\t}\n\t\n\tfunction Set() {}\n\t\n\tvar proto = map.prototype;\n\t\n\tSet.prototype = set.prototype = {\n\t constructor: Set,\n\t has: proto.has,\n\t add: function(value) {\n\t value += \"\";\n\t this[prefix + value] = value;\n\t return this;\n\t },\n\t remove: proto.remove,\n\t clear: proto.clear,\n\t values: proto.keys,\n\t size: proto.size,\n\t empty: proto.empty,\n\t each: proto.each\n\t};\n\t\n\tfunction set(object, f) {\n\t var set = new Set;\n\t\n\t // Copy constructor.\n\t if (object instanceof Set) object.each(function(value) { set.add(value); });\n\t\n\t // Otherwise, assume it’s an array.\n\t else if (object) {\n\t var i = -1, n = object.length;\n\t if (f == null) while (++i < n) set.add(object[i]);\n\t else while (++i < n) set.add(f(object[i], i, object));\n\t }\n\t\n\t return set;\n\t}\n\t\n\tvar keys = function(map) {\n\t var keys = [];\n\t for (var key in map) keys.push(key);\n\t return keys;\n\t};\n\t\n\tvar values = function(map) {\n\t var values = [];\n\t for (var key in map) values.push(map[key]);\n\t return values;\n\t};\n\t\n\tvar entries = function(map) {\n\t var entries = [];\n\t for (var key in map) entries.push({key: key, value: map[key]});\n\t return entries;\n\t};\n\t\n\texports.nest = nest;\n\texports.set = set;\n\texports.map = map;\n\texports.keys = keys;\n\texports.values = values;\n\texports.entries = entries;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(4)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, (function (exports,d3Color) { 'use strict';\n\t\n\tfunction basis(t1, v0, v1, v2, v3) {\n\t var t2 = t1 * t1, t3 = t2 * t1;\n\t return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n\t + (4 - 6 * t2 + 3 * t3) * v1\n\t + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n\t + t3 * v3) / 6;\n\t}\n\t\n\tvar basis$1 = function(values) {\n\t var n = values.length - 1;\n\t return function(t) {\n\t var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n\t v1 = values[i],\n\t v2 = values[i + 1],\n\t v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n\t v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t};\n\t\n\tvar basisClosed = function(values) {\n\t var n = values.length;\n\t return function(t) {\n\t var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n\t v0 = values[(i + n - 1) % n],\n\t v1 = values[i % n],\n\t v2 = values[(i + 1) % n],\n\t v3 = values[(i + 2) % n];\n\t return basis((t - i / n) * n, v0, v1, v2, v3);\n\t };\n\t};\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tfunction linear(a, d) {\n\t return function(t) {\n\t return a + t * d;\n\t };\n\t}\n\t\n\tfunction exponential(a, b, y) {\n\t return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n\t return Math.pow(a + t * b, y);\n\t };\n\t}\n\t\n\tfunction hue(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n\t}\n\t\n\tfunction gamma(y) {\n\t return (y = +y) === 1 ? nogamma : function(a, b) {\n\t return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n\t };\n\t}\n\t\n\tfunction nogamma(a, b) {\n\t var d = b - a;\n\t return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n\t}\n\t\n\tvar rgb$1 = ((function rgbGamma(y) {\n\t var color$$1 = gamma(y);\n\t\n\t function rgb$$1(start, end) {\n\t var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n\t g = color$$1(start.g, end.g),\n\t b = color$$1(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.r = r(t);\n\t start.g = g(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t rgb$$1.gamma = rgbGamma;\n\t\n\t return rgb$$1;\n\t}))(1);\n\t\n\tfunction rgbSpline(spline) {\n\t return function(colors) {\n\t var n = colors.length,\n\t r = new Array(n),\n\t g = new Array(n),\n\t b = new Array(n),\n\t i, color$$1;\n\t for (i = 0; i < n; ++i) {\n\t color$$1 = d3Color.rgb(colors[i]);\n\t r[i] = color$$1.r || 0;\n\t g[i] = color$$1.g || 0;\n\t b[i] = color$$1.b || 0;\n\t }\n\t r = spline(r);\n\t g = spline(g);\n\t b = spline(b);\n\t color$$1.opacity = 1;\n\t return function(t) {\n\t color$$1.r = r(t);\n\t color$$1.g = g(t);\n\t color$$1.b = b(t);\n\t return color$$1 + \"\";\n\t };\n\t };\n\t}\n\t\n\tvar rgbBasis = rgbSpline(basis$1);\n\tvar rgbBasisClosed = rgbSpline(basisClosed);\n\t\n\tvar array = function(a, b) {\n\t var nb = b ? b.length : 0,\n\t na = a ? Math.min(nb, a.length) : 0,\n\t x = new Array(nb),\n\t c = new Array(nb),\n\t i;\n\t\n\t for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n\t for (; i < nb; ++i) c[i] = b[i];\n\t\n\t return function(t) {\n\t for (i = 0; i < na; ++i) c[i] = x[i](t);\n\t return c;\n\t };\n\t};\n\t\n\tvar date = function(a, b) {\n\t var d = new Date;\n\t return a = +a, b -= a, function(t) {\n\t return d.setTime(a + b * t), d;\n\t };\n\t};\n\t\n\tvar number = function(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return a + b * t;\n\t };\n\t};\n\t\n\tvar object = function(a, b) {\n\t var i = {},\n\t c = {},\n\t k;\n\t\n\t if (a === null || typeof a !== \"object\") a = {};\n\t if (b === null || typeof b !== \"object\") b = {};\n\t\n\t for (k in b) {\n\t if (k in a) {\n\t i[k] = value(a[k], b[k]);\n\t } else {\n\t c[k] = b[k];\n\t }\n\t }\n\t\n\t return function(t) {\n\t for (k in i) c[k] = i[k](t);\n\t return c;\n\t };\n\t};\n\t\n\tvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\n\tvar reB = new RegExp(reA.source, \"g\");\n\t\n\tfunction zero(b) {\n\t return function() {\n\t return b;\n\t };\n\t}\n\t\n\tfunction one(b) {\n\t return function(t) {\n\t return b(t) + \"\";\n\t };\n\t}\n\t\n\tvar string = function(a, b) {\n\t var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n\t am, // current match in a\n\t bm, // current match in b\n\t bs, // string preceding current number in b, if any\n\t i = -1, // index in s\n\t s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t\n\t // Coerce inputs to strings.\n\t a = a + \"\", b = b + \"\";\n\t\n\t // Interpolate pairs of numbers in a & b.\n\t while ((am = reA.exec(a))\n\t && (bm = reB.exec(b))) {\n\t if ((bs = bm.index) > bi) { // a string precedes the next number in b\n\t bs = b.slice(bi, bs);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n\t if (s[i]) s[i] += bm; // coalesce with previous string\n\t else s[++i] = bm;\n\t } else { // interpolate non-matching numbers\n\t s[++i] = null;\n\t q.push({i: i, x: number(am, bm)});\n\t }\n\t bi = reB.lastIndex;\n\t }\n\t\n\t // Add remains of b.\n\t if (bi < b.length) {\n\t bs = b.slice(bi);\n\t if (s[i]) s[i] += bs; // coalesce with previous string\n\t else s[++i] = bs;\n\t }\n\t\n\t // Special optimization for only a single match.\n\t // Otherwise, interpolate each of the numbers and rejoin the string.\n\t return s.length < 2 ? (q[0]\n\t ? one(q[0].x)\n\t : zero(b))\n\t : (b = q.length, function(t) {\n\t for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t });\n\t};\n\t\n\tvar value = function(a, b) {\n\t var t = typeof b, c;\n\t return b == null || t === \"boolean\" ? constant(b)\n\t : (t === \"number\" ? number\n\t : t === \"string\" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)\n\t : b instanceof d3Color.color ? rgb$1\n\t : b instanceof Date ? date\n\t : Array.isArray(b) ? array\n\t : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n\t : number)(a, b);\n\t};\n\t\n\tvar round = function(a, b) {\n\t return a = +a, b -= a, function(t) {\n\t return Math.round(a + b * t);\n\t };\n\t};\n\t\n\tvar degrees = 180 / Math.PI;\n\t\n\tvar identity = {\n\t translateX: 0,\n\t translateY: 0,\n\t rotate: 0,\n\t skewX: 0,\n\t scaleX: 1,\n\t scaleY: 1\n\t};\n\t\n\tvar decompose = function(a, b, c, d, e, f) {\n\t var scaleX, scaleY, skewX;\n\t if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n\t if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n\t if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n\t if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n\t return {\n\t translateX: e,\n\t translateY: f,\n\t rotate: Math.atan2(b, a) * degrees,\n\t skewX: Math.atan(skewX) * degrees,\n\t scaleX: scaleX,\n\t scaleY: scaleY\n\t };\n\t};\n\t\n\tvar cssNode;\n\tvar cssRoot;\n\tvar cssView;\n\tvar svgNode;\n\t\n\tfunction parseCss(value) {\n\t if (value === \"none\") return identity;\n\t if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n\t cssNode.style.transform = value;\n\t value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n\t cssRoot.removeChild(cssNode);\n\t value = value.slice(7, -1).split(\",\");\n\t return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n\t}\n\t\n\tfunction parseSvg(value) {\n\t if (value == null) return identity;\n\t if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n\t svgNode.setAttribute(\"transform\", value);\n\t if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n\t value = value.matrix;\n\t return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n\t}\n\t\n\tfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\t\n\t function pop(s) {\n\t return s.length ? s.pop() + \" \" : \"\";\n\t }\n\t\n\t function translate(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb || yb) {\n\t s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n\t }\n\t }\n\t\n\t function rotate(a, b, s, q) {\n\t if (a !== b) {\n\t if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n\t q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"rotate(\" + b + degParen);\n\t }\n\t }\n\t\n\t function skewX(a, b, s, q) {\n\t if (a !== b) {\n\t q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n\t } else if (b) {\n\t s.push(pop(s) + \"skewX(\" + b + degParen);\n\t }\n\t }\n\t\n\t function scale(xa, ya, xb, yb, s, q) {\n\t if (xa !== xb || ya !== yb) {\n\t var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n\t q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n\t } else if (xb !== 1 || yb !== 1) {\n\t s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n\t }\n\t }\n\t\n\t return function(a, b) {\n\t var s = [], // string constants and placeholders\n\t q = []; // number interpolators\n\t a = parse(a), b = parse(b);\n\t translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n\t rotate(a.rotate, b.rotate, s, q);\n\t skewX(a.skewX, b.skewX, s, q);\n\t scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n\t a = b = null; // gc\n\t return function(t) {\n\t var i = -1, n = q.length, o;\n\t while (++i < n) s[(o = q[i]).i] = o.x(t);\n\t return s.join(\"\");\n\t };\n\t };\n\t}\n\t\n\tvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\n\tvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\t\n\tvar rho = Math.SQRT2;\n\tvar rho2 = 2;\n\tvar rho4 = 4;\n\tvar epsilon2 = 1e-12;\n\t\n\tfunction cosh(x) {\n\t return ((x = Math.exp(x)) + 1 / x) / 2;\n\t}\n\t\n\tfunction sinh(x) {\n\t return ((x = Math.exp(x)) - 1 / x) / 2;\n\t}\n\t\n\tfunction tanh(x) {\n\t return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n\t}\n\t\n\t// p0 = [ux0, uy0, w0]\n\t// p1 = [ux1, uy1, w1]\n\tvar zoom = function(p0, p1) {\n\t var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n\t ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n\t dx = ux1 - ux0,\n\t dy = uy1 - uy0,\n\t d2 = dx * dx + dy * dy,\n\t i,\n\t S;\n\t\n\t // Special case for u0 ≅ u1.\n\t if (d2 < epsilon2) {\n\t S = Math.log(w1 / w0) / rho;\n\t i = function(t) {\n\t return [\n\t ux0 + t * dx,\n\t uy0 + t * dy,\n\t w0 * Math.exp(rho * t * S)\n\t ];\n\t };\n\t }\n\t\n\t // General case.\n\t else {\n\t var d1 = Math.sqrt(d2),\n\t b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n\t b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n\t r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n\t r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n\t S = (r1 - r0) / rho;\n\t i = function(t) {\n\t var s = t * S,\n\t coshr0 = cosh(r0),\n\t u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n\t return [\n\t ux0 + u * dx,\n\t uy0 + u * dy,\n\t w0 * coshr0 / cosh(rho * s + r0)\n\t ];\n\t };\n\t }\n\t\n\t i.duration = S * 1000;\n\t\n\t return i;\n\t};\n\t\n\tfunction hsl$1(hue$$1) {\n\t return function(start, end) {\n\t var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t}\n\t\n\tvar hsl$2 = hsl$1(hue);\n\tvar hslLong = hsl$1(nogamma);\n\t\n\tfunction lab$1(start, end) {\n\t var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n\t a = nogamma(start.a, end.a),\n\t b = nogamma(start.b, end.b),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.l = l(t);\n\t start.a = a(t);\n\t start.b = b(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t}\n\t\n\tfunction hcl$1(hue$$1) {\n\t return function(start, end) {\n\t var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n\t c = nogamma(start.c, end.c),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.c = c(t);\n\t start.l = l(t);\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t}\n\t\n\tvar hcl$2 = hcl$1(hue);\n\tvar hclLong = hcl$1(nogamma);\n\t\n\tfunction cubehelix$1(hue$$1) {\n\t return (function cubehelixGamma(y) {\n\t y = +y;\n\t\n\t function cubehelix$$1(start, end) {\n\t var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n\t s = nogamma(start.s, end.s),\n\t l = nogamma(start.l, end.l),\n\t opacity = nogamma(start.opacity, end.opacity);\n\t return function(t) {\n\t start.h = h(t);\n\t start.s = s(t);\n\t start.l = l(Math.pow(t, y));\n\t start.opacity = opacity(t);\n\t return start + \"\";\n\t };\n\t }\n\t\n\t cubehelix$$1.gamma = cubehelixGamma;\n\t\n\t return cubehelix$$1;\n\t })(1);\n\t}\n\t\n\tvar cubehelix$2 = cubehelix$1(hue);\n\tvar cubehelixLong = cubehelix$1(nogamma);\n\t\n\tvar quantize = function(interpolator, n) {\n\t var samples = new Array(n);\n\t for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n\t return samples;\n\t};\n\t\n\texports.interpolate = value;\n\texports.interpolateArray = array;\n\texports.interpolateBasis = basis$1;\n\texports.interpolateBasisClosed = basisClosed;\n\texports.interpolateDate = date;\n\texports.interpolateNumber = number;\n\texports.interpolateObject = object;\n\texports.interpolateRound = round;\n\texports.interpolateString = string;\n\texports.interpolateTransformCss = interpolateTransformCss;\n\texports.interpolateTransformSvg = interpolateTransformSvg;\n\texports.interpolateZoom = zoom;\n\texports.interpolateRgb = rgb$1;\n\texports.interpolateRgbBasis = rgbBasis;\n\texports.interpolateRgbBasisClosed = rgbBasisClosed;\n\texports.interpolateHsl = hsl$2;\n\texports.interpolateHslLong = hslLong;\n\texports.interpolateLab = lab$1;\n\texports.interpolateHcl = hcl$2;\n\texports.interpolateHclLong = hclLong;\n\texports.interpolateCubehelix = cubehelix$2;\n\texports.interpolateCubehelixLong = cubehelixLong;\n\texports.quantize = quantize;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar t0 = new Date;\n\tvar t1 = new Date;\n\t\n\tfunction newInterval(floori, offseti, count, field) {\n\t\n\t function interval(date) {\n\t return floori(date = new Date(+date)), date;\n\t }\n\t\n\t interval.floor = interval;\n\t\n\t interval.ceil = function(date) {\n\t return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n\t };\n\t\n\t interval.round = function(date) {\n\t var d0 = interval(date),\n\t d1 = interval.ceil(date);\n\t return date - d0 < d1 - date ? d0 : d1;\n\t };\n\t\n\t interval.offset = function(date, step) {\n\t return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n\t };\n\t\n\t interval.range = function(start, stop, step) {\n\t var range = [];\n\t start = interval.ceil(start);\n\t step = step == null ? 1 : Math.floor(step);\n\t if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n\t do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n\t return range;\n\t };\n\t\n\t interval.filter = function(test) {\n\t return newInterval(function(date) {\n\t if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n\t }, function(date, step) {\n\t if (date >= date) {\n\t if (step < 0) while (++step <= 0) {\n\t while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n\t } else while (--step >= 0) {\n\t while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n\t }\n\t }\n\t });\n\t };\n\t\n\t if (count) {\n\t interval.count = function(start, end) {\n\t t0.setTime(+start), t1.setTime(+end);\n\t floori(t0), floori(t1);\n\t return Math.floor(count(t0, t1));\n\t };\n\t\n\t interval.every = function(step) {\n\t step = Math.floor(step);\n\t return !isFinite(step) || !(step > 0) ? null\n\t : !(step > 1) ? interval\n\t : interval.filter(field\n\t ? function(d) { return field(d) % step === 0; }\n\t : function(d) { return interval.count(0, d) % step === 0; });\n\t };\n\t }\n\t\n\t return interval;\n\t}\n\t\n\tvar millisecond = newInterval(function() {\n\t // noop\n\t}, function(date, step) {\n\t date.setTime(+date + step);\n\t}, function(start, end) {\n\t return end - start;\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tmillisecond.every = function(k) {\n\t k = Math.floor(k);\n\t if (!isFinite(k) || !(k > 0)) return null;\n\t if (!(k > 1)) return millisecond;\n\t return newInterval(function(date) {\n\t date.setTime(Math.floor(date / k) * k);\n\t }, function(date, step) {\n\t date.setTime(+date + step * k);\n\t }, function(start, end) {\n\t return (end - start) / k;\n\t });\n\t};\n\t\n\tvar milliseconds = millisecond.range;\n\t\n\tvar durationSecond = 1e3;\n\tvar durationMinute = 6e4;\n\tvar durationHour = 36e5;\n\tvar durationDay = 864e5;\n\tvar durationWeek = 6048e5;\n\t\n\tvar second = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationSecond) * durationSecond);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationSecond);\n\t}, function(start, end) {\n\t return (end - start) / durationSecond;\n\t}, function(date) {\n\t return date.getUTCSeconds();\n\t});\n\t\n\tvar seconds = second.range;\n\t\n\tvar minute = newInterval(function(date) {\n\t date.setTime(Math.floor(date / durationMinute) * durationMinute);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t}, function(start, end) {\n\t return (end - start) / durationMinute;\n\t}, function(date) {\n\t return date.getMinutes();\n\t});\n\t\n\tvar minutes = minute.range;\n\t\n\tvar hour = newInterval(function(date) {\n\t var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n\t if (offset < 0) offset += durationHour;\n\t date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t}, function(start, end) {\n\t return (end - start) / durationHour;\n\t}, function(date) {\n\t return date.getHours();\n\t});\n\t\n\tvar hours = hour.range;\n\t\n\tvar day = newInterval(function(date) {\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setDate(date.getDate() + step);\n\t}, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n\t}, function(date) {\n\t return date.getDate() - 1;\n\t});\n\t\n\tvar days = day.range;\n\t\n\tfunction weekday(i) {\n\t return newInterval(function(date) {\n\t date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setDate(date.getDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n\t });\n\t}\n\t\n\tvar sunday = weekday(0);\n\tvar monday = weekday(1);\n\tvar tuesday = weekday(2);\n\tvar wednesday = weekday(3);\n\tvar thursday = weekday(4);\n\tvar friday = weekday(5);\n\tvar saturday = weekday(6);\n\t\n\tvar sundays = sunday.range;\n\tvar mondays = monday.range;\n\tvar tuesdays = tuesday.range;\n\tvar wednesdays = wednesday.range;\n\tvar thursdays = thursday.range;\n\tvar fridays = friday.range;\n\tvar saturdays = saturday.range;\n\t\n\tvar month = newInterval(function(date) {\n\t date.setDate(1);\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setMonth(date.getMonth() + step);\n\t}, function(start, end) {\n\t return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n\t}, function(date) {\n\t return date.getMonth();\n\t});\n\t\n\tvar months = month.range;\n\t\n\tvar year = newInterval(function(date) {\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step);\n\t}, function(start, end) {\n\t return end.getFullYear() - start.getFullYear();\n\t}, function(date) {\n\t return date.getFullYear();\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tyear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n\t date.setMonth(0, 1);\n\t date.setHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setFullYear(date.getFullYear() + step * k);\n\t });\n\t};\n\t\n\tvar years = year.range;\n\t\n\tvar utcMinute = newInterval(function(date) {\n\t date.setUTCSeconds(0, 0);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationMinute);\n\t}, function(start, end) {\n\t return (end - start) / durationMinute;\n\t}, function(date) {\n\t return date.getUTCMinutes();\n\t});\n\t\n\tvar utcMinutes = utcMinute.range;\n\t\n\tvar utcHour = newInterval(function(date) {\n\t date.setUTCMinutes(0, 0, 0);\n\t}, function(date, step) {\n\t date.setTime(+date + step * durationHour);\n\t}, function(start, end) {\n\t return (end - start) / durationHour;\n\t}, function(date) {\n\t return date.getUTCHours();\n\t});\n\t\n\tvar utcHours = utcHour.range;\n\t\n\tvar utcDay = newInterval(function(date) {\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step);\n\t}, function(start, end) {\n\t return (end - start) / durationDay;\n\t}, function(date) {\n\t return date.getUTCDate() - 1;\n\t});\n\t\n\tvar utcDays = utcDay.range;\n\t\n\tfunction utcWeekday(i) {\n\t return newInterval(function(date) {\n\t date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCDate(date.getUTCDate() + step * 7);\n\t }, function(start, end) {\n\t return (end - start) / durationWeek;\n\t });\n\t}\n\t\n\tvar utcSunday = utcWeekday(0);\n\tvar utcMonday = utcWeekday(1);\n\tvar utcTuesday = utcWeekday(2);\n\tvar utcWednesday = utcWeekday(3);\n\tvar utcThursday = utcWeekday(4);\n\tvar utcFriday = utcWeekday(5);\n\tvar utcSaturday = utcWeekday(6);\n\t\n\tvar utcSundays = utcSunday.range;\n\tvar utcMondays = utcMonday.range;\n\tvar utcTuesdays = utcTuesday.range;\n\tvar utcWednesdays = utcWednesday.range;\n\tvar utcThursdays = utcThursday.range;\n\tvar utcFridays = utcFriday.range;\n\tvar utcSaturdays = utcSaturday.range;\n\t\n\tvar utcMonth = newInterval(function(date) {\n\t date.setUTCDate(1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCMonth(date.getUTCMonth() + step);\n\t}, function(start, end) {\n\t return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n\t}, function(date) {\n\t return date.getUTCMonth();\n\t});\n\t\n\tvar utcMonths = utcMonth.range;\n\t\n\tvar utcYear = newInterval(function(date) {\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t}, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step);\n\t}, function(start, end) {\n\t return end.getUTCFullYear() - start.getUTCFullYear();\n\t}, function(date) {\n\t return date.getUTCFullYear();\n\t});\n\t\n\t// An optimized implementation for this simple case.\n\tutcYear.every = function(k) {\n\t return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n\t date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n\t date.setUTCMonth(0, 1);\n\t date.setUTCHours(0, 0, 0, 0);\n\t }, function(date, step) {\n\t date.setUTCFullYear(date.getUTCFullYear() + step * k);\n\t });\n\t};\n\t\n\tvar utcYears = utcYear.range;\n\t\n\texports.timeInterval = newInterval;\n\texports.timeMillisecond = millisecond;\n\texports.timeMilliseconds = milliseconds;\n\texports.utcMillisecond = millisecond;\n\texports.utcMilliseconds = milliseconds;\n\texports.timeSecond = second;\n\texports.timeSeconds = seconds;\n\texports.utcSecond = second;\n\texports.utcSeconds = seconds;\n\texports.timeMinute = minute;\n\texports.timeMinutes = minutes;\n\texports.timeHour = hour;\n\texports.timeHours = hours;\n\texports.timeDay = day;\n\texports.timeDays = days;\n\texports.timeWeek = sunday;\n\texports.timeWeeks = sundays;\n\texports.timeSunday = sunday;\n\texports.timeSundays = sundays;\n\texports.timeMonday = monday;\n\texports.timeMondays = mondays;\n\texports.timeTuesday = tuesday;\n\texports.timeTuesdays = tuesdays;\n\texports.timeWednesday = wednesday;\n\texports.timeWednesdays = wednesdays;\n\texports.timeThursday = thursday;\n\texports.timeThursdays = thursdays;\n\texports.timeFriday = friday;\n\texports.timeFridays = fridays;\n\texports.timeSaturday = saturday;\n\texports.timeSaturdays = saturdays;\n\texports.timeMonth = month;\n\texports.timeMonths = months;\n\texports.timeYear = year;\n\texports.timeYears = years;\n\texports.utcMinute = utcMinute;\n\texports.utcMinutes = utcMinutes;\n\texports.utcHour = utcHour;\n\texports.utcHours = utcHours;\n\texports.utcDay = utcDay;\n\texports.utcDays = utcDays;\n\texports.utcWeek = utcSunday;\n\texports.utcWeeks = utcSundays;\n\texports.utcSunday = utcSunday;\n\texports.utcSundays = utcSundays;\n\texports.utcMonday = utcMonday;\n\texports.utcMondays = utcMondays;\n\texports.utcTuesday = utcTuesday;\n\texports.utcTuesdays = utcTuesdays;\n\texports.utcWednesday = utcWednesday;\n\texports.utcWednesdays = utcWednesdays;\n\texports.utcThursday = utcThursday;\n\texports.utcThursdays = utcThursdays;\n\texports.utcFriday = utcFriday;\n\texports.utcFridays = utcFridays;\n\texports.utcSaturday = utcSaturday;\n\texports.utcSaturdays = utcSaturdays;\n\texports.utcMonth = utcMonth;\n\texports.utcMonths = utcMonths;\n\texports.utcYear = utcYear;\n\texports.utcYears = utcYears;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-time-format/ Version 2.0.5. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(10)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, (function (exports,d3Time) { 'use strict';\n\t\n\tfunction localDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n\t date.setFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n\t}\n\t\n\tfunction utcDate(d) {\n\t if (0 <= d.y && d.y < 100) {\n\t var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n\t date.setUTCFullYear(d.y);\n\t return date;\n\t }\n\t return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n\t}\n\t\n\tfunction newYear(y) {\n\t return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n\t}\n\t\n\tfunction formatLocale(locale) {\n\t var locale_dateTime = locale.dateTime,\n\t locale_date = locale.date,\n\t locale_time = locale.time,\n\t locale_periods = locale.periods,\n\t locale_weekdays = locale.days,\n\t locale_shortWeekdays = locale.shortDays,\n\t locale_months = locale.months,\n\t locale_shortMonths = locale.shortMonths;\n\t\n\t var periodRe = formatRe(locale_periods),\n\t periodLookup = formatLookup(locale_periods),\n\t weekdayRe = formatRe(locale_weekdays),\n\t weekdayLookup = formatLookup(locale_weekdays),\n\t shortWeekdayRe = formatRe(locale_shortWeekdays),\n\t shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n\t monthRe = formatRe(locale_months),\n\t monthLookup = formatLookup(locale_months),\n\t shortMonthRe = formatRe(locale_shortMonths),\n\t shortMonthLookup = formatLookup(locale_shortMonths);\n\t\n\t var formats = {\n\t \"a\": formatShortWeekday,\n\t \"A\": formatWeekday,\n\t \"b\": formatShortMonth,\n\t \"B\": formatMonth,\n\t \"c\": null,\n\t \"d\": formatDayOfMonth,\n\t \"e\": formatDayOfMonth,\n\t \"H\": formatHour24,\n\t \"I\": formatHour12,\n\t \"j\": formatDayOfYear,\n\t \"L\": formatMilliseconds,\n\t \"m\": formatMonthNumber,\n\t \"M\": formatMinutes,\n\t \"p\": formatPeriod,\n\t \"S\": formatSeconds,\n\t \"U\": formatWeekNumberSunday,\n\t \"w\": formatWeekdayNumber,\n\t \"W\": formatWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatYear,\n\t \"Y\": formatFullYear,\n\t \"Z\": formatZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var utcFormats = {\n\t \"a\": formatUTCShortWeekday,\n\t \"A\": formatUTCWeekday,\n\t \"b\": formatUTCShortMonth,\n\t \"B\": formatUTCMonth,\n\t \"c\": null,\n\t \"d\": formatUTCDayOfMonth,\n\t \"e\": formatUTCDayOfMonth,\n\t \"H\": formatUTCHour24,\n\t \"I\": formatUTCHour12,\n\t \"j\": formatUTCDayOfYear,\n\t \"L\": formatUTCMilliseconds,\n\t \"m\": formatUTCMonthNumber,\n\t \"M\": formatUTCMinutes,\n\t \"p\": formatUTCPeriod,\n\t \"S\": formatUTCSeconds,\n\t \"U\": formatUTCWeekNumberSunday,\n\t \"w\": formatUTCWeekdayNumber,\n\t \"W\": formatUTCWeekNumberMonday,\n\t \"x\": null,\n\t \"X\": null,\n\t \"y\": formatUTCYear,\n\t \"Y\": formatUTCFullYear,\n\t \"Z\": formatUTCZone,\n\t \"%\": formatLiteralPercent\n\t };\n\t\n\t var parses = {\n\t \"a\": parseShortWeekday,\n\t \"A\": parseWeekday,\n\t \"b\": parseShortMonth,\n\t \"B\": parseMonth,\n\t \"c\": parseLocaleDateTime,\n\t \"d\": parseDayOfMonth,\n\t \"e\": parseDayOfMonth,\n\t \"H\": parseHour24,\n\t \"I\": parseHour24,\n\t \"j\": parseDayOfYear,\n\t \"L\": parseMilliseconds,\n\t \"m\": parseMonthNumber,\n\t \"M\": parseMinutes,\n\t \"p\": parsePeriod,\n\t \"S\": parseSeconds,\n\t \"U\": parseWeekNumberSunday,\n\t \"w\": parseWeekdayNumber,\n\t \"W\": parseWeekNumberMonday,\n\t \"x\": parseLocaleDate,\n\t \"X\": parseLocaleTime,\n\t \"y\": parseYear,\n\t \"Y\": parseFullYear,\n\t \"Z\": parseZone,\n\t \"%\": parseLiteralPercent\n\t };\n\t\n\t // These recursive directive definitions must be deferred.\n\t formats.x = newFormat(locale_date, formats);\n\t formats.X = newFormat(locale_time, formats);\n\t formats.c = newFormat(locale_dateTime, formats);\n\t utcFormats.x = newFormat(locale_date, utcFormats);\n\t utcFormats.X = newFormat(locale_time, utcFormats);\n\t utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\t\n\t function newFormat(specifier, formats) {\n\t return function(date) {\n\t var string = [],\n\t i = -1,\n\t j = 0,\n\t n = specifier.length,\n\t c,\n\t pad,\n\t format;\n\t\n\t if (!(date instanceof Date)) date = new Date(+date);\n\t\n\t while (++i < n) {\n\t if (specifier.charCodeAt(i) === 37) {\n\t string.push(specifier.slice(j, i));\n\t if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n\t else pad = c === \"e\" ? \" \" : \"0\";\n\t if (format = formats[c]) c = format(date, pad);\n\t string.push(c);\n\t j = i + 1;\n\t }\n\t }\n\t\n\t string.push(specifier.slice(j, i));\n\t return string.join(\"\");\n\t };\n\t }\n\t\n\t function newParse(specifier, newDate) {\n\t return function(string) {\n\t var d = newYear(1900),\n\t i = parseSpecifier(d, specifier, string += \"\", 0);\n\t if (i != string.length) return null;\n\t\n\t // The am-pm flag is 0 for AM, and 1 for PM.\n\t if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\t\n\t // Convert day-of-week and week-of-year to day-of-year.\n\t if (\"W\" in d || \"U\" in d) {\n\t if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n\t var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n\t d.m = 0;\n\t d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n\t }\n\t\n\t // If a time zone is specified, all fields are interpreted as UTC and then\n\t // offset according to the specified time zone.\n\t if (\"Z\" in d) {\n\t d.H += d.Z / 100 | 0;\n\t d.M += d.Z % 100;\n\t return utcDate(d);\n\t }\n\t\n\t // Otherwise, all fields are in local time.\n\t return newDate(d);\n\t };\n\t }\n\t\n\t function parseSpecifier(d, specifier, string, j) {\n\t var i = 0,\n\t n = specifier.length,\n\t m = string.length,\n\t c,\n\t parse;\n\t\n\t while (i < n) {\n\t if (j >= m) return -1;\n\t c = specifier.charCodeAt(i++);\n\t if (c === 37) {\n\t c = specifier.charAt(i++);\n\t parse = parses[c in pads ? specifier.charAt(i++) : c];\n\t if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n\t } else if (c != string.charCodeAt(j++)) {\n\t return -1;\n\t }\n\t }\n\t\n\t return j;\n\t }\n\t\n\t function parsePeriod(d, string, i) {\n\t var n = periodRe.exec(string.slice(i));\n\t return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortWeekday(d, string, i) {\n\t var n = shortWeekdayRe.exec(string.slice(i));\n\t return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseWeekday(d, string, i) {\n\t var n = weekdayRe.exec(string.slice(i));\n\t return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseShortMonth(d, string, i) {\n\t var n = shortMonthRe.exec(string.slice(i));\n\t return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseMonth(d, string, i) {\n\t var n = monthRe.exec(string.slice(i));\n\t return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n\t }\n\t\n\t function parseLocaleDateTime(d, string, i) {\n\t return parseSpecifier(d, locale_dateTime, string, i);\n\t }\n\t\n\t function parseLocaleDate(d, string, i) {\n\t return parseSpecifier(d, locale_date, string, i);\n\t }\n\t\n\t function parseLocaleTime(d, string, i) {\n\t return parseSpecifier(d, locale_time, string, i);\n\t }\n\t\n\t function formatShortWeekday(d) {\n\t return locale_shortWeekdays[d.getDay()];\n\t }\n\t\n\t function formatWeekday(d) {\n\t return locale_weekdays[d.getDay()];\n\t }\n\t\n\t function formatShortMonth(d) {\n\t return locale_shortMonths[d.getMonth()];\n\t }\n\t\n\t function formatMonth(d) {\n\t return locale_months[d.getMonth()];\n\t }\n\t\n\t function formatPeriod(d) {\n\t return locale_periods[+(d.getHours() >= 12)];\n\t }\n\t\n\t function formatUTCShortWeekday(d) {\n\t return locale_shortWeekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCWeekday(d) {\n\t return locale_weekdays[d.getUTCDay()];\n\t }\n\t\n\t function formatUTCShortMonth(d) {\n\t return locale_shortMonths[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCMonth(d) {\n\t return locale_months[d.getUTCMonth()];\n\t }\n\t\n\t function formatUTCPeriod(d) {\n\t return locale_periods[+(d.getUTCHours() >= 12)];\n\t }\n\t\n\t return {\n\t format: function(specifier) {\n\t var f = newFormat(specifier += \"\", formats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t parse: function(specifier) {\n\t var p = newParse(specifier += \"\", localDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t },\n\t utcFormat: function(specifier) {\n\t var f = newFormat(specifier += \"\", utcFormats);\n\t f.toString = function() { return specifier; };\n\t return f;\n\t },\n\t utcParse: function(specifier) {\n\t var p = newParse(specifier, utcDate);\n\t p.toString = function() { return specifier; };\n\t return p;\n\t }\n\t };\n\t}\n\t\n\tvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\n\tvar numberRe = /^\\s*\\d+/;\n\tvar percentRe = /^%/;\n\tvar requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\t\n\tfunction pad(value, fill, width) {\n\t var sign = value < 0 ? \"-\" : \"\",\n\t string = (sign ? -value : value) + \"\",\n\t length = string.length;\n\t return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n\t}\n\t\n\tfunction requote(s) {\n\t return s.replace(requoteRe, \"\\\\$&\");\n\t}\n\t\n\tfunction formatRe(names) {\n\t return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n\t}\n\t\n\tfunction formatLookup(names) {\n\t var map = {}, i = -1, n = names.length;\n\t while (++i < n) map[names[i].toLowerCase()] = i;\n\t return map;\n\t}\n\t\n\tfunction parseWeekdayNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 1));\n\t return n ? (d.w = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseWeekNumberSunday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.U = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseWeekNumberMonday(d, string, i) {\n\t var n = numberRe.exec(string.slice(i));\n\t return n ? (d.W = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseFullYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 4));\n\t return n ? (d.y = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseZone(d, string, i) {\n\t var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n\t return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMonthNumber(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseDayOfMonth(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.d = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseDayOfYear(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseHour24(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.H = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMinutes(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.M = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseSeconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 2));\n\t return n ? (d.S = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseMilliseconds(d, string, i) {\n\t var n = numberRe.exec(string.slice(i, i + 3));\n\t return n ? (d.L = +n[0], i + n[0].length) : -1;\n\t}\n\t\n\tfunction parseLiteralPercent(d, string, i) {\n\t var n = percentRe.exec(string.slice(i, i + 1));\n\t return n ? i + n[0].length : -1;\n\t}\n\t\n\tfunction formatDayOfMonth(d, p) {\n\t return pad(d.getDate(), p, 2);\n\t}\n\t\n\tfunction formatHour24(d, p) {\n\t return pad(d.getHours(), p, 2);\n\t}\n\t\n\tfunction formatHour12(d, p) {\n\t return pad(d.getHours() % 12 || 12, p, 2);\n\t}\n\t\n\tfunction formatDayOfYear(d, p) {\n\t return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n\t}\n\t\n\tfunction formatMilliseconds(d, p) {\n\t return pad(d.getMilliseconds(), p, 3);\n\t}\n\t\n\tfunction formatMonthNumber(d, p) {\n\t return pad(d.getMonth() + 1, p, 2);\n\t}\n\t\n\tfunction formatMinutes(d, p) {\n\t return pad(d.getMinutes(), p, 2);\n\t}\n\t\n\tfunction formatSeconds(d, p) {\n\t return pad(d.getSeconds(), p, 2);\n\t}\n\t\n\tfunction formatWeekNumberSunday(d, p) {\n\t return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatWeekdayNumber(d) {\n\t return d.getDay();\n\t}\n\t\n\tfunction formatWeekNumberMonday(d, p) {\n\t return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatYear(d, p) {\n\t return pad(d.getFullYear() % 100, p, 2);\n\t}\n\t\n\tfunction formatFullYear(d, p) {\n\t return pad(d.getFullYear() % 10000, p, 4);\n\t}\n\t\n\tfunction formatZone(d) {\n\t var z = d.getTimezoneOffset();\n\t return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n\t + pad(z / 60 | 0, \"0\", 2)\n\t + pad(z % 60, \"0\", 2);\n\t}\n\t\n\tfunction formatUTCDayOfMonth(d, p) {\n\t return pad(d.getUTCDate(), p, 2);\n\t}\n\t\n\tfunction formatUTCHour24(d, p) {\n\t return pad(d.getUTCHours(), p, 2);\n\t}\n\t\n\tfunction formatUTCHour12(d, p) {\n\t return pad(d.getUTCHours() % 12 || 12, p, 2);\n\t}\n\t\n\tfunction formatUTCDayOfYear(d, p) {\n\t return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n\t}\n\t\n\tfunction formatUTCMilliseconds(d, p) {\n\t return pad(d.getUTCMilliseconds(), p, 3);\n\t}\n\t\n\tfunction formatUTCMonthNumber(d, p) {\n\t return pad(d.getUTCMonth() + 1, p, 2);\n\t}\n\t\n\tfunction formatUTCMinutes(d, p) {\n\t return pad(d.getUTCMinutes(), p, 2);\n\t}\n\t\n\tfunction formatUTCSeconds(d, p) {\n\t return pad(d.getUTCSeconds(), p, 2);\n\t}\n\t\n\tfunction formatUTCWeekNumberSunday(d, p) {\n\t return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatUTCWeekdayNumber(d) {\n\t return d.getUTCDay();\n\t}\n\t\n\tfunction formatUTCWeekNumberMonday(d, p) {\n\t return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n\t}\n\t\n\tfunction formatUTCYear(d, p) {\n\t return pad(d.getUTCFullYear() % 100, p, 2);\n\t}\n\t\n\tfunction formatUTCFullYear(d, p) {\n\t return pad(d.getUTCFullYear() % 10000, p, 4);\n\t}\n\t\n\tfunction formatUTCZone() {\n\t return \"+0000\";\n\t}\n\t\n\tfunction formatLiteralPercent() {\n\t return \"%\";\n\t}\n\t\n\tvar locale$1;\n\t\n\t\n\t\n\t\n\t\n\tdefaultLocale({\n\t dateTime: \"%x, %X\",\n\t date: \"%-m/%-d/%Y\",\n\t time: \"%-I:%M:%S %p\",\n\t periods: [\"AM\", \"PM\"],\n\t days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n\t shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n\t months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n\t shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n\t});\n\t\n\tfunction defaultLocale(definition) {\n\t locale$1 = formatLocale(definition);\n\t exports.timeFormat = locale$1.format;\n\t exports.timeParse = locale$1.parse;\n\t exports.utcFormat = locale$1.utcFormat;\n\t exports.utcParse = locale$1.utcParse;\n\t return locale$1;\n\t}\n\t\n\tvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\t\n\tfunction formatIsoNative(date) {\n\t return date.toISOString();\n\t}\n\t\n\tvar formatIso = Date.prototype.toISOString\n\t ? formatIsoNative\n\t : exports.utcFormat(isoSpecifier);\n\t\n\tfunction parseIsoNative(string) {\n\t var date = new Date(string);\n\t return isNaN(date) ? null : date;\n\t}\n\t\n\tvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n\t ? parseIsoNative\n\t : exports.utcParse(isoSpecifier);\n\t\n\texports.timeFormatDefaultLocale = defaultLocale;\n\texports.timeFormatLocale = formatLocale;\n\texports.isoFormat = formatIso;\n\texports.isoParse = parseIso;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-selection/ Version 1.1.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\t\n\tvar namespaces = {\n\t svg: \"http://www.w3.org/2000/svg\",\n\t xhtml: xhtml,\n\t xlink: \"http://www.w3.org/1999/xlink\",\n\t xml: \"http://www.w3.org/XML/1998/namespace\",\n\t xmlns: \"http://www.w3.org/2000/xmlns/\"\n\t};\n\t\n\tvar namespace = function(name) {\n\t var prefix = name += \"\", i = prefix.indexOf(\":\");\n\t if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n\t return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n\t};\n\t\n\tfunction creatorInherit(name) {\n\t return function() {\n\t var document = this.ownerDocument,\n\t uri = this.namespaceURI;\n\t return uri === xhtml && document.documentElement.namespaceURI === xhtml\n\t ? document.createElement(name)\n\t : document.createElementNS(uri, name);\n\t };\n\t}\n\t\n\tfunction creatorFixed(fullname) {\n\t return function() {\n\t return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tvar creator = function(name) {\n\t var fullname = namespace(name);\n\t return (fullname.local\n\t ? creatorFixed\n\t : creatorInherit)(fullname);\n\t};\n\t\n\tvar nextId = 0;\n\t\n\tfunction local() {\n\t return new Local;\n\t}\n\t\n\tfunction Local() {\n\t this._ = \"@\" + (++nextId).toString(36);\n\t}\n\t\n\tLocal.prototype = local.prototype = {\n\t constructor: Local,\n\t get: function(node) {\n\t var id = this._;\n\t while (!(id in node)) if (!(node = node.parentNode)) return;\n\t return node[id];\n\t },\n\t set: function(node, value) {\n\t return node[this._] = value;\n\t },\n\t remove: function(node) {\n\t return this._ in node && delete node[this._];\n\t },\n\t toString: function() {\n\t return this._;\n\t }\n\t};\n\t\n\tvar matcher = function(selector) {\n\t return function() {\n\t return this.matches(selector);\n\t };\n\t};\n\t\n\tif (typeof document !== \"undefined\") {\n\t var element = document.documentElement;\n\t if (!element.matches) {\n\t var vendorMatches = element.webkitMatchesSelector\n\t || element.msMatchesSelector\n\t || element.mozMatchesSelector\n\t || element.oMatchesSelector;\n\t matcher = function(selector) {\n\t return function() {\n\t return vendorMatches.call(this, selector);\n\t };\n\t };\n\t }\n\t}\n\t\n\tvar matcher$1 = matcher;\n\t\n\tvar filterEvents = {};\n\t\n\texports.event = null;\n\t\n\tif (typeof document !== \"undefined\") {\n\t var element$1 = document.documentElement;\n\t if (!(\"onmouseenter\" in element$1)) {\n\t filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n\t }\n\t}\n\t\n\tfunction filterContextListener(listener, index, group) {\n\t listener = contextListener(listener, index, group);\n\t return function(event) {\n\t var related = event.relatedTarget;\n\t if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n\t listener.call(this, event);\n\t }\n\t };\n\t}\n\t\n\tfunction contextListener(listener, index, group) {\n\t return function(event1) {\n\t var event0 = exports.event; // Events can be reentrant (e.g., focus).\n\t exports.event = event1;\n\t try {\n\t listener.call(this, this.__data__, index, group);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t };\n\t}\n\t\n\tfunction parseTypenames(typenames) {\n\t return typenames.trim().split(/^|\\s+/).map(function(t) {\n\t var name = \"\", i = t.indexOf(\".\");\n\t if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n\t return {type: t, name: name};\n\t });\n\t}\n\t\n\tfunction onRemove(typename) {\n\t return function() {\n\t var on = this.__on;\n\t if (!on) return;\n\t for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n\t if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t } else {\n\t on[++i] = o;\n\t }\n\t }\n\t if (++i) on.length = i;\n\t else delete this.__on;\n\t };\n\t}\n\t\n\tfunction onAdd(typename, value, capture) {\n\t var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n\t return function(d, i, group) {\n\t var on = this.__on, o, listener = wrap(value, i, group);\n\t if (on) for (var j = 0, m = on.length; j < m; ++j) {\n\t if ((o = on[j]).type === typename.type && o.name === typename.name) {\n\t this.removeEventListener(o.type, o.listener, o.capture);\n\t this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n\t o.value = value;\n\t return;\n\t }\n\t }\n\t this.addEventListener(typename.type, listener, capture);\n\t o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n\t if (!on) this.__on = [o];\n\t else on.push(o);\n\t };\n\t}\n\t\n\tvar selection_on = function(typename, value, capture) {\n\t var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\t\n\t if (arguments.length < 2) {\n\t var on = this.node().__on;\n\t if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n\t for (i = 0, o = on[j]; i < n; ++i) {\n\t if ((t = typenames[i]).type === o.type && t.name === o.name) {\n\t return o.value;\n\t }\n\t }\n\t }\n\t return;\n\t }\n\t\n\t on = value ? onAdd : onRemove;\n\t if (capture == null) capture = false;\n\t for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n\t return this;\n\t};\n\t\n\tfunction customEvent(event1, listener, that, args) {\n\t var event0 = exports.event;\n\t event1.sourceEvent = exports.event;\n\t exports.event = event1;\n\t try {\n\t return listener.apply(that, args);\n\t } finally {\n\t exports.event = event0;\n\t }\n\t}\n\t\n\tvar sourceEvent = function() {\n\t var current = exports.event, source;\n\t while (source = current.sourceEvent) current = source;\n\t return current;\n\t};\n\t\n\tvar point = function(node, event) {\n\t var svg = node.ownerSVGElement || node;\n\t\n\t if (svg.createSVGPoint) {\n\t var point = svg.createSVGPoint();\n\t point.x = event.clientX, point.y = event.clientY;\n\t point = point.matrixTransform(node.getScreenCTM().inverse());\n\t return [point.x, point.y];\n\t }\n\t\n\t var rect = node.getBoundingClientRect();\n\t return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n\t};\n\t\n\tvar mouse = function(node) {\n\t var event = sourceEvent();\n\t if (event.changedTouches) event = event.changedTouches[0];\n\t return point(node, event);\n\t};\n\t\n\tfunction none() {}\n\t\n\tvar selector = function(selector) {\n\t return selector == null ? none : function() {\n\t return this.querySelector(selector);\n\t };\n\t};\n\t\n\tvar selection_select = function(select) {\n\t if (typeof select !== \"function\") select = selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t};\n\t\n\tfunction empty() {\n\t return [];\n\t}\n\t\n\tvar selectorAll = function(selector) {\n\t return selector == null ? empty : function() {\n\t return this.querySelectorAll(selector);\n\t };\n\t};\n\t\n\tvar selection_selectAll = function(select) {\n\t if (typeof select !== \"function\") select = selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t subgroups.push(select.call(node, node.__data__, i, group));\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, parents);\n\t};\n\t\n\tvar selection_filter = function(match) {\n\t if (typeof match !== \"function\") match = matcher$1(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Selection(subgroups, this._parents);\n\t};\n\t\n\tvar sparse = function(update) {\n\t return new Array(update.length);\n\t};\n\t\n\tvar selection_enter = function() {\n\t return new Selection(this._enter || this._groups.map(sparse), this._parents);\n\t};\n\t\n\tfunction EnterNode(parent, datum) {\n\t this.ownerDocument = parent.ownerDocument;\n\t this.namespaceURI = parent.namespaceURI;\n\t this._next = null;\n\t this._parent = parent;\n\t this.__data__ = datum;\n\t}\n\t\n\tEnterNode.prototype = {\n\t constructor: EnterNode,\n\t appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n\t insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n\t querySelector: function(selector) { return this._parent.querySelector(selector); },\n\t querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n\t};\n\t\n\tvar constant = function(x) {\n\t return function() {\n\t return x;\n\t };\n\t};\n\t\n\tvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\t\n\tfunction bindIndex(parent, group, enter, update, exit, data) {\n\t var i = 0,\n\t node,\n\t groupLength = group.length,\n\t dataLength = data.length;\n\t\n\t // Put any non-null nodes that fit into update.\n\t // Put any null nodes into enter.\n\t // Put any remaining data into enter.\n\t for (; i < dataLength; ++i) {\n\t if (node = group[i]) {\n\t node.__data__ = data[i];\n\t update[i] = node;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Put any non-null nodes that don’t fit into exit.\n\t for (; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t exit[i] = node;\n\t }\n\t }\n\t}\n\t\n\tfunction bindKey(parent, group, enter, update, exit, data, key) {\n\t var i,\n\t node,\n\t nodeByKeyValue = {},\n\t groupLength = group.length,\n\t dataLength = data.length,\n\t keyValues = new Array(groupLength),\n\t keyValue;\n\t\n\t // Compute the key for each node.\n\t // If multiple nodes have the same key, the duplicates are added to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if (node = group[i]) {\n\t keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n\t if (keyValue in nodeByKeyValue) {\n\t exit[i] = node;\n\t } else {\n\t nodeByKeyValue[keyValue] = node;\n\t }\n\t }\n\t }\n\t\n\t // Compute the key for each datum.\n\t // If there a node associated with this key, join and add it to update.\n\t // If there is not (or the key is a duplicate), add it to enter.\n\t for (i = 0; i < dataLength; ++i) {\n\t keyValue = keyPrefix + key.call(parent, data[i], i, data);\n\t if (node = nodeByKeyValue[keyValue]) {\n\t update[i] = node;\n\t node.__data__ = data[i];\n\t nodeByKeyValue[keyValue] = null;\n\t } else {\n\t enter[i] = new EnterNode(parent, data[i]);\n\t }\n\t }\n\t\n\t // Add any remaining nodes that were not bound to data to exit.\n\t for (i = 0; i < groupLength; ++i) {\n\t if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n\t exit[i] = node;\n\t }\n\t }\n\t}\n\t\n\tvar selection_data = function(value, key) {\n\t if (!value) {\n\t data = new Array(this.size()), j = -1;\n\t this.each(function(d) { data[++j] = d; });\n\t return data;\n\t }\n\t\n\t var bind = key ? bindKey : bindIndex,\n\t parents = this._parents,\n\t groups = this._groups;\n\t\n\t if (typeof value !== \"function\") value = constant(value);\n\t\n\t for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n\t var parent = parents[j],\n\t group = groups[j],\n\t groupLength = group.length,\n\t data = value.call(parent, parent && parent.__data__, j, parents),\n\t dataLength = data.length,\n\t enterGroup = enter[j] = new Array(dataLength),\n\t updateGroup = update[j] = new Array(dataLength),\n\t exitGroup = exit[j] = new Array(groupLength);\n\t\n\t bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\t\n\t // Now connect the enter nodes to their following update node, such that\n\t // appendChild can insert the materialized enter node before this node,\n\t // rather than at the end of the parent node.\n\t for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n\t if (previous = enterGroup[i0]) {\n\t if (i0 >= i1) i1 = i0 + 1;\n\t while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n\t previous._next = next || null;\n\t }\n\t }\n\t }\n\t\n\t update = new Selection(update, parents);\n\t update._enter = enter;\n\t update._exit = exit;\n\t return update;\n\t};\n\t\n\tvar selection_exit = function() {\n\t return new Selection(this._exit || this._groups.map(sparse), this._parents);\n\t};\n\t\n\tvar selection_merge = function(selection) {\n\t\n\t for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Selection(merges, this._parents);\n\t};\n\t\n\tvar selection_order = function() {\n\t\n\t for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n\t for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n\t if (node = group[i]) {\n\t if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n\t next = node;\n\t }\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tvar selection_sort = function(compare) {\n\t if (!compare) compare = ascending;\n\t\n\t function compareNode(a, b) {\n\t return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t sortgroup[i] = node;\n\t }\n\t }\n\t sortgroup.sort(compareNode);\n\t }\n\t\n\t return new Selection(sortgroups, this._parents).order();\n\t};\n\t\n\tfunction ascending(a, b) {\n\t return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n\t}\n\t\n\tvar selection_call = function() {\n\t var callback = arguments[0];\n\t arguments[0] = this;\n\t callback.apply(null, arguments);\n\t return this;\n\t};\n\t\n\tvar selection_nodes = function() {\n\t var nodes = new Array(this.size()), i = -1;\n\t this.each(function() { nodes[++i] = this; });\n\t return nodes;\n\t};\n\t\n\tvar selection_node = function() {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n\t var node = group[i];\n\t if (node) return node;\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\tvar selection_size = function() {\n\t var size = 0;\n\t this.each(function() { ++size; });\n\t return size;\n\t};\n\t\n\tvar selection_empty = function() {\n\t return !this.node();\n\t};\n\t\n\tvar selection_each = function(callback) {\n\t\n\t for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n\t for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n\t if (node = group[i]) callback.call(node, node.__data__, i, group);\n\t }\n\t }\n\t\n\t return this;\n\t};\n\t\n\tfunction attrRemove(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t}\n\t\n\tfunction attrRemoveNS(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tfunction attrConstant(name, value) {\n\t return function() {\n\t this.setAttribute(name, value);\n\t };\n\t}\n\t\n\tfunction attrConstantNS(fullname, value) {\n\t return function() {\n\t this.setAttributeNS(fullname.space, fullname.local, value);\n\t };\n\t}\n\t\n\tfunction attrFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttribute(name);\n\t else this.setAttribute(name, v);\n\t };\n\t}\n\t\n\tfunction attrFunctionNS(fullname, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n\t else this.setAttributeNS(fullname.space, fullname.local, v);\n\t };\n\t}\n\t\n\tvar selection_attr = function(name, value) {\n\t var fullname = namespace(name);\n\t\n\t if (arguments.length < 2) {\n\t var node = this.node();\n\t return fullname.local\n\t ? node.getAttributeNS(fullname.space, fullname.local)\n\t : node.getAttribute(fullname);\n\t }\n\t\n\t return this.each((value == null\n\t ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS : attrFunction)\n\t : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n\t};\n\t\n\tvar defaultView = function(node) {\n\t return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n\t || (node.document && node) // node is a Window\n\t || node.defaultView; // node is a Document\n\t};\n\t\n\tfunction styleRemove(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t}\n\t\n\tfunction styleConstant(name, value, priority) {\n\t return function() {\n\t this.style.setProperty(name, value, priority);\n\t };\n\t}\n\t\n\tfunction styleFunction(name, value, priority) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) this.style.removeProperty(name);\n\t else this.style.setProperty(name, v, priority);\n\t };\n\t}\n\t\n\tvar selection_style = function(name, value, priority) {\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? styleRemove : typeof value === \"function\"\n\t ? styleFunction\n\t : styleConstant)(name, value, priority == null ? \"\" : priority))\n\t : styleValue(this.node(), name);\n\t};\n\t\n\tfunction styleValue(node, name) {\n\t return node.style.getPropertyValue(name)\n\t || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n\t}\n\t\n\tfunction propertyRemove(name) {\n\t return function() {\n\t delete this[name];\n\t };\n\t}\n\t\n\tfunction propertyConstant(name, value) {\n\t return function() {\n\t this[name] = value;\n\t };\n\t}\n\t\n\tfunction propertyFunction(name, value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t if (v == null) delete this[name];\n\t else this[name] = v;\n\t };\n\t}\n\t\n\tvar selection_property = function(name, value) {\n\t return arguments.length > 1\n\t ? this.each((value == null\n\t ? propertyRemove : typeof value === \"function\"\n\t ? propertyFunction\n\t : propertyConstant)(name, value))\n\t : this.node()[name];\n\t};\n\t\n\tfunction classArray(string) {\n\t return string.trim().split(/^|\\s+/);\n\t}\n\t\n\tfunction classList(node) {\n\t return node.classList || new ClassList(node);\n\t}\n\t\n\tfunction ClassList(node) {\n\t this._node = node;\n\t this._names = classArray(node.getAttribute(\"class\") || \"\");\n\t}\n\t\n\tClassList.prototype = {\n\t add: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i < 0) {\n\t this._names.push(name);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t remove: function(name) {\n\t var i = this._names.indexOf(name);\n\t if (i >= 0) {\n\t this._names.splice(i, 1);\n\t this._node.setAttribute(\"class\", this._names.join(\" \"));\n\t }\n\t },\n\t contains: function(name) {\n\t return this._names.indexOf(name) >= 0;\n\t }\n\t};\n\t\n\tfunction classedAdd(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.add(names[i]);\n\t}\n\t\n\tfunction classedRemove(node, names) {\n\t var list = classList(node), i = -1, n = names.length;\n\t while (++i < n) list.remove(names[i]);\n\t}\n\t\n\tfunction classedTrue(names) {\n\t return function() {\n\t classedAdd(this, names);\n\t };\n\t}\n\t\n\tfunction classedFalse(names) {\n\t return function() {\n\t classedRemove(this, names);\n\t };\n\t}\n\t\n\tfunction classedFunction(names, value) {\n\t return function() {\n\t (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n\t };\n\t}\n\t\n\tvar selection_classed = function(name, value) {\n\t var names = classArray(name + \"\");\n\t\n\t if (arguments.length < 2) {\n\t var list = classList(this.node()), i = -1, n = names.length;\n\t while (++i < n) if (!list.contains(names[i])) return false;\n\t return true;\n\t }\n\t\n\t return this.each((typeof value === \"function\"\n\t ? classedFunction : value\n\t ? classedTrue\n\t : classedFalse)(names, value));\n\t};\n\t\n\tfunction textRemove() {\n\t this.textContent = \"\";\n\t}\n\t\n\tfunction textConstant(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t}\n\t\n\tfunction textFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.textContent = v == null ? \"\" : v;\n\t };\n\t}\n\t\n\tvar selection_text = function(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? textRemove : (typeof value === \"function\"\n\t ? textFunction\n\t : textConstant)(value))\n\t : this.node().textContent;\n\t};\n\t\n\tfunction htmlRemove() {\n\t this.innerHTML = \"\";\n\t}\n\t\n\tfunction htmlConstant(value) {\n\t return function() {\n\t this.innerHTML = value;\n\t };\n\t}\n\t\n\tfunction htmlFunction(value) {\n\t return function() {\n\t var v = value.apply(this, arguments);\n\t this.innerHTML = v == null ? \"\" : v;\n\t };\n\t}\n\t\n\tvar selection_html = function(value) {\n\t return arguments.length\n\t ? this.each(value == null\n\t ? htmlRemove : (typeof value === \"function\"\n\t ? htmlFunction\n\t : htmlConstant)(value))\n\t : this.node().innerHTML;\n\t};\n\t\n\tfunction raise() {\n\t if (this.nextSibling) this.parentNode.appendChild(this);\n\t}\n\t\n\tvar selection_raise = function() {\n\t return this.each(raise);\n\t};\n\t\n\tfunction lower() {\n\t if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n\t}\n\t\n\tvar selection_lower = function() {\n\t return this.each(lower);\n\t};\n\t\n\tvar selection_append = function(name) {\n\t var create = typeof name === \"function\" ? name : creator(name);\n\t return this.select(function() {\n\t return this.appendChild(create.apply(this, arguments));\n\t });\n\t};\n\t\n\tfunction constantNull() {\n\t return null;\n\t}\n\t\n\tvar selection_insert = function(name, before) {\n\t var create = typeof name === \"function\" ? name : creator(name),\n\t select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n\t return this.select(function() {\n\t return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n\t });\n\t};\n\t\n\tfunction remove() {\n\t var parent = this.parentNode;\n\t if (parent) parent.removeChild(this);\n\t}\n\t\n\tvar selection_remove = function() {\n\t return this.each(remove);\n\t};\n\t\n\tvar selection_datum = function(value) {\n\t return arguments.length\n\t ? this.property(\"__data__\", value)\n\t : this.node().__data__;\n\t};\n\t\n\tfunction dispatchEvent(node, type, params) {\n\t var window = defaultView(node),\n\t event = window.CustomEvent;\n\t\n\t if (typeof event === \"function\") {\n\t event = new event(type, params);\n\t } else {\n\t event = window.document.createEvent(\"Event\");\n\t if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n\t else event.initEvent(type, false, false);\n\t }\n\t\n\t node.dispatchEvent(event);\n\t}\n\t\n\tfunction dispatchConstant(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params);\n\t };\n\t}\n\t\n\tfunction dispatchFunction(type, params) {\n\t return function() {\n\t return dispatchEvent(this, type, params.apply(this, arguments));\n\t };\n\t}\n\t\n\tvar selection_dispatch = function(type, params) {\n\t return this.each((typeof params === \"function\"\n\t ? dispatchFunction\n\t : dispatchConstant)(type, params));\n\t};\n\t\n\tvar root = [null];\n\t\n\tfunction Selection(groups, parents) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t}\n\t\n\tfunction selection() {\n\t return new Selection([[document.documentElement]], root);\n\t}\n\t\n\tSelection.prototype = selection.prototype = {\n\t constructor: Selection,\n\t select: selection_select,\n\t selectAll: selection_selectAll,\n\t filter: selection_filter,\n\t data: selection_data,\n\t enter: selection_enter,\n\t exit: selection_exit,\n\t merge: selection_merge,\n\t order: selection_order,\n\t sort: selection_sort,\n\t call: selection_call,\n\t nodes: selection_nodes,\n\t node: selection_node,\n\t size: selection_size,\n\t empty: selection_empty,\n\t each: selection_each,\n\t attr: selection_attr,\n\t style: selection_style,\n\t property: selection_property,\n\t classed: selection_classed,\n\t text: selection_text,\n\t html: selection_html,\n\t raise: selection_raise,\n\t lower: selection_lower,\n\t append: selection_append,\n\t insert: selection_insert,\n\t remove: selection_remove,\n\t datum: selection_datum,\n\t on: selection_on,\n\t dispatch: selection_dispatch\n\t};\n\t\n\tvar select = function(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n\t : new Selection([[selector]], root);\n\t};\n\t\n\tvar selectAll = function(selector) {\n\t return typeof selector === \"string\"\n\t ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n\t : new Selection([selector == null ? [] : selector], root);\n\t};\n\t\n\tvar touch = function(node, touches, identifier) {\n\t if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n\t if ((touch = touches[i]).identifier === identifier) {\n\t return point(node, touch);\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\tvar touches = function(node, touches) {\n\t if (touches == null) touches = sourceEvent().touches;\n\t\n\t for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n\t points[i] = point(node, touches[i]);\n\t }\n\t\n\t return points;\n\t};\n\t\n\texports.creator = creator;\n\texports.local = local;\n\texports.matcher = matcher$1;\n\texports.mouse = mouse;\n\texports.namespace = namespace;\n\texports.namespaces = namespaces;\n\texports.select = select;\n\texports.selectAll = selectAll;\n\texports.selection = selection;\n\texports.selector = selector;\n\texports.selectorAll = selectorAll;\n\texports.style = styleValue;\n\texports.touch = touch;\n\texports.touches = touches;\n\texports.window = defaultView;\n\texports.customEvent = customEvent;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-transition/ Version 1.1.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(12), __webpack_require__(5), __webpack_require__(14), __webpack_require__(9), __webpack_require__(4), __webpack_require__(2)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n\t}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';\n\t\n\tvar emptyOn = d3Dispatch.dispatch(\"start\", \"end\", \"interrupt\");\n\tvar emptyTween = [];\n\t\n\tvar CREATED = 0;\n\tvar SCHEDULED = 1;\n\tvar STARTING = 2;\n\tvar STARTED = 3;\n\tvar RUNNING = 4;\n\tvar ENDING = 5;\n\tvar ENDED = 6;\n\t\n\tvar schedule = function(node, name, id, index, group, timing) {\n\t var schedules = node.__transition;\n\t if (!schedules) node.__transition = {};\n\t else if (id in schedules) return;\n\t create(node, id, {\n\t name: name,\n\t index: index, // For context during callback.\n\t group: group, // For context during callback.\n\t on: emptyOn,\n\t tween: emptyTween,\n\t time: timing.time,\n\t delay: timing.delay,\n\t duration: timing.duration,\n\t ease: timing.ease,\n\t timer: null,\n\t state: CREATED\n\t });\n\t};\n\t\n\tfunction init(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction set(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction get(node, id) {\n\t var schedule = node.__transition;\n\t if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\n\t return schedule;\n\t}\n\t\n\tfunction create(node, id, self) {\n\t var schedules = node.__transition,\n\t tween;\n\t\n\t // Initialize the self timer when the transition is created.\n\t // Note the actual delay is not known until the first callback!\n\t schedules[id] = self;\n\t self.timer = d3Timer.timer(schedule, 0, self.time);\n\t\n\t function schedule(elapsed) {\n\t self.state = SCHEDULED;\n\t self.timer.restart(start, self.delay, self.time);\n\t\n\t // If the elapsed delay is less than our first sleep, start immediately.\n\t if (self.delay <= elapsed) start(elapsed - self.delay);\n\t }\n\t\n\t function start(elapsed) {\n\t var i, j, n, o;\n\t\n\t // If the state is not SCHEDULED, then we previously errored on start.\n\t if (self.state !== SCHEDULED) return stop();\n\t\n\t for (i in schedules) {\n\t o = schedules[i];\n\t if (o.name !== self.name) continue;\n\t\n\t // While this element already has a starting transition during this frame,\n\t // defer starting an interrupting transition until that transition has a\n\t // chance to tick (and possibly end); see d3/d3-transition#54!\n\t if (o.state === STARTED) return d3Timer.timeout(start);\n\t\n\t // Interrupt the active transition, if any.\n\t // Dispatch the interrupt event.\n\t if (o.state === RUNNING) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n\t delete schedules[i];\n\t }\n\t\n\t // Cancel any pre-empted transitions. No interrupt event is dispatched\n\t // because the cancelled transitions never started. Note that this also\n\t // removes this transition from the pending list!\n\t else if (+i < id) {\n\t o.state = ENDED;\n\t o.timer.stop();\n\t delete schedules[i];\n\t }\n\t }\n\t\n\t // Defer the first tick to end of the current frame; see d3/d3#1576.\n\t // Note the transition may be canceled after start and before the first tick!\n\t // Note this must be scheduled before the start event; see d3/d3-transition#16!\n\t // Assuming this is successful, subsequent callbacks go straight to tick.\n\t d3Timer.timeout(function() {\n\t if (self.state === STARTED) {\n\t self.state = RUNNING;\n\t self.timer.restart(tick, self.delay, self.time);\n\t tick(elapsed);\n\t }\n\t });\n\t\n\t // Dispatch the start event.\n\t // Note this must be done before the tween are initialized.\n\t self.state = STARTING;\n\t self.on.call(\"start\", node, node.__data__, self.index, self.group);\n\t if (self.state !== STARTING) return; // interrupted\n\t self.state = STARTED;\n\t\n\t // Initialize the tween, deleting null tween.\n\t tween = new Array(n = self.tween.length);\n\t for (i = 0, j = -1; i < n; ++i) {\n\t if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n\t tween[++j] = o;\n\t }\n\t }\n\t tween.length = j + 1;\n\t }\n\t\n\t function tick(elapsed) {\n\t var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n\t i = -1,\n\t n = tween.length;\n\t\n\t while (++i < n) {\n\t tween[i].call(null, t);\n\t }\n\t\n\t // Dispatch the end event.\n\t if (self.state === ENDING) {\n\t self.on.call(\"end\", node, node.__data__, self.index, self.group);\n\t stop();\n\t }\n\t }\n\t\n\t function stop() {\n\t self.state = ENDED;\n\t self.timer.stop();\n\t delete schedules[id];\n\t for (var i in schedules) return; // eslint-disable-line no-unused-vars\n\t delete node.__transition;\n\t }\n\t}\n\t\n\tvar interrupt = function(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t active,\n\t empty = true,\n\t i;\n\t\n\t if (!schedules) return;\n\t\n\t name = name == null ? null : name + \"\";\n\t\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n\t active = schedule.state > STARTING && schedule.state < ENDING;\n\t schedule.state = ENDED;\n\t schedule.timer.stop();\n\t if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n\t delete schedules[i];\n\t }\n\t\n\t if (empty) delete node.__transition;\n\t};\n\t\n\tvar selection_interrupt = function(name) {\n\t return this.each(function() {\n\t interrupt(this, name);\n\t });\n\t};\n\t\n\tfunction tweenRemove(id, name) {\n\t var tween0, tween1;\n\t return function() {\n\t var schedule = set(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = tween0 = tween;\n\t for (var i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1 = tween1.slice();\n\t tween1.splice(i, 1);\n\t break;\n\t }\n\t }\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t}\n\t\n\tfunction tweenFunction(id, name, value) {\n\t var tween0, tween1;\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t var schedule = set(this, id),\n\t tween = schedule.tween;\n\t\n\t // If this node shared tween with the previous node,\n\t // just assign the updated shared tween and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (tween !== tween0) {\n\t tween1 = (tween0 = tween).slice();\n\t for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n\t if (tween1[i].name === name) {\n\t tween1[i] = t;\n\t break;\n\t }\n\t }\n\t if (i === n) tween1.push(t);\n\t }\n\t\n\t schedule.tween = tween1;\n\t };\n\t}\n\t\n\tvar transition_tween = function(name, value) {\n\t var id = this._id;\n\t\n\t name += \"\";\n\t\n\t if (arguments.length < 2) {\n\t var tween = get(this.node(), id).tween;\n\t for (var i = 0, n = tween.length, t; i < n; ++i) {\n\t if ((t = tween[i]).name === name) {\n\t return t.value;\n\t }\n\t }\n\t return null;\n\t }\n\t\n\t return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n\t};\n\t\n\tfunction tweenValue(transition, name, value) {\n\t var id = transition._id;\n\t\n\t transition.each(function() {\n\t var schedule = set(this, id);\n\t (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n\t });\n\t\n\t return function(node) {\n\t return get(node, id).value[name];\n\t };\n\t}\n\t\n\tvar interpolate = function(a, b) {\n\t var c;\n\t return (typeof b === \"number\" ? d3Interpolate.interpolateNumber\n\t : b instanceof d3Color.color ? d3Interpolate.interpolateRgb\n\t : (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)\n\t : d3Interpolate.interpolateString)(a, b);\n\t};\n\t\n\tfunction attrRemove(name) {\n\t return function() {\n\t this.removeAttribute(name);\n\t };\n\t}\n\t\n\tfunction attrRemoveNS(fullname) {\n\t return function() {\n\t this.removeAttributeNS(fullname.space, fullname.local);\n\t };\n\t}\n\t\n\tfunction attrConstant(name, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction attrConstantNS(fullname, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction attrFunction(name, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttribute(name);\n\t value0 = this.getAttribute(name);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tfunction attrFunctionNS(fullname, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0, value1 = value(this);\n\t if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n\t value0 = this.getAttributeNS(fullname.space, fullname.local);\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tvar transition_attr = function(name, value) {\n\t var fullname = d3Selection.namespace(name), i = fullname === \"transform\" ? d3Interpolate.interpolateTransformSvg : interpolate;\n\t return this.attrTween(name, typeof value === \"function\"\n\t ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n\t : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n\t : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + \"\"));\n\t};\n\t\n\tfunction attrTweenNS(fullname, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttributeNS(fullname.space, fullname.local, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tfunction attrTween(name, value) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.setAttribute(name, i(t));\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tvar transition_attrTween = function(name, value) {\n\t var key = \"attr.\" + name;\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t var fullname = d3Selection.namespace(name);\n\t return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n\t};\n\t\n\tfunction delayFunction(id, value) {\n\t return function() {\n\t init(this, id).delay = +value.apply(this, arguments);\n\t };\n\t}\n\t\n\tfunction delayConstant(id, value) {\n\t return value = +value, function() {\n\t init(this, id).delay = value;\n\t };\n\t}\n\t\n\tvar transition_delay = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? delayFunction\n\t : delayConstant)(id, value))\n\t : get(this.node(), id).delay;\n\t};\n\t\n\tfunction durationFunction(id, value) {\n\t return function() {\n\t set(this, id).duration = +value.apply(this, arguments);\n\t };\n\t}\n\t\n\tfunction durationConstant(id, value) {\n\t return value = +value, function() {\n\t set(this, id).duration = value;\n\t };\n\t}\n\t\n\tvar transition_duration = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each((typeof value === \"function\"\n\t ? durationFunction\n\t : durationConstant)(id, value))\n\t : get(this.node(), id).duration;\n\t};\n\t\n\tfunction easeConstant(id, value) {\n\t if (typeof value !== \"function\") throw new Error;\n\t return function() {\n\t set(this, id).ease = value;\n\t };\n\t}\n\t\n\tvar transition_ease = function(value) {\n\t var id = this._id;\n\t\n\t return arguments.length\n\t ? this.each(easeConstant(id, value))\n\t : get(this.node(), id).ease;\n\t};\n\t\n\tvar transition_filter = function(match) {\n\t if (typeof match !== \"function\") match = d3Selection.matcher(match);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n\t subgroup.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, this._name, this._id);\n\t};\n\t\n\tvar transition_merge = function(transition) {\n\t if (transition._id !== this._id) throw new Error;\n\t\n\t for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n\t for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n\t if (node = group0[i] || group1[i]) {\n\t merge[i] = node;\n\t }\n\t }\n\t }\n\t\n\t for (; j < m0; ++j) {\n\t merges[j] = groups0[j];\n\t }\n\t\n\t return new Transition(merges, this._parents, this._name, this._id);\n\t};\n\t\n\tfunction start(name) {\n\t return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n\t var i = t.indexOf(\".\");\n\t if (i >= 0) t = t.slice(0, i);\n\t return !t || t === \"start\";\n\t });\n\t}\n\t\n\tfunction onFunction(id, name, listener) {\n\t var on0, on1, sit = start(name) ? init : set;\n\t return function() {\n\t var schedule = sit(this, id),\n\t on = schedule.on;\n\t\n\t // If this node shared a dispatch with the previous node,\n\t // just assign the updated shared dispatch and we’re done!\n\t // Otherwise, copy-on-write.\n\t if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\t\n\t schedule.on = on1;\n\t };\n\t}\n\t\n\tvar transition_on = function(name, listener) {\n\t var id = this._id;\n\t\n\t return arguments.length < 2\n\t ? get(this.node(), id).on.on(name)\n\t : this.each(onFunction(id, name, listener));\n\t};\n\t\n\tfunction removeFunction(id) {\n\t return function() {\n\t var parent = this.parentNode;\n\t for (var i in this.__transition) if (+i !== id) return;\n\t if (parent) parent.removeChild(this);\n\t };\n\t}\n\t\n\tvar transition_remove = function() {\n\t return this.on(\"end.remove\", removeFunction(this._id));\n\t};\n\t\n\tvar transition_select = function(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = d3Selection.selector(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n\t if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n\t if (\"__data__\" in node) subnode.__data__ = node.__data__;\n\t subgroup[i] = subnode;\n\t schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, this._parents, name, id);\n\t};\n\t\n\tvar transition_selectAll = function(select) {\n\t var name = this._name,\n\t id = this._id;\n\t\n\t if (typeof select !== \"function\") select = d3Selection.selectorAll(select);\n\t\n\t for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n\t if (child = children[k]) {\n\t schedule(child, name, id, k, children, inherit);\n\t }\n\t }\n\t subgroups.push(children);\n\t parents.push(node);\n\t }\n\t }\n\t }\n\t\n\t return new Transition(subgroups, parents, name, id);\n\t};\n\t\n\tvar Selection = d3Selection.selection.prototype.constructor;\n\t\n\tvar transition_selection = function() {\n\t return new Selection(this._groups, this._parents);\n\t};\n\t\n\tfunction styleRemove(name, interpolate$$1) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name),\n\t value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tfunction styleRemoveEnd(name) {\n\t return function() {\n\t this.style.removeProperty(name);\n\t };\n\t}\n\t\n\tfunction styleConstant(name, interpolate$$1, value1) {\n\t var value00,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name);\n\t return value0 === value1 ? null\n\t : value0 === value00 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value1);\n\t };\n\t}\n\t\n\tfunction styleFunction(name, interpolate$$1, value) {\n\t var value00,\n\t value10,\n\t interpolate0;\n\t return function() {\n\t var value0 = d3Selection.style(this, name),\n\t value1 = value(this);\n\t if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n\t return value0 === value1 ? null\n\t : value0 === value00 && value1 === value10 ? interpolate0\n\t : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n\t };\n\t}\n\t\n\tvar transition_style = function(name, value, priority) {\n\t var i = (name += \"\") === \"transform\" ? d3Interpolate.interpolateTransformCss : interpolate;\n\t return value == null ? this\n\t .styleTween(name, styleRemove(name, i))\n\t .on(\"end.style.\" + name, styleRemoveEnd(name))\n\t : this.styleTween(name, typeof value === \"function\"\n\t ? styleFunction(name, i, tweenValue(this, \"style.\" + name, value))\n\t : styleConstant(name, i, value + \"\"), priority);\n\t};\n\t\n\tfunction styleTween(name, value, priority) {\n\t function tween() {\n\t var node = this, i = value.apply(node, arguments);\n\t return i && function(t) {\n\t node.style.setProperty(name, i(t), priority);\n\t };\n\t }\n\t tween._value = value;\n\t return tween;\n\t}\n\t\n\tvar transition_styleTween = function(name, value, priority) {\n\t var key = \"style.\" + (name += \"\");\n\t if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n\t if (value == null) return this.tween(key, null);\n\t if (typeof value !== \"function\") throw new Error;\n\t return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n\t};\n\t\n\tfunction textConstant(value) {\n\t return function() {\n\t this.textContent = value;\n\t };\n\t}\n\t\n\tfunction textFunction(value) {\n\t return function() {\n\t var value1 = value(this);\n\t this.textContent = value1 == null ? \"\" : value1;\n\t };\n\t}\n\t\n\tvar transition_text = function(value) {\n\t return this.tween(\"text\", typeof value === \"function\"\n\t ? textFunction(tweenValue(this, \"text\", value))\n\t : textConstant(value == null ? \"\" : value + \"\"));\n\t};\n\t\n\tvar transition_transition = function() {\n\t var name = this._name,\n\t id0 = this._id,\n\t id1 = newId();\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t var inherit = get(node, id0);\n\t schedule(node, name, id1, i, group, {\n\t time: inherit.time + inherit.delay + inherit.duration,\n\t delay: 0,\n\t duration: inherit.duration,\n\t ease: inherit.ease\n\t });\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id1);\n\t};\n\t\n\tvar id = 0;\n\t\n\tfunction Transition(groups, parents, name, id) {\n\t this._groups = groups;\n\t this._parents = parents;\n\t this._name = name;\n\t this._id = id;\n\t}\n\t\n\tfunction transition(name) {\n\t return d3Selection.selection().transition(name);\n\t}\n\t\n\tfunction newId() {\n\t return ++id;\n\t}\n\t\n\tvar selection_prototype = d3Selection.selection.prototype;\n\t\n\tTransition.prototype = transition.prototype = {\n\t constructor: Transition,\n\t select: transition_select,\n\t selectAll: transition_selectAll,\n\t filter: transition_filter,\n\t merge: transition_merge,\n\t selection: transition_selection,\n\t transition: transition_transition,\n\t call: selection_prototype.call,\n\t nodes: selection_prototype.nodes,\n\t node: selection_prototype.node,\n\t size: selection_prototype.size,\n\t empty: selection_prototype.empty,\n\t each: selection_prototype.each,\n\t on: transition_on,\n\t attr: transition_attr,\n\t attrTween: transition_attrTween,\n\t style: transition_style,\n\t styleTween: transition_styleTween,\n\t text: transition_text,\n\t remove: transition_remove,\n\t tween: transition_tween,\n\t delay: transition_delay,\n\t duration: transition_duration,\n\t ease: transition_ease\n\t};\n\t\n\tvar defaultTiming = {\n\t time: null, // Set on use.\n\t delay: 0,\n\t duration: 250,\n\t ease: d3Ease.easeCubicInOut\n\t};\n\t\n\tfunction inherit(node, id) {\n\t var timing;\n\t while (!(timing = node.__transition) || !(timing = timing[id])) {\n\t if (!(node = node.parentNode)) {\n\t return defaultTiming.time = d3Timer.now(), defaultTiming;\n\t }\n\t }\n\t return timing;\n\t}\n\t\n\tvar selection_transition = function(name) {\n\t var id,\n\t timing;\n\t\n\t if (name instanceof Transition) {\n\t id = name._id, name = name._name;\n\t } else {\n\t id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + \"\";\n\t }\n\t\n\t for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n\t for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n\t if (node = group[i]) {\n\t schedule(node, name, id, i, group, timing || inherit(node, id));\n\t }\n\t }\n\t }\n\t\n\t return new Transition(groups, this._parents, name, id);\n\t};\n\t\n\td3Selection.selection.prototype.interrupt = selection_interrupt;\n\td3Selection.selection.prototype.transition = selection_transition;\n\t\n\tvar root = [null];\n\t\n\tvar active = function(node, name) {\n\t var schedules = node.__transition,\n\t schedule,\n\t i;\n\t\n\t if (schedules) {\n\t name = name == null ? null : name + \"\";\n\t for (i in schedules) {\n\t if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n\t return new Transition([[node]], root, name, +i);\n\t }\n\t }\n\t }\n\t\n\t return null;\n\t};\n\t\n\texports.transition = transition;\n\texports.active = active;\n\texports.interrupt = interrupt;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-timer/ Version 1.0.6. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar frame = 0;\n\tvar timeout = 0;\n\tvar interval = 0;\n\tvar pokeDelay = 1000;\n\tvar taskHead;\n\tvar taskTail;\n\tvar clockLast = 0;\n\tvar clockNow = 0;\n\tvar clockSkew = 0;\n\tvar clock = typeof performance === \"object\" && performance.now ? performance : Date;\n\tvar setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\t\n\tfunction now() {\n\t return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n\t}\n\t\n\tfunction clearNow() {\n\t clockNow = 0;\n\t}\n\t\n\tfunction Timer() {\n\t this._call =\n\t this._time =\n\t this._next = null;\n\t}\n\t\n\tTimer.prototype = timer.prototype = {\n\t constructor: Timer,\n\t restart: function(callback, delay, time) {\n\t if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n\t time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n\t if (!this._next && taskTail !== this) {\n\t if (taskTail) taskTail._next = this;\n\t else taskHead = this;\n\t taskTail = this;\n\t }\n\t this._call = callback;\n\t this._time = time;\n\t sleep();\n\t },\n\t stop: function() {\n\t if (this._call) {\n\t this._call = null;\n\t this._time = Infinity;\n\t sleep();\n\t }\n\t }\n\t};\n\t\n\tfunction timer(callback, delay, time) {\n\t var t = new Timer;\n\t t.restart(callback, delay, time);\n\t return t;\n\t}\n\t\n\tfunction timerFlush() {\n\t now(); // Get the current time, if not already set.\n\t ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n\t var t = taskHead, e;\n\t while (t) {\n\t if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n\t t = t._next;\n\t }\n\t --frame;\n\t}\n\t\n\tfunction wake() {\n\t clockNow = (clockLast = clock.now()) + clockSkew;\n\t frame = timeout = 0;\n\t try {\n\t timerFlush();\n\t } finally {\n\t frame = 0;\n\t nap();\n\t clockNow = 0;\n\t }\n\t}\n\t\n\tfunction poke() {\n\t var now = clock.now(), delay = now - clockLast;\n\t if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n\t}\n\t\n\tfunction nap() {\n\t var t0, t1 = taskHead, t2, time = Infinity;\n\t while (t1) {\n\t if (t1._call) {\n\t if (time > t1._time) time = t1._time;\n\t t0 = t1, t1 = t1._next;\n\t } else {\n\t t2 = t1._next, t1._next = null;\n\t t1 = t0 ? t0._next = t2 : taskHead = t2;\n\t }\n\t }\n\t taskTail = t0;\n\t sleep(time);\n\t}\n\t\n\tfunction sleep(time) {\n\t if (frame) return; // Soonest alarm already set, or will be.\n\t if (timeout) timeout = clearTimeout(timeout);\n\t var delay = time - clockNow;\n\t if (delay > 24) {\n\t if (time < Infinity) timeout = setTimeout(wake, delay);\n\t if (interval) interval = clearInterval(interval);\n\t } else {\n\t if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);\n\t frame = 1, setFrame(wake);\n\t }\n\t}\n\t\n\tvar timeout$1 = function(callback, delay, time) {\n\t var t = new Timer;\n\t delay = delay == null ? 0 : +delay;\n\t t.restart(function(elapsed) {\n\t t.stop();\n\t callback(elapsed + delay);\n\t }, delay, time);\n\t return t;\n\t};\n\t\n\tvar interval$1 = function(callback, delay, time) {\n\t var t = new Timer, total = delay;\n\t if (delay == null) return t.restart(callback, delay, time), t;\n\t delay = +delay, time = time == null ? now() : +time;\n\t t.restart(function tick(elapsed) {\n\t elapsed += total;\n\t t.restart(tick, total += delay, time);\n\t callback(elapsed);\n\t }, delay, time);\n\t return t;\n\t};\n\t\n\texports.now = now;\n\texports.timer = timer;\n\texports.timerFlush = timerFlush;\n\texports.timeout = timeout$1;\n\texports.interval = interval$1;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 15 */,\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;'use strict';\n\t\n\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function (require) {\n\t 'use strict';\n\t\n\t var _require = __webpack_require__(17),\n\t colorSchemas = _require.colorSchemas;\n\t\n\t var constants = __webpack_require__(18);\n\t var serializeWithStyles = __webpack_require__(19);\n\t\n\t var encoder = window.btoa;\n\t\n\t if (!encoder) {\n\t encoder = __webpack_require__(20).encode;\n\t }\n\t\n\t // Base64 doesn't work really well with Unicode strings, so we need to use this function\n\t // Ref: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n\t var b64EncodeUnicode = function b64EncodeUnicode(str) {\n\t return encoder(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n\t return String.fromCharCode('0x' + p1);\n\t }));\n\t };\n\t\n\t var config = {\n\t styleClass: 'britechartStyle',\n\t defaultFilename: 'britechart.png',\n\t chartBackground: 'white',\n\t imageSourceBase: 'data:image/svg+xml;base64,',\n\t titleFontSize: '15px',\n\t titleFontFamily: '\\'Benton Sans\\', sans-serif',\n\t titleTopOffset: 30,\n\t get styleBackgroundString() {\n\t return '';\n\t }\n\t };\n\t\n\t /**\n\t * Main function to be used as a method by chart instances to export charts to png\n\t * @param {array} svgs (or an svg element) pass in both chart & legend as array or just chart as svg or in array\n\t * @param {string} filename [download to be called .png]\n\t * @param {string} title Title for the image\n\t */\n\t function exportChart(d3svg, filename, title) {\n\t var img = createImage(convertSvgToHtml.call(this, d3svg, title));\n\t\n\t img.onload = handleImageLoad.bind(img, createCanvas(this.width(), this.height()), filename);\n\t }\n\t\n\t /**\n\t * adds background styles to raw html\n\t * @param {string} html raw html\n\t */\n\t function addBackground(html) {\n\t return html.replace('>', '>' + config.styleBackgroundString);\n\t }\n\t\n\t /**\n\t * takes d3 svg el, adds proper svg tags, adds inline styles\n\t * from stylesheets, adds white background and returns string\n\t * @param {object} d3svg TYPE d3 svg element\n\t * @return {string} string of passed d3\n\t */\n\t function convertSvgToHtml(d3svg, title) {\n\t if (!d3svg) {\n\t return;\n\t }\n\t\n\t d3svg.attr('version', 1.1).attr('xmlns', 'http://www.w3.org/2000/svg');\n\t var serializer = serializeWithStyles.initializeSerializer();\n\t var html = serializer(d3svg.node());\n\t\n\t html = formatHtmlByBrowser(html);\n\t html = prependTitle.call(this, html, title, parseInt(d3svg.attr('width'), 10));\n\t html = addBackground(html);\n\t\n\t return html;\n\t }\n\t\n\t /**\n\t * Create Canvas\n\t * @param {number} width\n\t * @param {number} height\n\t * @return {object} TYPE canvas element\n\t */\n\t function createCanvas(width, height) {\n\t var canvas = document.createElement('canvas');\n\t\n\t canvas.height = height;\n\t canvas.width = width;\n\t\n\t return canvas;\n\t }\n\t\n\t /**\n\t * Create Image\n\t * @param {string} svgHtml string representation of svg el\n\t * @return {object} TYPE element , src points at svg\n\t */\n\t function createImage(svgHtml) {\n\t var img = new Image();\n\t\n\t img.src = '' + config.imageSourceBase + b64EncodeUnicode(svgHtml);\n\t\n\t return img;\n\t };\n\t\n\t /**\n\t * Draws image on canvas\n\t * @param {object} image TYPE:el , to be drawn\n\t * @param {object} canvas TYPE: el , to draw on\n\t */\n\t function drawImageOnCanvas(image, canvas) {\n\t canvas.getContext('2d').drawImage(image, 0, 0);\n\t\n\t return canvas;\n\t }\n\t\n\t /**\n\t * Triggers browser to download image, convert canvas to url,\n\t * we need to append the link el to the dom before clicking it for Firefox to register\n\t * point at it and trigger click\n\t * @param {object} canvas TYPE: el \n\t * @param {string} filename\n\t * @param {string} extensionType\n\t */\n\t function downloadCanvas(canvas) {\n\t var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.defaultFilename;\n\t var extensionType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'image/png';\n\t\n\t var url = canvas.toDataURL(extensionType);\n\t var link = document.createElement('a');\n\t\n\t link.href = url;\n\t link.download = filename;\n\t document.body.appendChild(link);\n\t link.click();\n\t document.body.removeChild(link);\n\t }\n\t\n\t /**\n\t * Some browsers need special formatting, we handle that here\n\t * @param {string} html string of svg html\n\t * @return {string} string of svg html\n\t */\n\t function formatHtmlByBrowser(html) {\n\t if (navigator.userAgent.search('FireFox') > -1) {\n\t return html.replace(/url.*"\\)/, 'url("#' + constants.lineGradientId + '");');\n\t }\n\t\n\t return html;\n\t }\n\t\n\t /**\n\t * Handles on load event fired by img.onload, this=img\n\t * @param {object} canvas TYPE: el \n\t * @param {string} filename\n\t * @param {object} e\n\t */\n\t function handleImageLoad(canvas, filename, e) {\n\t e.preventDefault();\n\t\n\t downloadCanvas(drawImageOnCanvas(this, canvas), filename);\n\t }\n\t\n\t /**\n\t * if passed, append title to the raw html to appear on graph\n\t * @param {string} html raw html string\n\t * @param {string} title title of the graph\n\t * @param {number} svgWidth width of graph container\n\t * @return {string} raw html with title prepended\n\t */\n\t function prependTitle(html, title, svgWidth) {\n\t if (!title || !svgWidth) {\n\t return html;\n\t }\n\t var grey = colorSchemas.grey;\n\t\n\t\n\t html = html.replace(/ ' + title + ' > (-2 * bitCounter & 6)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t};\n\t\n\t\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\t\tvar encode = function(input) {\n\t\t\tinput = String(input);\n\t\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\t\terror(\n\t\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t\t'Latin1 range.'\n\t\t\t\t);\n\t\t\t}\n\t\t\tvar padding = input.length % 3;\n\t\t\tvar output = '';\n\t\t\tvar position = -1;\n\t\t\tvar a;\n\t\t\tvar b;\n\t\t\tvar c;\n\t\t\tvar d;\n\t\t\tvar buffer;\n\t\t\t// Make sure any padding is handled outside of the loop.\n\t\t\tvar length = input.length - padding;\n\t\n\t\t\twhile (++position < length) {\n\t\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\t\tc = input.charCodeAt(++position);\n\t\t\t\tbuffer = a + b + c;\n\t\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t\t// matching character for each of them to the output.\n\t\t\t\toutput += (\n\t\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t\t);\n\t\t\t}\n\t\n\t\t\tif (padding == 2) {\n\t\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\t\tb = input.charCodeAt(++position);\n\t\t\t\tbuffer = a + b;\n\t\t\t\toutput += (\n\t\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t\t'='\n\t\t\t\t);\n\t\t\t} else if (padding == 1) {\n\t\t\t\tbuffer = input.charCodeAt(position);\n\t\t\t\toutput += (\n\t\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t\t'=='\n\t\t\t\t);\n\t\t\t}\n\t\n\t\t\treturn output;\n\t\t};\n\t\n\t\tvar base64 = {\n\t\t\t'encode': encode,\n\t\t\t'decode': decode,\n\t\t\t'version': '0.1.0'\n\t\t};\n\t\n\t\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t\t// like the following:\n\t\tif (\n\t\t\ttrue\n\t\t) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {\n\t\t\t\treturn base64;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\t\tfreeModule.exports = base64;\n\t\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\t\tfor (var key in base64) {\n\t\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else { // in Rhino or a web browser\n\t\t\troot.base64 = base64;\n\t\t}\n\t\n\t}(this));\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(21)(module), (function() { return this; }())))\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ }),\n/* 22 */,\n/* 23 */,\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-shape/ Version 1.2.0. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports, __webpack_require__(25)) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-path'], factory) :\n\t\t(factory((global.d3 = global.d3 || {}),global.d3));\n\t}(this, (function (exports,d3Path) { 'use strict';\n\t\n\tvar constant = function(x) {\n\t return function constant() {\n\t return x;\n\t };\n\t};\n\t\n\tvar abs = Math.abs;\n\tvar atan2 = Math.atan2;\n\tvar cos = Math.cos;\n\tvar max = Math.max;\n\tvar min = Math.min;\n\tvar sin = Math.sin;\n\tvar sqrt = Math.sqrt;\n\t\n\tvar epsilon = 1e-12;\n\tvar pi = Math.PI;\n\tvar halfPi = pi / 2;\n\tvar tau = 2 * pi;\n\t\n\tfunction acos(x) {\n\t return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n\t}\n\t\n\tfunction asin(x) {\n\t return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n\t}\n\t\n\tfunction arcInnerRadius(d) {\n\t return d.innerRadius;\n\t}\n\t\n\tfunction arcOuterRadius(d) {\n\t return d.outerRadius;\n\t}\n\t\n\tfunction arcStartAngle(d) {\n\t return d.startAngle;\n\t}\n\t\n\tfunction arcEndAngle(d) {\n\t return d.endAngle;\n\t}\n\t\n\tfunction arcPadAngle(d) {\n\t return d && d.padAngle; // Note: optional!\n\t}\n\t\n\tfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n\t var x10 = x1 - x0, y10 = y1 - y0,\n\t x32 = x3 - x2, y32 = y3 - y2,\n\t t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n\t return [x0 + t * x10, y0 + t * y10];\n\t}\n\t\n\t// Compute perpendicular offset line of length rc.\n\t// http://mathworld.wolfram.com/Circle-LineIntersection.html\n\tfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n\t var x01 = x0 - x1,\n\t y01 = y0 - y1,\n\t lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n\t ox = lo * y01,\n\t oy = -lo * x01,\n\t x11 = x0 + ox,\n\t y11 = y0 + oy,\n\t x10 = x1 + ox,\n\t y10 = y1 + oy,\n\t x00 = (x11 + x10) / 2,\n\t y00 = (y11 + y10) / 2,\n\t dx = x10 - x11,\n\t dy = y10 - y11,\n\t d2 = dx * dx + dy * dy,\n\t r = r1 - rc,\n\t D = x11 * y10 - x10 * y11,\n\t d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n\t cx0 = (D * dy - dx * d) / d2,\n\t cy0 = (-D * dx - dy * d) / d2,\n\t cx1 = (D * dy + dx * d) / d2,\n\t cy1 = (-D * dx + dy * d) / d2,\n\t dx0 = cx0 - x00,\n\t dy0 = cy0 - y00,\n\t dx1 = cx1 - x00,\n\t dy1 = cy1 - y00;\n\t\n\t // Pick the closer of the two intersection points.\n\t // TODO Is there a faster way to determine which intersection to use?\n\t if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\t\n\t return {\n\t cx: cx0,\n\t cy: cy0,\n\t x01: -ox,\n\t y01: -oy,\n\t x11: cx0 * (r1 / r - 1),\n\t y11: cy0 * (r1 / r - 1)\n\t };\n\t}\n\t\n\tvar arc = function() {\n\t var innerRadius = arcInnerRadius,\n\t outerRadius = arcOuterRadius,\n\t cornerRadius = constant(0),\n\t padRadius = null,\n\t startAngle = arcStartAngle,\n\t endAngle = arcEndAngle,\n\t padAngle = arcPadAngle,\n\t context = null;\n\t\n\t function arc() {\n\t var buffer,\n\t r,\n\t r0 = +innerRadius.apply(this, arguments),\n\t r1 = +outerRadius.apply(this, arguments),\n\t a0 = startAngle.apply(this, arguments) - halfPi,\n\t a1 = endAngle.apply(this, arguments) - halfPi,\n\t da = abs(a1 - a0),\n\t cw = a1 > a0;\n\t\n\t if (!context) context = buffer = d3Path.path();\n\t\n\t // Ensure that the outer radius is always larger than the inner radius.\n\t if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\t\n\t // Is it a point?\n\t if (!(r1 > epsilon)) context.moveTo(0, 0);\n\t\n\t // Or is it a circle or annulus?\n\t else if (da > tau - epsilon) {\n\t context.moveTo(r1 * cos(a0), r1 * sin(a0));\n\t context.arc(0, 0, r1, a0, a1, !cw);\n\t if (r0 > epsilon) {\n\t context.moveTo(r0 * cos(a1), r0 * sin(a1));\n\t context.arc(0, 0, r0, a1, a0, cw);\n\t }\n\t }\n\t\n\t // Or is it a circular or annular sector?\n\t else {\n\t var a01 = a0,\n\t a11 = a1,\n\t a00 = a0,\n\t a10 = a1,\n\t da0 = da,\n\t da1 = da,\n\t ap = padAngle.apply(this, arguments) / 2,\n\t rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n\t rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n\t rc0 = rc,\n\t rc1 = rc,\n\t t0,\n\t t1;\n\t\n\t // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n\t if (rp > epsilon) {\n\t var p0 = asin(rp / r0 * sin(ap)),\n\t p1 = asin(rp / r1 * sin(ap));\n\t if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n\t else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n\t if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n\t else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n\t }\n\t\n\t var x01 = r1 * cos(a01),\n\t y01 = r1 * sin(a01),\n\t x10 = r0 * cos(a10),\n\t y10 = r0 * sin(a10);\n\t\n\t // Apply rounded corners?\n\t if (rc > epsilon) {\n\t var x11 = r1 * cos(a11),\n\t y11 = r1 * sin(a11),\n\t x00 = r0 * cos(a00),\n\t y00 = r0 * sin(a00);\n\t\n\t // Restrict the corner radius according to the sector angle.\n\t if (da < pi) {\n\t var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n\t ax = x01 - oc[0],\n\t ay = y01 - oc[1],\n\t bx = x11 - oc[0],\n\t by = y11 - oc[1],\n\t kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n\t lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\t rc0 = min(rc, (r0 - lc) / (kc - 1));\n\t rc1 = min(rc, (r1 - lc) / (kc + 1));\n\t }\n\t }\n\t\n\t // Is the sector collapsed to a line?\n\t if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\t\n\t // Does the sector’s outer ring have rounded corners?\n\t else if (rc1 > epsilon) {\n\t t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n\t t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\t\n\t context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\t\n\t // Have the corners merged?\n\t if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\t\n\t // Otherwise, draw the two corners and the ring.\n\t else {\n\t context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n\t context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n\t context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n\t }\n\t }\n\t\n\t // Or is the outer ring just a circular arc?\n\t else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\t\n\t // Is there no inner ring, and it’s a circular sector?\n\t // Or perhaps it’s an annular sector collapsed due to padding?\n\t if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\t\n\t // Does the sector’s inner ring (or point) have rounded corners?\n\t else if (rc0 > epsilon) {\n\t t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n\t t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\t\n\t context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\t\n\t // Have the corners merged?\n\t if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\t\n\t // Otherwise, draw the two corners and the ring.\n\t else {\n\t context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n\t context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n\t context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n\t }\n\t }\n\t\n\t // Or is the inner ring just a circular arc?\n\t else context.arc(0, 0, r0, a10, a00, cw);\n\t }\n\t\n\t context.closePath();\n\t\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t arc.centroid = function() {\n\t var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n\t a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n\t return [cos(a) * r, sin(a) * r];\n\t };\n\t\n\t arc.innerRadius = function(_) {\n\t return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n\t };\n\t\n\t arc.outerRadius = function(_) {\n\t return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n\t };\n\t\n\t arc.cornerRadius = function(_) {\n\t return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n\t };\n\t\n\t arc.padRadius = function(_) {\n\t return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n\t };\n\t\n\t arc.startAngle = function(_) {\n\t return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n\t };\n\t\n\t arc.endAngle = function(_) {\n\t return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n\t };\n\t\n\t arc.padAngle = function(_) {\n\t return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n\t };\n\t\n\t arc.context = function(_) {\n\t return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n\t };\n\t\n\t return arc;\n\t};\n\t\n\tfunction Linear(context) {\n\t this._context = context;\n\t}\n\t\n\tLinear.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; // proceed\n\t default: this._context.lineTo(x, y); break;\n\t }\n\t }\n\t};\n\t\n\tvar curveLinear = function(context) {\n\t return new Linear(context);\n\t};\n\t\n\tfunction x(p) {\n\t return p[0];\n\t}\n\t\n\tfunction y(p) {\n\t return p[1];\n\t}\n\t\n\tvar line = function() {\n\t var x$$1 = x,\n\t y$$1 = y,\n\t defined = constant(true),\n\t context = null,\n\t curve = curveLinear,\n\t output = null;\n\t\n\t function line(data) {\n\t var i,\n\t n = data.length,\n\t d,\n\t defined0 = false,\n\t buffer;\n\t\n\t if (context == null) output = curve(buffer = d3Path.path());\n\t\n\t for (i = 0; i <= n; ++i) {\n\t if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n\t if (defined0 = !defined0) output.lineStart();\n\t else output.lineEnd();\n\t }\n\t if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data));\n\t }\n\t\n\t if (buffer) return output = null, buffer + \"\" || null;\n\t }\n\t\n\t line.x = function(_) {\n\t return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant(+_), line) : x$$1;\n\t };\n\t\n\t line.y = function(_) {\n\t return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant(+_), line) : y$$1;\n\t };\n\t\n\t line.defined = function(_) {\n\t return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n\t };\n\t\n\t line.curve = function(_) {\n\t return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n\t };\n\t\n\t line.context = function(_) {\n\t return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n\t };\n\t\n\t return line;\n\t};\n\t\n\tvar area = function() {\n\t var x0 = x,\n\t x1 = null,\n\t y0 = constant(0),\n\t y1 = y,\n\t defined = constant(true),\n\t context = null,\n\t curve = curveLinear,\n\t output = null;\n\t\n\t function area(data) {\n\t var i,\n\t j,\n\t k,\n\t n = data.length,\n\t d,\n\t defined0 = false,\n\t buffer,\n\t x0z = new Array(n),\n\t y0z = new Array(n);\n\t\n\t if (context == null) output = curve(buffer = d3Path.path());\n\t\n\t for (i = 0; i <= n; ++i) {\n\t if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n\t if (defined0 = !defined0) {\n\t j = i;\n\t output.areaStart();\n\t output.lineStart();\n\t } else {\n\t output.lineEnd();\n\t output.lineStart();\n\t for (k = i - 1; k >= j; --k) {\n\t output.point(x0z[k], y0z[k]);\n\t }\n\t output.lineEnd();\n\t output.areaEnd();\n\t }\n\t }\n\t if (defined0) {\n\t x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n\t output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n\t }\n\t }\n\t\n\t if (buffer) return output = null, buffer + \"\" || null;\n\t }\n\t\n\t function arealine() {\n\t return line().defined(defined).curve(curve).context(context);\n\t }\n\t\n\t area.x = function(_) {\n\t return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n\t };\n\t\n\t area.x0 = function(_) {\n\t return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n\t };\n\t\n\t area.x1 = function(_) {\n\t return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n\t };\n\t\n\t area.y = function(_) {\n\t return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n\t };\n\t\n\t area.y0 = function(_) {\n\t return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n\t };\n\t\n\t area.y1 = function(_) {\n\t return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n\t };\n\t\n\t area.lineX0 =\n\t area.lineY0 = function() {\n\t return arealine().x(x0).y(y0);\n\t };\n\t\n\t area.lineY1 = function() {\n\t return arealine().x(x0).y(y1);\n\t };\n\t\n\t area.lineX1 = function() {\n\t return arealine().x(x1).y(y0);\n\t };\n\t\n\t area.defined = function(_) {\n\t return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n\t };\n\t\n\t area.curve = function(_) {\n\t return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n\t };\n\t\n\t area.context = function(_) {\n\t return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n\t };\n\t\n\t return area;\n\t};\n\t\n\tvar descending = function(a, b) {\n\t return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n\t};\n\t\n\tvar identity = function(d) {\n\t return d;\n\t};\n\t\n\tvar pie = function() {\n\t var value = identity,\n\t sortValues = descending,\n\t sort = null,\n\t startAngle = constant(0),\n\t endAngle = constant(tau),\n\t padAngle = constant(0);\n\t\n\t function pie(data) {\n\t var i,\n\t n = data.length,\n\t j,\n\t k,\n\t sum = 0,\n\t index = new Array(n),\n\t arcs = new Array(n),\n\t a0 = +startAngle.apply(this, arguments),\n\t da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n\t a1,\n\t p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n\t pa = p * (da < 0 ? -1 : 1),\n\t v;\n\t\n\t for (i = 0; i < n; ++i) {\n\t if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n\t sum += v;\n\t }\n\t }\n\t\n\t // Optionally sort the arcs by previously-computed values or by data.\n\t if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n\t else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\t\n\t // Compute the arcs! They are stored in the original data's order.\n\t for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n\t j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n\t data: data[j],\n\t index: i,\n\t value: v,\n\t startAngle: a0,\n\t endAngle: a1,\n\t padAngle: p\n\t };\n\t }\n\t\n\t return arcs;\n\t }\n\t\n\t pie.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n\t };\n\t\n\t pie.sortValues = function(_) {\n\t return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n\t };\n\t\n\t pie.sort = function(_) {\n\t return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n\t };\n\t\n\t pie.startAngle = function(_) {\n\t return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n\t };\n\t\n\t pie.endAngle = function(_) {\n\t return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n\t };\n\t\n\t pie.padAngle = function(_) {\n\t return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n\t };\n\t\n\t return pie;\n\t};\n\t\n\tvar curveRadialLinear = curveRadial(curveLinear);\n\t\n\tfunction Radial(curve) {\n\t this._curve = curve;\n\t}\n\t\n\tRadial.prototype = {\n\t areaStart: function() {\n\t this._curve.areaStart();\n\t },\n\t areaEnd: function() {\n\t this._curve.areaEnd();\n\t },\n\t lineStart: function() {\n\t this._curve.lineStart();\n\t },\n\t lineEnd: function() {\n\t this._curve.lineEnd();\n\t },\n\t point: function(a, r) {\n\t this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n\t }\n\t};\n\t\n\tfunction curveRadial(curve) {\n\t\n\t function radial(context) {\n\t return new Radial(curve(context));\n\t }\n\t\n\t radial._curve = curve;\n\t\n\t return radial;\n\t}\n\t\n\tfunction lineRadial(l) {\n\t var c = l.curve;\n\t\n\t l.angle = l.x, delete l.x;\n\t l.radius = l.y, delete l.y;\n\t\n\t l.curve = function(_) {\n\t return arguments.length ? c(curveRadial(_)) : c()._curve;\n\t };\n\t\n\t return l;\n\t}\n\t\n\tvar lineRadial$1 = function() {\n\t return lineRadial(line().curve(curveRadialLinear));\n\t};\n\t\n\tvar areaRadial = function() {\n\t var a = area().curve(curveRadialLinear),\n\t c = a.curve,\n\t x0 = a.lineX0,\n\t x1 = a.lineX1,\n\t y0 = a.lineY0,\n\t y1 = a.lineY1;\n\t\n\t a.angle = a.x, delete a.x;\n\t a.startAngle = a.x0, delete a.x0;\n\t a.endAngle = a.x1, delete a.x1;\n\t a.radius = a.y, delete a.y;\n\t a.innerRadius = a.y0, delete a.y0;\n\t a.outerRadius = a.y1, delete a.y1;\n\t a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n\t a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n\t a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n\t a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\t\n\t a.curve = function(_) {\n\t return arguments.length ? c(curveRadial(_)) : c()._curve;\n\t };\n\t\n\t return a;\n\t};\n\t\n\tvar pointRadial = function(x, y) {\n\t return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n\t};\n\t\n\tvar slice = Array.prototype.slice;\n\t\n\tfunction linkSource(d) {\n\t return d.source;\n\t}\n\t\n\tfunction linkTarget(d) {\n\t return d.target;\n\t}\n\t\n\tfunction link(curve) {\n\t var source = linkSource,\n\t target = linkTarget,\n\t x$$1 = x,\n\t y$$1 = y,\n\t context = null;\n\t\n\t function link() {\n\t var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n\t if (!context) context = buffer = d3Path.path();\n\t curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv));\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t link.source = function(_) {\n\t return arguments.length ? (source = _, link) : source;\n\t };\n\t\n\t link.target = function(_) {\n\t return arguments.length ? (target = _, link) : target;\n\t };\n\t\n\t link.x = function(_) {\n\t return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant(+_), link) : x$$1;\n\t };\n\t\n\t link.y = function(_) {\n\t return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant(+_), link) : y$$1;\n\t };\n\t\n\t link.context = function(_) {\n\t return arguments.length ? ((context = _ == null ? null : _), link) : context;\n\t };\n\t\n\t return link;\n\t}\n\t\n\tfunction curveHorizontal(context, x0, y0, x1, y1) {\n\t context.moveTo(x0, y0);\n\t context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n\t}\n\t\n\tfunction curveVertical(context, x0, y0, x1, y1) {\n\t context.moveTo(x0, y0);\n\t context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n\t}\n\t\n\tfunction curveRadial$1(context, x0, y0, x1, y1) {\n\t var p0 = pointRadial(x0, y0),\n\t p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n\t p2 = pointRadial(x1, y0),\n\t p3 = pointRadial(x1, y1);\n\t context.moveTo(p0[0], p0[1]);\n\t context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n\t}\n\t\n\tfunction linkHorizontal() {\n\t return link(curveHorizontal);\n\t}\n\t\n\tfunction linkVertical() {\n\t return link(curveVertical);\n\t}\n\t\n\tfunction linkRadial() {\n\t var l = link(curveRadial$1);\n\t l.angle = l.x, delete l.x;\n\t l.radius = l.y, delete l.y;\n\t return l;\n\t}\n\t\n\tvar circle = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / pi);\n\t context.moveTo(r, 0);\n\t context.arc(0, 0, r, 0, tau);\n\t }\n\t};\n\t\n\tvar cross = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / 5) / 2;\n\t context.moveTo(-3 * r, -r);\n\t context.lineTo(-r, -r);\n\t context.lineTo(-r, -3 * r);\n\t context.lineTo(r, -3 * r);\n\t context.lineTo(r, -r);\n\t context.lineTo(3 * r, -r);\n\t context.lineTo(3 * r, r);\n\t context.lineTo(r, r);\n\t context.lineTo(r, 3 * r);\n\t context.lineTo(-r, 3 * r);\n\t context.lineTo(-r, r);\n\t context.lineTo(-3 * r, r);\n\t context.closePath();\n\t }\n\t};\n\t\n\tvar tan30 = Math.sqrt(1 / 3);\n\tvar tan30_2 = tan30 * 2;\n\t\n\tvar diamond = {\n\t draw: function(context, size) {\n\t var y = Math.sqrt(size / tan30_2),\n\t x = y * tan30;\n\t context.moveTo(0, -y);\n\t context.lineTo(x, 0);\n\t context.lineTo(0, y);\n\t context.lineTo(-x, 0);\n\t context.closePath();\n\t }\n\t};\n\t\n\tvar ka = 0.89081309152928522810;\n\tvar kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10);\n\tvar kx = Math.sin(tau / 10) * kr;\n\tvar ky = -Math.cos(tau / 10) * kr;\n\t\n\tvar star = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size * ka),\n\t x = kx * r,\n\t y = ky * r;\n\t context.moveTo(0, -r);\n\t context.lineTo(x, y);\n\t for (var i = 1; i < 5; ++i) {\n\t var a = tau * i / 5,\n\t c = Math.cos(a),\n\t s = Math.sin(a);\n\t context.lineTo(s * r, -c * r);\n\t context.lineTo(c * x - s * y, s * x + c * y);\n\t }\n\t context.closePath();\n\t }\n\t};\n\t\n\tvar square = {\n\t draw: function(context, size) {\n\t var w = Math.sqrt(size),\n\t x = -w / 2;\n\t context.rect(x, x, w, w);\n\t }\n\t};\n\t\n\tvar sqrt3 = Math.sqrt(3);\n\t\n\tvar triangle = {\n\t draw: function(context, size) {\n\t var y = -Math.sqrt(size / (sqrt3 * 3));\n\t context.moveTo(0, y * 2);\n\t context.lineTo(-sqrt3 * y, -y);\n\t context.lineTo(sqrt3 * y, -y);\n\t context.closePath();\n\t }\n\t};\n\t\n\tvar c = -0.5;\n\tvar s = Math.sqrt(3) / 2;\n\tvar k = 1 / Math.sqrt(12);\n\tvar a = (k / 2 + 1) * 3;\n\t\n\tvar wye = {\n\t draw: function(context, size) {\n\t var r = Math.sqrt(size / a),\n\t x0 = r / 2,\n\t y0 = r * k,\n\t x1 = x0,\n\t y1 = r * k + r,\n\t x2 = -x1,\n\t y2 = y1;\n\t context.moveTo(x0, y0);\n\t context.lineTo(x1, y1);\n\t context.lineTo(x2, y2);\n\t context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n\t context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n\t context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n\t context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n\t context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n\t context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n\t context.closePath();\n\t }\n\t};\n\t\n\tvar symbols = [\n\t circle,\n\t cross,\n\t diamond,\n\t square,\n\t star,\n\t triangle,\n\t wye\n\t];\n\t\n\tvar symbol = function() {\n\t var type = constant(circle),\n\t size = constant(64),\n\t context = null;\n\t\n\t function symbol() {\n\t var buffer;\n\t if (!context) context = buffer = d3Path.path();\n\t type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n\t if (buffer) return context = null, buffer + \"\" || null;\n\t }\n\t\n\t symbol.type = function(_) {\n\t return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n\t };\n\t\n\t symbol.size = function(_) {\n\t return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n\t };\n\t\n\t symbol.context = function(_) {\n\t return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n\t };\n\t\n\t return symbol;\n\t};\n\t\n\tvar noop = function() {};\n\t\n\tfunction point(that, x, y) {\n\t that._context.bezierCurveTo(\n\t (2 * that._x0 + that._x1) / 3,\n\t (2 * that._y0 + that._y1) / 3,\n\t (that._x0 + 2 * that._x1) / 3,\n\t (that._y0 + 2 * that._y1) / 3,\n\t (that._x0 + 4 * that._x1 + x) / 6,\n\t (that._y0 + 4 * that._y1 + y) / 6\n\t );\n\t}\n\t\n\tfunction Basis(context) {\n\t this._context = context;\n\t}\n\t\n\tBasis.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 3: point(this, this._x1, this._y1); // proceed\n\t case 2: this._context.lineTo(this._x1, this._y1); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t};\n\t\n\tvar basis = function(context) {\n\t return new Basis(context);\n\t};\n\t\n\tfunction BasisClosed(context) {\n\t this._context = context;\n\t}\n\t\n\tBasisClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x2, this._y2);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n\t this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x2, this._y2);\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n\t case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n\t case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t};\n\t\n\tvar basisClosed = function(context) {\n\t return new BasisClosed(context);\n\t};\n\t\n\tfunction BasisOpen(context) {\n\t this._context = context;\n\t}\n\t\n\tBasisOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n\t case 3: this._point = 4; // proceed\n\t default: point(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t }\n\t};\n\t\n\tvar basisOpen = function(context) {\n\t return new BasisOpen(context);\n\t};\n\t\n\tfunction Bundle(context, beta) {\n\t this._basis = new Basis(context);\n\t this._beta = beta;\n\t}\n\t\n\tBundle.prototype = {\n\t lineStart: function() {\n\t this._x = [];\n\t this._y = [];\n\t this._basis.lineStart();\n\t },\n\t lineEnd: function() {\n\t var x = this._x,\n\t y = this._y,\n\t j = x.length - 1;\n\t\n\t if (j > 0) {\n\t var x0 = x[0],\n\t y0 = y[0],\n\t dx = x[j] - x0,\n\t dy = y[j] - y0,\n\t i = -1,\n\t t;\n\t\n\t while (++i <= j) {\n\t t = i / j;\n\t this._basis.point(\n\t this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n\t this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n\t );\n\t }\n\t }\n\t\n\t this._x = this._y = null;\n\t this._basis.lineEnd();\n\t },\n\t point: function(x, y) {\n\t this._x.push(+x);\n\t this._y.push(+y);\n\t }\n\t};\n\t\n\tvar bundle = ((function custom(beta) {\n\t\n\t function bundle(context) {\n\t return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n\t }\n\t\n\t bundle.beta = function(beta) {\n\t return custom(+beta);\n\t };\n\t\n\t return bundle;\n\t}))(0.85);\n\t\n\tfunction point$1(that, x, y) {\n\t that._context.bezierCurveTo(\n\t that._x1 + that._k * (that._x2 - that._x0),\n\t that._y1 + that._k * (that._y2 - that._y0),\n\t that._x2 + that._k * (that._x1 - x),\n\t that._y2 + that._k * (that._y1 - y),\n\t that._x2,\n\t that._y2\n\t );\n\t}\n\t\n\tfunction Cardinal(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t}\n\t\n\tCardinal.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x2, this._y2); break;\n\t case 3: point$1(this, this._x1, this._y1); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n\t case 2: this._point = 3; // proceed\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar cardinal = ((function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new Cardinal(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t}))(0);\n\t\n\tfunction CardinalClosed(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t}\n\t\n\tCardinalClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.lineTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t this.point(this._x5, this._y5);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n\t case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n\t case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar cardinalClosed = ((function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new CardinalClosed(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t}))(0);\n\t\n\tfunction CardinalOpen(context, tension) {\n\t this._context = context;\n\t this._k = (1 - tension) / 6;\n\t}\n\t\n\tCardinalOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n\t case 3: this._point = 4; // proceed\n\t default: point$1(this, x, y); break;\n\t }\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar cardinalOpen = ((function custom(tension) {\n\t\n\t function cardinal(context) {\n\t return new CardinalOpen(context, tension);\n\t }\n\t\n\t cardinal.tension = function(tension) {\n\t return custom(+tension);\n\t };\n\t\n\t return cardinal;\n\t}))(0);\n\t\n\tfunction point$2(that, x, y) {\n\t var x1 = that._x1,\n\t y1 = that._y1,\n\t x2 = that._x2,\n\t y2 = that._y2;\n\t\n\t if (that._l01_a > epsilon) {\n\t var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n\t n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n\t x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n\t y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n\t }\n\t\n\t if (that._l23_a > epsilon) {\n\t var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n\t m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n\t x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n\t y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n\t }\n\t\n\t that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n\t}\n\t\n\tfunction CatmullRom(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t}\n\t\n\tCatmullRom.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x2, this._y2); break;\n\t case 3: this.point(this._x2, this._y2); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; // proceed\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar catmullRom = ((function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t}))(0.5);\n\t\n\tfunction CatmullRomClosed(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t}\n\t\n\tCatmullRomClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n\t this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 1: {\n\t this._context.moveTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 2: {\n\t this._context.lineTo(this._x3, this._y3);\n\t this._context.closePath();\n\t break;\n\t }\n\t case 3: {\n\t this.point(this._x3, this._y3);\n\t this.point(this._x4, this._y4);\n\t this.point(this._x5, this._y5);\n\t break;\n\t }\n\t }\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n\t case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n\t case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar catmullRomClosed = ((function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t}))(0.5);\n\t\n\tfunction CatmullRomOpen(context, alpha) {\n\t this._context = context;\n\t this._alpha = alpha;\n\t}\n\t\n\tCatmullRomOpen.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 = this._x2 =\n\t this._y0 = this._y1 = this._y2 = NaN;\n\t this._l01_a = this._l12_a = this._l23_a =\n\t this._l01_2a = this._l12_2a = this._l23_2a =\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t\n\t if (this._point) {\n\t var x23 = this._x2 - x,\n\t y23 = this._y2 - y;\n\t this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n\t }\n\t\n\t switch (this._point) {\n\t case 0: this._point = 1; break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n\t case 3: this._point = 4; // proceed\n\t default: point$2(this, x, y); break;\n\t }\n\t\n\t this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n\t this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n\t this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n\t this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n\t }\n\t};\n\t\n\tvar catmullRomOpen = ((function custom(alpha) {\n\t\n\t function catmullRom(context) {\n\t return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n\t }\n\t\n\t catmullRom.alpha = function(alpha) {\n\t return custom(+alpha);\n\t };\n\t\n\t return catmullRom;\n\t}))(0.5);\n\t\n\tfunction LinearClosed(context) {\n\t this._context = context;\n\t}\n\t\n\tLinearClosed.prototype = {\n\t areaStart: noop,\n\t areaEnd: noop,\n\t lineStart: function() {\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (this._point) this._context.closePath();\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t if (this._point) this._context.lineTo(x, y);\n\t else this._point = 1, this._context.moveTo(x, y);\n\t }\n\t};\n\t\n\tvar linearClosed = function(context) {\n\t return new LinearClosed(context);\n\t};\n\t\n\tfunction sign(x) {\n\t return x < 0 ? -1 : 1;\n\t}\n\t\n\t// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n\t// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n\t// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n\t// NOV(II), P. 443, 1990.\n\tfunction slope3(that, x2, y2) {\n\t var h0 = that._x1 - that._x0,\n\t h1 = x2 - that._x1,\n\t s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n\t s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n\t p = (s0 * h1 + s1 * h0) / (h0 + h1);\n\t return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n\t}\n\t\n\t// Calculate a one-sided slope.\n\tfunction slope2(that, t) {\n\t var h = that._x1 - that._x0;\n\t return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n\t}\n\t\n\t// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n\t// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n\t// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\n\tfunction point$3(that, t0, t1) {\n\t var x0 = that._x0,\n\t y0 = that._y0,\n\t x1 = that._x1,\n\t y1 = that._y1,\n\t dx = (x1 - x0) / 3;\n\t that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n\t}\n\t\n\tfunction MonotoneX(context) {\n\t this._context = context;\n\t}\n\t\n\tMonotoneX.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x0 = this._x1 =\n\t this._y0 = this._y1 =\n\t this._t0 = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t switch (this._point) {\n\t case 2: this._context.lineTo(this._x1, this._y1); break;\n\t case 3: point$3(this, this._t0, slope2(this, this._t0)); break;\n\t }\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t var t1 = NaN;\n\t\n\t x = +x, y = +y;\n\t if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; break;\n\t case 2: this._point = 3; point$3(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n\t default: point$3(this, this._t0, t1 = slope3(this, x, y)); break;\n\t }\n\t\n\t this._x0 = this._x1, this._x1 = x;\n\t this._y0 = this._y1, this._y1 = y;\n\t this._t0 = t1;\n\t }\n\t};\n\t\n\tfunction MonotoneY(context) {\n\t this._context = new ReflectContext(context);\n\t}\n\t\n\t(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n\t MonotoneX.prototype.point.call(this, y, x);\n\t};\n\t\n\tfunction ReflectContext(context) {\n\t this._context = context;\n\t}\n\t\n\tReflectContext.prototype = {\n\t moveTo: function(x, y) { this._context.moveTo(y, x); },\n\t closePath: function() { this._context.closePath(); },\n\t lineTo: function(x, y) { this._context.lineTo(y, x); },\n\t bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n\t};\n\t\n\tfunction monotoneX(context) {\n\t return new MonotoneX(context);\n\t}\n\t\n\tfunction monotoneY(context) {\n\t return new MonotoneY(context);\n\t}\n\t\n\tfunction Natural(context) {\n\t this._context = context;\n\t}\n\t\n\tNatural.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x = [];\n\t this._y = [];\n\t },\n\t lineEnd: function() {\n\t var x = this._x,\n\t y = this._y,\n\t n = x.length;\n\t\n\t if (n) {\n\t this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n\t if (n === 2) {\n\t this._context.lineTo(x[1], y[1]);\n\t } else {\n\t var px = controlPoints(x),\n\t py = controlPoints(y);\n\t for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n\t this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n\t }\n\t }\n\t }\n\t\n\t if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n\t this._line = 1 - this._line;\n\t this._x = this._y = null;\n\t },\n\t point: function(x, y) {\n\t this._x.push(+x);\n\t this._y.push(+y);\n\t }\n\t};\n\t\n\t// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\n\tfunction controlPoints(x) {\n\t var i,\n\t n = x.length - 1,\n\t m,\n\t a = new Array(n),\n\t b = new Array(n),\n\t r = new Array(n);\n\t a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n\t for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n\t a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n\t for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n\t a[n - 1] = r[n - 1] / b[n - 1];\n\t for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n\t b[n - 1] = (x[n] + a[n - 1]) / 2;\n\t for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n\t return [a, b];\n\t}\n\t\n\tvar natural = function(context) {\n\t return new Natural(context);\n\t};\n\t\n\tfunction Step(context, t) {\n\t this._context = context;\n\t this._t = t;\n\t}\n\t\n\tStep.prototype = {\n\t areaStart: function() {\n\t this._line = 0;\n\t },\n\t areaEnd: function() {\n\t this._line = NaN;\n\t },\n\t lineStart: function() {\n\t this._x = this._y = NaN;\n\t this._point = 0;\n\t },\n\t lineEnd: function() {\n\t if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n\t if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n\t if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n\t },\n\t point: function(x, y) {\n\t x = +x, y = +y;\n\t switch (this._point) {\n\t case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n\t case 1: this._point = 2; // proceed\n\t default: {\n\t if (this._t <= 0) {\n\t this._context.lineTo(this._x, y);\n\t this._context.lineTo(x, y);\n\t } else {\n\t var x1 = this._x * (1 - this._t) + x * this._t;\n\t this._context.lineTo(x1, this._y);\n\t this._context.lineTo(x1, y);\n\t }\n\t break;\n\t }\n\t }\n\t this._x = x, this._y = y;\n\t }\n\t};\n\t\n\tvar step = function(context) {\n\t return new Step(context, 0.5);\n\t};\n\t\n\tfunction stepBefore(context) {\n\t return new Step(context, 0);\n\t}\n\t\n\tfunction stepAfter(context) {\n\t return new Step(context, 1);\n\t}\n\t\n\tvar none = function(series, order) {\n\t if (!((n = series.length) > 1)) return;\n\t for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n\t s0 = s1, s1 = series[order[i]];\n\t for (j = 0; j < m; ++j) {\n\t s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n\t }\n\t }\n\t};\n\t\n\tvar none$1 = function(series) {\n\t var n = series.length, o = new Array(n);\n\t while (--n >= 0) o[n] = n;\n\t return o;\n\t};\n\t\n\tfunction stackValue(d, key) {\n\t return d[key];\n\t}\n\t\n\tvar stack = function() {\n\t var keys = constant([]),\n\t order = none$1,\n\t offset = none,\n\t value = stackValue;\n\t\n\t function stack(data) {\n\t var kz = keys.apply(this, arguments),\n\t i,\n\t m = data.length,\n\t n = kz.length,\n\t sz = new Array(n),\n\t oz;\n\t\n\t for (i = 0; i < n; ++i) {\n\t for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n\t si[j] = sij = [0, +value(data[j], ki, j, data)];\n\t sij.data = data[j];\n\t }\n\t si.key = ki;\n\t }\n\t\n\t for (i = 0, oz = order(sz); i < n; ++i) {\n\t sz[oz[i]].index = i;\n\t }\n\t\n\t offset(sz, oz);\n\t return sz;\n\t }\n\t\n\t stack.keys = function(_) {\n\t return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n\t };\n\t\n\t stack.value = function(_) {\n\t return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n\t };\n\t\n\t stack.order = function(_) {\n\t return arguments.length ? (order = _ == null ? none$1 : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n\t };\n\t\n\t stack.offset = function(_) {\n\t return arguments.length ? (offset = _ == null ? none : _, stack) : offset;\n\t };\n\t\n\t return stack;\n\t};\n\t\n\tvar expand = function(series, order) {\n\t if (!((n = series.length) > 0)) return;\n\t for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n\t for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n\t if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n\t }\n\t none(series, order);\n\t};\n\t\n\tvar diverging = function(series, order) {\n\t if (!((n = series.length) > 1)) return;\n\t for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n\t for (yp = yn = 0, i = 0; i < n; ++i) {\n\t if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n\t d[0] = yp, d[1] = yp += dy;\n\t } else if (dy < 0) {\n\t d[1] = yn, d[0] = yn += dy;\n\t } else {\n\t d[0] = yp;\n\t }\n\t }\n\t }\n\t};\n\t\n\tvar silhouette = function(series, order) {\n\t if (!((n = series.length) > 0)) return;\n\t for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n\t for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n\t s0[j][1] += s0[j][0] = -y / 2;\n\t }\n\t none(series, order);\n\t};\n\t\n\tvar wiggle = function(series, order) {\n\t if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n\t for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n\t for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n\t var si = series[order[i]],\n\t sij0 = si[j][1] || 0,\n\t sij1 = si[j - 1][1] || 0,\n\t s3 = (sij0 - sij1) / 2;\n\t for (var k = 0; k < i; ++k) {\n\t var sk = series[order[k]],\n\t skj0 = sk[j][1] || 0,\n\t skj1 = sk[j - 1][1] || 0;\n\t s3 += skj0 - skj1;\n\t }\n\t s1 += sij0, s2 += s3 * sij0;\n\t }\n\t s0[j - 1][1] += s0[j - 1][0] = y;\n\t if (s1) y -= s2 / s1;\n\t }\n\t s0[j - 1][1] += s0[j - 1][0] = y;\n\t none(series, order);\n\t};\n\t\n\tvar ascending = function(series) {\n\t var sums = series.map(sum);\n\t return none$1(series).sort(function(a, b) { return sums[a] - sums[b]; });\n\t};\n\t\n\tfunction sum(series) {\n\t var s = 0, i = -1, n = series.length, v;\n\t while (++i < n) if (v = +series[i][1]) s += v;\n\t return s;\n\t}\n\t\n\tvar descending$1 = function(series) {\n\t return ascending(series).reverse();\n\t};\n\t\n\tvar insideOut = function(series) {\n\t var n = series.length,\n\t i,\n\t j,\n\t sums = series.map(sum),\n\t order = none$1(series).sort(function(a, b) { return sums[b] - sums[a]; }),\n\t top = 0,\n\t bottom = 0,\n\t tops = [],\n\t bottoms = [];\n\t\n\t for (i = 0; i < n; ++i) {\n\t j = order[i];\n\t if (top < bottom) {\n\t top += sums[j];\n\t tops.push(j);\n\t } else {\n\t bottom += sums[j];\n\t bottoms.push(j);\n\t }\n\t }\n\t\n\t return bottoms.reverse().concat(tops);\n\t};\n\t\n\tvar reverse = function(series) {\n\t return none$1(series).reverse();\n\t};\n\t\n\texports.arc = arc;\n\texports.area = area;\n\texports.line = line;\n\texports.pie = pie;\n\texports.areaRadial = areaRadial;\n\texports.radialArea = areaRadial;\n\texports.lineRadial = lineRadial$1;\n\texports.radialLine = lineRadial$1;\n\texports.pointRadial = pointRadial;\n\texports.linkHorizontal = linkHorizontal;\n\texports.linkVertical = linkVertical;\n\texports.linkRadial = linkRadial;\n\texports.symbol = symbol;\n\texports.symbols = symbols;\n\texports.symbolCircle = circle;\n\texports.symbolCross = cross;\n\texports.symbolDiamond = diamond;\n\texports.symbolSquare = square;\n\texports.symbolStar = star;\n\texports.symbolTriangle = triangle;\n\texports.symbolWye = wye;\n\texports.curveBasisClosed = basisClosed;\n\texports.curveBasisOpen = basisOpen;\n\texports.curveBasis = basis;\n\texports.curveBundle = bundle;\n\texports.curveCardinalClosed = cardinalClosed;\n\texports.curveCardinalOpen = cardinalOpen;\n\texports.curveCardinal = cardinal;\n\texports.curveCatmullRomClosed = catmullRomClosed;\n\texports.curveCatmullRomOpen = catmullRomOpen;\n\texports.curveCatmullRom = catmullRom;\n\texports.curveLinearClosed = linearClosed;\n\texports.curveLinear = curveLinear;\n\texports.curveMonotoneX = monotoneX;\n\texports.curveMonotoneY = monotoneY;\n\texports.curveNatural = natural;\n\texports.curveStep = step;\n\texports.curveStepAfter = stepAfter;\n\texports.curveStepBefore = stepBefore;\n\texports.stack = stack;\n\texports.stackOffsetExpand = expand;\n\texports.stackOffsetDiverging = diverging;\n\texports.stackOffsetNone = none;\n\texports.stackOffsetSilhouette = silhouette;\n\texports.stackOffsetWiggle = wiggle;\n\texports.stackOrderAscending = ascending;\n\texports.stackOrderDescending = descending$1;\n\texports.stackOrderInsideOut = insideOut;\n\texports.stackOrderNone = none$1;\n\texports.stackOrderReverse = reverse;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t// https://d3js.org/d3-path/ Version 1.0.5. Copyright 2017 Mike Bostock.\n\t(function (global, factory) {\n\t\t true ? factory(exports) :\n\t\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t\t(factory((global.d3 = global.d3 || {})));\n\t}(this, (function (exports) { 'use strict';\n\t\n\tvar pi = Math.PI;\n\tvar tau = 2 * pi;\n\tvar epsilon = 1e-6;\n\tvar tauEpsilon = tau - epsilon;\n\t\n\tfunction Path() {\n\t this._x0 = this._y0 = // start of current subpath\n\t this._x1 = this._y1 = null; // end of current subpath\n\t this._ = \"\";\n\t}\n\t\n\tfunction path() {\n\t return new Path;\n\t}\n\t\n\tPath.prototype = path.prototype = {\n\t constructor: Path,\n\t moveTo: function(x, y) {\n\t this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n\t },\n\t closePath: function() {\n\t if (this._x1 !== null) {\n\t this._x1 = this._x0, this._y1 = this._y0;\n\t this._ += \"Z\";\n\t }\n\t },\n\t lineTo: function(x, y) {\n\t this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t },\n\t quadraticCurveTo: function(x1, y1, x, y) {\n\t this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t },\n\t bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n\t this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n\t },\n\t arcTo: function(x1, y1, x2, y2, r) {\n\t x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\t var x0 = this._x1,\n\t y0 = this._y1,\n\t x21 = x2 - x1,\n\t y21 = y2 - y1,\n\t x01 = x0 - x1,\n\t y01 = y0 - y1,\n\t l01_2 = x01 * x01 + y01 * y01;\n\t\n\t // Is the radius negative? Error.\n\t if (r < 0) throw new Error(\"negative radius: \" + r);\n\t\n\t // Is this path empty? Move to (x1,y1).\n\t if (this._x1 === null) {\n\t this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t }\n\t\n\t // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n\t else if (!(l01_2 > epsilon)) {}\n\t\n\t // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n\t // Equivalently, is (x1,y1) coincident with (x2,y2)?\n\t // Or, is the radius zero? Line to (x1,y1).\n\t else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n\t this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n\t }\n\t\n\t // Otherwise, draw an arc!\n\t else {\n\t var x20 = x2 - x0,\n\t y20 = y2 - y0,\n\t l21_2 = x21 * x21 + y21 * y21,\n\t l20_2 = x20 * x20 + y20 * y20,\n\t l21 = Math.sqrt(l21_2),\n\t l01 = Math.sqrt(l01_2),\n\t l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n\t t01 = l / l01,\n\t t21 = l / l21;\n\t\n\t // If the start tangent is not coincident with (x0,y0), line to.\n\t if (Math.abs(t01 - 1) > epsilon) {\n\t this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n\t }\n\t\n\t this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n\t }\n\t },\n\t arc: function(x, y, r, a0, a1, ccw) {\n\t x = +x, y = +y, r = +r;\n\t var dx = r * Math.cos(a0),\n\t dy = r * Math.sin(a0),\n\t x0 = x + dx,\n\t y0 = y + dy,\n\t cw = 1 ^ ccw,\n\t da = ccw ? a0 - a1 : a1 - a0;\n\t\n\t // Is the radius negative? Error.\n\t if (r < 0) throw new Error(\"negative radius: \" + r);\n\t\n\t // Is this path empty? Move to (x0,y0).\n\t if (this._x1 === null) {\n\t this._ += \"M\" + x0 + \",\" + y0;\n\t }\n\t\n\t // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n\t else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n\t this._ += \"L\" + x0 + \",\" + y0;\n\t }\n\t\n\t // Is this arc empty? We’re done.\n\t if (!r) return;\n\t\n\t // Does the angle go the wrong way? Flip the direction.\n\t if (da < 0) da = da % tau + tau;\n\t\n\t // Is this a complete circle? Draw two arcs to complete the circle.\n\t if (da > tauEpsilon) {\n\t this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n\t }\n\t\n\t // Is this arc non-empty? Draw an arc!\n\t else if (da > epsilon) {\n\t this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n\t }\n\t },\n\t rect: function(x, y, w, h) {\n\t this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n\t },\n\t toString: function() {\n\t return this._;\n\t }\n\t};\n\t\n\texports.path = path;\n\t\n\tObject.defineProperty(exports, '__esModule', { value: true });\n\t\n\t})));\n\n\n/***/ }),\n/* 26 */,\n/* 27 */,\n/* 28 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * lodash (Custom Build) \n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors \n\t * Released under MIT license \n\t * Based on Underscore.js 1.8.3 \n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]';\n\t\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\t\n\t/**\n\t * A faster alternative to `Function#apply`, this function invokes `func`\n\t * with the `this` binding of `thisArg` and the arguments of `args`.\n\t *\n\t * @private\n\t * @param {Function} func The function to invoke.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {Array} args The arguments to invoke `func` with.\n\t * @returns {*} Returns the result of `func`.\n\t */\n\tfunction apply(func, thisArg, args) {\n\t switch (args.length) {\n\t case 0: return func.call(thisArg);\n\t case 1: return func.call(thisArg, args[0]);\n\t case 2: return func.call(thisArg, args[0], args[1]);\n\t case 3: return func.call(thisArg, args[0], args[1], args[2]);\n\t }\n\t return func.apply(thisArg, args);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\t\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeKeys = overArg(Object.keys, Object),\n\t nativeMax = Math.max;\n\t\n\t/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n\tvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\t\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\t\n\t var length = result.length,\n\t skipIndexes = !!length;\n\t\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\t\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n\t *\n\t * @private\n\t * @param {Function} func The function to apply a rest parameter to.\n\t * @param {number} [start=func.length-1] The start position of the rest parameter.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseRest(func, start) {\n\t start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n\t return function() {\n\t var args = arguments,\n\t index = -1,\n\t length = nativeMax(args.length - start, 0),\n\t array = Array(length);\n\t\n\t while (++index < length) {\n\t array[index] = args[start + index];\n\t }\n\t index = -1;\n\t var otherArgs = Array(start + 1);\n\t while (++index < start) {\n\t otherArgs[index] = args[index];\n\t }\n\t otherArgs[start] = array;\n\t return apply(func, this, otherArgs);\n\t };\n\t}\n\t\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\t\n\t var index = -1,\n\t length = props.length;\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\t\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\t\n\t/**\n\t * Creates a function like `_.assign`.\n\t *\n\t * @private\n\t * @param {Function} assigner The function to assign values.\n\t * @returns {Function} Returns the new assigner function.\n\t */\n\tfunction createAssigner(assigner) {\n\t return baseRest(function(object, sources) {\n\t var index = -1,\n\t length = sources.length,\n\t customizer = length > 1 ? sources[length - 1] : undefined,\n\t guard = length > 2 ? sources[2] : undefined;\n\t\n\t customizer = (assigner.length > 3 && typeof customizer == 'function')\n\t ? (length--, customizer)\n\t : undefined;\n\t\n\t if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n\t customizer = length < 3 ? undefined : customizer;\n\t length = 1;\n\t }\n\t object = Object(object);\n\t while (++index < length) {\n\t var source = sources[index];\n\t if (source) {\n\t assigner(object, source, index, customizer);\n\t }\n\t }\n\t return object;\n\t });\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\t\n\t/**\n\t * Checks if the given arguments are from an iteratee call.\n\t *\n\t * @private\n\t * @param {*} value The potential iteratee value argument.\n\t * @param {*} index The potential iteratee index or key argument.\n\t * @param {*} object The potential iteratee object argument.\n\t * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n\t * else `false`.\n\t */\n\tfunction isIterateeCall(value, index, object) {\n\t if (!isObject(object)) {\n\t return false;\n\t }\n\t var type = typeof index;\n\t if (type == 'number'\n\t ? (isArrayLike(object) && isIndex(index, object.length))\n\t : (type == 'string' && index in object)\n\t ) {\n\t return eq(object[index], value);\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\t\n\t return value === proto;\n\t}\n\t\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\t\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\t\n\t/**\n\t * Assigns own enumerable string keyed properties of source objects to the\n\t * destination object. Source objects are applied from left to right.\n\t * Subsequent sources overwrite property assignments of previous sources.\n\t *\n\t * **Note:** This method mutates `object` and is loosely based on\n\t * [`Object.assign`](https://mdn.io/Object/assign).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.10.0\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @returns {Object} Returns `object`.\n\t * @see _.assignIn\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * function Bar() {\n\t * this.c = 3;\n\t * }\n\t *\n\t * Foo.prototype.b = 2;\n\t * Bar.prototype.d = 4;\n\t *\n\t * _.assign({ 'a': 0 }, new Foo, new Bar);\n\t * // => { 'a': 1, 'c': 3 }\n\t */\n\tvar assign = createAssigner(function(object, source) {\n\t if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n\t copyObject(source, keys(source), object);\n\t return;\n\t }\n\t for (var key in source) {\n\t if (hasOwnProperty.call(source, key)) {\n\t assignValue(object, key, source[key]);\n\t }\n\t }\n\t});\n\t\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\t\n\tmodule.exports = assign;\n\n\n/***/ })\n/******/ ])\n});\n;\n\n\n// WEBPACK FOOTER //\n// stackedBar.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 0a1eb6cfa29181d5999f","define(function(require){\n 'use strict';\n\n const d3Array = require('d3-array');\n const d3Axis = require('d3-axis');\n const d3Color = require('d3-color');\n const d3Collection = require('d3-collection');\n const d3Dispatch = require('d3-dispatch');\n const d3Ease = require('d3-ease');\n const d3Interpolate = require('d3-interpolate');\n const d3Scale = require('d3-scale');\n const d3Shape = require('d3-shape');\n const d3Selection = require('d3-selection');\n const assign = require('lodash.assign');\n const d3Transition = require('d3-transition');\n\n const {exportChart} = require('./helpers/exportChart');\n const colorHelper = require('./helpers/colors');\n const NUMBER_FORMAT = ',f';\n const uniq = (arrArg) => arrArg.filter((elem, pos, arr) => arr.indexOf(elem) == pos);\n\n\n /**\n * @typdef D3Layout\n * @type function\n */\n\n /**\n * @typedef stackedBarData\n * @type {Object}\n * @property {Object[]} data All data entries\n * @property {String} name Name of the entry\n * @property {String} stack Stack of the entry\n * @property {Number} value Value of the entry\n *\n * @example\n * {\n * 'data': [\n * {\n * \"name\": \"2011-01\",\n * \"stack\": \"Direct\",\n * \"value\": 0\n * }\n * ]\n * }\n */\n\n /**\n * Stacked Area Chart reusable API module that allows us\n * rendering a multi area and configurable chart.\n *\n * @module Stacked-bar\n * @tutorial stacked-bar\n * @requires d3-array, d3-axis, d3-color, d3-collection, d3-dispatch, d3-ease,\n * d3-interpolate, d3-scale, d3-shape, d3-selection, lodash assign\n *\n * @example\n * let stackedBar = stackedBar();\n *\n * stackedBar\n * .width(containerWidth);\n *\n * d3Selection.select('.css-selector')\n * .datum(dataset.data)\n * .call(stackedBar);\n *\n */\n return function module() {\n\n let margin = {\n top: 40,\n right: 30,\n bottom: 60,\n left: 70\n },\n width = 960,\n height = 500,\n\n xScale,\n xAxis,\n yScale,\n yAxis,\n\n aspectRatio = null,\n\n yTickTextYOffset = -8,\n yTickTextXOffset = -20,\n\n yTicks = 5,\n xTicks = 5,\n percentageAxisToMaxRatio = 1,\n\n colorSchema = colorHelper.colorSchemas.britecharts,\n\n colorScale,\n categoryColorMap,\n\n layers,\n\n ease = d3Ease.easeQuadInOut,\n isHorizontal = false,\n\n svg,\n chartWidth, chartHeight,\n data,\n transformedData,\n stacks,\n\n tooltipThreshold = 480,\n\n baseLine,\n xAxisPadding = {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0\n },\n maxBarNumber = 8,\n\n animationDelayStep = 20,\n animationDelays = d3Array.range(animationDelayStep, maxBarNumber* animationDelayStep, animationDelayStep),\n animationDuration = 1000,\n\n grid = null,\n\n nameLabel = 'name',\n valueLabel = 'value',\n stackLabel = 'stack',\n nameLabelFormat,\n valueLabelFormat = NUMBER_FORMAT,\n\n // getters\n getName = (data) => data[nameLabel],\n getValue = (data) => data[valueLabel],\n getStack = (data) => data[stackLabel],\n isAnimated = false,\n\n // events\n dispatcher = d3Dispatch.dispatch('customMouseOver', 'customMouseOut', 'customMouseMove');\n\n /**\n * This function creates the graph using the selection and data provided\n * @param {D3Selection} _selection A d3 selection that represents\n * the container(s) where the chart(s) will be rendered\n * @param {stackedBarData} _data The data to attach and generate the chart\n */\n function exports(_selection) {\n _selection.each(function(_data){\n chartWidth = width - margin.left - margin.right;\n chartHeight = height - margin.top - margin.bottom;\n data = cleanData(_data);\n\n prepareData(data);\n buildScales();\n buildLayers();\n buildSVG(this);\n drawGridLines();\n buildAxis();\n drawAxis();\n drawStackedBar();\n addMouseEvents();\n });\n }\n\n /**\n * Adds events to the container group if the environment is not mobile\n * Adding: mouseover, mouseout and mousemove\n */\n function addMouseEvents() {\n if (shouldShowTooltip()){\n svg\n .on('mouseover', function(d) {\n handleMouseOver(this, d);\n })\n .on('mouseout', function(d) {\n handleMouseOut(this, d);\n })\n .on('mousemove', function(d) {\n handleMouseMove(this, d);\n });\n }\n\n svg.selectAll('.bar')\n .on('mouseover', handleBarsMouseOver)\n .on('mouseout', handleBarsMouseOut);\n }\n\n /**\n * Adjusts the position of the y axis' ticks\n * @param {D3Selection} selection Y axis group\n * @return void\n */\n function adjustYTickLabels(selection) {\n selection.selectAll('.tick text')\n .attr('transform', `translate(${yTickTextXOffset}, ${yTickTextYOffset})`);\n }\n\n /**\n * Creates the d3 x and y axis, setting orientations\n * @private\n */\n function buildAxis() {\n if (isHorizontal) {\n xAxis = d3Axis.axisBottom(xScale)\n .ticks(xTicks, valueLabelFormat);\n yAxis = d3Axis.axisLeft(yScale)\n } else {\n xAxis = d3Axis.axisBottom(xScale)\n yAxis = d3Axis.axisLeft(yScale)\n .ticks(yTicks, valueLabelFormat)\n }\n }\n\n /**\n * Builds containers for the chart, the axis and a wrapper for all of them\n * NOTE: The order of drawing of this group elements is really important,\n * as everything else will be drawn on top of them\n * @private\n */\n function buildContainerGroups(){\n let container = svg\n .append('g')\n .classed('container-group', true)\n .attr('transform', `translate(${margin.left},${margin.top})`);\n\n container\n .append('g').classed('x-axis-group', true)\n .append('g').classed('x axis', true);\n container.selectAll('.x-axis-group')\n .append('g').classed('month-axis', true);\n container\n .append('g').classed('y-axis-group axis', true);\n container\n .append('g').classed('grid-lines-group', true);\n container\n .append('g').classed('chart-group', true);\n container\n .append('g').classed('metadata-group', true);\n }\n\n /**\n * Builds the stacked layers layout\n * @return {D3Layout} Layout for drawing the chart\n * @private\n */\n function buildLayers(){\n let stack3 = d3Shape.stack().keys(stacks),\n dataInitial = transformedData.map((item) => {\n let ret = {};\n\n stacks.forEach((key) => {\n ret[key] = item[key];\n });\n\n return assign({}, item, ret);\n });\n\n layers = stack3(dataInitial);\n }\n\n /**\n * Creates the x, y and color scales of the chart\n * @private\n */\n function buildScales() {\n let yMax = d3Array.max(transformedData.map(function(d){\n return d.total;\n }));\n\n if (isHorizontal) {\n xScale = d3Scale.scaleLinear()\n .domain([0, yMax])\n .rangeRound([0, chartWidth - 1]);\n // 1 pix for edge tick\n\n yScale = d3Scale.scaleBand()\n .domain(data.map(getName))\n .rangeRound([chartHeight, 0])\n .padding(0.1);\n } else {\n xScale = d3Scale.scaleBand()\n .domain(data.map(getName))\n .rangeRound([0, chartWidth ])\n .padding(0.1);\n\n yScale = d3Scale.scaleLinear()\n .domain([0,yMax])\n .rangeRound([chartHeight, 0])\n .nice();\n }\n\n colorScale = d3Scale.scaleOrdinal()\n .range(colorSchema)\n .domain(data.map(getStack));\n\n categoryColorMap = colorScale\n .domain(data.map(getName)).domain()\n .reduce((memo, item) => {\n data.forEach(function(v){\n if (getName(v) === item){\n memo[v.name] = colorScale(v.stack)\n memo[v.stack] = colorScale(v.stack)\n memo[v.stack + item] = colorScale(v.stack)\n }\n })\n return memo;\n }, {});\n }\n\n /**\n * @param {HTMLElement} container DOM element that will work as the container of the graph\n * @private\n */\n function buildSVG(container) {\n if (!svg) {\n svg = d3Selection.select(container)\n .append('svg')\n .classed('britechart stacked-bar', true);\n\n buildContainerGroups();\n }\n\n svg\n .attr('width', width)\n .attr('height', height);\n }\n\n /**\n * Parses dates and values into JS Date objects and numbers\n * @param {obj} data Raw data from JSON file\n * @return {obj} Parsed data with values and dates\n */\n function cleanData(data) {\n return data.map((d) => {\n d.value = +d[valueLabel];\n d.stack = d[stackLabel];\n d.topicName = getStack(d); // for tooltip\n d.name = d[nameLabel];\n\n return d;\n });\n }\n\n /**\n * Draws the x and y axis on the svg object within their\n * respective groups\n * @private\n */\n function drawAxis(){\n if (isHorizontal) {\n svg.select('.x-axis-group .axis.x')\n .attr('transform', `translate( 0, ${chartHeight} )`)\n .call(xAxis);\n\n svg.select('.y-axis-group.axis')\n .attr('transform', `translate( ${-xAxisPadding.left}, 0)`)\n .call(yAxis);\n } else {\n svg.select('.x-axis-group .axis.x')\n .attr('transform', `translate( 0, ${chartHeight} )`)\n .call(xAxis);\n\n svg.select('.y-axis-group.axis')\n .attr('transform', `translate( ${-xAxisPadding.left}, 0)`)\n .call(yAxis)\n .call(adjustYTickLabels);\n }\n }\n\n /**\n * Draws grid lines on the background of the chart\n * @return void\n */\n function drawGridLines() {\n let scale = isHorizontal ? xScale : yScale;\n\n if (grid === 'horizontal' || grid === 'full') {\n svg.select('.grid-lines-group')\n .selectAll('line.horizontal-grid-line')\n .data(scale.ticks(yTicks).slice(1))\n .enter()\n .append('line')\n .attr('class', 'horizontal-grid-line')\n .attr('x1', (-xAxisPadding.left + 1 ))\n .attr('x2', chartWidth)\n .attr('y1', (d) => yScale(d))\n .attr('y2', (d) => yScale(d));\n }\n\n if (grid === 'vertical' || grid === 'full') {\n svg.select('.grid-lines-group')\n .selectAll('line.vertical-grid-line')\n .data(scale.ticks(xTicks).slice(1))\n .enter()\n .append('line')\n .attr('class', 'vertical-grid-line')\n .attr('y1', 0)\n .attr('y2', chartHeight)\n .attr('x1', (d) => xScale(d))\n .attr('x2', (d) => xScale(d));\n }\n\n if (isHorizontal) {\n drawVerticalExtendedLine();\n } else {\n drawHorizontalExtendedLine();\n }\n }\n\n /**\n * Draws the bars along the x axis\n * @param {D3Selection} bars Selection of bars\n * @return {void}\n */\n function drawHorizontalBars(series) {\n // Enter + Update\n let context,\n bars = series\n .data(layers)\n .enter()\n .append('g')\n .classed('layer', true)\n .attr('fill', (({key}) => categoryColorMap[key]))\n .selectAll('.bar')\n .data( (d)=> d)\n .enter()\n .append('rect')\n .classed('bar', true)\n .attr('x', (d) => xScale(d[0]) )\n .attr('y', (d) => yScale(d.data.key) )\n .attr('height', yScale.bandwidth())\n .attr('fill', (({data}) => categoryColorMap[data.stack+data.key]));\n\n if (isAnimated) {\n bars.style('opacity', 0.24)\n .transition()\n .delay((_, i) => animationDelays[i])\n .duration(animationDuration)\n .ease(ease)\n .tween('attr.width', function(d) {\n let node = d3Selection.select(this),\n i = d3Interpolate.interpolateRound(0, xScale(d[1] - d[0])),\n j = d3Interpolate.interpolateNumber(0,1);\n\n return function(t) {\n node.attr('width', i(t) );\n node.style('opacity', j(t) );\n };\n });\n } else {\n bars.attr('width', (d) => xScale(d[1] - d[0] ) )\n }\n }\n\n /**\n * Draws a vertical line to extend x-axis till the edges\n * @return {void}\n */\n function drawHorizontalExtendedLine() {\n baseLine = svg.select('.grid-lines-group')\n .selectAll('line.extended-x-line')\n .data([0])\n .enter()\n .append('line')\n .attr('class', 'extended-x-line')\n .attr('x1', (xAxisPadding.left))\n .attr('x2', chartWidth)\n .attr('y1', chartHeight)\n .attr('y2', chartHeight);\n }\n\n /**\n * Draws the bars along the y axis\n * @param {D3Selection} bars Selection of bars\n * @return {void}\n */\n function drawVerticalBars(series) {\n // Enter + Update\n let bars = series\n .data(layers)\n .enter()\n .append('g')\n .classed('layer', true)\n .attr('fill', (({key}) => categoryColorMap[key]))\n .selectAll('.bar')\n .data((d) => d)\n .enter()\n .append('rect')\n .classed('bar', true)\n .attr('x', (d) => xScale(d.data.key))\n .attr('y', (d) => yScale(d[1]))\n .attr('width', xScale.bandwidth )\n .attr('fill', (({data}) => categoryColorMap[data.stack+data.key])),context;\n\n if (isAnimated) {\n bars.style('opacity', 0.24).transition()\n .delay( (_, i) => animationDelays[i])\n .duration(animationDuration)\n .ease(ease)\n .tween('attr.height', function(d) {\n let node = d3Selection.select(this),\n i = d3Interpolate.interpolateRound(0, yScale(d[0]) - yScale(d[1])),\n j = d3Interpolate.interpolateNumber(0,1);\n\n return function(t) {\n node.attr('height', i(t) );\n node.style('opacity', j(t) );\n };\n });\n } else {\n bars.attr('height', (d) => yScale(d[0]) - yScale(d[1]) );\n }\n }\n\n /**\n * Draws a vertical line to extend y-axis till the edges\n * @return {void}\n */\n function drawVerticalExtendedLine() {\n baseLine = svg.select('.grid-lines-group')\n .selectAll('line.extended-y-line')\n .data([0])\n .enter()\n .append('line')\n .attr('class', 'extended-y-line')\n .attr('y1', (xAxisPadding.bottom))\n .attr('y2', chartHeight)\n .attr('x1', 0)\n .attr('x2', 0);\n }\n\n /**\n * Draws the different areas into the chart-group element\n * @private\n */\n function drawStackedBar(){\n let series = svg.select('.chart-group').selectAll('.layer')\n\n if (isHorizontal) {\n drawHorizontalBars(series)\n } else {\n drawVerticalBars(series)\n }\n // Exit\n series.exit()\n .transition()\n .style('opacity', 0)\n .remove();\n }\n\n /**\n * Extract X position on the chart from a given mouse event\n * @param {obj} event D3 mouse event\n * @return {Number} Position on the x axis of the mouse\n * @private\n */\n function getMousePosition(event) {\n return d3Selection.mouse(event);\n }\n\n /**\n * Finds out the data entry that is closer to the given position on pixels\n * @param {Number} mouseX X position of the mouse\n * @return {obj} Data entry that is closer to that x axis position\n */\n function getNearestDataPoint(mouseX) {\n let adjustedMouseX = mouseX - margin.left,\n dataByValueParsed = transformedData.map((item) => {\n item.key = item.key\n return item;\n }),\n epsilon,\n nearest;\n\n epsilon = (xScale(dataByValueParsed[1].key) - xScale(dataByValueParsed[0].key));\n nearest = dataByValueParsed.find(({key}) => Math.abs(xScale(key) - adjustedMouseX) <= epsilon);\n\n return nearest;\n }\n\n /**\n * Finds out the data entry that is closer to the given position on pixels\n * @param {Number} mouseY Y position of the mouse\n * @return {obj} Data entry that is closer to that y axis position\n */\n\n function getNearestDataPoint2(mouseY) {\n let adjustedMouseY = mouseY - margin.bottom,\n epsilon = yScale.bandwidth(),\n nearest;\n\n nearest = layers.map(function(stackedArray){\n return stackedArray.map(function(d1){\n let found = d1.data.values.find((d2) => Math.abs(adjustedMouseY >= yScale(d2[nameLabel])) && Math.abs(adjustedMouseY - yScale(d2[nameLabel]) <= epsilon*2) );\n\n return found ? d1.data :undefined;\n })\n });\n nearest = d3Array.merge( nearest).filter(function(e){return e});\n\n return nearest.length ? nearest[0] :undefined;\n }\n\n /**\n * Handles a mouseover event on top of a bar\n * @return {void}\n */\n function handleBarsMouseOver() {\n d3Selection.select(this)\n .attr('fill', () => d3Color.color(d3Selection.select(this.parentNode).attr('fill')).darker())\n }\n\n /**\n * Handles a mouseout event out of a bar\n * @return {void}\n */\n function handleBarsMouseOut() {\n d3Selection\n .select(this).attr('fill', () => d3Selection.select(this.parentNode).attr('fill'))\n }\n\n /**\n * MouseMove handler, calculates the nearest dataPoint to the cursor\n * and updates metadata related to it\n * @private\n */\n function handleMouseMove(e){\n let [mouseX, mouseY] = getMousePosition(e),\n dataPoint = isHorizontal ? getNearestDataPoint2(mouseY) : getNearestDataPoint(mouseX),\n x,\n y;\n\n if (dataPoint) {\n // Move verticalMarker to that datapoint\n if (isHorizontal) {\n x = mouseX - margin.left;\n y = yScale(dataPoint.key) + yScale.bandwidth()/2;\n } else {\n x = xScale(dataPoint.key) + margin.left;\n y = mouseY - margin.bottom;\n }\n moveTooltipOriginXY(x,y);\n\n // Emit event with xPosition for tooltip or similar feature\n dispatcher.call('customMouseMove', e, dataPoint, categoryColorMap, x, y);\n }\n }\n\n /**\n * MouseOut handler, hides overlay and removes active class on verticalMarkerLine\n * It also resets the container of the vertical marker\n * @private\n */\n function handleMouseOut(e, d) {\n svg.select('.metadata-group').attr('transform', 'translate(9999, 0)');\n dispatcher.call('customMouseOut', e, d, d3Selection.mouse(e));\n }\n\n /**\n * Mouseover handler, shows overlay and adds active class to verticalMarkerLine\n * @private\n */\n function handleMouseOver(e, d) {\n dispatcher.call('customMouseOver', e, d, d3Selection.mouse(e));\n }\n\n /**\n * Helper method to update the x position of the vertical marker\n * @param {obj} dataPoint Data entry to extract info\n * @return void\n */\n function moveTooltipOriginXY(originXPosition, originYPosition){\n svg.select('.metadata-group')\n .attr('transform', `translate(${originXPosition},${originYPosition})`);\n }\n\n /**\n * Prepare data for create chart.\n * @private\n */\n function prepareData(data) {\n stacks = uniq(data.map(({stack}) => stack));\n transformedData = d3Collection.nest()\n .key(getName)\n .rollup(function(values) {\n let ret = {};\n\n values.forEach((entry) => {\n if (entry && entry[stackLabel]) {\n ret[entry[stackLabel]] = getValue(entry);\n }\n });\n ret.values = values; //for tooltip\n\n return ret;\n })\n .entries(data)\n .map(function(data){\n return assign({}, {\n total:d3Array.sum( d3Array.permute(data.value, stacks) ),\n key:data.key\n }, data.value);\n });\n }\n\n /**\n * Determines if we should add the tooltip related logic depending on the\n * size of the chart and the tooltipThreshold variable value\n * @return {boolean} Should we build the tooltip?\n * @private\n */\n function shouldShowTooltip() {\n return width > tooltipThreshold;\n }\n\n // API\n /**\n * Gets or Sets the aspect ratio of the chart\n * @param {Number} _x Desired aspect ratio for the graph\n * @return { (Number | Module) } Current aspect ratio or Area Chart module to chain calls\n * @public\n */\n exports.aspectRatio = function(_x) {\n if (!arguments.length) {\n return aspectRatio;\n }\n aspectRatio = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the colorSchema of the chart\n * @param {String[]} _x Desired colorSchema for the graph\n * @return { colorSchema | module} Current colorSchema or Chart module to chain calls\n * @public\n */\n exports.colorSchema = function(_x) {\n if (!arguments.length) {\n return colorSchema;\n }\n colorSchema = _x;\n\n return this;\n };\n\n /**\n * Chart exported to png and a download action is fired\n * @public\n */\n exports.exportChart = function(filename, title) {\n exportChart.call(exports, svg, filename, title);\n };\n\n /**\n * Gets or Sets the grid mode.\n *\n * @param {String} _x Desired mode for the grid ('vertical'|'horizontal'|'full')\n * @return { String | module} Current mode of the grid or Area Chart module to chain calls\n * @public\n */\n exports.grid = function(_x) {\n if (!arguments.length) {\n return grid;\n }\n grid = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the height of the chart\n * @param {Number} _x Desired width for the graph\n * @return { height | module} Current height or Area Chart module to chain calls\n * @public\n */\n exports.height = function(_x) {\n if (!arguments.length) {\n return height;\n }\n if (aspectRatio) {\n width = Math.ceil(_x / aspectRatio);\n }\n height = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the horizontal direction of the chart\n * @param {number} _x Desired horizontal direction for the graph\n * @return { isHorizontal | module} If it is horizontal or Bar Chart module to chain calls\n * @public\n */\n exports.isHorizontal = function(_x) {\n if (!arguments.length) {\n return isHorizontal;\n }\n isHorizontal = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the isAnimated property of the chart, making it to animate when render.\n * By default this is 'false'\n *\n * @param {Boolean} _x Desired animation flag\n * @return { isAnimated | module} Current isAnimated flag or Chart module\n * @public\n */\n exports.isAnimated = function(_x) {\n if (!arguments.length) {\n return isAnimated;\n }\n isAnimated = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the margin of the chart\n * @param {Object} _x Margin object to get/set\n * @return { margin | module} Current margin or Area Chart module to chain calls\n * @public\n */\n exports.margin = function(_x) {\n if (!arguments.length) {\n return margin;\n }\n margin = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the nameLabel of the chart\n * @param {Number} _x Desired dateLabel for the graph\n * @return { nameLabel | module} Current nameLabel or Chart module to chain calls\n * @public\n */\n exports.nameLabel = function(_x) {\n if (!arguments.length) {\n return nameLabel;\n }\n nameLabel = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the valueLabelFormat of the chart\n * @param {String[]} _x Desired valueLabelFormat for the graph\n * @return { valueLabelFormat | module} Current valueLabelFormat or Chart module to chain calls\n * @public\n */\n exports.nameLabelFormat = function(_x) {\n if (!arguments.length) {\n return nameLabelFormat;\n }\n nameLabelFormat = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the number of ticks of the x axis on the chart\n * (Default is 5)\n * @param {Number} _x Desired horizontal ticks\n * @return {Number | module} Current xTicks or Chart module to chain calls\n * @public\n */\n exports.xTicks = function (_x) {\n if (!arguments.length) {\n return xTicks;\n }\n xTicks = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the number of vertical ticks of the axis on the chart\n * @param {Number} _x Desired vertical ticks\n * @return {Number | module} Current yTicks or Chart module to chain calls\n * @public\n */\n exports.yTicks = function (_x) {\n if (!arguments.length) {\n return yTicks;\n }\n yTicks = _x;\n\n return this;\n };\n\n /**\n * Exposes an 'on' method that acts as a bridge with the event dispatcher\n * We are going to expose this events:\n * customMouseOver, customMouseMove and customMouseOut\n *\n * @return {module} Bar Chart\n * @public\n */\n exports.on = function() {\n let value = dispatcher.on.apply(dispatcher, arguments);\n\n return value === dispatcher ? exports : value;\n };\n\n /**\n * Configurable extension of the x axis\n * if your max point was 50% you might want to show x axis to 60%, pass 1.2\n * @param {number} _x ratio to max data point to add to the x axis\n * @return { ratio | module} Current ratio or Bar Chart module to chain calls\n * @public\n */\n exports.percentageAxisToMaxRatio = function(_x) {\n if (!arguments.length) {\n return percentageAxisToMaxRatio;\n }\n percentageAxisToMaxRatio = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the stackLabel of the chart\n * @param {String} _x Desired stackLabel for the graph\n * @return { stackLabel | module} Current stackLabel or Chart module to chain calls\n * @public\n */\n exports.stackLabel = function(_x) {\n if (!arguments.length) {\n return stackLabel;\n }\n stackLabel = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the minimum width of the graph in order to show the tooltip\n * NOTE: This could also depend on the aspect ratio\n *\n * @param {Object} _x Margin object to get/set\n * @return { tooltipThreshold | module} Current tooltipThreshold or Area Chart module to chain calls\n * @public\n */\n exports.tooltipThreshold = function(_x) {\n if (!arguments.length) {\n return tooltipThreshold;\n }\n tooltipThreshold = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the valueLabel of the chart\n * @param {Number} _x Desired valueLabel for the graph\n * @return { valueLabel | module} Current valueLabel or Chart module to chain calls\n * @public\n */\n exports.valueLabel = function(_x) {\n if (!arguments.length) {\n return valueLabel;\n }\n valueLabel = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the valueLabelFormat of the chart\n * @param {String[]} _x Desired valueLabelFormat for the graph\n * @return { valueLabelFormat | module} Current valueLabelFormat or Chart module to chain calls\n * @public\n */\n exports.valueLabelFormat = function(_x) {\n if (!arguments.length) {\n return valueLabelFormat;\n }\n valueLabelFormat = _x;\n\n return this;\n };\n\n /**\n * Gets or Sets the width of the chart\n * @param {Number} _x Desired width for the graph\n * @return { width | module} Current width or Area Chart module to chain calls\n * @public\n */\n exports.width = function(_x) {\n if (!arguments.length) {\n return width;\n }\n if (aspectRatio) {\n height = Math.ceil(_x * aspectRatio);\n }\n width = _x;\n\n return this;\n };\n\n return exports;\n };\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/charts/stacked-bar.js","// https://d3js.org/d3-array/ Version 1.2.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar ascending = function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n};\n\nvar bisector = function(compare) {\n if (compare.length === 1) compare = ascendingComparator(compare);\n return {\n left: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n },\n right: function(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n };\n};\n\nfunction ascendingComparator(f) {\n return function(d, x) {\n return ascending(f(d), x);\n };\n}\n\nvar ascendingBisect = bisector(ascending);\nvar bisectRight = ascendingBisect.right;\nvar bisectLeft = ascendingBisect.left;\n\nvar pairs = function(array, f) {\n if (f == null) f = pair;\n var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n while (i < n) pairs[i] = f(p, p = array[++i]);\n return pairs;\n};\n\nfunction pair(a, b) {\n return [a, b];\n}\n\nvar cross = function(values0, values1, reduce) {\n var n0 = values0.length,\n n1 = values1.length,\n values = new Array(n0 * n1),\n i0,\n i1,\n i,\n value0;\n\n if (reduce == null) reduce = pair;\n\n for (i0 = i = 0; i0 < n0; ++i0) {\n for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n values[i] = reduce(value0, values1[i1]);\n }\n }\n\n return values;\n};\n\nvar descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n};\n\nvar number = function(x) {\n return x === null ? NaN : +x;\n};\n\nvar variance = function(values, valueof) {\n var n = values.length,\n m = 0,\n i = -1,\n mean = 0,\n value,\n delta,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n delta = value - mean;\n mean += delta / ++m;\n sum += delta * (value - mean);\n }\n }\n }\n\n if (m > 1) return sum / (m - 1);\n};\n\nvar deviation = function(array, f) {\n var v = variance(array, f);\n return v ? Math.sqrt(v) : v;\n};\n\nvar extent = function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null) {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n }\n\n return [min, max];\n};\n\nvar array = Array.prototype;\n\nvar slice = array.slice;\nvar map = array.map;\n\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\n\nvar identity = function(x) {\n return x;\n};\n\nvar range = function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n};\n\nvar e10 = Math.sqrt(50);\nvar e5 = Math.sqrt(10);\nvar e2 = Math.sqrt(2);\n\nvar ticks = function(start, stop, count) {\n var reverse = stop < start,\n i = -1,\n n,\n ticks,\n step;\n\n if (reverse) n = start, start = stop, stop = n;\n\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n start = Math.ceil(start / step);\n stop = Math.floor(stop / step);\n ticks = new Array(n = Math.ceil(stop - start + 1));\n while (++i < n) ticks[i] = (start + i) * step;\n } else {\n start = Math.floor(start * step);\n stop = Math.ceil(stop * step);\n ticks = new Array(n = Math.ceil(start - stop + 1));\n while (++i < n) ticks[i] = (start - i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n};\n\nfunction tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nfunction tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n\nvar sturges = function(values) {\n return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n};\n\nvar histogram = function() {\n var value = identity,\n domain = extent,\n threshold = sturges;\n\n function histogram(data) {\n var i,\n n = data.length,\n x,\n values = new Array(n);\n\n for (i = 0; i < n; ++i) {\n values[i] = value(data[i], i, data);\n }\n\n var xz = domain(values),\n x0 = xz[0],\n x1 = xz[1],\n tz = threshold(values, x0, x1);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = tickStep(x0, x1, tz);\n tz = range(Math.ceil(x0 / tz) * tz, Math.floor(x1 / tz) * tz, tz); // exclusive\n }\n\n // Remove any thresholds outside the domain.\n var m = tz.length;\n while (tz[0] <= x0) tz.shift(), --m;\n while (tz[m - 1] > x1) tz.pop(), --m;\n\n var bins = new Array(m + 1),\n bin;\n\n // Initialize bins.\n for (i = 0; i <= m; ++i) {\n bin = bins[i] = [];\n bin.x0 = i > 0 ? tz[i - 1] : x0;\n bin.x1 = i < m ? tz[i] : x1;\n }\n\n // Assign data to bins by value, ignoring any outside the domain.\n for (i = 0; i < n; ++i) {\n x = values[i];\n if (x0 <= x && x <= x1) {\n bins[bisectRight(tz, x, 0, m)].push(data[i]);\n }\n }\n\n return bins;\n }\n\n histogram.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n };\n\n histogram.domain = function(_) {\n return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n };\n\n histogram.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n };\n\n return histogram;\n};\n\nvar quantile = function(values, p, valueof) {\n if (valueof == null) valueof = number;\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n};\n\nvar freedmanDiaconis = function(values, min, max) {\n values = map.call(values, number).sort(ascending);\n return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n};\n\nvar scott = function(values, min, max) {\n return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n};\n\nvar max = function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n max;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n max = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && value > max) {\n max = value;\n }\n }\n }\n }\n }\n\n return max;\n};\n\nvar mean = function(values, valueof) {\n var n = values.length,\n m = n,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) sum += value;\n else --m;\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n else --m;\n }\n }\n\n if (m) return sum / m;\n};\n\nvar median = function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n numbers = [];\n\n if (valueof == null) {\n while (++i < n) {\n if (!isNaN(value = number(values[i]))) {\n numbers.push(value);\n }\n }\n }\n\n else {\n while (++i < n) {\n if (!isNaN(value = number(valueof(values[i], i, values)))) {\n numbers.push(value);\n }\n }\n }\n\n return quantile(numbers.sort(ascending), 0.5);\n};\n\nvar merge = function(arrays) {\n var n = arrays.length,\n m,\n i = -1,\n j = 0,\n merged,\n array;\n\n while (++i < n) j += arrays[i].length;\n merged = new Array(j);\n\n while (--n >= 0) {\n array = arrays[n];\n m = array.length;\n while (--m >= 0) {\n merged[--j] = array[m];\n }\n }\n\n return merged;\n};\n\nvar min = function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n min;\n\n if (valueof == null) {\n while (++i < n) { // Find the first comparable value.\n if ((value = values[i]) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = values[i]) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n else {\n while (++i < n) { // Find the first comparable value.\n if ((value = valueof(values[i], i, values)) != null && value >= value) {\n min = value;\n while (++i < n) { // Compare the remaining values.\n if ((value = valueof(values[i], i, values)) != null && min > value) {\n min = value;\n }\n }\n }\n }\n }\n\n return min;\n};\n\nvar permute = function(array, indexes) {\n var i = indexes.length, permutes = new Array(i);\n while (i--) permutes[i] = array[indexes[i]];\n return permutes;\n};\n\nvar scan = function(values, compare) {\n if (!(n = values.length)) return;\n var n,\n i = 0,\n j = 0,\n xi,\n xj = values[j];\n\n if (compare == null) compare = ascending;\n\n while (++i < n) {\n if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n xj = xi, j = i;\n }\n }\n\n if (compare(xj, xj) === 0) return j;\n};\n\nvar shuffle = function(array, i0, i1) {\n var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n t,\n i;\n\n while (m) {\n i = Math.random() * m-- | 0;\n t = array[m + i0];\n array[m + i0] = array[i + i0];\n array[i + i0] = t;\n }\n\n return array;\n};\n\nvar sum = function(values, valueof) {\n var n = values.length,\n i = -1,\n value,\n sum = 0;\n\n if (valueof == null) {\n while (++i < n) {\n if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n }\n }\n\n else {\n while (++i < n) {\n if (value = +valueof(values[i], i, values)) sum += value;\n }\n }\n\n return sum;\n};\n\nvar transpose = function(matrix) {\n if (!(n = matrix.length)) return [];\n for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n row[j] = matrix[j][i];\n }\n }\n return transpose;\n};\n\nfunction length(d) {\n return d.length;\n}\n\nvar zip = function() {\n return transpose(arguments);\n};\n\nexports.bisect = bisectRight;\nexports.bisectRight = bisectRight;\nexports.bisectLeft = bisectLeft;\nexports.ascending = ascending;\nexports.bisector = bisector;\nexports.cross = cross;\nexports.descending = descending;\nexports.deviation = deviation;\nexports.extent = extent;\nexports.histogram = histogram;\nexports.thresholdFreedmanDiaconis = freedmanDiaconis;\nexports.thresholdScott = scott;\nexports.thresholdSturges = sturges;\nexports.max = max;\nexports.mean = mean;\nexports.median = median;\nexports.merge = merge;\nexports.min = min;\nexports.pairs = pairs;\nexports.permute = permute;\nexports.quantile = quantile;\nexports.range = range;\nexports.scan = scan;\nexports.shuffle = shuffle;\nexports.sum = sum;\nexports.ticks = ticks;\nexports.tickIncrement = tickIncrement;\nexports.tickStep = tickStep;\nexports.transpose = transpose;\nexports.variance = variance;\nexports.zip = zip;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-array/build/d3-array.js\n// module id = 1\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11","// https://d3js.org/d3-ease/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction linear(t) {\n return +t;\n}\n\nfunction quadIn(t) {\n return t * t;\n}\n\nfunction quadOut(t) {\n return t * (2 - t);\n}\n\nfunction quadInOut(t) {\n return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\nfunction cubicIn(t) {\n return t * t * t;\n}\n\nfunction cubicOut(t) {\n return --t * t * t + 1;\n}\n\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\nvar exponent = 3;\n\nvar polyIn = (function custom(e) {\n e = +e;\n\n function polyIn(t) {\n return Math.pow(t, e);\n }\n\n polyIn.exponent = custom;\n\n return polyIn;\n})(exponent);\n\nvar polyOut = (function custom(e) {\n e = +e;\n\n function polyOut(t) {\n return 1 - Math.pow(1 - t, e);\n }\n\n polyOut.exponent = custom;\n\n return polyOut;\n})(exponent);\n\nvar polyInOut = (function custom(e) {\n e = +e;\n\n function polyInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n }\n\n polyInOut.exponent = custom;\n\n return polyInOut;\n})(exponent);\n\nvar pi = Math.PI;\nvar halfPi = pi / 2;\n\nfunction sinIn(t) {\n return 1 - Math.cos(t * halfPi);\n}\n\nfunction sinOut(t) {\n return Math.sin(t * halfPi);\n}\n\nfunction sinInOut(t) {\n return (1 - Math.cos(pi * t)) / 2;\n}\n\nfunction expIn(t) {\n return Math.pow(2, 10 * t - 10);\n}\n\nfunction expOut(t) {\n return 1 - Math.pow(2, -10 * t);\n}\n\nfunction expInOut(t) {\n return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n\nfunction circleIn(t) {\n return 1 - Math.sqrt(1 - t * t);\n}\n\nfunction circleOut(t) {\n return Math.sqrt(1 - --t * t);\n}\n\nfunction circleInOut(t) {\n return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\nvar b1 = 4 / 11;\nvar b2 = 6 / 11;\nvar b3 = 8 / 11;\nvar b4 = 3 / 4;\nvar b5 = 9 / 11;\nvar b6 = 10 / 11;\nvar b7 = 15 / 16;\nvar b8 = 21 / 22;\nvar b9 = 63 / 64;\nvar b0 = 1 / b1 / b1;\n\nfunction bounceIn(t) {\n return 1 - bounceOut(1 - t);\n}\n\nfunction bounceOut(t) {\n return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nfunction bounceInOut(t) {\n return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\nvar overshoot = 1.70158;\n\nvar backIn = (function custom(s) {\n s = +s;\n\n function backIn(t) {\n return t * t * ((s + 1) * t - s);\n }\n\n backIn.overshoot = custom;\n\n return backIn;\n})(overshoot);\n\nvar backOut = (function custom(s) {\n s = +s;\n\n function backOut(t) {\n return --t * t * ((s + 1) * t + s) + 1;\n }\n\n backOut.overshoot = custom;\n\n return backOut;\n})(overshoot);\n\nvar backInOut = (function custom(s) {\n s = +s;\n\n function backInOut(t) {\n return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n }\n\n backInOut.overshoot = custom;\n\n return backInOut;\n})(overshoot);\n\nvar tau = 2 * Math.PI;\nvar amplitude = 1;\nvar period = 0.3;\n\nvar elasticIn = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticIn(t) {\n return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n }\n\n elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n elasticIn.period = function(p) { return custom(a, p); };\n\n return elasticIn;\n})(amplitude, period);\n\nvar elasticOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticOut(t) {\n return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n }\n\n elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticOut.period = function(p) { return custom(a, p); };\n\n return elasticOut;\n})(amplitude, period);\n\nvar elasticInOut = (function custom(a, p) {\n var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n function elasticInOut(t) {\n return ((t = t * 2 - 1) < 0\n ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n }\n\n elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n elasticInOut.period = function(p) { return custom(a, p); };\n\n return elasticInOut;\n})(amplitude, period);\n\nexports.easeLinear = linear;\nexports.easeQuad = quadInOut;\nexports.easeQuadIn = quadIn;\nexports.easeQuadOut = quadOut;\nexports.easeQuadInOut = quadInOut;\nexports.easeCubic = cubicInOut;\nexports.easeCubicIn = cubicIn;\nexports.easeCubicOut = cubicOut;\nexports.easeCubicInOut = cubicInOut;\nexports.easePoly = polyInOut;\nexports.easePolyIn = polyIn;\nexports.easePolyOut = polyOut;\nexports.easePolyInOut = polyInOut;\nexports.easeSin = sinInOut;\nexports.easeSinIn = sinIn;\nexports.easeSinOut = sinOut;\nexports.easeSinInOut = sinInOut;\nexports.easeExp = expInOut;\nexports.easeExpIn = expIn;\nexports.easeExpOut = expOut;\nexports.easeExpInOut = expInOut;\nexports.easeCircle = circleInOut;\nexports.easeCircleIn = circleIn;\nexports.easeCircleOut = circleOut;\nexports.easeCircleInOut = circleInOut;\nexports.easeBounce = bounceOut;\nexports.easeBounceIn = bounceIn;\nexports.easeBounceOut = bounceOut;\nexports.easeBounceInOut = bounceInOut;\nexports.easeBack = backInOut;\nexports.easeBackIn = backIn;\nexports.easeBackOut = backOut;\nexports.easeBackInOut = backInOut;\nexports.easeElastic = elasticOut;\nexports.easeElasticIn = elasticIn;\nexports.easeElasticOut = elasticOut;\nexports.easeElasticInOut = elasticInOut;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-ease/build/d3-ease.js\n// module id = 2\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-axis/ Version 1.0.8. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar slice = Array.prototype.slice;\n\nvar identity = function(x) {\n return x;\n};\n\nvar top = 1;\nvar right = 2;\nvar bottom = 3;\nvar left = 4;\nvar epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n return function(d) {\n return +scale(d);\n };\n}\n\nfunction center(scale) {\n var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n if (scale.round()) offset = Math.round(offset);\n return function(d) {\n return +scale(d) + offset;\n };\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + 0.5,\n range1 = +range[range.length - 1] + 0.5,\n position = (scale.bandwidth ? center : number)(scale.copy()),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"#000\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"#000\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"#000\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient == right\n ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter\n : \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter);\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d)); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = slice.call(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n return axis;\n}\n\nfunction axisTop(scale) {\n return axis(top, scale);\n}\n\nfunction axisRight(scale) {\n return axis(right, scale);\n}\n\nfunction axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nfunction axisLeft(scale) {\n return axis(left, scale);\n}\n\nexports.axisTop = axisTop;\nexports.axisRight = axisRight;\nexports.axisBottom = axisBottom;\nexports.axisLeft = axisLeft;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-axis/build/d3-axis.js\n// module id = 3\n// module chunks = 0 1 4 6 9 10 11","// https://d3js.org/d3-color/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar define = function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n};\n\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n\nfunction Color() {}\n\nvar darker = 0.7;\nvar brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\";\nvar reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\";\nvar reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\";\nvar reHex3 = /^#([0-9a-f]{3})$/;\nvar reHex6 = /^#([0-9a-f]{6})$/;\nvar reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\");\nvar reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\");\nvar reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\");\nvar reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\");\nvar reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\");\nvar reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n displayable: function() {\n return this.rgb().displayable();\n },\n toString: function() {\n return this.rgb() + \"\";\n }\n});\n\nfunction color(format) {\n var m;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format])\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nfunction rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (0 <= this.r && this.r <= 255)\n && (0 <= this.g && this.g <= 255)\n && (0 <= this.b && this.b <= 255)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n toString: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nfunction hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nfunction hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n\nvar deg2rad = Math.PI / 180;\nvar rad2deg = 180 / Math.PI;\n\nvar Kn = 18;\nvar Xn = 0.950470;\nvar Yn = 1;\nvar Zn = 1.088830;\nvar t0 = 4 / 29;\nvar t1 = 6 / 29;\nvar t2 = 3 * t1 * t1;\nvar t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n if (o instanceof Hcl) {\n var h = o.h * deg2rad;\n return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n }\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var b = rgb2xyz(o.r),\n a = rgb2xyz(o.g),\n l = rgb2xyz(o.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nfunction lab(l, a, b, opacity) {\n return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nfunction Lab(l, a, b, opacity) {\n this.l = +l;\n this.a = +a;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n brighter: function(k) {\n return new Lab(this.l + Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n darker: function(k) {\n return new Lab(this.l - Kn * (k == null ? 1 : k), this.a, this.b, this.opacity);\n },\n rgb: function() {\n var y = (this.l + 16) / 116,\n x = isNaN(this.a) ? y : y + this.a / 500,\n z = isNaN(this.b) ? y : y - this.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Rgb(\n xyz2rgb( 3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb( 0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n this.opacity\n );\n }\n}));\n\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x) {\n return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n if (!(o instanceof Lab)) o = labConvert(o);\n var h = Math.atan2(o.b, o.a) * rad2deg;\n return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nfunction hcl(h, c, l, opacity) {\n return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hcl(h, c, l, opacity) {\n this.h = +h;\n this.c = +c;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n brighter: function(k) {\n return new Hcl(this.h, this.c, this.l + Kn * (k == null ? 1 : k), this.opacity);\n },\n darker: function(k) {\n return new Hcl(this.h, this.c, this.l - Kn * (k == null ? 1 : k), this.opacity);\n },\n rgb: function() {\n return labConvert(this).rgb();\n }\n}));\n\nvar A = -0.14861;\nvar B = +1.78277;\nvar C = -0.29227;\nvar D = -0.90649;\nvar E = +1.97294;\nvar ED = E * D;\nvar EB = E * B;\nvar BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Rgb)) o = rgbConvert(o);\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n bl = b - l,\n k = (E * (g - l) - C * bl) / D,\n s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nfunction cubehelix(h, s, l, opacity) {\n return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Cubehelix(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n l = +this.l,\n a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n cosh = Math.cos(h),\n sinh = Math.sin(h);\n return new Rgb(\n 255 * (l + a * (A * cosh + B * sinh)),\n 255 * (l + a * (C * cosh + D * sinh)),\n 255 * (l + a * (E * cosh)),\n this.opacity\n );\n }\n}));\n\nexports.color = color;\nexports.rgb = rgb;\nexports.hsl = hsl;\nexports.lab = lab;\nexports.hcl = hcl;\nexports.cubehelix = cubehelix;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-color/build/d3-color.js\n// module id = 4\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-dispatch/ Version 1.0.3. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar noop = {value: function() {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexports.dispatch = dispatch;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-dispatch/build/d3-dispatch.js\n// module id = 5\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-format/ Version 1.2.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nvar formatDecimal = function(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n};\n\nvar exponent = function(x) {\n return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\n};\n\nvar formatGroup = function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n};\n\nvar formatNumerals = function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n};\n\nvar formatDefault = function(x, p) {\n x = x.toPrecision(p);\n\n out: for (var n = x.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (x[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n case \"e\": break out;\n default: if (i0 > 0) i0 = 0; break;\n }\n }\n\n return i0 > 0 ? x.slice(0, i0) + x.slice(i1 + 1) : x;\n};\n\nvar prefixExponent;\n\nvar formatPrefixAuto = function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n};\n\nvar formatRounded = function(x, p) {\n var d = formatDecimal(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n};\n\nvar formatTypes = {\n \"\": formatDefault,\n \"%\": function(x, p) { return (x * 100).toFixed(p); },\n \"b\": function(x) { return Math.round(x).toString(2); },\n \"c\": function(x) { return x + \"\"; },\n \"d\": function(x) { return Math.round(x).toString(10); },\n \"e\": function(x, p) { return x.toExponential(p); },\n \"f\": function(x, p) { return x.toFixed(p); },\n \"g\": function(x, p) { return x.toPrecision(p); },\n \"o\": function(x) { return Math.round(x).toString(8); },\n \"p\": function(x, p) { return formatRounded(x * 100, p); },\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\n// [[fill]align][sign][symbol][0][width][,][.precision][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-\\( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?([a-z%])?$/i;\n\nfunction formatSpecifier(specifier) {\n return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n\n var match,\n fill = match[1] || \" \",\n align = match[2] || \">\",\n sign = match[3] || \"-\",\n symbol = match[4] || \"\",\n zero = !!match[5],\n width = match[6] && +match[6],\n comma = !!match[7],\n precision = match[8] && +match[8].slice(1),\n type = match[9] || \"\";\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // Map invalid types to the default format.\n else if (!formatTypes[type]) type = \"\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n this.fill = fill;\n this.align = align;\n this.sign = sign;\n this.symbol = symbol;\n this.zero = zero;\n this.width = width;\n this.comma = comma;\n this.precision = precision;\n this.type = type;\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + this.type;\n};\n\nvar identity = function(x) {\n return x;\n};\n\nvar prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nvar formatLocale = function(locale) {\n var group = locale.grouping && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n currency = locale.currency,\n decimal = locale.decimal,\n numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n percent = locale.percent || \"%\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n type = specifier.type;\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = !type || /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision == null ? (type ? 6 : 12)\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Perform the initial formatting.\n var valueNegative = value < 0;\n value = formatType(Math.abs(value), precision);\n\n // If a negative value rounds to zero during formatting, treat as positive.\n if (valueNegative && +value === 0) valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = valueSuffix + (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n};\n\nvar locale;\n\n\n\ndefaultLocale({\n decimal: \".\",\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nfunction defaultLocale(definition) {\n locale = formatLocale(definition);\n exports.format = locale.format;\n exports.formatPrefix = locale.formatPrefix;\n return locale;\n}\n\nvar precisionFixed = function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n};\n\nvar precisionPrefix = function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n};\n\nvar precisionRound = function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n};\n\nexports.formatDefaultLocale = defaultLocale;\nexports.formatLocale = formatLocale;\nexports.formatSpecifier = formatSpecifier;\nexports.precisionFixed = precisionFixed;\nexports.precisionPrefix = precisionPrefix;\nexports.precisionRound = precisionRound;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-format/build/d3-format.js\n// module id = 6\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-scale/ Version 1.0.6. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array'), require('d3-collection'), require('d3-interpolate'), require('d3-format'), require('d3-time'), require('d3-time-format'), require('d3-color')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-array', 'd3-collection', 'd3-interpolate', 'd3-format', 'd3-time', 'd3-time-format', 'd3-color'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n}(this, (function (exports,d3Array,d3Collection,d3Interpolate,d3Format,d3Time,d3TimeFormat,d3Color) { 'use strict';\n\nvar array = Array.prototype;\n\nvar map$1 = array.map;\nvar slice = array.slice;\n\nvar implicit = {name: \"implicit\"};\n\nfunction ordinal(range$$1) {\n var index = d3Collection.map(),\n domain = [],\n unknown = implicit;\n\n range$$1 = range$$1 == null ? [] : slice.call(range$$1);\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range$$1[(i - 1) % range$$1.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = d3Collection.map();\n var i = -1, n = _.length, d, key;\n while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range$$1 = slice.call(_), scale) : range$$1.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal()\n .domain(domain)\n .range(range$$1)\n .unknown(unknown);\n };\n\n return scale;\n}\n\nfunction band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n range$$1 = [0, 1],\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = range$$1[1] < range$$1[0],\n start = range$$1[reverse - 0],\n stop = range$$1[1 - reverse];\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = d3Array.range(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range$$1 = [+_[0], +_[1]], rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function(_) {\n return range$$1 = [+_[0], +_[1]], round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.max(0, Math.min(1, _)), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = Math.max(0, Math.min(1, _)), rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band()\n .domain(domain())\n .range(range$$1)\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return rescale();\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nfunction point() {\n return pointish(band().paddingInner(1));\n}\n\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\n\nvar number = function(x) {\n return +x;\n};\n\nvar unit = [0, 1];\n\nfunction deinterpolateLinear(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(b);\n}\n\nfunction deinterpolateClamp(deinterpolate) {\n return function(a, b) {\n var d = deinterpolate(a = +a, b = +b);\n return function(x) { return x <= a ? 0 : x >= b ? 1 : d(x); };\n };\n}\n\nfunction reinterpolateClamp(reinterpolate) {\n return function(a, b) {\n var r = reinterpolate(a = +a, b = +b);\n return function(t) { return t <= 0 ? a : t >= 1 ? b : r(t); };\n };\n}\n\nfunction bimap(domain, range$$1, deinterpolate, reinterpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range$$1[0], r1 = range$$1[1];\n if (d1 < d0) d0 = deinterpolate(d1, d0), r0 = reinterpolate(r1, r0);\n else d0 = deinterpolate(d0, d1), r0 = reinterpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range$$1, deinterpolate, reinterpolate) {\n var j = Math.min(domain.length, range$$1.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range$$1 = range$$1.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = deinterpolate(domain[i], domain[i + 1]);\n r[i] = reinterpolate(range$$1[i], range$$1[i + 1]);\n }\n\n return function(x) {\n var i = d3Array.bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nfunction copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp());\n}\n\n// deinterpolate(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// reinterpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding domain value x in [a,b].\nfunction continuous(deinterpolate, reinterpolate) {\n var domain = unit,\n range$$1 = unit,\n interpolate$$1 = d3Interpolate.interpolate,\n clamp = false,\n piecewise,\n output,\n input;\n\n function rescale() {\n piecewise = Math.min(domain.length, range$$1.length) > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return (output || (output = piecewise(domain, range$$1, clamp ? deinterpolateClamp(deinterpolate) : deinterpolate, interpolate$$1)))(+x);\n }\n\n scale.invert = function(y) {\n return (input || (input = piecewise(range$$1, domain, deinterpolateLinear, clamp ? reinterpolateClamp(reinterpolate) : reinterpolate)))(+y);\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = map$1.call(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.rangeRound = function(_) {\n return range$$1 = slice.call(_), interpolate$$1 = d3Interpolate.interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, rescale()) : clamp;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate$$1 = _, rescale()) : interpolate$$1;\n };\n\n return rescale();\n}\n\nvar tickFormat = function(domain, count, specifier) {\n var start = domain[0],\n stop = domain[domain.length - 1],\n step = d3Array.tickStep(start, stop, count == null ? 10 : count),\n precision;\n specifier = d3Format.formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionPrefix(step, value))) specifier.precision = precision;\n return d3Format.formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = d3Format.precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return d3Format.format(specifier);\n};\n\nfunction linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return d3Array.ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n return tickFormat(domain(), count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain(),\n i0 = 0,\n i1 = d.length - 1,\n start = d[i0],\n stop = d[i1],\n step;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n\n step = d3Array.tickIncrement(start, stop, count);\n\n if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n step = d3Array.tickIncrement(start, stop, count);\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n step = d3Array.tickIncrement(start, stop, count);\n }\n\n if (step > 0) {\n d[i0] = Math.floor(start / step) * step;\n d[i1] = Math.ceil(stop / step) * step;\n domain(d);\n } else if (step < 0) {\n d[i0] = Math.ceil(start * step) / step;\n d[i1] = Math.floor(stop * step) / step;\n domain(d);\n }\n\n return scale;\n };\n\n return scale;\n}\n\nfunction linear() {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber);\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n return linearish(scale);\n}\n\nfunction identity() {\n var domain = [0, 1];\n\n function scale(x) {\n return +x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = function(_) {\n return arguments.length ? (domain = map$1.call(_, number), scale) : domain.slice();\n };\n\n scale.copy = function() {\n return identity().domain(domain);\n };\n\n return linearish(scale);\n}\n\nvar nice = function(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n};\n\nfunction deinterpolate(a, b) {\n return (b = Math.log(b / a))\n ? function(x) { return Math.log(x / a) / b; }\n : constant(b);\n}\n\nfunction reinterpolate(a, b) {\n return a < 0\n ? function(t) { return -Math.pow(-b, t) * Math.pow(-a, 1 - t); }\n : function(t) { return Math.pow(b, t) * Math.pow(a, 1 - t); };\n}\n\nfunction pow10(x) {\n return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n return base === 10 ? pow10\n : base === Math.E ? Math.exp\n : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n return base === Math.E ? Math.log\n : base === 10 && Math.log10\n || base === 2 && Math.log2\n || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n return function(x) {\n return -f(-x);\n };\n}\n\nfunction log() {\n var scale = continuous(deinterpolate, reinterpolate).domain([1, 10]),\n domain = scale.domain,\n base = 10,\n logs = logp(10),\n pows = powp(10);\n\n function rescale() {\n logs = logp(base), pows = powp(base);\n if (domain()[0] < 0) logs = reflect(logs), pows = reflect(pows);\n return scale;\n }\n\n scale.base = function(_) {\n return arguments.length ? (base = +_, rescale()) : base;\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.ticks = function(count) {\n var d = domain(),\n u = d[0],\n v = d[d.length - 1],\n r;\n\n if (r = v < u) i = u, u = v, v = i;\n\n var i = logs(u),\n j = logs(v),\n p,\n k,\n t,\n n = count == null ? 10 : +count,\n z = [];\n\n if (!(base % 1) && j - i < n) {\n i = Math.round(i) - 1, j = Math.round(j) + 1;\n if (u > 0) for (; i < j; ++i) {\n for (k = 1, p = pows(i); k < base; ++k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n } else for (; i < j; ++i) {\n for (k = base - 1, p = pows(i); k >= 1; --k) {\n t = p * k;\n if (t < u) continue;\n if (t > v) break;\n z.push(t);\n }\n }\n } else {\n z = d3Array.ticks(i, j, Math.min(j - i, n)).map(pows);\n }\n\n return r ? z.reverse() : z;\n };\n\n scale.tickFormat = function(count, specifier) {\n if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n if (typeof specifier !== \"function\") specifier = d3Format.format(specifier);\n if (count === Infinity) return specifier;\n if (count == null) count = 10;\n var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n return function(d) {\n var i = d / pows(Math.round(logs(d)));\n if (i * base < base - 0.5) i *= base;\n return i <= k ? specifier(d) : \"\";\n };\n };\n\n scale.nice = function() {\n return domain(nice(domain(), {\n floor: function(x) { return pows(Math.floor(logs(x))); },\n ceil: function(x) { return pows(Math.ceil(logs(x))); }\n }));\n };\n\n scale.copy = function() {\n return copy(scale, log().base(base));\n };\n\n return scale;\n}\n\nfunction raise(x, exponent) {\n return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n}\n\nfunction pow() {\n var exponent = 1,\n scale = continuous(deinterpolate, reinterpolate),\n domain = scale.domain;\n\n function deinterpolate(a, b) {\n return (b = raise(b, exponent) - (a = raise(a, exponent)))\n ? function(x) { return (raise(x, exponent) - a) / b; }\n : constant(b);\n }\n\n function reinterpolate(a, b) {\n b = raise(b, exponent) - (a = raise(a, exponent));\n return function(t) { return raise(a + b * t, 1 / exponent); };\n }\n\n scale.exponent = function(_) {\n return arguments.length ? (exponent = +_, domain(domain())) : exponent;\n };\n\n scale.copy = function() {\n return copy(scale, pow().exponent(exponent));\n };\n\n return linearish(scale);\n}\n\nfunction sqrt() {\n return pow().exponent(0.5);\n}\n\nfunction quantile$1() {\n var domain = [],\n range$$1 = [],\n thresholds = [];\n\n function rescale() {\n var i = 0, n = Math.max(1, range$$1.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = d3Array.quantile(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n if (!isNaN(x = +x)) return range$$1[d3Array.bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(d3Array.ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range$$1 = slice.call(_), rescale()) : range$$1.slice();\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile$1()\n .domain(domain)\n .range(range$$1);\n };\n\n return scale;\n}\n\nfunction quantize() {\n var x0 = 0,\n x1 = 1,\n n = 1,\n domain = [0.5],\n range$$1 = [0, 1];\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n function rescale() {\n var i = -1;\n domain = new Array(n);\n while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n return scale;\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n };\n\n scale.range = function(_) {\n return arguments.length ? (n = (range$$1 = slice.call(_)).length - 1, rescale()) : range$$1.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range$$1.indexOf(y);\n return i < 0 ? [NaN, NaN]\n : i < 1 ? [x0, domain[0]]\n : i >= n ? [domain[n - 1], x1]\n : [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return quantize()\n .domain([x0, x1])\n .range(range$$1);\n };\n\n return linearish(scale);\n}\n\nfunction threshold() {\n var domain = [0.5],\n range$$1 = [0, 1],\n n = 1;\n\n function scale(x) {\n if (x <= x) return range$$1[d3Array.bisect(domain, x, 0, n)];\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range$$1 = slice.call(_), n = Math.min(domain.length, range$$1.length - 1), scale) : range$$1.slice();\n };\n\n scale.invertExtent = function(y) {\n var i = range$$1.indexOf(y);\n return [domain[i - 1], domain[i]];\n };\n\n scale.copy = function() {\n return threshold()\n .domain(domain)\n .range(range$$1);\n };\n\n return scale;\n}\n\nvar durationSecond = 1000;\nvar durationMinute = durationSecond * 60;\nvar durationHour = durationMinute * 60;\nvar durationDay = durationHour * 24;\nvar durationWeek = durationDay * 7;\nvar durationMonth = durationDay * 30;\nvar durationYear = durationDay * 365;\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number$1(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nfunction calendar(year, month, week, day, hour, minute, second, millisecond, format$$1) {\n var scale = continuous(deinterpolateLinear, d3Interpolate.interpolateNumber),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format$$1(\".%L\"),\n formatSecond = format$$1(\":%S\"),\n formatMinute = format$$1(\"%I:%M\"),\n formatHour = format$$1(\"%I %p\"),\n formatDay = format$$1(\"%a %d\"),\n formatWeek = format$$1(\"%b %d\"),\n formatMonth = format$$1(\"%B\"),\n formatYear = format$$1(\"%Y\");\n\n var tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n function tickInterval(interval, start, stop, step) {\n if (interval == null) interval = 10;\n\n // If a desired tick count is specified, pick a reasonable tick interval\n // based on the extent of the domain and a rough estimate of tick size.\n // Otherwise, assume interval is already a time interval and use it.\n if (typeof interval === \"number\") {\n var target = Math.abs(stop - start) / interval,\n i = d3Array.bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n if (i === tickIntervals.length) {\n step = d3Array.tickStep(start / durationYear, stop / durationYear, interval);\n interval = year;\n } else if (i) {\n i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n step = i[1];\n interval = i[0];\n } else {\n step = d3Array.tickStep(start, stop, interval);\n interval = millisecond;\n }\n }\n\n return step == null ? interval : interval.every(step);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(map$1.call(_, number$1)) : domain().map(date);\n };\n\n scale.ticks = function(interval, step) {\n var d = domain(),\n t0 = d[0],\n t1 = d[d.length - 1],\n r = t1 < t0,\n t;\n if (r) t = t0, t0 = t1, t1 = t;\n t = tickInterval(interval, t0, t1, step);\n t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n return r ? t.reverse() : t;\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format$$1(specifier);\n };\n\n scale.nice = function(interval, step) {\n var d = domain();\n return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n ? domain(nice(d, interval))\n : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format$$1));\n };\n\n return scale;\n}\n\nvar time = function() {\n return calendar(d3Time.timeYear, d3Time.timeMonth, d3Time.timeWeek, d3Time.timeDay, d3Time.timeHour, d3Time.timeMinute, d3Time.timeSecond, d3Time.timeMillisecond, d3TimeFormat.timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]);\n};\n\nvar utcTime = function() {\n return calendar(d3Time.utcYear, d3Time.utcMonth, d3Time.utcWeek, d3Time.utcDay, d3Time.utcHour, d3Time.utcMinute, d3Time.utcSecond, d3Time.utcMillisecond, d3TimeFormat.utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]);\n};\n\nvar colors = function(s) {\n return s.match(/.{6}/g).map(function(x) {\n return \"#\" + x;\n });\n};\n\nvar category10 = colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\nvar category20b = colors(\"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6\");\n\nvar category20c = colors(\"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9\");\n\nvar category20 = colors(\"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5\");\n\nvar cubehelix$1 = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(300, 0.5, 0.0), d3Color.cubehelix(-240, 0.5, 1.0));\n\nvar warm = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(-100, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\nvar cool = d3Interpolate.interpolateCubehelixLong(d3Color.cubehelix(260, 0.75, 0.35), d3Color.cubehelix(80, 1.50, 0.8));\n\nvar rainbow = d3Color.cubehelix();\n\nvar rainbow$1 = function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n rainbow.h = 360 * t - 100;\n rainbow.s = 1.5 - 1.5 * ts;\n rainbow.l = 0.8 - 0.9 * ts;\n return rainbow + \"\";\n};\n\nfunction ramp(range$$1) {\n var n = range$$1.length;\n return function(t) {\n return range$$1[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nvar viridis = ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nvar magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nvar inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nvar plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\nfunction sequential(interpolator) {\n var x0 = 0,\n x1 = 1,\n clamp = false;\n\n function scale(x) {\n var t = (x - x0) / (x1 - x0);\n return interpolator(clamp ? Math.max(0, Math.min(1, t)) : t);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (x0 = +_[0], x1 = +_[1], scale) : [x0, x1];\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = !!_, scale) : clamp;\n };\n\n scale.interpolator = function(_) {\n return arguments.length ? (interpolator = _, scale) : interpolator;\n };\n\n scale.copy = function() {\n return sequential(interpolator).domain([x0, x1]).clamp(clamp);\n };\n\n return linearish(scale);\n}\n\nexports.scaleBand = band;\nexports.scalePoint = point;\nexports.scaleIdentity = identity;\nexports.scaleLinear = linear;\nexports.scaleLog = log;\nexports.scaleOrdinal = ordinal;\nexports.scaleImplicit = implicit;\nexports.scalePow = pow;\nexports.scaleSqrt = sqrt;\nexports.scaleQuantile = quantile$1;\nexports.scaleQuantize = quantize;\nexports.scaleThreshold = threshold;\nexports.scaleTime = time;\nexports.scaleUtc = utcTime;\nexports.schemeCategory10 = category10;\nexports.schemeCategory20b = category20b;\nexports.schemeCategory20c = category20c;\nexports.schemeCategory20 = category20;\nexports.interpolateCubehelixDefault = cubehelix$1;\nexports.interpolateRainbow = rainbow$1;\nexports.interpolateWarm = warm;\nexports.interpolateCool = cool;\nexports.interpolateViridis = viridis;\nexports.interpolateMagma = magma;\nexports.interpolateInferno = inferno;\nexports.interpolatePlasma = plasma;\nexports.scaleSequential = sequential;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-scale/build/d3-scale.js\n// module id = 7\n// module chunks = 0 1 3 4 5 6 8 9 10 11","// https://d3js.org/d3-collection/ Version 1.0.4. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n constructor: Map,\n has: function(key) {\n return (prefix + key) in this;\n },\n get: function(key) {\n return this[prefix + key];\n },\n set: function(key, value) {\n this[prefix + key] = value;\n return this;\n },\n remove: function(key) {\n var property = prefix + key;\n return property in this && delete this[property];\n },\n clear: function() {\n for (var property in this) if (property[0] === prefix) delete this[property];\n },\n keys: function() {\n var keys = [];\n for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n return keys;\n },\n values: function() {\n var values = [];\n for (var property in this) if (property[0] === prefix) values.push(this[property]);\n return values;\n },\n entries: function() {\n var entries = [];\n for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n return entries;\n },\n size: function() {\n var size = 0;\n for (var property in this) if (property[0] === prefix) ++size;\n return size;\n },\n empty: function() {\n for (var property in this) if (property[0] === prefix) return false;\n return true;\n },\n each: function(f) {\n for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n }\n};\n\nfunction map(object, f) {\n var map = new Map;\n\n // Copy constructor.\n if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n // Index array by numeric index or specified key function.\n else if (Array.isArray(object)) {\n var i = -1,\n n = object.length,\n o;\n\n if (f == null) while (++i < n) map.set(i, object[i]);\n else while (++i < n) map.set(f(o = object[i], i, object), o);\n }\n\n // Convert object to map.\n else if (object) for (var key in object) map.set(key, object[key]);\n\n return map;\n}\n\nvar nest = function() {\n var keys = [],\n sortKeys = [],\n sortValues,\n rollup,\n nest;\n\n function apply(array, depth, createResult, setResult) {\n if (depth >= keys.length) {\n if (sortValues != null) array.sort(sortValues);\n return rollup != null ? rollup(array) : array;\n }\n\n var i = -1,\n n = array.length,\n key = keys[depth++],\n keyValue,\n value,\n valuesByKey = map(),\n values,\n result = createResult();\n\n while (++i < n) {\n if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n values.push(value);\n } else {\n valuesByKey.set(keyValue, [value]);\n }\n }\n\n valuesByKey.each(function(values, key) {\n setResult(result, key, apply(values, depth, createResult, setResult));\n });\n\n return result;\n }\n\n function entries(map$$1, depth) {\n if (++depth > keys.length) return map$$1;\n var array, sortKey = sortKeys[depth - 1];\n if (rollup != null && depth >= keys.length) array = map$$1.entries();\n else array = [], map$$1.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n }\n\n return nest = {\n object: function(array) { return apply(array, 0, createObject, setObject); },\n map: function(array) { return apply(array, 0, createMap, setMap); },\n entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n key: function(d) { keys.push(d); return nest; },\n sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n sortValues: function(order) { sortValues = order; return nest; },\n rollup: function(f) { rollup = f; return nest; }\n };\n};\n\nfunction createObject() {\n return {};\n}\n\nfunction setObject(object, key, value) {\n object[key] = value;\n}\n\nfunction createMap() {\n return map();\n}\n\nfunction setMap(map$$1, key, value) {\n map$$1.set(key, value);\n}\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n constructor: Set,\n has: proto.has,\n add: function(value) {\n value += \"\";\n this[prefix + value] = value;\n return this;\n },\n remove: proto.remove,\n clear: proto.clear,\n values: proto.keys,\n size: proto.size,\n empty: proto.empty,\n each: proto.each\n};\n\nfunction set(object, f) {\n var set = new Set;\n\n // Copy constructor.\n if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n // Otherwise, assume it’s an array.\n else if (object) {\n var i = -1, n = object.length;\n if (f == null) while (++i < n) set.add(object[i]);\n else while (++i < n) set.add(f(object[i], i, object));\n }\n\n return set;\n}\n\nvar keys = function(map) {\n var keys = [];\n for (var key in map) keys.push(key);\n return keys;\n};\n\nvar values = function(map) {\n var values = [];\n for (var key in map) values.push(map[key]);\n return values;\n};\n\nvar entries = function(map) {\n var entries = [];\n for (var key in map) entries.push({key: key, value: map[key]});\n return entries;\n};\n\nexports.nest = nest;\nexports.set = set;\nexports.map = map;\nexports.keys = keys;\nexports.values = values;\nexports.entries = entries;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-collection/build/d3-collection.js\n// module id = 8\n// module chunks = 0 1 3 4 5 6 8 9 10 11","// https://d3js.org/d3-interpolate/ Version 1.1.5. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3));\n}(this, (function (exports,d3Color) { 'use strict';\n\nfunction basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nvar basis$1 = function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n};\n\nvar basisClosed = function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n};\n\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nfunction hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n\nvar rgb$1 = ((function rgbGamma(y) {\n var color$$1 = gamma(y);\n\n function rgb$$1(start, end) {\n var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r),\n g = color$$1(start.g, end.g),\n b = color$$1(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb$$1.gamma = rgbGamma;\n\n return rgb$$1;\n}))(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color$$1;\n for (i = 0; i < n; ++i) {\n color$$1 = d3Color.rgb(colors[i]);\n r[i] = color$$1.r || 0;\n g[i] = color$$1.g || 0;\n b[i] = color$$1.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color$$1.opacity = 1;\n return function(t) {\n color$$1.r = r(t);\n color$$1.g = g(t);\n color$$1.b = b(t);\n return color$$1 + \"\";\n };\n };\n}\n\nvar rgbBasis = rgbSpline(basis$1);\nvar rgbBasisClosed = rgbSpline(basisClosed);\n\nvar array = function(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(nb),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n};\n\nvar date = function(a, b) {\n var d = new Date;\n return a = +a, b -= a, function(t) {\n return d.setTime(a + b * t), d;\n };\n};\n\nvar number = function(a, b) {\n return a = +a, b -= a, function(t) {\n return a + b * t;\n };\n};\n\nvar object = function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n};\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g;\nvar reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nvar string = function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n};\n\nvar value = function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = d3Color.color(b)) ? (b = c, rgb$1) : string)\n : b instanceof d3Color.color ? rgb$1\n : b instanceof Date ? date\n : Array.isArray(b) ? array\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n};\n\nvar round = function(a, b) {\n return a = +a, b -= a, function(t) {\n return Math.round(a + b * t);\n };\n};\n\nvar degrees = 180 / Math.PI;\n\nvar identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nvar decompose = function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n};\n\nvar cssNode;\nvar cssRoot;\nvar cssView;\nvar svgNode;\n\nfunction parseCss(value) {\n if (value === \"none\") return identity;\n if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n cssNode.style.transform = value;\n value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n cssRoot.removeChild(cssNode);\n value = value.slice(7, -1).split(\",\");\n return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nfunction parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\nvar rho = Math.SQRT2;\nvar rho2 = 2;\nvar rho4 = 4;\nvar epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nvar zoom = function(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n };\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n };\n }\n\n i.duration = S * 1000;\n\n return i;\n};\n\nfunction hsl$1(hue$$1) {\n return function(start, end) {\n var h = hue$$1((start = d3Color.hsl(start)).h, (end = d3Color.hsl(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nvar hsl$2 = hsl$1(hue);\nvar hslLong = hsl$1(nogamma);\n\nfunction lab$1(start, end) {\n var l = nogamma((start = d3Color.lab(start)).l, (end = d3Color.lab(end)).l),\n a = nogamma(start.a, end.a),\n b = nogamma(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.l = l(t);\n start.a = a(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n}\n\nfunction hcl$1(hue$$1) {\n return function(start, end) {\n var h = hue$$1((start = d3Color.hcl(start)).h, (end = d3Color.hcl(end)).h),\n c = nogamma(start.c, end.c),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.c = c(t);\n start.l = l(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n}\n\nvar hcl$2 = hcl$1(hue);\nvar hclLong = hcl$1(nogamma);\n\nfunction cubehelix$1(hue$$1) {\n return (function cubehelixGamma(y) {\n y = +y;\n\n function cubehelix$$1(start, end) {\n var h = hue$$1((start = d3Color.cubehelix(start)).h, (end = d3Color.cubehelix(end)).h),\n s = nogamma(start.s, end.s),\n l = nogamma(start.l, end.l),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.h = h(t);\n start.s = s(t);\n start.l = l(Math.pow(t, y));\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n cubehelix$$1.gamma = cubehelixGamma;\n\n return cubehelix$$1;\n })(1);\n}\n\nvar cubehelix$2 = cubehelix$1(hue);\nvar cubehelixLong = cubehelix$1(nogamma);\n\nvar quantize = function(interpolator, n) {\n var samples = new Array(n);\n for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n return samples;\n};\n\nexports.interpolate = value;\nexports.interpolateArray = array;\nexports.interpolateBasis = basis$1;\nexports.interpolateBasisClosed = basisClosed;\nexports.interpolateDate = date;\nexports.interpolateNumber = number;\nexports.interpolateObject = object;\nexports.interpolateRound = round;\nexports.interpolateString = string;\nexports.interpolateTransformCss = interpolateTransformCss;\nexports.interpolateTransformSvg = interpolateTransformSvg;\nexports.interpolateZoom = zoom;\nexports.interpolateRgb = rgb$1;\nexports.interpolateRgbBasis = rgbBasis;\nexports.interpolateRgbBasisClosed = rgbBasisClosed;\nexports.interpolateHsl = hsl$2;\nexports.interpolateHslLong = hslLong;\nexports.interpolateLab = lab$1;\nexports.interpolateHcl = hcl$2;\nexports.interpolateHclLong = hclLong;\nexports.interpolateCubehelix = cubehelix$2;\nexports.interpolateCubehelixLong = cubehelixLong;\nexports.quantize = quantize;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-interpolate/build/d3-interpolate.js\n// module id = 9\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-time/ Version 1.0.7. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar t0 = new Date;\nvar t1 = new Date;\n\nfunction newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n\nvar millisecond = newInterval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return newInterval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nvar milliseconds = millisecond.range;\n\nvar durationSecond = 1e3;\nvar durationMinute = 6e4;\nvar durationHour = 36e5;\nvar durationDay = 864e5;\nvar durationWeek = 6048e5;\n\nvar second = newInterval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nvar seconds = second.range;\n\nvar minute = newInterval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nvar minutes = minute.range;\n\nvar hour = newInterval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nvar hours = hour.range;\n\nvar day = newInterval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nvar days = day.range;\n\nfunction weekday(i) {\n return newInterval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nvar sunday = weekday(0);\nvar monday = weekday(1);\nvar tuesday = weekday(2);\nvar wednesday = weekday(3);\nvar thursday = weekday(4);\nvar friday = weekday(5);\nvar saturday = weekday(6);\n\nvar sundays = sunday.range;\nvar mondays = monday.range;\nvar tuesdays = tuesday.range;\nvar wednesdays = wednesday.range;\nvar thursdays = thursday.range;\nvar fridays = friday.range;\nvar saturdays = saturday.range;\n\nvar month = newInterval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nvar months = month.range;\n\nvar year = newInterval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nvar years = year.range;\n\nvar utcMinute = newInterval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nvar utcMinutes = utcMinute.range;\n\nvar utcHour = newInterval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nvar utcHours = utcHour.range;\n\nvar utcDay = newInterval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nvar utcDays = utcDay.range;\n\nfunction utcWeekday(i) {\n return newInterval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nvar utcSunday = utcWeekday(0);\nvar utcMonday = utcWeekday(1);\nvar utcTuesday = utcWeekday(2);\nvar utcWednesday = utcWeekday(3);\nvar utcThursday = utcWeekday(4);\nvar utcFriday = utcWeekday(5);\nvar utcSaturday = utcWeekday(6);\n\nvar utcSundays = utcSunday.range;\nvar utcMondays = utcMonday.range;\nvar utcTuesdays = utcTuesday.range;\nvar utcWednesdays = utcWednesday.range;\nvar utcThursdays = utcThursday.range;\nvar utcFridays = utcFriday.range;\nvar utcSaturdays = utcSaturday.range;\n\nvar utcMonth = newInterval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nvar utcMonths = utcMonth.range;\n\nvar utcYear = newInterval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : newInterval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nvar utcYears = utcYear.range;\n\nexports.timeInterval = newInterval;\nexports.timeMillisecond = millisecond;\nexports.timeMilliseconds = milliseconds;\nexports.utcMillisecond = millisecond;\nexports.utcMilliseconds = milliseconds;\nexports.timeSecond = second;\nexports.timeSeconds = seconds;\nexports.utcSecond = second;\nexports.utcSeconds = seconds;\nexports.timeMinute = minute;\nexports.timeMinutes = minutes;\nexports.timeHour = hour;\nexports.timeHours = hours;\nexports.timeDay = day;\nexports.timeDays = days;\nexports.timeWeek = sunday;\nexports.timeWeeks = sundays;\nexports.timeSunday = sunday;\nexports.timeSundays = sundays;\nexports.timeMonday = monday;\nexports.timeMondays = mondays;\nexports.timeTuesday = tuesday;\nexports.timeTuesdays = tuesdays;\nexports.timeWednesday = wednesday;\nexports.timeWednesdays = wednesdays;\nexports.timeThursday = thursday;\nexports.timeThursdays = thursdays;\nexports.timeFriday = friday;\nexports.timeFridays = fridays;\nexports.timeSaturday = saturday;\nexports.timeSaturdays = saturdays;\nexports.timeMonth = month;\nexports.timeMonths = months;\nexports.timeYear = year;\nexports.timeYears = years;\nexports.utcMinute = utcMinute;\nexports.utcMinutes = utcMinutes;\nexports.utcHour = utcHour;\nexports.utcHours = utcHours;\nexports.utcDay = utcDay;\nexports.utcDays = utcDays;\nexports.utcWeek = utcSunday;\nexports.utcWeeks = utcSundays;\nexports.utcSunday = utcSunday;\nexports.utcSundays = utcSundays;\nexports.utcMonday = utcMonday;\nexports.utcMondays = utcMondays;\nexports.utcTuesday = utcTuesday;\nexports.utcTuesdays = utcTuesdays;\nexports.utcWednesday = utcWednesday;\nexports.utcWednesdays = utcWednesdays;\nexports.utcThursday = utcThursday;\nexports.utcThursdays = utcThursdays;\nexports.utcFriday = utcFriday;\nexports.utcFridays = utcFridays;\nexports.utcSaturday = utcSaturday;\nexports.utcSaturdays = utcSaturdays;\nexports.utcMonth = utcMonth;\nexports.utcMonths = utcMonths;\nexports.utcYear = utcYear;\nexports.utcYears = utcYears;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-time/build/d3-time.js\n// module id = 10\n// module chunks = 0 1 3 4 5 6 8 9 10 11 12","// https://d3js.org/d3-time-format/ Version 2.0.5. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-time')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-time'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3));\n}(this, (function (exports,d3Time) { 'use strict';\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nfunction formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"};\nvar numberRe = /^\\s*\\d+/;\nvar percentRe = /^%/;\nvar requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + d3Time.timeDay.count(d3Time.timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(d3Time.timeSunday.count(d3Time.timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(d3Time.timeMonday.count(d3Time.timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + d3Time.utcDay.count(d3Time.utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(d3Time.utcSunday.count(d3Time.utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(d3Time.utcMonday.count(d3Time.utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nvar locale$1;\n\n\n\n\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nfunction defaultLocale(definition) {\n locale$1 = formatLocale(definition);\n exports.timeFormat = locale$1.format;\n exports.timeParse = locale$1.parse;\n exports.utcFormat = locale$1.utcFormat;\n exports.utcParse = locale$1.utcParse;\n return locale$1;\n}\n\nvar isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : exports.utcFormat(isoSpecifier);\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : exports.utcParse(isoSpecifier);\n\nexports.timeFormatDefaultLocale = defaultLocale;\nexports.timeFormatLocale = formatLocale;\nexports.isoFormat = formatIso;\nexports.isoParse = parseIso;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-time-format/build/d3-time-format.js\n// module id = 11\n// module chunks = 0 1 3 4 5 6 8 9 10 11 12","// https://d3js.org/d3-selection/ Version 1.1.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\n\nvar namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\nvar namespace = function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n};\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nvar creator = function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n};\n\nvar nextId = 0;\n\nfunction local() {\n return new Local;\n}\n\nfunction Local() {\n this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n constructor: Local,\n get: function(node) {\n var id = this._;\n while (!(id in node)) if (!(node = node.parentNode)) return;\n return node[id];\n },\n set: function(node, value) {\n return node[this._] = value;\n },\n remove: function(node) {\n return this._ in node && delete node[this._];\n },\n toString: function() {\n return this._;\n }\n};\n\nvar matcher = function(selector) {\n return function() {\n return this.matches(selector);\n };\n};\n\nif (typeof document !== \"undefined\") {\n var element = document.documentElement;\n if (!element.matches) {\n var vendorMatches = element.webkitMatchesSelector\n || element.msMatchesSelector\n || element.mozMatchesSelector\n || element.oMatchesSelector;\n matcher = function(selector) {\n return function() {\n return vendorMatches.call(this, selector);\n };\n };\n }\n}\n\nvar matcher$1 = matcher;\n\nvar filterEvents = {};\n\nexports.event = null;\n\nif (typeof document !== \"undefined\") {\n var element$1 = document.documentElement;\n if (!(\"onmouseenter\" in element$1)) {\n filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n }\n}\n\nfunction filterContextListener(listener, index, group) {\n listener = contextListener(listener, index, group);\n return function(event) {\n var related = event.relatedTarget;\n if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n listener.call(this, event);\n }\n };\n}\n\nfunction contextListener(listener, index, group) {\n return function(event1) {\n var event0 = exports.event; // Events can be reentrant (e.g., focus).\n exports.event = event1;\n try {\n listener.call(this, this.__data__, index, group);\n } finally {\n exports.event = event0;\n }\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, capture) {\n var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n return function(d, i, group) {\n var on = this.__on, o, listener = wrap(value, i, group);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.capture);\n this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, capture);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nvar selection_on = function(typename, value, capture) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n if (capture == null) capture = false;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n return this;\n};\n\nfunction customEvent(event1, listener, that, args) {\n var event0 = exports.event;\n event1.sourceEvent = exports.event;\n exports.event = event1;\n try {\n return listener.apply(that, args);\n } finally {\n exports.event = event0;\n }\n}\n\nvar sourceEvent = function() {\n var current = exports.event, source;\n while (source = current.sourceEvent) current = source;\n return current;\n};\n\nvar point = function(node, event) {\n var svg = node.ownerSVGElement || node;\n\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\nvar mouse = function(node) {\n var event = sourceEvent();\n if (event.changedTouches) event = event.changedTouches[0];\n return point(node, event);\n};\n\nfunction none() {}\n\nvar selector = function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n};\n\nvar selection_select = function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n};\n\nfunction empty() {\n return [];\n}\n\nvar selectorAll = function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n};\n\nvar selection_selectAll = function(select) {\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n};\n\nvar selection_filter = function(match) {\n if (typeof match !== \"function\") match = matcher$1(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n};\n\nvar sparse = function(update) {\n return new Array(update.length);\n};\n\nvar selection_enter = function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n};\n\nfunction EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\nvar constant = function(x) {\n return function() {\n return x;\n };\n};\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = {},\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n if (keyValue in nodeByKeyValue) {\n exit[i] = node;\n } else {\n nodeByKeyValue[keyValue] = node;\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = keyPrefix + key.call(parent, data[i], i, data);\n if (node = nodeByKeyValue[keyValue]) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue[keyValue] = null;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n exit[i] = node;\n }\n }\n}\n\nvar selection_data = function(value, key) {\n if (!value) {\n data = new Array(this.size()), j = -1;\n this.each(function(d) { data[++j] = d; });\n return data;\n }\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = value.call(parent, parent && parent.__data__, j, parents),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n};\n\nvar selection_exit = function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n};\n\nvar selection_merge = function(selection) {\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n};\n\nvar selection_order = function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n};\n\nvar selection_sort = function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n};\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\nvar selection_call = function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n};\n\nvar selection_nodes = function() {\n var nodes = new Array(this.size()), i = -1;\n this.each(function() { nodes[++i] = this; });\n return nodes;\n};\n\nvar selection_node = function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n};\n\nvar selection_size = function() {\n var size = 0;\n this.each(function() { ++size; });\n return size;\n};\n\nvar selection_empty = function() {\n return !this.node();\n};\n\nvar selection_each = function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n};\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nvar selection_attr = function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n};\n\nvar defaultView = function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n};\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nvar selection_style = function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n};\n\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nvar selection_property = function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n};\n\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nvar selection_classed = function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n};\n\nfunction textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nvar selection_text = function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n};\n\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nvar selection_html = function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n};\n\nfunction raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nvar selection_raise = function() {\n return this.each(raise);\n};\n\nfunction lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nvar selection_lower = function() {\n return this.each(lower);\n};\n\nvar selection_append = function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n};\n\nfunction constantNull() {\n return null;\n}\n\nvar selection_insert = function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n};\n\nfunction remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nvar selection_remove = function() {\n return this.each(remove);\n};\n\nvar selection_datum = function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n};\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nvar selection_dispatch = function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n};\n\nvar root = [null];\n\nfunction Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n merge: selection_merge,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch\n};\n\nvar select = function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n};\n\nvar selectAll = function(selector) {\n return typeof selector === \"string\"\n ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n : new Selection([selector == null ? [] : selector], root);\n};\n\nvar touch = function(node, touches, identifier) {\n if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n if ((touch = touches[i]).identifier === identifier) {\n return point(node, touch);\n }\n }\n\n return null;\n};\n\nvar touches = function(node, touches) {\n if (touches == null) touches = sourceEvent().touches;\n\n for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n points[i] = point(node, touches[i]);\n }\n\n return points;\n};\n\nexports.creator = creator;\nexports.local = local;\nexports.matcher = matcher$1;\nexports.mouse = mouse;\nexports.namespace = namespace;\nexports.namespaces = namespaces;\nexports.select = select;\nexports.selectAll = selectAll;\nexports.selection = selection;\nexports.selector = selector;\nexports.selectorAll = selectorAll;\nexports.style = styleValue;\nexports.touch = touch;\nexports.touches = touches;\nexports.window = defaultView;\nexports.customEvent = customEvent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-selection/build/d3-selection.js\n// module id = 12\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-transition/ Version 1.1.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-dispatch'), require('d3-timer'), require('d3-interpolate'), require('d3-color'), require('d3-ease')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-dispatch', 'd3-timer', 'd3-interpolate', 'd3-color', 'd3-ease'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));\n}(this, (function (exports,d3Selection,d3Dispatch,d3Timer,d3Interpolate,d3Color,d3Ease) { 'use strict';\n\nvar emptyOn = d3Dispatch.dispatch(\"start\", \"end\", \"interrupt\");\nvar emptyTween = [];\n\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\n\nvar schedule = function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n};\n\nfunction init(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > CREATED) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction set(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id]) || schedule.state > STARTING) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"too late\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = d3Timer.timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return d3Timer.timeout(start);\n\n // Interrupt the active transition, if any.\n // Dispatch the interrupt event.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions. No interrupt event is dispatched\n // because the cancelled transitions never started. Note that this also\n // removes this transition from the pending list!\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n d3Timer.timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(null, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n\nvar interrupt = function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n if (active) schedule.on.call(\"interrupt\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n};\n\nvar selection_interrupt = function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n};\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nvar transition_tween = function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n};\n\nfunction tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n\nvar interpolate = function(a, b) {\n var c;\n return (typeof b === \"number\" ? d3Interpolate.interpolateNumber\n : b instanceof d3Color.color ? d3Interpolate.interpolateRgb\n : (c = d3Color.color(b)) ? (b = c, d3Interpolate.interpolateRgb)\n : d3Interpolate.interpolateString)(a, b);\n};\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttribute(name);\n value0 = this.getAttribute(name);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0, value1 = value(this);\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n value0 = this.getAttributeNS(fullname.space, fullname.local);\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nvar transition_attr = function(name, value) {\n var fullname = d3Selection.namespace(name), i = fullname === \"transform\" ? d3Interpolate.interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value + \"\"));\n};\n\nfunction attrTweenNS(fullname, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttributeNS(fullname.space, fullname.local, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.setAttribute(name, i(t));\n };\n }\n tween._value = value;\n return tween;\n}\n\nvar transition_attrTween = function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = d3Selection.namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n};\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nvar transition_delay = function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n};\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nvar transition_duration = function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n};\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nvar transition_ease = function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n};\n\nvar transition_filter = function(match) {\n if (typeof match !== \"function\") match = d3Selection.matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n};\n\nvar transition_merge = function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n};\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nvar transition_on = function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n};\n\nfunction removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nvar transition_remove = function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n};\n\nvar transition_select = function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = d3Selection.selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n};\n\nvar transition_selectAll = function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = d3Selection.selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n};\n\nvar Selection = d3Selection.selection.prototype.constructor;\n\nvar transition_selection = function() {\n return new Selection(this._groups, this._parents);\n};\n\nfunction styleRemove(name, interpolate$$1) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name),\n value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nfunction styleRemoveEnd(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate$$1, value1) {\n var value00,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name);\n return value0 === value1 ? null\n : value0 === value00 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate$$1, value) {\n var value00,\n value10,\n interpolate0;\n return function() {\n var value0 = d3Selection.style(this, name),\n value1 = value(this);\n if (value1 == null) value1 = (this.style.removeProperty(name), d3Selection.style(this, name));\n return value0 === value1 ? null\n : value0 === value00 && value1 === value10 ? interpolate0\n : interpolate0 = interpolate$$1(value00 = value0, value10 = value1);\n };\n}\n\nvar transition_style = function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? d3Interpolate.interpolateTransformCss : interpolate;\n return value == null ? this\n .styleTween(name, styleRemove(name, i))\n .on(\"end.style.\" + name, styleRemoveEnd(name))\n : this.styleTween(name, typeof value === \"function\"\n ? styleFunction(name, i, tweenValue(this, \"style.\" + name, value))\n : styleConstant(name, i, value + \"\"), priority);\n};\n\nfunction styleTween(name, value, priority) {\n function tween() {\n var node = this, i = value.apply(node, arguments);\n return i && function(t) {\n node.style.setProperty(name, i(t), priority);\n };\n }\n tween._value = value;\n return tween;\n}\n\nvar transition_styleTween = function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n};\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nvar transition_text = function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n};\n\nvar transition_transition = function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n};\n\nvar id = 0;\n\nfunction Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nfunction transition(name) {\n return d3Selection.selection().transition(name);\n}\n\nfunction newId() {\n return ++id;\n}\n\nvar selection_prototype = d3Selection.selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease\n};\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: d3Ease.easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n return defaultTiming.time = d3Timer.now(), defaultTiming;\n }\n }\n return timing;\n}\n\nvar selection_transition = function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = d3Timer.now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n};\n\nd3Selection.selection.prototype.interrupt = selection_interrupt;\nd3Selection.selection.prototype.transition = selection_transition;\n\nvar root = [null];\n\nvar active = function(node, name) {\n var schedules = node.__transition,\n schedule,\n i;\n\n if (schedules) {\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n return new Transition([[node]], root, name, +i);\n }\n }\n }\n\n return null;\n};\n\nexports.transition = transition;\nexports.active = active;\nexports.interrupt = interrupt;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-transition/build/d3-transition.js\n// module id = 13\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","// https://d3js.org/d3-timer/ Version 1.0.6. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar frame = 0;\nvar timeout = 0;\nvar interval = 0;\nvar pokeDelay = 1000;\nvar taskHead;\nvar taskTail;\nvar clockLast = 0;\nvar clockNow = 0;\nvar clockSkew = 0;\nvar clock = typeof performance === \"object\" && performance.now ? performance : Date;\nvar setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nfunction Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nfunction timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nfunction timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow;\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, delay);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clockNow, interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n\nvar timeout$1 = function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(function(elapsed) {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n};\n\nvar interval$1 = function(callback, delay, time) {\n var t = new Timer, total = delay;\n if (delay == null) return t.restart(callback, delay, time), t;\n delay = +delay, time = time == null ? now() : +time;\n t.restart(function tick(elapsed) {\n elapsed += total;\n t.restart(tick, total += delay, time);\n callback(elapsed);\n }, delay, time);\n return t;\n};\n\nexports.now = now;\nexports.timer = timer;\nexports.timerFlush = timerFlush;\nexports.timeout = timeout$1;\nexports.interval = interval$1;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-timer/build/d3-timer.js\n// module id = 14\n// module chunks = 0 1 3 4 5 6 7 8 9 10 11 12","define(function(require) {\n 'use strict';\n\n const {colorSchemas} = require('./colors.js');\n const constants = require('./constants.js');\n const serializeWithStyles = require('./serializeWithStyles.js');\n\n let encoder = window.btoa;\n\n if (!encoder) {\n encoder = require('base-64').encode;\n }\n\n // Base64 doesn't work really well with Unicode strings, so we need to use this function\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n const b64EncodeUnicode = (str) => {\n return encoder(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {\n return String.fromCharCode('0x' + p1);\n }));\n };\n\n const config = {\n styleClass : 'britechartStyle',\n defaultFilename: 'britechart.png',\n chartBackground: 'white',\n imageSourceBase: 'data:image/svg+xml;base64,',\n titleFontSize: '15px',\n titleFontFamily: '\\'Benton Sans\\', sans-serif',\n titleTopOffset: 30,\n get styleBackgroundString () {\n return ``;\n }\n };\n\n /**\n * Main function to be used as a method by chart instances to export charts to png\n * @param {array} svgs (or an svg element) pass in both chart & legend as array or just chart as svg or in array\n * @param {string} filename [download to be called .png]\n * @param {string} title Title for the image\n */\n function exportChart(d3svg, filename, title) {\n let img = createImage(convertSvgToHtml.call(this, d3svg, title));\n\n img.onload = handleImageLoad.bind(\n img,\n createCanvas(this.width(), this.height()),\n filename\n );\n }\n\n /**\n * adds background styles to raw html\n * @param {string} html raw html\n */\n function addBackground(html) {\n return html.replace('>',`>${config.styleBackgroundString}`);\n }\n\n /**\n * takes d3 svg el, adds proper svg tags, adds inline styles\n * from stylesheets, adds white background and returns string\n * @param {object} d3svg TYPE d3 svg element\n * @return {string} string of passed d3\n */\n function convertSvgToHtml (d3svg, title) {\n if (!d3svg) {\n return;\n }\n\n d3svg.attr('version', 1.1)\n .attr('xmlns', 'http://www.w3.org/2000/svg');\n let serializer = serializeWithStyles.initializeSerializer();\n let html = serializer(d3svg.node());\n\n html = formatHtmlByBrowser(html);\n html = prependTitle.call(this, html, title, parseInt(d3svg.attr('width'), 10));\n html = addBackground(html);\n\n return html;\n }\n\n /**\n * Create Canvas\n * @param {number} width\n * @param {number} height\n * @return {object} TYPE canvas element\n */\n function createCanvas(width, height) {\n let canvas = document.createElement('canvas');\n\n canvas.height = height;\n canvas.width = width;\n\n return canvas;\n }\n\n /**\n * Create Image\n * @param {string} svgHtml string representation of svg el\n * @return {object} TYPE element , src points at svg\n */\n function createImage(svgHtml) {\n let img = new Image();\n\n img.src = `${config.imageSourceBase}${ b64EncodeUnicode(svgHtml) }`;\n\n return img;\n };\n\n /**\n * Draws image on canvas\n * @param {object} image TYPE:el , to be drawn\n * @param {object} canvas TYPE: el , to draw on\n */\n function drawImageOnCanvas(image, canvas) {\n canvas.getContext('2d').drawImage(image, 0, 0);\n\n return canvas;\n }\n\n /**\n * Triggers browser to download image, convert canvas to url,\n * we need to append the link el to the dom before clicking it for Firefox to register\n * point at it and trigger click\n * @param {object} canvas TYPE: el \n * @param {string} filename\n * @param {string} extensionType\n */\n function downloadCanvas(canvas, filename=config.defaultFilename, extensionType='image/png') {\n let url = canvas.toDataURL(extensionType);\n let link = document.createElement('a');\n\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n\n /**\n * Some browsers need special formatting, we handle that here\n * @param {string} html string of svg html\n * @return {string} string of svg html\n */\n function formatHtmlByBrowser(html) {\n if (navigator.userAgent.search('FireFox') > -1) {\n return html.replace(/url.*"\\)/, `url("#${constants.lineGradientId}");`);\n }\n\n return html;\n }\n\n /**\n * Handles on load event fired by img.onload, this=img\n * @param {object} canvas TYPE: el \n * @param {string} filename\n * @param {object} e\n */\n function handleImageLoad(canvas, filename, e) {\n e.preventDefault();\n\n downloadCanvas(drawImageOnCanvas(this, canvas), filename);\n }\n\n /**\n * if passed, append title to the raw html to appear on graph\n * @param {string} html raw html string\n * @param {string} title title of the graph\n * @param {number} svgWidth width of graph container\n * @return {string} raw html with title prepended\n */\n function prependTitle(html, title, svgWidth) {\n if (!title || !svgWidth) {\n return html;\n }\n let {grey} = colorSchemas;\n \n html = html.replace(/ ${title} {\n if (!noStyleTags[name]) {\n defaultStylesByTagName[name] = computeDefaultStyleByTagName(name);\n }\n });\n\n function computeDefaultStyleByTagName(tagName) {\n let defaultStyle = {},\n element = document.body.appendChild(document.createElement(tagName)),\n computedStyle = window.getComputedStyle(element);\n\n [].forEach.call(computedStyle, (style) => {\n defaultStyle[style] = computedStyle[style];\n });\n document.body.removeChild(element);\n return defaultStyle;\n }\n\n function getDefaultStyleByTagName (tagName) {\n tagName = tagName.toUpperCase();\n if (!defaultStylesByTagName[tagName]) {\n defaultStylesByTagName[tagName] = computeDefaultStyleByTagName(tagName);\n }\n return defaultStylesByTagName[tagName];\n };\n\n function serializeWithStyles(elem) {\n\n let cssTexts = [],\n elements,\n computedStyle,\n defaultStyle,\n result;\n\n if (!elem || elem.nodeType !== Node.ELEMENT_NODE) {\n // 'Error: Object passed in to serializeWithSyles not of nodeType Node.ELEMENT_NODE'\n \n return;\n }\n\n cssTexts = [];\n elements = elem.querySelectorAll('*');\n\n [].forEach.call(elements, (el, i) => {\n if (!noStyleTags[el.tagName]) {\n computedStyle = window.getComputedStyle(el);\n defaultStyle = getDefaultStyleByTagName(el.tagName);\n cssTexts[i] = el.style.cssText;\n [].forEach.call(computedStyle, (cssPropName) => {\n if (computedStyle[cssPropName] !== defaultStyle[cssPropName]) {\n el.style[cssPropName] = computedStyle[cssPropName];\n }\n });\n }\n });\n\n result = elem.outerHTML;\n elements = [].map.call(elements, (el, i) => {\n el.style.cssText = cssTexts[i];\n return el;\n });\n\n return result;\n\n };\n\n return serializeWithStyles;\n }\n }\n})();\n\n\n// WEBPACK FOOTER //\n// ./src/charts/helpers/serializeWithStyles.js","/*! http://mths.be/base64 v0.1.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar d;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '0.1.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/base-64/base64.js\n// module id = 20\n// module chunks = 0 3 4 6 8 9 10 11","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 21\n// module chunks = 0 3 4 6 8 9 10 11","// https://d3js.org/d3-shape/ Version 1.2.0. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-path')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'd3-path'], factory) :\n\t(factory((global.d3 = global.d3 || {}),global.d3));\n}(this, (function (exports,d3Path) { 'use strict';\n\nvar constant = function(x) {\n return function constant() {\n return x;\n };\n};\n\nvar abs = Math.abs;\nvar atan2 = Math.atan2;\nvar cos = Math.cos;\nvar max = Math.max;\nvar min = Math.min;\nvar sin = Math.sin;\nvar sqrt = Math.sqrt;\n\nvar epsilon = 1e-12;\nvar pi = Math.PI;\nvar halfPi = pi / 2;\nvar tau = 2 * pi;\n\nfunction acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nfunction asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / (y32 * x10 - x32 * y10);\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nvar arc = function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = d3Path.path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00);\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi) {\n var oc = da0 > epsilon ? intersect(x01, y01, x00, y00, x11, y11, x10, y10) : [x10, y10],\n ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n};\n\nfunction Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nvar curveLinear = function(context) {\n return new Linear(context);\n};\n\nfunction x(p) {\n return p[0];\n}\n\nfunction y(p) {\n return p[1];\n}\n\nvar line = function() {\n var x$$1 = x,\n y$$1 = y,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function line(data) {\n var i,\n n = data.length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = d3Path.path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x$$1(d, i, data), +y$$1(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant(+_), line) : x$$1;\n };\n\n line.y = function(_) {\n return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant(+_), line) : y$$1;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n};\n\nvar area = function() {\n var x0 = x,\n x1 = null,\n y0 = constant(0),\n y1 = y,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n function area(data) {\n var i,\n j,\n k,\n n = data.length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = d3Path.path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n};\n\nvar descending = function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n};\n\nvar identity = function(d) {\n return d;\n};\n\nvar pie = function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = data.length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n};\n\nvar curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nfunction curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n\nfunction lineRadial(l) {\n var c = l.curve;\n\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n\n l.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return l;\n}\n\nvar lineRadial$1 = function() {\n return lineRadial(line().curve(curveRadialLinear));\n};\n\nvar areaRadial = function() {\n var a = area().curve(curveRadialLinear),\n c = a.curve,\n x0 = a.lineX0,\n x1 = a.lineX1,\n y0 = a.lineY0,\n y1 = a.lineY1;\n\n a.angle = a.x, delete a.x;\n a.startAngle = a.x0, delete a.x0;\n a.endAngle = a.x1, delete a.x1;\n a.radius = a.y, delete a.y;\n a.innerRadius = a.y0, delete a.y0;\n a.outerRadius = a.y1, delete a.y1;\n a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n a.curve = function(_) {\n return arguments.length ? c(curveRadial(_)) : c()._curve;\n };\n\n return a;\n};\n\nvar pointRadial = function(x, y) {\n return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n};\n\nvar slice = Array.prototype.slice;\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nfunction link(curve) {\n var source = linkSource,\n target = linkTarget,\n x$$1 = x,\n y$$1 = y,\n context = null;\n\n function link() {\n var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n if (!context) context = buffer = d3Path.path();\n curve(context, +x$$1.apply(this, (argv[0] = s, argv)), +y$$1.apply(this, argv), +x$$1.apply(this, (argv[0] = t, argv)), +y$$1.apply(this, argv));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x$$1 = typeof _ === \"function\" ? _ : constant(+_), link) : x$$1;\n };\n\n link.y = function(_) {\n return arguments.length ? (y$$1 = typeof _ === \"function\" ? _ : constant(+_), link) : y$$1;\n };\n\n link.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), link) : context;\n };\n\n return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n context.moveTo(x0, y0);\n context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial$1(context, x0, y0, x1, y1) {\n var p0 = pointRadial(x0, y0),\n p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n p2 = pointRadial(x1, y0),\n p3 = pointRadial(x1, y1);\n context.moveTo(p0[0], p0[1]);\n context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nfunction linkHorizontal() {\n return link(curveHorizontal);\n}\n\nfunction linkVertical() {\n return link(curveVertical);\n}\n\nfunction linkRadial() {\n var l = link(curveRadial$1);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n\nvar circle = {\n draw: function(context, size) {\n var r = Math.sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n\nvar cross = {\n draw: function(context, size) {\n var r = Math.sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n\nvar tan30 = Math.sqrt(1 / 3);\nvar tan30_2 = tan30 * 2;\n\nvar diamond = {\n draw: function(context, size) {\n var y = Math.sqrt(size / tan30_2),\n x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n\nvar ka = 0.89081309152928522810;\nvar kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10);\nvar kx = Math.sin(tau / 10) * kr;\nvar ky = -Math.cos(tau / 10) * kr;\n\nvar star = {\n draw: function(context, size) {\n var r = Math.sqrt(size * ka),\n x = kx * r,\n y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (var i = 1; i < 5; ++i) {\n var a = tau * i / 5,\n c = Math.cos(a),\n s = Math.sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n\nvar square = {\n draw: function(context, size) {\n var w = Math.sqrt(size),\n x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n\nvar sqrt3 = Math.sqrt(3);\n\nvar triangle = {\n draw: function(context, size) {\n var y = -Math.sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n\nvar c = -0.5;\nvar s = Math.sqrt(3) / 2;\nvar k = 1 / Math.sqrt(12);\nvar a = (k / 2 + 1) * 3;\n\nvar wye = {\n draw: function(context, size) {\n var r = Math.sqrt(size / a),\n x0 = r / 2,\n y0 = r * k,\n x1 = x0,\n y1 = r * k + r,\n x2 = -x1,\n y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n\nvar symbols = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\nvar symbol = function() {\n var type = constant(circle),\n size = constant(64),\n context = null;\n\n function symbol() {\n var buffer;\n if (!context) context = buffer = d3Path.path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n};\n\nvar noop = function() {};\n\nfunction point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nfunction Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // proceed\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nvar basis = function(context) {\n return new Basis(context);\n};\n\nfunction BasisClosed(context) {\n this._context = context;\n}\n\nBasisClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x2, this._y2);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x2, this._y2);\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nvar basisClosed = function(context) {\n return new BasisClosed(context);\n};\n\nfunction BasisOpen(context) {\n this._context = context;\n}\n\nBasisOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n case 3: this._point = 4; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nvar basisOpen = function(context) {\n return new BasisOpen(context);\n};\n\nfunction Bundle(context, beta) {\n this._basis = new Basis(context);\n this._beta = beta;\n}\n\nBundle.prototype = {\n lineStart: function() {\n this._x = [];\n this._y = [];\n this._basis.lineStart();\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n j = x.length - 1;\n\n if (j > 0) {\n var x0 = x[0],\n y0 = y[0],\n dx = x[j] - x0,\n dy = y[j] - y0,\n i = -1,\n t;\n\n while (++i <= j) {\n t = i / j;\n this._basis.point(\n this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n );\n }\n }\n\n this._x = this._y = null;\n this._basis.lineEnd();\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\nvar bundle = ((function custom(beta) {\n\n function bundle(context) {\n return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n }\n\n bundle.beta = function(beta) {\n return custom(+beta);\n };\n\n return bundle;\n}))(0.85);\n\nfunction point$1(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nfunction Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point$1(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point$1(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar cardinal = ((function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}))(0);\n\nfunction CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point$1(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar cardinalClosed = ((function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}))(0);\n\nfunction CardinalOpen(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point$1(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar cardinalOpen = ((function custom(tension) {\n\n function cardinal(context) {\n return new CardinalOpen(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n}))(0);\n\nfunction point$2(that, x, y) {\n var x1 = that._x1,\n y1 = that._y1,\n x2 = that._x2,\n y2 = that._y2;\n\n if (that._l01_a > epsilon) {\n var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n }\n\n if (that._l23_a > epsilon) {\n var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n }\n\n that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: this.point(this._x2, this._y2); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; // proceed\n default: point$2(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar catmullRom = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}))(0.5);\n\nfunction CatmullRomClosed(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point$2(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar catmullRomClosed = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}))(0.5);\n\nfunction CatmullRomOpen(context, alpha) {\n this._context = context;\n this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._l01_a = this._l12_a = this._l23_a =\n this._l01_2a = this._l12_2a = this._l23_2a =\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n\n if (this._point) {\n var x23 = this._x2 - x,\n y23 = this._y2 - y;\n this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n }\n\n switch (this._point) {\n case 0: this._point = 1; break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n case 3: this._point = 4; // proceed\n default: point$2(this, x, y); break;\n }\n\n this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nvar catmullRomOpen = ((function custom(alpha) {\n\n function catmullRom(context) {\n return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n }\n\n catmullRom.alpha = function(alpha) {\n return custom(+alpha);\n };\n\n return catmullRom;\n}))(0.5);\n\nfunction LinearClosed(context) {\n this._context = context;\n}\n\nLinearClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._point) this._context.closePath();\n },\n point: function(x, y) {\n x = +x, y = +y;\n if (this._point) this._context.lineTo(x, y);\n else this._point = 1, this._context.moveTo(x, y);\n }\n};\n\nvar linearClosed = function(context) {\n return new LinearClosed(context);\n};\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point$3(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point$3(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point$3(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point$3(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n};\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nfunction monotoneX(context) {\n return new MonotoneX(context);\n}\n\nfunction monotoneY(context) {\n return new MonotoneY(context);\n}\n\nfunction Natural(context) {\n this._context = context;\n}\n\nNatural.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = [];\n this._y = [];\n },\n lineEnd: function() {\n var x = this._x,\n y = this._y,\n n = x.length;\n\n if (n) {\n this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n if (n === 2) {\n this._context.lineTo(x[1], y[1]);\n } else {\n var px = controlPoints(x),\n py = controlPoints(y);\n for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n }\n }\n }\n\n if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n this._line = 1 - this._line;\n this._x = this._y = null;\n },\n point: function(x, y) {\n this._x.push(+x);\n this._y.push(+y);\n }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n var i,\n n = x.length - 1,\n m,\n a = new Array(n),\n b = new Array(n),\n r = new Array(n);\n a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n a[n - 1] = r[n - 1] / b[n - 1];\n for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n b[n - 1] = (x[n] + a[n - 1]) / 2;\n for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n return [a, b];\n}\n\nvar natural = function(context) {\n return new Natural(context);\n};\n\nfunction Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nvar step = function(context) {\n return new Step(context, 0.5);\n};\n\nfunction stepBefore(context) {\n return new Step(context, 0);\n}\n\nfunction stepAfter(context) {\n return new Step(context, 1);\n}\n\nvar none = function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n s0 = s1, s1 = series[order[i]];\n for (j = 0; j < m; ++j) {\n s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n }\n }\n};\n\nvar none$1 = function(series) {\n var n = series.length, o = new Array(n);\n while (--n >= 0) o[n] = n;\n return o;\n};\n\nfunction stackValue(d, key) {\n return d[key];\n}\n\nvar stack = function() {\n var keys = constant([]),\n order = none$1,\n offset = none,\n value = stackValue;\n\n function stack(data) {\n var kz = keys.apply(this, arguments),\n i,\n m = data.length,\n n = kz.length,\n sz = new Array(n),\n oz;\n\n for (i = 0; i < n; ++i) {\n for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n si[j] = sij = [0, +value(data[j], ki, j, data)];\n sij.data = data[j];\n }\n si.key = ki;\n }\n\n for (i = 0, oz = order(sz); i < n; ++i) {\n sz[oz[i]].index = i;\n }\n\n offset(sz, oz);\n return sz;\n }\n\n stack.keys = function(_) {\n return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n };\n\n stack.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n };\n\n stack.order = function(_) {\n return arguments.length ? (order = _ == null ? none$1 : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n };\n\n stack.offset = function(_) {\n return arguments.length ? (offset = _ == null ? none : _, stack) : offset;\n };\n\n return stack;\n};\n\nvar expand = function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n }\n none(series, order);\n};\n\nvar diverging = function(series, order) {\n if (!((n = series.length) > 1)) return;\n for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n } else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n } else {\n d[0] = yp;\n }\n }\n }\n};\n\nvar silhouette = function(series, order) {\n if (!((n = series.length) > 0)) return;\n for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n s0[j][1] += s0[j][0] = -y / 2;\n }\n none(series, order);\n};\n\nvar wiggle = function(series, order) {\n if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n var si = series[order[i]],\n sij0 = si[j][1] || 0,\n sij1 = si[j - 1][1] || 0,\n s3 = (sij0 - sij1) / 2;\n for (var k = 0; k < i; ++k) {\n var sk = series[order[k]],\n skj0 = sk[j][1] || 0,\n skj1 = sk[j - 1][1] || 0;\n s3 += skj0 - skj1;\n }\n s1 += sij0, s2 += s3 * sij0;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n if (s1) y -= s2 / s1;\n }\n s0[j - 1][1] += s0[j - 1][0] = y;\n none(series, order);\n};\n\nvar ascending = function(series) {\n var sums = series.map(sum);\n return none$1(series).sort(function(a, b) { return sums[a] - sums[b]; });\n};\n\nfunction sum(series) {\n var s = 0, i = -1, n = series.length, v;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n\nvar descending$1 = function(series) {\n return ascending(series).reverse();\n};\n\nvar insideOut = function(series) {\n var n = series.length,\n i,\n j,\n sums = series.map(sum),\n order = none$1(series).sort(function(a, b) { return sums[b] - sums[a]; }),\n top = 0,\n bottom = 0,\n tops = [],\n bottoms = [];\n\n for (i = 0; i < n; ++i) {\n j = order[i];\n if (top < bottom) {\n top += sums[j];\n tops.push(j);\n } else {\n bottom += sums[j];\n bottoms.push(j);\n }\n }\n\n return bottoms.reverse().concat(tops);\n};\n\nvar reverse = function(series) {\n return none$1(series).reverse();\n};\n\nexports.arc = arc;\nexports.area = area;\nexports.line = line;\nexports.pie = pie;\nexports.areaRadial = areaRadial;\nexports.radialArea = areaRadial;\nexports.lineRadial = lineRadial$1;\nexports.radialLine = lineRadial$1;\nexports.pointRadial = pointRadial;\nexports.linkHorizontal = linkHorizontal;\nexports.linkVertical = linkVertical;\nexports.linkRadial = linkRadial;\nexports.symbol = symbol;\nexports.symbols = symbols;\nexports.symbolCircle = circle;\nexports.symbolCross = cross;\nexports.symbolDiamond = diamond;\nexports.symbolSquare = square;\nexports.symbolStar = star;\nexports.symbolTriangle = triangle;\nexports.symbolWye = wye;\nexports.curveBasisClosed = basisClosed;\nexports.curveBasisOpen = basisOpen;\nexports.curveBasis = basis;\nexports.curveBundle = bundle;\nexports.curveCardinalClosed = cardinalClosed;\nexports.curveCardinalOpen = cardinalOpen;\nexports.curveCardinal = cardinal;\nexports.curveCatmullRomClosed = catmullRomClosed;\nexports.curveCatmullRomOpen = catmullRomOpen;\nexports.curveCatmullRom = catmullRom;\nexports.curveLinearClosed = linearClosed;\nexports.curveLinear = curveLinear;\nexports.curveMonotoneX = monotoneX;\nexports.curveMonotoneY = monotoneY;\nexports.curveNatural = natural;\nexports.curveStep = step;\nexports.curveStepAfter = stepAfter;\nexports.curveStepBefore = stepBefore;\nexports.stack = stack;\nexports.stackOffsetExpand = expand;\nexports.stackOffsetDiverging = diverging;\nexports.stackOffsetNone = none;\nexports.stackOffsetSilhouette = silhouette;\nexports.stackOffsetWiggle = wiggle;\nexports.stackOrderAscending = ascending;\nexports.stackOrderDescending = descending$1;\nexports.stackOrderInsideOut = insideOut;\nexports.stackOrderNone = none$1;\nexports.stackOrderReverse = reverse;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-shape/build/d3-shape.js\n// module id = 24\n// module chunks = 1 3 6 8 9 10","// https://d3js.org/d3-path/ Version 1.0.5. Copyright 2017 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.d3 = global.d3 || {})));\n}(this, (function (exports) { 'use strict';\n\nvar pi = Math.PI;\nvar tau = 2 * pi;\nvar epsilon = 1e-6;\nvar tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon)) {}\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexports.path = path;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/d3-path/build/d3-path.js\n// module id = 25\n// module chunks = 1 3 6 8 9 10","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash.assign/index.js\n// module id = 28\n// module chunks = 4 9 10"],"sourceRoot":""}