offices-viewer
Version:
## Current Renderable File Types
7,434 lines • 236 kB
JavaScript
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
!function () {
function n(n) {
return n && (n.ownerDocument || n.document || n).documentElement;
}
function t(n) {
return n && (n.ownerDocument && n.ownerDocument.defaultView || n.document && n || n.defaultView);
}
function e(n, t) {
return t > n ? -1 : n > t ? 1 : n >= t ? 0 : NaN;
}
function r(n) {
return null === n ? NaN : +n;
}
function u(n) {
return !isNaN(n);
}
function i(n) {
return {
left: function left(t, e, r, u) {
for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) {
var i = r + u >>> 1;
n(t[i], e) < 0 ? r = i + 1 : u = i;
}
return r;
},
right: function right(t, e, r, u) {
for (arguments.length < 3 && (r = 0), arguments.length < 4 && (u = t.length); u > r;) {
var i = r + u >>> 1;
n(t[i], e) > 0 ? u = i : r = i + 1;
}
return r;
}
};
}
function a(n) {
return n.length;
}
function o(n) {
for (var t = 1; n * t % 1;) t *= 10;
return t;
}
function l(n, t) {
for (var e in t) Object.defineProperty(n.prototype, e, {
value: t[e],
enumerable: !1
});
}
function c() {
this._ = Object.create(null);
}
function s(n) {
return (n += "") === xa || n[0] === ba ? ba + n : n;
}
function f(n) {
return (n += "")[0] === ba ? n.slice(1) : n;
}
function h(n) {
return s(n) in this._;
}
function g(n) {
return (n = s(n)) in this._ && delete this._[n];
}
function p() {
var n = [];
for (var t in this._) n.push(f(t));
return n;
}
function v() {
var n = 0;
for (var t in this._) ++n;
return n;
}
function d() {
for (var n in this._) return !1;
return !0;
}
function m() {
this._ = Object.create(null);
}
function y(n) {
return n;
}
function M(n, t, e) {
return function () {
var r = e.apply(t, arguments);
return r === t ? n : r;
};
}
function x(n, t) {
if (t in n) return t;
t = t.charAt(0).toUpperCase() + t.slice(1);
for (var e = 0, r = _a.length; r > e; ++e) {
var u = _a[e] + t;
if (u in n) return u;
}
}
function b() {}
function _() {}
function w(n) {
function t() {
for (var t, r = e, u = -1, i = r.length; ++u < i;) (t = r[u].on) && t.apply(this, arguments);
return n;
}
var e = [],
r = new c();
return t.on = function (t, u) {
var i,
a = r.get(t);
return arguments.length < 2 ? a && a.on : (a && (a.on = null, e = e.slice(0, i = e.indexOf(a)).concat(e.slice(i + 1)), r.remove(t)), u && e.push(r.set(t, {
on: u
})), n);
}, t;
}
function S() {
oa.event.preventDefault();
}
function k() {
for (var n, t = oa.event; n = t.sourceEvent;) t = n;
return t;
}
function N(n) {
for (var t = new _(), e = 0, r = arguments.length; ++e < r;) t[arguments[e]] = w(t);
return t.of = function (e, r) {
return function (u) {
try {
var i = u.sourceEvent = oa.event;
u.target = n, oa.event = u, t[u.type].apply(e, r);
} finally {
oa.event = i;
}
};
}, t;
}
function E(n) {
return Sa(n, Aa), n;
}
function A(n) {
return "function" == typeof n ? n : function () {
return ka(n, this);
};
}
function C(n) {
return "function" == typeof n ? n : function () {
return Na(n, this);
};
}
function z(n, t) {
function e() {
this.removeAttribute(n);
}
function r() {
this.removeAttributeNS(n.space, n.local);
}
function u() {
this.setAttribute(n, t);
}
function i() {
this.setAttributeNS(n.space, n.local, t);
}
function a() {
var e = t.apply(this, arguments);
null == e ? this.removeAttribute(n) : this.setAttribute(n, e);
}
function o() {
var e = t.apply(this, arguments);
null == e ? this.removeAttributeNS(n.space, n.local) : this.setAttributeNS(n.space, n.local, e);
}
return n = oa.ns.qualify(n), null == t ? n.local ? r : e : "function" == typeof t ? n.local ? o : a : n.local ? i : u;
}
function L(n) {
return n.trim().replace(/\s+/g, " ");
}
function q(n) {
return new RegExp("(?:^|\\s+)" + oa.requote(n) + "(?:\\s+|$)", "g");
}
function T(n) {
return (n + "").trim().split(/^|\s+/);
}
function R(n, t) {
function e() {
for (var e = -1; ++e < u;) n[e](this, t);
}
function r() {
for (var e = -1, r = t.apply(this, arguments); ++e < u;) n[e](this, r);
}
n = T(n).map(D);
var u = n.length;
return "function" == typeof t ? r : e;
}
function D(n) {
var t = q(n);
return function (e, r) {
if (u = e.classList) return r ? u.add(n) : u.remove(n);
var u = e.getAttribute("class") || "";
r ? (t.lastIndex = 0, t.test(u) || e.setAttribute("class", L(u + " " + n))) : e.setAttribute("class", L(u.replace(t, " ")));
};
}
function P(n, t, e) {
function r() {
this.style.removeProperty(n);
}
function u() {
this.style.setProperty(n, t, e);
}
function i() {
var r = t.apply(this, arguments);
null == r ? this.style.removeProperty(n) : this.style.setProperty(n, r, e);
}
return null == t ? r : "function" == typeof t ? i : u;
}
function j(n, t) {
function e() {
delete this[n];
}
function r() {
this[n] = t;
}
function u() {
var e = t.apply(this, arguments);
null == e ? delete this[n] : this[n] = e;
}
return null == t ? e : "function" == typeof t ? u : r;
}
function U(n) {
function t() {
var t = this.ownerDocument,
e = this.namespaceURI;
return e ? t.createElementNS(e, n) : t.createElement(n);
}
function e() {
return this.ownerDocument.createElementNS(n.space, n.local);
}
return "function" == typeof n ? n : (n = oa.ns.qualify(n)).local ? e : t;
}
function F() {
var n = this.parentNode;
n && n.removeChild(this);
}
function H(n) {
return {
__data__: n
};
}
function O(n) {
return function () {
return _Ea(this, n);
};
}
function I(n) {
return arguments.length || (n = e), function (t, e) {
return t && e ? n(t.__data__, e.__data__) : !t - !e;
};
}
function Y(n, t) {
for (var e = 0, r = n.length; r > e; e++) for (var u, i = n[e], a = 0, o = i.length; o > a; a++) (u = i[a]) && t(u, a, e);
return n;
}
function Z(n) {
return Sa(n, za), n;
}
function V(n) {
var t, e;
return function (r, u, i) {
var a,
o = n[i].update,
l = o.length;
for (i != e && (e = i, t = 0), u >= t && (t = u + 1); !(a = o[t]) && ++t < l;);
return a;
};
}
function X(n, t, e) {
function r() {
var t = this[a];
t && (this.removeEventListener(n, t, t.$), delete this[a]);
}
function u() {
var u = l(t, ca(arguments));
r.call(this), this.addEventListener(n, this[a] = u, u.$ = e), u._ = t;
}
function i() {
var t,
e = new RegExp("^__on([^.]+)" + oa.requote(n) + "$");
for (var r in this) if (t = r.match(e)) {
var u = this[r];
this.removeEventListener(t[1], u, u.$), delete this[r];
}
}
var a = "__on" + n,
o = n.indexOf("."),
l = $;
o > 0 && (n = n.slice(0, o));
var c = La.get(n);
return c && (n = c, l = B), o ? t ? u : r : t ? b : i;
}
function $(n, t) {
return function (e) {
var r = oa.event;
oa.event = e, t[0] = this.__data__;
try {
n.apply(this, t);
} finally {
oa.event = r;
}
};
}
function B(n, t) {
var e = $(n, t);
return function (n) {
var t = this,
r = n.relatedTarget;
r && (r === t || 8 & r.compareDocumentPosition(t)) || e.call(t, n);
};
}
function W(e) {
var r = ".dragsuppress-" + ++Ta,
u = "click" + r,
i = oa.select(t(e)).on("touchmove" + r, S).on("dragstart" + r, S).on("selectstart" + r, S);
if (null == qa && (qa = "onselectstart" in e ? !1 : x(e.style, "userSelect")), qa) {
var a = n(e).style,
o = a[qa];
a[qa] = "none";
}
return function (n) {
if (i.on(r, null), qa && (a[qa] = o), n) {
var t = function t() {
i.on(u, null);
};
i.on(u, function () {
S(), t();
}, !0), setTimeout(t, 0);
}
};
}
function J(n, e) {
e.changedTouches && (e = e.changedTouches[0]);
var r = n.ownerSVGElement || n;
if (r.createSVGPoint) {
var u = r.createSVGPoint();
if (0 > Ra) {
var i = t(n);
if (i.scrollX || i.scrollY) {
r = oa.select("body").append("svg").style({
position: "absolute",
top: 0,
left: 0,
margin: 0,
padding: 0,
border: "none"
}, "important");
var a = r[0][0].getScreenCTM();
Ra = !(a.f || a.e), r.remove();
}
}
return Ra ? (u.x = e.pageX, u.y = e.pageY) : (u.x = e.clientX, u.y = e.clientY), u = u.matrixTransform(n.getScreenCTM().inverse()), [u.x, u.y];
}
var o = n.getBoundingClientRect();
return [e.clientX - o.left - n.clientLeft, e.clientY - o.top - n.clientTop];
}
function G() {
return oa.event.changedTouches[0].identifier;
}
function K(n) {
return n > 0 ? 1 : 0 > n ? -1 : 0;
}
function Q(n, t, e) {
return (t[0] - n[0]) * (e[1] - n[1]) - (t[1] - n[1]) * (e[0] - n[0]);
}
function nn(n) {
return n > 1 ? 0 : -1 > n ? ja : Math.acos(n);
}
function tn(n) {
return n > 1 ? Ha : -1 > n ? -Ha : Math.asin(n);
}
function en(n) {
return ((n = Math.exp(n)) - 1 / n) / 2;
}
function rn(n) {
return ((n = Math.exp(n)) + 1 / n) / 2;
}
function un(n) {
return ((n = Math.exp(2 * n)) - 1) / (n + 1);
}
function an(n) {
return (n = Math.sin(n / 2)) * n;
}
function on() {}
function ln(n, t, e) {
return this instanceof ln ? (this.h = +n, this.s = +t, void (this.l = +e)) : arguments.length < 2 ? n instanceof ln ? new ln(n.h, n.s, n.l) : _n("" + n, wn, ln) : new ln(n, t, e);
}
function cn(n, t, e) {
function r(n) {
return n > 360 ? n -= 360 : 0 > n && (n += 360), 60 > n ? i + (a - i) * n / 60 : 180 > n ? a : 240 > n ? i + (a - i) * (240 - n) / 60 : i;
}
function u(n) {
return Math.round(255 * r(n));
}
var i, a;
return n = isNaN(n) ? 0 : (n %= 360) < 0 ? n + 360 : n, t = isNaN(t) ? 0 : 0 > t ? 0 : t > 1 ? 1 : t, e = 0 > e ? 0 : e > 1 ? 1 : e, a = .5 >= e ? e * (1 + t) : e + t - e * t, i = 2 * e - a, new yn(u(n + 120), u(n), u(n - 120));
}
function sn(n, t, e) {
return this instanceof sn ? (this.h = +n, this.c = +t, void (this.l = +e)) : arguments.length < 2 ? n instanceof sn ? new sn(n.h, n.c, n.l) : n instanceof hn ? pn(n.l, n.a, n.b) : pn((n = Sn((n = oa.rgb(n)).r, n.g, n.b)).l, n.a, n.b) : new sn(n, t, e);
}
function fn(n, t, e) {
return isNaN(n) && (n = 0), isNaN(t) && (t = 0), new hn(e, Math.cos(n *= Oa) * t, Math.sin(n) * t);
}
function hn(n, t, e) {
return this instanceof hn ? (this.l = +n, this.a = +t, void (this.b = +e)) : arguments.length < 2 ? n instanceof hn ? new hn(n.l, n.a, n.b) : n instanceof sn ? fn(n.h, n.c, n.l) : Sn((n = yn(n)).r, n.g, n.b) : new hn(n, t, e);
}
function gn(n, t, e) {
var r = (n + 16) / 116,
u = r + t / 500,
i = r - e / 200;
return u = vn(u) * Ka, r = vn(r) * Qa, i = vn(i) * no, new yn(mn(3.2404542 * u - 1.5371385 * r - .4985314 * i), mn(-.969266 * u + 1.8760108 * r + .041556 * i), mn(.0556434 * u - .2040259 * r + 1.0572252 * i));
}
function pn(n, t, e) {
return n > 0 ? new sn(Math.atan2(e, t) * Ia, Math.sqrt(t * t + e * e), n) : new sn(NaN, NaN, n);
}
function vn(n) {
return n > .206893034 ? n * n * n : (n - 4 / 29) / 7.787037;
}
function dn(n) {
return n > .008856 ? Math.pow(n, 1 / 3) : 7.787037 * n + 4 / 29;
}
function mn(n) {
return Math.round(255 * (.00304 >= n ? 12.92 * n : 1.055 * Math.pow(n, 1 / 2.4) - .055));
}
function yn(n, t, e) {
return this instanceof yn ? (this.r = ~~n, this.g = ~~t, void (this.b = ~~e)) : arguments.length < 2 ? n instanceof yn ? new yn(n.r, n.g, n.b) : _n("" + n, yn, cn) : new yn(n, t, e);
}
function Mn(n) {
return new yn(n >> 16, n >> 8 & 255, 255 & n);
}
function xn(n) {
return Mn(n) + "";
}
function bn(n) {
return 16 > n ? "0" + Math.max(0, n).toString(16) : Math.min(255, n).toString(16);
}
function _n(n, t, e) {
var r,
u,
i,
a = 0,
o = 0,
l = 0;
if (r = /([a-z]+)\((.*)\)/.exec(n = n.toLowerCase())) switch (u = r[2].split(","), r[1]) {
case "hsl":
return e(parseFloat(u[0]), parseFloat(u[1]) / 100, parseFloat(u[2]) / 100);
case "rgb":
return t(Nn(u[0]), Nn(u[1]), Nn(u[2]));
}
return (i = ro.get(n)) ? t(i.r, i.g, i.b) : (null == n || "#" !== n.charAt(0) || isNaN(i = parseInt(n.slice(1), 16)) || (4 === n.length ? (a = (3840 & i) >> 4, a = a >> 4 | a, o = 240 & i, o = o >> 4 | o, l = 15 & i, l = l << 4 | l) : 7 === n.length && (a = (16711680 & i) >> 16, o = (65280 & i) >> 8, l = 255 & i)), t(a, o, l));
}
function wn(n, t, e) {
var r,
u,
i = Math.min(n /= 255, t /= 255, e /= 255),
a = Math.max(n, t, e),
o = a - i,
l = (a + i) / 2;
return o ? (u = .5 > l ? o / (a + i) : o / (2 - a - i), r = n == a ? (t - e) / o + (e > t ? 6 : 0) : t == a ? (e - n) / o + 2 : (n - t) / o + 4, r *= 60) : (r = NaN, u = l > 0 && 1 > l ? 0 : r), new ln(r, u, l);
}
function Sn(n, t, e) {
n = kn(n), t = kn(t), e = kn(e);
var r = dn((.4124564 * n + .3575761 * t + .1804375 * e) / Ka),
u = dn((.2126729 * n + .7151522 * t + .072175 * e) / Qa),
i = dn((.0193339 * n + .119192 * t + .9503041 * e) / no);
return hn(116 * u - 16, 500 * (r - u), 200 * (u - i));
}
function kn(n) {
return (n /= 255) <= .04045 ? n / 12.92 : Math.pow((n + .055) / 1.055, 2.4);
}
function Nn(n) {
var t = parseFloat(n);
return "%" === n.charAt(n.length - 1) ? Math.round(2.55 * t) : t;
}
function En(n) {
return "function" == typeof n ? n : function () {
return n;
};
}
function An(n) {
return function (t, e, r) {
return 2 === arguments.length && "function" == typeof e && (r = e, e = null), Cn(t, e, n, r);
};
}
function Cn(n, t, e, r) {
function u() {
var n,
t = l.status;
if (!t && Ln(l) || t >= 200 && 300 > t || 304 === t) {
try {
n = e.call(i, l);
} catch (r) {
return void a.error.call(i, r);
}
a.load.call(i, n);
} else a.error.call(i, l);
}
var i = {},
a = oa.dispatch("beforesend", "progress", "load", "error"),
o = {},
l = new XMLHttpRequest(),
c = null;
return !this.XDomainRequest || "withCredentials" in l || !/^(http(s)?:)?\/\//.test(n) || (l = new XDomainRequest()), "onload" in l ? l.onload = l.onerror = u : l.onreadystatechange = function () {
l.readyState > 3 && u();
}, l.onprogress = function (n) {
var t = oa.event;
oa.event = n;
try {
a.progress.call(i, l);
} finally {
oa.event = t;
}
}, i.header = function (n, t) {
return n = (n + "").toLowerCase(), arguments.length < 2 ? o[n] : (null == t ? delete o[n] : o[n] = t + "", i);
}, i.mimeType = function (n) {
return arguments.length ? (t = null == n ? null : n + "", i) : t;
}, i.responseType = function (n) {
return arguments.length ? (c = n, i) : c;
}, i.response = function (n) {
return e = n, i;
}, ["get", "post"].forEach(function (n) {
i[n] = function () {
return i.send.apply(i, [n].concat(ca(arguments)));
};
}), i.send = function (e, r, u) {
if (2 === arguments.length && "function" == typeof r && (u = r, r = null), l.open(e, n, !0), null == t || "accept" in o || (o.accept = t + ",*/*"), l.setRequestHeader) for (var s in o) l.setRequestHeader(s, o[s]);
return null != t && l.overrideMimeType && l.overrideMimeType(t), null != c && (l.responseType = c), null != u && i.on("error", u).on("load", function (n) {
u(null, n);
}), a.beforesend.call(i, l), l.send(null == r ? null : r), i;
}, i.abort = function () {
return l.abort(), i;
}, oa.rebind(i, a, "on"), null == r ? i : i.get(zn(r));
}
function zn(n) {
return 1 === n.length ? function (t, e) {
n(null == t ? e : null);
} : n;
}
function Ln(n) {
var t = n.responseType;
return t && "text" !== t ? n.response : n.responseText;
}
function qn(n, t, e) {
var r = arguments.length;
2 > r && (t = 0), 3 > r && (e = Date.now());
var u = e + t,
i = {
c: n,
t: u,
n: null
};
return io ? io.n = i : uo = i, io = i, ao || (oo = clearTimeout(oo), ao = 1, lo(Tn)), i;
}
function Tn() {
var n = Rn(),
t = Dn() - n;
t > 24 ? (isFinite(t) && (clearTimeout(oo), oo = setTimeout(Tn, t)), ao = 0) : (ao = 1, lo(Tn));
}
function Rn() {
for (var n = Date.now(), t = uo; t;) n >= t.t && t.c(n - t.t) && (t.c = null), t = t.n;
return n;
}
function Dn() {
for (var n, t = uo, e = 1 / 0; t;) t.c ? (t.t < e && (e = t.t), t = (n = t).n) : t = n ? n.n = t.n : uo = t.n;
return io = n, e;
}
function Pn(n, t) {
return t - (n ? Math.ceil(Math.log(n) / Math.LN10) : 1);
}
function jn(n, t) {
var e = Math.pow(10, 3 * Ma(8 - t));
return {
scale: t > 8 ? function (n) {
return n / e;
} : function (n) {
return n * e;
},
symbol: n
};
}
function Un(n) {
var t = n.decimal,
e = n.thousands,
r = n.grouping,
u = n.currency,
i = r && e ? function (n, t) {
for (var u = n.length, i = [], a = 0, o = r[0], l = 0; u > 0 && o > 0 && (l + o + 1 > t && (o = Math.max(1, t - l)), i.push(n.substring(u -= o, u + o)), !((l += o + 1) > t));) o = r[a = (a + 1) % r.length];
return i.reverse().join(e);
} : y;
return function (n) {
var e = so.exec(n),
r = e[1] || " ",
a = e[2] || ">",
o = e[3] || "-",
l = e[4] || "",
c = e[5],
s = +e[6],
f = e[7],
h = e[8],
g = e[9],
p = 1,
v = "",
d = "",
m = !1,
y = !0;
switch (h && (h = +h.substring(1)), (c || "0" === r && "=" === a) && (c = r = "0", a = "="), g) {
case "n":
f = !0, g = "g";
break;
case "%":
p = 100, d = "%", g = "f";
break;
case "p":
p = 100, d = "%", g = "r";
break;
case "b":
case "o":
case "x":
case "X":
"#" === l && (v = "0" + g.toLowerCase());
case "c":
y = !1;
case "d":
m = !0, h = 0;
break;
case "s":
p = -1, g = "r";
}
"$" === l && (v = u[0], d = u[1]), "r" != g || h || (g = "g"), null != h && ("g" == g ? h = Math.max(1, Math.min(21, h)) : ("e" == g || "f" == g) && (h = Math.max(0, Math.min(20, h)))), g = fo.get(g) || Fn;
var M = c && f;
return function (n) {
var e = d;
if (m && n % 1) return "";
var u = 0 > n || 0 === n && 0 > 1 / n ? (n = -n, "-") : "-" === o ? "" : o;
if (0 > p) {
var l = oa.formatPrefix(n, h);
n = l.scale(n), e = l.symbol + d;
} else n *= p;
n = g(n, h);
var x,
b,
_ = n.lastIndexOf(".");
if (0 > _) {
var w = y ? n.lastIndexOf("e") : -1;
0 > w ? (x = n, b = "") : (x = n.substring(0, w), b = n.substring(w));
} else x = n.substring(0, _), b = t + n.substring(_ + 1);
!c && f && (x = i(x, 1 / 0));
var S = v.length + x.length + b.length + (M ? 0 : u.length),
k = s > S ? new Array(S = s - S + 1).join(r) : "";
return M && (x = i(k + x, k.length ? s - b.length : 1 / 0)), u += v, n = x + b, ("<" === a ? u + n + k : ">" === a ? k + u + n : "^" === a ? k.substring(0, S >>= 1) + u + n + k.substring(S) : u + (M ? n : k + n)) + e;
};
};
}
function Fn(n) {
return n + "";
}
function Hn() {
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
}
function On(n, t, e) {
function r(t) {
var e = n(t),
r = i(e, 1);
return r - t > t - e ? e : r;
}
function u(e) {
return t(e = n(new go(e - 1)), 1), e;
}
function i(n, e) {
return t(n = new go(+n), e), n;
}
function a(n, r, i) {
var a = u(n),
o = [];
if (i > 1) for (; r > a;) e(a) % i || o.push(new Date(+a)), t(a, 1);else for (; r > a;) o.push(new Date(+a)), t(a, 1);
return o;
}
function o(n, t, e) {
try {
go = Hn;
var r = new Hn();
return r._ = n, a(r, t, e);
} finally {
go = Date;
}
}
n.floor = n, n.round = r, n.ceil = u, n.offset = i, n.range = a;
var l = n.utc = In(n);
return l.floor = l, l.round = In(r), l.ceil = In(u), l.offset = In(i), l.range = o, n;
}
function In(n) {
return function (t, e) {
try {
go = Hn;
var r = new Hn();
return r._ = t, n(r, e)._;
} finally {
go = Date;
}
};
}
function Yn(n) {
function t(n) {
function t(t) {
for (var e, u, i, a = [], o = -1, l = 0; ++o < r;) 37 === n.charCodeAt(o) && (a.push(n.slice(l, o)), null != (u = vo[e = n.charAt(++o)]) && (e = n.charAt(++o)), (i = A[e]) && (e = i(t, null == u ? "e" === e ? " " : "0" : u)), a.push(e), l = o + 1);
return a.push(n.slice(l, o)), a.join("");
}
var r = n.length;
return t.parse = function (t) {
var r = {
y: 1900,
m: 0,
d: 1,
H: 0,
M: 0,
S: 0,
L: 0,
Z: null
},
u = e(r, n, t, 0);
if (u != t.length) return null;
"p" in r && (r.H = r.H % 12 + 12 * r.p);
var i = null != r.Z && go !== Hn,
a = new (i ? Hn : go)();
return "j" in r ? a.setFullYear(r.y, 0, r.j) : "W" in r || "U" in r ? ("w" in r || (r.w = "W" in r ? 1 : 0), a.setFullYear(r.y, 0, 1), a.setFullYear(r.y, 0, "W" in r ? (r.w + 6) % 7 + 7 * r.W - (a.getDay() + 5) % 7 : r.w + 7 * r.U - (a.getDay() + 6) % 7)) : a.setFullYear(r.y, r.m, r.d), a.setHours(r.H + (r.Z / 100 | 0), r.M + r.Z % 100, r.S, r.L), i ? a._ : a;
}, t.toString = function () {
return n;
}, t;
}
function e(n, t, e, r) {
for (var u, i, a, o = 0, l = t.length, c = e.length; l > o;) {
if (r >= c) return -1;
if (u = t.charCodeAt(o++), 37 === u) {
if (a = t.charAt(o++), i = C[a in vo ? t.charAt(o++) : a], !i || (r = i(n, e, r)) < 0) return -1;
} else if (u != e.charCodeAt(r++)) return -1;
}
return r;
}
function r(n, t, e) {
_.lastIndex = 0;
var r = _.exec(t.slice(e));
return r ? (n.w = w.get(r[0].toLowerCase()), e + r[0].length) : -1;
}
function u(n, t, e) {
x.lastIndex = 0;
var r = x.exec(t.slice(e));
return r ? (n.w = b.get(r[0].toLowerCase()), e + r[0].length) : -1;
}
function i(n, t, e) {
N.lastIndex = 0;
var r = N.exec(t.slice(e));
return r ? (n.m = E.get(r[0].toLowerCase()), e + r[0].length) : -1;
}
function a(n, t, e) {
S.lastIndex = 0;
var r = S.exec(t.slice(e));
return r ? (n.m = k.get(r[0].toLowerCase()), e + r[0].length) : -1;
}
function o(n, t, r) {
return e(n, A.c.toString(), t, r);
}
function l(n, t, r) {
return e(n, A.x.toString(), t, r);
}
function c(n, t, r) {
return e(n, A.X.toString(), t, r);
}
function s(n, t, e) {
var r = M.get(t.slice(e, e += 2).toLowerCase());
return null == r ? -1 : (n.p = r, e);
}
var f = n.dateTime,
h = n.date,
g = n.time,
_p = n.periods,
v = n.days,
d = n.shortDays,
m = n.months,
y = n.shortMonths;
t.utc = function (n) {
function e(n) {
try {
go = Hn;
var t = new go();
return t._ = n, r(t);
} finally {
go = Date;
}
}
var r = t(n);
return e.parse = function (n) {
try {
go = Hn;
var t = r.parse(n);
return t && t._;
} finally {
go = Date;
}
}, e.toString = r.toString, e;
}, t.multi = t.utc.multi = ct;
var M = oa.map(),
x = Vn(v),
b = Xn(v),
_ = Vn(d),
w = Xn(d),
S = Vn(m),
k = Xn(m),
N = Vn(y),
E = Xn(y);
_p.forEach(function (n, t) {
M.set(n.toLowerCase(), t);
});
var A = {
a: function a(n) {
return d[n.getDay()];
},
A: function A(n) {
return v[n.getDay()];
},
b: function b(n) {
return y[n.getMonth()];
},
B: function B(n) {
return m[n.getMonth()];
},
c: t(f),
d: function d(n, t) {
return Zn(n.getDate(), t, 2);
},
e: function e(n, t) {
return Zn(n.getDate(), t, 2);
},
H: function H(n, t) {
return Zn(n.getHours(), t, 2);
},
I: function I(n, t) {
return Zn(n.getHours() % 12 || 12, t, 2);
},
j: function j(n, t) {
return Zn(1 + ho.dayOfYear(n), t, 3);
},
L: function L(n, t) {
return Zn(n.getMilliseconds(), t, 3);
},
m: function m(n, t) {
return Zn(n.getMonth() + 1, t, 2);
},
M: function M(n, t) {
return Zn(n.getMinutes(), t, 2);
},
p: function p(n) {
return _p[+(n.getHours() >= 12)];
},
S: function S(n, t) {
return Zn(n.getSeconds(), t, 2);
},
U: function U(n, t) {
return Zn(ho.sundayOfYear(n), t, 2);
},
w: function w(n) {
return n.getDay();
},
W: function W(n, t) {
return Zn(ho.mondayOfYear(n), t, 2);
},
x: t(h),
X: t(g),
y: function y(n, t) {
return Zn(n.getFullYear() % 100, t, 2);
},
Y: function Y(n, t) {
return Zn(n.getFullYear() % 1e4, t, 4);
},
Z: ot,
"%": function _() {
return "%";
}
},
C = {
a: r,
A: u,
b: i,
B: a,
c: o,
d: tt,
e: tt,
H: rt,
I: rt,
j: et,
L: at,
m: nt,
M: ut,
p: s,
S: it,
U: Bn,
w: $n,
W: Wn,
x: l,
X: c,
y: Gn,
Y: Jn,
Z: Kn,
"%": lt
};
return t;
}
function Zn(n, t, e) {
var r = 0 > n ? "-" : "",
u = (r ? -n : n) + "",
i = u.length;
return r + (e > i ? new Array(e - i + 1).join(t) + u : u);
}
function Vn(n) {
return new RegExp("^(?:" + n.map(oa.requote).join("|") + ")", "i");
}
function Xn(n) {
for (var t = new c(), e = -1, r = n.length; ++e < r;) t.set(n[e].toLowerCase(), e);
return t;
}
function $n(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 1));
return r ? (n.w = +r[0], e + r[0].length) : -1;
}
function Bn(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e));
return r ? (n.U = +r[0], e + r[0].length) : -1;
}
function Wn(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e));
return r ? (n.W = +r[0], e + r[0].length) : -1;
}
function Jn(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 4));
return r ? (n.y = +r[0], e + r[0].length) : -1;
}
function Gn(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.y = Qn(+r[0]), e + r[0].length) : -1;
}
function Kn(n, t, e) {
return /^[+-]\d{4}$/.test(t = t.slice(e, e + 5)) ? (n.Z = -t, e + 5) : -1;
}
function Qn(n) {
return n + (n > 68 ? 1900 : 2e3);
}
function nt(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.m = r[0] - 1, e + r[0].length) : -1;
}
function tt(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.d = +r[0], e + r[0].length) : -1;
}
function et(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 3));
return r ? (n.j = +r[0], e + r[0].length) : -1;
}
function rt(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.H = +r[0], e + r[0].length) : -1;
}
function ut(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.M = +r[0], e + r[0].length) : -1;
}
function it(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 2));
return r ? (n.S = +r[0], e + r[0].length) : -1;
}
function at(n, t, e) {
mo.lastIndex = 0;
var r = mo.exec(t.slice(e, e + 3));
return r ? (n.L = +r[0], e + r[0].length) : -1;
}
function ot(n) {
var t = n.getTimezoneOffset(),
e = t > 0 ? "-" : "+",
r = Ma(t) / 60 | 0,
u = Ma(t) % 60;
return e + Zn(r, "0", 2) + Zn(u, "0", 2);
}
function lt(n, t, e) {
yo.lastIndex = 0;
var r = yo.exec(t.slice(e, e + 1));
return r ? e + r[0].length : -1;
}
function ct(n) {
for (var t = n.length, e = -1; ++e < t;) n[e][0] = this(n[e][0]);
return function (t) {
for (var e = 0, r = n[e]; !r[1](t);) r = n[++e];
return r[0](t);
};
}
function st() {}
function ft(n, t, e) {
var r = e.s = n + t,
u = r - n,
i = r - u;
e.t = n - i + (t - u);
}
function ht(n, t) {
n && _o.hasOwnProperty(n.type) && _o[n.type](n, t);
}
function gt(n, t, e) {
var r,
u = -1,
i = n.length - e;
for (t.lineStart(); ++u < i;) r = n[u], t.point(r[0], r[1], r[2]);
t.lineEnd();
}
function pt(n, t) {
var e = -1,
r = n.length;
for (t.polygonStart(); ++e < r;) gt(n[e], t, 1);
t.polygonEnd();
}
function vt() {
function n(n, t) {
n *= Oa, t = t * Oa / 2 + ja / 4;
var e = n - r,
a = e >= 0 ? 1 : -1,
o = a * e,
l = Math.cos(t),
c = Math.sin(t),
s = i * c,
f = u * l + s * Math.cos(o),
h = s * a * Math.sin(o);
So.add(Math.atan2(h, f)), r = n, u = l, i = c;
}
var t, e, r, u, i;
ko.point = function (a, o) {
ko.point = n, r = (t = a) * Oa, u = Math.cos(o = (e = o) * Oa / 2 + ja / 4), i = Math.sin(o);
}, ko.lineEnd = function () {
n(t, e);
};
}
function dt(n) {
var t = n[0],
e = n[1],
r = Math.cos(e);
return [r * Math.cos(t), r * Math.sin(t), Math.sin(e)];
}
function mt(n, t) {
return n[0] * t[0] + n[1] * t[1] + n[2] * t[2];
}
function yt(n, t) {
return [n[1] * t[2] - n[2] * t[1], n[2] * t[0] - n[0] * t[2], n[0] * t[1] - n[1] * t[0]];
}
function Mt(n, t) {
n[0] += t[0], n[1] += t[1], n[2] += t[2];
}
function xt(n, t) {
return [n[0] * t, n[1] * t, n[2] * t];
}
function bt(n) {
var t = Math.sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]);
n[0] /= t, n[1] /= t, n[2] /= t;
}
function _t(n) {
return [Math.atan2(n[1], n[0]), tn(n[2])];
}
function wt(n, t) {
return Ma(n[0] - t[0]) < Da && Ma(n[1] - t[1]) < Da;
}
function St(n, t) {
n *= Oa;
var e = Math.cos(t *= Oa);
kt(e * Math.cos(n), e * Math.sin(n), Math.sin(t));
}
function kt(n, t, e) {
++No, Ao += (n - Ao) / No, Co += (t - Co) / No, zo += (e - zo) / No;
}
function Nt() {
function n(n, u) {
n *= Oa;
var i = Math.cos(u *= Oa),
a = i * Math.cos(n),
o = i * Math.sin(n),
l = Math.sin(u),
c = Math.atan2(Math.sqrt((c = e * l - r * o) * c + (c = r * a - t * l) * c + (c = t * o - e * a) * c), t * a + e * o + r * l);
Eo += c, Lo += c * (t + (t = a)), qo += c * (e + (e = o)), To += c * (r + (r = l)), kt(t, e, r);
}
var t, e, r;
jo.point = function (u, i) {
u *= Oa;
var a = Math.cos(i *= Oa);
t = a * Math.cos(u), e = a * Math.sin(u), r = Math.sin(i), jo.point = n, kt(t, e, r);
};
}
function Et() {
jo.point = St;
}
function At() {
function n(n, t) {
n *= Oa;
var e = Math.cos(t *= Oa),
a = e * Math.cos(n),
o = e * Math.sin(n),
l = Math.sin(t),
c = u * l - i * o,
s = i * a - r * l,
f = r * o - u * a,
h = Math.sqrt(c * c + s * s + f * f),
g = r * a + u * o + i * l,
p = h && -nn(g) / h,
v = Math.atan2(h, g);
Ro += p * c, Do += p * s, Po += p * f, Eo += v, Lo += v * (r + (r = a)), qo += v * (u + (u = o)), To += v * (i + (i = l)), kt(r, u, i);
}
var t, e, r, u, i;
jo.point = function (a, o) {
t = a, e = o, jo.point = n, a *= Oa;
var l = Math.cos(o *= Oa);
r = l * Math.cos(a), u = l * Math.sin(a), i = Math.sin(o), kt(r, u, i);
}, jo.lineEnd = function () {
n(t, e), jo.lineEnd = Et, jo.point = St;
};
}
function Ct(n, t) {
function e(e, r) {
return e = n(e, r), t(e[0], e[1]);
}
return n.invert && t.invert && (e.invert = function (e, r) {
return e = t.invert(e, r), e && n.invert(e[0], e[1]);
}), e;
}
function zt() {
return !0;
}
function Lt(n, t, e, r, u) {
var i = [],
a = [];
if (n.forEach(function (n) {
if (!((t = n.length - 1) <= 0)) {
var t,
e = n[0],
r = n[t];
if (wt(e, r)) {
u.lineStart();
for (var o = 0; t > o; ++o) u.point((e = n[o])[0], e[1]);
return void u.lineEnd();
}
var l = new Tt(e, n, null, !0),
c = new Tt(e, null, l, !1);
l.o = c, i.push(l), a.push(c), l = new Tt(r, n, null, !1), c = new Tt(r, null, l, !0), l.o = c, i.push(l), a.push(c);
}
}), a.sort(t), qt(i), qt(a), i.length) {
for (var o = 0, l = e, c = a.length; c > o; ++o) a[o].e = l = !l;
for (var s, f, h = i[0];;) {
for (var g = h, p = !0; g.v;) if ((g = g.n) === h) return;
s = g.z, u.lineStart();
do {
if (g.v = g.o.v = !0, g.e) {
if (p) for (var o = 0, c = s.length; c > o; ++o) u.point((f = s[o])[0], f[1]);else r(g.x, g.n.x, 1, u);
g = g.n;
} else {
if (p) {
s = g.p.z;
for (var o = s.length - 1; o >= 0; --o) u.point((f = s[o])[0], f[1]);
} else r(g.x, g.p.x, -1, u);
g = g.p;
}
g = g.o, s = g.z, p = !p;
} while (!g.v);
u.lineEnd();
}
}
}
function qt(n) {
if (t = n.length) {
for (var t, e, r = 0, u = n[0]; ++r < t;) u.n = e = n[r], e.p = u, u = e;
u.n = e = n[0], e.p = u;
}
}
function Tt(n, t, e, r) {
this.x = n, this.z = t, this.o = e, this.e = r, this.v = !1, this.n = this.p = null;
}
function Rt(n, t, e, r) {
return function (u, i) {
function a(t, e) {
var r = u(t, e);
n(t = r[0], e = r[1]) && i.point(t, e);
}
function o(n, t) {
var e = u(n, t);
d.point(e[0], e[1]);
}
function l() {
y.point = o, d.lineStart();
}
function c() {
y.point = a, d.lineEnd();
}
function s(n, t) {
v.push([n, t]);
var e = u(n, t);
x.point(e[0], e[1]);
}
function f() {
x.lineStart(), v = [];
}
function h() {
s(v[0][0], v[0][1]), x.lineEnd();
var n,
t = x.clean(),
e = M.buffer(),
r = e.length;
if (v.pop(), p.push(v), v = null, r) if (1 & t) {
n = e[0];
var u,
r = n.length - 1,
a = -1;
if (r > 0) {
for (b || (i.polygonStart(), b = !0), i.lineStart(); ++a < r;) i.point((u = n[a])[0], u[1]);
i.lineEnd();
}
} else r > 1 && 2 & t && e.push(e.pop().concat(e.shift())), g.push(e.filter(Dt));
}
var g,
p,
v,
d = t(i),
m = u.invert(r[0], r[1]),
y = {
point: a,
lineStart: l,
lineEnd: c,
polygonStart: function polygonStart() {
y.point = s, y.lineStart = f, y.lineEnd = h, g = [], p = [];
},
polygonEnd: function polygonEnd() {
y.point = a, y.lineStart = l, y.lineEnd = c, g = oa.merge(g);
var n = Ot(m, p);
g.length ? (b || (i.polygonStart(), b = !0), Lt(g, jt, n, e, i)) : n && (b || (i.polygonStart(), b = !0), i.lineStart(), e(null, null, 1, i), i.lineEnd()), b && (i.polygonEnd(), b = !1), g = p = null;
},
sphere: function sphere() {
i.polygonStart(), i.lineStart(), e(null, null, 1, i), i.lineEnd(), i.polygonEnd();
}
},
M = Pt(),
x = t(M),
b = !1;
return y;
};
}
function Dt(n) {
return n.length > 1;
}
function Pt() {
var n,
t = [];
return {
lineStart: function lineStart() {
t.push(n = []);
},
point: function point(t, e) {
n.push([t, e]);
},
lineEnd: b,
buffer: function buffer() {
var e = t;
return t = [], n = null, e;
},
rejoin: function rejoin() {
t.length > 1 && t.push(t.pop().concat(t.shift()));
}
};
}
function jt(n, t) {
return ((n = n.x)[0] < 0 ? n[1] - Ha - Da : Ha - n[1]) - ((t = t.x)[0] < 0 ? t[1] - Ha - Da : Ha - t[1]);
}
function Ut(n) {
var t,
e = NaN,
r = NaN,
u = NaN;
return {
lineStart: function lineStart() {
n.lineStart(), t = 1;
},
point: function point(i, a) {
var o = i > 0 ? ja : -ja,
l = Ma(i - e);
Ma(l - ja) < Da ? (n.point(e, r = (r + a) / 2 > 0 ? Ha : -Ha), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(o, r), n.point(i, r), t = 0) : u !== o && l >= ja && (Ma(e - u) < Da && (e -= u * Da), Ma(i - o) < Da && (i -= o * Da), r = Ft(e, r, i, a), n.point(u, r), n.lineEnd(), n.lineStart(), n.point(o, r), t = 0), n.point(e = i, r = a), u = o;
},
lineEnd: function lineEnd() {
n.lineEnd(), e = r = NaN;
},
clean: function clean() {
return 2 - t;
}
};
}
function Ft(n, t, e, r) {
var u,
i,
a = Math.sin(n - e);
return Ma(a) > Da ? Math.atan((Math.sin(t) * (i = Math.cos(r)) * Math.sin(e) - Math.sin(r) * (u = Math.cos(t)) * Math.sin(n)) / (u * i * a)) : (t + r) / 2;
}
function Ht(n, t, e, r) {
var u;
if (null == n) u = e * Ha, r.point(-ja, u), r.point(0, u), r.point(ja, u), r.point(ja, 0), r.point(ja, -u), r.point(0, -u), r.point(-ja, -u), r.point(-ja, 0), r.point(-ja, u);else if (Ma(n[0] - t[0]) > Da) {
var i = n[0] < t[0] ? ja : -ja;
u = e * i / 2, r.point(-i, u), r.point(0, u), r.point(i, u);
} else r.point(t[0], t[1]);
}
function Ot(n, t) {
var e = n[0],
r = n[1],
u = [Math.sin(e), -Math.cos(e), 0],
i = 0,
a = 0;
So.reset();
for (var o = 0, l = t.length; l > o; ++o) {
var c = t[o],
s = c.length;
if (s) for (var f = c[0], h = f[0], g = f[1] / 2 + ja / 4, p = Math.sin(g), v = Math.cos(g), d = 1;;) {
d === s && (d = 0), n = c[d];
var m = n[0],
y = n[1] / 2 + ja / 4,
M = Math.sin(y),
x = Math.cos(y),
b = m - h,
_ = b >= 0 ? 1 : -1,
w = _ * b,
S = w > ja,
k = p * M;
if (So.add(Math.atan2(k * _ * Math.sin(w), v * x + k * Math.cos(w))), i += S ? b + _ * Ua : b, S ^ h >= e ^ m >= e) {
var N = yt(dt(f), dt(n));
bt(N);
var E = yt(u, N);
bt(E);
var A = (S ^ b >= 0 ? -1 : 1) * tn(E[2]);
(r > A || r === A && (N[0] || N[1])) && (a += S ^ b >= 0 ? 1 : -1);
}
if (!d++) break;
h = m, p = M, v = x, f = n;
}
}
return (-Da > i || Da > i && 0 > So) ^ 1 & a;
}
function It(n) {
function t(n, t) {
return Math.cos(n) * Math.cos(t) > i;
}
function e(n) {
var e, i, l, c, s;
return {
lineStart: function lineStart() {
c = l = !1, s = 1;
},
point: function point(f, h) {
var g,
p = [f, h],
v = t(f, h),
d = a ? v ? 0 : u(f, h) : v ? u(f + (0 > f ? ja : -ja), h) : 0;
if (!e && (c = l = v) && n.lineStart(), v !== l && (g = r(e, p), (wt(e, g) || wt(p, g)) && (p[0] += Da, p[1] += Da, v = t(p[0], p[1]))), v !== l) s = 0, v ? (n.lineStart(), g = r(p, e), n.point(g[0], g[1])) : (g = r(e, p), n.point(g[0], g[1]), n.lineEnd()), e = g;else if (o && e && a ^ v) {
var m;
d & i || !(m = r(p, e, !0)) || (s = 0, a ? (n.lineStart(), n.point(m[0][0], m[0][1]), n.point(m[1][0], m[1][1]), n.lineEnd()) : (n.point(m[1][0], m[1][1]), n.lineEnd(), n.lineStart(), n.point(m[0][0], m[0][1])));
}
!v || e && wt(e, p) || n.point(p[0], p[1]), e = p, l = v, i = d;
},
lineEnd: function lineEnd() {
l && n.lineEnd(), e = null;
},
clean: function clean() {
return s | (c && l) << 1;
}
};
}
function r(n, t, e) {
var r = dt(n),
u = dt(t),
a = [1, 0, 0],
o = yt(r, u),
l = mt(o, o),
c = o[0],
s = l - c * c;
if (!s) return !e && n;
var f = i * l / s,
h = -i * c / s,
g = yt(a, o),
p = xt(a, f),
v = xt(o, h);
Mt(p, v);
var d = g,
m = mt(p, d),
y = mt(d, d),
M = m * m - y * (mt(p, p) - 1);
if (!(0 > M)) {
var x = Math.sqrt(M),
b = xt(d, (-m - x) / y);
if (Mt(b, p), b = _t(b), !e) return b;
var _,
w = n[0],
S = t[0],
k = n[1],
N = t[1];
w > S && (_ = w, w = S, S = _);
var E = S - w,
A = Ma(E - ja) < Da,
C = A || Da > E;
if (!A && k > N && (_ = k, k = N, N = _), C ? A ? k + N > 0 ^ b[1] < (Ma(b[0] - w) < Da ? k : N) : k <= b[1] && b[1] <= N : E > ja ^ (w <= b[0] && b[0] <= S)) {
var z = xt(d, (-m + x) / y);
return Mt(z, p), [b, _t(z)];
}
}
}
function u(t, e) {
var r = a ? n : ja - n,
u = 0;
return -r > t ? u |= 1 : t > r && (u |= 2), -r > e ? u |= 4 : e > r && (u |= 8), u;
}
var i = Math.cos(n),
a = i > 0,
o = Ma(i) > Da,
l = ve(n, 6 * Oa);
return Rt(t, e, l, a ? [0, -n] : [-ja, n - ja]);
}
function Yt(n, t, e, r) {
return function (u) {
var i,
a = u.a,
o = u.b,
l = a.x,
c = a.y,
s = o.x,
f = o.y,
h = 0,
g = 1,
p = s - l,
v = f - c;
if (i = n - l, p || !(i > 0)) {
if (i /= p, 0 > p) {
if (h > i) return;
g > i && (g = i);
} else if (p > 0) {
if (i > g) return;
i > h && (h = i);
}
if (i = e - l, p || !(0 > i)) {
if (i /= p, 0 > p) {
if (i > g) return;
i > h && (h = i);
} else if (p > 0) {
if (h > i) return;
g > i && (g = i);
}
if (i = t - c, v || !(i > 0)) {
if (i /= v, 0 > v) {
if (h > i) return;
g > i && (g = i);
} else if (v > 0) {
if (i > g) return;
i > h && (h = i);
}
if (i = r - c, v || !(0 > i)) {
if (i /= v, 0 > v) {
if (i > g) return;
i > h && (h = i);
} else if (v > 0) {
if (h > i) return;
g > i && (g = i);
}
return h > 0 && (u.a = {
x: l + h * p,
y: c + h * v
}), 1 > g && (u.b = {
x: l + g * p,
y: c + g * v
}), u;
}
}
}
}
};
}
function Zt(n, t, e, r) {
function u(r, u) {
return Ma(r[0] - n) < Da ? u > 0 ? 0 : 3 : Ma(r[0] - e) < Da ? u > 0 ? 2 : 1 : Ma(r[1] - t) < Da ? u > 0 ? 1 : 0 : u > 0 ? 3 : 2;
}
function i(n, t) {
return a(n.x, t.x);
}
function a(n, t) {
var e = u(n, 1),
r = u(t, 1);
return e !== r ? e - r : 0 === e ? t[1] - n[1] : 1 === e ? n[0] - t[0] : 2 === e ? n[1] - t[1] : t[0] - n[0];
}
return function (o) {
function l(n) {
for (var t = 0, e = d.length, r = n[1], u = 0; e > u; ++u) for (var i, a = 1, o = d[u], l = o.length, c = o[0]; l > a; ++a) i = o[a], c[1] <= r ? i[1] > r && Q(c, i, n) > 0 && ++t : i[1] <= r && Q(c, i, n) < 0 && --t, c = i;
return 0 !== t;
}
function c(i, o, l, c) {
var s = 0,
f = 0;
if (null == i || (s = u(i, l)) !== (f = u(o, l)) || a(i, o) < 0 ^ l > 0) {
do c.point(0 === s || 3 === s ? n : e, s > 1 ? r : t); while ((s = (s + l + 4) % 4) !== f);
} else c.point(o[0], o[1]);
}
function s(u, i) {
return u >= n && e >= u && i >= t && r >= i;
}
function f(n, t) {
s(n, t) && o.point(n, t);
}
function h() {
C.point = p, d && d.push(m = []), S = !0, w = !1, b = _ = NaN;
}
function g() {
v && (p(y, M), x && w && E.rejoin(), v.push(E.buffer())), C.point = f, w && o.lineEnd();
}
function p(n, t) {
n = Math.max(-Fo, Math.min(Fo, n)), t = Math.max(-Fo, Math.min(Fo, t));
var e = s(n, t);
if (d && m.push([n, t]), S) y = n, M = t, x = e, S = !1, e && (o.lineStart(), o.point(n, t));else if (e && w) o.point(n, t);else {
var r = {
a: {
x: b,
y: _
},
b: {
x: n,
y: t
}
};
A(r) ? (w || (o.lineStart(), o.point(r.a.x, r.a.y)), o.point(r.b.x, r.b.y), e || o.lineEnd(), k = !1) : e && (o.lineStart(), o.point(n, t), k = !1);
}
b = n, _ = t, w = e;
}
var v,
d,
m,
y,
M,
x,
b,
_,
w,
S,
k,
N = o,
E = Pt(),
A = Yt(n, t, e, r),
C = {
point: f,
lineStart: h,
lineEnd: g,
polygonStart: function polygonStart() {
o = E, v = [], d = [], k = !0;
},
polygonEnd: function polygonEnd() {
o = N, v = oa.merge(v);
var t = l([n, r]),
e = k && t,
u = v.length;
(e || u) && (o.polygonStart(), e && (o.lineStart(), c(null, null, 1, o), o.lineEnd()), u && Lt(v, i, t, c, o), o.polygonEnd()), v = d = m = null;
}
};
return C;
};
}
function Vt(n) {
var t = 0,
e = ja / 3,
r = oe(n),
u = r(t, e);
return u.parallels = function (n) {
return arguments.length ? r(t = n[0] * ja / 180, e = n[1] * ja / 180) : [t / ja * 180, e / ja * 180];
}, u;
}
function Xt(n, t) {
function e(n, t) {
var e = Math.sqrt(i - 2 * u * Math.sin(t)) / u;
return [e * Math.sin(n *= u), a - e * Math.cos(n)];
}
var r = Math.sin(n),
u = (r + Math.sin(t)) / 2,
i = 1 + r * (2 * u - r),
a = Math.sqrt(i) / u;
return e.invert = function (n, t) {
var e = a - t;
return [Math.atan2(n, e) / u, tn((i - (n * n + e * e) * u * u) / (2 * u))];
}, e;
}
function $t() {
function n(n, t) {
Oo += u * n - r * t, r = n, u = t;
}
var t, e, r, u;
Xo.point = function (i, a) {
Xo.point = n, t = r = i, e = u = a;
}, Xo.lineEnd = function () {
n(t, e);
};
}
function Bt(n, t) {
Io > n && (Io = n), n > Zo && (Zo = n), Yo > t && (Yo = t), t > Vo && (Vo = t);
}
function Wt() {
function n(n, t) {
a.push("M", n, ",", t, i);
}
function t(n, t) {
a.push("M", n, ",", t), o.point = e;
}
function e(n, t) {
a.push("L", n, ",", t);
}
function r() {
o.point = n;
}
function u() {
a.push("Z");
}
var i = Jt(4.5),
a = [],
o = {
point: n,
lineStart: function lineStart() {
o.point = t;
},
lineEnd: r,
polygonStart: function polygonStart() {
o.lineEnd = u;
},
polygonEnd: function polygonEnd() {
o.lineEnd = r, o.point = n;
},
pointRadius: function pointRadius(n) {
return i = Jt(n), o;
},
result: function result() {
if (a.length) {
var n = a.join("");
return a = [], n;
}
}
};
return o;
}
function Jt(n) {
return "m0," + n + "a" + n + "," + n + " 0 1,1 0," + -2 * n + "a" + n + "," + n + " 0 1,1 0," + 2 * n + "z";
}
function Gt(n, t) {
Ao += n, Co += t, ++zo;
}
function Kt() {
function n(n, r) {
var u = n - t,
i = r - e,
a = Math.sqrt(u * u + i * i);
Lo += a * (t + n) / 2, qo += a * (e + r) / 2, To += a, Gt(t = n, e = r);
}
var t, e;
Bo.point = function (r, u) {
Bo.point = n, Gt(t = r, e = u);
};
}
function Qt() {
Bo.point = Gt;
}
function ne() {
function n(n, t) {
var e = n - r,
i = t - u,
a = Math.sqrt(e * e + i * i);
Lo += a * (r + n) / 2, qo += a * (u + t) / 2, To += a, a = u * n - r * t, Ro += a * (r + n), Do += a * (u + t), Po += 3 * a, Gt(r = n, u = t);
}
var t, e, r, u;
Bo.point = function (i, a) {
Bo.point = n, Gt(t = r = i, e = u = a);
}, Bo.lineEnd = function () {
n(t, e);
};
}
function te(n) {
function t(t, e) {
n.moveTo(t + a, e), n.arc(t, e, a, 0, Ua);
}
function e(t, e) {
n.moveTo(t, e), o.point = r;
}
function r(t, e) {
n.lineTo(t, e);
}
function u() {
o.point = t;
}
function i() {
n.closePath();
}
var a = 4.5,
o = {
point: t,
lineStart: function lineStart() {
o.point = e;
},
lineEnd: u,
polygonStart: function polygonStart() {
o.lineEnd = i;
},
polygonEnd: function polygonEnd() {
o.lineEnd = u, o.point = t;
},
pointRadius: function pointRadius(n) {
return a = n, o;
},
result: b
};
return o;
}
function ee(n) {
function t(n) {
return (o ? r : e)(n);
}
function e(t) {
return ie(t, function (e, r) {
e = n(e, r), t.point(e[0], e[1]);
});
}
function r(t) {
function e(e, r) {
e = n(e, r), t.point(e[0], e[1]);
}
function r() {
M = NaN, S.point = i, t.lineStart();
}
function i(e, r) {
var i = dt([e, r]),
a = n(e, r);
u(M, x, y, b, _, w, M = a[0], x = a[1], y = e, b = i[0], _ = i[1], w = i[2], o, t), t.point(M, x);
}
function a() {
S.point = e, t.lineEnd();
}
function l() {
r(), S.point = c, S.lineEnd = s;
}
function c(n, t) {
i(f = n, h = t), g = M, p = x, v = b, d = _, m = w, S.point = i;
}
function s() {
u(M, x, y, b, _, w, g, p, f, v, d, m, o, t), S.lineEnd = a, a();
}
var f,
h,
g,
p,
v,
d,
m,
y,
M,
x,
b,
_,
w,
S = {
point: e,
lineStart: r,
lineEnd: a,
polygonStart: function polygonStart() {
t.polygonStart(), S.lineStart = l;
},
polygonEnd: function polygonEnd() {
t.polygonEnd(), S.lineStart = r;
}
};
return S;
}
function u(t, e, r, o, l, c, s, f, h, g, p, v, d, m) {
var y = s - t,
M = f - e,
x = y * y + M * M;
if (x > 4 * i && d--) {
var b = o + g,
_ = l + p,
w = c + v,
S = Math.sqrt(b * b + _ * _ + w * w),
k = Math.asin(w /= S),
N = Ma(Ma(w) - 1) < Da || Ma(r - h) < Da ? (r + h) / 2 : Math.atan2(_, b),
E = n(N, k),
A = E[0],
C = E[1],
z = A - t,
L = C - e,
q = M * z - y * L;
(q * q / x > i || Ma((y * z + M * L) / x - .5) > .3 || a > o * g + l * p + c * v) && (u(t, e, r, o, l, c, A, C, N, b /= S, _ /= S, w, d, m), m.point(A, C), u(A, C, N, b, _, w, s, f, h, g, p, v, d, m));
}
}
var i = .5,
a = Math.cos(30 * Oa),
o = 16;
return t.precision = function (n) {
return arguments.length ? (o = (i = n * n) > 0 && 16, t) : Math.sqrt(i);
}, t;
}
function re(n) {
var t = ee(function (t, e) {
return n([t * Ia, e * Ia]);
});
return function (n) {
return le(t(n));
};
}
function ue(n) {
this.stream = n;
}
function ie(n, t) {
return {
point: t,
sphere: function sphere() {
n.sphere();
},
lineStart: function lineStart() {
n.lineStart();
},
lineEnd: function lineEnd() {
n.lineEnd();
},
polygonStart: function polygonStart() {
n.polygonStart();
},
polygonEnd: function polygonEnd() {
n.polygonEnd();
}
};
}
function ae(n) {
return oe(function () {
return n;
})();
}
function oe(n) {
function t(n) {
return n = o(n[0] * Oa, n[1] * Oa), [n[0] * h + l, c - n[1] * h];
}
function e(n) {
return n = o.invert((n[0] - l) / h, (c - n[1]) / h), n && [n[0] * Ia, n[1] * Ia];
}
function r() {
o = Ct(a = fe(m, M, x), i);
var n = i(v, d);
return l = g - n[0] * h, c = p + n[1] * h, u();
}
function u() {
return s && (s.valid = !1, s = null), t;
}
var i,
a,
o,
l,
c,
s,
f = ee(function (n, t) {
return n = i(n, t), [n[0] * h + l, c - n[1] * h];
}),
h = 150,
g = 480,
p = 250,
v = 0,
d = 0,
m = 0,
M = 0,
x = 0,
b = Uo,
_ = y,
w = null,
S = null;
return t.stream = function (n) {
return s && (s.valid = !1), s = le(b(a, f(_(n)))), s.valid = !0, s;
}, t.clipAngle = function (n) {
return arguments.length ? (b = null == n ? (w = n, Uo) : It((w = +n) * Oa), u()) : w;
}, t.clipExtent = function (n) {
return arguments.length ? (S = n, _ = n ? Zt(n[0][0], n[0][1], n[1][0], n[1][1]) : y, u()) : S;
}, t.scale = function (n) {
return arguments.length ? (h = +n, r()) : h;
}, t.translate = function (n) {
return arguments.length ? (g = +n[0], p = +n[1], r()) : [g, p];
}, t.center = function (n) {
return arguments.length ? (v = n[0] % 360 * Oa, d = n[1] % 360 * Oa, r()) : [v * Ia, d * Ia];
}, t.rotate = function (n) {
return arguments.length ? (m = n[0] % 360 * Oa, M = n[1] % 360 * Oa, x = n.length > 2 ? n[2] % 360 * Oa : 0, r()) : [m * Ia, M * Ia, x * Ia];
}, oa.rebind(t, f, "precision"), function () {
return i = n.apply(this, arguments), t.invert = i.invert && e, r();
};
}
function le(n) {
return ie(n, function (t, e) {
n.point(t * Oa, e * Oa);
});
}
function ce(n, t) {
return [n, t];
}
function se(n, t) {
return [n > ja ? n - Ua : -ja > n ? n + Ua : n, t];
}
function fe(n, t, e) {
return n ? t || e ? Ct(ge(n), pe(t, e)) : ge(n) : t || e ? pe(t, e) : se;
}
function he(n) {
return function (t, e) {
return t += n, [t > ja ? t - Ua : -ja > t ? t + Ua : t, e];
};
}
function ge(n) {
var t = he(n);
return t.invert = he(-n), t;
}
function pe(n, t) {
function e(n, t) {
var e = Math.cos(t),
o = Math.cos(n) * e,
l = Math.sin(n) * e,
c = Math.sin(t),
s = c * r + o * u;
return [Math.atan2(l * i - s * a, o * r - c * u), tn(s * i + l * a)];
}
var r = Math.cos(n),
u = Math.sin(n),
i = Math.cos(t),
a = Math.sin(t);
return e.invert = function (n, t) {
var e = Math.cos(t),
o = Math.cos(n) * e,
l = Math.sin(n) * e,
c = Math.sin(t),
s = c * i - l * a;
return [Math.atan2(l * i + c * a, o * r + s * u), tn(s * r - o * u)];
}, e;
}
function ve(n, t) {
var e = Math.cos(n),
r = Math.sin(n);
return function (u, i, a, o) {
var l = a * t;
null != u ? (u = de(e, u), i = de(e, i), (a > 0 ? i > u : u > i) && (u += a * Ua)) : (u = n + a * Ua, i = n - .5 * l);
for (var c, s = u; a > 0 ? s > i : i > s; s -= l) o.point((c = _t([e, -r * Math.cos(s), -r * Math.sin(s)]))[0], c[1]);
};
}
function de(n, t) {
var e = dt(t);
e[0] -= n, bt(e);
var r = nn(-e[1]);
return ((-e[2] < 0 ? -r : r) + 2 * Math.PI - Da) % (2 * Math.PI);
}
function me(n, t, e) {
var r = oa.range(n, t - Da, e).concat(t);
return function (n) {
return r.map(function (t) {
return [n, t];
});
};
}
function ye(n, t, e) {
var r = oa.range(n, t - Da, e).concat(t);
return function (n) {
return r.map(function (t) {
return [t, n];
});
};
}
function Me(n) {
return n.source;
}
function xe(n) {
return n.target;
}
function be(n, t, e, r) {
var u = Math.cos(t),
i = Math.sin(t),
a = Math.cos(r),
o = Math.sin(r),
l = u * Math.cos(n),
c = u * Math.sin(n),
s = a * Math.cos(e),
f = a * Math.sin(e),
h = 2 * Math.asin(Math.sqrt(an(r - t) + u * a * an(e - n))),
g = 1 / Math.sin(h),
p = h ? function (n) {
var t = Math.sin(n *= h) * g,
e = Math.sin(h - n) * g,
r = e * l + t * s,
u = e * c + t * f,
a = e * i + t * o;
return [Math.atan2(u, r) * Ia, Math.atan2(a, Math.sqrt(r * r + u * u)) * Ia];
} : function () {
return [n * Ia, t * Ia];
};
return p.distance = h, p;
}
function _e() {
function n(n, u) {
var i = Math.sin(u *= Oa),
a = Math.cos(u),
o = Ma((n *= Oa) - t),
l = Math.cos(o);
Wo += Math.atan2(Math.sqrt((o = a * Math.sin(o)) * o + (o = r * i - e * a * l) * o), e * i + r * a * l), t = n, e = i, r = a;
}
var t, e, r;
Jo.point = function (u, i) {
t = u * Oa, e = Math.sin(i *= Oa), r = Math.cos(i), Jo.point = n;
}, Jo.lineEnd = function () {
Jo.point = Jo.lineEnd = b;
};
}
function we(n, t) {
function e(t, e) {
var r = Math.cos(t),
u = Math.cos(e),
i = n(r * u);
return [i * u * Math.sin(t), i * Math.sin(e)];
}
return e.invert = function (n, e) {
var r = Math.sqrt(n * n + e * e),
u = t(r),
i = Math.sin(u),
a = Math.cos(u);
return [Math.atan2(n * i, r * a), Math.asin(r && e * i / r)];
}, e;
}
function Se(n, t) {
function e(n, t) {
a > 0 ? -Ha + Da > t && (t = -Ha + Da) : t > Ha - Da && (t = Ha - Da);
var e = a / Math.pow(u(t), i);
return [e * Math.sin(i * n), a - e * Math.cos(i * n)];
}
var r = Math.cos(n),
u = function u(n) {
return Math.tan(ja / 4 + n / 2);
},
i = n === t ? Math.sin(n) : Math.log(r / Math.cos(t)) / Math.log(u(t) / u(n)),
a = r * Math.pow(u(n), i) / i;
return i ? (e.invert = function (n, t) {
var e = a - t,
r = K(i) * Math.sqrt(n * n + e * e);
return [Math.atan2(n, e) / i, 2 * Math.atan(Math.pow(a / r, 1 / i)) - Ha];
}, e) : Ne;
}
function ke(n, t) {
function e(n, t) {
var e = i - t;
return [e * Math.sin(u * n), i - e * Math.cos(u * n)];
}
var r = Math.cos(n),
u = n === t ? Math.sin(n) : (r - Math.cos(t)) / (t - n),
i = r / u + n;
return Ma(u) < Da ? ce : (e.invert = function (n, t) {
var e = i - t;
return [Math.atan2(n, e) / u, i - K(u) * Math.sqrt(n * n + e * e)];
}, e);
}
function Ne(n, t) {
return [n, Math.log(Math.tan(ja / 4 + t / 2))];
}
function Ee(n) {
var t,
e = ae(n),
r = e.scale,
u = e.translate,
i = e.clipExtent;
return e.scale = function () {
var n = r.apply(e, arguments);
return n === e ? t ? e.clipExtent(null) : e : n;
}, e.translate = function () {
var n = u.apply(e, arguments);
return n === e ? t ? e.clipExtent(null) : e : n;
}, e.clipExtent = function (n) {
var a = i.apply(e, arguments);
if (a === e) {
if (t = null == n) {
var o = ja * r(),
l = u();
i([[l[0] - o, l[1] - o], [l[0] + o, l[1] + o]]);
}
} else t && (a = null);
return a;
}, e.clipExtent(null);
}
function Ae(n, t) {
return [Math.log(Math.tan(ja / 4 + t / 2)), -n];
}
function Ce(n) {
return n[0];
}
function ze(n) {
return n[1];
}
function Le(n) {
for (var t = n.length, e = [0, 1], r = 2, u = 2; t > u; u++) {
for (; r > 1 && Q(n[e[r - 2]], n[e[r - 1]], n[u]) <= 0;) --r;
e[r++] = u;
}
return e.slice(0, r);
}
function qe(n, t) {
return n[0] - t[0] || n[1] - t[1];
}
function Te(n, t, e) {
return (e[0] - t[0]) * (n[1] - t[1]) < (e[1] - t[1]) * (n[0] - t[0]);
}
function Re(n, t, e, r) {
var u = n[0],
i = e[0],
a = t[0] - u,
o = r[0] - i,
l = n[1],
c = e[1],
s = t[1] - l,
f = r[1] - c,
h = (o * (l - c) - f * (u - i)) / (f * a - o * s);
return [u + h * a, l + h * s];
}
function De(n) {
var t = n[0],
e = n[n.length - 1];
return !(t[0] - e[0] || t[1] - e[1]);
}
function Pe() {
rr(this), this.edge = this.site = this.circle = null;
}
function je(n) {
var t = ll.pop() || new Pe();
return t.site = n, t;
}
function Ue(n) {
Be(n), il.remove(n), ll.push(n), rr(n);
}
function Fe(n) {
var t = n.circle,
e = t.x,
r = t.cy,
u = {
x: e,
y: r
},
i = n.P,
a = n.N,
o = [n];
Ue(n);
for (var l = i; l.circle && Ma(e - l.circle.x) < Da && Ma(r - l.circle.cy) < Da;) i = l.P, o.unshift(l), Ue(l), l = i;
o.unshift(l), Be(l);
for (var c = a; c.circle && Ma(e - c.circle.x) < Da && Ma(r - c.circle.cy) < Da;) a = c.N, o.push(c), Ue(c), c = a;
o.push(c), Be(c);
var s,
f = o.length;
for (s = 1; f > s; ++s) c = o[s], l = o[s - 1], nr(c.edge, l.site, c.site, u);
l = o[0], c = o[f - 1], c.edge = Ke(l.site, c.site, null, u), $e(l), $e(c);
}
function He(n) {
for (var t, e, r, u, i = n.x, a = n.y, o = il._; o;) if (r = Oe(o, a) - i, r > Da) o = o.L;else {
if (u = i - Ie(o, a), !(u > Da)) {
r > -Da ? (t = o.P, e = o) : u > -Da ? (t = o, e = o.N) : t = e = o;
break;
}
if (!o.R) {
t = o;
break;
}
o = o.R;
}
var l = je(n);
if (il.insert(t, l), t || e) {
if (t === e) return Be(t), e = je(t.site), il.insert(l, e), l.edge = e.edge = Ke(t.site, l.site), $e(t), void $e(e);
if (!e) return void (l.edge = Ke(t.site, l.site));
Be(t), Be(e);
var c = t.site,
s = c.x,
f = c.y,
h = n.x - s,
g = n.y - f,
p = e.site,
v = p.x - s,
d = p.y - f,
m = 2 * (h * d - g * v),
y = h * h + g * g,
M = v * v + d * d,
x = {
x: (d * y - g * M) / m + s,
y: (h * M - v * y) / m + f
};
nr(e.edge, c, p, x), l.edge = Ke(c, n, null, x), e.edge = Ke(n, p, null, x), $e(t), $e(e);
}
}
function Oe(n, t) {
var e = n.site,
r = e.x,
u = e.y,
i = u - t;
if (!i) return r;
var a = n.P;
if (!a) return -(1 / 0);
e = a.site;
var o = e.x,
l = e.y,
c = l - t;
if (!c) return o;
var s = o - r,
f = 1 / i - 1 / c,
h = s / c;
return f ? (-h + Math.sqrt(h * h - 2 * f * (s * s / (-2 * c) - l + c / 2 + u - i / 2))) / f + r : (r + o) / 2;
}
function Ie(n, t) {
var e = n.N;
if (e) return Oe(e, t);
var r = n.site;
return r.y === t ? r.x : 1 / 0;
}
function Ye(n) {
this.site = n, this.edges = [];
}
function Ze(n) {
for (var t, e, r, u, i, a, o, l, c, s, f = n[0][0], h = n[1][0], g = n[0][1], p = n[1][1], v = ul, d = v.length; d--;) if (i = v[d], i && i.prepare()) for (o = i.edges, l = o.length, a = 0; l > a;) s = o[a].end(), r = s.x, u = s.y, c = o[++a % l].start(), t = c.x, e = c.y, (Ma(r - t) > Da || Ma(u - e) > Da) && (o.splice(a, 0, new tr(Qe(i.site, s, Ma(r - f) < Da && p - u > Da ? {
x: f,
y: Ma(t - f) < Da ? e : p
} : Ma(u - p) < Da && h - r > Da ? {
x: Ma(e - p) < Da ? t : h,
y: p
} : Ma(r - h) < Da && u - g > Da ? {
x: h,
y: Ma(t - h) < Da ? e : g
} : Ma(u - g) < Da && r - f > Da ? {
x: Ma(e - g) < Da ? t : f,
y: g
} : null), i.site, null)), ++l);
}
function Ve(n, t) {
return t.angle - n.angle;
}
function Xe() {
rr(this), this.x = this.y = this.arc = this.site = this.cy = null;
}
function $e(n) {
var t = n.P,
e = n.N;
if (t && e) {
var r = t.site,
u = n.site,
i = e.site;
if (r !== i) {
var a = u.x,
o = u.y,
l = r.x - a,
c = r.y - o,
s = i.x - a,
f = i.y - o,
h = 2 * (l * f - c * s);
if (!(h >= -Pa)) {
var g = l * l + c * c,
p = s * s + f * f,
v = (f * g - c * p) / h,
d = (l * p - s * g) / h,
f = d + o,
m = cl.pop() || new Xe();
m.arc = n, m.site = u, m.x = v + a, m.y = f + Math.sqrt(v * v + d * d), m.cy = f, n.circle = m;
for (var y = null, M = ol._; M;) if (m.y < M.y || m.y === M.y && m.x <= M.x) {
if (!M.L) {
y = M.P;
break;
}
M = M.L;
} else {
if (!M.R) {
y = M;
break;
}
M = M.R;
}
ol.insert(y, m), y || (al = m);
}
}
}
}
function Be(n) {
var t = n.circle;
t && (t.P || (al = t.N), ol.remove(t), cl.push(t), rr(t), n.circle = null);
}
function We(n) {
for (var t, e = rl, r = Yt(n[0][0], n[0][1], n[1][0], n[1][1]), u = e.length; u--;) t = e[u], (!Je(t, n) || !r(t) || Ma(t.a.x - t.b.x) < Da && Ma(t.a.y - t.b.y) < Da) && (t.a = t.b = null, e.splice(u, 1));
}
function Je(n, t) {
var e = n.b;
if (e) return !0;
var r,
u,
i = n.a,
a = t[0][0],
o = t[1][0],
l = t[0][1],
c = t[1][1],
s = n.l,
f = n.r,
h = s.x,
g = s.y,
p = f.x,
v = f.y,
d = (h + p) / 2,
m = (g + v) / 2;
if (v === g) {
if (a > d || d >= o) return;
if (h > p) {
if (i) {
if (i.y >= c) return;
} else i = {
x: d,
y: l
};
e = {
x: d,
y: c
};
} else {
if (i) {
if (i.y < l) return;
} else i = {
x: d,
y: c
};
e = {
x: d,
y: l
};
}
} else if (r = (h - p) / (v - g), u = m - r * d, -1 > r || r > 1) {
if (h > p) {
if (i) {
if (i.y >= c) return;
} else i = {
x: (l - u) / r,
y: l
};
e = {
x: (c - u) / r,
y: c
};
} else {
if (i) {
if (i.y < l) return;
} else i = {
x: (c - u) / r,
y: c
};
e = {
x: (l - u) / r,
y: l
};
}
} else if (v > g) {
if (i) {
if (i.x >= o) return;
} else i = {
x: a,
y: r * a + u
};
e = {
x: o,
y: r * o + u
};
} else {
if (i) {
if (i.x < a) return;
} else i = {
x: o,
y: r * o + u
};
e = {
x: a,
y: r * a + u
};
}
return n.a = i, n.b = e, !0;
}
function Ge(n, t) {
this.l = n, this.r = t, this.a = this.b = null;
}
function Ke(n, t, e, r) {
var u = new Ge(n, t);
return rl.push(u), e && nr(u, n, t, e), r && nr(u, t, n, r), ul[n.i].edges.push(new tr(u, n, t)), ul[t.i].edges.push(new tr(u, t, n)), u;
}
function Qe(n, t, e) {
var r = new Ge(n, null);
return r.a = t, r.b = e, rl.push(r), r;
}
function nr(n, t, e, r) {
n.a || n.b ? n.l === e ? n.b = r : n.a = r : (n.a = r, n.l = t, n.r = e);
}
function tr(n, t, e) {
var r = n.a,
u = n.b;
this.edge = n, this.site = t, this.angle = e ? Math.atan2(e.y - t.y, e.x - t.x) : n.l === t ? Math.atan2(u.x - r.x, r.y - u.y) : Math.atan2(r.x - u.x, u.y - r.y);
}
function er() {
this._ = null;
}
function rr(n) {
n.U = n.C = n.L = n.R = n.P = n.N = null;
}
function ur(n, t) {
var e = t,
r = t.R,
u = e.U;
u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.R = r.L, e.R && (e.R.U = e), r.L = e;
}
function ir(n, t) {
var e = t,
r = t.L,
u = e.U;
u ? u.L === e ? u.L = r : u.R = r : n._ = r, r.U = u, e.U = r, e.L = r.R, e.L && (e.L.U = e), r.R = e;
}
function ar(n) {
for (; n.L;) n = n.L;
return n;
}
function or(n, t) {
var e,
r,
u,
i = n.sort(lr).pop();
for (rl = [], ul = new Array(n.length), il = new er(), ol = new er();;) if (u = al, i && (!u || i.y < u.y || i.y === u.y && i.x < u.x)) (i.x !== e || i.y !== r) && (ul[i.i] = new Ye(i), He(i), e = i.x, r = i.y), i = n.pop();else {
if (!u) break;
Fe(u.arc);
}
t && (We(t), Ze(t));
var a = {
cells: ul,
edges: rl
};
return il = ol = rl = ul = null, a;
}
function lr(n, t) {
return t.y - n.y || t.x - n.x;
}
function cr(n, t, e) {
return (n.x - e.x) * (t.y - n.y) - (n.x - t.x) * (e.y - n.y);
}
function sr(n) {
return n.x;
}
function fr(n) {
return n.y;
}
function hr() {
return {
leaf: !0,
nodes: [],
point: null,
x: null,
y: null
};
}
function gr(n, t, e, r, u, i) {
if (!n(t, e, r, u, i)) {
var a = .5 * (e + u),
o = .5 * (r + i),
l = t.nodes;
l[0] && gr(n, l[0], e, r, a, o), l[1] && gr(n, l[1], a, r, u, o), l[2] && gr(n, l[2], e, o, a, i), l[3] && gr(n, l[3], a, o, u, i);
}
}
function pr(n, t, e, r, u, i, a) {
var o,
l = 1 / 0;
return function c(n, s, f, h, g) {
if (!(s > i || f > a || r > h || u > g)) {
if (p = n.point) {
var p,
v = t - n.x,
d = e - n.y,
m = v * v + d * d;
if (l > m) {
var y = Math.sqrt(l = m);
r = t - y, u = e - y, i = t + y, a = e + y, o = p;
}
}
for (var M = n.nodes, x = .5 * (s + h), b = .5 * (f + g), _ = t >= x, w = e >= b, S = w << 1 | _, k = S + 4; k > S; ++S) if (n = M[3 & S]) switch (3 & S) {
case 0:
c(n, s, f, x, b);
break;
case 1:
c(n, x, f, h, b);
break;
case 2:
c(n, s, b, x, g);
break;
case 3:
c(n, x, b, h, g);
}
}
}(n, r, u, i, a), o;
}
function vr(n, t) {
n = oa.rgb(n), t = oa.rgb(t);
var e = n.r,
r = n.g,
u = n.b,
i = t.r - e,
a = t.g - r,
o = t.b - u;
return function (n) {
return "#" + bn(Math.round(e + i * n)) + bn(Math.round(r + a * n)) + bn(Math.round(u + o * n));
};
}
function dr(n, t) {
var e,
r = {},
u = {};
for (e in n) e in t ? r[e] = Mr(n[e], t[e]) : u[e] = n[e];
for (e in t) e in n || (u[e] = t[e]);
return function (n) {
for (e in r) u[e] = r[e](n);
return u;
};
}
function mr(n, t) {
return n = +n, t = +t, function (e) {
return n * (1 - e) + t * e;
};
}
function yr(n, t) {
var e,
r,
u,
i = fl.lastIndex = hl.lastIndex = 0,
a = -1,
o = [],
l = [];
for (n += "", t += ""; (e = fl.exec(n)) && (r = hl.exec(t));) (u = r.index) > i && (u = t.slice(i, u), o[a] ? o[a] += u : o[++a] = u), (e = e[0]) === (r = r[0]) ? o[a] ? o[a] += r : o[++a] = r : (o[++a] = null, l.push({
i: a,
x: mr(e, r)
})), i = hl.lastIndex;
return i < t.length && (u = t.slice(i), o[a] ? o[a] += u : o[++a] = u), o.length < 2 ? l[0] ? (t = l[0].x, function (n) {
return t(n) + "";
}) : function () {
return t;
} : (t = l.length, function (n) {
for (var e, r = 0; t > r; ++r) o[(e = l[r]).i] = e.x(n);
return o.join("");
});
}
function Mr(n, t) {
for (var e, r = oa.interpolators.length; --r >= 0 && !(e = oa.interpolators[r](n, t)););
return e;
}
function xr(n, t) {
var e,
r = [],
u = [],
i = n.length,
a = t.length,
o = Math.min(n.length, t.length);
for (e = 0; o > e; ++e) r.push(Mr(n[e], t[e]));
for (; i > e; ++e) u[e] = n[e];
for (; a > e; ++e) u[e] = t[e];
return function (n) {
for (e = 0; o > e; ++e) u[e] = r[e](n);
return u;
};
}
function br(n) {
return function (t) {
return 0 >= t ? 0 : t >= 1 ? 1 : n(t);
};
}
function _r(n) {
return function (t) {
return 1 - n(1 - t);
};
}
function wr(n) {
return function (t) {
return .5 * (.5 > t ? n(2 * t) : 2 - n(2 - 2 * t));
};
}
function Sr(n) {
return n * n;
}
function kr(n) {
return n * n * n;
}
function Nr(n) {
if (0 >= n) return 0;
if (n >= 1) return 1;
var t = n * n,
e = t * n;
return 4 * (.5 > n ? e : 3 * (n - t) + e - .75);
}
function Er(n) {
return function (t) {
return Math.pow(t, n);
};
}
function Ar(n) {
return 1 - Math.cos(n * Ha);
}
function Cr(n) {
return Math.pow(2, 10 * (n - 1));
}
function zr(n) {
return 1 - Math.sqrt(1 - n * n);
}
function Lr(n, t) {
var e;
return arguments.length < 2 && (t = .45), arguments.length ? e = t / Ua * Math.asin(1 / n) : (n = 1, e = t / 4), function (r) {
return 1 + n * Math.pow(2, -10 * r) * Math.sin((r - e) * Ua / t);
};
}
function qr(n) {
return n || (n = 1.70158), function (t) {
return t * t * ((n + 1) * t - n);
};
}
function Tr(n) {
return 1 / 2.75 > n ? 7.5625 * n * n : 2 / 2.75 > n ? 7.5625 * (n -= 1.5 / 2.75) * n + .75 : 2.5 / 2.75 > n ? 7.5625 * (n -= 2.25 / 2.75) * n + .9375 : 7.5625 * (n -= 2.625 / 2.75) * n + .984375;
}
function Rr(n, t) {
n = oa.hcl(n), t = oa.hcl(t);
var e = n.h,
r = n.c,
u = n.l,
i = t.h - e,
a = t.c - r,
o = t.l - u;
return isNaN(a) && (a = 0, r = isNaN(r) ? t.c : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), function (n) {
return fn(e + i * n, r + a * n, u + o * n) + "";
};
}
function Dr(n, t) {
n = oa.hsl(n), t = oa.hsl(t);
var e = n.h,
r = n.s,
u = n.l,
i = t.h - e,
a = t.s - r,
o = t.l - u;
return isNaN(a) && (a = 0, r = isNaN(r) ? t.s : r), isNaN(i) ? (i = 0, e = isNaN(e) ? t.h : e) : i > 180 ? i -= 360 : -180 > i && (i += 360), function (n) {
return cn(e + i * n, r + a * n, u + o * n) + "";
};
}
function Pr(n, t) {
n = oa.lab(n), t = oa.lab(t);
var e = n.l,
r = n.a,
u = n.b,
i = t.l - e,
a = t.a - r,
o = t.b - u;
return function (n) {
return gn(e + i * n, r + a * n, u + o * n) + "";
};
}
function jr(n, t) {
return t -= n, function (e) {
return Math.round(n + t * e);
};
}
function Ur(n) {
var t = [n.a, n.b],
e = [n.c, n.d],
r = Hr(t),
u = Fr(t, e),
i = Hr(Or(e, t, -u)) || 0;
t[0] * e[1] < e[0] * t[1] && (t[0] *= -1, t[1] *= -1, r *= -1, u *= -1), this.rotate = (r ? Math.atan2(t[1], t[0]) : Math.atan2(-e[0], e[1])) * Ia, this.translate = [n.e, n.f], this.scale = [r, i], this.skew = i ? Math.atan2(u, i) * Ia : 0;
}
function Fr(n, t) {
return n[0] * t[0] + n[1] * t[1];
}
function Hr(n) {
var t = Math.sqrt(Fr(n, n));
return t && (n[0] /= t, n[1] /= t), t;
}
function Or(n, t, e) {
return n[0] += e * t[0], n[1] += e * t[1], n;
}
function Ir(n) {
return n.length ? n.pop() + "," : "";
}
function Yr(n, t, e, r) {
if (n[0] !== t[0] || n[1] !== t[1]) {
var u = e.push("translate(", null, ",", null, ")");
r.push({
i: u - 4,
x: mr(n[0], t[0])
}, {
i: u - 2,
x: mr(n[1], t[1])
});
} else (t[0] || t[1]) && e.push("translate(" + t + ")");
}
function Zr(n, t, e, r) {
n !== t ? (n - t > 180 ? t += 360 : t - n > 180 && (n += 360), r.push({
i: e.push(Ir(e) + "rotate(", null, ")") - 2,
x: mr(n, t)
})) : t && e.push(Ir(e) + "rotate(" + t + ")");
}
function Vr(n, t, e, r) {
n !== t ? r.push({
i: e.push(Ir(e) + "skewX(", null, ")") - 2,
x: mr(n, t)
}) : t && e.push(Ir(e) + "skewX(" + t + ")");
}
function Xr(n, t, e, r) {
if (n[0] !== t[0] || n[1] !== t[1]) {
var u = e.push(Ir(e) + "scale(", null, ",", null, ")");
r.push({
i: u - 4,
x: mr(n[0], t[0])
}, {
i: u - 2,
x: mr(n[1], t[1])
});
} else (1 !== t[0] || 1 !== t[1]) && e.push(Ir(e) + "scale(" + t + ")");
}
function $r(n, t) {
var e = [],
r = [];
return n = oa.transform(n), t = oa.transform(t), Yr(n.translate, t.translate, e, r), Zr(n.rotate, t.rotate, e, r), Vr(n.skew, t.skew, e, r), Xr(n.scale, t.scale, e, r), n = t = null, function (n) {
for (var t, u = -1, i = r.length; ++u < i;) e[(t = r[u]).i] = t.x(n);
return e.join("");
};
}
function Br(n, t) {
return t = (t -= n = +n) || 1 / t, function (e) {
return (e - n) / t;
};
}
function Wr(n, t) {
return t = (t -= n = +n) || 1 / t, function (e) {
return Math.max(0, Math.min(1, (e - n) / t));
};
}
function Jr(n) {
for (var t = n.source, e = n.target, r = Kr(t, e), u = [t]; t !== r;) t = t.parent, u.push(t);
for (var i = u.length; e !== r;) u.splice(i, 0, e), e = e.parent;
return u;
}
function Gr(n) {
for (var t = [], e = n.parent; null != e;) t.push(n), n = e, e = e.parent;
return t.push(n), t;
}
function Kr(n, t) {
if (n === t) return n;
for (var e = Gr(n), r = Gr(t), u = e.pop(), i = r.pop(), a = null; u === i;) a = u, u = e.pop(), i = r.pop();
return a;
}
function Qr(n) {
n.fixed |= 2;
}
function nu(n) {
n.fixed &= -7;
}
function tu(n) {
n.fixed |= 4, n.px = n.x, n.py = n.y;
}
function eu(n) {
n.fixed &= -5;
}
function ru(n, t, e) {
var r = 0,
u = 0;
if (n.charge = 0, !n.leaf) for (var i, a = n.nodes, o = a.length, l = -1; ++l < o;) i = a[l], null != i && (ru(i, t, e), n.charge += i.charge, r += i.charge * i.cx, u += i.charge * i.cy);
if (n.point) {
n.leaf || (n.point.x += Math.random() - .5, n.point.y += Math.random() - .5);
var c = t * e[n.point.index];
n.charge += n.pointCharge = c, r += c * n.point.x, u += c * n.point.y;
}
n.cx = r / n.charge, n.cy = u / n.charge;
}
function uu(n, t) {
return oa.rebind(n, t, "sort", "children", "value"), n.nodes = n, n.links = su, n;
}
function iu(n, t) {
for (var e = [n]; null != (n = e.pop());) if (t(n), (u = n.children) && (r = u.length)) for (var r, u; --r >= 0;) e.push(u[r]);
}
function au(n, t) {
for (var e = [n], r = []; null != (n = e.pop());) if (r.push(n), (i = n.children) && (u = i.length)) for (var u, i, a = -1; ++a < u;) e.push(i[a]);
for (; null != (n = r.pop());) t(n);
}
function ou(n) {
return n.children;
}
function lu(n) {
return n.value;
}
function cu(n, t) {
return t.value - n.value;
}
function su(n) {
return oa.merge(n.map(function (n) {
return (n.children || []).map(function (t) {
return {
source: n,
target: t
};
});
}));
}
function fu(n) {
return n.x;
}
function hu(n) {
return n.y;
}
function gu(n, t, e) {
n.y0 = t, n.y = e;
}
function pu(n) {
return oa.range(n.length);
}
function vu(n) {
for (var t = -1, e = n[0].length, r = []; ++t < e;) r[t] = 0;
return r;
}
function du(n) {
for (var t, e = 1, r = 0, u = n[0][1], i = n.length; i > e; ++e) (t = n[e][1]) > u && (r = e, u = t);
return r;
}
function mu(n) {
return n.reduce(yu, 0);
}
function yu(n, t) {
return n + t[1];
}
function Mu(n, t) {
return xu(n, Math.ceil(Math.log(t.length) / Math.LN2 + 1));
}
function xu(n, t) {
for (var e = -1, r = +n[0], u = (n[1] - r) / t, i = []; ++e <= t;) i[e] = u * e + r;
return i;
}
function bu(n) {
return [oa.min(n), oa.max(n)];
}
function _u(n, t) {
return n.value - t.value;
}
function wu(n, t) {
var e = n._pack_next;
n._pack_next = t, t._pack_prev = n, t._pack_next = e, e._pack_prev = t;
}
function Su(n, t) {
n._pack_next = t, t._pack_prev = n;
}
function ku(n, t) {
var e = t.x - n.x,
r = t.y - n.y,
u = n.r + t.r;
return .999 * u * u > e * e + r * r;
}
function Nu(n) {
function t(n) {
s = Math.min(n.x - n.r, s), f = Math.max(n.x + n.r, f), h = Math.min(n.y - n.r, h), g = Math.max(n.y + n.r, g);
}
if ((e = n.children) && (c = e.length)) {
var e,
r,
u,
i,
a,
o,
l,
c,
s = 1 / 0,
f = -(1 / 0),
h = 1 / 0,
g = -(1 / 0);
if (e.forEach(Eu), r = e[0], r.x = -r.r, r.y = 0, t(r), c > 1 && (u = e[1], u.x = u.r, u.y = 0, t(u), c > 2)) for (i = e[2], zu(r, u, i), t(i), wu(r, i), r._pack_prev = i, wu(i, u), u = r._pack_next, a = 3; c > a; a++) {
zu(r, u, i = e[a]);
var p = 0,
v = 1,
d = 1;
for (o = u._pack_next; o !== u; o = o._pack_next, v++) if (ku(o, i)) {
p = 1;
break;
}
if (1 == p) for (l = r._pack_prev; l !== o._pack_prev && !ku(l, i); l = l._pack_prev, d++);
p ? (d > v || v == d && u.r < r.r ? Su(r, u = o) : Su(r = l, u), a--) : (wu(r, i), u = i, t(i));
}
var m = (s + f) / 2,
y = (h + g) / 2,
M = 0;
for (a = 0; c > a; a++) i = e[a], i.x -= m, i.y -= y, M = Math.max(M, i.r + Math.sqrt(i.x * i.x + i.y * i.y));
n.r = M, e.forEach(Au);
}
}
function Eu(n) {
n._pack_next = n._pack_prev = n;
}
function Au(n) {
delete n._pack_next, delete n._pack_prev;
}
function Cu(n, t, e, r) {
var u = n.children;
if (n.x = t += r * n.x, n.y = e += r * n.y, n.r *= r, u) for (var i = -1, a = u.length; ++i < a;) Cu(u[i], t, e, r);
}
function zu(n, t, e) {
var r = n.r + e.r,
u = t.x - n.x,
i = t.y - n.y;
if (r && (u || i)) {
var a = t.r + e.r,
o = u * u + i * i;
a *= a, r *= r;
var l = .5 + (r - a) / (2 * o),
c = Math.sqrt(Math.max(0, 2 * a * (r + o) - (r -= o) * r - a * a)) / (2 * o);
e.x = n.x + l * u + c * i, e.y = n.y + l * i - c * u;
} else e.x = n.x + r, e.y = n.y;
}
function Lu(n, t) {
return n.parent == t.parent ? 1 : 2;
}
function qu(n) {
var t = n.children;
return t.length ? t[0] : n.t;
}
function Tu(n) {
var t,
e = n.children;
return (t = e.length) ? e[t - 1] : n.t;
}
function Ru(n, t, e) {
var r = e / (t.i - n.i);
t.c -= r, t.s += e, n.c += r, t.z += e, t.m += e;
}
function Du(n) {
for (var t, e = 0, r = 0, u = n.children, i = u.length; --i >= 0;) t = u[i], t.z += e, t.m += e, e += t.s + (r += t.c);
}
function Pu(n, t, e) {
return n.a.parent === t.parent ? n.a : e;
}
function ju(n) {
return 1 + oa.max(n, function (n) {
return n.y;
});
}
function Uu(n) {
return n.reduce(function (n, t) {
return n + t.x;
}, 0) / n.length;
}
function Fu(n) {
var t = n.children;
return t && t.length ? Fu(t[0]) : n;
}
function Hu(n) {
var t,
e = n.children;
return e && (t = e.length) ? Hu(e[t - 1]) : n;
}
function Ou(n) {
return {
x: n.x,
y: n.y,
dx: n.dx,
dy: n.dy
};
}
function Iu(n, t) {
var e = n.x + t[3],
r = n.y + t[0],
u = n.dx - t[1] - t[3],
i = n.dy - t[0] - t[2];
return 0 > u && (e += u / 2, u = 0), 0 > i && (r += i / 2, i = 0), {
x: e,
y: r,
dx: u,
dy: i
};
}
function Yu(n) {
var t = n[0],
e = n[n.length - 1];
return e > t ? [t, e] : [e, t];
}
function Zu(n) {
return n.rangeExtent ? n.rangeExtent() : Yu(n.range());
}
function Vu(n, t, e, r) {
var u = e(n[0], n[1]),
i = r(t[0], t[1]);
return function (n) {
return i(u(n));
};
}
function Xu(n, t) {
var e,
r = 0,
u = n.length - 1,
i = n[r],
a = n[u];
return i > a && (e = r, r = u, u = e, e = i, i = a, a = e), n[r] = t.floor(i), n[u] = t.ceil(a), n;
}
function $u(n) {
return n ? {
floor: function floor(t) {
return Math.floor(t / n) * n;
},
ceil: function ceil(t) {
return Math.ceil(t / n) * n;
}
} : wl;
}
function Bu(n, t, e, r) {
var u = [],
i = [],
a = 0,
o = Math.min(n.length, t.length) - 1;
for (n[o] < n[0] && (n = n.slice().reverse(), t = t.slice().reverse()); ++a <= o;) u.push(e(n[a - 1], n[a])), i.push(r(t[a - 1], t[a]));
return function (t) {
var e = oa.bisect(n, t, 1, o) - 1;
return i[e](u[e](t));
};
}
function Wu(n, t, e, r) {
function u() {
var u = Math.min(n.length, t.length) > 2 ? Bu : Vu,
l = r ? Wr : Br;
return a = u(n, t, l, e), o = u(t, n, l, Mr), i;
}
function i(n) {
return a(n);
}
var a, o;
return i.invert = function (n) {
return o(n);
}, i.domain = function (t) {
return arguments.length ? (n = t.map(Number), u()) : n;
}, i.range = function (n) {
return arguments.length ? (t = n, u()) : t;
}, i.rangeRound = function (n) {
return i.range(n).interpolate(jr);
}, i.clamp = function (n) {
return arguments.length ? (r = n, u()) : r;
}, i.interpolate = function (n) {
return arguments.length ? (e = n, u()) : e;
}, i.ticks = function (t) {
return Qu(n, t);
}, i.tickFormat = function (t, e) {
return ni(n, t, e);
}, i.nice = function (t) {
return Gu(n, t), u();
}, i.copy = function () {
return Wu(n, t, e, r);
}, u();
}
function Ju(n, t) {
return oa.rebind(n, t, "range", "rangeRound", "interpolate", "clamp");
}
function Gu(n, t) {
return Xu(n, $u(Ku(n, t)[2]));
}
function Ku(n, t) {
null == t && (t = 10);
var e = Yu(n),
r = e[1] - e[0],
u = Math.pow(10, Math.floor(Math.log(r / t) / Math.LN10)),
i = t / r * u;
return .15 >= i ? u *= 10 : .35 >= i ? u *= 5 : .75 >= i && (u *= 2), e[0] = Math.ceil(e[0] / u) * u, e[1] = Math.floor(e[1] / u) * u + .5 * u, e[2] = u, e;
}
function Qu(n, t) {
return oa.range.apply(oa, Ku(n, t));
}
function ni(n, t, e) {
var r = Ku(n, t);
if (e) {
var u = so.exec(e);
if (u.shift(), "s" === u[8]) {
var i = oa.formatPrefix(Math.max(Ma(r[0]), Ma(r[1])));
return u[7] || (u[7] = "." + ti(i.scale(r[2]))), u[8] = "f", e = oa.format(u.join("")), function (n) {
return e(i.scale(n)) + i.symbol;
};
}
u[7] || (u[7] = "." + ei(u[8], r)), e = u.join("");
} else e = ",." + ti(r[2]) + "f";
return oa.format(e);
}
function ti(n) {
return -Math.floor(Math.log(n) / Math.LN10 + .01);
}
function ei(n, t) {
var e = ti(t[2]);
return n in Sl ? Math.abs(e - ti(Math.max(Ma(t[0]), Ma(t[1])))) + +("e" !== n) : e - 2 * ("%" === n);
}
function ri(n, t, e, r) {
function u(n) {
return (e ? Math.log(0 > n ? 0 : n) : -Math.log(n > 0 ? 0 : -n)) / Math.log(t);
}
function i(n) {
return e ? Math.pow(t, n) : -Math.pow(t, -n);
}
function a(t) {
return n(u(t));
}
return a.invert = function (t) {
return i(n.invert(t));
}, a.domain = function (t) {
return arguments.length ? (e = t[0] >= 0, n.domain((r = t.map(Number)).map(u)), a) : r;
}, a.base = function (e) {
return arguments.length ? (t = +e, n.domain(r.map(u)), a) : t;
}, a.nice = function () {
var t = Xu(r.map(u), e ? Math : Nl);
return n.domain(t), r = t.map(i), a;
}, a.ticks = function () {
var n = Yu(r),
a = [],
o = n[0],
l = n[1],
c = Math.floor(u(o)),
s = Math.ceil(u(l)),
f = t % 1 ? 2 : t;
if (isFinite(s - c)) {
if (e) {
for (; s > c; c++) for (var h = 1; f > h; h++) a.push(i(c) * h);
a.push(i(c));
} else for (a.push(i(c)); c++ < s;) for (var h = f - 1; h > 0; h--) a.push(i(c) * h);
for (c = 0; a[c] < o; c++);
for (s = a.length; a[s - 1] > l; s--);
a = a.slice(c, s);
}
return a;
}, a.tickFormat = function (n, t) {
if (!arguments.length) return kl;
arguments.length < 2 ? t = kl : "function" != typeof t && (t = oa.format(t));
var r,
o = Math.max(.1, n / a.ticks().length),
l = e ? (r = 1e-12, Math.ceil) : (r = -1e-12, Math.floor);
return function (n) {
return n / i(l(u(n) + r)) <= o ? t(n) : "";
};
}, a.copy = function () {
return ri(n.copy(), t, e, r);
}, Ju(a, n);
}
function ui(n, t, e) {
function r(t) {
return n(u(t));
}
var u = ii(t),
i = ii(1 / t);
return r.invert = function (t) {
return i(n.invert(t));
}, r.domain = function (t) {
return arguments.length ? (n.domain((e = t.map(Number)).map(u)), r) : e;
}, r.ticks = function (n) {
return Qu(e, n);
}, r.tickFormat = function (n, t) {
return ni(e, n, t);
}, r.nice = function (n) {
return r.domain(Gu(e, n));
}, r.exponent = function (a) {
return arguments.length ? (u = ii(t = a), i = ii(1 / t), n.domain(e.map(u)), r) : t;
}, r.copy = function () {
return ui(n.copy(), t, e);
}, Ju(r, n);
}
function ii(n) {
return function (t) {
return 0 > t ? -Math.pow(-t, n) : Math.pow(t, n);
};
}
function ai(n, t) {
function e(e) {
return i[((u.get(e) || ("range" === t.t ? u.set(e, n.push(e)) : NaN)) - 1) % i.length];
}
function r(t, e) {
return oa.range(n.length).map(function (n) {
return t + e * n;
});
}
var u, i, a;
return e.domain = function (r) {
if (!arguments.length) return n;
n = [], u = new c();
for (var i, a = -1, o = r.length; ++a < o;) u.has(i = r[a]) || u.set(i, n.push(i));
return e[t.t].apply(e, t.a);
}, e.range = function (n) {
return arguments.length ? (i = n, a = 0, t = {
t: "range",
a: arguments
}, e) : i;
}, e.rangePoints = function (u, o) {
arguments.length < 2 && (o = 0);
var l = u[0],
c = u[1],
s = n.length < 2 ? (l = (l + c) / 2, 0) : (c - l) / (n.length - 1 + o);
return i = r(l + s * o / 2, s), a = 0, t = {
t: "rangePoints",
a: arguments
}, e;
}, e.rangeRoundPoints = function (u, o) {
arguments.length < 2 && (o = 0);
var l = u[0],
c = u[1],
s = n.length < 2 ? (l = c = Math.round((l + c) / 2), 0) : (c - l) / (n.length - 1 + o) | 0;
return i = r(l + Math.round(s * o / 2 + (c - l - (n.length - 1 + o) * s) / 2), s), a = 0, t = {
t: "rangeRoundPoints",
a: arguments
}, e;
}, e.rangeBands = function (u, o, l) {
arguments.length < 2 && (o = 0), arguments.length < 3 && (l = o);
var c = u[1] < u[0],
s = u[c - 0],
f = u[1 - c],
h = (f - s) / (n.length - o + 2 * l);
return i = r(s + h * l, h), c && i.reverse(), a = h * (1 - o), t = {
t: "rangeBands",
a: arguments
}, e;
}, e.rangeRoundBands = function (u, o, l) {
arguments.length < 2 && (o = 0), arguments.length < 3 && (l = o);
var c = u[1] < u[0],
s = u[c - 0],
f = u[1 - c],
h = Math.floor((f - s) / (n.length - o + 2 * l));
return i = r(s + Math.round((f - s - (n.length - o) * h) / 2), h), c && i.reverse(), a = Math.round(h * (1 - o)), t = {
t: "rangeRoundBands",
a: arguments
}, e;
}, e.rangeBand = function () {
return a;
}, e.rangeExtent = function () {
return Yu(t.a[0]);
}, e.copy = function () {
return ai(n, t);
}, e.domain(n);
}
function oi(n, t) {
function i() {
var e = 0,
r = t.length;
for (o = []; ++e < r;) o[e - 1] = oa.quantile(n, e / r);
return a;
}
function a(n) {
return isNaN(n = +n) ? void 0 : t[oa.bisect(o, n)];
}
var o;
return a.domain = function (t) {
return arguments.length ? (n = t.map(r).filter(u).sort(e), i()) : n;
}, a.range = function (n) {
return arguments.length ? (t = n, i()) : t;
}, a.quantiles = function () {
return o;
}, a.invertExtent = function (e) {
return e = t.indexOf(e), 0 > e ? [NaN, NaN] : [e > 0 ? o[e - 1] : n[0], e < o.length ? o[e] : n[n.length - 1]];
}, a.copy = function () {
return oi(n, t);
}, i();
}
function li(n, t, e) {
function r(t) {
return e[Math.max(0, Math.min(a, Math.floor(i * (t - n))))];
}
function u() {
return i = e.length / (t - n), a = e.length - 1, r;
}
var i, a;
return r.domain = function (e) {
return arguments.length ? (n = +e[0], t = +e[e.length - 1], u()) : [n, t];
}, r.range = function (n) {
return arguments.length ? (e = n, u()) : e;
}, r.invertExtent = function (t) {
return t = e.indexOf(t), t = 0 > t ? NaN : t / i + n, [t, t + 1 / i];
}, r.copy = function () {
return li(n, t, e);
}, u();
}
function ci(n, t) {
function e(e) {
return e >= e ? t[oa.bisect(n, e)] : void 0;
}
return e.domain = function (t) {
return arguments.length ? (n = t, e) : n;
}, e.range = function (n) {
return arguments.length ? (t = n, e) : t;
}, e.invertExtent = function (e) {
return e = t.indexOf(e), [n[e - 1], n[e]];
}, e.copy = function () {
return ci(n, t);
}, e;
}
function si(n) {
function t(n) {
return +n;
}
return t.invert = t, t.domain = t.range = function (e) {
return arguments.length ? (n = e.map(t), t) : n;
}, t.ticks = function (t) {
return Qu(n, t);
}, t.tickFormat = function (t, e) {
return ni(n, t, e);
}, t.copy = function () {
return si(n);
}, t;
}
function fi() {
return 0;
}
function hi(n) {
return n.innerRadius;
}
function gi(n) {
return n.outerRadius;
}
function pi(n) {
return n.startAngle;
}
function vi(n) {
return n.endAngle;
}
function di(n) {
return n && n.padAngle;
}
function mi(n, t, e, r) {
return (n - e) * t - (t - r) * n > 0 ? 0 : 1;
}
function yi(n, t, e, r, u) {
var i = n[0] - t[0],
a = n[1] - t[1],
o = (u ? r : -r) / Math.sqrt(i * i + a * a),
l = o * a,
c = -o * i,
s = n[0] + l,
f = n[1] + c,
h = t[0] + l,
g = t[1] + c,
p = (s + h) / 2,
v = (f + g) / 2,
d = h - s,
m = g - f,
y = d * d + m * m,
M = e - r,
x = s * g - h * f,
b = (0 > m ? -1 : 1) * Math.sqrt(Math.max(0, M * M * y - x * x)),
_ = (x * m - d * b) / y,
w = (-x * d - m * b) / y,
S = (x * m + d * b) / y,
k = (-x * d + m * b) / y,
N = _ - p,
E = w - v,
A = S - p,
C = k - v;
return N * N + E * E > A * A + C * C && (_ = S, w = k), [[_ - l, w - c], [_ * e / M, w * e / M]];
}
function Mi(n) {
function t(t) {
function a() {
c.push("M", i(n(s), o));
}
for (var l, c = [], s = [], f = -1, h = t.length, g = En(e), p = En(r); ++f < h;) u.call(this, l = t[f], f) ? s.push([+g.call(this, l, f), +p.call(this, l, f)]) : s.length && (a(), s = []);
return s.length && a(), c.length ? c.join("") : null;
}
var e = Ce,
r = ze,
u = zt,
i = xi,
a = i.key,
o = .7;
return t.x = function (n) {
return arguments.length ? (e = n, t) : e;
}, t.y = function (n) {
return arguments.length ? (r = n, t) : r;
}, t.defined = function (n) {
return arguments.length ? (u = n, t) : u;
}, t.interpolate = function (n) {
return arguments.length ? (a = "function" == typeof n ? i = n : (i = ql.get(n) || xi).key, t) : a;
}, t.tension = function (n) {
return arguments.length ? (o = n, t) : o;
}, t;
}
function xi(n) {
return n.length > 1 ? n.join("L") : n + "Z";
}
function bi(n) {
return n.join("L") + "Z";
}
function _i(n) {
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r[0] + (r = n[t])[0]) / 2, "V", r[1]);
return e > 1 && u.push("H", r[0]), u.join("");
}
function wi(n) {
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("V", (r = n[t])[1], "H", r[0]);
return u.join("");
}
function Si(n) {
for (var t = 0, e = n.length, r = n[0], u = [r[0], ",", r[1]]; ++t < e;) u.push("H", (r = n[t])[0], "V", r[1]);
return u.join("");
}
function ki(n, t) {
return n.length < 4 ? xi(n) : n[1] + Ai(n.slice(1, -1), Ci(n, t));
}
function Ni(n, t) {
return n.length < 3 ? bi(n) : n[0] + Ai((n.push(n[0]), n), Ci([n[n.length - 2]].concat(n, [n[1]]), t));
}
function Ei(n, t) {
return n.length < 3 ? xi(n) : n[0] + Ai(n, Ci(n, t));
}
function Ai(n, t) {
if (t.length < 1 || n.length != t.length && n.length != t.length + 2) return xi(n);
var e = n.length != t.length,
r = "",
u = n[0],
i = n[1],
a = t[0],
o = a,
l = 1;
if (e && (r += "Q" + (i[0] - 2 * a[0] / 3) + "," + (i[1] - 2 * a[1] / 3) + "," + i[0] + "," + i[1], u = n[1], l = 2), t.length > 1) {
o = t[1], i = n[l], l++, r += "C" + (u[0] + a[0]) + "," + (u[1] + a[1]) + "," + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1];
for (var c = 2; c < t.length; c++, l++) i = n[l], o = t[c], r += "S" + (i[0] - o[0]) + "," + (i[1] - o[1]) + "," + i[0] + "," + i[1];
}
if (e) {
var s = n[l];
r += "Q" + (i[0] + 2 * o[0] / 3) + "," + (i[1] + 2 * o[1] / 3) + "," + s[0] + "," + s[1];
}
return r;
}
function Ci(n, t) {
for (var e, r = [], u = (1 - t) / 2, i = n[0], a = n[1], o = 1, l = n.length; ++o < l;) e = i, i = a, a = n[o], r.push([u * (a[0] - e[0]), u * (a[1] - e[1])]);
return r;
}
function zi(n) {
if (n.length < 3) return xi(n);
var t = 1,
e = n.length,
r = n[0],
u = r[0],
i = r[1],
a = [u, u, u, (r = n[1])[0]],
o = [i, i, i, r[1]],
l = [u, ",", i, "L", Ri(Dl, a), ",", Ri(Dl, o)];
for (n.push(n[e - 1]); ++t <= e;) r = n[t], a.shift(), a.push(r[0]), o.shift(), o.push(r[1]), Di(l, a, o);
return n.pop(), l.push("L", r), l.join("");
}
function Li(n) {
if (n.length < 4) return xi(n);
for (var t, e = [], r = -1, u = n.length, i = [0], a = [0]; ++r < 3;) t = n[r], i.push(t[0]), a.push(t[1]);
for (e.push(Ri(Dl, i) + "," + Ri(Dl, a)), --r; ++r < u;) t = n[r], i.shift(), i.push(t[0]), a.shift(), a.push(t[1]), Di(e, i, a);
return e.join("");
}
function qi(n) {
for (var t, e, r = -1, u = n.length, i = u + 4, a = [], o = []; ++r < 4;) e = n[r % u], a.push(e[0]), o.push(e[1]);
for (t = [Ri(Dl, a), ",", Ri(Dl, o)], --r; ++r < i;) e = n[r % u], a.shift(), a.push(e[0]), o.shift(), o.push(e[1]), Di(t, a, o);
return t.join("");
}
function Ti(n, t) {
var e = n.length - 1;
if (e) for (var r, u, i = n[0][0], a = n[0][1], o = n[e][0] - i, l = n[e][1] - a, c = -1; ++c <= e;) r = n[c], u = c / e, r[0] = t * r[0] + (1 - t) * (i + u * o), r[1] = t * r[1] + (1 - t) * (a + u * l);
return zi(n);
}
function Ri(n, t) {
return n[0] * t[0] + n[1] * t[1] + n[2] * t[2] + n[3] * t[3];
}
function Di(n, t, e) {
n.push("C", Ri(Tl, t), ",", Ri(Tl, e), ",", Ri(Rl, t), ",", Ri(Rl, e), ",", Ri(Dl, t), ",", Ri(Dl, e));
}
function Pi(n, t) {
return (t[1] - n[1]) / (t[0] - n[0]);
}
function ji(n) {
for (var t = 0, e = n.length - 1, r = [], u = n[0], i = n[1], a = r[0] = Pi(u, i); ++t < e;) r[t] = (a + (a = Pi(u = i, i = n[t + 1]))) / 2;
return r[t] = a, r;
}
function Ui(n) {
for (var t, e, r, u, i = [], a = ji(n), o = -1, l = n.length - 1; ++o < l;) t = Pi(n[o], n[o + 1]), Ma(t) < Da ? a[o] = a[o + 1] = 0 : (e = a[o] / t, r = a[o + 1] / t, u = e * e + r * r, u > 9 && (u = 3 * t / Math.sqrt(u), a[o] = u * e, a[o + 1] = u * r));
for (o = -1; ++o <= l;) u = (n[Math.min(l, o + 1)][0] - n[Math.max(0, o - 1)][0]) / (6 * (1 + a[o] * a[o])), i.push([u || 0, a[o] * u || 0]);
return i;
}
function Fi(n) {
return n.length < 3 ? xi(n) : n[0] + Ai(n, Ui(n));
}
function Hi(n) {
for (var t, e, r, u = -1, i = n.length; ++u < i;) t = n[u], e = t[0], r = t[1] - Ha, t[0] = e * Math.cos(r), t[1] = e * Math.sin(r);
return n;
}
function Oi(n) {
function t(t) {
function l() {
v.push("M", o(n(m), f), s, c(n(d.reverse()), f), "Z");
}
for (var h, g, p, v = [], d = [], m = [], y = -1, M = t.length, x = En(e), b = En(u), _ = e === r ? function () {
return g;
} : En(r), w = u === i ? function () {
return p;
} : En(i); ++y < M;) a.call(this, h = t[y], y) ? (d.push([g = +x.call(this, h, y), p = +b.call(this, h, y)]), m.push([+_.call(this, h, y), +w.call(this, h, y)])) : d.length && (l(), d = [], m = []);
return d.length && l(), v.length ? v.join("") : null;
}
var e = Ce,
r = Ce,
u = 0,
i = ze,
a = zt,
o = xi,
l = o.key,
c = o,
s = "L",
f = .7;
return t.x = function (n) {
return arguments.length ? (e = r = n, t) : r;
}, t.x0 = function (n) {
return arguments.length ? (e = n, t) : e;
}, t.x1 = function (n) {
return arguments.length ? (r = n, t) : r;
}, t.y = function (n) {
return arguments.length ? (u = i = n, t) : i;
}, t.y0 = function (n) {
return arguments.length ? (u = n, t) : u;
}, t.y1 = function (n) {
return arguments.length ? (i = n, t) : i;
}, t.defined = function (n) {
return arguments.length ? (a = n, t) : a;
}, t.interpolate = function (n) {
return arguments.length ? (l = "function" == typeof n ? o = n : (o = ql.get(n) || xi).key, c = o.reverse || o, s = o.closed ? "M" : "L", t) : l;
}, t.tension = function (n) {
return arguments.length ? (f = n, t) : f;
}, t;
}
function Ii(n) {
return n.radius;
}
function Yi(n) {
return [n.x, n.y];
}
function Zi(n) {
return function () {
var t = n.apply(this, arguments),
e = t[0],
r = t[1] - Ha;
return [e * Math.cos(r), e * Math.sin(r)];
};
}
function Vi() {
return 64;
}
function Xi() {
return "circle";
}
function $i(n) {
var t = Math.sqrt(n / ja);
return "M0," + t + "A" + t + "," + t + " 0 1,1 0," + -t + "A" + t + "," + t + " 0 1,1 0," + t + "Z";
}
function Bi(n) {
return function () {
var t, e, r;
(t = this[n]) && (r = t[e = t.active]) && (r.timer.c = null, r.timer.t = NaN, --t.count ? delete t[e] : delete this[n], t.active += .5, r.event && r.event.interrupt.call(this, this.__data__, r.index));
};
}
function Wi(n, t, e) {
return Sa(n, Il), n.namespace = t, n.id = e, n;
}
function Ji(n, t, e, r) {
var u = n.id,
i = n.namespace;
return Y(n, "function" == typeof e ? function (n, a, o) {
n[i][u].tween.set(t, r(e.call(n, n.__data__, a, o)));
} : (e = r(e), function (n) {
n[i][u].tween.set(t, e);
}));
}
function Gi(n) {
return null == n && (n = ""), function () {
this.textContent = n;
};
}
function Ki(n) {
return null == n ? "__transition__" : "__transition_" + n + "__";
}
function Qi(n, t, e, r, u) {
function i(n) {
var t = v.delay;
return s.t = t + l, n >= t ? a(n - t) : void (s.c = a);
}
function a(e) {
var u = p.active,
i = p[u];
i && (i.timer.c = null, i.timer.t = NaN, --p.count, delete p[u], i.event && i.event.interrupt.call(n, n.__data__, i.index));
for (var a in p) if (r > +a) {
var c = p[a];
c.timer.c = null, c.timer.t = NaN, --p.count, delete p[a];
}
s.c = o, qn(function () {
return s.c && o(e || 1) && (s.c = null, s.t = NaN), 1;
}, 0, l), p.active = r, v.event && v.event.start.call(n, n.__data__, t), g = [], v.tween.forEach(function (e, r) {
(r = r.call(n, n.__data__, t)) && g.push(r);
}), h = v.ease, f = v.duration;
}
function o(u) {
for (var i = u / f, a = h(i), o = g.length; o > 0;) g[--o].call(n, a);
return i >= 1 ? (v.event && v.event.end.call(n, n.__data__, t), --p.count ? delete p[r] : delete n[e], 1) : void 0;
}
var l,
s,
f,
h,
g,
p = n[e] || (n[e] = {
active: 0,
count: 0
}),
v = p[r];
v || (l = u.time, s = qn(i, 0, l), v = p[r] = {
tween: new c(),
time: l,
timer: s,
delay: u.delay,
duration: u.duration,
ease: u.ease,
index: t
}, u = null, ++p.count);
}
function na(n, t, e) {
n.attr("transform", function (n) {
var r = t(n);
return "translate(" + (isFinite(r) ? r : e(n)) + ",0)";
});
}
function ta(n, t, e) {
n.attr("transform", function (n) {
var r = t(n);
return "translate(0," + (isFinite(r) ? r : e(n)) + ")";
});
}
function ea(n) {
return n.toISOString();
}
function ra(n, t, e) {
function r(t) {
return n(t);
}
function u(n, e) {
var r = n[1] - n[0],
u = r / e,
i = oa.bisect(Gl, u);
return i == Gl.length ? [t.year, Ku(n.map(function (n) {
return n / 31536e6;
}), e)[2]] : i ? t[u / Gl[i - 1] < Gl[i] / u ? i - 1 : i] : [nc, Ku(n, e)[2]];
}
return r.invert = function (t) {
return ua(n.invert(t));
}, r.domain = function (t) {
return arguments.length ? (n.domain(t), r) : n.domain().map(ua);
}, r.nice = function (n, t) {
function e(e) {
return !isNaN(e) && !n.range(e, ua(+e + 1), t).length;
}
var i = r.domain(),
a = Yu(i),
o = null == n ? u(a, 10) : "number" == typeof n && u(a, n);
return o && (n = o[0], t = o[1]), r.domain(Xu(i, t > 1 ? {
floor: function floor(t) {
for (; e(t = n.floor(t));) t = ua(t - 1);
return t;
},
ceil: function ceil(t) {
for (; e(t = n.ceil(t));) t = ua(+t + 1);
return t;
}
} : n));
}, r.ticks = function (n, t) {
var e = Yu(r.domain()),
i = null == n ? u(e, 10) : "number" == typeof n ? u(e, n) : !n.range && [{
range: n
}, t];
return i && (n = i[0], t = i[1]), n.range(e[0], ua(+e[1] + 1), 1 > t ? 1 : t);
}, r.tickFormat = function () {
return e;
}, r.copy = function () {
return ra(n.copy(), t, e);
}, Ju(r, n);
}
function ua(n) {
return new Date(n);
}
function ia(n) {
return JSON.parse(n.responseText);
}
function aa(n) {
var t = sa.createRange();
return t.selectNode(sa.body), t.createContextualFragment(n.responseText);
}
var oa = {
version: "3.5.10"
},
la = [].slice,
ca = function ca(n) {
return la.call(n);
},
sa = this.document;
if (sa) try {
ca(sa.documentElement.childNodes)[0].nodeType;
} catch (fa) {
ca = function ca(n) {
for (var t = n.length, e = new Array(t); t--;) e[t] = n[t];
return e;
};
}
if (Date.now || (Date.now = function () {
return +new Date();
}), sa) try {
sa.createElement("DIV").style.setProperty("opacity", 0, "");
} catch (ha) {
var ga = this.Element.prototype,
pa = ga.setAttribute,
va = ga.setAttributeNS,
da = this.CSSStyleDeclaration.prototype,
ma = da.setProperty;
ga.setAttribute = function (n, t) {
pa.call(this, n, t + "");
}, ga.setAttributeNS = function (n, t, e) {
va.call(this, n, t, e + "");
}, da.setProperty = function (n, t, e) {
ma.call(this, n, t + "", e);
};
}
oa.ascending = e, oa.descending = function (n, t) {
return n > t ? -1 : t > n ? 1 : t >= n ? 0 : NaN;
}, oa.min = function (n, t) {
var e,
r,
u = -1,
i = n.length;
if (1 === arguments.length) {
for (; ++u < i;) if (null != (r = n[u]) && r >= r) {
e = r;
break;
}
for (; ++u < i;) null != (r = n[u]) && e > r && (e = r);
} else {
for (; ++u < i;) if (null != (r = t.call(n, n[u], u)) && r >= r) {
e = r;
break;
}
for (; ++u < i;) null != (r = t.call(n, n[u], u)) && e > r && (e = r);
}
return e;
}, oa.max = function (n, t) {
var e,
r,
u = -1,
i = n.length;
if (1 === arguments.length) {
for (; ++u < i;) if (null != (r = n[u]) && r >= r) {
e = r;
break;
}
for (; ++u < i;) null != (r = n[u]) && r > e && (e = r);
} else {
for (; ++u < i;) if (null != (r = t.call(n, n[u], u)) && r >= r) {
e = r;
break;
}
for (; ++u < i;) null != (r = t.call(n, n[u], u)) && r > e && (e = r);
}
return e;
}, oa.extent = function (n, t) {
var e,
r,
u,
i = -1,
a = n.length;
if (1 === arguments.length) {
for (; ++i < a;) if (null != (r = n[i]) && r >= r) {
e = u = r;
break;
}
for (; ++i < a;) null != (r = n[i]) && (e > r && (e = r), r > u && (u = r));
} else {
for (; ++i < a;) if (null != (r = t.call(n, n[i], i)) && r >= r) {
e = u = r;
break;
}
for (; ++i < a;) null != (r = t.call(n, n[i], i)) && (e > r && (e = r), r > u && (u = r));
}
return [e, u];
}, oa.sum = function (n, t) {
var e,
r = 0,
i = n.length,
a = -1;
if (1 === arguments.length) for (; ++a < i;) u(e = +n[a]) && (r += e);else for (; ++a < i;) u(e = +t.call(n, n[a], a)) && (r += e);
return r;
}, oa.mean = function (n, t) {
var e,
i = 0,
a = n.length,
o = -1,
l = a;
if (1 === arguments.length) for (; ++o < a;) u(e = r(n[o])) ? i += e : --l;else for (; ++o < a;) u(e = r(t.call(n, n[o], o))) ? i += e : --l;
return l ? i / l : void 0;
}, oa.quantile = function (n, t) {
var e = (n.length - 1) * t + 1,
r = Math.floor(e),
u = +n[r - 1],
i = e - r;
return i ? u + i * (n[r] - u) : u;
}, oa.median = function (n, t) {
var i,
a = [],
o = n.length,
l = -1;
if (1 === arguments.length) for (; ++l < o;) u(i = r(n[l])) && a.push(i);else for (; ++l < o;) u(i = r(t.call(n, n[l], l))) && a.push(i);
return a.length ? oa.quantile(a.sort(e), .5) : void 0;
}, oa.variance = function (n, t) {
var e,
i,
a = n.length,
o = 0,
l = 0,
c = -1,
s = 0;
if (1 === arguments.length) for (; ++c < a;) u(e = r(n[c])) && (i = e - o, o += i / ++s, l += i * (e - o));else for (; ++c < a;) u(e = r(t.call(n, n[c], c))) && (i = e - o, o += i / ++s, l += i * (e - o));
return s > 1 ? l / (s - 1) : void 0;
}, oa.deviation = function () {
var n = oa.variance.apply(this, arguments);
return n ? Math.sqrt(n) : n;
};
var ya = i(e);
oa.bisectLeft = ya.left, oa.bisect = oa.bisectRight = ya.right, oa.bisector = function (n) {
return i(1 === n.length ? function (t, r) {
return e(n(t), r);
} : n);
}, oa.shuffle = function (n, t, e) {
(i = arguments.length) < 3 && (e = n.length, 2 > i && (t = 0));
for (var r, u, i = e - t; i;) u = Math.random() * i-- | 0, r = n[i + t], n[i + t] = n[u + t], n[u + t] = r;
return n;
}, oa.permute = function (n, t) {
for (var e = t.length, r = new Array(e); e--;) r[e] = n[t[e]];
return r;
}, oa.pairs = function (n) {
for (var t, e = 0, r = n.length - 1, u = n[0], i = new Array(0 > r ? 0 : r); r > e;) i[e] = [t = u, u = n[++e]];
return i;
}, oa.zip = function () {
if (!(r = arguments.length)) return [];
for (var n = -1, t = oa.min(arguments, a), e = new Array(t); ++n < t;) for (var r, u = -1, i = e[n] = new Array(r); ++u < r;) i[u] = arguments[u][n];
return e;
}, oa.transpose = function (n) {
return oa.zip.apply(oa, n);
}, oa.keys = function (n) {
var t = [];
for (var e in n) t.push(e);
return t;
}, oa.values = function (n) {
var t = [];
for (var e in n) t.push(n[e]);
return t;
}, oa.entries = function (n) {
var t = [];
for (var e in n) t.push({
key: e,
value: n[e]
});
return t;
}, oa.merge = function (n) {
for (var t, e, r, u = n.length, i = -1, a = 0; ++i < u;) a += n[i].length;
for (e = new Array(a); --u >= 0;) for (r = n[u], t = r.length; --t >= 0;) e[--a] = r[t];
return e;
};
var Ma = Math.abs;
oa.range = function (n, t, e) {
if (arguments.length < 3 && (e = 1, arguments.length < 2 && (t = n, n = 0)), (t - n) / e === 1 / 0) throw new Error("infinite range");
var r,
u = [],
i = o(Ma(e)),
a = -1;
if (n *= i, t *= i, e *= i, 0 > e) for (; (r = n + e * ++a) > t;) u.push(r / i);else for (; (r = n + e * ++a) < t;) u.push(r / i);
return u;
}, oa.map = function (n, t) {
var e = new c();
if (n instanceof c) n.forEach(function (n, t) {
e.set(n, t);
});else if (Array.isArray(n)) {
var r,
u = -1,
i = n.length;
if (1 === arguments.length) for (; ++u < i;) e.set(u, n[u]);else for (; ++u < i;) e.set(t.call(n, r = n[u], u), r);
} else for (var a in n) e.set(a, n[a]);
return e;
};
var xa = "__proto__",
ba = "\x00";
l(c, {
has: h,
get: function get(n) {
return this._[s(n)];
},
set: function set(n, t) {
return this._[s(n)] = t;
},
remove: g,
keys: p,
values: function values() {
var n = [];
for (var t in this._) n.push(this._[t]);
return n;
},
entries: function entries() {
var n = [];
for (var t in this._) n.push({
key: f(t),
value: this._[t]
});
return n;
},
size: v,
empty: d,
forEach: function forEach(n) {
for (var t in this._) n.call(this, f(t), this._[t]);
}
}), oa.nest = function () {
function n(t, a, o) {
if (o >= i.length) return r ? r.call(u, a) : e ? a.sort(e) : a;
for (var l, s, f, h, g = -1, p = a.length, v = i[o++], d = new c(); ++g < p;) (h = d.get(l = v(s = a[g]))) ? h.push(s) : d.set(l, [s]);
return t ? (s = t(), f = function f(e, r) {
s.set(e, n(t, r, o));
}) : (s = {}, f = function f(e, r) {
s[e] = n(t, r, o);
}), d.forEach(f), s;
}
function t(n, e) {
if (e >= i.length) return n;
var r = [],
u = a[e++];
return n.forEach(function (n, u) {
r.push({
key: n,
values: t(u, e)
});
}), u ? r.sort(function (n, t) {
return u(n.key, t.key);
}) : r;
}
var e,
r,
u = {},
i = [],
a = [];
return u.map = function (t, e) {
return n(e, t, 0);
}, u.entries = function (e) {
return t(n(oa.map, e, 0), 0);
}, u.key = function (n) {
return i.push(n), u;
}, u.sortKeys = function (n) {
return a[i.length - 1] = n, u;
}, u.sortValues = function (n) {
return e = n, u;
}, u.rollup = function (n) {
return r = n, u;
}, u;
}, oa.set = function (n) {
var t = new m();
if (n) for (var e = 0, r = n.length; r > e; ++e) t.add(n[e]);
return t;
}, l(m, {
has: h,
add: function add(n) {
return this._[s(n += "")] = !0, n;
},
remove: g,
values: p,
size: v,
empty: d,
forEach: function forEach(n) {
for (var t in this._) n.call(this, f(t));
}
}), oa.behavior = {}, oa.rebind = function (n, t) {
for (var e, r = 1, u = arguments.length; ++r < u;) n[e = arguments[r]] = M(n, t, t[e]);
return n;
};
var _a = ["webkit", "ms", "moz", "Moz", "o", "O"];
oa.dispatch = function () {
for (var n = new _(), t = -1, e = arguments.length; ++t < e;) n[arguments[t]] = w(n);
return n;
}, _.prototype.on = function (n, t) {
var e = n.indexOf("."),
r = "";
if (e >= 0 && (r = n.slice(e + 1), n = n.slice(0, e)), n) return arguments.length < 2 ? this[n].on(r) : this[n].on(r, t);
if (2 === arguments.length) {
if (null == t) for (n in this) this.hasOwnProperty(n) && this[n].on(r, null);
return this;
}
}, oa.event = null, oa.requote = function (n) {
return n.replace(wa, "\\$&");
};
var wa = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,
Sa = {}.__proto__ ? function (n, t) {
n.__proto__ = t;
} : function (n, t) {
for (var e in t) n[e] = t[e];
},
ka = function ka(n, t) {
return t.querySelector(n);
},
Na = function Na(n, t) {
return t.querySelectorAll(n);
},
_Ea = function Ea(n, t) {
var e = n.matches || n[x(n, "matchesSelector")];
return (_Ea = function Ea(n, t) {
return e.call(n, t);
})(n, t);
};
"function" == typeof Sizzle && (ka = function ka(n, t) {
return Sizzle(n, t)[0] || null;
}, Na = Sizzle, _Ea = Sizzle.matchesSelector), oa.selection = function () {
return oa.select(sa.documentElement);
};
var Aa = oa.selection.prototype = [];
Aa.select = function (n) {
var t,
e,
r,
u,
i = [];
n = A(n);
for (var a = -1, o = this.length; ++a < o;) {
i.push(t = []), t.parentNode = (r = this[a]).parentNode;
for (var l = -1, c = r.length; ++l < c;) (u = r[l]) ? (t.push(e = n.call(u, u.__data__, l, a)), e && "__data__" in u && (e.__data__ = u.__data__)) : t.push(null);
}
return E(i);
}, Aa.selectAll = function (n) {
var t,
e,
r = [];
n = C(n);
for (var u = -1, i = this.length; ++u < i;) for (var a = this[u], o = -1, l = a.length; ++o < l;) (e = a[o]) && (r.push(t = ca(n.call(e, e.__data__, o, u))), t.parentNode = e);
return E(r);
};
var Ca = {
svg: "http://www.w3.org/2000/svg",
xhtml: "http://www.w3.org/1999/xhtml",
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
oa.ns = {
prefix: Ca,
qualify: function qualify(n) {
var t = n.indexOf(":"),
e = n;
return t >= 0 && "xmlns" !== (e = n.slice(0, t)) && (n = n.slice(t + 1)), Ca.hasOwnProperty(e) ? {
space: Ca[e],
local: n
} : n;
}
}, Aa.attr = function (n, t) {
if (arguments.length < 2) {
if ("string" == typeof n) {
var e = this.node();
return n = oa.ns.qualify(n), n.local ? e.getAttributeNS(n.space, n.local) : e.getAttribute(n);
}
for (t in n) this.each(z(t, n[t]));
return this;
}
return this.each(z(n, t));
}, Aa.classed = function (n, t) {
if (arguments.length < 2) {
if ("string" == typeof n) {
var e = this.node(),
r = (n = T(n)).length,
u = -1;
if (t = e.classList) {
for (; ++u < r;) if (!t.contains(n[u])) return !1;
} else for (t = e.getAttribute("class"); ++u < r;) if (!q(n[u]).test(t)) return !1;
return !0;
}
for (t in n) this.each(R(t, n[t]));
return this;
}
return this.each(R(n, t));
}, Aa.style = function (n, e, r) {
var u = arguments.length;
if (3 > u) {
if ("string" != typeof n) {
2 > u && (e = "");
for (r in n) this.each(P(r, n[r], e));
return this;
}
if (2 > u) {
var i = this.node();
return t(i).getComputedStyle(i, null).getPropertyValue(n);
}
r = "";
}
return this.each(P(n, e, r));
}, Aa.property = function (n, t) {
if (arguments.length < 2) {
if ("string" == typeof n) return this.node()[n];
for (t in n) this.each(j(t, n[t]));
return this;
}
return this.each(j(n, t));
}, Aa.text = function (n) {
return arguments.length ? this.each("function" == typeof n ? function () {
var t = n.apply(this, arguments);
this.textContent = null == t ? "" : t;
} : null == n ? function () {
this.textContent = "";
} : function () {
this.textContent = n;
}) : this.node().textContent;
}, Aa.html = function (n) {
return arguments.length ? this.each("function" == typeof n ? function () {
var t = n.apply(this, arguments);
this.innerHTML = null == t ? "" : t;
} : null == n ? function () {
this.innerHTML = "";
} : function () {
this.innerHTML = n;
}) : this.node().innerHTML;
}, Aa.append = function (n) {
return n = U(n), this.select(function () {
return this.appendChild(n.apply(this, arguments));
});
}, Aa.insert = function (n, t) {
return n = U(n), t = A(t), this.select(function () {
return this.insertBefore(n.apply(this, arguments), t.apply(this, arguments) || null);
});
}, Aa.remove = function () {
return this.each(F);
}, Aa.data = function (n, t) {
function e(n, e) {
var r,
u,
i,
a = n.length,
f = e.length,
h = Math.min(a, f),
g = new Array(f),
p = new Array(f),
v = new Array(a);
if (t) {
var d,
m = new c(),
y = new Array(a);
for (r = -1; ++r < a;) (u = n[r]) && (m.has(d = t.call(u, u.__data__, r)) ? v[r] = u : m.set(d, u), y[r] = d);
for (r = -1; ++r < f;) (u = m.get(d = t.call(e, i = e[r], r))) ? u !== !0 && (g[r] = u, u.__data__ = i) : p[r] = H(i), m.set(d, !0);
for (r = -1; ++r < a;) r in y && m.get(y[r]) !== !0 && (v[r] = n[r]);
} else {
for (r = -1; ++r < h;) u = n[r], i = e[r], u ? (u.__data__ = i, g[r] = u) : p[r] = H(i);
for (; f > r; ++r) p[r] = H(e[r]);
for (; a > r; ++r) v[r] = n[r];
}
p.update = g, p.parentNode = g.parentNode = v.parentNode = n.parentNode, o.push(p), l.push(g), s.push(v);
}
var r,
u,
i = -1,
a = this.length;
if (!arguments.length) {
for (n = new Array(a = (r = this[0]).length); ++i < a;) (u = r[i]) && (n[i] = u.__data__);
return n;
}
var o = Z([]),
l = E([]),
s = E([]);
if ("function" == typeof n) for (; ++i < a;) e(r = this[i], n.call(r, r.parentNode.__data__, i));else for (; ++i < a;) e(r = this[i], n);
return l.enter = function () {
return o;
}, l.exit = function () {
return s;
}, l;
}, Aa.datum = function (n) {
return arguments.length ? this.property("__data__", n) : this.property("__data__");
}, Aa.filter = function (n) {
var t,
e,
r,
u = [];
"function" != typeof n && (n = O(n));
for (var i = 0, a = this.length; a > i; i++) {
u.push(t = []), t.parentNode = (e = this[i]).parentNode;
for (var o = 0, l = e.length; l > o; o++) (r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r);
}
return E(u);
}, Aa.order = function () {
for (var n = -1, t = this.length; ++n < t;) for (var e, r = this[n], u = r.length - 1, i = r[u]; --u >= 0;) (e = r[u]) && (i && i !== e.nextSibling && i.parentNode.insertBefore(e, i), i = e);
return this;
}, Aa.sort = function (n) {
n = I.apply(this, arguments);
for (var t = -1, e = this.length; ++t < e;) this[t].sort(n);
return this.order();
}, Aa.each = function (n) {
return Y(this, function (t, e, r) {
n.call(t, t.__data__, e, r);
});
}, Aa.call = function (n) {
var t = ca(arguments);
return n.apply(t[0] = this, t), this;
}, Aa.empty = function () {
return !this.node();
}, Aa.node = function () {
for (var n = 0, t = this.length; t > n; n++) for (var e = this[n], r = 0, u = e.length; u > r; r++) {
var i = e[r];
if (i) return i;
}
return null;
}, Aa.size = function () {
var n = 0;
return Y(this, function () {
++n;
}), n;
};
var za = [];
oa.selection.enter = Z, oa.selection.enter.prototype = za, za.append = Aa.append, za.empty = Aa.empty, za.node = Aa.node, za.call = Aa.call, za.size = Aa.size, za.select = function (n) {
for (var t, e, r, u, i, a = [], o = -1, l = this.length; ++o < l;) {
r = (u = this[o]).update, a.push(t = []), t.parentNode = u.parentNode;
for (var c = -1, s = u.length; ++c < s;) (i = u[c]) ? (t.push(r[c] = e = n.call(u.parentNode, i.__data__, c, o)), e.__data__ = i.__data__) : t.push(null);
}
return E(a);
}, za.insert = function (n, t) {
return arguments.length < 2 && (t = V(this)), Aa.insert.call(this, n, t);
}, oa.select = function (t) {
var e;
return "string" == typeof t ? (e = [ka(t, sa)], e.parentNode = sa.documentElement) : (e = [t], e.parentNode = n(t)), E([e]);
}, oa.selectAll = function (n) {
var t;
return "string" == typeof n ? (t = ca(Na(n, sa)), t.parentNode = sa.documentElement) : (t = ca(n), t.parentNode = null), E([t]);
}, Aa.on = function (n, t, e) {
var r = arguments.length;
if (3 > r) {
if ("string" != typeof n) {
2 > r && (t = !1);
for (e in n) this.each(X(e, n[e], t));
return this;
}
if (2 > r) return (r = this.node()["__on" + n]) && r._;
e = !1;
}
return this.each(X(n, t, e));
};
var La = oa.map({
mouseenter: "mouseover",
mouseleave: "mouseout"
});
sa && La.forEach(function (n) {
"on" + n in sa && La.remove(n);
});
var qa,
Ta = 0;
oa.mouse = function (n) {
return J(n, k());
};
var Ra = this.navigator && /WebKit/.test(this.navigator.userAgent) ? -1 : 0;
oa.touch = function (n, t, e) {
if (arguments.length < 3 && (e = t, t = k().changedTouches), t) for (var r, u = 0, i = t.length; i > u; ++u) if ((r = t[u]).identifier === e) return J(n, r);
}, oa.behavior.drag = function () {
function n() {
this.on("mousedown.drag", i).on("touchstart.drag", a);
}
function e(n, t, e, i, a) {
return function () {
function o() {
var n,
e,
r = t(h, v);
r && (n = r[0] - M[0], e = r[1] - M[1], p |= n | e, M = r, g({
type: "drag",
x: r[0] + c[0],
y: r[1] + c[1],
dx: n,
dy: e
}));
}
function l() {
t(h, v) && (m.on(i + d, null).on(a + d, null), y(p), g({
type: "dragend"
}));
}
var c,
s = this,
f = oa.event.target,
h = s.parentNode,
g = r.of(s, arguments),
p = 0,
v = n(),
d = ".drag" + (null == v ? "" : "-" + v),
m = oa.select(e(f)).on(i + d, o).on(a + d, l),
y = W(f),
M = t(h, v);
u ? (c = u.apply(s, arguments), c = [c.x - M[0], c.y - M[1]]) : c = [0, 0], g({
type: "dragstart"
});
};
}
var r = N(n, "drag", "dragstart", "dragend"),
u = null,
i = e(b, oa.mouse, t, "mousemove", "mouseup"),
a = e(G, oa.touch, y, "touchmove", "touchend");
return n.origin = function (t) {
return arguments.length ? (u = t, n) : u;
}, oa.rebind(n, r, "on");
}, oa.touches = function (n, t) {
return arguments.length < 2 && (t = k().touches), t ? ca(t).map(function (t) {
var e = J(n, t);
return e.identifier = t.identifier, e;
}) : [];
};
var Da = 1e-6,
Pa = Da * Da,
ja = Math.PI,
Ua = 2 * ja,
Fa = Ua - Da,
Ha = ja / 2,
Oa = ja / 180,
Ia = 180 / ja,
Ya = Math.SQRT2,
Za = 2,
Va = 4;
oa.interpolateZoom = function (n, t) {
var e,
r,
u = n[0],
i = n[1],
a = n[2],
o = t[0],
l = t[1],
c = t[2],
s = o - u,
f = l - i,
h = s * s + f * f;
if (Pa > h) r = Math.log(c / a) / Ya, e = function e(n) {
return [u + n * s, i + n * f, a * Math.exp(Ya * n * r)];
};else {
var g = Math.sqrt(h),
p = (c * c - a * a + Va * h) / (2 * a * Za * g),
v = (c * c - a * a - Va * h) / (2 * c * Za * g),
d = Math.log(Math.sqrt(p * p + 1) - p),
m = Math.log(Math.sqrt(v * v + 1) - v);
r = (m - d) / Ya, e = function e(n) {
var t = n * r,
e = rn(d),
o = a / (Za * g) * (e * un(Ya * t + d) - en(d));
return [u + o * s, i + o * f, a * e / rn(Ya * t + d)];
};
}
return e.duration = 1e3 * r, e;
}, oa.behavior.zoom = function () {
function n(n) {
n.on(L, f).on($a + ".zoom", g).on("dblclick.zoom", p).on(R, h);
}
function e(n) {
return [(n[0] - k.x) / k.k, (n[1] - k.y) / k.k];
}
function r(n) {
return [n[0] * k.k + k.x, n[1] * k.k + k.y];
}
function u(n) {
k.k = Math.max(A[0], Math.min(A[1], n));
}
function i(n, t) {
t = r(t), k.x += n[0] - t[0], k.y += n[1] - t[1];
}
function a(t, e, r, a) {
t.__chart__ = {
x: k.x,
y: k.y,
k: k.k
}, u(Math.pow(2, a)), i(d = e, r), t = oa.select(t), C > 0 && (t = t.transition().duration(C)), t.call(n.event);
}
function o() {
b && b.domain(x.range().map(function (n) {
return (n - k.x) / k.k;
}).map(x.invert)), w && w.domain(_.range().map(function (n) {
return (n - k.y) / k.k;
}).map(_.invert));
}
function l(n) {
z++ || n({
type: "zoomstart"
});
}
function c(n) {
o(), n({
type: "zoom",
scale: k.k,
translate: [k.x, k.y]
});
}
function s(n) {
--z || (n({
type: "zoomend"
}), d = null);
}
function f() {
function n() {
o = 1, i(oa.mouse(u), h), c(a);
}
function r() {
f.on(q, null).on(T, null), g(o), s(a);
}
var u = this,
a = D.of(u, arguments),
o = 0,
f = oa.select(t(u)).on(q, n).on(T, r),
h = e(oa.mouse(u)),
g = W(u);
Ol.call(u), l(a);
}
function h() {
function n() {
var n = oa.touches(p);
return g = k.k, n.forEach(function (n) {
n.identifier in d && (d[n.identifier] = e(n));
}), n;
}
function t() {
var t = oa.event.target;
oa.select(t).on(x, r).on(b, o), _.push(t);
for (var e = oa.event.changedTouches, u = 0, i = e.length; i > u; ++u) d[e[u].identifier] = null;
var l = n(),
c = Date.now();
if (1 === l.length) {
if (500 > c - M) {
var s = l[0];
a(p, s, d[s.identifier], Math.floor(Math.log(k.k) / Math.LN2) + 1), S();
}
M = c;
} else if (l.length > 1) {
var s = l[0],
f = l[1],
h = s[0] - f[0],
g = s[1] - f[1];
m = h * h + g * g;
}
}
function r() {
var n,
t,
e,
r,
a = oa.touches(p);
Ol.call(p);
for (var o = 0, l = a.length; l > o; ++o, r = null) if (e = a[o], r = d[e.identifier]) {
if (t) break;
n = e, t = r;
}
if (r) {
var s = (s = e[0] - n[0]) * s + (s = e[1] - n[1]) * s,
f = m && Math.sqrt(s / m);
n = [(n[0] + e[0]) / 2, (n[1] + e[1]) / 2], t = [(t[0] + r[0]) / 2, (t[1] + r[1]) / 2], u(f * g);
}
M = null, i(n, t), c(v);
}
function o() {
if (oa.event.touches.length) {
for (var t = oa.event.changedTouches, e = 0, r = t.length; r > e; ++e) delete d[t[e].identifier];
for (var u in d) return void n();
}
oa.selectAll(_).on(y, null), w.on(L, f).on(R, h), N(), s(v);
}
var g,
p = this,
v = D.of(p, arguments),
d = {},
m = 0,
y = ".zoom-" + oa.event.changedTouches[0].identifier,
x = "touchmove" + y,
b = "touchend" + y,
_ = [],
w = oa.select(p),
N = W(p);
t(), l(v), w.on(L, null).on(R, t);
}
function g() {
var n = D.of(this, arguments);
y ? clearTimeout(y) : (Ol.call(this), v = e(d = m || oa.mouse(this)), l(n)), y = setTimeout(function () {
y = null, s(n);
}, 50), S(), u(Math.pow(2, .002 * Xa()) * k.k), i(d, v), c(n);
}
function p() {
var n = oa.mouse(this),
t = Math.log(k.k) / Math.LN2;
a(this, n, e(n), oa.event.shiftKey ? Math.ceil(t) - 1 : Math.floor(t) + 1);
}
var v,
d,
m,
y,
M,
x,
b,
_,
w,
k = {
x: 0,
y: 0,
k: 1
},
E = [960, 500],
A = Ba,
C = 250,
z = 0,
L = "mousedown.zoom",
q = "mousemove.zoom",
T = "mouseup.zoom",
R = "touchstart.zoom",
D = N(n, "zoomstart", "zoom", "zoomend");
return $a || ($a = "onwheel" in sa ? (Xa = function Xa() {
return -oa.event.deltaY * (oa.event.deltaMode ? 120 : 1);
}, "wheel") : "onmousewheel" in sa ? (Xa = function Xa() {
return oa.event.wheelDelta;
}, "mousewheel") : (Xa = function Xa() {
return -oa.event.detail;
}, "MozMousePixelScroll")), n.event = function (n) {
n.each(function () {
var n = D.of(this, arguments),
t = k;
Fl ? oa.select(this).transition().each("start.zoom", function () {
k = this.__chart__ || {
x: 0,
y: 0,
k: 1
}, l(n);
}).tween("zoom:zoom", function () {
var e = E[0],
r = E[1],
u = d ? d[0] : e / 2,
i = d ? d[1] : r / 2,
a = oa.interpolateZoom([(u - k.x) / k.k, (i - k.y) / k.k, e / k.k], [(u - t.x) / t.k, (i - t.y) / t.k, e / t.k]);
return function (t) {
var r = a(t),
o = e / r[2];
this.__chart__ = k = {
x: u - r[0] * o,
y: i - r[1] * o,
k: o
}, c(n);
};
}).each("interrupt.zoom", function () {
s(n);
}).each("end.zoom", function () {
s(n);
}) : (this.__chart__ = k, l(n), c(n), s(n));
});
}, n.translate = function (t) {
return arguments.length ? (k = {
x: +t[0],
y: +t[1],
k: k.k
}, o(), n) : [k.x, k.y];
}, n.scale = function (t) {
return arguments.length ? (k = {
x: k.x,
y: k.y,
k: null
}, u(+t), o(), n) : k.k;
}, n.scaleExtent = function (t) {
return arguments.length ? (A = null == t ? Ba : [+t[0], +t[1]], n) : A;
}, n.center = function (t) {
return arguments.length ? (m = t && [+t[0], +t[1]], n) : m;
}, n.size = function (t) {
return arguments.length ? (E = t && [+t[0], +t[1]], n) : E;
}, n.duration = function (t) {
return arguments.length ? (C = +t, n) : C;
}, n.x = function (t) {
return arguments.length ? (b = t, x = t.copy(), k = {
x: 0,
y: 0,
k: 1
}, n) : b;
}, n.y = function (t) {
return arguments.length ? (w = t, _ = t.copy(), k = {
x: 0,
y: 0,
k: 1
}, n) : w;
}, oa.rebind(n, D, "on");
};
var Xa,
$a,
Ba = [0, 1 / 0];
oa.color = on, on.prototype.toString = function () {
return this.rgb() + "";
}, oa.hsl = ln;
var Wa = ln.prototype = new on();
Wa.brighter = function (n) {
return n = Math.pow(.7, arguments.length ? n : 1), new ln(this.h, this.s, this.l / n);
}, Wa.darker = function (n) {
return n = Math.pow(.7, arguments.length ? n : 1), new ln(this.h, this.s, n * this.l);
}, Wa.rgb = function () {
return cn(this.h, this.s, this.l);
}, oa.hcl = sn;
var Ja = sn.prototype = new on();
Ja.brighter = function (n) {
return new sn(this.h, this.c, Math.min(100, this.l + Ga * (arguments.length ? n : 1)));
}, Ja.darker = function (n) {
return new sn(this.h, this.c, Math.max(0, this.l - Ga * (arguments.length ? n : 1)));
}, Ja.rgb = function () {
return fn(this.h, this.c, this.l).rgb();
}, oa.lab = hn;
var Ga = 18,
Ka = .95047,
Qa = 1,
no = 1.08883,
to = hn.prototype = new on();
to.brighter = function (n) {
return new hn(Math.min(100, this.l + Ga * (arguments.length ? n : 1)), this.a, this.b);
}, to.darker = function (n) {
return new hn(Math.max(0, this.l - Ga * (arguments.length ? n : 1)), this.a, this.b);
}, to.rgb = function () {
return gn(this.l, this.a, this.b);
}, oa.rgb = yn;
var eo = yn.prototype = new on();
eo.brighter = function (n) {
n = Math.pow(.7, arguments.length ? n : 1);
var t = this.r,
e = this.g,
r = this.b,
u = 30;
return t || e || r ? (t && u > t && (t = u), e && u > e && (e = u), r && u > r && (r = u), new yn(Math.min(255, t / n), Math.min(255, e / n), Math.min(255, r / n))) : new yn(u, u, u);
}, eo.darker = function (n) {
return n = Math.pow(.7, arguments.length ? n : 1), new yn(n * this.r, n * this.g, n * this.b);
}, eo.hsl = function () {
return wn(this.r, this.g, this.b);
}, eo.toString = function () {
return "#" + bn(this.r) + bn(this.g) + bn(this.b);
};
var ro = oa.map({
aliceblue: 15792383,
antiquewhite: 16444375,
aqua: 65535,
aquamarine: 8388564,
azure: 15794175,
beige: 16119260,
bisque: 16770244,
black: 0,
blanchedalmond: 16772045,
blue: 255,
blueviolet: 9055202,
brown: 10824234,
burlywood: 14596231,
cadetblue: 6266528,
chartreuse: 8388352,
chocolate: 13789470,
coral: 16744272,
cornflowerblue: 6591981,
cornsilk: 16775388,
crimson: 14423100,
cyan: 65535,
darkblue: 139,
darkcyan: 35723,
darkgoldenrod: 12092939,
darkgray: 11119017,
darkgreen: 25600,
darkgrey: 11119017,
darkkhaki: 12433259,
darkmagenta: 9109643,
darkolivegreen: 5597999,
darkorange: 16747520,
darkorchid: 10040012,
darkred: 9109504,
darksalmon: 15308410,
darkseagreen: 9419919,
darkslateblue: 4734347,
darkslategray: 3100495,
darkslategrey: 3100495,
darkturquoise: 52945,
darkviolet: 9699539,
deeppink: 16716947,
deepskyblue: 49151,
dimgray: 6908265,
dimgrey: 6908265,
dodgerblue: 2003199,
firebrick: 11674146,
floralwhite: 16775920,
forestgreen: 2263842,
fuchsia: 16711935,
gainsboro: 14474460,
ghostwhite: 16316671,
gold: 16766720,
goldenrod: 14329120,
gray: 8421504,
green: 32768,
greenyellow: 11403055,
grey: 8421504,
honeydew: 15794160,
hotpink: 16738740,
indianred: 13458524,
indigo: 4915330,
ivory: 16777200,
khaki: 15787660,
lavender: 15132410,
lavenderblush: 16773365,
lawngreen: 8190976,
lemonchiffon: 16775885,
lightblue: 11393254,
lightcoral: 15761536,
lightcyan: 14745599,
lightgoldenrodyellow: 16448210,
lightgray: 13882323,
lightgreen: 9498256,
lightgrey: 13882323,
lightpink: 16758465,
lightsalmon: 16752762,
lightseagreen: 2142890,
lightskyblue: 8900346,
lightslategray: 7833753,
lightslategrey: 7833753,
lightsteelblue: 11584734,
lightyellow: 16777184,
lime: 65280,
limegreen: 3329330,
linen: 16445670,
magenta: 16711935,
maroon: 8388608,
mediumaquamarine: 6737322,
mediumblue: 205,
mediumorchid: 12211667,
mediumpurple: 9662683,
mediumseagreen: 3978097,
mediumslateblue: 8087790,
mediumspringgreen: 64154,
mediumturquoise: 4772300,
mediumvioletred: 13047173,
midnightblue: 1644912,
mintcream: 16121850,
mistyrose: 16770273,
moccasin: 16770229,
navajowhite: 16768685,
navy: 128,
oldlace: 16643558,
olive: 8421376,
olivedrab: 7048739,
orange: 16753920,
orangered: 16729344,
orchid: 14315734,
palegoldenrod: 15657130,
palegreen: 10025880,
paleturquoise: 11529966,
palevioletred: 14381203,
papayawhip: 16773077,
peachpuff: 16767673,
peru: 13468991,
pink: 16761035,
plum: 14524637,
powderblue: 11591910,
purple: 8388736,
rebeccapurple: 6697881,
red: 16711680,
rosybrown: 12357519,
royalblue: 4286945,
saddlebrown: 9127187,
salmon: 16416882,
sandybrown: 16032864,
seagreen: 3050327,
seashell: 16774638,
sienna: 10506797,
silver: 12632256,
skyblue: 8900331,
slateblue: 6970061,
slategray: 7372944,
slategrey: 7372944,
snow: 16775930,
springgreen: 65407,
steelblue: 4620980,
tan: 13808780,
teal: 32896,
thistle: 14204888,
tomato: 16737095,
turquoise: 4251856,
violet: 15631086,
wheat: 16113331,
white: 16777215,
whitesmoke: 16119285,
yellow: 16776960,
yellowgreen: 10145074
});
ro.forEach(function (n, t) {
ro.set(n, Mn(t));
}), oa.functor = En, oa.xhr = An(y), oa.dsv = function (n, t) {
function e(n, e, i) {
arguments.length < 3 && (i = e, e = null);
var a = Cn(n, t, null == e ? r : u(e), i);
return a.row = function (n) {
return arguments.length ? a.response(null == (e = n) ? r : u(n)) : e;
}, a;
}
function r(n) {
return e.parse(n.responseText);
}
function u(n) {
return function (t) {
return e.parse(t.responseText, n);
};
}
function i(t) {
return t.map(a).join(n);
}
function a(n) {
return o.test(n) ? '"' + n.replace(/\"/g, '""') + '"' : n;
}
var o = new RegExp('["' + n + "\n]"),
l = n.charCodeAt(0);
return e.parse = function (n, t) {
var r;
return e.parseRows(n, function (n, e) {
if (r) return r(n, e - 1);
var u = new Function("d", "return {" + n.map(function (n, t) {
return JSON.stringify(n) + ": d[" + t + "]";
}).join(",") + "}");
r = t ? function (n, e) {
return t(u(n), e);
} : u;
});
}, e.parseRows = function (n, t) {
function e() {
if (s >= c) return a;
if (u) return u = !1, i;
var t = s;
if (34 === n.charCodeAt(t)) {
for (var e = t; e++ < c;) if (34 === n.charCodeAt(e)) {
if (34 !== n.charCodeAt(e + 1)) break;
++e;
}
s = e + 2;
var r = n.charCodeAt(e + 1);
return 13 === r ? (u = !0, 10 === n.charCodeAt(e + 2) && ++s) : 10 === r && (u = !0), n.slice(t + 1, e).replace(/""/g, '"');
}
for (; c > s;) {
var r = n.charCodeAt(s++),
o = 1;
if (10 === r) u = !0;else if (13 === r) u = !0, 10 === n.charCodeAt(s) && (++s, ++o);else if (r !== l) continue;
return n.slice(t, s - o);
}
return n.slice(t);
}
for (var r, u, i = {}, a = {}, o = [], c = n.length, s = 0, f = 0; (r = e()) !== a;) {
for (var h = []; r !== i && r !== a;) h.push(r), r = e();
t && null == (h = t(h, f++)) || o.push(h);
}
return o;
}, e.format = function (t) {
if (Array.isArray(t[0])) return e.formatRows(t);
var r = new m(),
u = [];
return t.forEach(function (n) {
for (var t in n) r.has(t) || u.push(r.add(t));
}), [u.map(a).join(n)].concat(t.map(function (t) {
return u.map(function (n) {
return a(t[n]);
}).join(n);
})).join("\n");
}, e.formatRows = function (n) {
return n.map(i).join("\n");
}, e;
}, oa.csv = oa.dsv(",", "text/csv"), oa.tsv = oa.dsv(" ", "text/tab-separated-values");
var uo,
io,
ao,
oo,
lo = this[x(this, "requestAnimationFrame")] || function (n) {
setTimeout(n, 17);
};
oa.timer = function () {
qn.apply(this, arguments);
}, oa.timer.flush = function () {
Rn(), Dn();
}, oa.round = function (n, t) {
return t ? Math.round(n * (t = Math.pow(10, t))) / t : Math.round(n);
};
var co = ["y", "z", "a", "f", "p", "n", "\xb5", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y"].map(jn);
oa.formatPrefix = function (n, t) {
var e = 0;
return (n = +n) && (0 > n && (n *= -1), t && (n = oa.round(n, Pn(n, t))), e = 1 + Math.floor(1e-12 + Math.log(n) / Math.LN10), e = Math.max(-24, Math.min(24, 3 * Math.floor((e - 1) / 3)))), co[8 + e / 3];
};
var so = /(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,
fo = oa.map({
b: function b(n) {
return n.toString(2);
},
c: function c(n) {
return String.fromCharCode(n);
},
o: function o(n) {
return n.toString(8);
},
x: function x(n) {
return n.toString(16);
},
X: function X(n) {
return n.toString(16).toUpperCase();
},
g: function g(n, t) {
return n.toPrecision(t);
},
e: function e(n, t) {
return n.toExponential(t);
},
f: function f(n, t) {
return n.toFixed(t);
},
r: function r(n, t) {
return (n = oa.round(n, Pn(n, t))).toFixed(Math.max(0, Math.min(20, Pn(n * (1 + 1e-15), t))));
}
}),
ho = oa.time = {},
go = Date;
Hn.prototype = {
getDate: function getDate() {
return this._.getUTCDate();
},
getDay: function getDay() {
return this._.getUTCDay();
},
getFullYear: function getFullYear() {
return this._.getUTCFullYear();
},
getHours: function getHours() {
return this._.getUTCHours();
},
getMilliseconds: function getMilliseconds() {
return this._.getUTCMilliseconds();
},
getMinutes: function getMinutes() {
return this._.getUTCMinutes();
},
getMonth: function getMonth() {
return this._.getUTCMonth();
},
getSeconds: function getSeconds() {
return this._.getUTCSeconds();
},
getTime: function getTime() {
return this._.getTime();
},
getTimezoneOffset: function getTimezoneOffset() {
return 0;
},
valueOf: function valueOf() {
return this._.valueOf();
},
setDate: function setDate() {
po.setUTCDate.apply(this._, arguments);
},
setDay: function setDay() {
po.setUTCDay.apply(this._, arguments);
},
setFullYear: function setFullYear() {
po.setUTCFullYear.apply(this._, arguments);
},
setHours: function setHours() {
po.setUTCHours.apply(this._, arguments);
},
setMilliseconds: function setMilliseconds() {
po.setUTCMilliseconds.apply(this._, arguments);
},
setMinutes: function setMinutes() {
po.setUTCMinutes.apply(this._, arguments);
},
setMonth: function setMonth() {
po.setUTCMonth.apply(this._, arguments);
},
setSeconds: function setSeconds() {
po.setUTCSeconds.apply(this._, arguments);
},
setTime: function setTime() {
po.setTime.apply(this._, arguments);
}
};
var po = Date.prototype;
ho.year = On(function (n) {
return n = ho.day(n), n.setMonth(0, 1), n;
}, function (n, t) {
n.setFullYear(n.getFullYear() + t);
}, function (n) {
return n.getFullYear();
}), ho.years = ho.year.range, ho.years.utc = ho.year.utc.range, ho.day = On(function (n) {
var t = new go(2e3, 0);
return t.setFullYear(n.getFullYear(), n.getMonth(), n.getDate()), t;
}, function (n, t) {
n.setDate(n.getDate() + t);
}, function (n) {
return n.getDate() - 1;
}), ho.days = ho.day.range, ho.days.utc = ho.day.utc.range, ho.dayOfYear = function (n) {
var t = ho.year(n);
return Math.floor((n - t - 6e4 * (n.getTimezoneOffset() - t.getTimezoneOffset())) / 864e5);
}, ["sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday"].forEach(function (n, t) {
t = 7 - t;
var e = ho[n] = On(function (n) {
return (n = ho.day(n)).setDate(n.getDate() - (n.getDay() + t) % 7), n;
}, function (n, t) {
n.setDate(n.getDate() + 7 * Math.floor(t));
}, function (n) {
var e = ho.year(n).getDay();
return Math.floor((ho.dayOfYear(n) + (e + t) % 7) / 7) - (e !== t);
});
ho[n + "s"] = e.range, ho[n + "s"].utc = e.utc.range, ho[n + "OfYear"] = function (n) {
var e = ho.year(n).getDay();
return Math.floor((ho.dayOfYear(n) + (e + t) % 7) / 7);
};
}), ho.week = ho.sunday, ho.weeks = ho.sunday.range, ho.weeks.utc = ho.sunday.utc.range, ho.weekOfYear = ho.sundayOfYear;
var vo = {
"-": "",
_: " ",
0: "0"
},
mo = /^\s*\d+/,
yo = /^%/;
oa.locale = function (n) {
return {
numberFormat: Un(n),
timeFormat: Yn(n)
};
};
var Mo = oa.locale({
decimal: ".",
thousands: ",",
grouping: [3],
currency: ["$", ""],
dateTime: "%a %b %e %X %Y",
date: "%m/%d/%Y",
time: "%H:%M:%S",
periods: ["AM", "PM"],
days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
shortDays: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
shortMonths: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
});
oa.format = Mo.numberFormat, oa.geo = {}, st.prototype = {
s: 0,
t: 0,
add: function add(n) {
ft(n, this.t, xo), ft(xo.s, this.s, this), this.s ? this.t += xo.t : this.s = xo.t;
},
reset: function reset() {
this.s = this.t = 0;
},
valueOf: function valueOf() {
return this.s;
}
};
var xo = new st();
oa.geo.stream = function (n, t) {
n && bo.hasOwnProperty(n.type) ? bo[n.type](n, t) : ht(n, t);
};
var bo = {
Feature: function Feature(n, t) {
ht(n.geometry, t);
},
FeatureCollection: function FeatureCollection(n, t) {
for (var e = n.features, r = -1, u = e.length; ++r < u;) ht(e[r].geometry, t);
}
},
_o = {
Sphere: function Sphere(n, t) {
t.sphere();
},
Point: function Point(n, t) {
n = n.coordinates, t.point(n[0], n[1], n[2]);
},
MultiPoint: function MultiPoint(n, t) {
for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) n = e[r], t.point(n[0], n[1], n[2]);
},
LineString: function LineString(n, t) {
gt(n.coordinates, t, 0);
},
MultiLineString: function MultiLineString(n, t) {
for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) gt(e[r], t, 0);
},
Polygon: function Polygon(n, t) {
pt(n.coordinates, t);
},
MultiPolygon: function MultiPolygon(n, t) {
for (var e = n.coordinates, r = -1, u = e.length; ++r < u;) pt(e[r], t);
},
GeometryCollection: function GeometryCollection(n, t) {
for (var e = n.geometries, r = -1, u = e.length; ++r < u;) ht(e[r], t);
}
};
oa.geo.area = function (n) {
return wo = 0, oa.geo.stream(n, ko), wo;
};
var wo,
So = new st(),
ko = {
sphere: function sphere() {
wo += 4 * ja;
},
point: b,
lineStart: b,
lineEnd: b,
polygonStart: function polygonStart() {
So.reset(), ko.lineStart = vt;
},
polygonEnd: function polygonEnd() {
var n = 2 * So;
wo += 0 > n ? 4 * ja + n : n, ko.lineStart = ko.lineEnd = ko.point = b;
}
};
oa.geo.bounds = function () {
function n(n, t) {
M.push(x = [s = n, h = n]), f > t && (f = t), t > g && (g = t);
}
function t(t, e) {
var r = dt([t * Oa, e * Oa]);
if (m) {
var u = yt(m, r),
i = [u[1], -u[0], 0],
a = yt(i, u);
bt(a), a = _t(a);
var l = t - p,
c = l > 0 ? 1 : -1,
v = a[0] * Ia * c,
d = Ma(l) > 180;
if (d ^ (v > c * p && c * t > v)) {
var y = a[1] * Ia;
y > g && (g = y);
} else if (v = (v + 360) % 360 - 180, d ^ (v > c * p && c * t > v)) {
var y = -a[1] * Ia;
f > y && (f = y);
} else f > e && (f = e), e > g && (g = e);
d ? p > t ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t) : h >= s ? (s > t && (s = t), t > h && (h = t)) : t > p ? o(s, t) > o(s, h) && (h = t) : o(t, h) > o(s, h) && (s = t);
} else n(t, e);
m = r, p = t;
}
function e() {
b.point = t;
}
function r() {
x[0] = s, x[1] = h, b.point = n, m = null;
}
function u(n, e) {
if (m) {
var r = n - p;
y += Ma(r) > 180 ? r + (r > 0 ? 360 : -360) : r;
} else v = n, d = e;
ko.point(n, e), t(n, e);
}
function i() {
ko.lineStart();
}
function a() {
u(v, d), ko.lineEnd(), Ma(y) > Da && (s = -(h = 180)), x[0] = s, x[1] = h, m = null;
}
function o(n, t) {
return (t -= n) < 0 ? t + 360 : t;
}
function l(n, t) {
return n[0] - t[0];
}
function c(n, t) {
return t[0] <= t[1] ? t[0] <= n && n <= t[1] : n < t[0] || t[1] < n;
}
var s,
f,
h,
g,
p,
v,
d,
m,
y,
M,
x,
b = {
point: n,
lineStart: e,
lineEnd: r,
polygonStart: function polygonStart() {
b.point = u, b.lineStart = i, b.lineEnd = a, y = 0, ko.polygonStart();
},
polygonEnd: function polygonEnd() {
ko.polygonEnd(), b.point = n, b.lineStart = e, b.lineEnd = r, 0 > So ? (s = -(h = 180), f = -(g = 90)) : y > Da ? g = 90 : -Da > y && (f = -90), x[0] = s, x[1] = h;
}
};
return function (n) {
g = h = -(s = f = 1 / 0), M = [], oa.geo.stream(n, b);
var t = M.length;
if (t) {
M.sort(l);
for (var e, r = 1, u = M[0], i = [u]; t > r; ++r) e = M[r], c(e[0], u) || c(e[1], u) ? (o(u[0], e[1]) > o(u[0], u[1]) && (u[1] = e[1]), o(e[0], u[1]) > o(u[0], u[1]) && (u[0] = e[0])) : i.push(u = e);
for (var a, e, p = -(1 / 0), t = i.length - 1, r = 0, u = i[t]; t >= r; u = e, ++r) e = i[r], (a = o(u[1], e[0])) > p && (p = a, s = e[0], h = u[1]);
}
return M = x = null, s === 1 / 0 || f === 1 / 0 ? [[NaN, NaN], [NaN, NaN]] : [[s, f], [h, g]];
};
}(), oa.geo.centroid = function (n) {
No = Eo = Ao = Co = zo = Lo = qo = To = Ro = Do = Po = 0, oa.geo.stream(n, jo);
var t = Ro,
e = Do,
r = Po,
u = t * t + e * e + r * r;
return Pa > u && (t = Lo, e = qo, r = To, Da > Eo && (t = Ao, e = Co, r = zo), u = t * t + e * e + r * r, Pa > u) ? [NaN, NaN] : [Math.atan2(e, t) * Ia, tn(r / Math.sqrt(u)) * Ia];
};
var No,
Eo,
Ao,
Co,
zo,
Lo,
qo,
To,
Ro,
Do,
Po,
jo = {
sphere: b,
point: St,
lineStart: Nt,
lineEnd: Et,
polygonStart: function polygonStart() {
jo.lineStart = At;
},
polygonEnd: function polygonEnd() {
jo.lineStart = Nt;
}
},
Uo = Rt(zt, Ut, Ht, [-ja, -ja / 2]),
Fo = 1e9;
oa.geo.clipExtent = function () {
var n,
t,
e,
r,
u,
i,
a = {
stream: function stream(n) {
return u && (u.valid = !1), u = i(n), u.valid = !0, u;
},
extent: function extent(o) {
return arguments.length ? (i = Zt(n = +o[0][0], t = +o[0][1], e = +o[1][0], r = +o[1][1]), u && (u.valid = !1, u = null), a) : [[n, t], [e, r]];
}
};
return a.extent([[0, 0], [960, 500]]);
}, (oa.geo.conicEqualArea = function () {
return Vt(Xt);
}).raw = Xt, oa.geo.albers = function () {
return oa.geo.conicEqualArea().rotate([96, 0]).center([-.6, 38.7]).parallels([29.5, 45.5]).scale(1070);
}, oa.geo.albersUsa = function () {
function n(n) {
var i = n[0],
a = n[1];
return t = null, e(i, a), t || (r(i, a), t) || u(i, a), t;
}
var t,
e,
r,
u,
i = oa.geo.albers(),
a = oa.geo.conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]),
o = oa.geo.conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]),
l = {
point: function point(n, e) {
t = [n, e];
}
};
return n.invert = function (n) {
var t = i.scale(),
e = i.translate(),
r = (n[0] - e[0]) / t,
u = (n[1] - e[1]) / t;
return (u >= .12 && .234 > u && r >= -.425 && -.214 > r ? a : u >= .166 && .234 > u && r >= -.214 && -.115 > r ? o : i).invert(n);
}, n.stream = function (n) {
var t = i.stream(n),
e = a.stream(n),
r = o.stream(n);
return {
point: function point(n, u) {
t.point(n, u), e.point(n, u), r.point(n, u);
},
sphere: function sphere() {
t.sphere(), e.sphere(), r.sphere();
},
lineStart: function lineStart() {
t.lineStart(), e.lineStart(), r.lineStart();
},
lineEnd: function lineEnd() {
t.lineEnd(), e.lineEnd(), r.lineEnd();
},
polygonStart: function polygonStart() {
t.polygonStart(), e.polygonStart(), r.polygonStart();
},
polygonEnd: function polygonEnd() {
t.polygonEnd(), e.polygonEnd(), r.polygonEnd();
}
};
}, n.precision = function (t) {
return arguments.length ? (i.precision(t), a.precision(t), o.precision(t), n) : i.precision();
}, n.scale = function (t) {
return arguments.length ? (i.scale(t), a.scale(.35 * t), o.scale(t), n.translate(i.translate())) : i.scale();
}, n.translate = function (t) {
if (!arguments.length) return i.translate();
var c = i.scale(),
s = +t[0],
f = +t[1];
return e = i.translate(t).clipExtent([[s - .455 * c, f - .238 * c], [s + .455 * c, f + .238 * c]]).stream(l).point, r = a.translate([s - .307 * c, f + .201 * c]).clipExtent([[s - .425 * c + Da, f + .12 * c + Da], [s - .214 * c - Da, f + .234 * c - Da]]).stream(l).point, u = o.translate([s - .205 * c, f + .212 * c]).clipExtent([[s - .214 * c + Da, f + .166 * c + Da], [s - .115 * c - Da, f + .234 * c - Da]]).stream(l).point, n;
}, n.scale(1070);
};
var Ho,
Oo,
Io,
Yo,
Zo,
Vo,
Xo = {
point: b,
lineStart: b,
lineEnd: b,
polygonStart: function polygonStart() {
Oo = 0, Xo.lineStart = $t;
},
polygonEnd: function polygonEnd() {
Xo.lineStart = Xo.lineEnd = Xo.point = b, Ho += Ma(Oo / 2);
}
},
$o = {
point: Bt,
lineStart: b,
lineEnd: b,
polygonStart: b,
polygonEnd: b
},
Bo = {
point: Gt,
lineStart: Kt,
lineEnd: Qt,
polygonStart: function polygonStart() {
Bo.lineStart = ne;
},
polygonEnd: function polygonEnd() {
Bo.point = Gt, Bo.lineStart = Kt, Bo.lineEnd = Qt;
}
};
oa.geo.path = function () {
function n(n) {
return n && ("function" == typeof o && i.pointRadius(+o.apply(this, arguments)), a && a.valid || (a = u(i)), oa.geo.stream(n, a)), i.result();
}
function t() {
return a = null, n;
}
var e,
r,
u,
i,
a,
o = 4.5;
return n.area = function (n) {
return Ho = 0, oa.geo.stream(n, u(Xo)), Ho;
}, n.centroid = function (n) {
return Ao = Co = zo = Lo = qo = To = Ro = Do = Po = 0, oa.geo.stream(n, u(Bo)), Po ? [Ro / Po, Do / Po] : To ? [Lo / To, qo / To] : zo ? [Ao / zo, Co / zo] : [NaN, NaN];
}, n.bounds = function (n) {
return Zo = Vo = -(Io = Yo = 1 / 0), oa.geo.stream(n, u($o)), [[Io, Yo], [Zo, Vo]];
}, n.projection = function (n) {
return arguments.length ? (u = (e = n) ? n.stream || re(n) : y, t()) : e;
}, n.context = function (n) {
return arguments.length ? (i = null == (r = n) ? new Wt() : new te(n), "function" != typeof o && i.pointRadius(o), t()) : r;
}, n.pointRadius = function (t) {
return arguments.length ? (o = "function" == typeof t ? t : (i.pointRadius(+t), +t), n) : o;
}, n.projection(oa.geo.albersUsa()).context(null);
}, oa.geo.transform = function (n) {
return {
stream: function stream(t) {
var e = new ue(t);
for (var r in n) e[r] = n[r];
return e;
}
};
}, ue.prototype = {
point: function point(n, t) {
this.stream.point(n, t);
},
sphere: function sphere() {
this.stream.sphere();
},
lineStart: function lineStart() {
this.stream.lineStart();
},
lineEnd: function lineEnd() {
this.stream.lineEnd();
},
polygonStart: function polygonStart() {
this.stream.polygonStart();
},
polygonEnd: function polygonEnd() {
this.stream.polygonEnd();
}
}, oa.geo.projection = ae, oa.geo.projectionMutator = oe, (oa.geo.equirectangular = function () {
return ae(ce);
}).raw = ce.invert = ce, oa.geo.rotation = function (n) {
function t(t) {
return t = n(t[0] * Oa, t[1] * Oa), t[0] *= Ia, t[1] *= Ia, t;
}
return n = fe(n[0] % 360 * Oa, n[1] * Oa, n.length > 2 ? n[2] * Oa : 0), t.invert = function (t) {
return t = n.invert(t[0] * Oa, t[1] * Oa), t[0] *= Ia, t[1] *= Ia, t;
}, t;
}, se.invert = ce, oa.geo.circle = function () {
function n() {
var n = "function" == typeof r ? r.apply(this, arguments) : r,
t = fe(-n[0] * Oa, -n[1] * Oa, 0).invert,
u = [];
return e(null, null, 1, {
point: function point(n, e) {
u.push(n = t(n, e)), n[0] *= Ia, n[1] *= Ia;
}
}), {
type: "Polygon",
coordinates: [u]
};
}
var t,
e,
r = [0, 0],
u = 6;
return n.origin = function (t) {
return arguments.length ? (r = t, n) : r;
}, n.angle = function (r) {
return arguments.length ? (e = ve((t = +r) * Oa, u * Oa), n) : t;
}, n.precision = function (r) {
return arguments.length ? (e = ve(t * Oa, (u = +r) * Oa), n) : u;
}, n.angle(90);
}, oa.geo.distance = function (n, t) {
var e,
r = (t[0] - n[0]) * Oa,
u = n[1] * Oa,
i = t[1] * Oa,
a = Math.sin(r),
o = Math.cos(r),
l = Math.sin(u),
c = Math.cos(u),
s = Math.sin(i),
f = Math.cos(i);
return Math.atan2(Math.sqrt((e = f * a) * e + (e = c * s - l * f * o) * e), l * s + c * f * o);
}, oa.geo.graticule = function () {
function n() {
return {
type: "MultiLineString",
coordinates: t()
};
}
function t() {
return oa.range(Math.ceil(i / d) * d, u, d).map(h).concat(oa.range(Math.ceil(c / m) * m, l, m).map(g)).concat(oa.range(Math.ceil(r / p) * p, e, p).filter(function (n) {
return Ma(n % d) > Da;
}).map(s)).concat(oa.range(Math.ceil(o / v) * v, a, v).filter(function (n) {
return Ma(n % m) > Da;
}).map(f));
}
var e,
r,
u,
i,
a,
o,
l,
c,
s,
f,
h,
g,
p = 10,
v = p,
d = 90,
m = 360,
y = 2.5;
return n.lines = function () {
return t().map(function (n) {
return {
type: "LineString",
coordinates: n
};
});
}, n.outline = function () {
return {
type: "Polygon",
coordinates: [h(i).concat(g(l).slice(1), h(u).reverse().slice(1), g(c).reverse().slice(1))]
};
}, n.extent = function (t) {
return arguments.length ? n.majorExtent(t).minorExtent(t) : n.minorExtent();
}, n.majorExtent = function (t) {
return arguments.length ? (i = +t[0][0], u = +t[1][0], c = +t[0][1], l = +t[1][1], i > u && (t = i, i = u, u = t), c > l && (t = c, c = l, l = t), n.precision(y)) : [[i, c], [u, l]];
}, n.minorExtent = function (t) {
return arguments.length ? (r = +t[0][0], e = +t[1][0], o = +t[0][1], a = +t[1][1], r > e && (t = r, r = e, e = t), o > a && (t = o, o = a, a = t), n.precision(y)) : [[r, o], [e, a]];
}, n.step = function (t) {
return arguments.length ? n.majorStep(t).minorStep(t) : n.minorStep();
}, n.majorStep = function (t) {
return arguments.length ? (d = +t[0], m = +t[1], n) : [d, m];
}, n.minorStep = function (t) {
return arguments.length ? (p = +t[0], v = +t[1], n) : [p, v];
}, n.precision = function (t) {
return arguments.length ? (y = +t, s = me(o, a, 90), f = ye(r, e, y), h = me(c, l, 90), g = ye(i, u, y), n) : y;
}, n.majorExtent([[-180, -90 + Da], [180, 90 - Da]]).minorExtent([[-180, -80 - Da], [180, 80 + Da]]);
}, oa.geo.greatArc = function () {
function n() {
return {
type: "LineString",
coordinates: [t || r.apply(this, arguments), e || u.apply(this, arguments)]
};
}
var t,
e,
r = Me,
u = xe;
return n.distance = function () {
return oa.geo.distance(t || r.apply(this, arguments), e || u.apply(this, arguments));
}, n.source = function (e) {
return arguments.length ? (r = e, t = "function" == typeof e ? null : e, n) : r;
}, n.target = function (t) {
return arguments.length ? (u = t, e = "function" == typeof t ? null : t, n) : u;
}, n.precision = function () {
return arguments.length ? n : 0;
}, n;
}, oa.geo.interpolate = function (n, t) {
return be(n[0] * Oa, n[1] * Oa, t[0] * Oa, t[1] * Oa);
}, oa.geo.length = function (n) {
return Wo = 0, oa.geo.stream(n, Jo), Wo;
};
var Wo,
Jo = {
sphere: b,
point: b,
lineStart: _e,
lineEnd: b,
polygonStart: b,
polygonEnd: b
},
Go = we(function (n) {
return Math.sqrt(2 / (1 + n));
}, function (n) {
return 2 * Math.asin(n / 2);
});
(oa.geo.azimuthalEqualArea = function () {
return ae(Go);
}).raw = Go;
var Ko = we(function (n) {
var t = Math.acos(n);
return t && t / Math.sin(t);
}, y);
(oa.geo.azimuthalEquidistant = function () {
return ae(Ko);
}).raw = Ko, (oa.geo.conicConformal = function () {
return Vt(Se);
}).raw = Se, (oa.geo.conicEquidistant = function () {
return Vt(ke);
}).raw = ke;
var Qo = we(function (n) {
return 1 / n;
}, Math.atan);
(oa.geo.gnomonic = function () {
return ae(Qo);
}).raw = Qo, Ne.invert = function (n, t) {
return [n, 2 * Math.atan(Math.exp(t)) - Ha];
}, (oa.geo.mercator = function () {
return Ee(Ne);
}).raw = Ne;
var nl = we(function () {
return 1;
}, Math.asin);
(oa.geo.orthographic = function () {
return ae(nl);
}).raw = nl;
var tl = we(function (n) {
return 1 / (1 + n);
}, function (n) {
return 2 * Math.atan(n);
});
(oa.geo.stereographic = function () {
return ae(tl);
}).raw = tl, Ae.invert = function (n, t) {
return [-t, 2 * Math.atan(Math.exp(n)) - Ha];
}, (oa.geo.transverseMercator = function () {
var n = Ee(Ae),
t = n.center,
e = n.rotate;
return n.center = function (n) {
return n ? t([-n[1], n[0]]) : (n = t(), [n[1], -n[0]]);
}, n.rotate = function (n) {
return n ? e([n[0], n[1], n.length > 2 ? n[2] + 90 : 90]) : (n = e(), [n[0], n[1], n[2] - 90]);
}, e([0, 0, 90]);
}).raw = Ae, oa.geom = {}, oa.geom.hull = function (n) {
function t(n) {
if (n.length < 3) return [];
var t,
u = En(e),
i = En(r),
a = n.length,
o = [],
l = [];
for (t = 0; a > t; t++) o.push([+u.call(this, n[t], t), +i.call(this, n[t], t), t]);
for (o.sort(qe), t = 0; a > t; t++) l.push([o[t][0], -o[t][1]]);
var c = Le(o),
s = Le(l),
f = s[0] === c[0],
h = s[s.length - 1] === c[c.length - 1],
g = [];
for (t = c.length - 1; t >= 0; --t) g.push(n[o[c[t]][2]]);
for (t = +f; t < s.length - h; ++t) g.push(n[o[s[t]][2]]);
return g;
}
var e = Ce,
r = ze;
return arguments.length ? t(n) : (t.x = function (n) {
return arguments.length ? (e = n, t) : e;
}, t.y = function (n) {
return arguments.length ? (r = n, t) : r;
}, t);
}, oa.geom.polygon = function (n) {
return Sa(n, el), n;
};
var el = oa.geom.polygon.prototype = [];
el.area = function () {
for (var n, t = -1, e = this.length, r = this[e - 1], u = 0; ++t < e;) n = r, r = this[t], u += n[1] * r[0] - n[0] * r[1];
return .5 * u;
}, el.centroid = function (n) {
var t,
e,
r = -1,
u = this.length,
i = 0,
a = 0,
o = this[u - 1];
for (arguments.length || (n = -1 / (6 * this.area())); ++r < u;) t = o, o = this[r], e = t[0] * o[1] - o[0] * t[1], i += (t[0] + o[0]) * e, a += (t[1] + o[1]) * e;
return [i * n, a * n];
}, el.clip = function (n) {
for (var t, e, r, u, i, a, o = De(n), l = -1, c = this.length - De(this), s = this[c - 1]; ++l < c;) {
for (t = n.slice(), n.length = 0, u = this[l], i = t[(r = t.length - o) - 1], e = -1; ++e < r;) a = t[e], Te(a, s, u) ? (Te(i, s, u) || n.push(Re(i, a, s, u)), n.push(a)) : Te(i, s, u) && n.push(Re(i, a, s, u)), i = a;
o && n.push(n[0]), s = u;
}
return n;
};
var rl,
ul,
il,
al,
ol,
ll = [],
cl = [];
Ye.prototype.prepare = function () {
for (var n, t = this.edges, e = t.length; e--;) n = t[e].edge, n.b && n.a || t.splice(e, 1);
return t.sort(Ve), t.length;
}, tr.prototype = {
start: function start() {
return this.edge.l === this.site ? this.edge.a : this.edge.b;
},
end: function end() {
return this.edge.l === this.site ? this.edge.b : this.edge.a;
}
}, er.prototype = {
insert: function insert(n, t) {
var e, r, u;
if (n) {
if (t.P = n, t.N = n.N, n.N && (n.N.P = t), n.N = t, n.R) {
for (n = n.R; n.L;) n = n.L;
n.L = t;
} else n.R = t;
e = n;
} else this._ ? (n = ar(this._), t.P = null, t.N = n, n.P = n.L = t, e = n) : (t.P = t.N = null, this._ = t, e = null);
for (t.L = t.R = null, t.U = e, t.C = !0, n = t; e && e.C;) r = e.U, e === r.L ? (u = r.R, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.R && (ur(this, e), n = e, e = n.U), e.C = !1, r.C = !0, ir(this, r))) : (u = r.L, u && u.C ? (e.C = u.C = !1, r.C = !0, n = r) : (n === e.L && (ir(this, e), n = e, e = n.U), e.C = !1, r.C = !0, ur(this, r))), e = n.U;
this._.C = !1;
},
remove: function remove(n) {
n.N && (n.N.P = n.P), n.P && (n.P.N = n.N), n.N = n.P = null;
var t,
e,
r,
u = n.U,
i = n.L,
a = n.R;
if (e = i ? a ? ar(a) : i : a, u ? u.L === n ? u.L = e : u.R = e : this._ = e, i && a ? (r = e.C, e.C = n.C, e.L = i, i.U = e, e !== a ? (u = e.U, e.U = n.U, n = e.R, u.L = n, e.R = a, a.U = e) : (e.U = u, u = e, n = e.R)) : (r = n.C, n = e), n && (n.U = u), !r) {
if (n && n.C) return void (n.C = !1);
do {
if (n === this._) break;
if (n === u.L) {
if (t = u.R, t.C && (t.C = !1, u.C = !0, ur(this, u), t = u.R), t.L && t.L.C || t.R && t.R.C) {
t.R && t.R.C || (t.L.C = !1, t.C = !0, ir(this, t), t = u.R), t.C = u.C, u.C = t.R.C = !1, ur(this, u), n = this._;
break;
}
} else if (t = u.L, t.C && (t.C = !1, u.C = !0, ir(this, u), t = u.L), t.L && t.L.C || t.R && t.R.C) {
t.L && t.L.C || (t.R.C = !1, t.C = !0, ur(this, t), t = u.L), t.C = u.C, u.C = t.L.C = !1, ir(this, u), n = this._;
break;
}
t.C = !0, n = u, u = u.U;
} while (!n.C);
n && (n.C = !1);
}
}
}, oa.geom.voronoi = function (n) {
function t(n) {
var t = new Array(n.length),
r = o[0][0],
u = o[0][1],
i = o[1][0],
a = o[1][1];
return or(e(n), o).cells.forEach(function (e, o) {
var l = e.edges,
c = e.site,
s = t[o] = l.length ? l.map(function (n) {
var t = n.start();
return [t.x, t.y];
}) : c.x >= r && c.x <= i && c.y >= u && c.y <= a ? [[r, a], [i, a], [i, u], [r, u]] : [];
s.point = n[o];
}), t;
}
function e(n) {
return n.map(function (n, t) {
return {
x: Math.round(i(n, t) / Da) * Da,
y: Math.round(a(n, t) / Da) * Da,
i: t
};
});
}
var r = Ce,
u = ze,
i = r,
a = u,
o = sl;
return n ? t(n) : (t.links = function (n) {
return or(e(n)).edges.filter(function (n) {
return n.l && n.r;
}).map(function (t) {
return {
source: n[t.l.i],
target: n[t.r.i]
};
});
}, t.triangles = function (n) {
var t = [];
return or(e(n)).cells.forEach(function (e, r) {
for (var u, i, a = e.site, o = e.edges.sort(Ve), l = -1, c = o.length, s = o[c - 1].edge, f = s.l === a ? s.r : s.l; ++l < c;) u = s, i = f, s = o[l].edge, f = s.l === a ? s.r : s.l, r < i.i && r < f.i && cr(a, i, f) < 0 && t.push([n[r], n[i.i], n[f.i]]);
}), t;
}, t.x = function (n) {
return arguments.length ? (i = En(r = n), t) : r;
}, t.y = function (n) {
return arguments.length ? (a = En(u = n), t) : u;
}, t.clipExtent = function (n) {
return arguments.length ? (o = null == n ? sl : n, t) : o === sl ? null : o;
}, t.size = function (n) {
return arguments.length ? t.clipExtent(n && [[0, 0], n]) : o === sl ? null : o && o[1];
}, t);
};
var sl = [[-1e6, -1e6], [1e6, 1e6]];
oa.geom.delaunay = function (n) {
return oa.geom.voronoi().triangles(n);
}, oa.geom.quadtree = function (n, t, e, r, u) {
function i(n) {
function i(n, t, e, r, u, i, a, o) {
if (!isNaN(e) && !isNaN(r)) if (n.leaf) {
var l = n.x,
s = n.y;
if (null != l) {
if (Ma(l - e) + Ma(s - r) < .01) c(n, t, e, r, u, i, a, o);else {
var f = n.point;
n.x = n.y = n.point = null, c(n, f, l, s, u, i, a, o), c(n, t, e, r, u, i, a, o);
}
} else n.x = e, n.y = r, n.point = t;
} else c(n, t, e, r, u, i, a, o);
}
function c(n, t, e, r, u, a, o, l) {
var c = .5 * (u + o),
s = .5 * (a + l),
f = e >= c,
h = r >= s,
g = h << 1 | f;
n.leaf = !1, n = n.nodes[g] || (n.nodes[g] = hr()), f ? u = c : o = c, h ? a = s : l = s, i(n, t, e, r, u, a, o, l);
}
var s,
f,
h,
g,
p,
v,
d,
m,
y,
M = En(o),
x = En(l);
if (null != t) v = t, d = e, m = r, y = u;else if (m = y = -(v = d = 1 / 0), f = [], h = [], p = n.length, a) for (g = 0; p > g; ++g) s = n[g], s.x < v && (v = s.x), s.y < d && (d = s.y), s.x > m && (m = s.x), s.y > y && (y = s.y), f.push(s.x), h.push(s.y);else for (g = 0; p > g; ++g) {
var b = +M(s = n[g], g),
_ = +x(s, g);
v > b && (v = b), d > _ && (d = _), b > m && (m = b), _ > y && (y = _), f.push(b), h.push(_);
}
var w = m - v,
S = y - d;
w > S ? y = d + w : m = v + S;
var k = hr();
if (k.add = function (n) {
i(k, n, +M(n, ++g), +x(n, g), v, d, m, y);
}, k.visit = function (n) {
gr(n, k, v, d, m, y);
}, k.find = function (n) {
return pr(k, n[0], n[1], v, d, m, y);
}, g = -1, null == t) {
for (; ++g < p;) i(k, n[g], f[g], h[g], v, d, m, y);
--g;
} else n.forEach(k.add);
return f = h = n = s = null, k;
}
var a,
o = Ce,
l = ze;
return (a = arguments.length) ? (o = sr, l = fr, 3 === a && (u = e, r = t, e = t = 0), i(n)) : (i.x = function (n) {
return arguments.length ? (o = n, i) : o;
}, i.y = function (n) {
return arguments.length ? (l = n, i) : l;
}, i.extent = function (n) {
return arguments.length ? (null == n ? t = e = r = u = null : (t = +n[0][0], e = +n[0][1], r = +n[1][0], u = +n[1][1]), i) : null == t ? null : [[t, e], [r, u]];
}, i.size = function (n) {
return arguments.length ? (null == n ? t = e = r = u = null : (t = e = 0, r = +n[0], u = +n[1]), i) : null == t ? null : [r - t, u - e];
}, i);
}, oa.interpolateRgb = vr, oa.interpolateObject = dr, oa.interpolateNumber = mr, oa.interpolateString = yr;
var fl = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,
hl = new RegExp(fl.source, "g");
oa.interpolate = Mr, oa.interpolators = [function (n, t) {
var e = _typeof(t);
return ("string" === e ? ro.has(t.toLowerCase()) || /^(#|rgb\(|hsl\()/i.test(t) ? vr : yr : t instanceof on ? vr : Array.isArray(t) ? xr : "object" === e && isNaN(t) ? dr : mr)(n, t);
}], oa.interpolateArray = xr;
var gl = function gl() {
return y;
},
pl = oa.map({
linear: gl,
poly: Er,
quad: function quad() {
return Sr;
},
cubic: function cubic() {
return kr;
},
sin: function sin() {
return Ar;
},
exp: function exp() {
return Cr;
},
circle: function circle() {
return zr;
},
elastic: Lr,
back: qr,
bounce: function bounce() {
return Tr;
}
}),
vl = oa.map({
"in": y,
out: _r,
"in-out": wr,
"out-in": function outIn(n) {
return wr(_r(n));
}
});
oa.ease = function (n) {
var t = n.indexOf("-"),
e = t >= 0 ? n.slice(0, t) : n,
r = t >= 0 ? n.slice(t + 1) : "in";
return e = pl.get(e) || gl, r = vl.get(r) || y, br(r(e.apply(null, la.call(arguments, 1))));
}, oa.interpolateHcl = Rr, oa.interpolateHsl = Dr, oa.interpolateLab = Pr, oa.interpolateRound = jr, oa.transform = function (n) {
var t = sa.createElementNS(oa.ns.prefix.svg, "g");
return (oa.transform = function (n) {
if (null != n) {
t.setAttribute("transform", n);
var e = t.transform.baseVal.consolidate();
}
return new Ur(e ? e.matrix : dl);
})(n);
}, Ur.prototype.toString = function () {
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
};
var dl = {
a: 1,
b: 0,
c: 0,
d: 1,
e: 0,
f: 0
};
oa.interpolateTransform = $r, oa.layout = {}, oa.layout.bundle = function () {
return function (n) {
for (var t = [], e = -1, r = n.length; ++e < r;) t.push(Jr(n[e]));
return t;
};
}, oa.layout.chord = function () {
function n() {
var n,
c,
f,
h,
g,
p = {},
v = [],
d = oa.range(i),
m = [];
for (e = [], r = [], n = 0, h = -1; ++h < i;) {
for (c = 0, g = -1; ++g < i;) c += u[h][g];
v.push(c), m.push(oa.range(i)), n += c;
}
for (a && d.sort(function (n, t) {
return a(v[n], v[t]);
}), o && m.forEach(function (n, t) {
n.sort(function (n, e) {
return o(u[t][n], u[t][e]);
});
}), n = (Ua - s * i) / n, c = 0, h = -1; ++h < i;) {
for (f = c, g = -1; ++g < i;) {
var y = d[h],
M = m[y][g],
x = u[y][M],
b = c,
_ = c += x * n;
p[y + "-" + M] = {
index: y,
subindex: M,
startAngle: b,
endAngle: _,
value: x
};
}
r[y] = {
index: y,
startAngle: f,
endAngle: c,
value: (c - f) / n
}, c += s;
}
for (h = -1; ++h < i;) for (g = h - 1; ++g < i;) {
var w = p[h + "-" + g],
S = p[g + "-" + h];
(w.value || S.value) && e.push(w.value < S.value ? {
source: S,
target: w
} : {
source: w,
target: S
});
}
l && t();
}
function t() {
e.sort(function (n, t) {
return l((n.source.value + n.target.value) / 2, (t.source.value + t.target.value) / 2);
});
}
var e,
r,
u,
i,
a,
o,
l,
c = {},
s = 0;
return c.matrix = function (n) {
return arguments.length ? (i = (u = n) && u.length, e = r = null, c) : u;
}, c.padding = function (n) {
return arguments.length ? (s = n, e = r = null, c) : s;
}, c.sortGroups = function (n) {
return arguments.length ? (a = n, e = r = null, c) : a;
}, c.sortSubgroups = function (n) {
return arguments.length ? (o = n, e = null, c) : o;
}, c.sortChords = function (n) {
return arguments.length ? (l = n, e && t(), c) : l;
}, c.chords = function () {
return e || n(), e;
}, c.groups = function () {
return r || n(), r;
}, c;
}, oa.layout.force = function () {
function n(n) {
return function (t, e, r, u) {
if (t.point !== n) {
var i = t.cx - n.x,
a = t.cy - n.y,
o = u - e,
l = i * i + a * a;
if (l > o * o / m) {
if (v > l) {
var c = t.charge / l;
n.px -= i * c, n.py -= a * c;
}
return !0;
}
if (t.point && l && v > l) {
var c = t.pointCharge / l;
n.px -= i * c, n.py -= a * c;
}
}
return !t.charge;
};
}
function t(n) {
n.px = oa.event.x, n.py = oa.event.y, l.resume();
}
var e,
r,
u,
i,
a,
o,
l = {},
c = oa.dispatch("start", "tick", "end"),
s = [1, 1],
f = .9,
h = ml,
g = yl,
p = -30,
v = Ml,
d = .1,
m = .64,
M = [],
x = [];
return l.tick = function () {
if ((u *= .99) < .005) return e = null, c.end({
type: "end",
alpha: u = 0
}), !0;
var t,
r,
l,
h,
g,
v,
m,
y,
b,
_ = M.length,
w = x.length;
for (r = 0; w > r; ++r) l = x[r], h = l.source, g = l.target, y = g.x - h.x, b = g.y - h.y, (v = y * y + b * b) && (v = u * a[r] * ((v = Math.sqrt(v)) - i[r]) / v, y *= v, b *= v, g.x -= y * (m = h.weight + g.weight ? h.weight / (h.weight + g.weight) : .5), g.y -= b * m, h.x += y * (m = 1 - m), h.y += b * m);
if ((m = u * d) && (y = s[0] / 2, b = s[1] / 2, r = -1, m)) for (; ++r < _;) l = M[r], l.x += (y - l.x) * m, l.y += (b - l.y) * m;
if (p) for (ru(t = oa.geom.quadtree(M), u, o), r = -1; ++r < _;) (l = M[r]).fixed || t.visit(n(l));
for (r = -1; ++r < _;) l = M[r], l.fixed ? (l.x = l.px, l.y = l.py) : (l.x -= (l.px - (l.px = l.x)) * f, l.y -= (l.py - (l.py = l.y)) * f);
c.tick({
type: "tick",
alpha: u
});
}, l.nodes = function (n) {
return arguments.length ? (M = n, l) : M;
}, l.links = function (n) {
return arguments.length ? (x = n, l) : x;
}, l.size = function (n) {
return arguments.length ? (s = n, l) : s;
}, l.linkDistance = function (n) {
return arguments.length ? (h = "function" == typeof n ? n : +n, l) : h;
}, l.distance = l.linkDistance, l.linkStrength = function (n) {
return arguments.length ? (g = "function" == typeof n ? n : +n, l) : g;
}, l.friction = function (n) {
return arguments.length ? (f = +n, l) : f;
}, l.charge = function (n) {
return arguments.length ? (p = "function" == typeof n ? n : +n, l) : p;
}, l.chargeDistance = function (n) {
return arguments.length ? (v = n * n, l) : Math.sqrt(v);
}, l.gravity = function (n) {
return arguments.length ? (d = +n, l) : d;
}, l.theta = function (n) {
return arguments.length ? (m = n * n, l) : Math.sqrt(m);
}, l.alpha = function (n) {
return arguments.length ? (n = +n, u ? n > 0 ? u = n : (e.c = null, e.t = NaN, e = null, c.end({
type: "end",
alpha: u = 0
})) : n > 0 && (c.start({
type: "start",
alpha: u = n
}), e = qn(l.tick)), l) : u;
}, l.start = function () {
function n(n, r) {
if (!e) {
for (e = new Array(u), l = 0; u > l; ++l) e[l] = [];
for (l = 0; c > l; ++l) {
var i = x[l];
e[i.source.index].push(i.target), e[i.target.index].push(i.source);
}
}
for (var a, o = e[t], l = -1, s = o.length; ++l < s;) if (!isNaN(a = o[l][n])) return a;
return Math.random() * r;
}
var t,
e,
r,
u = M.length,
c = x.length,
f = s[0],
v = s[1];
for (t = 0; u > t; ++t) (r = M[t]).index = t, r.weight = 0;
for (t = 0; c > t; ++t) r = x[t], "number" == typeof r.source && (r.source = M[r.source]), "number" == typeof r.target && (r.target = M[r.target]), ++r.source.weight, ++r.target.weight;
for (t = 0; u > t; ++t) r = M[t], isNaN(r.x) && (r.x = n("x", f)), isNaN(r.y) && (r.y = n("y", v)), isNaN(r.px) && (r.px = r.x), isNaN(r.py) && (r.py = r.y);
if (i = [], "function" == typeof h) for (t = 0; c > t; ++t) i[t] = +h.call(this, x[t], t);else for (t = 0; c > t; ++t) i[t] = h;
if (a = [], "function" == typeof g) for (t = 0; c > t; ++t) a[t] = +g.call(this, x[t], t);else for (t = 0; c > t; ++t) a[t] = g;
if (o = [], "function" == typeof p) for (t = 0; u > t; ++t) o[t] = +p.call(this, M[t], t);else for (t = 0; u > t; ++t) o[t] = p;
return l.resume();
}, l.resume = function () {
return l.alpha(.1);
}, l.stop = function () {
return l.alpha(0);
}, l.drag = function () {
return r || (r = oa.behavior.drag().origin(y).on("dragstart.force", Qr).on("drag.force", t).on("dragend.force", nu)), arguments.length ? void this.on("mouseover.force", tu).on("mouseout.force", eu).call(r) : r;
}, oa.rebind(l, c, "on");
};
var ml = 20,
yl = 1,
Ml = 1 / 0;
oa.layout.hierarchy = function () {
function n(u) {
var i,
a = [u],
o = [];
for (u.depth = 0; null != (i = a.pop());) if (o.push(i), (c = e.call(n, i, i.depth)) && (l = c.length)) {
for (var l, c, s; --l >= 0;) a.push(s = c[l]), s.parent = i, s.depth = i.depth + 1;
r && (i.value = 0), i.children = c;
} else r && (i.value = +r.call(n, i, i.depth) || 0), delete i.children;
return au(u, function (n) {
var e, u;
t && (e = n.children) && e.sort(t), r && (u = n.parent) && (u.value += n.value);
}), o;
}
var t = cu,
e = ou,
r = lu;
return n.sort = function (e) {
return arguments.length ? (t = e, n) : t;
}, n.children = function (t) {
return arguments.length ? (e = t, n) : e;
}, n.value = function (t) {
return arguments.length ? (r = t, n) : r;
}, n.revalue = function (t) {
return r && (iu(t, function (n) {
n.children && (n.value = 0);
}), au(t, function (t) {
var e;
t.children || (t.value = +r.call(n, t, t.depth) || 0), (e = t.parent) && (e.value += t.value);
})), t;
}, n;
}, oa.layout.partition = function () {
function n(t, e, r, u) {
var i = t.children;
if (t.x = e, t.y = t.depth * u, t.dx = r, t.dy = u, i && (a = i.length)) {
var a,
o,
l,
c = -1;
for (r = t.value ? r / t.value : 0; ++c < a;) n(o = i[c], e, l = o.value * r, u), e += l;
}
}
function t(n) {
var e = n.children,
r = 0;
if (e && (u = e.length)) for (var u, i = -1; ++i < u;) r = Math.max(r, t(e[i]));
return 1 + r;
}
function e(e, i) {
var a = r.call(this, e, i);
return n(a[0], 0, u[0], u[1] / t(a[0])), a;
}
var r = oa.layout.hierarchy(),
u = [1, 1];
return e.size = function (n) {
return arguments.length ? (u = n, e) : u;
}, uu(e, r);
}, oa.layout.pie = function () {
function n(a) {
var o,
l = a.length,
c = a.map(function (e, r) {
return +t.call(n, e, r);
}),
s = +("function" == typeof r ? r.apply(this, arguments) : r),
f = ("function" == typeof u ? u.apply(this, arguments) : u) - s,
h = Math.min(Math.abs(f) / l, +("function" == typeof i ? i.apply(this, arguments) : i)),
g = h * (0 > f ? -1 : 1),
p = oa.sum(c),
v = p ? (f - l * g) / p : 0,
d = oa.range(l),
m = [];
return null != e && d.sort(e === xl ? function (n, t) {
return c[t] - c[n];
} : function (n, t) {
return e(a[n], a[t]);
}), d.forEach(function (n) {
m[n] = {
data: a[n],
value: o = c[n],
startAngle: s,
endAngle: s += o * v + g,
padAngle: h
};
}), m;
}
var t = Number,
e = xl,
r = 0,
u = Ua,
i = 0;
return n.value = function (e) {
return arguments.length ? (t = e, n) : t;
}, n.sort = function (t) {
return arguments.length ? (e = t, n) : e;
}, n.startAngle = function (t) {
return arguments.length ? (r = t, n) : r;
}, n.endAngle = function (t) {
return arguments.length ? (u = t, n) : u;
}, n.padAngle = function (t) {
return arguments.length ? (i = t, n) : i;
}, n;
};
var xl = {};
oa.layout.stack = function () {
function n(o, l) {
if (!(h = o.length)) return o;
var c = o.map(function (e, r) {
return t.call(n, e, r);
}),
s = c.map(function (t) {
return t.map(function (t, e) {
return [i.call(n, t, e), a.call(n, t, e)];
});
}),
f = e.call(n, s, l);
c = oa.permute(c, f), s = oa.permute(s, f);
var h,
g,
p,
v,
d = r.call(n, s, l),
m = c[0].length;
for (p = 0; m > p; ++p) for (u.call(n, c[0][p], v = d[p], s[0][p][1]), g = 1; h > g; ++g) u.call(n, c[g][p], v += s[g - 1][p][1], s[g][p][1]);
return o;
}
var t = y,
e = pu,
r = vu,
u = gu,
i = fu,
a = hu;
return n.values = function (e) {
return arguments.length ? (t = e, n) : t;
}, n.order = function (t) {
return arguments.length ? (e = "function" == typeof t ? t : bl.get(t) || pu, n) : e;
}, n.offset = function (t) {
return arguments.length ? (r = "function" == typeof t ? t : _l.get(t) || vu, n) : r;
}, n.x = function (t) {
return arguments.length ? (i = t, n) : i;
}, n.y = function (t) {
return arguments.length ? (a = t, n) : a;
}, n.out = function (t) {
return arguments.length ? (u = t, n) : u;
}, n;
};
var bl = oa.map({
"inside-out": function insideOut(n) {
var t,
e,
r = n.length,
u = n.map(du),
i = n.map(mu),
a = oa.range(r).sort(function (n, t) {
return u[n] - u[t];
}),
o = 0,
l = 0,
c = [],
s = [];
for (t = 0; r > t; ++t) e = a[t], l > o ? (o += i[e], c.push(e)) : (l += i[e], s.push(e));
return s.reverse().concat(c);
},
reverse: function reverse(n) {
return oa.range(n.length).reverse();
},
"default": pu
}),
_l = oa.map({
silhouette: function silhouette(n) {
var t,
e,
r,
u = n.length,
i = n[0].length,
a = [],
o = 0,
l = [];
for (e = 0; i > e; ++e) {
for (t = 0, r = 0; u > t; t++) r += n[t][e][1];
r > o && (o = r), a.push(r);
}
for (e = 0; i > e; ++e) l[e] = (o - a[e]) / 2;
return l;
},
wiggle: function wiggle(n) {
var t,
e,
r,
u,
i,
a,
o,
l,
c,
s = n.length,
f = n[0],
h = f.length,
g = [];
for (g[0] = l = c = 0, e = 1; h > e; ++e) {
for (t = 0, u = 0; s > t; ++t) u += n[t][e][1];
for (t = 0, i = 0, o = f[e][0] - f[e - 1][0]; s > t; ++t) {
for (r = 0, a = (n[t][e][1] - n[t][e - 1][1]) / (2 * o); t > r; ++r) a += (n[r][e][1] - n[r][e - 1][1]) / o;
i += a * n[t][e][1];
}
g[e] = l -= u ? i / u * o : 0, c > l && (c = l);
}
for (e = 0; h > e; ++e) g[e] -= c;
return g;
},
expand: function expand(n) {
var t,
e,
r,
u = n.length,
i = n[0].length,
a = 1 / u,
o = [];
for (e = 0; i > e; ++e) {
for (t = 0, r = 0; u > t; t++) r += n[t][e][1];
if (r) for (t = 0; u > t; t++) n[t][e][1] /= r;else for (t = 0; u > t; t++) n[t][e][1] = a;
}
for (e = 0; i > e; ++e) o[e] = 0;
return o;
},
zero: vu
});
oa.layout.histogram = function () {
function n(n, i) {
for (var a, o, l = [], c = n.map(e, this), s = r.call(this, c, i), f = u.call(this, s, c, i), i = -1, h = c.length, g = f.length - 1, p = t ? 1 : 1 / h; ++i < g;) a = l[i] = [], a.dx = f[i + 1] - (a.x = f[i]), a.y = 0;
if (g > 0) for (i = -1; ++i < h;) o = c[i], o >= s[0] && o <= s[1] && (a = l[oa.bisect(f, o, 1, g) - 1], a.y += p, a.push(n[i]));
return l;
}
var t = !0,
e = Number,
r = bu,
u = Mu;
return n.value = function (t) {
return arguments.length ? (e = t, n) : e;
}, n.range = function (t) {
return arguments.length ? (r = En(t), n) : r;
}, n.bins = function (t) {
return arguments.length ? (u = "number" == typeof t ? function (n) {
return xu(n, t);
} : En(t), n) : u;
}, n.frequency = function (e) {
return arguments.length ? (t = !!e, n) : t;
}, n;
}, oa.layout.pack = function () {
function n(n, i) {
var a = e.call(this, n, i),
o = a[0],
l = u[0],
c = u[1],
s = null == t ? Math.sqrt : "function" == typeof t ? t : function () {
return t;
};
if (o.x = o.y = 0, au(o, function (n) {
n.r = +s(n.value);
}), au(o, Nu), r) {
var f = r * (t ? 1 : Math.max(2 * o.r / l, 2 * o.r / c)) / 2;
au(o, function (n) {
n.r += f;
}), au(o, Nu), au(o, function (n) {
n.r -= f;
});
}
return Cu(o, l / 2, c / 2, t ? 1 : 1 / Math.max(2 * o.r / l, 2 * o.r / c)), a;
}
var t,
e = oa.layout.hierarchy().sort(_u),
r = 0,
u = [1, 1];
return n.size = function (t) {
return arguments.length ? (u = t, n) : u;
}, n.radius = function (e) {
return arguments.length ? (t = null == e || "function" == typeof e ? e : +e, n) : t;
}, n.padding = function (t) {
return arguments.length ? (r = +t, n) : r;
}, uu(n, e);
}, oa.layout.tree = function () {
function n(n, u) {
var s = a.call(this, n, u),
f = s[0],
h = t(f);
if (au(h, e), h.parent.m = -h.z, iu(h, r), c) iu(f, i);else {
var g = f,
p = f,
v = f;
iu(f, function (n) {
n.x < g.x && (g = n), n.x > p.x && (p = n), n.depth > v.depth && (v = n);
});
var d = o(g, p) / 2 - g.x,
m = l[0] / (p.x + o(p, g) / 2 + d),
y = l[1] / (v.depth || 1);
iu(f, function (n) {
n.x = (n.x + d) * m, n.y = n.depth * y;
});
}
return s;
}
function t(n) {
for (var t, e = {
A: null,
children: [n]
}, r = [e]; null != (t = r.pop());) for (var u, i = t.children, a = 0, o = i.length; o > a; ++a) r.push((i[a] = u = {
_: i[a],
parent: t,
children: (u = i[a].children) && u.slice() || [],
A: null,
a: null,
z: 0,
m: 0,
c: 0,
s: 0,
t: null,
i: a
}).a = u);
return e.children[0];
}
function e(n) {
var t = n.children,
e = n.parent.children,
r = n.i ? e[n.i - 1] : null;
if (t.length) {
Du(n);
var i = (t[0].z + t[t.length - 1].z) / 2;
r ? (n.z = r.z + o(n._, r._), n.m = n.z - i) : n.z = i;
} else r && (n.z = r.z + o(n._, r._));
n.parent.A = u(n, r, n.parent.A || e[0]);
}
function r(n) {
n._.x = n.z + n.parent.m, n.m += n.parent.m;
}
function u(n, t, e) {
if (t) {
for (var r, u = n, i = n, a = t, l = u.parent.children[0], c = u.m, s = i.m, f = a.m, h = l.m; a = Tu(a), u = qu(u), a && u;) l = qu(l), i = Tu(i), i.a = n, r = a.z + f - u.z - c + o(a._, u._), r > 0 && (Ru(Pu(a, n, e), n, r), c += r, s += r), f += a.m, c += u.m, h += l.m, s += i.m;
a && !Tu(i) && (i.t = a, i.m += f - s), u && !qu(l) && (l.t = u, l.m += c - h, e = n);
}
return e;
}
function i(n) {
n.x *= l[0], n.y = n.depth * l[1];
}
var a = oa.layout.hierarchy().sort(null).value(null),
o = Lu,
l = [1, 1],
c = null;
return n.separation = function (t) {
return arguments.length ? (o = t, n) : o;
}, n.size = function (t) {
return arguments.length ? (c = null == (l = t) ? i : null, n) : c ? null : l;
}, n.nodeSize = function (t) {
return arguments.length ? (c = null == (l = t) ? null : i, n) : c ? l : null;
}, uu(n, a);
}, oa.layout.cluster = function () {
function n(n, i) {
var a,
o = t.call(this, n, i),
l = o[0],
c = 0;
au(l, function (n) {
var t = n.children;
t && t.length ? (n.x = Uu(t), n.y = ju(t)) : (n.x = a ? c += e(n, a) : 0, n.y = 0, a = n);
});
var s = Fu(l),
f = Hu(l),
h = s.x - e(s, f) / 2,
g = f.x + e(f, s) / 2;
return au(l, u ? function (n) {
n.x = (n.x - l.x) * r[0], n.y = (l.y - n.y) * r[1];
} : function (n) {
n.x = (n.x - h) / (g - h) * r[0], n.y = (1 - (l.y ? n.y / l.y : 1)) * r[1];
}), o;
}
var t = oa.layout.hierarchy().sort(null).value(null),
e = Lu,
r = [1, 1],
u = !1;
return n.separation = function (t) {
return arguments.length ? (e = t, n) : e;
}, n.size = function (t) {
return arguments.length ? (u = null == (r = t), n) : u ? null : r;
}, n.nodeSize = function (t) {
return arguments.length ? (u = null != (r = t), n) : u ? r : null;
}, uu(n, t);
}, oa.layout.treemap = function () {
function n(n, t) {
for (var e, r, u = -1, i = n.length; ++u < i;) r = (e = n[u]).value * (0 > t ? 0 : t), e.area = isNaN(r) || 0 >= r ? 0 : r;
}
function t(e) {
var i = e.children;
if (i && i.length) {
var a,
o,
l,
c = f(e),
s = [],
h = i.slice(),
p = 1 / 0,
v = "slice" === g ? c.dx : "dice" === g ? c.dy : "slice-dice" === g ? 1 & e.depth ? c.dy : c.dx : Math.min(c.dx, c.dy);
for (n(h, c.dx * c.dy / e.value), s.area = 0; (l = h.length) > 0;) s.push(a = h[l - 1]), s.area += a.area, "squarify" !== g || (o = r(s, v)) <= p ? (h.pop(), p = o) : (s.area -= s.pop().area, u(s, v, c, !1), v = Math.min(c.dx, c.dy), s.length = s.area = 0, p = 1 / 0);
s.length && (u(s, v, c, !0), s.length = s.area = 0), i.forEach(t);
}
}
function e(t) {
var r = t.children;
if (r && r.length) {
var i,
a = f(t),
o = r.slice(),
l = [];
for (n(o, a.dx * a.dy / t.value), l.area = 0; i = o.pop();) l.push(i), l.area += i.area, null != i.z && (u(l, i.z ? a.dx : a.dy, a, !o.length), l.length = l.area = 0);
r.forEach(e);
}
}
function r(n, t) {
for (var e, r = n.area, u = 0, i = 1 / 0, a = -1, o = n.length; ++a < o;) (e = n[a].area) && (i > e && (i = e), e > u && (u = e));
return r *= r, t *= t, r ? Math.max(t * u * p / r, r / (t * i * p)) : 1 / 0;
}
function u(n, t, e, r) {
var u,
i = -1,
a = n.length,
o = e.x,
c = e.y,
s = t ? l(n.area / t) : 0;
if (t == e.dx) {
for ((r || s > e.dy) && (s = e.dy); ++i < a;) u = n[i], u.x = o, u.y = c, u.dy = s, o += u.dx = Math.min(e.x + e.dx - o, s ? l(u.area / s) : 0);
u.z = !0, u.dx += e.x + e.dx - o, e.y += s, e.dy -= s;
} else {
for ((r || s > e.dx) && (s = e.dx); ++i < a;) u = n[i], u.x = o, u.y = c, u.dx = s, c += u.dy = Math.min(e.y + e.dy - c, s ? l(u.area / s) : 0);
u.z = !1, u.dy += e.y + e.dy - c, e.x += s, e.dx -= s;
}
}
function i(r) {
var u = a || o(r),
i = u[0];
return i.x = i.y = 0, i.value ? (i.dx = c[0], i.dy = c[1]) : i.dx = i.dy = 0, a && o.revalue(i), n([i], i.dx * i.dy / i.value), (a ? e : t)(i), h && (a = u), u;
}
var a,
o = oa.layout.hierarchy(),
l = Math.round,
c = [1, 1],
s = null,
f = Ou,
h = !1,
g = "squarify",
p = .5 * (1 + Math.sqrt(5));
return i.size = function (n) {
return arguments.length ? (c = n, i) : c;
}, i.padding = function (n) {
function t(t) {
var e = n.call(i, t, t.depth);
return null == e ? Ou(t) : Iu(t, "number" == typeof e ? [e, e, e, e] : e);
}
function e(t) {
return Iu(t, n);
}
if (!arguments.length) return s;
var r;
return f = null == (s = n) ? Ou : "function" == (r = _typeof(n)) ? t : "number" === r ? (n = [n, n, n, n], e) : e, i;
}, i.round = function (n) {
return arguments.length ? (l = n ? Math.round : Number, i) : l != Number;
}, i.sticky = function (n) {
return arguments.length ? (h = n, a = null, i) : h;
}, i.ratio = function (n) {
return arguments.length ? (p = n, i) : p;
}, i.mode = function (n) {
return arguments.length ? (g = n + "", i) : g;
}, uu(i, o);
}, oa.random = {
normal: function normal(n, t) {
var e = arguments.length;
return 2 > e && (t = 1), 1 > e && (n = 0), function () {
var e, r, u;
do e = 2 * Math.random() - 1, r = 2 * Math.random() - 1, u = e * e + r * r; while (!u || u > 1);
return n + t * e * Math.sqrt(-2 * Math.log(u) / u);
};
},
logNormal: function logNormal() {
var n = oa.random.normal.apply(oa, arguments);
return function () {
return Math.exp(n());
};
},
bates: function bates(n) {
var t = oa.random.irwinHall(n);
return function () {
return t() / n;
};
},
irwinHall: function irwinHall(n) {
return function () {
for (var t = 0, e = 0; n > e; e++) t += Math.random();
return t;
};
}
}, oa.scale = {};
var wl = {
floor: y,
ceil: y
};
oa.scale.linear = function () {
return Wu([0, 1], [0, 1], Mr, !1);
};
var Sl = {
s: 1,
g: 1,
p: 1,
r: 1,
e: 1
};
oa.scale.log = function () {
return ri(oa.scale.linear().domain([0, 1]), 10, !0, [1, 10]);
};
var kl = oa.format(".0e"),
Nl = {
floor: function floor(n) {
return -Math.ceil(-n);
},
ceil: function ceil(n) {
return -Math.floor(-n);
}
};
oa.scale.pow = function () {
return ui(oa.scale.linear(), 1, [0, 1]);
}, oa.scale.sqrt = function () {
return oa.scale.pow().exponent(.5);
}, oa.scale.ordinal = function () {
return ai([], {
t: "range",
a: [[]]
});
}, oa.scale.category10 = function () {
return oa.scale.ordinal().range(El);
}, oa.scale.category20 = function () {
return oa.scale.ordinal().range(Al);
}, oa.scale.category20b = function () {
return oa.scale.ordinal().range(Cl);
}, oa.scale.category20c = function () {
return oa.scale.ordinal().range(zl);
};
var El = [2062260, 16744206, 2924588, 14034728, 9725885, 9197131, 14907330, 8355711, 12369186, 1556175].map(xn),
Al = [2062260, 11454440, 16744206, 16759672, 2924588, 10018698, 14034728, 16750742, 9725885, 12955861, 9197131, 12885140, 14907330, 16234194, 8355711, 13092807, 12369186, 14408589, 1556175, 10410725].map(xn),
Cl = [3750777, 5395619, 7040719, 10264286, 6519097, 9216594, 11915115, 13556636, 9202993, 12426809, 15186514, 15190932, 8666169, 11356490, 14049643, 15177372, 8077683, 10834324, 13528509, 14589654].map(xn),
zl = [3244733, 7057110, 10406625, 13032431, 15095053, 16616764, 16625259, 16634018, 3253076, 7652470, 10607003, 13101504, 7695281, 10394312, 12369372, 14342891, 6513507, 9868950, 12434877, 14277081].map(xn);
oa.scale.quantile = function () {
return oi([], []);
}, oa.scale.quantize = function () {
return li(0, 1, [0, 1]);
}, oa.scale.threshold = function () {
return ci([.5], [0, 1]);
}, oa.scale.identity = function () {
return si([0, 1]);
}, oa.svg = {}, oa.svg.arc = function () {
function n() {
var n = Math.max(0, +e.apply(this, arguments)),
c = Math.max(0, +r.apply(this, arguments)),
s = a.apply(this, arguments) - Ha,
f = o.apply(this, arguments) - Ha,
h = Math.abs(f - s),
g = s > f ? 0 : 1;
if (n > c && (p = c, c = n, n = p), h >= Fa) return t(c, g) + (n ? t(n, 1 - g) : "") + "Z";
var p,
v,
d,
m,
y,
M,
x,
b,
_,
w,
S,
k,
N = 0,
E = 0,
A = [];
if ((m = (+l.apply(this, arguments) || 0) / 2) && (d = i === Ll ? Math.sqrt(n * n + c * c) : +i.apply(this, arguments), g || (E *= -1), c && (E = tn(d / c * Math.sin(m))), n && (N = tn(d / n * Math.sin(m)))), c) {
y = c * Math.cos(s + E), M = c * Math.sin(s + E), x = c * Math.cos(f - E), b = c * Math.sin(f - E);
var C = Math.abs(f - s - 2 * E) <= ja ? 0 : 1;
if (E && mi(y, M, x, b) === g ^ C) {
var z = (s + f) / 2;
y = c * Math.cos(z), M = c * Math.sin(z), x = b = null;
}
} else y = M = 0;
if (n) {
_ = n * Math.cos(f - N), w = n * Math.sin(f - N), S = n * Math.cos(s + N), k = n * Math.sin(s + N);
var L = Math.abs(s - f + 2 * N) <= ja ? 0 : 1;
if (N && mi(_, w, S, k) === 1 - g ^ L) {
var q = (s + f) / 2;
_ = n * Math.cos(q), w = n * Math.sin(q), S = k = null;
}
} else _ = w = 0;
if (h > Da && (p = Math.min(Math.abs(c - n) / 2, +u.apply(this, arguments))) > .001) {
v = c > n ^ g ? 0 : 1;
var T = p,
R = p;
if (ja > h) {
var D = null == S ? [_, w] : null == x ? [y, M] : Re([y, M], [S, k], [x, b], [_, w]),
P = y - D[0],
j = M - D[1],
U = x - D[0],
F = b - D[1],
H = 1 / Math.sin(Math.acos((P * U + j * F) / (Math.sqrt(P * P + j * j) * Math.sqrt(U * U + F * F))) / 2),
O = Math.sqrt(D[0] * D[0] + D[1] * D[1]);
R = Math.min(p, (n - O) / (H - 1)), T = Math.min(p, (c - O) / (H + 1));
}
if (null != x) {
var I = yi(null == S ? [_, w] : [S, k], [y, M], c, T, g),
Y = yi([x, b], [_, w], c, T, g);
p === T ? A.push("M", I[0], "A", T, ",", T, " 0 0,", v, " ", I[1], "A", c, ",", c, " 0 ", 1 - g ^ mi(I[1][0], I[1][1], Y[1][0], Y[1][1]), ",", g, " ", Y[1], "A", T, ",", T, " 0 0,", v, " ", Y[0]) : A.push("M", I[0], "A", T, ",", T, " 0 1,", v, " ", Y[0]);
} else A.push("M", y, ",", M);
if (null != S) {
var Z = yi([y, M], [S, k], n, -R, g),
V = yi([_, w], null == x ? [y, M] : [x, b], n, -R, g);
p === R ? A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", V[1], "A", n, ",", n, " 0 ", g ^ mi(V[1][0], V[1][1], Z[1][0], Z[1][1]), ",", 1 - g, " ", Z[1], "A", R, ",", R, " 0 0,", v, " ", Z[0]) : A.push("L", V[0], "A", R, ",", R, " 0 0,", v, " ", Z[0]);
} else A.push("L", _, ",", w);
} else A.push("M", y, ",", M), null != x && A.push("A", c, ",", c, " 0 ", C, ",", g, " ", x, ",", b), A.push("L", _, ",", w), null != S && A.push("A", n, ",", n, " 0 ", L, ",", 1 - g, " ", S, ",", k);
return A.push("Z"), A.join("");
}
function t(n, t) {
return "M0," + n + "A" + n + "," + n + " 0 1," + t + " 0," + -n + "A" + n + "," + n + " 0 1," + t + " 0," + n;
}
var e = hi,
r = gi,
u = fi,
i = Ll,
a = pi,
o = vi,
l = di;
return n.innerRadius = function (t) {
return arguments.length ? (e = En(t), n) : e;
}, n.outerRadius = function (t) {
return arguments.length ? (r = En(t), n) : r;
}, n.cornerRadius = function (t) {
return arguments.length ? (u = En(t), n) : u;
}, n.padRadius = function (t) {
return arguments.length ? (i = t == Ll ? Ll : En(t), n) : i;
}, n.startAngle = function (t) {
return arguments.length ? (a = En(t), n) : a;
}, n.endAngle = function (t) {
return arguments.length ? (o = En(t), n) : o;
}, n.padAngle = function (t) {
return arguments.length ? (l = En(t), n) : l;
}, n.centroid = function () {
var n = (+e.apply(this, arguments) + +r.apply(this, arguments)) / 2,
t = (+a.apply(this, arguments) + +o.apply(this, arguments)) / 2 - Ha;
return [Math.cos(t) * n, Math.sin(t) * n];
}, n;
};
var Ll = "auto";
oa.svg.line = function () {
return Mi(y);
};
var ql = oa.map({
linear: xi,
"linear-closed": bi,
step: _i,
"step-before": wi,
"step-after": Si,
basis: zi,
"basis-open": Li,
"basis-closed": qi,
bundle: Ti,
cardinal: Ei,
"cardinal-open": ki,
"cardinal-closed": Ni,
monotone: Fi
});
ql.forEach(function (n, t) {
t.key = n, t.closed = /-closed$/.test(n);
});
var Tl = [0, 2 / 3, 1 / 3, 0],
Rl = [0, 1 / 3, 2 / 3, 0],
Dl = [0, 1 / 6, 2 / 3, 1 / 6];
oa.svg.line.radial = function () {
var n = Mi(Hi);
return n.radius = n.x, delete n.x, n.angle = n.y, delete n.y, n;
}, wi.reverse = Si, Si.reverse = wi, oa.svg.area = function () {
return Oi(y);
}, oa.svg.area.radial = function () {
var n = Oi(Hi);
return n.radius = n.x, delete n.x, n.innerRadius = n.x0, delete n.x0, n.outerRadius = n.x1, delete n.x1, n.angle = n.y, delete n.y, n.startAngle = n.y0, delete n.y0, n.endAngle = n.y1, delete n.y1, n;
}, oa.svg.chord = function () {
function n(n, o) {
var l = t(this, i, n, o),
c = t(this, a, n, o);
return "M" + l.p0 + r(l.r, l.p1, l.a1 - l.a0) + (e(l, c) ? u(l.r, l.p1, l.r, l.p0) : u(l.r, l.p1, c.r, c.p0) + r(c.r, c.p1, c.a1 - c.a0) + u(c.r, c.p1, l.r, l.p0)) + "Z";
}
function t(n, t, e, r) {
var u = t.call(n, e, r),
i = o.call(n, u, r),
a = l.call(n, u, r) - Ha,
s = c.call(n, u, r) - Ha;
return {
r: i,
a0: a,
a1: s,
p0: [i * Math.cos(a), i * Math.sin(a)],
p1: [i * Math.cos(s), i * Math.sin(s)]
};
}
function e(n, t) {
return n.a0 == t.a0 && n.a1 == t.a1;
}
function r(n, t, e) {
return "A" + n + "," + n + " 0 " + +(e > ja) + ",1 " + t;
}
function u(n, t, e, r) {
return "Q 0,0 " + r;
}
var i = Me,
a = xe,
o = Ii,
l = pi,
c = vi;
return n.radius = function (t) {
return arguments.length ? (o = En(t), n) : o;
}, n.source = function (t) {
return arguments.length ? (i = En(t), n) : i;
}, n.target = function (t) {
return arguments.length ? (a = En(t), n) : a;
}, n.startAngle = function (t) {
return arguments.length ? (l = En(t), n) : l;
}, n.endAngle = function (t) {
return arguments.length ? (c = En(t), n) : c;
}, n;
}, oa.svg.diagonal = function () {
function n(n, u) {
var i = t.call(this, n, u),
a = e.call(this, n, u),
o = (i.y + a.y) / 2,
l = [i, {
x: i.x,
y: o
}, {
x: a.x,
y: o
}, a];
return l = l.map(r), "M" + l[0] + "C" + l[1] + " " + l[2] + " " + l[3];
}
var t = Me,
e = xe,
r = Yi;
return n.source = function (e) {
return arguments.length ? (t = En(e), n) : t;
}, n.target = function (t) {
return arguments.length ? (e = En(t), n) : e;
}, n.projection = function (t) {
return arguments.length ? (r = t, n) : r;
}, n;
}, oa.svg.diagonal.radial = function () {
var n = oa.svg.diagonal(),
t = Yi,
e = n.projection;
return n.projection = function (n) {
return arguments.length ? e(Zi(t = n)) : t;
}, n;
}, oa.svg.symbol = function () {
function n(n, r) {
return (Pl.get(t.call(this, n, r)) || $i)(e.call(this, n, r));
}
var t = Xi,
e = Vi;
return n.type = function (e) {
return arguments.length ? (t = En(e), n) : t;
}, n.size = function (t) {
return arguments.length ? (e = En(t), n) : e;
}, n;
};
var Pl = oa.map({
circle: $i,
cross: function cross(n) {
var t = Math.sqrt(n / 5) / 2;
return "M" + -3 * t + "," + -t + "H" + -t + "V" + -3 * t + "H" + t + "V" + -t + "H" + 3 * t + "V" + t + "H" + t + "V" + 3 * t + "H" + -t + "V" + t + "H" + -3 * t + "Z";
},
diamond: function diamond(n) {
var t = Math.sqrt(n / (2 * Ul)),
e = t * Ul;
return "M0," + -t + "L" + e + ",0 0," + t + " " + -e + ",0Z";
},
square: function square(n) {
var t = Math.sqrt(n) / 2;
return "M" + -t + "," + -t + "L" + t + "," + -t + " " + t + "," + t + " " + -t + "," + t + "Z";
},
"triangle-down": function triangleDown(n) {
var t = Math.sqrt(n / jl),
e = t * jl / 2;
return "M0," + e + "L" + t + "," + -e + " " + -t + "," + -e + "Z";
},
"triangle-up": function triangleUp(n) {
var t = Math.sqrt(n / jl),
e = t * jl / 2;
return "M0," + -e + "L" + t + "," + e + " " + -t + "," + e + "Z";
}
});
oa.svg.symbolTypes = Pl.keys();
var jl = Math.sqrt(3),
Ul = Math.tan(30 * Oa);
Aa.transition = function (n) {
for (var t, e, r = Fl || ++Yl, u = Ki(n), i = [], a = Hl || {
time: Date.now(),
ease: Nr,
delay: 0,
duration: 250
}, o = -1, l = this.length; ++o < l;) {
i.push(t = []);
for (var c = this[o], s = -1, f = c.length; ++s < f;) (e = c[s]) && Qi(e, s, u, r, a), t.push(e);
}
return Wi(i, u, r);
}, Aa.interrupt = function (n) {
return this.each(null == n ? Ol : Bi(Ki(n)));
};
var Fl,
Hl,
Ol = Bi(Ki()),
Il = [],
Yl = 0;
Il.call = Aa.call, Il.empty = Aa.empty, Il.node = Aa.node, Il.size = Aa.size, oa.transition = function (n, t) {
return n && n.transition ? Fl ? n.transition(t) : n : oa.selection().transition(n);
}, oa.transition.prototype = Il, Il.select = function (n) {
var t,
e,
r,
u = this.id,
i = this.namespace,
a = [];
n = A(n);
for (var o = -1, l = this.length; ++o < l;) {
a.push(t = []);
for (var c = this[o], s = -1, f = c.length; ++s < f;) (r = c[s]) && (e = n.call(r, r.__data__, s, o)) ? ("__data__" in r && (e.__data__ = r.__data__), Qi(e, s, i, u, r[i][u]), t.push(e)) : t.push(null);
}
return Wi(a, i, u);
}, Il.selectAll = function (n) {
var t,
e,
r,
u,
i,
a = this.id,
o = this.namespace,
l = [];
n = C(n);
for (var c = -1, s = this.length; ++c < s;) for (var f = this[c], h = -1, g = f.length; ++h < g;) if (r = f[h]) {
i = r[o][a], e = n.call(r, r.__data__, h, c), l.push(t = []);
for (var p = -1, v = e.length; ++p < v;) (u = e[p]) && Qi(u, p, o, a, i), t.push(u);
}
return Wi(l, o, a);
}, Il.filter = function (n) {
var t,
e,
r,
u = [];
"function" != typeof n && (n = O(n));
for (var i = 0, a = this.length; a > i; i++) {
u.push(t = []);
for (var e = this[i], o = 0, l = e.length; l > o; o++) (r = e[o]) && n.call(r, r.__data__, o, i) && t.push(r);
}
return Wi(u, this.namespace, this.id);
}, Il.tween = function (n, t) {
var e = this.id,
r = this.namespace;
return arguments.length < 2 ? this.node()[r][e].tween.get(n) : Y(this, null == t ? function (t) {
t[r][e].tween.remove(n);
} : function (u) {
u[r][e].tween.set(n, t);
});
}, Il.attr = function (n, t) {
function e() {
this.removeAttribute(o);
}
function r() {
this.removeAttributeNS(o.space, o.local);
}
function u(n) {
return null == n ? e : (n += "", function () {
var t,
e = this.getAttribute(o);
return e !== n && (t = a(e, n), function (n) {
this.setAttribute(o, t(n));
});
});
}
function i(n) {
return null == n ? r : (n += "", function () {
var t,
e = this.getAttributeNS(o.space, o.local);
return e !== n && (t = a(e, n), function (n) {
this.setAttributeNS(o.space, o.local, t(n));
});
});
}
if (arguments.length < 2) {
for (t in n) this.attr(t, n[t]);
return this;
}
var a = "transform" == n ? $r : Mr,
o = oa.ns.qualify(n);
return Ji(this, "attr." + n, t, o.local ? i : u);
}, Il.attrTween = function (n, t) {
function e(n, e) {
var r = t.call(this, n, e, this.getAttribute(u));
return r && function (n) {
this.setAttribute(u, r(n));
};
}
function r(n, e) {
var r = t.call(this, n, e, this.getAttributeNS(u.space, u.local));
return r && function (n) {
this.setAttributeNS(u.space, u.local, r(n));
};
}
var u = oa.ns.qualify(n);
return this.tween("attr." + n, u.local ? r : e);
}, Il.style = function (n, e, r) {
function u() {
this.style.removeProperty(n);
}
function i(e) {
return null == e ? u : (e += "", function () {
var u,
i = t(this).getComputedStyle(this, null).getPropertyValue(n);
return i !== e && (u = Mr(i, e), function (t) {
this.style.setProperty(n, u(t), r);
});
});
}
var a = arguments.length;
if (3 > a) {
if ("string" != typeof n) {
2 > a && (e = "");
for (r in n) this.style(r, n[r], e);
return this;
}
r = "";
}
return Ji(this, "style." + n, e, i);
}, Il.styleTween = function (n, e, r) {
function u(u, i) {
var a = e.call(this, u, i, t(this).getComputedStyle(this, null).getPropertyValue(n));
return a && function (t) {
this.style.setProperty(n, a(t), r);
};
}
return arguments.length < 3 && (r = ""), this.tween("style." + n, u);
}, Il.text = function (n) {
return Ji(this, "text", n, Gi);
}, Il.remove = function () {
var n = this.namespace;
return this.each("end.transition", function () {
var t;
this[n].count < 2 && (t = this.parentNode) && t.removeChild(this);
});
}, Il.ease = function (n) {
var t = this.id,
e = this.namespace;
return arguments.length < 1 ? this.node()[e][t].ease : ("function" != typeof n && (n = oa.ease.apply(oa, arguments)), Y(this, function (r) {
r[e][t].ease = n;
}));
}, Il.delay = function (n) {
var t = this.id,
e = this.namespace;
return arguments.length < 1 ? this.node()[e][t].delay : Y(this, "function" == typeof n ? function (r, u, i) {
r[e][t].delay = +n.call(r, r.__data__, u, i);
} : (n = +n, function (r) {
r[e][t].delay = n;
}));
}, Il.duration = function (n) {
var t = this.id,
e = this.namespace;
return arguments.length < 1 ? this.node()[e][t].duration : Y(this, "function" == typeof n ? function (r, u, i) {
r[e][t].duration = Math.max(1, n.call(r, r.__data__, u, i));
} : (n = Math.max(1, n), function (r) {
r[e][t].duration = n;
}));
}, Il.each = function (n, t) {
var e = this.id,
r = this.namespace;
if (arguments.length < 2) {
var u = Hl,
i = Fl;
try {
Fl = e, Y(this, function (t, u, i) {
Hl = t[r][e], n.call(t, t.__data__, u, i);
});
} finally {
Hl = u, Fl = i;
}
} else Y(this, function (u) {
var i = u[r][e];
(i.event || (i.event = oa.dispatch("start", "end", "interrupt"))).on(n, t);
});
return this;
}, Il.transition = function () {
for (var n, t, e, r, u = this.id, i = ++Yl, a = this.namespace, o = [], l = 0, c = this.length; c > l; l++) {
o.push(n = []);
for (var t = this[l], s = 0, f = t.length; f > s; s++) (e = t[s]) && (r = e[a][u], Qi(e, s, a, i, {
time: r.time,
ease: r.ease,
delay: r.delay + r.duration,
duration: r.duration
})), n.push(e);
}
return Wi(o, a, i);
}, oa.svg.axis = function () {
function n(n) {
n.each(function () {
var n,
c = oa.select(this),
s = this.__chart__ || e,
f = this.__chart__ = e.copy(),
h = null == l ? f.ticks ? f.ticks.apply(f, o) : f.domain() : l,
g = null == t ? f.tickFormat ? f.tickFormat.apply(f, o) : y : t,
p = c.selectAll(".tick").data(h, f),
v = p.enter().insert("g", ".domain").attr("class", "tick").style("opacity", Da),
d = oa.transition(p.exit()).style("opacity", Da).remove(),
m = oa.transition(p.order()).style("opacity", 1),
M = Math.max(u, 0) + a,
x = Zu(f),
b = c.selectAll(".domain").data([0]),
_ = (b.enter().append("path").attr("class", "domain"), oa.transition(b));
v.append("line"), v.append("text");
var w,
S,
k,
N,
E = v.select("line"),
A = m.select("line"),
C = p.select("text").text(g),
z = v.select("text"),
L = m.select("text"),
q = "top" === r || "left" === r ? -1 : 1;
if ("bottom" === r || "top" === r ? (n = na, w = "x", k = "y", S = "x2", N = "y2", C.attr("dy", 0 > q ? "0em" : ".71em").style("text-anchor", "middle"), _.attr("d", "M" + x[0] + "," + q * i + "V0H" + x[1] + "V" + q * i)) : (n = ta, w = "y", k = "x", S = "y2", N = "x2", C.attr("dy", ".32em").style("text-anchor", 0 > q ? "end" : "start"), _.attr("d", "M" + q * i + "," + x[0] + "H0V" + x[1] + "H" + q * i)), E.attr(N, q * u), z.attr(k, q * M), A.attr(S, 0).attr(N, q * u), L.attr(w, 0).attr(k, q * M), f.rangeBand) {
var T = f,
R = T.rangeBand() / 2;
s = f = function f(n) {
return T(n) + R;
};
} else s.rangeBand ? s = f : d.call(n, f, s);
v.call(n, s, f), m.call(n, f, f);
});
}
var t,
e = oa.scale.linear(),
r = Zl,
u = 6,
i = 6,
a = 3,
o = [10],
l = null;
return n.scale = function (t) {
return arguments.length ? (e = t, n) : e;
}, n.orient = function (t) {
return arguments.length ? (r = t in Vl ? t + "" : Zl, n) : r;
}, n.ticks = function () {
return arguments.length ? (o = ca(arguments), n) : o;
}, n.tickValues = function (t) {
return arguments.length ? (l = t, n) : l;
}, n.tickFormat = function (e) {
return arguments.length ? (t = e, n) : t;
}, n.tickSize = function (t) {
var e = arguments.length;
return e ? (u = +t, i = +arguments[e - 1], n) : u;
}, n.innerTickSize = function (t) {
return arguments.length ? (u = +t, n) : u;
}, n.outerTickSize = function (t) {
return arguments.length ? (i = +t, n) : i;
}, n.tickPadding = function (t) {
return arguments.length ? (a = +t, n) : a;
}, n.tickSubdivide = function () {
return arguments.length && n;
}, n;
};
var Zl = "bottom",
Vl = {
top: 1,
right: 1,
bottom: 1,
left: 1
};
oa.svg.brush = function () {
function n(t) {
t.each(function () {
var t = oa.select(this).style("pointer-events", "all").style("-webkit-tap-highlight-color", "rgba(0,0,0,0)").on("mousedown.brush", i).on("touchstart.brush", i),
a = t.selectAll(".background").data([0]);
a.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair"), t.selectAll(".extent").data([0]).enter().append("rect").attr("class", "extent").style("cursor", "move");
var o = t.selectAll(".resize").data(v, y);
o.exit().remove(), o.enter().append("g").attr("class", function (n) {
return "resize " + n;
}).style("cursor", function (n) {
return Xl[n];
}).append("rect").attr("x", function (n) {
return /[ew]$/.test(n) ? -3 : null;
}).attr("y", function (n) {
return /^[ns]/.test(n) ? -3 : null;
}).attr("width", 6).attr("height", 6).style("visibility", "hidden"), o.style("display", n.empty() ? "none" : null);
var l,
f = oa.transition(t),
h = oa.transition(a);
c && (l = Zu(c), h.attr("x", l[0]).attr("width", l[1] - l[0]), r(f)), s && (l = Zu(s), h.attr("y", l[0]).attr("height", l[1] - l[0]), u(f)), e(f);
});
}
function e(n) {
n.selectAll(".resize").attr("transform", function (n) {
return "translate(" + f[+/e$/.test(n)] + "," + h[+/^s/.test(n)] + ")";
});
}
function r(n) {
n.select(".extent").attr("x", f[0]), n.selectAll(".extent,.n>rect,.s>rect").attr("width", f[1] - f[0]);
}
function u(n) {
n.select(".extent").attr("y", h[0]), n.selectAll(".extent,.e>rect,.w>rect").attr("height", h[1] - h[0]);
}
function i() {
function i() {
32 == oa.event.keyCode && (C || (M = null, L[0] -= f[1], L[1] -= h[1], C = 2), S());
}
function v() {
32 == oa.event.keyCode && 2 == C && (L[0] += f[1], L[1] += h[1], C = 0, S());
}
function d() {
var n = oa.mouse(b),
t = !1;
x && (n[0] += x[0], n[1] += x[1]), C || (oa.event.altKey ? (M || (M = [(f[0] + f[1]) / 2, (h[0] + h[1]) / 2]), L[0] = f[+(n[0] < M[0])], L[1] = h[+(n[1] < M[1])]) : M = null), E && m(n, c, 0) && (r(k), t = !0), A && m(n, s, 1) && (u(k), t = !0), t && (e(k), w({
type: "brush",
mode: C ? "move" : "resize"
}));
}
function m(n, t, e) {
var r,
u,
i = Zu(t),
l = i[0],
c = i[1],
s = L[e],
v = e ? h : f,
d = v[1] - v[0];
return C && (l -= s, c -= d + s), r = (e ? p : g) ? Math.max(l, Math.min(c, n[e])) : n[e], C ? u = (r += s) + d : (M && (s = Math.max(l, Math.min(c, 2 * M[e] - r))), r > s ? (u = r, r = s) : u = s), v[0] != r || v[1] != u ? (e ? o = null : a = null, v[0] = r, v[1] = u, !0) : void 0;
}
function y() {
d(), k.style("pointer-events", "all").selectAll(".resize").style("display", n.empty() ? "none" : null), oa.select("body").style("cursor", null), q.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null), z(), w({
type: "brushend"
});
}
var M,
x,
b = this,
_ = oa.select(oa.event.target),
w = l.of(b, arguments),
k = oa.select(b),
N = _.datum(),
E = !/^(n|s)$/.test(N) && c,
A = !/^(e|w)$/.test(N) && s,
C = _.classed("extent"),
z = W(b),
L = oa.mouse(b),
q = oa.select(t(b)).on("keydown.brush", i).on("keyup.brush", v);
if (oa.event.changedTouches ? q.on("touchmove.brush", d).on("touchend.brush", y) : q.on("mousemove.brush", d).on("mouseup.brush", y), k.interrupt().selectAll("*").interrupt(), C) L[0] = f[0] - L[0], L[1] = h[0] - L[1];else if (N) {
var T = +/w$/.test(N),
R = +/^n/.test(N);
x = [f[1 - T] - L[0], h[1 - R] - L[1]], L[0] = f[T], L[1] = h[R];
} else oa.event.altKey && (M = L.slice());
k.style("pointer-events", "none").selectAll(".resize").style("display", null), oa.select("body").style("cursor", _.style("cursor")), w({
type: "brushstart"
}), d();
}
var a,
o,
l = N(n, "brushstart", "brush", "brushend"),
c = null,
s = null,
f = [0, 0],
h = [0, 0],
g = !0,
p = !0,
v = $l[0];
return n.event = function (n) {
n.each(function () {
var n = l.of(this, arguments),
t = {
x: f,
y: h,
i: a,
j: o
},
e = this.__chart__ || t;
this.__chart__ = t, Fl ? oa.select(this).transition().each("start.brush", function () {
a = e.i, o = e.j, f = e.x, h = e.y, n({
type: "brushstart"
});
}).tween("brush:brush", function () {
var e = xr(f, t.x),
r = xr(h, t.y);
return a = o = null, function (u) {
f = t.x = e(u), h = t.y = r(u), n({
type: "brush",
mode: "resize"
});
};
}).each("end.brush", function () {
a = t.i, o = t.j, n({
type: "brush",
mode: "resize"
}), n({
type: "brushend"
});
}) : (n({
type: "brushstart"
}), n({
type: "brush",
mode: "resize"
}), n({
type: "brushend"
}));
});
}, n.x = function (t) {
return arguments.length ? (c = t, v = $l[!c << 1 | !s], n) : c;
}, n.y = function (t) {
return arguments.length ? (s = t, v = $l[!c << 1 | !s], n) : s;
}, n.clamp = function (t) {
return arguments.length ? (c && s ? (g = !!t[0], p = !!t[1]) : c ? g = !!t : s && (p = !!t), n) : c && s ? [g, p] : c ? g : s ? p : null;
}, n.extent = function (t) {
var e, r, u, i, l;
return arguments.length ? (c && (e = t[0], r = t[1], s && (e = e[0], r = r[0]), a = [e, r], c.invert && (e = c(e), r = c(r)), e > r && (l = e, e = r, r = l), (e != f[0] || r != f[1]) && (f = [e, r])), s && (u = t[0], i = t[1], c && (u = u[1], i = i[1]), o = [u, i], s.invert && (u = s(u), i = s(i)), u > i && (l = u, u = i, i = l), (u != h[0] || i != h[1]) && (h = [u, i])), n) : (c && (a ? (e = a[0], r = a[1]) : (e = f[0], r = f[1], c.invert && (e = c.invert(e), r = c.invert(r)), e > r && (l = e, e = r, r = l))), s && (o ? (u = o[0], i = o[1]) : (u = h[0], i = h[1], s.invert && (u = s.invert(u), i = s.invert(i)), u > i && (l = u, u = i, i = l))), c && s ? [[e, u], [r, i]] : c ? [e, r] : s && [u, i]);
}, n.clear = function () {
return n.empty() || (f = [0, 0], h = [0, 0], a = o = null), n;
}, n.empty = function () {
return !!c && f[0] == f[1] || !!s && h[0] == h[1];
}, oa.rebind(n, l, "on");
};
var Xl = {
n: "ns-resize",
e: "ew-resize",
s: "ns-resize",
w: "ew-resize",
nw: "nwse-resize",
ne: "nesw-resize",
se: "nwse-resize",
sw: "nesw-resize"
},
$l = [["n", "e", "s", "w", "nw", "ne", "se", "sw"], ["e", "w"], ["n", "s"], []],
Bl = ho.format = Mo.timeFormat,
Wl = Bl.utc,
Jl = Wl("%Y-%m-%dT%H:%M:%S.%LZ");
Bl.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? ea : Jl, ea.parse = function (n) {
var t = new Date(n);
return isNaN(t) ? null : t;
}, ea.toString = Jl.toString, ho.second = On(function (n) {
return new go(1e3 * Math.floor(n / 1e3));
}, function (n, t) {
n.setTime(n.getTime() + 1e3 * Math.floor(t));
}, function (n) {
return n.getSeconds();
}), ho.seconds = ho.second.range, ho.seconds.utc = ho.second.utc.range, ho.minute = On(function (n) {
return new go(6e4 * Math.floor(n / 6e4));
}, function (n, t) {
n.setTime(n.getTime() + 6e4 * Math.floor(t));
}, function (n) {
return n.getMinutes();
}), ho.minutes = ho.minute.range, ho.minutes.utc = ho.minute.utc.range, ho.hour = On(function (n) {
var t = n.getTimezoneOffset() / 60;
return new go(36e5 * (Math.floor(n / 36e5 - t) + t));
}, function (n, t) {
n.setTime(n.getTime() + 36e5 * Math.floor(t));
}, function (n) {
return n.getHours();
}), ho.hours = ho.hour.range, ho.hours.utc = ho.hour.utc.range, ho.month = On(function (n) {
return n = ho.day(n), n.setDate(1), n;
}, function (n, t) {
n.setMonth(n.getMonth() + t);
}, function (n) {
return n.getMonth();
}), ho.months = ho.month.range, ho.months.utc = ho.month.utc.range;
var Gl = [1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6],
Kl = [[ho.second, 1], [ho.second, 5], [ho.second, 15], [ho.second, 30], [ho.minute, 1], [ho.minute, 5], [ho.minute, 15], [ho.minute, 30], [ho.hour, 1], [ho.hour, 3], [ho.hour, 6], [ho.hour, 12], [ho.day, 1], [ho.day, 2], [ho.week, 1], [ho.month, 1], [ho.month, 3], [ho.year, 1]],
Ql = Bl.multi([[".%L", function (n) {
return n.getMilliseconds();
}], [":%S", function (n) {
return n.getSeconds();
}], ["%I:%M", function (n) {
return n.getMinutes();
}], ["%I %p", function (n) {
return n.getHours();
}], ["%a %d", function (n) {
return n.getDay() && 1 != n.getDate();
}], ["%b %d", function (n) {
return 1 != n.getDate();
}], ["%B", function (n) {
return n.getMonth();
}], ["%Y", zt]]),
nc = {
range: function range(n, t, e) {
return oa.range(Math.ceil(n / e) * e, +t, e).map(ua);
},
floor: y,
ceil: y
};
Kl.year = ho.year, ho.scale = function () {
return ra(oa.scale.linear(), Kl, Ql);
};
var tc = Kl.map(function (n) {
return [n[0].utc, n[1]];
}),
ec = Wl.multi([[".%L", function (n) {
return n.getUTCMilliseconds();
}], [":%S", function (n) {
return n.getUTCSeconds();
}], ["%I:%M", function (n) {
return n.getUTCMinutes();
}], ["%I %p", function (n) {
return n.getUTCHours();
}], ["%a %d", function (n) {
return n.getUTCDay() && 1 != n.getUTCDate();
}], ["%b %d", function (n) {
return 1 != n.getUTCDate();
}], ["%B", function (n) {
return n.getUTCMonth();
}], ["%Y", zt]]);
tc.year = ho.year.utc, ho.scale.utc = function () {
return ra(oa.scale.linear(), tc, ec);
}, oa.text = An(function (n) {
return n.responseText;
}), oa.json = function (n, t) {
return Cn(n, "application/json", ia, t);
}, oa.html = function (n, t) {
return Cn(n, "text/html", aa, t);
}, oa.xml = An(function (n) {
return n.responseXML;
}), "function" == typeof define && define.amd ? (this.d3 = oa, define(oa)) : "object" == (typeof module === "undefined" ? "undefined" : _typeof(module)) && module.exports ? module.exports = oa : this.d3 = oa;
}();