{"version":3,"file":"js/166-31fe14030cef496231cd.js","mappings":"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","sources":["webpack://app/./node_modules/d3-array/src/array.js","webpack://app/./node_modules/d3-array/src/ascending.js","webpack://app/./node_modules/d3-array/src/bisector.js","webpack://app/./node_modules/d3-array/src/max.js","webpack://app/./node_modules/d3-brush/src/brush.js","webpack://app/./node_modules/d3-chord/src/math.js","webpack://app/./node_modules/d3-chord/src/array.js","webpack://app/./node_modules/d3-collection/src/map.js","webpack://app/./node_modules/d3-collection/src/set.js","webpack://app/./node_modules/d3-color/src/define.js","webpack://app/./node_modules/d3-color/src/color.js","webpack://app/./node_modules/d3-contour/src/array.js","webpack://app/./node_modules/d3-dispatch/src/dispatch.js","webpack://app/./node_modules/d3-interpolate/src/constant.js","webpack://app/./node_modules/d3-interpolate/src/number.js","webpack://app/./node_modules/d3-interpolate/src/basis.js","webpack://app/./node_modules/d3-interpolate/src/color.js","webpack://app/./node_modules/d3-interpolate/src/rgb.js","webpack://app/./node_modules/d3-interpolate/src/basisClosed.js","webpack://app/./node_modules/d3-interpolate/src/string.js","webpack://app/./node_modules/d3-random/src/defaultSource.js","webpack://app/./node_modules/d3-random/src/uniform.js","webpack://app/./node_modules/d3-random/src/normal.js","webpack://app/./node_modules/d3-random/src/irwinHall.js","webpack://app/./node_modules/d3-random/src/logNormal.js","webpack://app/./node_modules/d3-random/src/bates.js","webpack://app/./node_modules/d3-random/src/exponential.js","webpack://app/./node_modules/d3-selection/src/matcher.js","webpack://app/./node_modules/d3-selection/src/mouse.js","webpack://app/./node_modules/d3-selection/src/namespace.js","webpack://app/./node_modules/d3-selection/src/namespaces.js","webpack://app/./node_modules/d3-selection/src/point.js","webpack://app/./node_modules/d3-selection/src/select.js","webpack://app/./node_modules/d3-selection/src/selection/sparse.js","webpack://app/./node_modules/d3-selection/src/selection/enter.js","webpack://app/./node_modules/d3-selection/src/selection/data.js","webpack://app/./node_modules/d3-selection/src/selection/sort.js","webpack://app/./node_modules/d3-selection/src/selection/attr.js","webpack://app/./node_modules/d3-selection/src/selection/property.js","webpack://app/./node_modules/d3-selection/src/selection/classed.js","webpack://app/./node_modules/d3-selection/src/selection/text.js","webpack://app/./node_modules/d3-selection/src/selection/html.js","webpack://app/./node_modules/d3-selection/src/selection/raise.js","webpack://app/./node_modules/d3-selection/src/selection/lower.js","webpack://app/./node_modules/d3-selection/src/creator.js","webpack://app/./node_modules/d3-selection/src/selection/insert.js","webpack://app/./node_modules/d3-selection/src/selection/remove.js","webpack://app/./node_modules/d3-selection/src/selection/clone.js","webpack://app/./node_modules/d3-selection/src/selection/dispatch.js","webpack://app/./node_modules/d3-selection/src/selection/index.js","webpack://app/./node_modules/d3-selection/src/selection/select.js","webpack://app/./node_modules/d3-selection/src/selection/selectAll.js","webpack://app/./node_modules/d3-selection/src/selection/filter.js","webpack://app/./node_modules/d3-selection/src/constant.js","webpack://app/./node_modules/d3-selection/src/selection/exit.js","webpack://app/./node_modules/d3-selection/src/selection/join.js","webpack://app/./node_modules/d3-selection/src/selection/merge.js","webpack://app/./node_modules/d3-selection/src/selection/order.js","webpack://app/./node_modules/d3-selection/src/selection/call.js","webpack://app/./node_modules/d3-selection/src/selection/nodes.js","webpack://app/./node_modules/d3-selection/src/selection/node.js","webpack://app/./node_modules/d3-selection/src/selection/size.js","webpack://app/./node_modules/d3-selection/src/selection/empty.js","webpack://app/./node_modules/d3-selection/src/selection/each.js","webpack://app/./node_modules/d3-selection/src/selection/append.js","webpack://app/./node_modules/d3-selection/src/selection/datum.js","webpack://app/./node_modules/d3-selection/src/selection/style.js","webpack://app/./node_modules/d3-selection/src/selector.js","webpack://app/./node_modules/d3-selection/src/selectorAll.js","webpack://app/./node_modules/d3-selection/src/sourceEvent.js","webpack://app/./node_modules/d3-selection/src/window.js","webpack://app/./node_modules/d3-timer/src/timer.js","webpack://app/./node_modules/d3-timer/src/timeout.js","webpack://app/./node_modules/d3-transition/src/transition/schedule.js","webpack://app/./node_modules/d3-interpolate/src/transform/parse.js","webpack://app/./node_modules/d3-interpolate/src/transform/decompose.js","webpack://app/./node_modules/d3-interpolate/src/transform/index.js","webpack://app/./node_modules/d3-transition/src/transition/tween.js","webpack://app/./node_modules/d3-transition/src/transition/interpolate.js","webpack://app/./node_modules/d3-transition/src/transition/attr.js","webpack://app/./node_modules/d3-transition/src/transition/attrTween.js","webpack://app/./node_modules/d3-transition/src/transition/delay.js","webpack://app/./node_modules/d3-transition/src/transition/duration.js","webpack://app/./node_modules/d3-transition/src/transition/selection.js","webpack://app/./node_modules/d3-transition/src/transition/style.js","webpack://app/./node_modules/d3-transition/src/transition/index.js","webpack://app/./node_modules/d3-transition/src/transition/select.js","webpack://app/./node_modules/d3-transition/src/transition/selectAll.js","webpack://app/./node_modules/d3-transition/src/transition/filter.js","webpack://app/./node_modules/d3-transition/src/transition/merge.js","webpack://app/./node_modules/d3-transition/src/transition/transition.js","webpack://app/./node_modules/d3-transition/src/transition/on.js","webpack://app/./node_modules/d3-transition/src/transition/styleTween.js","webpack://app/./node_modules/d3-transition/src/transition/text.js","webpack://app/./node_modules/d3-transition/src/transition/textTween.js","webpack://app/./node_modules/d3-transition/src/transition/remove.js","webpack://app/./node_modules/d3-transition/src/transition/ease.js","webpack://app/./node_modules/d3-transition/src/transition/end.js","webpack://app/./node_modules/d3-transition/src/selection/transition.js","webpack://app/./node_modules/d3-ease/src/cubic.js","webpack://app/./node_modules/d3-transition/src/selection/index.js","webpack://app/./node_modules/d3-transition/src/selection/interrupt.js","webpack://app/./node_modules/d3-transition/src/interrupt.js","webpack://app/./node_modules/d3-voronoi/src/RedBlackTree.js","webpack://app/./node_modules/d3-voronoi/src/Edge.js","webpack://app/./node_modules/d3-voronoi/src/Cell.js","webpack://app/./node_modules/d3-voronoi/src/Circle.js","webpack://app/./node_modules/d3-voronoi/src/Beach.js","webpack://app/./node_modules/d3-voronoi/src/Diagram.js","webpack://app/./node_modules/d3-zoom/src/transform.js"],"sourcesContent":["var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\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","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 {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n return function(target) {\n return touch(target, event.touches, identifier);\n };\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.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 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function() {\n if (this.starting) this.starting = false, this.emit(\"start\");\n else this.emit(\"brush\");\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 (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n point0 = pointer(that),\n point = point0,\n emit = emitter(that, arguments, true).beforestart();\n\n if (type === \"overlay\") {\n if (selection) moving = true;\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 emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n nopropagation();\n interrupt(that);\n redraw.call(that);\n emit.start();\n\n function moved() {\n var point1 = pointer(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 } 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 touchmoved() {\n emitter(this, arguments).moved();\n }\n\n function touchended() {\n emitter(this, arguments).ended();\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export 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","export var slice = Array.prototype.slice;\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 {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(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\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 _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","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 constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","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\";\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 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\";\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 default function(selector) {\n return function() {\n return this.matches(selector);\n };\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 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","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","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 {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","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","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 {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","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","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace\";\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","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 var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","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} 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","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","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(x) {\n return function() {\n return x;\n };\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","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 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","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\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 none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\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 {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) {\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","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.js\";\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 {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 decompose, {identity} from \"./decompose.js\";\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","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n end: transition_end\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","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 {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\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 {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n 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","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","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","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n"],"names":["array","Array","prototype","slice","map","a","b","NaN","compare","f","length","d","x","left","lo","hi","mid","right","values","valueof","value","max","n","i","number1","e","number2","type","t","Math","cos","sin","PI","prefix","Map","object","each","key","set","isArray","o","constructor","has","this","get","remove","property","clear","keys","push","entries","size","empty","Set","proto","add","factory","extend","parent","definition","Object","create","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","RegExp","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","color_formatHex","rgb","formatHex","color_formatRgb","formatRgb","color","format","m","l","trim","toLowerCase","exec","parseInt","rgbn","Rgb","rgba","hsla","hasOwnProperty","r","g","opacity","arguments","rgb_formatHex","hex","rgb_formatRgb","isNaN","min","round","toString","h","s","Hsl","hslConvert","hsl2rgb","m1","m2","copy","channels","assign","displayable","formatHsl","k","pow","noop","dispatch","_","test","Error","Dispatch","name","c","callback","concat","on","typename","types","T","split","indexOf","call","that","args","apply","basis","t1","v0","v1","v2","v3","t2","t3","linear","gamma","y","nogamma","exponential","rgbGamma","start","end","rgbSpline","spline","colors","floor","reA","reB","source","am","bm","bs","bi","lastIndex","q","index","one","zero","join","random","sourceRandomUniform","randomUniform","defaultSource","sourceRandomNormal","randomNormal","mu","sigma","sqrt","log","sourceRandomLogNormal","randomLogNormal","normal","exp","sourceRandomIrwinHall","randomIrwinHall","sum","sourceRandomBates","randomBates","irwinHall","sourceRandomExponential","randomExponential","lambda","selector","matches","node","event","changedTouches","space","local","xhtml","svg","xlink","xml","xmlns","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","rect","getBoundingClientRect","clientLeft","top","clientTop","document","querySelector","documentElement","update","EnterNode","datum","ownerDocument","namespaceURI","_next","_parent","__data__","appendChild","child","insertBefore","next","querySelectorAll","keyPrefix","bindIndex","group","enter","exit","data","groupLength","dataLength","bindKey","keyValue","nodeByKeyValue","keyValues","ascending","attrRemove","removeAttribute","attrRemoveNS","fullname","removeAttributeNS","attrConstant","setAttribute","attrConstantNS","setAttributeNS","attrFunction","v","attrFunctionNS","propertyRemove","propertyConstant","propertyFunction","classArray","string","classList","ClassList","_node","_names","getAttribute","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","textRemove","textContent","textConstant","textFunction","htmlRemove","innerHTML","htmlConstant","htmlFunction","raise","nextSibling","parentNode","lower","previousSibling","firstChild","splice","contains","creatorInherit","uri","createElement","createElementNS","creatorFixed","namespace","constantNull","removeChild","selection_cloneShallow","clone","cloneNode","selection_cloneDeep","dispatchEvent","params","window","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchConstant","dispatchFunction","root","Selection","groups","parents","_groups","_parents","selection","select","subgroups","j","subnode","subgroup","selectAll","selectorAll","filter","match","matcher","bind","enterGroup","updateGroup","previous","i0","i1","_enter","_exit","sparse","onenter","onupdate","onexit","append","merge","order","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","sort","compareNode","sortgroups","sortgroup","nodes","attr","getAttributeNS","style","classed","text","html","creator","insert","before","deep","styleRemove","removeProperty","styleConstant","priority","setProperty","styleFunction","styleValue","getPropertyValue","getComputedStyle","none","current","sourceEvent","defaultView","taskHead","taskTail","frame","timeout","interval","pokeDelay","clockLast","clockNow","clockSkew","clock","performance","now","Date","setFrame","requestAnimationFrame","setTimeout","clearNow","Timer","_call","_time","timer","delay","time","restart","wake","timerFlush","t0","Infinity","sleep","nap","poke","clearTimeout","clearInterval","setInterval","TypeError","stop","elapsed","emptyOn","emptyTween","CREATED","STARTING","STARTED","RUNNING","ENDING","ENDED","id","timing","schedules","__transition","self","tween","schedule","state","tick","duration","ease","init","cssNode","cssRoot","cssView","svgNode","degrees","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","atan2","atan","interpolateTransform","parse","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","number","translate","scale","interpolateTransformCss","transform","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tweenRemove","tween0","tween1","tweenFunction","tweenValue","transition","_id","interpolate","value1","string00","interpolate0","string1","string0","string10","attrTweenNS","attrInterpolateNS","_value","attrTween","attrInterpolate","delayFunction","delayConstant","durationFunction","durationConstant","_name","newId","selection_prototype","children","inherit","id0","id1","listener","on0","on1","sit","every","onFunction","styleTween","styleNull","listener0","undefined","styleMaybeRemove","styleInterpolate","textTween","textInterpolate","removeFunction","easeConstant","Promise","resolve","reject","cancel","interrupt","defaultTiming","active","RedBlackTree","RedBlackNode","U","C","L","R","P","N","RedBlackRotateLeft","tree","p","RedBlackRotateRight","RedBlackFirst","after","grandpa","uncle","sibling","createEdge","edge","edges","setEdgeEnd","cells","halfedges","createBorderEdge","vertex","clipEdge","x0","y0","x1","y1","ax","ay","dx","dy","connectEdge","fm","fb","lx","ly","rx","ry","fx","fy","cellHalfedgeAngle","cell","site","va","vb","cellHalfedgeStart","cellHalfedgeEnd","firstCircle","circlePool","Circle","arc","cy","attachCircle","lArc","rArc","lSite","cSite","rSite","bx","by","cx","epsilon2","ha","hc","circle","circles","detachCircle","beachPool","Beach","createBeach","beach","detachBeach","beaches","removeBeach","disappearing","abs","unshift","iArc","nArcs","addBeach","dxl","dxr","directrix","leftBreakPoint","rightBreakPoint","createCell","newArc","hb","rfocx","rfocy","pby2","lfocx","lfocy","plby2","hl","aby2","lexicographic","sites","extent","sortCellHalfedges","clipEdges","iCell","iHalfedge","nHalfedges","startX","startY","endX","endY","nCells","cover","d2","dc","v00","v01","v11","v10","clipCells","polygons","polygon","triangles","forEach","s0","e1","s1","links","target","find","radius","_found","vx","vy","applyX","applyY","invert","location","invertX","invertY","rescaleX","domain","range","rescaleY"],"sourceRoot":""}