Your IP : 108.162.241.185


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/main/d3js/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/main/d3js/dist/d3js.bundle.js.map

{"version":3,"file":"d3js.bundle.js","sources":["../node_modules/d3/dist/package.js","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/bisector.js","../node_modules/d3-array/src/bisect.js","../node_modules/d3-array/src/pairs.js","../node_modules/d3-array/src/cross.js","../node_modules/d3-array/src/descending.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/d3-array/src/array.js","../node_modules/d3-array/src/constant.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/range.js","../node_modules/d3-array/src/ticks.js","../node_modules/d3-array/src/threshold/sturges.js","../node_modules/d3-array/src/histogram.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/threshold/freedmanDiaconis.js","../node_modules/d3-array/src/threshold/scott.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/mean.js","../node_modules/d3-array/src/median.js","../node_modules/d3-array/src/merge.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/scan.js","../node_modules/d3-array/src/shuffle.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-array/src/transpose.js","../node_modules/d3-array/src/zip.js","../node_modules/d3-axis/src/array.js","../node_modules/d3-axis/src/identity.js","../node_modules/d3-axis/src/axis.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/create.js","../node_modules/d3-selection/src/local.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/point.js","../node_modules/d3-selection/src/mouse.js","../node_modules/d3-selection/src/selectAll.js","../node_modules/d3-selection/src/touch.js","../node_modules/d3-selection/src/touches.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-drag/src/constant.js","../node_modules/d3-drag/src/event.js","../node_modules/d3-drag/src/drag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-color/src/math.js","../node_modules/d3-color/src/lab.js","../node_modules/d3-color/src/cubehelix.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/array.js","../node_modules/d3-interpolate/src/date.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/object.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/value.js","../node_modules/d3-interpolate/src/discrete.js","../node_modules/d3-interpolate/src/hue.js","../node_modules/d3-interpolate/src/round.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-interpolate/src/hsl.js","../node_modules/d3-interpolate/src/lab.js","../node_modules/d3-interpolate/src/hcl.js","../node_modules/d3-interpolate/src/cubehelix.js","../node_modules/d3-interpolate/src/piecewise.js","../node_modules/d3-interpolate/src/quantize.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-timer/src/interval.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/linear.js","../node_modules/d3-ease/src/quad.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-ease/src/poly.js","../node_modules/d3-ease/src/sin.js","../node_modules/d3-ease/src/exp.js","../node_modules/d3-ease/src/circle.js","../node_modules/d3-ease/src/bounce.js","../node_modules/d3-ease/src/back.js","../node_modules/d3-ease/src/elastic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-transition/src/active.js","../node_modules/d3-brush/src/constant.js","../node_modules/d3-brush/src/event.js","../node_modules/d3-brush/src/noevent.js","../node_modules/d3-brush/src/brush.js","../node_modules/d3-chord/src/math.js","../node_modules/d3-chord/src/chord.js","../node_modules/d3-chord/src/array.js","../node_modules/d3-chord/src/constant.js","../node_modules/d3-path/src/path.js","../node_modules/d3-chord/src/ribbon.js","../node_modules/d3-collection/src/map.js","../node_modules/d3-collection/src/nest.js","../node_modules/d3-collection/src/set.js","../node_modules/d3-collection/src/keys.js","../node_modules/d3-collection/src/values.js","../node_modules/d3-collection/src/entries.js","../node_modules/d3-contour/src/array.js","../node_modules/d3-contour/src/ascending.js","../node_modules/d3-contour/src/area.js","../node_modules/d3-contour/src/constant.js","../node_modules/d3-contour/src/contains.js","../node_modules/d3-contour/src/noop.js","../node_modules/d3-contour/src/contours.js","../node_modules/d3-contour/src/blur.js","../node_modules/d3-contour/src/density.js","../node_modules/d3-dsv/src/dsv.js","../node_modules/d3-dsv/src/csv.js","../node_modules/d3-dsv/src/tsv.js","../node_modules/d3-dsv/src/autoType.js","../node_modules/d3-fetch/src/blob.js","../node_modules/d3-fetch/src/buffer.js","../node_modules/d3-fetch/src/text.js","../node_modules/d3-fetch/src/dsv.js","../node_modules/d3-fetch/src/image.js","../node_modules/d3-fetch/src/json.js","../node_modules/d3-fetch/src/xml.js","../node_modules/d3-force/src/center.js","../node_modules/d3-force/src/constant.js","../node_modules/d3-force/src/jiggle.js","../node_modules/d3-quadtree/src/add.js","../node_modules/d3-quadtree/src/cover.js","../node_modules/d3-quadtree/src/data.js","../node_modules/d3-quadtree/src/extent.js","../node_modules/d3-quadtree/src/quad.js","../node_modules/d3-quadtree/src/find.js","../node_modules/d3-quadtree/src/remove.js","../node_modules/d3-quadtree/src/root.js","../node_modules/d3-quadtree/src/size.js","../node_modules/d3-quadtree/src/visit.js","../node_modules/d3-quadtree/src/visitAfter.js","../node_modules/d3-quadtree/src/x.js","../node_modules/d3-quadtree/src/y.js","../node_modules/d3-quadtree/src/quadtree.js","../node_modules/d3-force/src/collide.js","../node_modules/d3-force/src/link.js","../node_modules/d3-force/src/simulation.js","../node_modules/d3-force/src/manyBody.js","../node_modules/d3-force/src/radial.js","../node_modules/d3-force/src/x.js","../node_modules/d3-force/src/y.js","../node_modules/d3-format/src/formatDecimal.js","../node_modules/d3-format/src/exponent.js","../node_modules/d3-format/src/formatGroup.js","../node_modules/d3-format/src/formatNumerals.js","../node_modules/d3-format/src/formatSpecifier.js","../node_modules/d3-format/src/formatTrim.js","../node_modules/d3-format/src/formatPrefixAuto.js","../node_modules/d3-format/src/formatRounded.js","../node_modules/d3-format/src/formatTypes.js","../node_modules/d3-format/src/identity.js","../node_modules/d3-format/src/locale.js","../node_modules/d3-format/src/defaultLocale.js","../node_modules/d3-format/src/precisionFixed.js","../node_modules/d3-format/src/precisionPrefix.js","../node_modules/d3-format/src/precisionRound.js","../node_modules/d3-geo/src/adder.js","../node_modules/d3-geo/src/math.js","../node_modules/d3-geo/src/noop.js","../node_modules/d3-geo/src/stream.js","../node_modules/d3-geo/src/area.js","../node_modules/d3-geo/src/cartesian.js","../node_modules/d3-geo/src/bounds.js","../node_modules/d3-geo/src/centroid.js","../node_modules/d3-geo/src/constant.js","../node_modules/d3-geo/src/compose.js","../node_modules/d3-geo/src/rotation.js","../node_modules/d3-geo/src/circle.js","../node_modules/d3-geo/src/clip/buffer.js","../node_modules/d3-geo/src/pointEqual.js","../node_modules/d3-geo/src/clip/rejoin.js","../node_modules/d3-geo/src/polygonContains.js","../node_modules/d3-geo/src/clip/index.js","../node_modules/d3-geo/src/clip/antimeridian.js","../node_modules/d3-geo/src/clip/circle.js","../node_modules/d3-geo/src/clip/line.js","../node_modules/d3-geo/src/clip/rectangle.js","../node_modules/d3-geo/src/clip/extent.js","../node_modules/d3-geo/src/length.js","../node_modules/d3-geo/src/distance.js","../node_modules/d3-geo/src/contains.js","../node_modules/d3-geo/src/graticule.js","../node_modules/d3-geo/src/interpolate.js","../node_modules/d3-geo/src/identity.js","../node_modules/d3-geo/src/path/area.js","../node_modules/d3-geo/src/path/bounds.js","../node_modules/d3-geo/src/path/centroid.js","../node_modules/d3-geo/src/path/context.js","../node_modules/d3-geo/src/path/measure.js","../node_modules/d3-geo/src/path/string.js","../node_modules/d3-geo/src/path/index.js","../node_modules/d3-geo/src/transform.js","../node_modules/d3-geo/src/projection/fit.js","../node_modules/d3-geo/src/projection/resample.js","../node_modules/d3-geo/src/projection/index.js","../node_modules/d3-geo/src/projection/conic.js","../node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../node_modules/d3-geo/src/projection/conicEqualArea.js","../node_modules/d3-geo/src/projection/albers.js","../node_modules/d3-geo/src/projection/albersUsa.js","../node_modules/d3-geo/src/projection/azimuthal.js","../node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../node_modules/d3-geo/src/projection/mercator.js","../node_modules/d3-geo/src/projection/conicConformal.js","../node_modules/d3-geo/src/projection/equirectangular.js","../node_modules/d3-geo/src/projection/conicEquidistant.js","../node_modules/d3-geo/src/projection/equalEarth.js","../node_modules/d3-geo/src/projection/gnomonic.js","../node_modules/d3-geo/src/projection/identity.js","../node_modules/d3-geo/src/projection/naturalEarth1.js","../node_modules/d3-geo/src/projection/orthographic.js","../node_modules/d3-geo/src/projection/stereographic.js","../node_modules/d3-geo/src/projection/transverseMercator.js","../node_modules/d3-hierarchy/src/cluster.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/array.js","../node_modules/d3-hierarchy/src/pack/enclose.js","../node_modules/d3-hierarchy/src/pack/siblings.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/constant.js","../node_modules/d3-hierarchy/src/pack/index.js","../node_modules/d3-hierarchy/src/treemap/round.js","../node_modules/d3-hierarchy/src/treemap/dice.js","../node_modules/d3-hierarchy/src/partition.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-hierarchy/src/treemap/slice.js","../node_modules/d3-hierarchy/src/treemap/squarify.js","../node_modules/d3-hierarchy/src/treemap/index.js","../node_modules/d3-hierarchy/src/treemap/binary.js","../node_modules/d3-hierarchy/src/treemap/sliceDice.js","../node_modules/d3-hierarchy/src/treemap/resquarify.js","../node_modules/d3-polygon/src/area.js","../node_modules/d3-polygon/src/centroid.js","../node_modules/d3-polygon/src/cross.js","../node_modules/d3-polygon/src/hull.js","../node_modules/d3-polygon/src/contains.js","../node_modules/d3-polygon/src/length.js","../node_modules/d3-random/src/defaultSource.js","../node_modules/d3-random/src/uniform.js","../node_modules/d3-random/src/normal.js","../node_modules/d3-random/src/logNormal.js","../node_modules/d3-random/src/irwinHall.js","../node_modules/d3-random/src/bates.js","../node_modules/d3-random/src/exponential.js","../node_modules/d3-scale/src/init.js","../node_modules/d3-scale/src/array.js","../node_modules/d3-scale/src/ordinal.js","../node_modules/d3-scale/src/band.js","../node_modules/d3-scale/src/constant.js","../node_modules/d3-scale/src/number.js","../node_modules/d3-scale/src/continuous.js","../node_modules/d3-scale/src/tickFormat.js","../node_modules/d3-scale/src/linear.js","../node_modules/d3-scale/src/identity.js","../node_modules/d3-scale/src/nice.js","../node_modules/d3-scale/src/log.js","../node_modules/d3-scale/src/symlog.js","../node_modules/d3-scale/src/pow.js","../node_modules/d3-scale/src/quantile.js","../node_modules/d3-scale/src/quantize.js","../node_modules/d3-scale/src/threshold.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../node_modules/d3-scale/src/time.js","../node_modules/d3-scale/src/utcTime.js","../node_modules/d3-scale/src/sequential.js","../node_modules/d3-scale/src/sequentialQuantile.js","../node_modules/d3-scale/src/diverging.js","../node_modules/d3-scale-chromatic/src/colors.js","../node_modules/d3-scale-chromatic/src/categorical/category10.js","../node_modules/d3-scale-chromatic/src/categorical/Accent.js","../node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../node_modules/d3-scale-chromatic/src/categorical/Paired.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../node_modules/d3-scale-chromatic/src/categorical/Set1.js","../node_modules/d3-scale-chromatic/src/categorical/Set2.js","../node_modules/d3-scale-chromatic/src/categorical/Set3.js","../node_modules/d3-scale-chromatic/src/ramp.js","../node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-shape/src/math.js","../node_modules/d3-shape/src/arc.js","../node_modules/d3-shape/src/curve/linear.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/line.js","../node_modules/d3-shape/src/area.js","../node_modules/d3-shape/src/descending.js","../node_modules/d3-shape/src/identity.js","../node_modules/d3-shape/src/pie.js","../node_modules/d3-shape/src/curve/radial.js","../node_modules/d3-shape/src/lineRadial.js","../node_modules/d3-shape/src/areaRadial.js","../node_modules/d3-shape/src/pointRadial.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/link/index.js","../node_modules/d3-shape/src/symbol/circle.js","../node_modules/d3-shape/src/symbol/cross.js","../node_modules/d3-shape/src/symbol/diamond.js","../node_modules/d3-shape/src/symbol/star.js","../node_modules/d3-shape/src/symbol/square.js","../node_modules/d3-shape/src/symbol/triangle.js","../node_modules/d3-shape/src/symbol/wye.js","../node_modules/d3-shape/src/symbol.js","../node_modules/d3-shape/src/noop.js","../node_modules/d3-shape/src/curve/basis.js","../node_modules/d3-shape/src/curve/basisClosed.js","../node_modules/d3-shape/src/curve/basisOpen.js","../node_modules/d3-shape/src/curve/bundle.js","../node_modules/d3-shape/src/curve/cardinal.js","../node_modules/d3-shape/src/curve/cardinalClosed.js","../node_modules/d3-shape/src/curve/cardinalOpen.js","../node_modules/d3-shape/src/curve/catmullRom.js","../node_modules/d3-shape/src/curve/catmullRomClosed.js","../node_modules/d3-shape/src/curve/catmullRomOpen.js","../node_modules/d3-shape/src/curve/linearClosed.js","../node_modules/d3-shape/src/curve/monotone.js","../node_modules/d3-shape/src/curve/natural.js","../node_modules/d3-shape/src/curve/step.js","../node_modules/d3-shape/src/offset/none.js","../node_modules/d3-shape/src/order/none.js","../node_modules/d3-shape/src/stack.js","../node_modules/d3-shape/src/offset/expand.js","../node_modules/d3-shape/src/offset/diverging.js","../node_modules/d3-shape/src/offset/silhouette.js","../node_modules/d3-shape/src/offset/wiggle.js","../node_modules/d3-shape/src/order/appearance.js","../node_modules/d3-shape/src/order/ascending.js","../node_modules/d3-shape/src/order/descending.js","../node_modules/d3-shape/src/order/insideOut.js","../node_modules/d3-shape/src/order/reverse.js","../node_modules/d3-voronoi/src/constant.js","../node_modules/d3-voronoi/src/point.js","../node_modules/d3-voronoi/src/RedBlackTree.js","../node_modules/d3-voronoi/src/Edge.js","../node_modules/d3-voronoi/src/Cell.js","../node_modules/d3-voronoi/src/Circle.js","../node_modules/d3-voronoi/src/Beach.js","../node_modules/d3-voronoi/src/Diagram.js","../node_modules/d3-voronoi/src/voronoi.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["export var name = \"d3\";\nexport var version = \"5.9.2\";\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 scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && node rollup.node\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test && rollup -c\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && 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\":\"2\",\"rollup\":\"0.64\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"1\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n","export default function(array, f) {\n  if (f == null) f = pair;\n  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n  while (i < n) pairs[i] = f(p, p = array[++i]);\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(x) {\n  return x === null ? NaN : +x;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      m = 0,\n      i = -1,\n      mean = 0,\n      value,\n      delta,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  if (m > 1) return sum / (m - 1);\n}\n","import variance from \"./variance\";\n\nexport default function(array, f) {\n  var v = variance(array, f);\n  return v ? Math.sqrt(v) : v;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(x) {\n  return x;\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","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    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\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(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisect(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n","import number from \"./number\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      numbers = [];\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  return quantile(numbers.sort(ascending), 0.5);\n}\n","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n","export default function(array, indexes) {\n  var i = indexes.length, permutes = new Array(i);\n  while (i--) permutes[i] = array[indexes[i]];\n  return permutes;\n}\n","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n  if (!(n = values.length)) return;\n  var n,\n      i = 0,\n      j = 0,\n      xi,\n      xj = values[j];\n\n  if (compare == null) compare = ascending;\n\n  while (++i < n) {\n    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n      xj = xi, j = i;\n    }\n  }\n\n  if (compare(xj, xj) === 0) return j;\n}\n","export default function(array, i0, i1) {\n  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n","import min from \"./min\";\n\nexport default function(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n","import transpose from \"./transpose\";\n\nexport default function() {\n  return transpose(arguments);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return x;\n}\n","import {slice} from \"./array\";\nimport identity from \"./identity\";\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.5) + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n  return function(d) {\n    return +scale(d);\n  };\n}\n\nfunction center(scale) {\n  var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n  if (scale.round()) offset = Math.round(offset);\n  return function(d) {\n    return +scale(d) + offset;\n  };\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + 0.5,\n        range1 = +range[range.length - 1] + 0.5,\n        position = (scale.bandwidth ? center : number)(scale.copy()),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"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) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient == right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d)); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = slice.call(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  return axis;\n}\n\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: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\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\";\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;\n}\n","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\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","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\";\nimport selector from \"../selector\";\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","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\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\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\";\nimport {Selection} from \"./index\";\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\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\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\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","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\";\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  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\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  var size = 0;\n  this.each(function() { ++size; });\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","import namespace from \"../namespace\";\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\";\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 creator from \"../creator\";\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\";\nimport selector from \"../selector\";\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  return this.parentNode.insertBefore(this.cloneNode(false), this.nextSibling);\n}\n\nfunction selection_cloneDeep() {\n  return this.parentNode.insertBefore(this.cloneNode(true), this.nextSibling);\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","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n","import defaultView from \"../window\";\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","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\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\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index\";\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","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","import {event} from \"./selection/on\";\n\nexport default function() {\n  var current = event, source;\n  while (source = current.sourceEvent) current = source;\n  return current;\n}\n","export default function(node, event) {\n  var svg = node.ownerSVGElement || node;\n\n  if (svg.createSVGPoint) {\n    var point = svg.createSVGPoint();\n    point.x = event.clientX, point.y = event.clientY;\n    point = point.matrixTransform(node.getScreenCTM().inverse());\n    return [point.x, point.y];\n  }\n\n  var rect = node.getBoundingClientRect();\n  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n  var event = sourceEvent();\n  if (event.changedTouches) event = event.changedTouches[0];\n  return point(node, event);\n}\n","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([selector == null ? [] : selector], root);\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n  if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n    if ((touch = touches[i]).identifier === identifier) {\n      return point(node, touch);\n    }\n  }\n\n  return null;\n}\n","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n  if (touches == null) touches = sourceEvent().touches;\n\n  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n    points[i] = point(node, touches[i]);\n  }\n\n  return points;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, true);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, true);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, true);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n  this.target = target;\n  this.type = type;\n  this.subject = subject;\n  this.identifier = id;\n  this.active = active;\n  this.x = x;\n  this.y = y;\n  this.dx = dx;\n  this.dy = dy;\n  this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag\";\nimport noevent, {nopropagation} from \"./noevent\";\nimport constant from \"./constant\";\nimport DragEvent from \"./event\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return \"ontouchstart\" in this;\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n    if (!gesture) return;\n    select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n    nodrag(event.view);\n    nopropagation();\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\");\n  }\n\n  function mousemoved() {\n    noevent();\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\");\n  }\n\n  function mouseupped() {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent();\n    gestures.mouse(\"end\");\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.changedTouches,\n        c = container.apply(this, arguments),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n        nopropagation();\n        gesture(\"start\");\n      }\n    }\n  }\n\n  function touchmoved() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent();\n        gesture(\"drag\");\n      }\n    }\n  }\n\n  function touchended() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation();\n        gesture(\"end\");\n      }\n    }\n  }\n\n  function beforestart(id, container, point, that, args) {\n    var p = point(container, id), s, dx, dy,\n        sublisteners = listeners.copy();\n\n    if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n      if ((event.subject = s = subject.apply(that, args)) == null) return false;\n      dx = s.x - p[0] || 0;\n      dy = s.y - p[1] || 0;\n      return true;\n    })) return;\n\n    return function gesture(type) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[id] = gesture, n = active++; break;\n        case \"end\": delete gestures[id], --active; // nobreak\n        case \"drag\": p = point(container, id), n = active; break;\n      }\n      customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\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\";\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    reHex3 = /^#([0-9a-f]{3})$/,\n    reHex6 = /^#([0-9a-f]{6})$/,\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  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: function() {\n    return this.rgb().hex();\n  },\n  toString: function() {\n    return this.rgb() + \"\";\n  }\n});\n\nexport default function color(format) {\n  var m;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex3.exec(format)) ? (m = parseInt(m[1], 16), new Rgb((m >> 8 & 0xf) | (m >> 4 & 0x0f0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1)) // #f00\n      : (m = reHex6.exec(format)) ? rgbn(parseInt(m[1], 16)) // #ff0000\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format])\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\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 <= this.r && this.r <= 255)\n        && (0 <= this.g && this.g <= 255)\n        && (0 <= this.b && this.b <= 255)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: function() {\n    return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n  },\n  toString: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"rgb(\" : \"rgba(\")\n        + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n        + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\nfunction 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}));\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 var deg2rad = Math.PI / 180;\nexport var rad2deg = 180 / Math.PI;\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\n// https://beta.observablehq.com/@mbostock/lab-and-rgb\nvar K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) {\n    if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n    var h = o.h * deg2rad;\n    return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n  }\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * rad2deg;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return labConvert(this).rgb();\n  }\n}));\n","import define, {extend} from \"./define\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color\";\nimport {deg2rad, rad2deg} from \"./math\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * rad2deg - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * deg2rad,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","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\";\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 function(x) {\n  return function() {\n    return x;\n  };\n}\n","import constant from \"./constant\";\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\";\nimport basisClosed from \"./basisClosed\";\nimport nogamma, {gamma} from \"./color\";\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","import value from \"./value\";\n\nexport default function(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 -= a, function(t) {\n    return d.setTime(a + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b -= a, function(t) {\n    return a + b * t;\n  };\n}\n","import value from \"./value\";\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\";\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","import {color} from \"d3-color\";\nimport rgb from \"./rgb\";\nimport array from \"./array\";\nimport date from \"./date\";\nimport number from \"./number\";\nimport object from \"./object\";\nimport string from \"./string\";\nimport constant from \"./constant\";\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      : Array.isArray(b) ? array\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n","import {hue} from \"./color\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n","export default function(a, b) {\n  return a = +a, b -= a, function(t) {\n    return Math.round(a + b * t);\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 decompose, {identity} from \"./decompose\";\n\nvar cssNode,\n    cssRoot,\n    cssView,\n    svgNode;\n\nexport function parseCss(value) {\n  if (value === \"none\") return identity;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\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 number from \"../number\";\nimport {parseCss, parseSvg} from \"./parse\";\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","var rho = Math.SQRT2,\n    rho2 = 2,\n    rho4 = 4,\n    epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 в‰… u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    }\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    }\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","export default function piecewise(interpolate, values) {\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","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 {Timer} from \"./timer\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {Timer, now} from \"./timer\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  delay = +delay, time = time == null ? now() : +time;\n  t.restart(function tick(elapsed) {\n    elapsed += total;\n    t.restart(tick, total += delay, time);\n    callback(elapsed);\n  }, delay, time);\n  return t;\n}\n","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\";\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 interrupt from \"../interrupt\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {get, set} from \"./schedule\";\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\";\nimport interpolate from \"./interpolate\";\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(t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i(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\";\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\";\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\";\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 {matcher} from \"d3-selection\";\nimport {Transition} from \"./index\";\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\";\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\";\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\";\nimport schedule, {get} from \"./schedule\";\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\";\nimport schedule, {get} from \"./schedule\";\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\";\nimport {tweenValue} from \"./tween\";\nimport interpolate from \"./interpolate\";\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(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\";\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","import {Transition, newId} from \"./index\";\nimport schedule, {get} from \"./schedule\";\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\";\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}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr\";\nimport transition_attrTween from \"./attrTween\";\nimport transition_delay from \"./delay\";\nimport transition_duration from \"./duration\";\nimport transition_ease from \"./ease\";\nimport transition_filter from \"./filter\";\nimport transition_merge from \"./merge\";\nimport transition_on from \"./on\";\nimport transition_remove from \"./remove\";\nimport transition_select from \"./select\";\nimport transition_selectAll from \"./selectAll\";\nimport transition_selection from \"./selection\";\nimport transition_style from \"./style\";\nimport transition_styleTween from \"./styleTween\";\nimport transition_text from \"./text\";\nimport transition_transition from \"./transition\";\nimport transition_tween from \"./tween\";\nimport transition_end from \"./end\";\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  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  end: transition_end\n};\n","export function linear(t) {\n  return +t;\n}\n","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\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","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n","export function expIn(t) {\n  return Math.pow(2, 10 * t - 10);\n}\n\nexport function expOut(t) {\n  return 1 - Math.pow(2, -10 * t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? Math.pow(2, 10 * t - 10) : 2 - Math.pow(2, 10 - 10 * t)) / 2;\n}\n","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return t * t * ((s + 1) * t - s);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((s + 1) * t + s) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n","var tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * Math.pow(2, 10 * --t) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * Math.pow(2, -10 * (t = +t)) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * Math.pow(2, 10 * t) * Math.sin((s - t) / p)\n        : 2 - a * Math.pow(2, -10 * t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index\";\nimport schedule from \"../transition/schedule\";\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      return defaultTiming.time = now(), defaultTiming;\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\";\nimport selection_transition from \"./transition\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {Transition} from \"./transition/index\";\nimport {SCHEDULED} from \"./transition/schedule\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(target, type, selection) {\n  this.target = target;\n  this.type = type;\n  this.selection = selection;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport BrushEvent from \"./event\";\nimport noevent, {nopropagation} from \"./noevent\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nvar X = {\n  name: \"x\",\n  handles: [\"e\", \"w\"].map(type),\n  input: function(x, e) { return x && [[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 && [[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\", \"e\", \"s\", \"w\", \"nw\", \"ne\", \"se\", \"sw\"].map(type),\n  input: function(xy) { return 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() {\n  return !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\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      listeners = dispatch(brush, \"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        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\")\n        .on(\"mousedown.brush touchstart.brush\", started);\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\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 && empty(selection1) ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 && selection1 ? 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 || empty(selection1) ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\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) {\n    return that.__brush.emitter || new Emitter(that, args);\n  }\n\n  function Emitter(that, args) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\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() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); }\n    else if (touchending) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (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,\n        dy,\n        moving,\n        shifting = signX && signY && event.shiftKey,\n        lockX,\n        lockY,\n        point0 = mouse(that),\n        point = point0,\n        emit = emitter(that, arguments).beforestart();\n\n    if (type === \"overlay\") {\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\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    if (event.touches) {\n      group\n          .on(\"touchmove.brush\", moved, true)\n          .on(\"touchend.brush touchcancel.brush\", ended, true);\n    } else {\n      var view = select(event.view)\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n\n      dragDisable(event.view);\n    }\n\n    nopropagation();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = mouse(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent();\n      move();\n    }\n\n    function move() {\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 = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.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();\n      }\n    }\n\n    function ended() {\n      nopropagation();\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        group.on(\"touchmove.brush touchend.brush touchcancel.brush\", null);\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();\n    }\n\n    function keydowned() {\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();\n    }\n\n    function keyupped() {\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();\n    }\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = 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([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\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 var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = [],\n        groupIndex = range(n),\n        subgroupIndex = [],\n        chords = [],\n        groups = chords.groups = new Array(n),\n        subgroups = new Array(n * n),\n        k,\n        x,\n        x0,\n        dx,\n        i,\n        j;\n\n    // Compute the sum.\n    k = 0, i = -1; while (++i < n) {\n      x = 0, j = -1; while (++j < n) {\n        x += matrix[i][j];\n      }\n      groupSums.push(x);\n      subgroupIndex.push(range(n));\n      k += x;\n    }\n\n    // Sort groups…\n    if (sortGroups) groupIndex.sort(function(a, b) {\n      return sortGroups(groupSums[a], groupSums[b]);\n    });\n\n    // Sort subgroups…\n    if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n      d.sort(function(a, b) {\n        return sortSubgroups(matrix[i][a], matrix[i][b]);\n      });\n    });\n\n    // Convert the sum to scaling factor for [0, 2pi].\n    // TODO Allow start and end angle to be specified?\n    // TODO Allow padding to be specified as percentage?\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the start and end angle for each group and subgroup.\n    // Note: Opera has a bug reordering object literal properties!\n    x = 0, i = -1; while (++i < n) {\n      x0 = x, j = -1; while (++j < n) {\n        var di = groupIndex[i],\n            dj = subgroupIndex[di][j],\n            v = matrix[di][dj],\n            a0 = x,\n            a1 = x += v * k;\n        subgroups[dj * n + di] = {\n          index: di,\n          subindex: dj,\n          startAngle: a0,\n          endAngle: a1,\n          value: v\n        };\n      }\n      groups[di] = {\n        index: di,\n        startAngle: x0,\n        endAngle: x,\n        value: groupSums[di]\n      };\n      x += dx;\n    }\n\n    // Generate chords for each (non-empty) subgroup-subgroup link.\n    i = -1; while (++i < n) {\n      j = i - 1; while (++j < n) {\n        var source = subgroups[j * n + i],\n            target = subgroups[i * n + j];\n        if (source.value || target.value) {\n          chords.push(source.value < target.value\n              ? {source: target, target: source}\n              : {source: source, target: target});\n        }\n      }\n    }\n\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","var 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;\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","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nexport default function() {\n  var source = defaultSource,\n      target = defaultTarget,\n      radius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        argv = slice.call(arguments),\n        s = source.apply(this, argv),\n        t = target.apply(this, argv),\n        sr = +radius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        sx0 = sr * cos(sa0),\n        sy0 = sr * sin(sa0),\n        tr = +radius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi,\n        ta1 = endAngle.apply(this, argv) - halfPi;\n\n    if (!context) context = buffer = path();\n\n    context.moveTo(sx0, sy0);\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n      context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n      context.arc(0, 0, tr, ta0, ta1);\n    }\n    context.quadraticCurveTo(0, 0, sx0, sy0);\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n  };\n\n  return ribbon;\n}\n","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\nexport default map;\n","import map from \"./map\";\n\nexport default function() {\n  var keys = [],\n      sortKeys = [],\n      sortValues,\n      rollup,\n      nest;\n\n  function apply(array, depth, createResult, setResult) {\n    if (depth >= keys.length) {\n      if (sortValues != null) array.sort(sortValues);\n      return rollup != null ? rollup(array) : array;\n    }\n\n    var i = -1,\n        n = array.length,\n        key = keys[depth++],\n        keyValue,\n        value,\n        valuesByKey = map(),\n        values,\n        result = createResult();\n\n    while (++i < n) {\n      if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n        values.push(value);\n      } else {\n        valuesByKey.set(keyValue, [value]);\n      }\n    }\n\n    valuesByKey.each(function(values, key) {\n      setResult(result, key, apply(values, depth, createResult, setResult));\n    });\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    var array, sortKey = sortKeys[depth - 1];\n    if (rollup != null && depth >= keys.length) array = map.entries();\n    else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n    return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n  }\n\n  return nest = {\n    object: function(array) { return apply(array, 0, createObject, setObject); },\n    map: function(array) { return apply(array, 0, createMap, setMap); },\n    entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n    key: function(d) { keys.push(d); return nest; },\n    sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n    sortValues: function(order) { sortValues = order; return nest; },\n    rollup: function(f) { rollup = f; return nest; }\n  };\n}\n\nfunction createObject() {\n  return {};\n}\n\nfunction setObject(object, key, value) {\n  object[key] = value;\n}\n\nfunction createMap() {\n  return map();\n}\n\nfunction setMap(map, key, value) {\n  map.set(key, value);\n}\n","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\nexport default set;\n","export default function(map) {\n  var keys = [];\n  for (var key in map) keys.push(key);\n  return keys;\n}\n","export default function(map) {\n  var values = [];\n  for (var key in map) values.push(map[key]);\n  return values;\n}\n","export default function(map) {\n  var entries = [];\n  for (var key in map) entries.push({key: key, value: map[key]});\n  return entries;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n  return a - b;\n}\n","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n","export default function() {}\n","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      var domain = extent(values), start = domain[0], stop = domain[1];\n      tz = tickStep(start, stop, tz);\n      tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(function(value) {\n      return contour(values, value);\n    });\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    var polygons = [],\n        holes = [];\n\n    isorings(values, value, function(ring) {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v0,\n          v1 = values[yt * dx + xt];\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n    if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n  var n = source.width,\n      m = source.height,\n      w = (r << 1) + 1;\n  for (var j = 0; j < m; ++j) {\n    for (var i = 0, sr = 0; i < n + r; ++i) {\n      if (i < n) {\n        sr += source.data[i + j * n];\n      }\n      if (i >= r) {\n        if (i >= w) {\n          sr -= source.data[i - w + j * n];\n        }\n        target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n      }\n    }\n  }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n  var n = source.width,\n      m = source.height,\n      w = (r << 1) + 1;\n  for (var i = 0; i < n; ++i) {\n    for (var j = 0, sr = 0; j < m + r; ++j) {\n      if (j < m) {\n        sr += source.data[i + j * n];\n      }\n      if (j >= r) {\n        if (j >= w) {\n          sr -= source.data[i + (j - w) * n];\n        }\n        target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n      }\n    }\n  }\n}\n","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction defaultWeight() {\n  return 1;\n}\n\nexport default function() {\n  var x = defaultX,\n      y = defaultY,\n      weight = defaultWeight,\n      dx = 960,\n      dy = 500,\n      r = 20, // blur radius\n      k = 2, // log2(grid cell size)\n      o = r * 3, // grid offset, to pad for blur\n      n = (dx + o * 2) >> k, // grid width\n      m = (dy + o * 2) >> k, // grid height\n      threshold = constant(20);\n\n  function density(data) {\n    var values0 = new Float32Array(n * m),\n        values1 = new Float32Array(n * m);\n\n    data.forEach(function(d, i, data) {\n      var xi = (+x(d, i, data) + o) >> k,\n          yi = (+y(d, i, data) + o) >> k,\n          wi = +weight(d, i, data);\n      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        values0[xi + yi * n] += wi;\n      }\n    });\n\n    // TODO Optimize.\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n    var tz = threshold(values0);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      var stop = max(values0);\n      tz = tickStep(0, stop, tz);\n      tz = range(0, Math.floor(stop / tz) * tz, tz);\n      tz.shift();\n    }\n\n    return contours()\n        .thresholds(tz)\n        .size([n, m])\n      (values0)\n        .map(transform);\n  }\n\n  function transform(geometry) {\n    geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  }\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    coordinates.forEach(transformPoint);\n  }\n\n  // TODO Optimize.\n  function transformPoint(coordinates) {\n    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n  }\n\n  function resize() {\n    o = r * 3;\n    n = (dx + o * 2) >> k;\n    m = (dy + o * 2) >> k;\n    return density;\n  }\n\n  density.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n  };\n\n  density.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n  };\n\n  density.weight = function(_) {\n    return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n  };\n\n  density.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n    if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, resize();\n  };\n\n  density.cellSize = function(_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n    return k = Math.floor(Math.log(_) / Math.LN2), resize();\n  };\n\n  density.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n  };\n\n  density.bandwidth = function(_) {\n    if (!arguments.length) return Math.sqrt(r * (r + 1));\n    if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n    return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n  };\n\n  return density;\n}\n","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"]\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows\n  };\n}\n","import dsv from \"./dsv\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\n","import dsv from \"./dsv\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\n","export default function autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/.test(value)) value = new Date(value);\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n","function responseBlob(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.blob();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n  return new Promise(function(resolve, reject) {\n    var image = new Image;\n    for (var key in init) image[key] = init[key];\n    image.onerror = reject;\n    image.onload = function() { resolve(image); };\n    image.src = input;\n  });\n}\n","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n","import text from \"./text\";\n\nfunction parser(type) {\n  return function(input, init)  {\n    return text(input, init).then(function(text) {\n      return (new DOMParser).parseFromString(text, type);\n    });\n  };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n  var nodes;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function() {\n  return (Math.random() - 0.5) * 1e-6;\n}\n","export default function(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","import Quad from \"./quad\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add\";\nimport tree_cover from \"./cover\";\nimport tree_data from \"./data\";\nimport tree_extent from \"./extent\";\nimport tree_find from \"./find\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove\";\nimport tree_root from \"./root\";\nimport tree_size from \"./size\";\nimport tree_visit from \"./visit\";\nimport tree_visitAfter from \"./visitAfter\";\nimport tree_x, {defaultX} from \"./x\";\nimport tree_y, {defaultY} from \"./y\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(), l += x * x;\n            if (y === 0) y = jiggle(), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"missing: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle();\n        y = target.y + target.vy - source.y - source.vy || jiggle();\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = map(nodes, id),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.each(function (force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n  var nodes,\n      node,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(), l += x * x;\n        if (y === 0) y = jiggle(), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(), l += x * x;\n      if (y === 0) y = jiggle(), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n","import constant from \"./constant\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n","// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimal(1.23) returns [\"123\", 0].\nexport default function(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, В±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x) {\n  return x = formatDecimal(Math.abs(x)), x ? x[1] : NaN;\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","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  return new FormatSpecifier(specifier);\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nfunction FormatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  this.fill = match[1] || \" \";\n  this.align = match[2] || \">\";\n  this.sign = match[3] || \"-\";\n  this.symbol = match[4] || \"\";\n  this.zero = !!match[5];\n  this.width = match[6] && +match[6];\n  this.comma = !!match[7];\n  this.precision = match[8] && +match[8].slice(1);\n  this.trim = !!match[9];\n  this.type = match[10] || \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width == null ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision == null ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\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 (i0 > 0) { if (!+s[i]) break out; i0 = 0; } break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimal(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import formatDecimal from \"./formatDecimal\";\n\nexport default function(x, p) {\n  var d = formatDecimal(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatPrefixAuto from \"./formatPrefixAuto\";\nimport formatRounded from \"./formatRounded\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": function(x) { return Math.round(x).toString(10); },\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent\";\nimport formatGroup from \"./formatGroup\";\nimport formatNumerals from \"./formatNumerals\";\nimport formatSpecifier from \"./formatSpecifier\";\nimport formatTrim from \"./formatTrim\";\nimport formatTypes from \"./formatTypes\";\nimport {prefixExponent} from \"./formatPrefixAuto\";\nimport identity from \"./identity\";\n\nvar 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 && locale.thousands ? formatGroup(locale.grouping, locale.thousands) : identity,\n      currency = locale.currency,\n      decimal = locale.decimal,\n      numerals = locale.numerals ? formatNumerals(locale.numerals) : identity,\n      percent = locale.percent || \"%\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        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 == null && (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 === \"$\" ? currency[0] : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currency[1] : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision == null ? 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        // Perform the initial formatting.\n        var valueNegative = value < 0;\n        value = 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 during formatting, treat as positive.\n        if (valueNegative && +value === 0) valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : \"-\") : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (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 formatLocale from \"./locale\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\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\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent\";\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","import exponent from \"./exponent\";\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","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\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\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import adder from \"./adder\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import adder from \"./adder\";\nimport {areaStream, areaRingSum} from \"./area\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport {abs, degrees, epsilon, radians} from \"./math\";\nimport stream from \"./stream\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian\";\nimport constant from \"./constant\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math\";\nimport {rotateRadians} from \"./rotation\";\n\n// Generates a circle centered at [0В°, 0В°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y) {\n      line.push([x, y]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n","import pointEqual from \"../pointEqual\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    // If the first and last points of a segment are coincident, then treat as a\n    // closed ring. TODO if all rings are closed, then the winding order of the\n    // exterior ring should be checked.\n    if (pointEqual(p0, p1)) {\n      stream.lineStart();\n      for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n      stream.lineEnd();\n      return;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import adder from \"./adder\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian\";\nimport {asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sin, tau} from \"./math\";\n\nvar sum = adder();\n\nexport default function(polygon, point) {\n  var lambda = point[0],\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = point0[0],\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = point1[0],\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n","import clipBuffer from \"./buffer\";\nimport clipRejoin from \"./rejoin\";\nimport {epsilon, halfPi} from \"../math\";\nimport polygonContains from \"../polygonContains\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian\";\nimport {circleStream} from \"../circle\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math\";\nimport pointEqual from \"../pointEqual\";\nimport clip from \"./index\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        // Handle degeneracies.\n        // TODO ignore if not clipping polygons.\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {\n            point1[0] += epsilon;\n            point1[1] += epsilon;\n            v = visible(point1[0], point1[1]);\n          }\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1]);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 вЁЇ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import {abs, epsilon} from \"../math\";\nimport clipBuffer from \"./buffer\";\nimport clipLine from \"./line\";\nimport clipRejoin from \"./rejoin\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","import clipRectangle from \"./rectangle\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import adder from \"./adder\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math\";\nimport noop from \"./noop\";\nimport stream from \"./stream\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains\";\nimport {default as distance} from \"./distance\";\nimport {epsilon, radians} from \"./math\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ab = distance(coordinates[0], coordinates[1]),\n      ao = distance(coordinates[0], point),\n      ob = distance(point, coordinates[1]);\n  return ao + ob <= ab + epsilon;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default function(x) {\n  return x;\n}\n","import adder from \"../adder\";\nimport {abs} from \"../math\";\nimport noop from \"../noop\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math\";\nimport noop from \"../noop\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import adder from \"../adder\";\nimport {sqrt} from \"../math\";\nimport noop from \"../noop\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n","import identity from \"../identity\";\nimport stream from \"../stream\";\nimport pathArea from \"./area\";\nimport pathBounds from \"./bounds\";\nimport pathCentroid from \"./centroid\";\nimport PathContext from \"./context\";\nimport pathMeasure from \"./measure\";\nimport PathString from \"./string\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream\";\nimport boundsStream from \"../path/bounds\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","import {cartesian} from \"../cartesian\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math\";\nimport {transformer} from \"../transform\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian\";\nimport clipCircle from \"../clip/circle\";\nimport clipRectangle from \"../clip/rectangle\";\nimport compose from \"../compose\";\nimport identity from \"../identity\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math\";\nimport {rotateRadians} from \"../rotation\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\nimport resample from \"./resample\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy) {\n  function transform(x, y) {\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k, (dy - y) / k];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, alpha) {\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [ai * x - bi * y + ci, fi - bi * x - ai * y];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, alpha).apply(null, project(lambda, phi)),\n        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n","import {degrees, pi, radians} from \"../math\";\nimport {projectionMutator} from \"./index\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {asin, cos, sin} from \"../math\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y;\n    return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math\";\nimport albers from \"./albers\";\nimport conicEqualArea from \"./conicEqualArea\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960Г—500. The projection also works quite well at 960Г—600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math\";\nimport rotation from \"../rotation\";\nimport projection from \"./index\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pow, sign, sin, sqrt, tan} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {mercatorRaw} from \"./mercator\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);\n    return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, sign, sin, sqrt} from \"../math\";\nimport {conicProjection} from \"./conic\";\nimport {equirectangularRaw} from \"./equirectangular\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y;\n    return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle\";\nimport identity from \"../identity\";\nimport {transformer} from \"../transform\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit\";\n\nfunction scaleTranslate(kx, ky, tx, ty) {\n  return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({\n    point: function(x, y) {\n      this.stream.point(x * kx + tx, y * ky + ty);\n    }\n  });\n}\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform = identity, // scale, translate and reflect\n      x0 = null, y0, x1, y1, // clip extent\n      postclip = identity,\n      cache,\n      cacheStream,\n      projection;\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return projection = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n    },\n    postclip: function(_) {\n      return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n    },\n    clipExtent: function(_) {\n      return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n    },\n    scale: function(_) {\n      return arguments.length ? (transform = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;\n    },\n    translate: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];\n    },\n    reflectX: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;\n    },\n    reflectY: function(_) {\n      return arguments.length ? (transform = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;\n    },\n    fitExtent: function(extent, object) {\n      return fitExtent(projection, extent, object);\n    },\n    fitSize: function(size, object) {\n      return fitSize(projection, size, object);\n    },\n    fitWidth: function(width, object) {\n      return fitWidth(projection, width, object);\n    },\n    fitHeight: function(height, object) {\n      return fitHeight(projection, height, object);\n    }\n  };\n}\n","import projection from \"./index\";\nimport {abs, epsilon} from \"../math\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math\";\nimport {azimuthalInvert} from \"./azimuthal\";\nimport projection from \"./index\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math\";\nimport {mercatorProjection} from \"./mercator\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function(callback) {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      callback(node), children = node.children;\n      if (children) for (i = 0, n = children.length; i < n; ++i) {\n        next.push(children[i]);\n      }\n    }\n  } while (next.length);\n  return this;\n}\n","export default function(callback) {\n  var node = this, nodes = [node], children, i;\n  while (node = nodes.pop()) {\n    callback(node), children = node.children;\n    if (children) for (i = children.length - 1; i >= 0; --i) {\n      nodes.push(children[i]);\n    }\n  }\n  return this;\n}\n","export default function(callback) {\n  var node = this, nodes = [node], next = [], children, i, n;\n  while (node = nodes.pop()) {\n    next.push(node), children = node.children;\n    if (children) for (i = 0, n = children.length; i < n; ++i) {\n      nodes.push(children[i]);\n    }\n  }\n  while (node = next.pop()) {\n    callback(node);\n  }\n  return this;\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","export default function() {\n  var nodes = [];\n  this.each(function(node) {\n    nodes.push(node);\n  });\n  return nodes;\n}\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","import node_count from \"./count\";\nimport node_each from \"./each\";\nimport node_eachBefore from \"./eachBefore\";\nimport node_eachAfter from \"./eachAfter\";\nimport node_sum from \"./sum\";\nimport node_sort from \"./sort\";\nimport node_path from \"./path\";\nimport node_ancestors from \"./ancestors\";\nimport node_descendants from \"./descendants\";\nimport node_leaves from \"./leaves\";\nimport node_links from \"./links\";\n\nexport default function hierarchy(data, children) {\n  var root = new Node(data),\n      valued = +data.value && (root.value = data.value),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  if (children == null) children = defaultChildren;\n\n  while (node = nodes.pop()) {\n    if (valued) node.value = +node.data.value;\n    if ((childs = children(node.data)) && (n = childs.length)) {\n      node.children = new Array(n);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n  return d.children;\n}\n\nfunction copyData(node) {\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy\n};\n","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","import {shuffle, slice} from \"../array\";\n\nexport default function(circles) {\n  var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","import enclose from \"./enclose\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packEnclose(circles) {\n  if (!(n = circles.length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packEnclose(circles);\n  return circles;\n}\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {packEnclose} from \"./siblings\";\nimport {optional} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","import roundNode from \"./treemap/round\";\nimport treemapDice from \"./treemap/dice\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {required} from \"./accessors\";\nimport {Node, computeHeight} from \"./hierarchy/index\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n    preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var d,\n        i,\n        n = data.length,\n        root,\n        parent,\n        node,\n        nodes = new Array(n),\n        nodeId,\n        nodeKey,\n        nodeByKey = {};\n\n    for (i = 0; i < n; ++i) {\n      d = data[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = keyPrefix + (node.id = nodeId);\n        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], nodeId = parentId(data[i], i, data);\n      if (nodeId == null || !(nodeId += \"\")) {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      } else {\n        parent = nodeByKey[keyPrefix + nodeId];\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n","import {Node} from \"./hierarchy/index\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","import roundNode from \"./round\";\nimport squarify from \"./squarify\";\nimport {required} from \"../accessors\";\nimport constant, {constantZero} from \"../constant\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = (x0 * valueRight + x1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = (y0 * valueRight + y1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n","import dice from \"./dice\";\nimport slice from \"./slice\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice\";\nimport treemapSlice from \"./slice\";\nimport {phi, squarifyRatio} from \"./squarify\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n        else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    k += c = a[0] * b[1] - b[0] * a[1];\n    x += (a[0] + b[0]) * c;\n    y += (a[1] + b[1]) * c;\n  }\n\n  return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross\";\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  var n = points.length,\n      indexes = [0, 1],\n      size = 2;\n\n  for (var i = 2; i < n; ++i) {\n    while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n  if ((n = points.length) < 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n","export default function(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i < n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.sqrt(xa * xa + ya * ya);\n  }\n\n  return perimeter;\n}\n","export default function() {\n  return Math.random();\n}\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n  function randomLogNormal() {\n    var randomNormal = normal.source(source).apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    return function() {\n      for (var sum = 0, i = 0; i < n; ++i) sum += source();\n      return sum;\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n  function randomBates(n) {\n    var randomIrwinHall = irwinHall.source(source)(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log(1 - source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\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: this.interpolator(domain); break;\n    default: this.interpolator(interpolator).domain(domain); break;\n  }\n  return this;\n}\n","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n  var index = 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 = map();\n    var i = -1, n = _.length, d, key;\n    while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), 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\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      range = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = range[1] < range[0],\n        start = range[reverse - 0],\n        stop = range[1 - reverse];\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = 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 ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = [+_[0], +_[1]], round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = 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(), range)\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","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\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(domain) {\n  var a = domain[0], b = domain[domain.length - 1], 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    piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return 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 = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = slice.call(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : 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(transform, untransform) {\n  return transformer()(transform, untransform);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(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, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\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        i0 = 0,\n        i1 = d.length - 1,\n        start = d[i0],\n        stop = d[i1],\n        step;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n\n    step = tickIncrement(start, stop, count);\n\n    if (step > 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n      step = tickIncrement(start, stop, count);\n    } else if (step < 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n      step = tickIncrement(start, stop, count);\n    }\n\n    if (step > 0) {\n      d[i0] = Math.floor(start / step) * step;\n      d[i1] = Math.ceil(stop / step) * step;\n      domain(d);\n    } else if (step < 0) {\n      d[i0] = Math.ceil(start * step) / step;\n      d[i1] = Math.floor(stop * step) / step;\n      domain(d);\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous(identity, identity);\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export default function(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.round(i) - 1, j = Math.round(j) + 1;\n      if (u > 0) for (; i < j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i < j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\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 = new Date(+date)), date;\n  }\n\n  interval.floor = interval;\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], 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\";\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","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\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\";\nimport {durationMinute, durationSecond} from \"./duration\";\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\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration\";\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\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\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\";\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\";\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\";\nimport {durationMinute} from \"./duration\";\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\";\nimport {durationHour} from \"./duration\";\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\";\nimport {durationDay} from \"./duration\";\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\";\nimport {durationWeek} from \"./duration\";\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\";\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\";\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 {\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 newYear(y) {\n  return {y: y, m: 0, d: 1, 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    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\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    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\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    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\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, newDate) {\n    return function(string) {\n      var d = newYear(1900),\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\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"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(newYear(d.y)), 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 = newDate(newYear(d.y)), 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(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return newDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", localDate);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier, utcDate);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\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  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\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 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.Q = (+n[0]) * 1000, 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), d), p, 2);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(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), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + 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), d), p, 2);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(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), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale\";\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","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n    durationMinute = durationSecond * 60,\n    durationHour = durationMinute * 60,\n    durationDay = durationHour * 24,\n    durationWeek = durationDay * 7,\n    durationMonth = durationDay * 30,\n    durationYear = durationDay * 365;\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(year, month, week, day, hour, minute, second, millisecond, format) {\n  var scale = continuous(identity, identity),\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  var tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  function tickInterval(interval, start, stop, step) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond;\n      }\n    }\n\n    return step == null ? interval : interval.every(step);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval, step) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1, step);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval, step) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n  };\n\n  return scale;\n}\n\nexport default function() {\n  return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n  return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n  while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n  return colors;\n}\n","import colors from \"../colors\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n  return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors\";\nimport ramp from \"../ramp\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t < 0 || t > 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  c.h = 360 * t - 100;\n  c.s = 1.5 - 1.5 * ts;\n  c.l = 0.8 - 0.9 * ts;\n  return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n    pi_1_3 = Math.PI / 3,\n    pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n  var x;\n  t = (0.5 - t) * Math.PI;\n  c.r = 255 * (x = Math.sin(t)) * x;\n  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n  return c + \"\";\n}\n","import colors from \"../colors\";\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\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\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math\";\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","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 constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function line(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = 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 constant from \"./constant\";\nimport curveLinear from \"./curve/linear\";\nimport line from \"./line\";\nimport {x as pointX, y as pointY} from \"./point\";\n\nexport default function() {\n  var x0 = pointX,\n      x1 = null,\n      y0 = constant(0),\n      y1 = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = 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 constant from \"./constant\";\nimport descending from \"./descending\";\nimport identity from \"./identity\";\nimport {tau} from \"./math\";\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.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","import curveLinear from \"./linear\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport line from \"./line\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial\";\nimport area from \"./area\";\nimport {lineRadial} from \"./lineRadial\"\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","export var slice = Array.prototype.slice;\n","import {path} from \"d3-path\";\nimport {slice} from \"../array\";\nimport constant from \"../constant\";\nimport {x as pointX, y as pointY} from \"../point\";\nimport pointRadial from \"../pointRadial\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = path();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n  return link(curveVertical);\n}\n\nexport function linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","import {pi, tau} from \"../math\";\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","var tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\nexport default {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","import {pi, tau} from \"../math\";\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n    kx = Math.sin(tau / 10) * kr,\n    ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","export default {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","var sqrt3 = Math.sqrt(3);\n\nexport default {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","var c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle\";\nimport cross from \"./symbol/cross\";\nimport diamond from \"./symbol/diamond\";\nimport star from \"./symbol/star\";\nimport square from \"./symbol/square\";\nimport triangle from \"./symbol/triangle\";\nimport wye from \"./symbol/wye\";\nimport constant from \"./constant\";\n\nexport var symbols = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nexport default function() {\n  var type = constant(circle),\n      size = constant(64),\n      context = null;\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n","import noop from \"../noop\";\nimport {point} from \"./basis\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n","import {point} from \"./basis\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n","import {Basis} from \"./basis\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import noop from \"../noop\";\nimport {point} from \"./cardinal\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {point} from \"./cardinal\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {epsilon} from \"../math\";\nimport {Cardinal} from \"./cardinal\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed\";\nimport noop from \"../noop\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen\";\nimport {point} from \"./catmullRom\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import noop from \"../noop\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\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","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport offsetNone from \"./offset/none\";\nimport orderNone from \"./order/none\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var kz = keys.apply(this, arguments),\n        i,\n        m = data.length,\n        n = kz.length,\n        sz = new Array(n),\n        oz;\n\n    for (i = 0; i < n; ++i) {\n      for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n        si[j] = sij = [0, +value(data[j], ki, j, data)];\n        sij.data = data[j];\n      }\n      si.key = ki;\n    }\n\n    for (i = 0, oz = order(sz); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n","export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = yp;\n      }\n    }\n  }\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n","import none from \"./none\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n","import ascending from \"./ascending\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n","import appearance from \"./appearance\";\nimport {sum} from \"./ascending\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n","import none from \"./none\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export function x(d) {\n  return d[0];\n}\n\nexport function y(d) {\n  return d[1];\n}\n","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      extent = null;\n\n  function voronoi(data) {\n    return new Diagram(data.map(function(d, i) {\n      var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n      s.index = i;\n      s.data = d;\n      return s;\n    }), extent);\n  }\n\n  voronoi.polygons = function(data) {\n    return voronoi(data).polygons();\n  };\n\n  voronoi.links = function(data) {\n    return voronoi(data).links();\n  };\n\n  voronoi.triangles = function(data) {\n    return voronoi(data).triangles();\n  };\n\n  voronoi.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n  };\n\n  voronoi.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n  };\n\n  voronoi.extent = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n  };\n\n  voronoi.size = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n  };\n\n  return voronoi;\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function ZoomEvent(target, type, transform) {\n  this.target = target;\n  this.type = type;\n  this.transform = transform;\n}\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  return node.__zoom || identity;\n}\n","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant\";\nimport ZoomEvent from \"./event\";\nimport {Transform, identity} from \"./transform\";\nimport noevent, {nopropagation} from \"./noevent\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this, w, h;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    w = e.width.baseVal.value;\n    h = e.height.baseVal.value;\n  } else {\n    w = e.clientWidth;\n    h = e.clientHeight;\n  }\n  return [[0, 0], [w, h]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n  return -event.deltaY * (event.deltaMode ? 120 : 1) / 500;\n}\n\nfunction defaultTouchable() {\n  return \"ontouchstart\" in this;\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      gestures = [],\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled)\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n            .start()\n            .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n            .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    });\n  };\n\n  zoom.scaleTo = function(selection, k) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = centroid(e),\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    });\n  };\n\n  zoom.translateBy = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    });\n  };\n\n  zoom.translateTo = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p = centroid(e);\n      return constrain(identity.translate(p[0], p[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    });\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, center) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args),\n              e = extent.apply(that, args),\n              p = center || centroid(e),\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args) {\n    for (var i = 0, n = gestures.length, g; i < n; ++i) {\n      if ((g = gestures[i]).that === that) {\n        return g;\n      }\n    }\n    return new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.index = -1;\n    this.active = 0;\n    this.extent = extent.apply(that, args);\n  }\n\n  Gesture.prototype = {\n    start: function() {\n      if (++this.active === 1) {\n        this.index = gestures.push(this) - 1;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        gestures.splice(this.index, 1);\n        this.index = -1;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function wheeled() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = mouse(this);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent();\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = mouse(this),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation();\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved() {\n      noevent();\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped() {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent();\n      g.end();\n    }\n  }\n\n  function dblclicked() {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = mouse(this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n    noevent();\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n    else select(this).call(zoom.transform, t1);\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        started,\n        n = touches.length, i, t, p;\n\n    nopropagation();\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true;\n      else if (!g.touch1) g.touch1 = p;\n    }\n\n    // If this is a dbltap, reroute to the (optional) dblclick.zoom handler.\n    if (touchstarting) {\n      touchstarting = clearTimeout(touchstarting);\n      if (!g.touch1) {\n        g.end();\n        p = select(this).on(\"dblclick.zoom\");\n        if (p) p.apply(this, arguments);\n        return;\n      }\n    }\n\n    if (started) {\n      touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved() {\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent();\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended() {\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation();\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else g.end();\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  return zoom;\n}\n"],"names":["version","a","b","NaN","compare","length","ascendingComparator","left","x","lo","hi","mid","right","f","d","ascending","ascendingBisect","bisector","bisectRight","bisectLeft","array","pair","i","n","p","pairs","Array","values0","values1","reduce","n0","n1","values","i0","i1","value0","valueof","m","mean","value","delta","sum","isNaN","number","v","variance","Math","sqrt","min","max","prototype","slice","map","start","stop","step","arguments","ceil","range","e10","e5","e2","count","reverse","ticks","tickIncrement","isFinite","floor","power","log","LN10","error","pow","tickStep","step0","abs","step1","LN2","identity","domain","extent","threshold","sturges","histogram","data","xz","x0","x1","tz","isArray","shift","pop","bins","bin","bisect","push","_","constant","thresholds","call","value1","sort","quantile","deviation","numbers","arrays","j","merged","indexes","permutes","xi","xj","t","random","matrix","transpose","row","top","bottom","epsilon","translateX","translateY","y","scale","center","offset","bandwidth","round","entering","__axis","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","context","apply","format","spacing","range0","range1","position","copy","selection","path","selectAll","tick","order","tickExit","exit","tickEnter","enter","append","attr","line","select","text","merge","insert","transition","getAttribute","parentNode","remove","filter","each","tickSize","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","Error","Dispatch","parseTypenames","typenames","types","trim","split","name","indexOf","hasOwnProperty","type","constructor","on","typename","callback","T","get","set","that","args","c","concat","xhtml","svg","xlink","xml","xmlns","prefix","namespaces","space","local","creatorInherit","document","ownerDocument","uri","namespaceURI","documentElement","createElement","createElementNS","creatorFixed","fullname","namespace","none","selector","querySelector","groups","_groups","subgroups","group","subgroup","node","subnode","__data__","Selection","_parents","empty","querySelectorAll","selectorAll","parents","matches","match","matcher","update","_enter","sparse","EnterNode","parent","datum","_next","_parent","appendChild","child","insertBefore","next","keyPrefix","bindIndex","groupLength","dataLength","bindKey","key","nodeByKeyValue","keyValues","keyValue","size","bind","enterGroup","updateGroup","exitGroup","previous","_exit","onenter","onupdate","onexit","groups0","groups1","m0","m1","merges","group0","group1","compareDocumentPosition","compareNode","sortgroups","sortgroup","nodes","attrRemove","removeAttribute","attrRemoveNS","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","attrFunctionNS","getAttributeNS","defaultView","styleRemove","style","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","add","join","splice","contains","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","lower","previousSibling","firstChild","create","creator","constantNull","before","removeChild","selection_cloneShallow","cloneNode","selection_cloneDeep","deep","property","filterEvents","event","element","mouseenter","mouseleave","filterContextListener","listener","index","contextListener","related","relatedTarget","event1","event0","onRemove","__on","o","removeEventListener","capture","onAdd","wrap","addEventListener","customEvent","sourceEvent","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","selection_select","selection_selectAll","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","classed","selection_classed","selection_text","html","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","clone","selection_clone","selection_datum","selection_on","selection_dispatch","nextId","Local","toString","id","current","source","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","clientTop","changedTouches","touches","identifier","touch","points","nopropagation","stopImmediatePropagation","preventDefault","view","noevent","__noselect","MozUserSelect","yesdrag","noclick","setTimeout","DragEvent","target","subject","active","dx","dy","defaultFilter","button","defaultContainer","defaultSubject","defaultTouchable","container","touchable","gestures","listeners","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mouse","mousemoved","mouseupped","nodrag","clearTimeout","s","sublisteners","p0","clickDistance","factory","extend","definition","Object","Color","darker","brighter","reI","reN","reP","reHex3","reHex6","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","define","color","displayable","rgb","hex","toLowerCase","exec","parseInt","Rgb","rgbn","rgba","hsla","r","g","rgbConvert","opacity","h","l","Hsl","hslConvert","hsl","m2","hsl2rgb","deg2rad","PI","rad2deg","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","Lab","Hcl","cos","sin","rgb2lrgb","xyz2lab","z","lab","lab2xyz","lrgb2rgb","hclConvert","atan2","lch","hcl","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","Cubehelix","bl","cubehelix","cosh","sinh","basis","v0","v1","v2","v3","linear","exponential","hue","gamma","nogamma","rgbGamma","end","colorRgb","rgbSpline","spline","colors","rgbBasis","rgbBasisClosed","basisClosed","nb","na","Date","setTime","reA","reB","zero","one","bi","lastIndex","am","bm","bs","q","date","valueOf","object","degrees","rotate","skewX","scaleX","scaleY","e","atan","cssNode","cssRoot","cssView","svgNode","parseCss","decompose","parseSvg","baseVal","consolidate","interpolateTransform","parse","pxComma","pxParen","degParen","translate","xa","ya","xb","yb","interpolateTransformCss","interpolateTransformSvg","rho","SQRT2","rho2","rho4","epsilon2","exp","tanh","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","duration","colorHsl","hslLong","colorLab","colorHcl","hclLong","cubehelixGamma","colorCubehelix","cubehelixLong","piecewise","interpolate","I","interpolator","samples","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","performance","now","setFrame","requestAnimationFrame","clearNow","Timer","_call","_time","timer","restart","delay","time","TypeError","sleep","Infinity","timerFlush","wake","nap","poke","clearInterval","setInterval","elapsed","total","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","timing","schedules","__transition","tween","ease","state","init","schedule","self","interrupt","tweenRemove","tween0","tween1","tweenFunction","_id","tweenValue","interpolateNumber","interpolateRgb","interpolateString","string00","string1","interpolate0","string0","string10","attrTween","attrInterpolate","attrInterpolateNS","attrTweenNS","_value","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","Transition","_name","every","onFunction","on0","on1","sit","removeFunction","children","inherit","styleNull","styleMaybeRemove","listener0","undefined","styleTween","styleInterpolate","id0","id1","newId","Promise","resolve","reject","cancel","selection_prototype","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_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_end","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","exponent","polyIn","custom","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","expIn","expOut","expInOut","circleIn","circleOut","circleInOut","b2","b3","b4","b5","b6","b7","b8","b9","bounceIn","bounceOut","bounceInOut","overshoot","backIn","backOut","backInOut","tau","amplitude","period","elasticIn","asin","elasticOut","elasticInOut","defaultTiming","easeCubicInOut","selection_interrupt","selection_transition","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","X","handles","input","output","xy","Y","XY","cursors","overlay","w","nw","ne","se","sw","flipX","flipY","signsX","signsY","defaultExtent","width","height","__brush","brushSelection","dim","brushX","brush","brushY","handleSize","initialize","handle","redraw","started","move","emitter","emit","selection0","selection1","Emitter","starting","BrushEvent","mode","metaKey","altKey","signX","signY","W","N","e0","e1","s0","s1","moving","shifting","shiftKey","lockX","lockY","point0","moved","ended","keydowned","keyupped","dragDisable","point1","dragEnable","keyCode","compareValue","padAngle","sortGroups","sortSubgroups","sortChords","chord","groupSums","groupIndex","subgroupIndex","chords","forEach","di","dj","a0","a1","subindex","startAngle","endAngle","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","ccw","cw","da","defaultSource","defaultTarget","defaultRadius","radius","defaultStartAngle","defaultEndAngle","ribbon","buffer","argv","sr","sa0","sa1","sx0","sy0","tr","ta0","ta1","Map","has","clear","keys","entries","sortKeys","sortValues","rollup","nest","depth","createResult","setResult","valuesByKey","result","sortKey","createObject","setObject","createMap","setMap","Set","proto","ring","area","hole","ringContains","yi","pj","yj","segmentContains","collinear","within","cases","thresholdSturges","smooth","smoothLinear","contours","contour","polygons","holes","isorings","polygon","coordinates","fragmentByStart","fragmentByEnd","stitch","startIndex","endIndex","unshift","xt","yt","_0","_1","blurX","blurY","defaultX","defaultY","defaultWeight","weight","density","Float32Array","wi","geometry","transformPolygon","transformRing","transformPoint","resize","cellSize","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","Function","JSON","stringify","customConverter","inferColumns","rows","columnSet","column","pad","formatYear","year","formatDate","hours","getUTCHours","minutes","getUTCMinutes","seconds","getUTCSeconds","milliseconds","getUTCMilliseconds","getUTCFullYear","getUTCMonth","getUTCDate","delimiter","reFormat","DELIMITER","charCodeAt","convert","parseRows","eof","eol","token","replace","preformatBody","formatValue","formatBody","formatRows","formatRow","test","csv","dsv","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","tsv","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","autoType","responseBlob","response","ok","status","statusText","blob","fetch","then","responseArrayBuffer","arrayBuffer","responseText","dsvParse","dsvFormat","image","Image","onerror","onload","src","responseJson","json","parser","DOMParser","parseFromString","force","sx","sy","_x","_y","cover","tree","_root","leaf","xm","ym","xp","yp","addAll","yz","visit","x3","y3","quads","Quad","retainer","removeAll","quadtree","Quadtree","leaf_copy","treeProto","tree_add","tree_addAll","tree_cover","tree_data","tree_extent","find","tree_find","tree_remove","tree_removeAll","tree_root","tree_size","tree_visit","visitAfter","tree_visitAfter","tree_x","tree_y","vx","vy","radii","strength","iterations","ri","ri2","prepare","quad","rj","jiggle","nodeById","nodeId","links","defaultStrength","strengths","distance","distances","bias","link","alpha","initializeStrength","initializeDistance","initialRadius","initialAngle","simulation","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","fx","fy","initializeNodes","angle","initializeForce","closest","distanceMin2","distanceMax2","theta2","accumulate","distanceMin","distanceMax","theta","radiuses","toExponential","coefficient","formatDecimal","grouping","thousands","substring","numerals","re","formatSpecifier","specifier","FormatSpecifier","fill","align","sign","symbol","comma","precision","out","prefixExponent","toFixed","toPrecision","formatRounded","formatPrefixAuto","toUpperCase","prefixes","locale","formatGroup","currency","decimal","formatNumerals","percent","newFormat","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","formatTrim","padding","formatPrefix","defaultLocale","formatLocale","Adder","reset","temp","adder","bv","av","quarterPi","radians","haversin","streamGeometry","stream","streamGeometryType","streamObjectType","Feature","FeatureCollection","features","Sphere","sphere","Point","MultiPoint","LineString","streamLine","MultiLineString","Polygon","streamPolygon","MultiPolygon","GeometryCollection","geometries","closed","coordinate","lineStart","lineEnd","polygonStart","polygonEnd","areaRingSum","areaSum","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaStream","areaRingStart","areaRingEnd","areaRing","areaPointFirst","areaPoint","lambda","phi","dLambda","sdLambda","adLambda","cosPhi","sinPhi","spherical","cartesian","cartesianDot","cartesianCross","cartesianAddInPlace","cartesianScale","vector","cartesianNormalizeInPlace","phi0","lambda1","phi1","lambda2","deltaSum","ranges","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","linePoint","normal","equatorial","inflection","lambdai","phii","antimeridian","rangeCompare","rangeContains","feature","deltaMax","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","z0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroidPointCartesian","centroidLinePointFirst","centroidLinePoint","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","compose","invert","rotationIdentity","rotateRadians","deltaLambda","deltaPhi","deltaGamma","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","sinDeltaPhi","cosDeltaGamma","sinDeltaGamma","forward","circleStream","direction","cosRadius","sinRadius","circleRadius","circle","lines","rejoin","Intersection","other","entry","segments","compareIntersection","startInside","clip","segment","pointEqual","isSubject","winding","sinPhi1","cosPhi1","absDelta","intersection","phiArc","pointVisible","clipLine","sink","ringBuffer","clipBuffer","ringSink","polygonStarted","pointRing","ringStart","ringEnd","polygonContains","clipRejoin","pointLine","clean","ringSegments","validSegment","clipAntimeridianLine","clipAntimeridianInterpolate","sign0","sign1","clipAntimeridianIntersect","sinLambda0Lambda1","from","to","cr","smallRadius","notHemisphere","visible","c0","v00","point2","code","intersect","two","pa","pb","n2","n2n2","n1n2","determinant","c1","c2","n1xn2","uu","polar","meridian","q1","ax","ay","bx","by","clipMax","clipMin","clipRectangle","corner","comparePoint","ca","cb","activeStream","bufferStream","x__","y__","v__","x_","y_","v_","first","clipStream","polygonInside","cleanInside","cache","cacheStream","lengthSum","lengthStream","lengthLineStart","lengthPointFirst","lengthLineEnd","lengthPoint","cosDelta","sinDelta","containsObjectType","containsGeometry","containsGeometryType","containsPoint","containsLine","containsPolygon","ab","ao","ob","ringRadians","pointRadians","graticuleX","graticuleY","graticule","DX","DY","outline","extentMinor","extentMajor","stepMinor","stepMajor","graticule10","cy0","cy1","sy1","kx0","ky0","kx1","ky1","x00","y00","bounds","centroid","centroidPointFirstLine","centroidPointLine","centroidPointFirstRing","centroidPointRing","PathContext","_context","_radius","pointRadius","_line","_point","lengthRing","PathString","_string","_circle","projection","projectionStream","contextStream","pathArea","measure","pathMeasure","pathBounds","pathCentroid","methods","transformer","TransformStream","fit","fitBounds","clipExtent","geoStream","fitExtent","fitSize","fitWidth","fitHeight","maxDepth","cosMinDistance","project","delta2","resample","resampleNone","resampleLineTo","phi2","dx2","dy2","dz","a00","b00","c00","resampleStream","ringPoint","transformRadians","transformRotate","scaleTranslate","scaleTranslateRotate","cosAlpha","sinAlpha","ai","ci","fi","projectionMutator","projectAt","preclip","clipAntimeridian","postclip","projectResample","projectTransform","projectRotateTransform","clipAngle","clipCircle","recenter","conicProjection","parallels","cylindricalEqualAreaRaw","conicEqualAreaRaw","r0y","conicEqualArea","multiplex","streams","lower48","albers","lower48Point","alaska","alaskaPoint","hawaii","hawaiiPoint","pointStream","albersUsa","azimuthalRaw","azimuthalInvert","sc","cc","azimuthalEqualAreaRaw","cxcy","azimuthalEquidistantRaw","mercatorRaw","mercatorProjection","reclip","tany","conicConformalRaw","equirectangularRaw","conicEquidistantRaw","gy","nx","A1","A2","A3","A4","M","equalEarthRaw","l2","l6","fpy","gnomonicRaw","kx","ky","tx","ty","reflectX","reflectY","naturalEarth1Raw","phi4","orthographicRaw","stereographicRaw","transverseMercatorRaw","defaultSeparation","meanX","meanXReduce","maxY","maxYReduce","leafLeft","leafRight","separation","nodeSize","cluster","previousNode","eachAfter","eachBefore","ancestor","leastCommonAncestor","aNodes","ancestors","bNodes","leaves","hierarchy","Node","valued","childs","defaultChildren","computeHeight","node_copy","copyData","node_count","node_each","node_eachAfter","node_eachBefore","node_sum","node_sort","node_path","node_ancestors","descendants","node_descendants","node_leaves","node_links","shuffle","circles","enclosesWeak","encloseBasis","extendBasis","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","dr","encloseBasis1","r2","r21","r3","a2","a3","c3","d3","place","intersects","score","packEnclose","aa","sj","sk","pack","enclose","optional","required","constantZero","radiusLeaf","packChildren","translateChild","partition","positionNode","roundNode","treemapDice","preroot","ambiguous","defaultId","defaultParentId","parentId","stratify","nodeKey","nodeByKey","nextLeft","nextRight","moveSubtree","wm","wp","change","executeShifts","nextAncestor","vim","TreeNode","treeRoot","firstWalk","secondWalk","sizeNode","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","squarifyRatio","ratio","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","beta","dice","treemapSlice","squarify","tile","paddingStack","paddingInner","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","paddingOuter","sums","valueOffset","valueTarget","valueLeft","valueRight","xk","yk","resquarify","_squarify","lexicographicOrder","computeUpperHullIndexes","cross","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","inside","perimeter","sourceRandomUniform","randomUniform","sourceRandomNormal","randomNormal","mu","sigma","sourceRandomLogNormal","randomLogNormal","sourceRandomIrwinHall","randomIrwinHall","sourceRandomBates","randomBates","irwinHall","sourceRandomExponential","randomExponential","initRange","initInterpolator","implicit","ordinal","unknown","band","ordinalRange","rescale","sequence","rangeRound","pointish","unit","normalize","clamper","bimap","d0","polymap","clamp","interpolateValue","untransform","interpolateRound","continuous","precisionPrefix","precisionRound","precisionFixed","linearish","nice","transformLog","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","log10","log2","reflect","loggish","logs","pows","transformSymlog","log1p","transformSymexp","expm1","symlogish","symlog","transformPow","transformSqrt","transformSquare","powish","invertExtent","quantiles","quantize","newInterval","floori","offseti","field","millisecond","durationSecond","durationMinute","durationHour","durationDay","durationWeek","second","getMilliseconds","minute","getSeconds","getMinutes","hour","getHours","day","setHours","setDate","getDate","getTimezoneOffset","days","weekday","getDay","sunday","monday","tuesday","wednesday","thursday","friday","saturday","sundays","mondays","tuesdays","wednesdays","thursdays","fridays","saturdays","month","setMonth","getMonth","getFullYear","months","setFullYear","years","utcMinute","setUTCSeconds","utcMinutes","utcHour","setUTCMinutes","utcHours","utcDay","setUTCHours","setUTCDate","utcDays","utcWeekday","getUTCDay","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","utcMonth","setUTCMonth","utcMonths","utcYear","setUTCFullYear","utcYears","localDate","H","L","utcDate","UTC","newYear","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseYear","parseFullYear","parseZone","parseLiteralPercent","pads","charAt","newParse","newDate","parseSpecifier","week","Q","V","timeMonday","timeDay","U","Z","utcFormat","utcParse","numberRe","percentRe","requoteRe","requote","timeYear","timeSunday","timeThursday","dow","timeFormat","timeParse","isoSpecifier","formatIsoNative","toISOString","formatIso","parseIsoNative","parseIso","durationMonth","durationYear","calendar","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","tickIntervals","tickInterval","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","timeMillisecond","utcWeek","utcSecond","utcMillisecond","k10","sequential","sequentialLog","sequentialSymlog","sequentialPow","sequentialSqrt","sequentialQuantile","k21","diverging","divergingLog","divergingSymlog","divergingPow","divergingSqrt","scheme","interpolateRgbBasis","ramp","interpolateCubehelixLong","warm","cool","ts","pi_1_3","pi_2_3","magma","inferno","plasma","arcInnerRadius","innerRadius","arcOuterRadius","outerRadius","arcStartAngle","arcEndAngle","arcPadAngle","x10","y10","x32","y32","cornerTangents","rc","ox","oy","x11","y11","cx0","cx1","dx0","dy0","dx1","dy1","cornerRadius","padRadius","a01","a11","a10","da0","da1","ap","rp","rc0","rc1","oc","kc","lc","Linear","areaStart","areaEnd","pointX","pointY","defined","curve","curveLinear","defined0","x0z","y0z","arealine","lineX0","lineY0","lineY1","lineX1","descending","pie","arcs","curveRadialLinear","curveRadial","Radial","_curve","radial","lineRadial","lineStartAngle","lineEndAngle","lineInnerRadius","lineOuterRadius","linkSource","linkTarget","curveHorizontal","curveVertical","pointRadial","p2","p3","linkHorizontal","linkVertical","linkRadial","draw","tan30","tan30_2","ka","kr","sqrt3","symbols","diamond","square","star","triangle","wye","Basis","BasisClosed","_x2","_x3","_x4","_y2","_y3","_y4","BasisOpen","Bundle","_basis","_beta","bundle","_k","Cardinal","tension","cardinal","CardinalClosed","_x5","_y5","CardinalOpen","_l01_a","_l01_2a","_l12_a","_l12_2a","_l23_a","_l23_2a","CatmullRom","_alpha","x23","y23","catmullRom","CatmullRomClosed","CatmullRomOpen","LinearClosed","slope3","h0","h1","slope2","MonotoneX","_t0","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","px","controlPoints","py","Step","_t","stepBefore","stepAfter","series","stackValue","orderNone","offsetNone","stack","kz","sz","oz","ki","si","sij","yn","s2","sij0","sij1","s3","skj0","skj1","peaks","peak","vi","vj","appearance","tops","bottoms","RedBlackTree","RedBlackNode","R","P","after","grandpa","uncle","RedBlackFirst","RedBlackRotateLeft","RedBlackRotateRight","sibling","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","connectEdge","lx","ly","rx","ry","fm","fb","clipEdges","createCell","site","cellHalfedgeAngle","cell","va","vb","cellHalfedgeStart","cellHalfedgeEnd","sortCellHalfedges","clipCells","nCells","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","dc","v01","v11","v10","circlePool","firstCircle","Circle","attachCircle","lArc","rArc","lSite","cSite","rSite","ha","hc","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","nArcs","iArc","addBeach","directrix","dxl","dxr","leftBreakPoint","rightBreakPoint","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","triangleArea","lexicographic","Diagram","sites","triangles","_found","voronoi","ZoomEvent","Transform","applyX","applyY","location","invertX","invertY","rescaleX","rescaleY","__zoom","SVGElement","clientWidth","clientHeight","defaultTransform","defaultWheelDelta","deltaY","deltaMode","defaultConstrain","translateExtent","constrain","wheelDelta","scaleExtent","interpolateZoom","touchstarting","touchDelay","wheelDelay","zoom","wheeled","dblclicked","collection","scaleBy","scaleTo","k0","k1","translateBy","translateTo","Gesture","touch0","touch1","wheel","wheelidled","l0","l1","dp","dl"],"mappings":"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"}