{"version":3,"sources":["webpack:///./node_modules/d3/dist/package.js","webpack:///./node_modules/d3-array/src/extent.js","webpack:///./node_modules/d3-array/src/max.js","webpack:///./node_modules/d3-axis/src/array.js","webpack:///./node_modules/d3-axis/src/identity.js","webpack:///./node_modules/d3-axis/src/axis.js","webpack:///./node_modules/d3-dispatch/src/dispatch.js","webpack:///./node_modules/d3-selection/src/selector.js","webpack:///./node_modules/d3-selection/src/selection/select.js","webpack:///./node_modules/d3-selection/src/array.js","webpack:///./node_modules/d3-selection/src/selectorAll.js","webpack:///./node_modules/d3-selection/src/selection/selectAll.js","webpack:///./node_modules/d3-selection/src/matcher.js","webpack:///./node_modules/d3-selection/src/selection/selectChild.js","webpack:///./node_modules/d3-selection/src/selection/selectChildren.js","webpack:///./node_modules/d3-selection/src/selection/filter.js","webpack:///./node_modules/d3-selection/src/selection/sparse.js","webpack:///./node_modules/d3-selection/src/selection/enter.js","webpack:///./node_modules/d3-selection/src/constant.js","webpack:///./node_modules/d3-selection/src/selection/data.js","webpack:///./node_modules/d3-selection/src/selection/exit.js","webpack:///./node_modules/d3-selection/src/selection/join.js","webpack:///./node_modules/d3-selection/src/selection/merge.js","webpack:///./node_modules/d3-selection/src/selection/order.js","webpack:///./node_modules/d3-selection/src/selection/sort.js","webpack:///./node_modules/d3-selection/src/selection/call.js","webpack:///./node_modules/d3-selection/src/selection/nodes.js","webpack:///./node_modules/d3-selection/src/selection/node.js","webpack:///./node_modules/d3-selection/src/selection/size.js","webpack:///./node_modules/d3-selection/src/selection/empty.js","webpack:///./node_modules/d3-selection/src/selection/each.js","webpack:///./node_modules/d3-selection/src/namespaces.js","webpack:///./node_modules/d3-selection/src/namespace.js","webpack:///./node_modules/d3-selection/src/selection/attr.js","webpack:///./node_modules/d3-selection/src/window.js","webpack:///./node_modules/d3-selection/src/selection/style.js","webpack:///./node_modules/d3-selection/src/selection/property.js","webpack:///./node_modules/d3-selection/src/selection/classed.js","webpack:///./node_modules/d3-selection/src/selection/text.js","webpack:///./node_modules/d3-selection/src/selection/html.js","webpack:///./node_modules/d3-selection/src/selection/raise.js","webpack:///./node_modules/d3-selection/src/selection/lower.js","webpack:///./node_modules/d3-selection/src/creator.js","webpack:///./node_modules/d3-selection/src/selection/append.js","webpack:///./node_modules/d3-selection/src/selection/insert.js","webpack:///./node_modules/d3-selection/src/selection/remove.js","webpack:///./node_modules/d3-selection/src/selection/clone.js","webpack:///./node_modules/d3-selection/src/selection/datum.js","webpack:///./node_modules/d3-selection/src/selection/on.js","webpack:///./node_modules/d3-selection/src/selection/dispatch.js","webpack:///./node_modules/d3-selection/src/selection/iterator.js","webpack:///./node_modules/d3-selection/src/selection/index.js","webpack:///./node_modules/d3-selection/src/select.js","webpack:///./node_modules/d3-color/src/define.js","webpack:///./node_modules/d3-color/src/color.js","webpack:///./node_modules/d3-interpolate/src/basis.js","webpack:///./node_modules/d3-interpolate/src/basisClosed.js","webpack:///./node_modules/d3-interpolate/src/constant.js","webpack:///./node_modules/d3-interpolate/src/color.js","webpack:///./node_modules/d3-interpolate/src/rgb.js","webpack:///./node_modules/d3-interpolate/src/numberArray.js","webpack:///./node_modules/d3-interpolate/src/array.js","webpack:///./node_modules/d3-interpolate/src/date.js","webpack:///./node_modules/d3-interpolate/src/number.js","webpack:///./node_modules/d3-interpolate/src/object.js","webpack:///./node_modules/d3-interpolate/src/string.js","webpack:///./node_modules/d3-timer/src/timer.js","webpack:///./node_modules/d3-interpolate/src/value.js","webpack:///./node_modules/d3-timer/src/timeout.js","webpack:///./node_modules/d3-transition/src/transition/schedule.js","webpack:///./node_modules/d3-transition/src/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/parse.js","webpack:///./node_modules/d3-transition/src/selection/interrupt.js","webpack:///./node_modules/d3-interpolate/src/transform/decompose.js","webpack:///./node_modules/d3-interpolate/src/transform/index.js","webpack:///./node_modules/d3-transition/src/transition/tween.js","webpack:///./node_modules/d3-transition/src/transition/interpolate.js","webpack:///./node_modules/d3-transition/src/transition/attr.js","webpack:///./node_modules/d3-transition/src/transition/attrTween.js","webpack:///./node_modules/d3-transition/src/transition/delay.js","webpack:///./node_modules/d3-transition/src/transition/duration.js","webpack:///./node_modules/d3-transition/src/transition/ease.js","webpack:///./node_modules/d3-transition/src/transition/easeVarying.js","webpack:///./node_modules/d3-transition/src/transition/filter.js","webpack:///./node_modules/d3-transition/src/transition/merge.js","webpack:///./node_modules/d3-transition/src/transition/on.js","webpack:///./node_modules/d3-transition/src/transition/remove.js","webpack:///./node_modules/d3-transition/src/transition/select.js","webpack:///./node_modules/d3-transition/src/transition/selectAll.js","webpack:///./node_modules/d3-transition/src/transition/selection.js","webpack:///./node_modules/d3-transition/src/transition/style.js","webpack:///./node_modules/d3-transition/src/transition/styleTween.js","webpack:///./node_modules/d3-transition/src/transition/text.js","webpack:///./node_modules/d3-transition/src/transition/textTween.js","webpack:///./node_modules/d3-transition/src/transition/transition.js","webpack:///./node_modules/d3-transition/src/transition/end.js","webpack:///./node_modules/d3-transition/src/transition/index.js","webpack:///./node_modules/d3-ease/src/cubic.js","webpack:///./node_modules/d3-transition/src/selection/transition.js","webpack:///./node_modules/d3-transition/src/selection/index.js","webpack:///./node_modules/d3-brush/src/brush.js","webpack:///./node_modules/d3-array/src/range.js","webpack:///./node_modules/d3-scale/src/init.js","webpack:///./node_modules/d3-scale/src/ordinal.js","webpack:///./node_modules/d3-scale/src/band.js","webpack:///./node_modules/d3-array/src/ticks.js","webpack:///./node_modules/d3-array/src/ascending.js","webpack:///./node_modules/d3-array/src/bisector.js","webpack:///./node_modules/d3-array/src/number.js","webpack:///./node_modules/d3-array/src/bisect.js","webpack:///./node_modules/d3-interpolate/src/round.js","webpack:///./node_modules/d3-scale/src/constant.js","webpack:///./node_modules/d3-scale/src/number.js","webpack:///./node_modules/d3-scale/src/continuous.js","webpack:///./node_modules/d3-format/src/formatSpecifier.js","webpack:///./node_modules/d3-format/src/formatDecimal.js","webpack:///./node_modules/d3-format/src/exponent.js","webpack:///./node_modules/d3-format/src/formatPrefixAuto.js","webpack:///./node_modules/d3-format/src/defaultLocale.js","webpack:///./node_modules/d3-format/src/precisionPrefix.js","webpack:///./node_modules/d3-format/src/formatGroup.js","webpack:///./node_modules/d3-format/src/formatNumerals.js","webpack:///./node_modules/d3-format/src/formatTrim.js","webpack:///./node_modules/d3-format/src/formatRounded.js","webpack:///./node_modules/d3-format/src/formatTypes.js","webpack:///./node_modules/d3-format/src/identity.js","webpack:///./node_modules/d3-format/src/locale.js","webpack:///./node_modules/d3-format/src/precisionRound.js","webpack:///./node_modules/d3-format/src/precisionFixed.js","webpack:///./node_modules/d3-scale/src/tickFormat.js","webpack:///./node_modules/d3-scale/src/linear.js","webpack:///./node_modules/d3-time/src/duration.js","webpack:///./node_modules/d3-time/src/interval.js","webpack:///./node_modules/d3-time/src/millisecond.js","webpack:///./node_modules/d3-time/src/second.js","webpack:///./node_modules/d3-time/src/minute.js","webpack:///./node_modules/d3-time/src/hour.js","webpack:///./node_modules/d3-time/src/day.js","webpack:///./node_modules/d3-time/src/week.js","webpack:///./node_modules/d3-time/src/month.js","webpack:///./node_modules/d3-time/src/year.js","webpack:///./node_modules/d3-time/src/utcMinute.js","webpack:///./node_modules/d3-time/src/utcHour.js","webpack:///./node_modules/d3-time/src/utcDay.js","webpack:///./node_modules/d3-time/src/utcWeek.js","webpack:///./node_modules/d3-time/src/utcMonth.js","webpack:///./node_modules/d3-time/src/utcYear.js","webpack:///./node_modules/d3-time/src/ticks.js","webpack:///./node_modules/d3-time-format/src/locale.js","webpack:///./node_modules/d3-time-format/src/defaultLocale.js","webpack:///./node_modules/d3-scale/src/nice.js","webpack:///./node_modules/d3-scale/src/time.js","webpack:///./node_modules/d3-selection/src/create.js","webpack:///./node_modules/d3-path/src/path.js","webpack:///./node_modules/d3-shape/src/constant.js","webpack:///./node_modules/d3-shape/src/math.js","webpack:///./node_modules/d3-shape/src/arc.js","webpack:///./node_modules/d3-shape/src/array.js","webpack:///./node_modules/d3-shape/src/curve/linear.js","webpack:///./node_modules/d3-shape/src/point.js","webpack:///./node_modules/d3-shape/src/line.js","webpack:///./node_modules/d3-shape/src/area.js","webpack:///./node_modules/d3-shape/src/descending.js","webpack:///./node_modules/d3-shape/src/identity.js","webpack:///./node_modules/d3-shape/src/pie.js","webpack:///./node_modules/d3-shape/src/curve/monotone.js","webpack:///./node_modules/d3-interpolate/src/zoom.js","webpack:///./node_modules/d3-zoom/src/transform.js"],"names":["min","max","undefined","valueof","value","values","index","slice","Array","prototype","x","right","bottom","left","epsilon","translateX","translateY","y","number","scale","d","center","offset","Math","bandwidth","round","entering","this","__axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","window","devicePixelRatio","k","transform","axis","context","ticks","apply","domain","format","identity","spacing","range","range0","range1","length","position","copy","selection","path","selectAll","data","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","isFinite","getAttribute","p","parentNode","remove","filter","each","_","arguments","call","tickSize","axisBottom","axisLeft","noop","dispatch","t","i","n","test","Error","Dispatch","parseTypenames","typenames","types","trim","split","map","name","indexOf","hasOwnProperty","type","get","c","set","callback","concat","push","constructor","on","typename","T","that","args","none","selector","querySelector","groups","_groups","m","subgroups","j","node","subnode","group","subgroup","__data__","Selection","_parents","from","querySelectorAll","arrayAll","array","selectorAll","parents","matches","childMatcher","find","childFind","match","children","childFirst","firstElementChild","childrenFilter","matcher","update","_enter","sparse","EnterNode","parent","datum","ownerDocument","namespaceURI","_next","_parent","appendChild","child","insertBefore","next","bindIndex","groupLength","dataLength","bindKey","key","keyValue","nodeByKeyValue","Map","keyValues","has","delete","bind","constant","enterGroup","updateGroup","exitGroup","previous","i0","i1","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","a","b","compare","ascending","sortgroups","sortgroup","sort","NaN","size","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","namespace","getAttributeNS","defaultView","document","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","classedAdd","names","list","add","classedRemove","classedTrue","classedFalse","classedFunction","join","splice","contains","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","creatorInherit","uri","documentElement","createElement","createElementNS","creatorFixed","create","creator","constantNull","before","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","deep","property","contextListener","listener","event","onRemove","__on","o","removeEventListener","options","onAdd","addEventListener","dispatchEvent","params","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","selection_select","selectChild","selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_merge","selection_sort","nodes","selection_node","selection_size","empty","selection_empty","classed","selection_text","html","selection_raise","selection_lower","selection_remove","selection_datum","selection_on","selection_dispatch","Symbol","iterator","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","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","color_formatHex","rgb","formatHex","color_formatHsl","hslConvert","formatHsl","color_formatRgb","formatRgb","l","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","r","g","rgbConvert","opacity","rgb_formatHex","hex","rgb_formatRgb","isNaN","toString","h","s","Hsl","hsl","hsl2rgb","m2","basis","t1","v0","v1","v2","v3","t2","t3","define","channels","assign","displayable","pow","floor","linear","exponential","gamma","nogamma","color","start","end","rgbGamma","rgbSpline","spline","colors","basisClosed","isNumberArray","ArrayBuffer","isView","DataView","genericArray","nb","na","Date","setTime","reA","reB","source","one","taskHead","taskTail","am","bm","bs","bi","lastIndex","q","numberArray","isArray","valueOf","object","timeout","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","f","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","timerFlush","e","wake","nap","poke","t0","Infinity","sleep","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedules","__transition","id","tween","timing","duration","ease","state","init","schedule","self","svgNode","active","interrupt","degrees","PI","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","parseCss","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","parseSvg","baseVal","consolidate","matrix","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","inherit","styleNull","styleMaybeRemove","listener0","styleTween","styleInterpolate","textInterpolate","textTween","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","cubicInOut","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_easeVarying","transition_end","defaultTiming","selection_interrupt","selection_transition","abs","number1","number2","step","ceil","initRange","implicit","ordinal","unknown","band","ordinalRange","r0","r1","paddingInner","paddingOuter","align","rescale","reverse","rangeRound","padding","e10","e5","e2","count","tickIncrement","power","log","LN10","error","tickStep","step0","step1","delta","lo","hi","mid","ascendingComparator","ascendingBisect","bisector","bisectRight","bisect","constants","unit","normalize","clamper","bimap","d0","d1","polymap","target","clamp","transformer","untransform","piecewise","output","input","invert","u","continuous","re","formatSpecifier","specifier","FormatSpecifier","fill","sign","symbol","zero","width","comma","precision","toLocaleString","replace","formatDecimalParts","toExponential","coefficient","prefixExponent","grouping","substring","thousands","numerals","out","exponent","toFixed","formatDecimal","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","Number","currencyPrefix","currency","currencySuffix","decimal","formatNumerals","String","percent","minus","nan","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","charCodeAt","formatPrefix","defaultLocale","precisionPrefix","precisionRound","precisionFixed","linearish","nice","prestep","maxIter","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","newInterval","floori","offseti","field","interval","date","millisecond","getMilliseconds","getUTCSeconds","getSeconds","getMinutes","getHours","setHours","setDate","getDate","getTimezoneOffset","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","setMonth","getMonth","getFullYear","setFullYear","utcMinute","setUTCSeconds","getUTCMinutes","utcHour","setUTCMinutes","getUTCHours","utcDay","setUTCHours","setUTCDate","getUTCDate","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcMonth","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","ticker","year","month","week","day","hour","minute","tickIntervals","tickInterval","utcTicks","utcTickInterval","timeTicks","timeTickInterval","localDate","H","M","S","L","utcDate","UTC","newDate","formatLocale","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","days","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","pad","pads","charAt","newParse","Z","parseSpecifier","Q","V","w","W","U","X","utcFormat","utcParse","timeFormat","numberRe","percentRe","requoteRe","requote","dISO","z","getUTCMilliseconds","dow","UTCdISO","x0","x1","calendar","second","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatYear","pi","tau","tauEpsilon","Path","_x0","_y0","_x1","_y1","moveTo","closePath","lineTo","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","dx","cos","dy","sin","cw","da","rect","halfPi","asin","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","startAngle","arcEndAngle","endAngle","arcPadAngle","padAngle","intersect","x3","y3","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","x00","y00","d2","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cx","cy","cornerRadius","padRadius","buffer","a01","a11","a00","a10","da0","da1","ap","rp","rc0","rc1","p0","p1","oc","ax","ay","bx","by","kc","lc","centroid","Linear","_context","areaStart","_line","areaEnd","lineStart","_point","lineEnd","point","defined","curve","defined0","area","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","sortValues","descending","pie","sum","arcs","pa","slope3","h0","h1","s0","s1","slope2","MonotoneX","MonotoneY","ReflectContext","monotoneX","_t0","epsilon2","cosh","exp","sinh","tanh","zoom","ux0","uy0","w0","ux1","uy1","w1","rho","b0","rho4","rho2","b1","coshr0","SQRT2","_1","_2","_4","zoomRho","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom"],"mappings":"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","file":"js/chunk-2d0c8a76.bf5178f2.js","sourcesContent":["export var name = \"d3\";\nexport var version = \"6.7.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v${npm_package_version%%.*}.js && cp ../d3/dist/d3.min.js d3.v${npm_package_version%%.*}.min.js && git add d3.v${npm_package_version%%.*}.js d3.v${npm_package_version%%.*}.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"3\",\"rollup\":\"2\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"5\",\"rollup-plugin-terser\":\"7\",\"tape\":\"4\",\"tape-await\":\"0.1\"};\nexport var dependencies = {\"d3-array\":\"2\",\"d3-axis\":\"2\",\"d3-brush\":\"2\",\"d3-chord\":\"2\",\"d3-color\":\"2\",\"d3-contour\":\"2\",\"d3-delaunay\":\"5\",\"d3-dispatch\":\"2\",\"d3-drag\":\"2\",\"d3-dsv\":\"2\",\"d3-ease\":\"2\",\"d3-fetch\":\"2\",\"d3-force\":\"2\",\"d3-format\":\"2\",\"d3-geo\":\"2\",\"d3-hierarchy\":\"2\",\"d3-interpolate\":\"2\",\"d3-path\":\"2\",\"d3-polygon\":\"2\",\"d3-quadtree\":\"2\",\"d3-random\":\"2\",\"d3-scale\":\"3\",\"d3-scale-chromatic\":\"2\",\"d3-selection\":\"2\",\"d3-shape\":\"2\",\"d3-time\":\"2\",\"d3-time-format\":\"3\",\"d3-timer\":\"2\",\"d3-transition\":\"2\",\"d3-zoom\":\"2\"};\n","export default function(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n return x;\n}\n","import {slice} from \"./array.js\";\nimport identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\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 offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\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] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\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\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\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 + offset) : 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)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\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 axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) 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\nexport default dispatch;\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default 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","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else 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","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return this.children;\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = 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 Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function 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","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\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 = new Map,\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 = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(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 = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\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.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\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 = array(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","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\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","export default 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 && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default 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","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default 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","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default 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","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\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","import namespaces from \"./namespaces.js\";\n\nexport default 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; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\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\nexport default 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","export default 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","import defaultView from \"../window.js\";\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\nexport default 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\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function 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\nexport default 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","function 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\nexport default 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","function 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\nexport default 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","function 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\nexport default 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","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\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\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\n\nexport default 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","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default 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","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\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.options);\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, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\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.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\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 for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\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\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\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]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\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 clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function 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","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n 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 copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\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]) // eslint-disable-line no-prototype-builtins\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\nexport function 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\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function 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.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\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\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\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\nexport function 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\nexport function 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 formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\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","export function 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\nexport default 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","import {basis} from \"./basis.js\";\n\nexport default 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","export default x => () => x;\n","import constant from \"./constant.js\";\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\nexport function 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\nexport function 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\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(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.gamma = rgbGamma;\n\n return rgb;\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;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\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","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default 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","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n 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\nexport default 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","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function 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\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function 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; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default 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 = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default 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\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\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 = 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 timeout(start);\n\n // Interrupt the active transition, if any.\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.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\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 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(node, 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","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default 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 schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function 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","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default 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","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\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\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\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\nexport default 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\nexport function 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","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\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, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : 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","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default 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 = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\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\nexport default 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","import {get, set} from \"./schedule.js\";\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\nexport default 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","import {get, set} from \"./schedule.js\";\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\nexport default 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","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = 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","import {Transition} from \"./index.js\";\n\nexport default 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","import {get, set, init} from \"./schedule.js\";\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\nexport default 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","function 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\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\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 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","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\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 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","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\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 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default 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","import {tweenValue} from \"./tween.js\";\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\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) 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, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default 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","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(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) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = 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 textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default 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 = 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","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move();\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default 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","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\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[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 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 = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\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 = sequence(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 ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, 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 = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, 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(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\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\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function 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\nexport function 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","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const 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 function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.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 = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.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 === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\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, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(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","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(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\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default 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","export default 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","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(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","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\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 trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\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 // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%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 = /[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 === undefined ? 6\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 // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (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","import exponent from \"./exponent.js\";\n\nexport default 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","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = 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 = precisionPrefix(step, value))) specifier.precision = precision;\n return 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 = 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 = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\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 = [], previous;\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(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < 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","import interval from \"./interval.js\";\n\nvar millisecond = interval(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 interval(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\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\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\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\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\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\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\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(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\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(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\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(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 : interval(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\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(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\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(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\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(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\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(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\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(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\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(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 : interval(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\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const 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 ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\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 newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function 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 \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\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 \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\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 \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\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, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\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 // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).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 localDate(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.get(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.get(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.get(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.get(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.get(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 formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\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 function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\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 += \"\", false);\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 += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n 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 return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(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 parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\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 parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, 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 parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), 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 parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], 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 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\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 formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\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 formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\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 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\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 formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\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 formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\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\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function nice(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","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\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 scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n return select(creator(name).call(document.documentElement));\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n 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, ccw = !!ccw;\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\nexport default path;\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\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 = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\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\nexport default 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 = 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 oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var 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","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function 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\nexport default function(context) {\n return new Linear(context);\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = 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(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\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","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(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 = 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","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default 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 = array(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","function 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(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(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(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(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\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n","var 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\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(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 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n"],"sourceRoot":""}