1 !
function(){
function n(n,t){
return t>n?-1:n>t?1:n>=t?0:0/0}
function t(n){
return null!=n&&!isNaN(n)}
function e(n){
return{left:
function(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(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 r(n){
return n.length}
function u(n){
for(var t=1;n*t%1;)t*=10;
return t}
function i(n,t){
try{
for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}
catch(r){n.prototype=t}}
function o(){}
function a(n){
return ia+n in
this}
function c(n){
return n=ia+n,n in
this&&
delete this[n]}
function s(){var n=[];
return this.forEach(
function(t){n.push(t)}),n}
function l(){var n=0;
for(var t in
this)t.charCodeAt(0)===oa&&++n;
return n}
function f(){
for(var n in
this)
if(n.charCodeAt(0)===oa)
return!1;
return!0}
function h(){}
function g(n,t,e){
return function(){var r=e.apply(t,arguments);
return r===t?n:r}}
function p(n,t){
if(t in n)
return t;t=t.charAt(0).toUpperCase()+t.substring(1);
for(var e=0,r=aa.length;r>e;++e){var u=aa[e]+t;
if(u in n)
return u}}
function v(){}
function d(){}
function m(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 o;
return t.on=
function(t,u){var i,o=r.get(t);
return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}
function y(){Zo.event.preventDefault()}
function x(){
for(var n,t=Zo.event;n=t.sourceEvent;)t=n;
return t}
function M(n){
for(var t=
new d,e=0,r=arguments.length;++e<r;)t[arguments[e]]=m(t);
return t.of=
function(e,r){
return function(u){
try{var i=u.sourceEvent=Zo.event;u.target=n,Zo.event=u,t[u.type].apply(e,r)}
finally{Zo.event=i}}},t}
function _(n){
return sa(n,pa),n}
function b(n){
return"function"==typeof n?n:
function(){
return la(n,
this)}}
function w(n){
return"function"==typeof n?n:
function(){
return fa(n,
this)}}
function S(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 o(){var e=t.apply(
this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(
this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=Zo.ns.qualify(n),null==t?n.local?r:e:
"function"==typeof t?n.local?a:o:n.local?i:u}function k(n){
return n.trim().replace(/\s+/g,
" ")}
function E(n){
return new RegExp(
"(?:^|\\s+)"+Zo.requote(n)+
"(?:\\s+|$)",
"g")}
function A(n){
return(n+
"").trim().split(/^|\s+/)}
function C(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=A(n).map(N);var u=n.length;
return"function"==typeof t?r:e}
function N(n){var t=E(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",k(u+
" "+n))):e.setAttribute(
"class",k(u.replace(t,
" ")))}}
function z(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 L(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 T(n){
return"function"==typeof n?n:(n=Zo.ns.qualify(n)).local?
function(){
return this.ownerDocument.createElementNS(n.space,n.local)}:
function(){
return this.ownerDocument.createElementNS(this.namespaceURI,n)}}
function q(n){
return{__data__:n}}
function R(n){
return function(){
return ga(
this,n)}}
function D(t){
return arguments.length||(t=n),
function(n,e){
return n&&e?t(n.__data__,e.__data__):!n-!e}}function P(n,t){
for(var e=0,r=n.length;r>e;e++)
for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);
return n}
function U(n){
return sa(n,da),n}
function j(n){var t,e;
return function(r,u,i){var o,a=n[i].update,c=a.length;
for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);
return o}}
function H(){var n=this.__transition__;n&&++n.active}
function F(n,t,e){
function r(){var t=
this[o];t&&(this.removeEventListener(n,t,t.$),
delete this[o])}
function u(){var u=c(t,Xo(arguments));r.call(
this),this.addEventListener(n,
this[o]=u,u.$=e),u._=t}
function i(){var t,e=
new RegExp(
"^__on([^.]+)"+Zo.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 o=
"__on"+n,a=n.indexOf(
"."),c=O;a>0&&(n=n.substring(0,a));var s=ya.get(n);
return s&&(n=s,c=Y),a?t?u:r:t?v:i}
function O(n,t){
return function(e){var r=Zo.event;Zo.event=e,t[0]=this.__data__;
try{n.apply(
this,t)}
finally{Zo.event=r}}}
function Y(n,t){var e=O(n,t);
return function(n){var t=
this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}
function I(){var n=
".dragsuppress-"+ ++Ma,t=
"click"+n,e=Zo.select(Wo).on(
"touchmove"+n,y).on(
"dragstart"+n,y).on(
"selectstart"+n,y);
if(xa){var r=Bo.style,u=r[xa];r[xa]=
"none"}
return function(i){
function o(){e.on(t,null)}e.on(n,null),xa&&(r[xa]=u),i&&(e.on(t,
function(){y(),o()},!0),setTimeout(o,0))}}
function Z(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;
if(e.createSVGPoint){var r=e.createSVGPoint();
if(0>_a&&(Wo.scrollX||Wo.scrollY)){e=Zo.select(
"body").append(
"svg").style({position:
"absolute",top:0,left:0,margin:0,padding:0,border:
"none"},
"important");var u=e[0][0].getScreenCTM();_a=!(u.f||u.e),e.remove()}
return _a?(r.x=t.pageX,r.y=t.pageY):(r.x=t.clientX,r.y=t.clientY),r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var i=n.getBoundingClientRect();
return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}
function V(){
return Zo.event.changedTouches[0].identifier}
function X(){
return Zo.event.target}
function $(){
return Wo}
function B(n){
return n>0?1:0>n?-1:0}
function W(n,t,e){
return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}
function J(n){
return n>1?0:-1>n?ba:Math.acos(n)}
function G(n){
return n>1?Sa:-1>n?-Sa:Math.asin(n)}
function K(n){
return((n=Math.exp(n))-1/n)/2}
function Q(n){
return((n=Math.exp(n))+1/n)/2}
function nt(n){
return((n=Math.exp(2*n))-1)/(n+1)}
function tt(n){
return(n=Math.sin(n/2))*n}
function et(){}
function rt(n,t,e){
return this instanceof rt?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof rt?
new rt(n.h,n.s,n.l):mt(
""+n,yt,rt):new rt(n,t,e)}function ut(n,t,e){
function r(n){
return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}
function u(n){
return Math.round(255*r(n))}var i,o;
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,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,
new gt(u(n+120),u(n),u(n-120))}
function it(n,t,e){
return this instanceof it?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof it?
new it(n.h,n.c,n.l):n instanceof at?st(n.l,n.a,n.b):st((n=xt((n=Zo.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new it(n,t,e)}function ot(n,t,e){
return isNaN(n)&&(n=0),isNaN(t)&&(t=0),
new at(e,Math.cos(n*=Aa)*t,Math.sin(n)*t)}
function at(n,t,e){
return this instanceof at?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof at?
new at(n.l,n.a,n.b):n instanceof it?ot(n.l,n.c,n.h):xt((n=gt(n)).r,n.g,n.b):new at(n,t,e)}function ct(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;
return u=lt(u)*ja,r=lt(r)*Ha,i=lt(i)*Fa,
new gt(ht(3.2404542*u-1.5371385*r-.4985314*i),ht(-.969266*u+1.8760108*r+.041556*i),ht(.0556434*u-.2040259*r+1.0572252*i))}
function st(n,t,e){
return n>0?
new it(Math.atan2(e,t)*Ca,Math.sqrt(t*t+e*e),n):
new it(0/0,0/0,n)}
function lt(n){
return n>.206893034?n*n*n:(n-4/29)/7.787037}
function ft(n){
return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}
function ht(n){
return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}
function gt(n,t,e){
return this instanceof gt?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof gt?
new gt(n.r,n.g,n.b):mt(
""+n,gt,ut):new gt(n,t,e)}function pt(n){
return new gt(n>>16,255&n>>8,255&n)}
function vt(n){
return pt(n)+
""}
function dt(n){
return 16>n?
"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}
function mt(n,t,e){var r,u,i,o=0,a=0,c=0;
if(r=/([a-z]+)\((.*)\)/i.exec(n))
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(_t(u[0]),_t(u[1]),_t(u[2]))}
return(i=Ia.get(n))?t(i.r,i.g,i.b):(null==n||
"#"!==n.charAt(0)||isNaN(i=parseInt(n.substring(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}
function yt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;
return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),new rt(r,u,c)}function xt(n,t,e){n=Mt(n),t=Mt(t),e=Mt(e);var r=ft((.4124564*n+.3575761*t+.1804375*e)/ja),u=ft((.2126729*n+.7151522*t+.072175*e)/Ha),i=ft((.0193339*n+.119192*t+.9503041*e)/Fa);
return at(116*u-16,500*(r-u),200*(u-i))}
function Mt(n){
return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}
function _t(n){var t=parseFloat(n);
return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}
function bt(n){
return"function"==typeof n?n:
function(){
return n}}
function wt(n){
return n}
function St(n){
return function(t,e,r){
return 2===arguments.length&&
"function"==typeof e&&(r=e,e=null),kt(t,e,n,r)}}
function kt(n,t,e,r){
function u(){var n,t=c.status;
if(!t&&c.responseText||t>=200&&300>t||304===t){
try{n=e.call(i,c)}
catch(r){
return o.error.call(i,r),
void 0}o.load.call(i,n)}
else o.error.call(i,c)}var i={},o=Zo.dispatch(
"beforesend",
"progress",
"load",
"error"),a={},c=
new XMLHttpRequest,s=null;
return!Wo.XDomainRequest||
"withCredentials"in c||!/^(http(s)?:)?\/\
2 return t.precision=
function(n){
return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}
function Ge(n){var t=Je(
function(t,e){
return n([t*Ca,e*Ca])});
return function(n){
return er(t(n))}}
function Ke(n){this.stream=n}
function Qe(n,t){
return{point:t,sphere:
function(){n.sphere()},lineStart:
function(){n.lineStart()},lineEnd:
function(){n.lineEnd()},polygonStart:
function(){n.polygonStart()},polygonEnd:
function(){n.polygonEnd()}}}
function nr(n){
return tr(
function(){
return n})()}
function tr(n){
function t(n){
return n=a(n[0]*Aa,n[1]*Aa),[n[0]*h+c,s-n[1]*h]}
function e(n){
return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*Ca,n[1]*Ca]}
function r(){a=je(o=ir(m,y,x),i);var n=i(v,d);
return c=g-n[0]*h,s=p+n[1]*h,u()}
function u(){
return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=Je(
function(n,t){
return n=i(n,t),[n[0]*h+c,s-n[1]*h]}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Sc,_=wt,b=null,w=null;
return t.stream=
function(n){
return l&&(l.valid=!1),l=er(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=
function(n){
return arguments.length?(M=null==n?(b=n,Sc):De((b=+n)*Aa),u()):b},t.clipExtent=
function(n){
return arguments.length?(w=n,_=n?Ue(n[0][0],n[0][1],n[1][0],n[1][1]):wt,u()):w},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*Aa,d=n[1]%360*Aa,r()):[v*Ca,d*Ca]},t.rotate=
function(n){
return arguments.length?(m=n[0]%360*Aa,y=n[1]%360*Aa,x=n.length>2?n[2]%360*Aa:0,r()):[m*Ca,y*Ca,x*Ca]},Zo.rebind(t,f,
"precision"),
function(){
return i=n.apply(
this,arguments),t.invert=i.invert&&e,r()}}
function er(n){
return Qe(n,
function(t,e){n.point(t*Aa,e*Aa)})}
function rr(n,t){
return[n,t]}
function ur(n,t){
return[n>ba?n-wa:-ba>n?n+wa:n,t]}
function ir(n,t,e){
return n?t||e?je(ar(n),cr(t,e)):ar(n):t||e?cr(t,e):ur}function or(n){
return function(t,e){
return t+=n,[t>ba?t-wa:-ba>t?t+wa:t,e]}}
function ar(n){var t=or(n);
return t.invert=or(-n),t}
function cr(n,t){
function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;
return[Math.atan2(c*i-l*o,a*r-s*u),G(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);
return e.invert=
function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;
return[Math.atan2(c*i+s*o,a*r+l*u),G(l*r-a*u)]},e}
function sr(n,t){var e=Math.cos(n),r=Math.sin(n);
return function(u,i,o,a){var c=o*t;null!=u?(u=lr(e,u),i=lr(e,i),(o>0?i>u:u>i)&&(u+=o*wa)):(u=n+o*wa,i=n-.5*c);
for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=de([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}
function lr(n,t){var e=le(t);e[0]-=n,ve(e);var r=J(-e[1]);
return((-e[2]<0?-r:r)+2*Math.PI-ka)%(2*Math.PI)}
function fr(n,t,e){var r=Zo.range(n,t-ka,e).concat(t);
return function(n){
return r.map(
function(t){
return[n,t]})}}
function hr(n,t,e){var r=Zo.range(n,t-ka,e).concat(t);
return function(n){
return r.map(
function(t){
return[t,n]})}}
function gr(n){
return n.source}
function pr(n){
return n.target}
function vr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(tt(r-t)+u*o*tt(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*c+t*l,u=e*s+t*f,o=e*i+t*a;
return[Math.atan2(u,r)*Ca,Math.atan2(o,Math.sqrt(r*r+u*u))*Ca]}:
function(){
return[n*Ca,t*Ca]};
return p.distance=h,p}
function dr(){
function n(n,u){var i=Math.sin(u*=Aa),o=Math.cos(u),a=ua((n*=Aa)-t),c=Math.cos(a);Dc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Pc.point=
function(u,i){t=u*Aa,e=Math.sin(i*=Aa),r=Math.cos(i),Pc.point=n},Pc.lineEnd=
function(){Pc.point=Pc.lineEnd=v}}
function mr(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),o=Math.cos(u);
return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}
function yr(n,t){
function e(n,t){o>0?-Sa+ka>t&&(t=-Sa+ka):t>Sa-ka&&(t=Sa-ka);var e=o/Math.pow(u(t),i);
return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=
function(n){
return Math.tan(ba/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;
return i?(e.invert=
function(n,t){var e=o-t,r=B(i)*Math.sqrt(n*n+e*e);
return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-Sa]},e):Mr}function xr(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 ua(u)<ka?rr:(e.invert=
function(n,t){var e=i-t;
return[Math.atan2(n,e)/u,i-B(u)*Math.sqrt(n*n+e*e)]},e)}
function Mr(n,t){
return[n,Math.log(Math.tan(ba/4+t/2))]}
function _r(n){var t,e=nr(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 o=i.apply(e,arguments);
if(o===e){
if(t=null==n){var a=ba*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}
else t&&(o=null);
return o},e.clipExtent(null)}
function br(n,t){
return[Math.log(Math.tan(ba/4+t/2)),-n]}
function wr(n){
return n[0]}
function Sr(n){
return n[1]}
function kr(n){
for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){
for(;r>1&&W(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}
return e.slice(0,r)}
function Er(n,t){
return n[0]-t[0]||n[1]-t[1]}
function Ar(n,t,e){
return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}
function Cr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);
return[u+h*o,c+h*l]}
function Nr(n){var t=n[0],e=n[n.length-1];
return!(t[0]-e[0]||t[1]-e[1])}
function zr(){Gr(
this),this.edge=this.site=this.circle=null}
function Lr(n){var t=Bc.pop()||
new zr;
return t.site=n,t}
function Tr(n){Yr(n),Vc.remove(n),Bc.push(n),Gr(n)}
function qr(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Tr(n);
for(var c=i;c.circle&&ua(e-c.circle.x)<ka&&ua(r-c.circle.cy)<ka;)i=c.P,a.unshift(c),Tr(c),c=i;a.unshift(c),Yr(c);
for(var s=o;s.circle&&ua(e-s.circle.x)<ka&&ua(r-s.circle.cy)<ka;)o=s.N,a.push(s),Tr(s),s=o;a.push(s),Yr(s);var l,f=a.length;
for(l=1;f>l;++l)s=a[l],c=a[l-1],Br(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Xr(c.site,s.site,null,u),Or(c),Or(s)}
function Rr(n){
for(var t,e,r,u,i=n.x,o=n.y,a=Vc._;a;)
if(r=Dr(a,o)-i,r>ka)a=a.L;
else{
if(u=i-Pr(a,o),!(u>ka)){r>-ka?(t=a.P,e=a):u>-ka?(t=a,e=a.N):t=e=a;
break}
if(!a.R){t=a;
break}a=a.R}var c=Lr(n);
if(Vc.insert(t,c),t||e){
if(t===e)
return Yr(t),e=Lr(t.site),Vc.insert(c,e),c.edge=e.edge=Xr(t.site,c.site),Or(t),Or(e),
void 0;
if(!e)
return c.edge=Xr(t.site,c.site),
void 0;Yr(t),Yr(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};Br(e.edge,s,p,M),c.edge=Xr(s,n,null,M),e.edge=Xr(n,p,null,M),Or(t),Or(e)}}
function Dr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;
if(!i)
return r;var o=n.P;
if(!o)
return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;
if(!s)
return a;var l=a-r,f=1/i-1/s,h=l/s;
return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}
function Pr(n,t){var e=n.N;
if(e)
return Dr(e,t);var r=n.site;
return r.y===t?r.x:1/0}
function Ur(n){this.site=n,this.edges=[]}
function jr(n){
for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Zc,d=v.length;d--;)
if(i=v[d],i&&i.prepare())
for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(ua(r-t)>ka||ua(u-e)>ka)&&(a.splice(o,0,
new Wr($r(i.site,l,ua(r-f)<ka&&p-u>ka?{x:f,y:ua(t-f)<ka?e:p}:ua(u-p)<ka&&h-r>ka?{x:ua(e-p)<ka?t:h,y:p}:ua(r-h)<ka&&u-g>ka?{x:h,y:ua(t-h)<ka?e:g}:ua(u-g)<ka&&r-f>ka?{x:ua(e-g)<ka?t:f,y:g}:null),i.site,null)),++c)}
function Hr(n,t){
return t.angle-n.angle}
function Fr(){Gr(
this),this.x=this.y=this.arc=this.site=this.cy=null}
function Or(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 o=u.x,a=u.y,c=r.x-o,s=r.y-a,l=i.x-o,f=i.y-a,h=2*(c*f-s*l);
if(!(h>=-Ea)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=Wc.pop()||
new Fr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;
for(var y=null,x=$c._;x;)
if(m.y<x.y||m.y===x.y&&m.x<=x.x){
if(!x.L){y=x.P;
break}x=x.L}
else{
if(!x.R){y=x;
break}x=x.R}$c.insert(y,m),y||(Xc=m)}}}}
function Yr(n){var t=n.circle;t&&(t.P||(Xc=t.N),$c.remove(t),Wc.push(t),Gr(t),n.circle=null)}
function Ir(n){
for(var t,e=Ic,r=Pe(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Zr(t,n)||!r(t)||ua(t.a.x-t.b.x)<ka&&ua(t.a.y-t.b.y)<ka)&&(t.a=t.b=null,e.splice(u,1))}
function Zr(n,t){var e=n.b;
if(e)
return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],s=t[1][1],l=n.l,f=n.r,h=l.x,g=l.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;
if(v===g){
if(o>d||d>=a)
return;
if(h>p){
if(i){
if(i.y>=s)
return}
else i={x:d,y:c};e={x:d,y:s}}
else{
if(i){
if(i.y<c)
return}
else i={x:d,y:s};e={x:d,y:c}}}
else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)
if(h>p){
if(i){
if(i.y>=s)
return}
else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}
else{
if(i){
if(i.y<c)
return}
else i={x:(s-u)/r,y:s};e={x:(c-u)/r,y:c}}
else if(v>g){
if(i){
if(i.x>=a)
return}
else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}
else{
if(i){
if(i.x<o)
return}
else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}
return n.a=i,n.b=e,!0}
function Vr(n,t){this.l=n,this.r=t,this.a=this.b=null}
function Xr(n,t,e,r){var u=
new Vr(n,t);
return Ic.push(u),e&&Br(u,n,t,e),r&&Br(u,t,n,r),Zc[n.i].edges.push(
new Wr(u,n,t)),Zc[t.i].edges.push(
new Wr(u,t,n)),u}
function $r(n,t,e){var r=
new Vr(n,null);
return r.a=t,r.b=e,Ic.push(r),r}
function Br(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 Wr(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 Jr(){this._=null}
function Gr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}
function Kr(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 Qr(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 nu(n){
for(;n.L;)n=n.L;
return n}
function tu(n,t){var e,r,u,i=n.sort(eu).pop();
for(Ic=[],Zc=
new Array(n.length),Vc=
new Jr,$c=
new Jr;;)
if(u=Xc,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Zc[i.i]=
new Ur(i),Rr(i),e=i.x,r=i.y),i=n.pop();
else{
if(!u)
break;qr(u.arc)}t&&(Ir(t),jr(t));var o={cells:Zc,edges:Ic};
return Vc=$c=Ic=Zc=null,o}
function eu(n,t){
return t.y-n.y||t.x-n.x}
function ru(n,t,e){
return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}
function uu(n){
return n.x}
function iu(n){
return n.y}
function ou(){
return{leaf:!0,nodes:[],point:null,x:null,y:null}}
function au(n,t,e,r,u,i){
if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&au(n,c[0],e,r,o,a),c[1]&&au(n,c[1],o,r,u,a),c[2]&&au(n,c[2],e,a,o,i),c[3]&&au(n,c[3],o,a,u,i)}}
function cu(n,t){n=Zo.rgb(n),t=Zo.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;
return function(n){
return"#"+dt(Math.round(e+i*n))+dt(Math.round(r+o*n))+dt(Math.round(u+a*n))}}
function su(n,t){var e,r={},u={};
for(e in n)e in t?r[e]=hu(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 lu(n,t){
return t-=n=+n,
function(e){
return n+t*e}}
function fu(n,t){var e,r,u,i=Gc.lastIndex=Kc.lastIndex=0,o=-1,a=[],c=[];
for(n+=
"",t+=
"";(e=Gc.exec(n))&&(r=Kc.exec(t));)(u=r.index)>i&&(u=t.substring(i,u),a[o]?a[o]+=u:a[++o]=u),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,c.push({i:o,x:lu(e,r)})),i=Kc.lastIndex;
return i<t.length&&(u=t.substring(i),a[o]?a[o]+=u:a[++o]=u),a.length<2?c[0]?(t=c[0].x,
function(n){
return t(n)+
""}):
function(){
return t}:(t=c.length,
function(n){
for(var e,r=0;t>r;++r)a[(e=c[r]).i]=e.x(n);
return a.join(
"")})}
function hu(n,t){
for(var e,r=Zo.interpolators.length;--r>=0&&!(e=Zo.interpolators[r](n,t)););
return e}
function gu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);
for(e=0;a>e;++e)r.push(hu(n[e],t[e]));
for(;i>e;++e)u[e]=n[e];
for(;o>e;++e)u[e]=t[e];
return function(n){
for(e=0;a>e;++e)u[e]=r[e](n);
return u}}
function pu(n){
return function(t){
return 0>=t?0:t>=1?1:n(t)}}
function vu(n){
return function(t){
return 1-n(1-t)}}
function du(n){
return function(t){
return.5*(.5>t?n(2*t):2-n(2-2*t))}}function mu(n){
return n*n}
function yu(n){
return n*n*n}
function xu(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 Mu(n){
return function(t){
return Math.pow(t,n)}}
function _u(n){
return 1-Math.cos(n*Sa)}
function bu(n){
return Math.pow(2,10*(n-1))}
function wu(n){
return 1-Math.sqrt(1-n*n)}
function Su(n,t){var e;
return arguments.length<2&&(t=.45),arguments.length?e=t/wa*Math.asin(1/n):(n=1,e=t/4),
function(r){
return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*wa/t)}}
function ku(n){
return n||(n=1.70158),
function(t){
return t*t*((n+1)*t-n)}}
function Eu(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 Au(n,t){n=Zo.hcl(n),t=Zo.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;
return isNaN(o)&&(o=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 ot(e+i*n,r+o*n,u+a*n)+
""}}
function Cu(n,t){n=Zo.hsl(n),t=Zo.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;
return isNaN(o)&&(o=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 ut(e+i*n,r+o*n,u+a*n)+
""}}
function Nu(n,t){n=Zo.lab(n),t=Zo.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;
return function(n){
return ct(e+i*n,r+o*n,u+a*n)+
""}}
function zu(n,t){
return t-=n,
function(e){
return Math.round(n+t*e)}}
function Lu(n){var t=[n.a,n.b],e=[n.c,n.d],r=qu(t),u=Tu(t,e),i=qu(Ru(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]))*Ca,this.translate=[n.e,n.f],
this.scale=[r,i],
this.skew=i?Math.atan2(u,i)*Ca:0}
function Tu(n,t){
return n[0]*t[0]+n[1]*t[1]}
function qu(n){var t=Math.sqrt(Tu(n,n));
return t&&(n[0]/=t,n[1]/=t),t}
function Ru(n,t,e){
return n[0]+=e*t[0],n[1]+=e*t[1],n}
function Du(n,t){var e,r=[],u=[],i=Zo.transform(n),o=Zo.transform(t),a=i.translate,c=o.translate,s=i.rotate,l=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;
return a[0]!=c[0]||a[1]!=c[1]?(r.push(
"translate(",null,
",",null,
")"),u.push({i:1,x:lu(a[0],c[0])},{i:3,x:lu(a[1],c[1])})):c[0]||c[1]?r.push(
"translate("+c+
")"):r.push(
""),s!=l?(s-l>180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+
"rotate(",null,
")")-2,x:lu(s,l)})):l&&r.push(r.pop()+
"rotate("+l+
")"),f!=h?u.push({i:r.push(r.pop()+
"skewX(",null,
")")-2,x:lu(f,h)}):h&&r.push(r.pop()+
"skewX("+h+
")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+
"scale(",null,
",",null,
")"),u.push({i:e-4,x:lu(g[0],p[0])},{i:e-2,x:lu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+
"scale("+p+
")"),e=u.length,
function(n){
for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);
return r.join(
"")}}
function Pu(n,t){
return t=t-(n=+n)?1/(t-n):0,function(e){
return(e-n)*t}}
function Uu(n,t){
return t=t-(n=+n)?1/(t-n):0,function(e){
return Math.max(0,Math.min(1,(e-n)*t))}}
function ju(n){
for(var t=n.source,e=n.target,r=Fu(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 Hu(n){
for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;
return t.push(n),t}
function Fu(n,t){
if(n===t)
return n;
for(var e=Hu(n),r=Hu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();
return o}
function Ou(n){n.fixed|=2}
function Yu(n){n.fixed&=-7}
function Iu(n){n.fixed|=4,n.px=n.x,n.py=n.y}
function Zu(n){n.fixed&=-5}
function Vu(n,t,e){var r=0,u=0;
if(n.charge=0,!n.leaf)
for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Vu(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 s=t*e[n.point.index];n.charge+=n.pointCharge=s,r+=s*n.point.x,u+=s*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}
function Xu(n,t){
return Zo.rebind(n,t,
"sort",
"children",
"value"),n.nodes=n,n.links=Ku,n}
function $u(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 Bu(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,o=-1;++o<u;)e.push(i[o]);
for(;null!=(n=r.pop());)t(n)}
function Wu(n){
return n.children}
function Ju(n){
return n.value}
function Gu(n,t){
return t.value-n.value}
function Ku(n){
return Zo.merge(n.map(
function(n){
return(n.children||[]).map(
function(t){
return{source:n,target:t}})}))}
function Qu(n){
return n.x}
function ni(n){
return n.y}
function ti(n,t,e){n.y0=t,n.y=e}
function ei(n){
return Zo.range(n.length)}
function ri(n){
for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;
return r}
function ui(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 ii(n){
return n.reduce(oi,0)}
function oi(n,t){
return n+t[1]}
function ai(n,t){
return ci(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}
function ci(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 si(n){
return[Zo.min(n),Zo.max(n)]}
function li(n,t){
return n.value-t.value}
function fi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}
function hi(n,t){n._pack_next=t,t._pack_prev=n}
function gi(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 pi(n){
function t(n){l=Math.min(n.x-n.r,l),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)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;
if(e.forEach(vi),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))
for(i=e[2],yi(r,u,i),t(i),fi(r,i),r._pack_prev=i,fi(i,u),u=r._pack_next,o=3;s>o;o++){yi(r,u,i=e[o]);var p=0,v=1,d=1;
for(a=u._pack_next;a!==u;a=a._pack_next,v++)
if(gi(a,i)){p=1;
break}
if(1==p)
for(c=r._pack_prev;c!==a._pack_prev&&!gi(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?hi(r,u=a):hi(r=c,u),o--):(fi(r,i),u=i,t(i))}var m=(l+f)/2,y=(h+g)/2,x=0;
for(o=0;s>o;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(di)}}
function vi(n){n._pack_next=n._pack_prev=n}
function di(n){
delete n._pack_next,
delete n._pack_prev}
function mi(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,o=u.length;++i<o;)mi(u[i],t,e,r)}
function yi(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;
if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),s=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+s*i,e.y=n.y+c*i-s*u}
else e.x=n.x+r,e.y=n.y}
function xi(n,t){
return n.parent==t.parent?1:2}
function Mi(n){var t=n.children;
return t.length?t[0]:n.t}
function _i(n){var t,e=n.children;
return(t=e.length)?e[t-1]:n.t}
function bi(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 wi(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 Si(n,t,e){
return n.a.parent===t.parent?n.a:e}
function ki(n){
return 1+Zo.max(n,
function(n){
return n.y})}
function Ei(n){
return n.reduce(
function(n,t){
return n+t.x},0)/n.length}
function Ai(n){var t=n.children;
return t&&t.length?Ai(t[0]):n}function Ci(n){var t,e=n.children;
return e&&(t=e.length)?Ci(e[t-1]):n}function Ni(n){
return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}
function zi(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 Li(n){var t=n[0],e=n[n.length-1];
return e>t?[t,e]:[e,t]}
function Ti(n){
return n.rangeExtent?n.rangeExtent():Li(n.range())}
function qi(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 Ri(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];
return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}
function Di(n){
return n?{floor:
function(t){
return Math.floor(t/n)*n},ceil:
function(t){
return Math.ceil(t/n)*n}}:ss}
function Pi(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;
for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));
return function(t){var e=Zo.bisect(n,t,1,a)-1;
return i[e](u[e](t))}}
function Ui(n,t,e,r){
function u(){var u=Math.min(n.length,t.length)>2?Pi:qi,c=r?Uu:Pu;
return o=u(n,t,c,e),a=u(t,n,c,hu),i}
function i(n){
return o(n)}var o,a;
return i.invert=
function(n){
return a(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(zu)},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 Oi(n,t)},i.tickFormat=
function(t,e){
return Yi(n,t,e)},i.nice=
function(t){
return Hi(n,t),u()},i.copy=
function(){
return Ui(n,t,e,r)},u()}
function ji(n,t){
return Zo.rebind(n,t,
"range",
"rangeRound",
"interpolate",
"clamp")}
function Hi(n,t){
return Ri(n,Di(Fi(n,t)[2]))}
function Fi(n,t){null==t&&(t=10);var e=Li(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 Oi(n,t){
return Zo.range.apply(Zo,Fi(n,t))}
function Yi(n,t,e){var r=Fi(n,t);
if(e){var u=Ga.exec(e);
if(u.shift(),
"s"===u[8]){var i=Zo.formatPrefix(Math.max(ua(r[0]),ua(r[1])));
return u[7]||(u[7]=
"."+Ii(i.scale(r[2]))),u[8]=
"f",e=Zo.format(u.join(
"")),
function(n){
return e(i.scale(n))+i.symbol}}u[7]||(u[7]=
"."+Zi(u[8],r)),e=u.join(
"")}
else e=
",."+Ii(r[2])+
"f";
return Zo.format(e)}
function Ii(n){
return-Math.floor(Math.log(n)/Math.LN10+.01)}
function Zi(n,t){var e=Ii(t[2]);
return n in ls?Math.abs(e-Ii(Math.max(ua(t[0]),ua(t[1]))))+ +(
"e"!==n):e-2*(
"%"===n)}
function Vi(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 o(t){
return n(u(t))}
return o.invert=
function(t){
return i(n.invert(t))},o.domain=
function(t){
return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=
function(e){
return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=
function(){var t=Ri(r.map(u),e?Math:hs);
return n.domain(t),r=t.map(i),o},o.ticks=
function(){var n=Li(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;
if(isFinite(l-s)){
if(e){
for(;l>s;s++)
for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}
else for(o.push(i(s));s++<l;)
for(var h=f-1;h>0;h--)o.push(i(s)*h);
for(s=0;o[s]<a;s++);
for(l=o.length;o[l-1]>c;l--);o=o.slice(s,l)}
return o},o.tickFormat=
function(n,t){
if(!arguments.length)
return fs;arguments.length<2?t=fs:
"function"!=typeof t&&(t=Zo.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);
return function(n){
return n/i(c(u(n)+r))<=a?t(n):
""}},o.copy=function(){
return Vi(n.copy(),t,e,r)},ji(o,n)}
function Xi(n,t,e){
function r(t){
return n(u(t))}var u=$i(t),i=$i(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 Oi(e,n)},r.tickFormat=
function(n,t){
return Yi(e,n,t)},r.nice=
function(n){
return r.domain(Hi(e,n))},r.exponent=
function(o){
return arguments.length?(u=$i(t=o),i=$i(1/t),n.domain(e.map(u)),r):t},r.copy=
function(){
return Xi(n.copy(),t,e)},ji(r,n)}
function $i(n){
return function(t){
return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}
function Bi(n,t){
function e(e){
return i[((u.get(e)||(
"range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}
function r(t,e){
return Zo.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 o;
for(var i,a=-1,c=r.length;++a<c;)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 c=u[0],s=u[1],l=(s-c)/(Math.max(1,n.length-1)+o);
return i=r(n.length<2?(c+s)/2:c+l*o/2,l),a=0,t={t:
"rangePoints",a:arguments},e},e.rangeBands=
function(u,o,c){arguments.length<2&&(o=0),arguments.length<3&&(c=o);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=(f-l)/(n.length-o+2*c);
return i=r(l+h*c,h),s&&i.reverse(),a=h*(1-o),t={t:
"rangeBands",a:arguments},e},e.rangeRoundBands=
function(u,o,c){arguments.length<2&&(o=0),arguments.length<3&&(c=o);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=Math.floor((f-l)/(n.length-o+2*c)),g=f-l-(n.length-o)*h;
return i=r(l+Math.round(g/2),h),s&&i.reverse(),a=Math.round(h*(1-o)),t={t:
"rangeRoundBands",a:arguments},e},e.rangeBand=
function(){
return a},e.rangeExtent=
function(){
return Li(t.a[0])},e.copy=
function(){
return Bi(n,t)},e.domain(n)}
function Wi(e,r){
function u(){var n=0,t=r.length;
for(o=[];++n<t;)o[n-1]=Zo.quantile(e,n/t);
return i}
function i(n){
return isNaN(n=+n)?
void 0:r[Zo.bisect(o,n)]}var o;
return i.domain=
function(r){
return arguments.length?(e=r.filter(t).sort(n),u()):e},i.range=
function(n){
return arguments.length?(r=n,u()):r},i.quantiles=
function(){
return o},i.invertExtent=
function(n){
return n=r.indexOf(n),0>n?[0/0,0/0]:[n>0?o[n-1]:e[0],n<o.length?o[n]:e[e.length-1]]},i.copy=
function(){
return Wi(e,r)},u()}
function Ji(n,t,e){
function r(t){
return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}
function u(){
return i=e.length/(t-n),o=e.length-1,r}var i,o;
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?0/0:t/i+n,[t,t+1/i]},r.copy=
function(){
return Ji(n,t,e)},u()}
function Gi(n,t){
function e(e){
return e>=e?t[Zo.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 Gi(n,t)},e}
function Ki(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 Oi(n,t)},t.tickFormat=
function(t,e){
return Yi(n,t,e)},t.copy=
function(){
return Ki(n)},t}
function Qi(n){
return n.innerRadius}
function no(n){
return n.outerRadius}
function to(n){
return n.startAngle}
function eo(n){
return n.endAngle}
function ro(n){
function t(t){
function o(){s.push(
"M",i(n(l),a))}
for(var c,s=[],l=[],f=-1,h=t.length,g=bt(e),p=bt(r);++f<h;)u.call(
this,c=t[f],f)?l.push([+g.call(
this,c,f),+p.call(
this,c,f)]):l.length&&(o(),l=[]);
return l.length&&o(),s.length?s.join(
""):null}var e=wr,r=Sr,u=we,i=uo,o=i.key,a=.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?(o=
"function"==typeof n?i=n:(i=xs.get(n)||uo).key,t):o},t.tension=
function(n){
return arguments.length?(a=n,t):a},t}
function uo(n){
return n.join(
"L")}
function io(n){
return uo(n)+
"Z"}
function oo(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 ao(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 co(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 so(n,t){
return n.length<4?uo(n):n[1]+ho(n.slice(1,n.length-1),go(n,t))}function lo(n,t){
return n.length<3?uo(n):n[0]+ho((n.push(n[0]),n),go([n[n.length-2]].concat(n,[n[1]]),t))}function fo(n,t){
return n.length<3?uo(n):n[0]+ho(n,go(n,t))}function ho(n,t){
if(t.length<1||n.length!=t.length&&n.length!=t.length+2)
return uo(n);var e=n.length!=t.length,r=
"",u=n[0],i=n[1],o=t[0],a=o,c=1;
if(e&&(r+=
"Q"+(i[0]-2*o[0]/3)+
","+(i[1]-2*o[1]/3)+
","+i[0]+
","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+=
"C"+(u[0]+o[0])+
","+(u[1]+o[1])+
","+(i[0]-a[0])+
","+(i[1]-a[1])+
","+i[0]+
","+i[1];
for(var s=2;s<t.length;s++,c++)i=n[c],a=t[s],r+=
"S"+(i[0]-a[0])+
","+(i[1]-a[1])+
","+i[0]+
","+i[1]}
if(e){var l=n[c];r+=
"Q"+(i[0]+2*a[0]/3)+
","+(i[1]+2*a[1]/3)+
","+l[0]+
","+l[1]}
return r}
function go(n,t){
for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);
return r}
function po(n){
if(n.length<3)
return uo(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,
",",i,
"L",xo(bs,o),
",",xo(bs,a)];
for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Mo(c,o,a);
return n.pop(),c.push(
"L",r),c.join(
"")}
function vo(n){
if(n.length<4)
return uo(n);
for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);
for(e.push(xo(bs,i)+
","+xo(bs,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),Mo(e,i,o);
return e.join(
"")}
function mo(n){
for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);
for(t=[xo(bs,o),
",",xo(bs,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Mo(t,o,a);
return t.join(
"")}
function yo(n,t){var e=n.length-1;
if(e)
for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,s=-1;++s<=e;)r=n[s],u=s/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);
return po(n)}
function xo(n,t){
return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}
function Mo(n,t,e){n.push(
"C",xo(Ms,t),
",",xo(Ms,e),
",",xo(_s,t),
",",xo(_s,e),
",",xo(bs,t),
",",xo(bs,e))}
function _o(n,t){
return(t[1]-n[1])/(t[0]-n[0])}
function bo(n){
for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=_o(u,i);++t<e;)r[t]=(o+(o=_o(u=i,i=n[t+1])))/2;
return r[t]=o,r}
function wo(n){
for(var t,e,r,u,i=[],o=bo(n),a=-1,c=n.length-1;++a<c;)t=_o(n[a],n[a+1]),ua(t)<ka?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));
for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);
return i}
function So(n){
return n.length<3?uo(n):n[0]+ho(n,wo(n))}function ko(n){
for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]+ms,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);
return n}
function Eo(n){
function t(t){
function c(){v.push(
"M",a(n(m),f),l,s(n(d.reverse()),f),
"Z")}
for(var h,g,p,v=[],d=[],m=[],y=-1,x=t.length,M=bt(e),_=bt(u),b=e===r?
function(){
return g}:bt(r),w=u===i?
function(){
return p}:bt(i);++y<x;)o.call(
this,h=t[y],y)?(d.push([g=+M.call(
this,h,y),p=+_.call(
this,h,y)]),m.push([+b.call(
this,h,y),+w.call(
this,h,y)])):d.length&&(c(),d=[],m=[]);
return d.length&&c(),v.length?v.join(
""):null}var e=wr,r=wr,u=0,i=Sr,o=we,a=uo,c=a.key,s=a,l=
"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?(o=n,t):o},t.interpolate=
function(n){
return arguments.length?(c=
"function"==typeof n?a=n:(a=xs.get(n)||uo).key,s=a.reverse||a,l=a.closed?
"M":
"L",t):c},t.tension=
function(n){
return arguments.length?(f=n,t):f},t}
function Ao(n){
return n.radius}
function Co(n){
return[n.x,n.y]}
function No(n){
return function(){var t=n.apply(
this,arguments),e=t[0],r=t[1]+ms;
return[e*Math.cos(r),e*Math.sin(r)]}}
function zo(){
return 64}
function Lo(){
return"circle"}
function To(n){var t=Math.sqrt(n/ba);
return"M0,"+t+
"A"+t+
","+t+
" 0 1,1 0,"+-t+
"A"+t+
","+t+
" 0 1,1 0,"+t+
"Z"}
function qo(n,t){
return sa(n,Cs),n.id=t,n}
function Ro(n,t,e,r){var u=n.id;
return P(n,
"function"==typeof e?
function(n,i,o){n.__transition__[u].tween.set(t,r(e.call(n,n.__data__,i,o)))}:(e=r(e),
function(n){n.__transition__[u].tween.set(t,e)}))}
function Do(n){
return null==n&&(n=
""),
function(){this.textContent=n}}
function Po(n,t,e,r){var u=n.__transition__||(n.__transition__={active:0,count:0}),i=u[e];
if(!i){var a=r.time;i=u[e]={tween:
new o,time:a,ease:r.ease,delay:r.delay,duration:r.duration},++u.count,Zo.timer(
function(r){
function o(r){
return u.active>e?s():(u.active=e,i.event&&i.event.start.call(n,l,t),i.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Zo.timer(
function(){
return p.c=c(r||1)?we:c,1},0,a),
void 0)}
function c(r){
if(u.active!==e)
return s();
for(var o=r/g,a=f(o),c=v.length;c>0;)v[--c].call(n,a);
3 return o>=1?(i.event&&i.event.end.call(n,l,t),s()):
void 0}
function s(){
return--u.count?
delete u[e]:
delete n.__transition__,1}var l=n.__data__,f=i.ease,h=i.delay,g=i.duration,p=Ba,v=[];
return p.t=h+a,r>=h?o(r-h):(p.c=o,void 0)},0,a)}}function Uo(n,t){n.attr(
"transform",
function(n){
return"translate("+t(n)+
",0)"})}
function jo(n,t){n.attr(
"transform",
function(n){
return"translate(0,"+t(n)+
")"})}
function Ho(n){
return n.toISOString()}
function Fo(n,t,e){
function r(t){
return n(t)}
function u(n,e){var r=n[1]-n[0],u=r/e,i=Zo.bisect(Us,u);
return i==Us.length?[t.year,Fi(n.map(
function(n){
return n/31536e6}),e)[2]]:i?t[u/Us[i-1]<Us[i]/u?i-1:i]:[Fs,Fi(n,e)[2]]}
return r.invert=
function(t){
return Oo(n.invert(t))},r.domain=
function(t){
return arguments.length?(n.domain(t),r):n.domain().map(Oo)},r.nice=
function(n,t){
function e(e){
return!isNaN(e)&&!n.range(e,Oo(+e+1),t).length}var i=r.domain(),o=Li(i),a=null==n?u(o,10):
"number"==typeof n&&u(o,n);
return a&&(n=a[0],t=a[1]),r.domain(Ri(i,t>1?{floor:
function(t){
for(;e(t=n.floor(t));)t=Oo(t-1);
return t},ceil:
function(t){
for(;e(t=n.ceil(t));)t=Oo(+t+1);
return t}}:n))},r.ticks=
function(n,t){var e=Li(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],Oo(+e[1]+1),1>t?1:t)},r.tickFormat=
function(){
return e},r.copy=
function(){
return Fo(n.copy(),t,e)},ji(r,n)}
function Oo(n){
return new Date(n)}
function Yo(n){
return JSON.parse(n.responseText)}
function Io(n){var t=$o.createRange();
return t.selectNode($o.body),t.createContextualFragment(n.responseText)}var Zo={version:
"3.4.10"};Date.now||(Date.now=
function(){
return+
new Date});var Vo=[].slice,Xo=
function(n){
return Vo.call(n)},$o=document,Bo=$o.documentElement,Wo=window;
try{Xo(Bo.childNodes)[0].nodeType}
catch(Jo){Xo=
function(n){
for(var t=n.length,e=
new Array(t);t--;)e[t]=n[t];
return e}}
try{$o.createElement(
"div").style.setProperty(
"opacity",0,
"")}
catch(Go){var Ko=Wo.Element.prototype,Qo=Ko.setAttribute,na=Ko.setAttributeNS,ta=Wo.CSSStyleDeclaration.prototype,ea=ta.setProperty;Ko.setAttribute=
function(n,t){Qo.call(
this,n,t+
"")},Ko.setAttributeNS=
function(n,t,e){na.call(
this,n,t,e+
"")},ta.setProperty=
function(n,t,e){ea.call(
this,n,t+
"",e)}}Zo.ascending=n,Zo.descending=
function(n,t){
return n>t?-1:t>n?1:t>=n?0:0/0},Zo.min=
function(n,t){var e,r,u=-1,i=n.length;
if(1===arguments.length){
for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=
void 0;
for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}
else{
for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=
void 0;
for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}
return e},Zo.max=
function(n,t){var e,r,u=-1,i=n.length;
if(1===arguments.length){
for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=
void 0;
for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}
else{
for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=
void 0;
for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}
return e},Zo.extent=
function(n,t){var e,r,u,i=-1,o=n.length;
if(1===arguments.length){
for(;++i<o&&!(null!=(e=u=n[i])&&e>=e);)e=u=
void 0;
for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}
else{
for(;++i<o&&!(null!=(e=u=t.call(n,n[i],i))&&e>=e);)e=
void 0;
for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}
return[e,u]},Zo.sum=
function(n,t){var e,r=0,u=n.length,i=-1;
if(1===arguments.length)
for(;++i<u;)isNaN(e=+n[i])||(r+=e);
else for(;++i<u;)isNaN(e=+t.call(n,n[i],i))||(r+=e);
return r},Zo.mean=
function(n,e){var r,u=0,i=n.length,o=-1,a=i;
if(1===arguments.length)
for(;++o<i;)t(r=n[o])?u+=r:--a;
else for(;++o<i;)t(r=e.call(n,n[o],o))?u+=r:--a;
return a?u/a:
void 0},Zo.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},Zo.median=
function(e,r){
return arguments.length>1&&(e=e.map(r)),e=e.filter(t),e.length?Zo.quantile(e.sort(n),.5):
void 0};var ra=e(n);Zo.bisectLeft=ra.left,Zo.bisect=Zo.bisectRight=ra.right,Zo.bisector=
function(t){
return e(1===t.length?
function(e,r){
return n(t(e),r)}:t)},Zo.shuffle=
function(n){
for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;
return n},Zo.permute=
function(n,t){
for(var e=t.length,r=
new Array(e);e--;)r[e]=n[t[e]];
return r},Zo.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},Zo.zip=
function(){
if(!(u=arguments.length))
return[];
for(var n=-1,t=Zo.min(arguments,r),e=
new Array(t);++n<t;)
for(var u,i=-1,o=e[n]=
new Array(u);++i<u;)o[i]=arguments[i][n];
return e},Zo.transpose=
function(n){
return Zo.zip.apply(Zo,n)},Zo.keys=
function(n){var t=[];
for(var e in n)t.push(e);
return t},Zo.values=
function(n){var t=[];
for(var e in n)t.push(n[e]);
return t},Zo.entries=
function(n){var t=[];
for(var e in n)t.push({key:e,value:n[e]});
return t},Zo.merge=
function(n){
for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;
for(e=
new Array(o);--u>=0;)
for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];
return e};var ua=Math.abs;Zo.range=
function(n,t,e){
if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)
throw new Error(
"infinite range");var r,i=[],o=u(ua(e)),a=-1;
if(n*=o,t*=o,e*=o,0>e)
for(;(r=n+e*++a)>t;)i.push(r/o);
else for(;(r=n+e*++a)<t;)i.push(r/o);
return i},Zo.map=
function(n){var t=
new o;
if(n instanceof o)n.forEach(
function(n,e){t.set(n,e)});
else for(var e in n)t.set(e,n[e]);
return t},i(o,{has:a,
get:
function(n){
return this[ia+n]},set:
function(n,t){
return this[ia+n]=t},
remove:c,keys:s,values:
function(){var n=[];
return this.forEach(
function(t,e){n.push(e)}),n},entries:
function(){var n=[];
return this.forEach(
function(t,e){n.push({key:t,value:e})}),n},size:l,empty:f,forEach:
function(n){
for(var t in
this)t.charCodeAt(0)===oa&&n.call(
this,t.substring(1),
this[t])}});var ia=
"\x00",oa=ia.charCodeAt(0);Zo.nest=
function(){
function n(t,a,c){
if(c>=i.length)
return r?r.call(u,a):e?a.sort(e):a;
for(var s,l,f,h,g=-1,p=a.length,v=i[c++],d=
new o;++g<p;)(h=d.get(s=v(l=a[g])))?h.push(l):d.set(s,[l]);
return t?(l=t(),f=
function(e,r){l.set(e,n(t,r,c))}):(l={},f=
function(e,r){l[e]=n(t,r,c)}),d.forEach(f),l}
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(Zo.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},Zo.set=
function(n){var t=
new h;
if(n)
for(var e=0,r=n.length;r>e;++e)t.add(n[e]);
return t},i(h,{has:a,add:
function(n){
return this[ia+n]=!0,n},
remove:
function(n){
return n=ia+n,n in
this&&
delete this[n]},values:s,size:l,empty:f,forEach:
function(n){
for(var t in
this)t.charCodeAt(0)===oa&&n.call(
this,t.substring(1))}}),Zo.behavior={},Zo.rebind=
function(n,t){
for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=g(n,t,t[e]);
return n};var aa=[
"webkit",
"ms",
"moz",
"Moz",
"o",
"O"];Zo.dispatch=
function(){
for(var n=
new d,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=m(n);
return n},d.prototype.on=
function(n,t){var e=n.indexOf(
"."),r=
"";
if(e>=0&&(r=n.substring(e+1),n=n.substring(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}},Zo.event=null,Zo.requote=
function(n){
return n.replace(ca,
"\\$&")};var ca=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,sa={}.__proto__?
function(n,t){n.__proto__=t}:
function(n,t){
for(var e in t)n[e]=t[e]},la=
function(n,t){
return t.querySelector(n)},fa=
function(n,t){
return t.querySelectorAll(n)},ha=Bo.matches||Bo[p(Bo,
"matchesSelector")],ga=
function(n,t){
return ha.call(n,t)};
"function"==typeof Sizzle&&(la=
function(n,t){
return Sizzle(n,t)[0]||null},fa=Sizzle,ga=Sizzle.matchesSelector),Zo.selection=
function(){
return ma};var pa=Zo.selection.prototype=[];pa.select=
function(n){var t,e,r,u,i=[];n=b(n);
for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=
this[o]).parentNode;
for(var c=-1,s=r.length;++c<s;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&
"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}
return _(i)},pa.selectAll=
function(n){var t,e,r=[];n=w(n);
for(var u=-1,i=this.length;++u<i;)
for(var o=
this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=Xo(n.call(e,e.__data__,a,u))),t.parentNode=e);
return _(r)};var va={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/"};Zo.ns={prefix:va,qualify:
function(n){var t=n.indexOf(
":"),e=n;
return t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),va.hasOwnProperty(e)?{space:va[e],local:n}:n}},pa.attr=
function(n,t){
if(arguments.length<2){
if(
"string"==typeof n){var e=this.node();
return n=Zo.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}
for(t in n)this.each(S(t,n[t]));
return this}
return this.each(S(n,t))},pa.classed=
function(n,t){
if(arguments.length<2){
if(
"string"==typeof n){var e=this.node(),r=(n=A(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(!E(n[u]).test(t))
return!1;
return!0}
for(t in n)this.each(C(t,n[t]));
return this}
return this.each(C(n,t))},pa.style=
function(n,t,e){var r=arguments.length;
if(3>r){
if(
"string"!=typeof n){2>r&&(t=
"");
for(e in n)this.each(z(e,n[e],t));
return this}
if(2>r)
return Wo.getComputedStyle(this.node(),null).getPropertyValue(n);e=
""}
return this.each(z(n,t,e))},pa.property=
function(n,t){
if(arguments.length<2){
if(
"string"==typeof n)
return this.node()[n];
for(t in n)this.each(L(t,n[t]));
return this}
return this.each(L(n,t))},pa.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},pa.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},pa.append=
function(n){
return n=T(n),this.select(
function(){
return this.appendChild(n.apply(
this,arguments))})},pa.insert=
function(n,t){
return n=T(n),t=b(t),this.select(
function(){
return this.insertBefore(n.apply(
this,arguments),t.apply(
this,arguments)||null)})},pa.remove=
function(){
return this.each(
function(){var n=this.parentNode;n&&n.removeChild(
this)})},pa.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 o,y=
new o,x=[];
for(r=-1;++r<a;)d=t.call(u=n[r],u.__data__,r),m.has(d)?v[r]=u:m.set(d,u),x.push(d);
for(r=-1;++r<f;)d=t.call(e,i=e[r],r),(u=m.get(d))?(g[r]=u,u.__data__=i):y.has(d)||(p[r]=q(i)),y.set(d,i),m.remove(d);
for(r=-1;++r<a;)m.has(x[r])&&(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]=q(i);
for(;f>r;++r)p[r]=q(e[r]);
for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.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 c=U([]),s=_([]),l=_([]);
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 s.enter=
function(){
return c},s.exit=
function(){
return l},s},pa.datum=
function(n){
return arguments.length?this.property(
"__data__",n):this.property(
"__data__")},pa.filter=function(n){var t,e,r,u=[];
"function"!=typeof n&&(n=R(n));
for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=
this[i]).parentNode;
for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}
return _(u)},pa.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},pa.sort=
function(n){n=D.apply(
this,arguments);
for(var t=-1,e=this.length;++t<e;)
this[t].sort(n);
return this.order()},pa.each=
function(n){
return P(
this,
function(t,e,r){n.call(t,t.__data__,e,r)})},pa.call=
function(n){var t=Xo(arguments);
return n.apply(t[0]=
this,t),
this},pa.empty=
function(){
return!this.node()},pa.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},pa.size=
function(){var n=0;
return this.each(
function(){++n}),n};var da=[];Zo.selection.enter=U,Zo.selection.enter.prototype=da,da.append=pa.append,da.empty=pa.empty,da.node=pa.node,da.call=pa.call,da.size=pa.size,da.select=
function(n){
for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=
this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;
for(var s=-1,l=u.length;++s<l;)(i=u[s])?(t.push(r[s]=e=n.call(u.parentNode,i.__data__,s,a)),e.__data__=i.__data__):t.push(null)}
return _(o)},da.insert=
function(n,t){
return arguments.length<2&&(t=j(
this)),pa.insert.call(
this,n,t)},pa.transition=
function(){
for(var n,t,e=Ss||++Ns,r=[],u=ks||{time:Date.now(),ease:xu,delay:0,duration:250},i=-1,o=this.length;++i<o;){r.push(n=[]);
for(var a=
this[i],c=-1,s=a.length;++c<s;)(t=a[c])&&Po(t,c,e,u),n.push(t)}
return qo(r,e)},pa.interrupt=
function(){
return this.each(H)},Zo.select=
function(n){var t=[
"string"==typeof n?la(n,$o):n];
return t.parentNode=Bo,_([t])},Zo.selectAll=
function(n){var t=Xo(
"string"==typeof n?fa(n,$o):n);
return t.parentNode=Bo,_([t])};var ma=Zo.select(Bo);pa.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(F(e,n[e],t));
return this}
if(2>r)
return(r=this.node()[
"__on"+n])&&r._;e=!1}
return this.each(F(n,t,e))};var ya=Zo.map({mouseenter:
"mouseover",mouseleave:
"mouseout"});ya.forEach(
function(n){
"on"+n in $o&&ya.remove(n)});var xa=
"onselectstart"in $o?null:p(Bo.style,
"userSelect"),Ma=0;Zo.mouse=
function(n){
return Z(n,x())};var _a=/WebKit/.test(Wo.navigator.userAgent)?-1:0;Zo.touches=
function(n,t){
return arguments.length<2&&(t=x().touches),t?Xo(t).map(
function(t){var e=Z(n,t);
return e.identifier=t.identifier,e}):[]},Zo.behavior.drag=
function(){
function n(){this.on(
"mousedown.drag",u).on(
"touchstart.drag",i)}
function t(n,t,u,i,o){
return function(){
function a(){var n,e,r=t(h,v);r&&(n=r[0]-x[0],e=r[1]-x[1],p|=n|e,x=r,g({type:
"drag",x:r[0]+s[0],y:r[1]+s[1],dx:n,dy:e}))}
function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&Zo.event.target===f),g({type:
"dragend"}))}var s,l=
this,f=Zo.event.target,h=l.parentNode,g=e.of(l,arguments),p=0,v=n(),d=
".drag"+(null==v?
"":
"-"+v),m=Zo.select(u()).on(i+d,a).on(o+d,c),y=I(),x=t(h,v);r?(s=r.apply(l,arguments),s=[s.x-x[0],s.y-x[1]]):s=[0,0],g({type:
"dragstart"})}}var e=M(n,
"drag",
"dragstart",
"dragend"),r=null,u=t(v,Zo.mouse,$,
"mousemove",
"mouseup"),i=t(V,Zo.touch,X,
"touchmove",
"touchend");
return n.origin=
function(t){
return arguments.length?(r=t,n):r},Zo.rebind(n,e,
"on")};var ba=Math.PI,wa=2*ba,Sa=ba/2,ka=1e-6,Ea=ka*ka,Aa=ba/180,Ca=180/ba,Na=Math.SQRT2,za=2,La=4;Zo.interpolateZoom=
function(n,t){
function e(n){var t=n*y;
if(m){var e=Q(v),o=i/(za*h)*(e*nt(Na*t+v)-K(v));
return[r+o*s,u+o*l,i*e/Q(Na*t+v)]}
return[r+n*s,u+n*l,i*Math.exp(Na*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+La*f)/(2*i*za*h),p=(c*c-i*i-La*f)/(2*c*za*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Na;
return e.duration=1e3*y,e},Zo.behavior.zoom=
function(){
function n(n){n.on(A,s).on(Ra+
".zoom",f).on(
"dblclick.zoom",h).on(z,l)}
function t(n){
return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}
function e(n){
return[n[0]*S.k+S.x,n[1]*S.k+S.y]}
function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}
function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}
function i(){_&&_.domain(x.range().map(
function(n){
return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(b.range().map(
function(n){
return(n-S.y)/S.k}).map(b.invert))}
function o(n){n({type:
"zoomstart"})}
function a(n){i(),n({type:
"zoom",scale:S.k,translate:[S.x,S.y]})}
function c(n){n({type:
"zoomend"})}
function s(){
function n(){l=1,u(Zo.mouse(r),h),a(s)}
function e(){f.on(C,null).on(N,null),g(l&&Zo.event.target===i),c(s)}var r=
this,i=Zo.event.target,s=L.of(r,arguments),l=0,f=Zo.select(Wo).on(C,n).on(N,e),h=t(Zo.mouse(r)),g=I();H.call(r),o(s)}
function l(){
function n(){var n=Zo.touches(g);
return h=S.k,n.forEach(
function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}
function e(){var t=Zo.event.target;Zo.select(t).on(M,i).on(_,f),b.push(t);
for(var e=Zo.event.changedTouches,o=0,c=e.length;c>o;++o)v[e[o].identifier]=null;var s=n(),l=Date.now();
if(1===s.length){
if(500>l-m){var h=s[0],g=v[h.identifier];r(2*S.k),u(h,g),y(),a(p)}m=l}
else if(s.length>1){var h=s[0],x=s[1],w=h[0]-x[0],k=h[1]-x[1];d=w*w+k*k}}
function i(){
for(var n,t,e,i,o=Zo.touches(g),c=0,s=o.length;s>c;++c,i=null)
if(e=o[c],i=v[e.identifier]){
if(t)
break;n=e,t=i}
if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=d&&Math.sqrt(l/d);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}m=null,u(n,t),a(p)}
function f(){
if(Zo.event.touches.length){
for(var t=Zo.event.changedTouches,e=0,r=t.length;r>e;++e)
delete v[t[e].identifier];
for(var u in v)
return void n()}Zo.selectAll(b).on(x,null),w.on(A,s).on(z,l),k(),c(p)}var h,g=
this,p=L.of(g,arguments),v={},d=0,x=
".zoom-"+Zo.event.changedTouches[0].identifier,M=
"touchmove"+x,_=
"touchend"+x,b=[],w=Zo.select(g).on(A,null).on(z,e),k=I();H.call(g),e(),o(p)}
function f(){var n=L.of(
this,arguments);d?clearTimeout(d):(g=t(p=v||Zo.mouse(this)),H.call(this),o(n)),d=setTimeout(function(){d=null,c(n)},50),y(),r(Math.pow(2,.002*Ta())*S.k),u(p,g),a(n)}
function h(){var n=L.of(
this,arguments),e=Zo.mouse(
this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Zo.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var g,p,v,d,m,x,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=qa,A=
"mousedown.zoom",C=
"mousemove.zoom",N=
"mouseup.zoom",z=
"touchstart.zoom",L=M(n,
"zoomstart",
"zoom",
"zoomend");
return n.event=
function(n){n.each(
function(){var n=L.of(
this,arguments),t=S;Ss?Zo.select(
this).transition().each(
"start.zoom",
function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween(
"zoom:zoom",
function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Zo.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);
return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each(
"end.zoom",
function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=
function(t){
return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=
function(t){
return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=
function(t){
return arguments.length?(E=null==t?qa:[+t[0],+t[1]],n):E},n.center=
function(t){
return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=
function(t){
return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=
function(t){
return arguments.length?(_=t,x=t.copy(),S={x:0,y:0,k:1},n):_},n.y=
function(t){
return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Zo.rebind(n,L,
"on")};var Ta,qa=[0,1/0],Ra=
"onwheel"in $o?(Ta=
function(){
return-Zo.event.deltaY*(Zo.event.deltaMode?120:1)},
"wheel"):
"onmousewheel"in $o?(Ta=function(){
return Zo.event.wheelDelta},
"mousewheel"):(Ta=
function(){
return-Zo.event.detail},
"MozMousePixelScroll");Zo.color=et,et.prototype.toString=
function(){
return this.rgb()+
""},Zo.hsl=rt;var Da=rt.prototype=
new et;Da.brighter=
function(n){
return n=Math.pow(.7,arguments.length?n:1),
new rt(this.h,this.s,this.l/n)},Da.darker=
function(n){
return n=Math.pow(.7,arguments.length?n:1),
new rt(this.h,this.s,n*this.l)},Da.rgb=
function(){
return ut(this.h,this.s,this.l)},Zo.hcl=it;var Pa=it.prototype=
new et;Pa.brighter=
function(n){
return new it(this.h,this.c,Math.min(100,
this.l+Ua*(arguments.length?n:1)))},Pa.darker=
function(n){
return new it(this.h,this.c,Math.max(0,
this.l-Ua*(arguments.length?n:1)))},Pa.rgb=
function(){
return ot(this.h,this.c,this.l).rgb()},Zo.lab=at;var Ua=18,ja=.95047,Ha=1,Fa=1.08883,Oa=at.prototype=
new et;Oa.brighter=
function(n){
return new at(Math.min(100,
this.l+Ua*(arguments.length?n:1)),this.a,this.b)},Oa.darker=
function(n){
return new at(Math.max(0,
this.l-Ua*(arguments.length?n:1)),this.a,this.b)},Oa.rgb=
function(){
return ct(this.l,this.a,this.b)},Zo.rgb=gt;var Ya=gt.prototype=
new et;Ya.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 gt(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new gt(u,u,u)},Ya.darker=function(n){
return n=Math.pow(.7,arguments.length?n:1),
new gt(n*this.r,n*this.g,n*this.b)},Ya.hsl=
function(){
return yt(this.r,this.g,this.b)},Ya.toString=
function(){
return"#"+dt(this.r)+dt(this.g)+dt(this.b)};var Ia=Zo.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,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});Ia.forEach(
function(n,t){Ia.set(n,pt(t))}),Zo.functor=bt,Zo.xhr=St(wt),Zo.dsv=
function(n,t){
function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=kt(n,t,null==e?r:u(e),i);
return o.row=
function(n){
return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}
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(o).join(n)}
function o(n){
return a.test(n)?
'"'+n.replace(/\
"/g,'""')+'"':n}var a=new RegExp('[
"'+n+"\n]
"),c=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(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++<s;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}l=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++l):10===r&&(u=!0),n.substring(t+1,e).replace(/""/g,'"')}for(;s>l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new h,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Zo.csv=Zo.dsv(",","text/csv"),Zo.tsv=Zo.dsv(" ","text/tab-separated-values"),Zo.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=x().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return Z(n,r)};var Za,Va,Xa,$a,Ba,Wa=Wo[p(Wo,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Zo.timer=function(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,f:!1,n:null};Va?Va.n=i:Za=i,Va=i,Xa||($a=clearTimeout($a),Xa=1,Wa(At))},Zo.timer.flush=function(){Ct(),Nt()},Zo.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var Ja=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Lt);Zo.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Zo.round(n,zt(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)))),Ja[8+e/3]};var Ga=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,Ka=Zo.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Zo.round(n,zt(n,t))).toFixed(Math.max(0,Math.min(20,zt(n*(1+1e-15),t))))}}),Qa=Zo.time={},nc=Date;Rt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){tc.setUTCDate.apply(this._,arguments)},setDay:function(){tc.setUTCDay.apply(this._,arguments)},setFullYear:function(){tc.setUTCFullYear.apply(this._,arguments)},setHours:function(){tc.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){tc.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){tc.setUTCMinutes.apply(this._,arguments)},setMonth:function(){tc.setUTCMonth.apply(this._,arguments)},setSeconds:function(){tc.setUTCSeconds.apply(this._,arguments)},setTime:function(){tc.setTime.apply(this._,arguments)}};var tc=Date.prototype;Qa.year=Dt(function(n){return n=Qa.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),Qa.years=Qa.year.range,Qa.years.utc=Qa.year.utc.range,Qa.day=Dt(function(n){var t=new nc(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}),Qa.days=Qa.day.range,Qa.days.utc=Qa.day.utc.range,Qa.dayOfYear=function(n){var t=Qa.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=Qa[n]=Dt(function(n){return(n=Qa.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=Qa.year(n).getDay();return Math.floor((Qa.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});Qa[n+"s"]=e.range,Qa[n+"s"].utc=e.utc.range,Qa[n+"OfYear"]=function(n){var e=Qa.year(n).getDay();return Math.floor((Qa.dayOfYear(n)+(e+t)%7)/7)}}),Qa.week=Qa.sunday,Qa.weeks=Qa.sunday.range,Qa.weeks.utc=Qa.sunday.utc.range,Qa.weekOfYear=Qa.sundayOfYear;var ec={"-":"",_:" ",0:"0"},rc=/^\s*\d+/,uc=/^%/;Zo.locale=function(n){return{numberFormat:Tt(n),timeFormat:Ut(n)}};var ic=Zo.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"]});Zo.format=ic.numberFormat,Zo.geo={},ue.prototype={s:0,t:0,add:function(n){ie(n,this.t,oc),ie(oc.s,this.s,this),this.s?this.t+=oc.t:this.s=oc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var oc=new ue;Zo.geo.stream=function(n,t){n&&ac.hasOwnProperty(n.type)?ac[n.type](n,t):oe(n,t)};var ac={Feature:function(n,t){oe(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)oe(e[r].geometry,t)}},cc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(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(n,t){ae(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ae(e[r],t,0)},Polygon:function(n,t){ce(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)ce(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)oe(e[r],t)}};Zo.geo.area=function(n){return sc=0,Zo.geo.stream(n,fc),sc};var sc,lc=new ue,fc={sphere:function(){sc+=4*ba},point:v,lineStart:v,lineEnd:v,polygonStart:function(){lc.reset(),fc.lineStart=se},polygonEnd:function(){var n=2*lc;sc+=0>n?4*ba+n:n,fc.lineStart=fc.lineEnd=fc.point=v}};Zo.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=le([t*Aa,e*Aa]);if(m){var u=he(m,r),i=[u[1],-u[0],0],o=he(i,u);ve(o),o=de(o);var c=t-p,s=c>0?1:-1,v=o[0]*Ca*s,d=ua(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*Ca;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*Ca;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=ua(r)>180?r+(r>0?360:-360):r}else v=n,d=e;fc.point(n,e),t(n,e)}function i(){fc.lineStart()}function o(){u(v,d),fc.lineEnd(),ua(y)>ka&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var l,f,h,g,p,v,d,m,y,x,M,_={point:n,lineStart:e,lineEnd:r,polygonStart:function(){_.point=u,_.lineStart=i,_.lineEnd=o,y=0,fc.polygonStart()},polygonEnd:function(){fc.polygonEnd(),_.point=n,_.lineStart=e,_.lineEnd=r,0>lc?(l=-(h=180),f=-(g=90)):y>ka?g=90:-ka>y&&(f=-90),M[0]=l,M[1]=h}};return function(n){g=h=-(l=f=1/0),x=[],Zo.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);