diff --git a/dist/partials/device-actions.html b/dist/partials/device-actions.html index 6b3946e..978c7f6 100644 --- a/dist/partials/device-actions.html +++ b/dist/partials/device-actions.html @@ -3,39 +3,40 @@
# {{ action.name }} - +
- + +
- +
- - - - + + +
- +
- + ",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1)):y.test(a)?(b=a.match(y))&&(a=a.replace(b[0],""),g=!1):J.test(a)?(b=a.match(z))&&(a=a.substring(b[0].length),b[0].replace(z,c),g=!1):K.test(a)&&(b=a.match(A))&&(a=a.substring(b[0].length),b[0].replace(A,d),g=!1),g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))),a==l)throw L("badparse",a);l=a}c()}function r(a){if(!a)return"";var e=M.exec(a);a=e[1];var d=e[3];return(e=e[2])&&(n.innerHTML=e.replace(//g,">")}function s(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a),!d&&x[a]&&(d=a),d||!0!==C[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===D[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a),d||!0!==C[a]||(c("")),a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i,I=/]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(E(a))}function f(a,c){m.push("'),g(c),m.push("")}if(!c)return c;for(var l,n,p,k=c,m=[];l=k.match(e);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(d,"")),k=k.substring(p+l[0].length);return g(k),a(m.join(""))}}])}(window,window.angular),function(t,r,e){"use strict";function n(t,r){return g(new(g(function(){},{prototype:t})),r)}function a(t){return d(arguments,function(r){r!==t&&d(r,function(r,e){t.hasOwnProperty(e)||(t[e]=r)})}),t}function i(t,r,e){this.fromConfig=function(t,r,e){return h(t.template)?this.fromString(t.template,r):h(t.templateUrl)?this.fromUrl(t.templateUrl,r):h(t.templateProvider)?this.fromProvider(t.templateProvider,r,e):null},this.fromString=function(t,r){return m(t)?t(r):t},this.fromUrl=function(e,n){return m(e)&&(e=e(n)),null==e?null:t.get(e,{cache:r}).then(function(t){return t.data})},this.fromProvider=function(t,r,n){return e.invoke(t,null,n||{params:r})}}function o(t){function r(r){if(!/^\w+$/.test(r))throw Error("Invalid parameter name '"+r+"' in pattern '"+t+"'");if(i[r])throw Error("Duplicate parameter name '"+r+"' in pattern '"+t+"'");i[r]=!0,l.push(r)}function e(t){return t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&")}var n,a=/([:*])(\w+)|\{(\w+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,i={},o="^",s=0,u=this.segments=[],l=this.params=[];this.source=t;for(var c,f,h;(n=a.exec(t))&&(c=n[2]||n[3],f=n[4]||("*"==n[1]?".*":"[^/]*"),h=t.substring(s,n.index),!(h.indexOf("?")>=0));)o+=e(h)+"("+f+")",r(c),u.push(h),s=a.lastIndex;h=t.substring(s);var m=h.indexOf("?");if(m>=0){var p=this.sourceSearch=h.substring(m);h=h.substring(0,m),this.sourcePath=t.substring(0,s+m),d(p.substring(1).split(/[&?]/),r)}else this.sourcePath=t,this.sourceSearch="";o+=e(h)+"$",u.push(h),this.regexp=RegExp(o),this.prefix=u[0]}function s(){this.compile=function(t){return new o(t)},this.isMatcher=function(t){return t instanceof o},this.$get=function(){return this}}function u(t){function r(t){var r=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(t.source);return null!=r?r[1].replace(/\\(.)/g,"$1"):""}function e(t,r){return t.replace(/\$(\$|\d{1,2})/,function(t,e){return r["$"===e?0:Number(e)]})}function n(t,r,e){if(!e)return!1;var n=t.invoke(r,r,{$match:e});return h(n)?n:!0}var a=[],i=null;this.rule=function(t){if(!m(t))throw Error("'rule' must be a function");return a.push(t),this},this.otherwise=function(t){if(p(t)){var r=t;t=function(){return r}}else if(!m(t))throw Error("'rule' must be a function");return i=t,this},this.when=function(a,i){var o,s;if(p(a)&&(a=t.compile(a)),t.isMatcher(a)){if(p(i))s=t.compile(i),i=["$match",function(t){return s.format(t)}];else if(!m(i)&&!v(i))throw Error("invalid 'handler' in when()");o=function(t,r){return n(t,i,a.exec(r.path(),r.search()))},o.prefix=p(a.prefix)?a.prefix:""}else{if(!(a instanceof RegExp))throw Error("invalid 'what' in when()");if(p(i))s=i,i=["$match",function(t){return e(s,t)}];else if(!m(i)&&!v(i))throw Error("invalid 'handler' in when()");if(a.global||a.sticky)throw Error("when() RegExp must not be global or sticky");o=function(t,r){return n(t,i,a.exec(r.path()))},o.prefix=r(a)}return this.rule(o)},this.$get=["$location","$rootScope","$injector",function(t,r,e){function n(){var r,n,i=a.length;for(r=0;i>r;r++)if(n=a[r](e,t)){p(n)&&t.replace().url(n);break}}return i&&a.push(i),r.$on("$locationChangeSuccess",n),{}}]}function l(t,r){function e(t){var r;if(p(t)){if(r=c[t],!r)throw Error("No such state '"+t+"'")}else if(r=c[t.name],!r||r!==t&&r.self!==t)throw Error("Invalid or unregistered state");return r}function i(a){a=n(a,{self:a,toString:function(){return this.name}});var i=a.name;if(!p(i)||i.indexOf("@")>=0)throw Error("State must have a valid name");if(c[i])throw Error("State '"+i+"'' is already defined");var o=u;if(h(a.parent))null!=a.parent&&(o=e(a.parent));else{var s=/^(.+)\.[^.]+$/.exec(i);null!=s&&(o=e(s[1]))}a.parent=o;var f=a.url;if(p(f))f=a.url="^"==f.charAt(0)?r.compile(f.substring(1)):(o.navigable||u).url.concat(f);else if($(f)&&m(f.exec)&&m(f.format)&&m(f.concat));else if(null!=f)throw Error("Invalid url '"+f+"' in state '"+a+"'");a.navigable=f?a:o?o.navigable:null;var w=a.params;if(w){if(!v(w))throw Error("Invalid params in state '"+a+"'");if(f)throw Error("Both params and url specicified in state '"+a+"'")}else w=a.params=f?f.parameters():a.parent.params;var b={};if(d(w,function(t){b[t]=!0}),o){d(o.params,function(t){if(!b[t])throw Error("Missing required parameter '"+t+"' in state '"+i+"'");b[t]=!1});var E=a.ownParams=[];d(b,function(t,r){t&&E.push(r)})}else a.ownParams=w;var x={};d(h(a.views)?a.views:{"":a},function(t,r){0>r.indexOf("@")&&(r=r+"@"+a.parent.name),x[r]=t}),a.views=x,a.path=o?o.path.concat(a):[];var P=a.includes=o?g({},o.includes):{};return P[i]=!0,a.resolve||(a.resolve={}),!a["abstract"]&&f&&t.when(f,["$match",function(t){l.transitionTo(a,t,!1)}]),c[i]=a,a}function o(t,r){return $(t)?r=t:r.name=t,i(r),this}function s(t,r,i,o,s,c){function f(t,e,n,s,u){function l(e,n){d(e,function(e,a){f.push(r.when(p(e)?o.get(e):o.invoke(e,t.self,h)).then(function(t){n[a]=t}))})}var c,f=[s];n?c=e:(c={},d(t.params,function(t){c[t]=e[t]}));var h={$stateParams:c},m=u.globals={$stateParams:c};return l(t.resolve,m),m.$$state=t,d(t.views,function(e,n){var a=u[n]={$$controller:e.controller};f.push(r.when(i.fromConfig(e,c,h)||"").then(function(t){a.$template=t})),e.resolve!==t.resolve&&l(e.resolve,a)}),r.all(f).then(function(r){return a(u.globals,r[0].globals),d(t.views,function(t,r){a(u[r],u.globals)}),u})}function m(t,r){var e={};return d(t,function(t){var n=r[t];e[t]=null!=n?n+"":null}),e}function $(t,r,e){for(var n=0;e.length>n;n++){var a=e[n];if(t[a]!=r[a])return!1}return!0}var v=r.reject(Error("transition superseded")),g=r.reject(Error("transition prevented"));return l={params:{},current:u.self,$current:u,transition:null},l.transitionTo=function(a,i,p){if(h(p)||(p=!0),a=e(a),a["abstract"])throw Error("Cannot transition to abstract state '"+a+"'");var d,b,E=a.path,x=l.$current,P=l.params,S=x.path,C=u.locals,y=[];for(d=0,b=E[d];b&&b===S[d]&&$(i,P,b.ownParams);d++,b=E[d])C=y[d]=b.locals;if(a===x&&C===x.locals)return l.transition=null,r.when(l.current);if(i=m(a.params,i||{}),t.$broadcast("$stateChangeStart",a.self,i,x.self,P).defaultPrevented)return g;for(var j=r.when(C),R=d;E.length>R;R++,b=E[R])C=y[R]=n(C),j=f(b,i,b===a,j,C);var k=l.transition=j.then(function(){var r,e,n;if(l.transition!==k)return v;for(r=S.length-1;r>=d;r--)n=S[r],n.self.onExit&&o.invoke(n.self.onExit,n.self,n.locals.globals),n.locals=null;for(r=d;E.length>r;r++)e=E[r],e.locals=y[r],e.self.onEnter&&o.invoke(e.self.onEnter,e.self,e.locals.globals);l.$current=a,l.current=a.self,l.params=i,w(l.params,s),l.transition=null;var u=a.navigable;return p&&u&&c.url(u.url.format(u.locals.globals.$stateParams)),t.$broadcast("$stateChangeSuccess",a.self,i,x.self,P),l.current},function(e){return l.transition!==k?v:(l.transition=null,t.$broadcast("$stateChangeError",a.self,i,x.self,P,e),r.reject(e))});return k},l.is=function(t){return l.$current===e(t)},l.includes=function(t){return l.$current.includes[e(t).name]},l.href=function(t,r){var n=e(t),a=n.navigable;if(!a)throw Error("State '"+n+"' is not navigable");return a.url.format(m(n.params,r||{}))},l}var u,l,c={};u=i({name:"",url:"^",views:null,"abstract":!0}),u.locals={globals:{$stateParams:{}}},u.navigable=null,this.state=o,this.$get=s,s.$inject=["$rootScope","$q","$templateFactory","$injector","$stateParams","$location","$urlRouter"]}function c(t,e,n,a,i){var o;try{o=a.get("$animator")}catch(s){}var u={restrict:"ECA",terminal:!0,link:function(a,s,l){function c(o){var u=t.$current&&t.$current.locals[p];if(u!==m)if(f&&(v&&o?v.leave(s.contents(),s):s.html(""),f.$destroy(),f=null),u){m=u,g.state=u.$$state;var l;v&&o?(l=r.element("
").html(u.$template).contents(),v.enter(l,s)):(s.html(u.$template),l=s.contents());var c=e(l);if(f=a.$new(),u.$$controller){u.$scope=f;var h=n(u.$$controller,u);s.children().data("$ngControllerController",h)}c(f),f.$emit("$viewContentLoaded"),f.$eval($),i()}else m=null,g.state=null}var f,m,p=l[u.name]||l.name||"",$=l.onload||"",v=h(o)&&o(a,l),d=s.parent().inheritedData("$uiView");0>p.indexOf("@")&&(p=p+"@"+(d?d.state.name:""));var g={name:p,state:null};s.data("$uiView",g),a.$on("$stateChangeSuccess",function(){c(!0)}),c(!1)}};return u}function f(t,r){function a(t){this.locals=t.locals.globals,this.params=this.locals.$stateParams}function i(){this.locals=null,this.params=null}function o(e,o){if(null!=o.redirectTo){var s,l=o.redirectTo;if(p(l))s=l;else{if(!m(l))throw Error("Invalid 'redirectTo' in when()");s=function(t,r){return l(t,r.path(),r.search())}}r.when(e,s)}else t.state(n(o,{parent:null,name:"route:"+encodeURIComponent(e),url:e,onEnter:a,onExit:i}));return u.push(o),this}function s(t,r,n){function a(t){return""!==t.name?t:e}var i={routes:u,params:n,current:e};return r.$on("$stateChangeStart",function(t,e,n,i){r.$broadcast("$routeChangeStart",a(e),a(i))}),r.$on("$stateChangeSuccess",function(t,e,n,o){i.current=a(e),r.$broadcast("$routeChangeSuccess",a(e),a(o)),w(n,i.params)}),r.$on("$stateChangeError",function(t,e,n,i,o,s){r.$broadcast("$routeChangeError",a(e),a(i),s)}),i}var u=[];a.$inject=["$$state"],this.when=o,this.$get=s,s.$inject=["$state","$rootScope","$routeParams"]}var h=r.isDefined,m=r.isFunction,p=r.isString,$=r.isObject,v=r.isArray,d=r.forEach,g=r.extend,w=r.copy;r.module("ui.util",["ng"]),r.module("ui.router",["ui.util"]),r.module("ui.state",["ui.router","ui.util"]),r.module("ui.compat",["ui.state"]),i.$inject=["$http","$templateCache","$injector"],r.module("ui.util").service("$templateFactory",i),o.prototype.concat=function(t){return new o(this.sourcePath+t+this.sourceSearch)},o.prototype.toString=function(){return this.source},o.prototype.exec=function(t,r){var e=this.regexp.exec(t);if(!e)return null;var n,a=this.params,i=a.length,o=this.segments.length-1,s={};for(n=0;o>n;n++)s[a[n]]=decodeURIComponent(e[n+1]);for(;i>n;n++)s[a[n]]=r[a[n]];return s},o.prototype.parameters=function(){return this.params},o.prototype.format=function(t){var r=this.segments,e=this.params;if(!t)return r.join("");var n,a,i,o=r.length-1,s=e.length,u=r[0];for(n=0;o>n;n++)i=t[e[n]],null!=i&&(u+=i),u+=r[n+1];for(;s>n;n++)i=t[e[n]],null!=i&&(u+=(a?"&":"?")+e[n]+"="+encodeURIComponent(i),a=!0);return u},r.module("ui.util").provider("$urlMatcherFactory",s),u.$inject=["$urlMatcherFactoryProvider"],r.module("ui.router").provider("$urlRouter",u),l.$inject=["$urlRouterProvider","$urlMatcherFactoryProvider"],r.module("ui.state").value("$stateParams",{}).provider("$state",l),c.$inject=["$state","$compile","$controller","$injector","$anchorScroll"],r.module("ui.state").directive("uiView",c),f.$inject=["$stateProvider","$urlRouterProvider"],r.module("ui.compat").provider("$route",f).directive("ngView",c)}(window,window.angular),!function(){function d3_number(x){return null!=x&&!isNaN(x)}function d3_zipLength(d){return d.length}function d3_range_integerScale(x){for(var k=1;x*k%1;)k*=10;return k}function d3_class(ctor,properties){try{for(var key in properties)Object.defineProperty(ctor.prototype,key,{value:properties[key],enumerable:!1})}catch(e){ctor.prototype=properties}}function d3_Map(){}function d3_map_has(key){return d3_map_prefix+key in this}function d3_map_remove(key){return key=d3_map_prefix+key,key in this&&delete this[key]}function d3_map_keys(){var keys=[];return this.forEach(function(key){keys.push(key)}),keys}function d3_map_size(){var size=0;for(var key in this)key.charCodeAt(0)===d3_map_prefixCode&&++size;return size}function d3_map_empty(){for(var key in this)if(key.charCodeAt(0)===d3_map_prefixCode)return!1;return!0}function d3_Set(){}function d3_rebind(target,source,method){return function(){var value=method.apply(source,arguments);return value===source?target:value}}function d3_vendorSymbol(object,name){if(name in object)return name;name=name.charAt(0).toUpperCase()+name.substring(1);for(var i=0,n=d3_vendorPrefixes.length;n>i;++i){var prefixName=d3_vendorPrefixes[i]+name;if(prefixName in object)return prefixName}}function d3_noop(){}function d3_dispatch(){}function d3_dispatch_event(dispatch){function event(){for(var l,z=listeners,i=-1,n=z.length;++ij;j++)for(var node,group=groups[j],i=0,n=group.length;n>i;i++)(node=group[i])&&callback(node,i,j);return groups}function d3_selection_enter(selection){return d3_subclass(selection,d3_selection_enterPrototype),selection}function d3_selection_enterInsertBefore(enter){var i0,j0;return function(d,i,j){var node,group=enter[j].update,n=group.length;for(j!=j0&&(j0=j,i0=0),i>=i0&&(i0=i+1);!(node=group[i0])&&++i00&&(type=type.substring(0,i));var filter=d3_selection_onFilters.get(type);return filter&&(type=filter,wrap=d3_selection_onFilter),i?listener?onAdd:onRemove:listener?d3_noop:removeAll}function d3_selection_onListener(listener,argumentz){return function(e){var o=d3.event;d3.event=e,argumentz[0]=this.__data__;try{listener.apply(this,argumentz)}finally{d3.event=o}}}function d3_selection_onFilter(listener,argumentz){var l=d3_selection_onListener(listener,argumentz);return function(e){var target=this,related=e.relatedTarget;related&&(related===target||8&related.compareDocumentPosition(target))||l.call(target,e)}}function d3_event_dragSuppress(){var name=".dragsuppress-"+ ++d3_event_dragId,click="click"+name,w=d3.select(d3_window).on("touchmove"+name,d3_eventPreventDefault).on("dragstart"+name,d3_eventPreventDefault).on("selectstart"+name,d3_eventPreventDefault);if(d3_event_dragSelect){var style=d3_documentElement.style,select=style[d3_event_dragSelect];style[d3_event_dragSelect]="none"}return function(suppressClick){function off(){w.on(click,null)}w.on(name,null),d3_event_dragSelect&&(style[d3_event_dragSelect]=select),suppressClick&&(w.on(click,function(){d3_eventPreventDefault(),off()},!0),setTimeout(off,0))}}function d3_mousePoint(container,e){e.changedTouches&&(e=e.changedTouches[0]);var svg=container.ownerSVGElement||container;if(svg.createSVGPoint){var point=svg.createSVGPoint(); -if(0>d3_mouse_bug44083&&(d3_window.scrollX||d3_window.scrollY)){svg=d3.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var ctm=svg[0][0].getScreenCTM();d3_mouse_bug44083=!(ctm.f||ctm.e),svg.remove()}return d3_mouse_bug44083?(point.x=e.pageX,point.y=e.pageY):(point.x=e.clientX,point.y=e.clientY),point=point.matrixTransform(container.getScreenCTM().inverse()),[point.x,point.y]}var rect=container.getBoundingClientRect();return[e.clientX-rect.left-container.clientLeft,e.clientY-rect.top-container.clientTop]}function d3_sgn(x){return x>0?1:0>x?-1:0}function d3_cross2d(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0])}function d3_acos(x){return x>1?0:-1>x?π:Math.acos(x)}function d3_asin(x){return x>1?halfπ:-1>x?-halfπ:Math.asin(x)}function d3_sinh(x){return((x=Math.exp(x))-1/x)/2}function d3_cosh(x){return((x=Math.exp(x))+1/x)/2}function d3_tanh(x){return((x=Math.exp(2*x))-1)/(x+1)}function d3_haversin(x){return(x=Math.sin(x/2))*x}function d3_Color(){}function d3_hsl(h,s,l){return new d3_Hsl(h,s,l)}function d3_Hsl(h,s,l){this.h=h,this.s=s,this.l=l}function d3_hsl_rgb(h,s,l){function v(h){return h>360?h-=360:0>h&&(h+=360),60>h?m1+(m2-m1)*h/60:180>h?m2:240>h?m1+(m2-m1)*(240-h)/60:m1}function vv(h){return Math.round(255*v(h))}var m1,m2;return h=isNaN(h)?0:(h%=360)<0?h+360:h,s=isNaN(s)?0:0>s?0:s>1?1:s,l=0>l?0:l>1?1:l,m2=.5>=l?l*(1+s):l+s-l*s,m1=2*l-m2,d3_rgb(vv(h+120),vv(h),vv(h-120))}function d3_hcl(h,c,l){return new d3_Hcl(h,c,l)}function d3_Hcl(h,c,l){this.h=h,this.c=c,this.l=l}function d3_hcl_lab(h,c,l){return isNaN(h)&&(h=0),isNaN(c)&&(c=0),d3_lab(l,Math.cos(h*=d3_radians)*c,Math.sin(h)*c)}function d3_lab(l,a,b){return new d3_Lab(l,a,b)}function d3_Lab(l,a,b){this.l=l,this.a=a,this.b=b}function d3_lab_rgb(l,a,b){var y=(l+16)/116,x=y+a/500,z=y-b/200;return x=d3_lab_xyz(x)*d3_lab_X,y=d3_lab_xyz(y)*d3_lab_Y,z=d3_lab_xyz(z)*d3_lab_Z,d3_rgb(d3_xyz_rgb(3.2404542*x-1.5371385*y-.4985314*z),d3_xyz_rgb(-.969266*x+1.8760108*y+.041556*z),d3_xyz_rgb(.0556434*x-.2040259*y+1.0572252*z))}function d3_lab_hcl(l,a,b){return l>0?d3_hcl(Math.atan2(b,a)*d3_degrees,Math.sqrt(a*a+b*b),l):d3_hcl(0/0,0/0,l)}function d3_lab_xyz(x){return x>.206893034?x*x*x:(x-4/29)/7.787037}function d3_xyz_lab(x){return x>.008856?Math.pow(x,1/3):7.787037*x+4/29}function d3_xyz_rgb(r){return Math.round(255*(.00304>=r?12.92*r:1.055*Math.pow(r,1/2.4)-.055))}function d3_rgbNumber(value){return d3_rgb(value>>16,value>>8&255,255&value)}function d3_rgbString(value){return d3_rgbNumber(value)+""}function d3_rgb(r,g,b){return new d3_Rgb(r,g,b)}function d3_Rgb(r,g,b){this.r=r,this.g=g,this.b=b}function d3_rgb_hex(v){return 16>v?"0"+Math.max(0,v).toString(16):Math.min(255,v).toString(16)}function d3_rgb_parse(format,rgb,hsl){var m1,m2,name,r=0,g=0,b=0;if(m1=/([a-z]+)\((.*)\)/i.exec(format))switch(m2=m1[2].split(","),m1[1]){case"hsl":return hsl(parseFloat(m2[0]),parseFloat(m2[1])/100,parseFloat(m2[2])/100);case"rgb":return rgb(d3_rgb_parseNumber(m2[0]),d3_rgb_parseNumber(m2[1]),d3_rgb_parseNumber(m2[2]))}return(name=d3_rgb_names.get(format))?rgb(name.r,name.g,name.b):(null!=format&&"#"===format.charAt(0)&&(4===format.length?(r=format.charAt(1),r+=r,g=format.charAt(2),g+=g,b=format.charAt(3),b+=b):7===format.length&&(r=format.substring(1,3),g=format.substring(3,5),b=format.substring(5,7)),r=parseInt(r,16),g=parseInt(g,16),b=parseInt(b,16)),rgb(r,g,b))}function d3_rgb_hsl(r,g,b){var h,s,min=Math.min(r/=255,g/=255,b/=255),max=Math.max(r,g,b),d=max-min,l=(max+min)/2;return d?(s=.5>l?d/(max+min):d/(2-max-min),h=r==max?(g-b)/d+(b>g?6:0):g==max?(b-r)/d+2:(r-g)/d+4,h*=60):(h=0/0,s=l>0&&1>l?0:h),d3_hsl(h,s,l)}function d3_rgb_lab(r,g,b){r=d3_rgb_xyz(r),g=d3_rgb_xyz(g),b=d3_rgb_xyz(b);var x=d3_xyz_lab((.4124564*r+.3575761*g+.1804375*b)/d3_lab_X),y=d3_xyz_lab((.2126729*r+.7151522*g+.072175*b)/d3_lab_Y),z=d3_xyz_lab((.0193339*r+.119192*g+.9503041*b)/d3_lab_Z);return d3_lab(116*y-16,500*(x-y),200*(y-z))}function d3_rgb_xyz(r){return(r/=255)<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function d3_rgb_parseNumber(c){var f=parseFloat(c);return"%"===c.charAt(c.length-1)?Math.round(2.55*f):f}function d3_functor(v){return"function"==typeof v?v:function(){return v}}function d3_identity(d){return d}function d3_xhrType(response){return function(url,mimeType,callback){return 2===arguments.length&&"function"==typeof mimeType&&(callback=mimeType,mimeType=null),d3_xhr(url,mimeType,response,callback)}}function d3_xhr(url,mimeType,response,callback){function respond(){var result,status=request.status;if(!status&&request.responseText||status>=200&&300>status||304===status){try{result=response.call(xhr,request)}catch(e){return void dispatch.error.call(xhr,e)}dispatch.load.call(xhr,result)}else dispatch.error.call(xhr,request)}var xhr={},dispatch=d3.dispatch("beforesend","progress","load","error"),headers={},request=new XMLHttpRequest,responseType=null;return!d3_window.XDomainRequest||"withCredentials"in request||!/^(http(s)?:)?\/\//.test(url)||(request=new XDomainRequest),"onload"in request?request.onload=request.onerror=respond:request.onreadystatechange=function(){request.readyState>3&&respond()},request.onprogress=function(event){var o=d3.event;d3.event=event;try{dispatch.progress.call(xhr,request)}finally{d3.event=o}},xhr.header=function(name,value){return name=(name+"").toLowerCase(),arguments.length<2?headers[name]:(null==value?delete headers[name]:headers[name]=value+"",xhr)},xhr.mimeType=function(value){return arguments.length?(mimeType=null==value?null:value+"",xhr):mimeType},xhr.responseType=function(value){return arguments.length?(responseType=value,xhr):responseType},xhr.response=function(value){return response=value,xhr},["get","post"].forEach(function(method){xhr[method]=function(){return xhr.send.apply(xhr,[method].concat(d3_array(arguments)))}}),xhr.send=function(method,data,callback){if(2===arguments.length&&"function"==typeof data&&(callback=data,data=null),request.open(method,url,!0),null==mimeType||"accept"in headers||(headers.accept=mimeType+",*/*"),request.setRequestHeader)for(var name in headers)request.setRequestHeader(name,headers[name]);return null!=mimeType&&request.overrideMimeType&&request.overrideMimeType(mimeType),null!=responseType&&(request.responseType=responseType),null!=callback&&xhr.on("error",callback).on("load",function(request){callback(null,request)}),dispatch.beforesend.call(xhr,request),request.send(null==data?null:data),xhr},xhr.abort=function(){return request.abort(),xhr},d3.rebind(xhr,dispatch,"on"),null==callback?xhr:xhr.get(d3_xhr_fixCallback(callback))}function d3_xhr_fixCallback(callback){return 1===callback.length?function(error,request){callback(null==error?request:null)}:callback}function d3_timer_step(){var now=d3_timer_mark(),delay=d3_timer_sweep()-now;delay>24?(isFinite(delay)&&(clearTimeout(d3_timer_timeout),d3_timer_timeout=setTimeout(d3_timer_step,delay)),d3_timer_interval=0):(d3_timer_interval=1,d3_timer_frame(d3_timer_step))}function d3_timer_mark(){var now=Date.now();for(d3_timer_active=d3_timer_queueHead;d3_timer_active;)now>=d3_timer_active.t&&(d3_timer_active.f=d3_timer_active.c(now-d3_timer_active.t)),d3_timer_active=d3_timer_active.n;return now}function d3_timer_sweep(){for(var t0,t1=d3_timer_queueHead,time=1/0;t1;)t1.f?t1=t0?t0.n=t1.n:d3_timer_queueHead=t1.n:(t1.t8?function(d){return d/k}:function(d){return d*k},symbol:d}}function d3_locale_numberFormat(locale){var locale_decimal=locale.decimal,locale_thousands=locale.thousands,locale_grouping=locale.grouping,locale_currency=locale.currency,formatGroup=locale_grouping?function(value){for(var i=value.length,t=[],j=0,g=locale_grouping[0];i>0&&g>0;)t.push(value.substring(i-=g,i+g)),g=locale_grouping[j=(j+1)%locale_grouping.length];return t.reverse().join(locale_thousands)}:d3_identity;return function(specifier){var match=d3_format_re.exec(specifier),fill=match[1]||" ",align=match[2]||">",sign=match[3]||"",symbol=match[4]||"",zfill=match[5],width=+match[6],comma=match[7],precision=match[8],type=match[9],scale=1,prefix="",suffix="",integer=!1;switch(precision&&(precision=+precision.substring(1)),(zfill||"0"===fill&&"="===align)&&(zfill=fill="0",align="=",comma&&(width-=Math.floor((width-1)/4))),type){case"n":comma=!0,type="g";break;case"%":scale=100,suffix="%",type="f";break;case"p":scale=100,suffix="%",type="r";break;case"b":case"o":case"x":case"X":"#"===symbol&&(prefix="0"+type.toLowerCase());case"c":case"d":integer=!0,precision=0;break;case"s":scale=-1,type="r"}"$"===symbol&&(prefix=locale_currency[0],suffix=locale_currency[1]),"r"!=type||precision||(type="g"),null!=precision&&("g"==type?precision=Math.max(1,Math.min(21,precision)):("e"==type||"f"==type)&&(precision=Math.max(0,Math.min(20,precision)))),type=d3_format_types.get(type)||d3_format_typeDefault;var zcomma=zfill&,return function(value){if(integer&&value%1)return"";var negative=0>value||0===value&&0>1/value?(value=-value,"-"):sign;if(0>scale){var unit=d3.formatPrefix(value,precision);value=unit.scale(value),suffix=unit.symbol}else value*=scale;value=type(value,precision);var i=value.lastIndexOf("."),before=0>i?value:value.substring(0,i),after=0>i?"":locale_decimal+value.substring(i+1);!zfill&&comma&&(before=formatGroup(before));var length=prefix.length+before.length+after.length+(zcomma?0:negative.length),padding=width>length?new Array(length=width-length+1).join(fill):"";return zcomma&&(before=formatGroup(padding+before)),negative+=prefix,value=before+after,("<"===align?negative+value+padding:">"===align?padding+negative+value:"^"===align?padding.substring(0,length>>=1)+negative+value+padding.substring(length):negative+(zcomma?value:padding+value))+suffix}}}function d3_format_typeDefault(x){return x+""}function d3_date_utc(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function d3_time_interval(local,step,number){function round(date){var d0=local(date),d1=offset(d0,1);return d1-date>date-d0?d0:d1}function ceil(date){return step(date=local(new d3_date(date-1)),1),date}function offset(date,k){return step(date=new d3_date(+date),k),date}function range(t0,t1,dt){var time=ceil(t0),times=[];if(dt>1)for(;t1>time;)number(time)%dt||times.push(new Date(+time)),step(time,1);else for(;t1>time;)times.push(new Date(+time)),step(time,1);return times}function range_utc(t0,t1,dt){try{d3_date=d3_date_utc;var utc=new d3_date_utc;return utc._=t0,range(utc,t1,dt)}finally{d3_date=Date}}local.floor=local,local.round=round,local.ceil=ceil,local.offset=offset,local.range=range;var utc=local.utc=d3_time_interval_utc(local);return utc.floor=utc,utc.round=d3_time_interval_utc(round),utc.ceil=d3_time_interval_utc(ceil),utc.offset=d3_time_interval_utc(offset),utc.range=range_utc,local}function d3_time_interval_utc(method){return function(date,k){try{d3_date=d3_date_utc;var utc=new d3_date_utc;return utc._=date,method(utc,k)._}finally{d3_date=Date}}}function d3_locale_timeFormat(locale){function d3_time_format(template){function format(date){for(var c,p,f,string=[],i=-1,j=0;++ii;){if(j>=m)return-1;if(c=template.charCodeAt(i++),37===c){if(t=template.charAt(i++),p=d3_time_parsers[t in d3_time_formatPads?template.charAt(i++):t],!p||(j=p(date,string,j))<0)return-1}else if(c!=string.charCodeAt(j++))return-1}return j}function d3_time_parseWeekdayAbbrev(date,string,i){d3_time_dayAbbrevRe.lastIndex=0;var n=d3_time_dayAbbrevRe.exec(string.substring(i));return n?(date.w=d3_time_dayAbbrevLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseWeekday(date,string,i){d3_time_dayRe.lastIndex=0;var n=d3_time_dayRe.exec(string.substring(i));return n?(date.w=d3_time_dayLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseMonthAbbrev(date,string,i){d3_time_monthAbbrevRe.lastIndex=0;var n=d3_time_monthAbbrevRe.exec(string.substring(i));return n?(date.m=d3_time_monthAbbrevLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseMonth(date,string,i){d3_time_monthRe.lastIndex=0;var n=d3_time_monthRe.exec(string.substring(i));return n?(date.m=d3_time_monthLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseLocaleFull(date,string,i){return d3_time_parse(date,d3_time_formats.c.toString(),string,i)}function d3_time_parseLocaleDate(date,string,i){return d3_time_parse(date,d3_time_formats.x.toString(),string,i)}function d3_time_parseLocaleTime(date,string,i){return d3_time_parse(date,d3_time_formats.X.toString(),string,i)}function d3_time_parseAmPm(date,string,i){var n=d3_time_periodLookup.get(string.substring(i,i+=2).toLowerCase());return null==n?-1:(date.p=n,i)}var locale_dateTime=locale.dateTime,locale_date=locale.date,locale_time=locale.time,locale_periods=locale.periods,locale_days=locale.days,locale_shortDays=locale.shortDays,locale_months=locale.months,locale_shortMonths=locale.shortMonths;d3_time_format.utc=function(template){function format(date){try{d3_date=d3_date_utc;var utc=new d3_date;return utc._=date,local(utc)}finally{d3_date=Date}}var local=d3_time_format(template);return format.parse=function(string){try{d3_date=d3_date_utc;var date=local.parse(string);return date&&date._}finally{d3_date=Date}},format.toString=local.toString,format},d3_time_format.multi=d3_time_format.utc.multi=d3_time_formatMulti;var d3_time_periodLookup=d3.map(),d3_time_dayRe=d3_time_formatRe(locale_days),d3_time_dayLookup=d3_time_formatLookup(locale_days),d3_time_dayAbbrevRe=d3_time_formatRe(locale_shortDays),d3_time_dayAbbrevLookup=d3_time_formatLookup(locale_shortDays),d3_time_monthRe=d3_time_formatRe(locale_months),d3_time_monthLookup=d3_time_formatLookup(locale_months),d3_time_monthAbbrevRe=d3_time_formatRe(locale_shortMonths),d3_time_monthAbbrevLookup=d3_time_formatLookup(locale_shortMonths);locale_periods.forEach(function(p,i){d3_time_periodLookup.set(p.toLowerCase(),i)});var d3_time_formats={a:function(d){return locale_shortDays[d.getDay()]},A:function(d){return locale_days[d.getDay()]},b:function(d){return locale_shortMonths[d.getMonth()]},B:function(d){return locale_months[d.getMonth()]},c:d3_time_format(locale_dateTime),d:function(d,p){return d3_time_formatPad(d.getDate(),p,2)},e:function(d,p){return d3_time_formatPad(d.getDate(),p,2)},H:function(d,p){return d3_time_formatPad(d.getHours(),p,2)},I:function(d,p){return d3_time_formatPad(d.getHours()%12||12,p,2)},j:function(d,p){return d3_time_formatPad(1+d3_time.dayOfYear(d),p,3)},L:function(d,p){return d3_time_formatPad(d.getMilliseconds(),p,3)},m:function(d,p){return d3_time_formatPad(d.getMonth()+1,p,2)},M:function(d,p){return d3_time_formatPad(d.getMinutes(),p,2)},p:function(d){return locale_periods[+(d.getHours()>=12)]},S:function(d,p){return d3_time_formatPad(d.getSeconds(),p,2)},U:function(d,p){return d3_time_formatPad(d3_time.sundayOfYear(d),p,2)},w:function(d){return d.getDay()},W:function(d,p){return d3_time_formatPad(d3_time.mondayOfYear(d),p,2)},x:d3_time_format(locale_date),X:d3_time_format(locale_time),y:function(d,p){return d3_time_formatPad(d.getFullYear()%100,p,2)},Y:function(d,p){return d3_time_formatPad(d.getFullYear()%1e4,p,4)},Z:d3_time_zone,"%":function(){return"%"}},d3_time_parsers={a:d3_time_parseWeekdayAbbrev,A:d3_time_parseWeekday,b:d3_time_parseMonthAbbrev,B:d3_time_parseMonth,c:d3_time_parseLocaleFull,d:d3_time_parseDay,e:d3_time_parseDay,H:d3_time_parseHour24,I:d3_time_parseHour24,j:d3_time_parseDayOfYear,L:d3_time_parseMilliseconds,m:d3_time_parseMonthNumber,M:d3_time_parseMinutes,p:d3_time_parseAmPm,S:d3_time_parseSeconds,U:d3_time_parseWeekNumberSunday,w:d3_time_parseWeekdayNumber,W:d3_time_parseWeekNumberMonday,x:d3_time_parseLocaleDate,X:d3_time_parseLocaleTime,y:d3_time_parseYear,Y:d3_time_parseFullYear,Z:d3_time_parseZone,"%":d3_time_parseLiteralPercent};return d3_time_format}function d3_time_formatPad(value,fill,width){var sign=0>value?"-":"",string=(sign?-value:value)+"",length=string.length;return sign+(width>length?new Array(width-length+1).join(fill)+string:string)}function d3_time_formatRe(names){return new RegExp("^(?:"+names.map(d3.requote).join("|")+")","i")}function d3_time_formatLookup(names){for(var map=new d3_Map,i=-1,n=names.length;++i68?1900:2e3)}function d3_time_parseMonthNumber(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.m=n[0]-1,i+n[0].length):-1}function d3_time_parseDay(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.d=+n[0],i+n[0].length):-1}function d3_time_parseDayOfYear(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+3));return n?(date.j=+n[0],i+n[0].length):-1}function d3_time_parseHour24(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.H=+n[0],i+n[0].length):-1}function d3_time_parseMinutes(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.M=+n[0],i+n[0].length):-1}function d3_time_parseSeconds(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.S=+n[0],i+n[0].length):-1}function d3_time_parseMilliseconds(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+3));return n?(date.L=+n[0],i+n[0].length):-1}function d3_time_zone(d){var z=d.getTimezoneOffset(),zs=z>0?"-":"+",zh=~~(abs(z)/60),zm=abs(z)%60;return zs+d3_time_formatPad(zh,"0",2)+d3_time_formatPad(zm,"0",2)}function d3_time_parseLiteralPercent(date,string,i){d3_time_percentRe.lastIndex=0;var n=d3_time_percentRe.exec(string.substring(i,i+1));return n?i+n[0].length:-1}function d3_time_formatMulti(formats){for(var n=formats.length,i=-1;++ii;++i)listener.point((p0=segment[i])[0],p0[1]);return void listener.lineEnd()}var a=new d3_geo_clipPolygonIntersection(p0,segment,null,!0),b=new d3_geo_clipPolygonIntersection(p0,null,a,!1);a.o=b,subject.push(a),clip.push(b),a=new d3_geo_clipPolygonIntersection(p1,segment,null,!1),b=new d3_geo_clipPolygonIntersection(p1,null,a,!0),a.o=b,subject.push(a),clip.push(b)}}),clip.sort(compare),d3_geo_clipPolygonLinkCircular(subject),d3_geo_clipPolygonLinkCircular(clip),subject.length){for(var i=0,entry=clipStartInside,n=clip.length;n>i;++i)clip[i].e=entry=!entry;for(var points,point,start=subject[0];;){for(var current=start,isSubject=!0;current.v;)if((current=current.n)===start)return;points=current.z,listener.lineStart();do{if(current.v=current.o.v=!0,current.e){if(isSubject)for(var i=0,n=points.length;n>i;++i)listener.point((point=points[i])[0],point[1]);else interpolate(current.x,current.n.x,1,listener);current=current.n}else{if(isSubject){points=current.p.z;for(var i=points.length-1;i>=0;--i)listener.point((point=points[i])[0],point[1])}else interpolate(current.x,current.p.x,-1,listener);current=current.p}current=current.o,points=current.z,isSubject=!isSubject}while(!current.v);listener.lineEnd()}}}function d3_geo_clipPolygonLinkCircular(array){if(n=array.length){for(var n,b,i=0,a=array[0];++i1&&2&clean&&ringSegments.push(ringSegments.pop().concat(ringSegments.shift())),segments.push(ringSegments.filter(d3_geo_clipSegmentLength1))}}var segments,polygon,ring,line=clipLine(listener),rotatedClipStart=rotate.invert(clipStart[0],clipStart[1]),clip={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){clip.point=pointRing,clip.lineStart=ringStart,clip.lineEnd=ringEnd,segments=[],polygon=[],listener.polygonStart()},polygonEnd:function(){clip.point=point,clip.lineStart=lineStart,clip.lineEnd=lineEnd,segments=d3.merge(segments);var clipStartInside=d3_geo_pointInPolygon(rotatedClipStart,polygon);segments.length?d3_geo_clipPolygon(segments,d3_geo_clipSort,clipStartInside,interpolate,listener):clipStartInside&&(listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd()),listener.polygonEnd(),segments=polygon=null},sphere:function(){listener.polygonStart(),listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd(),listener.polygonEnd()}},buffer=d3_geo_clipBufferListener(),ringListener=clipLine(buffer);return clip}}function d3_geo_clipSegmentLength1(segment){return segment.length>1}function d3_geo_clipBufferListener(){var line,lines=[];return{lineStart:function(){lines.push(line=[])},point:function(λ,φ){line.push([λ,φ])},lineEnd:d3_noop,buffer:function(){var buffer=lines;return lines=[],line=null,buffer},rejoin:function(){lines.length>1&&lines.push(lines.pop().concat(lines.shift()))}}}function d3_geo_clipSort(a,b){return((a=a.x)[0]<0?a[1]-halfπ-ε:halfπ-a[1])-((b=b.x)[0]<0?b[1]-halfπ-ε:halfπ-b[1])}function d3_geo_pointInPolygon(point,polygon){var meridian=point[0],parallel=point[1],meridianNormal=[Math.sin(meridian),-Math.cos(meridian),0],polarAngle=0,winding=0;d3_geo_areaRingSum.reset();for(var i=0,n=polygon.length;n>i;++i){var ring=polygon[i],m=ring.length;if(m)for(var point0=ring[0],λ0=point0[0],φ0=point0[1]/2+π/4,sinφ0=Math.sin(φ0),cosφ0=Math.cos(φ0),j=1;;){j===m&&(j=0),point=ring[j];var λ=point[0],φ=point[1]/2+π/4,sinφ=Math.sin(φ),cosφ=Math.cos(φ),dλ=λ-λ0,antimeridian=abs(dλ)>π,k=sinφ0*sinφ;if(d3_geo_areaRingSum.add(Math.atan2(k*Math.sin(dλ),cosφ0*cosφ+k*Math.cos(dλ))),polarAngle+=antimeridian?dλ+(dλ>=0?τ:-τ):dλ,antimeridian^λ0>=meridian^λ>=meridian){var arc=d3_geo_cartesianCross(d3_geo_cartesian(point0),d3_geo_cartesian(point));d3_geo_cartesianNormalize(arc);var intersection=d3_geo_cartesianCross(meridianNormal,arc);d3_geo_cartesianNormalize(intersection);var φarc=(antimeridian^dλ>=0?-1:1)*d3_asin(intersection[2]);(parallel>φarc||parallel===φarc&&(arc[0]||arc[1]))&&(winding+=antimeridian^dλ>=0?1:-1)}if(!j++)break;λ0=λ,sinφ0=sinφ,cosφ0=cosφ,point0=point}}return(-ε>polarAngle||ε>polarAngle&&0>d3_geo_areaRingSum)^1&winding}function d3_geo_clipAntimeridianLine(listener){var clean,λ0=0/0,φ0=0/0,sλ0=0/0;return{lineStart:function(){listener.lineStart(),clean=1},point:function(λ1,φ1){var sλ1=λ1>0?π:-π,dλ=abs(λ1-λ0);abs(dλ-π)<ε?(listener.point(λ0,φ0=(φ0+φ1)/2>0?halfπ:-halfπ),listener.point(sλ0,φ0),listener.lineEnd(),listener.lineStart(),listener.point(sλ1,φ0),listener.point(λ1,φ0),clean=0):sλ0!==sλ1&&dλ>=π&&(abs(λ0-sλ0)<ε&&(λ0-=sλ0*ε),abs(λ1-sλ1)<ε&&(λ1-=sλ1*ε),φ0=d3_geo_clipAntimeridianIntersect(λ0,φ0,λ1,φ1),listener.point(sλ0,φ0),listener.lineEnd(),listener.lineStart(),listener.point(sλ1,φ0),clean=0),listener.point(λ0=λ1,φ0=φ1),sλ0=sλ1},lineEnd:function(){listener.lineEnd(),λ0=φ0=0/0},clean:function(){return 2-clean}}}function d3_geo_clipAntimeridianIntersect(λ0,φ0,λ1,φ1){var cosφ0,cosφ1,sinλ0_λ1=Math.sin(λ0-λ1);return abs(sinλ0_λ1)>ε?Math.atan((Math.sin(φ0)*(cosφ1=Math.cos(φ1))*Math.sin(λ1)-Math.sin(φ1)*(cosφ0=Math.cos(φ0))*Math.sin(λ0))/(cosφ0*cosφ1*sinλ0_λ1)):(φ0+φ1)/2}function d3_geo_clipAntimeridianInterpolate(from,to,direction,listener){var φ;if(null==from)φ=direction*halfπ,listener.point(-π,φ),listener.point(0,φ),listener.point(π,φ),listener.point(π,0),listener.point(π,-φ),listener.point(0,-φ),listener.point(-π,-φ),listener.point(-π,0),listener.point(-π,φ);else if(abs(from[0]-to[0])>ε){var s=from[0]cr}function clipLine(listener){var point0,c0,v0,v00,clean;return{lineStart:function(){v00=v0=!1,clean=1},point:function(λ,φ){var point2,point1=[λ,φ],v=visible(λ,φ),c=smallRadius?v?0:code(λ,φ):v?code(λ+(0>λ?π:-π),φ):0;if(!point0&&(v00=v0=v)&&listener.lineStart(),v!==v0&&(point2=intersect(point0,point1),(d3_geo_sphericalEqual(point0,point2)||d3_geo_sphericalEqual(point1,point2))&&(point1[0]+=ε,point1[1]+=ε,v=visible(point1[0],point1[1]))),v!==v0)clean=0,v?(listener.lineStart(),point2=intersect(point1,point0),listener.point(point2[0],point2[1])):(point2=intersect(point0,point1),listener.point(point2[0],point2[1]),listener.lineEnd()),point0=point2;else if(notHemisphere&&point0&&smallRadius^v){var t;c&c0||!(t=intersect(point1,point0,!0))||(clean=0,smallRadius?(listener.lineStart(),listener.point(t[0][0],t[0][1]),listener.point(t[1][0],t[1][1]),listener.lineEnd()):(listener.point(t[1][0],t[1][1]),listener.lineEnd(),listener.lineStart(),listener.point(t[0][0],t[0][1]))) -}!v||point0&&d3_geo_sphericalEqual(point0,point1)||listener.point(point1[0],point1[1]),point0=point1,v0=v,c0=c},lineEnd:function(){v0&&listener.lineEnd(),point0=null},clean:function(){return clean|(v00&&v0)<<1}}}function intersect(a,b,two){var pa=d3_geo_cartesian(a),pb=d3_geo_cartesian(b),n1=[1,0,0],n2=d3_geo_cartesianCross(pa,pb),n2n2=d3_geo_cartesianDot(n2,n2),n1n2=n2[0],determinant=n2n2-n1n2*n1n2;if(!determinant)return!two&&a;var c1=cr*n2n2/determinant,c2=-cr*n1n2/determinant,n1xn2=d3_geo_cartesianCross(n1,n2),A=d3_geo_cartesianScale(n1,c1),B=d3_geo_cartesianScale(n2,c2);d3_geo_cartesianAdd(A,B);var u=n1xn2,w=d3_geo_cartesianDot(A,u),uu=d3_geo_cartesianDot(u,u),t2=w*w-uu*(d3_geo_cartesianDot(A,A)-1);if(!(0>t2)){var t=Math.sqrt(t2),q=d3_geo_cartesianScale(u,(-w-t)/uu);if(d3_geo_cartesianAdd(q,A),q=d3_geo_spherical(q),!two)return q;var z,λ0=a[0],λ1=b[0],φ0=a[1],φ1=b[1];λ0>λ1&&(z=λ0,λ0=λ1,λ1=z);var δλ=λ1-λ0,polar=abs(δλ-π)<ε,meridian=polar||ε>δλ;if(!polar&&φ0>φ1&&(z=φ0,φ0=φ1,φ1=z),meridian?polar?φ0+φ1>0^q[1]<(abs(q[0]-λ0)<ε?φ0:φ1):φ0<=q[1]&&q[1]<=φ1:δλ>π^(λ0<=q[0]&&q[0]<=λ1)){var q1=d3_geo_cartesianScale(u,(-w+t)/uu);return d3_geo_cartesianAdd(q1,A),[q,d3_geo_spherical(q1)]}}}function code(λ,φ){var r=smallRadius?radius:π-radius,code=0;return-r>λ?code|=1:λ>r&&(code|=2),-r>φ?code|=4:φ>r&&(code|=8),code}var cr=Math.cos(radius),smallRadius=cr>0,notHemisphere=abs(cr)>ε,interpolate=d3_geo_circleInterpolate(radius,6*d3_radians);return d3_geo_clip(visible,clipLine,interpolate,smallRadius?[0,-radius]:[-π,radius-π])}function d3_geom_clipLine(x0,y0,x1,y1){return function(line){var r,a=line.a,b=line.b,ax=a.x,ay=a.y,bx=b.x,by=b.y,t0=0,t1=1,dx=bx-ax,dy=by-ay;if(r=x0-ax,dx||!(r>0)){if(r/=dx,0>dx){if(t0>r)return;t1>r&&(t1=r)}else if(dx>0){if(r>t1)return;r>t0&&(t0=r)}if(r=x1-ax,dx||!(0>r)){if(r/=dx,0>dx){if(r>t1)return;r>t0&&(t0=r)}else if(dx>0){if(t0>r)return;t1>r&&(t1=r)}if(r=y0-ay,dy||!(r>0)){if(r/=dy,0>dy){if(t0>r)return;t1>r&&(t1=r)}else if(dy>0){if(r>t1)return;r>t0&&(t0=r)}if(r=y1-ay,dy||!(0>r)){if(r/=dy,0>dy){if(r>t1)return;r>t0&&(t0=r)}else if(dy>0){if(t0>r)return;t1>r&&(t1=r)}return t0>0&&(line.a={x:ax+t0*dx,y:ay+t0*dy}),1>t1&&(line.b={x:ax+t1*dx,y:ay+t1*dy}),line}}}}}}function d3_geo_clipExtent(x0,y0,x1,y1){function corner(p,direction){return abs(p[0]-x0)<ε?direction>0?0:3:abs(p[0]-x1)<ε?direction>0?2:1:abs(p[1]-y0)<ε?direction>0?1:0:direction>0?3:2}function compare(a,b){return comparePoints(a.x,b.x)}function comparePoints(a,b){var ca=corner(a,1),cb=corner(b,1);return ca!==cb?ca-cb:0===ca?b[1]-a[1]:1===ca?a[0]-b[0]:2===ca?a[1]-b[1]:b[0]-a[0]}return function(listener){function insidePolygon(p){for(var wn=0,n=polygon.length,y=p[1],i=0;n>i;++i)for(var b,j=1,v=polygon[i],m=v.length,a=v[0];m>j;++j)b=v[j],a[1]<=y?b[1]>y&&d3_cross2d(a,b,p)>0&&++wn:b[1]<=y&&d3_cross2d(a,b,p)<0&&--wn,a=b;return 0!==wn}function interpolate(from,to,direction,listener){var a=0,a1=0;if(null==from||(a=corner(from,direction))!==(a1=corner(to,direction))||comparePoints(from,to)<0^direction>0){do listener.point(0===a||3===a?x0:x1,a>1?y1:y0);while((a=(a+direction+4)%4)!==a1)}else listener.point(to[0],to[1])}function pointVisible(x,y){return x>=x0&&x1>=x&&y>=y0&&y1>=y}function point(x,y){pointVisible(x,y)&&listener.point(x,y)}function lineStart(){clip.point=linePoint,polygon&&polygon.push(ring=[]),first=!0,v_=!1,x_=y_=0/0}function lineEnd(){segments&&(linePoint(x__,y__),v__&&v_&&bufferListener.rejoin(),segments.push(bufferListener.buffer())),clip.point=point,v_&&listener.lineEnd()}function linePoint(x,y){x=Math.max(-d3_geo_clipExtentMAX,Math.min(d3_geo_clipExtentMAX,x)),y=Math.max(-d3_geo_clipExtentMAX,Math.min(d3_geo_clipExtentMAX,y));var v=pointVisible(x,y);if(polygon&&ring.push([x,y]),first)x__=x,y__=y,v__=v,first=!1,v&&(listener.lineStart(),listener.point(x,y));else if(v&&v_)listener.point(x,y);else{var l={a:{x:x_,y:y_},b:{x:x,y:y}};clipLine(l)?(v_||(listener.lineStart(),listener.point(l.a.x,l.a.y)),listener.point(l.b.x,l.b.y),v||listener.lineEnd(),clean=!1):v&&(listener.lineStart(),listener.point(x,y),clean=!1)}x_=x,y_=y,v_=v}var segments,polygon,ring,x__,y__,v__,x_,y_,v_,first,clean,listener_=listener,bufferListener=d3_geo_clipBufferListener(),clipLine=d3_geom_clipLine(x0,y0,x1,y1),clip={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){listener=bufferListener,segments=[],polygon=[],clean=!0},polygonEnd:function(){listener=listener_,segments=d3.merge(segments);var clipStartInside=insidePolygon([x0,y1]),inside=clean&&clipStartInside,visible=segments.length;(inside||visible)&&(listener.polygonStart(),inside&&(listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd()),visible&&d3_geo_clipPolygon(segments,compare,clipStartInside,interpolate,listener),listener.polygonEnd()),segments=polygon=ring=null}};return clip}}function d3_geo_compose(a,b){function compose(x,y){return x=a(x,y),b(x[0],x[1])}return a.invert&&b.invert&&(compose.invert=function(x,y){return x=b.invert(x,y),x&&a.invert(x[0],x[1])}),compose}function d3_geo_conic(projectAt){var φ0=0,φ1=π/3,m=d3_geo_projectionMutator(projectAt),p=m(φ0,φ1);return p.parallels=function(_){return arguments.length?m(φ0=_[0]*π/180,φ1=_[1]*π/180):[φ0/π*180,φ1/π*180]},p}function d3_geo_conicEqualArea(φ0,φ1){function forward(λ,φ){var ρ=Math.sqrt(C-2*n*Math.sin(φ))/n;return[ρ*Math.sin(λ*=n),ρ0-ρ*Math.cos(λ)]}var sinφ0=Math.sin(φ0),n=(sinφ0+Math.sin(φ1))/2,C=1+sinφ0*(2*n-sinφ0),ρ0=Math.sqrt(C)/n;return forward.invert=function(x,y){var ρ0_y=ρ0-y;return[Math.atan2(x,ρ0_y)/n,d3_asin((C-(x*x+ρ0_y*ρ0_y)*n*n)/(2*n))]},forward}function d3_geo_pathAreaRingStart(){function nextPoint(x,y){d3_geo_pathAreaPolygon+=y0*x-x0*y,x0=x,y0=y}var x00,y00,x0,y0;d3_geo_pathArea.point=function(x,y){d3_geo_pathArea.point=nextPoint,x00=x0=x,y00=y0=y},d3_geo_pathArea.lineEnd=function(){nextPoint(x00,y00)}}function d3_geo_pathBoundsPoint(x,y){d3_geo_pathBoundsX0>x&&(d3_geo_pathBoundsX0=x),x>d3_geo_pathBoundsX1&&(d3_geo_pathBoundsX1=x),d3_geo_pathBoundsY0>y&&(d3_geo_pathBoundsY0=y),y>d3_geo_pathBoundsY1&&(d3_geo_pathBoundsY1=y)}function d3_geo_pathBuffer(){function point(x,y){buffer.push("M",x,",",y,pointCircle)}function pointLineStart(x,y){buffer.push("M",x,",",y),stream.point=pointLine}function pointLine(x,y){buffer.push("L",x,",",y)}function lineEnd(){stream.point=point}function lineEndPolygon(){buffer.push("Z")}var pointCircle=d3_geo_pathBufferCircle(4.5),buffer=[],stream={point:point,lineStart:function(){stream.point=pointLineStart},lineEnd:lineEnd,polygonStart:function(){stream.lineEnd=lineEndPolygon},polygonEnd:function(){stream.lineEnd=lineEnd,stream.point=point},pointRadius:function(_){return pointCircle=d3_geo_pathBufferCircle(_),stream},result:function(){if(buffer.length){var result=buffer.join("");return buffer=[],result}}};return stream}function d3_geo_pathBufferCircle(radius){return"m0,"+radius+"a"+radius+","+radius+" 0 1,1 0,"+-2*radius+"a"+radius+","+radius+" 0 1,1 0,"+2*radius+"z"}function d3_geo_pathCentroidPoint(x,y){d3_geo_centroidX0+=x,d3_geo_centroidY0+=y,++d3_geo_centroidZ0}function d3_geo_pathCentroidLineStart(){function nextPoint(x,y){var dx=x-x0,dy=y-y0,z=Math.sqrt(dx*dx+dy*dy);d3_geo_centroidX1+=z*(x0+x)/2,d3_geo_centroidY1+=z*(y0+y)/2,d3_geo_centroidZ1+=z,d3_geo_pathCentroidPoint(x0=x,y0=y)}var x0,y0;d3_geo_pathCentroid.point=function(x,y){d3_geo_pathCentroid.point=nextPoint,d3_geo_pathCentroidPoint(x0=x,y0=y)}}function d3_geo_pathCentroidLineEnd(){d3_geo_pathCentroid.point=d3_geo_pathCentroidPoint}function d3_geo_pathCentroidRingStart(){function nextPoint(x,y){var dx=x-x0,dy=y-y0,z=Math.sqrt(dx*dx+dy*dy);d3_geo_centroidX1+=z*(x0+x)/2,d3_geo_centroidY1+=z*(y0+y)/2,d3_geo_centroidZ1+=z,z=y0*x-x0*y,d3_geo_centroidX2+=z*(x0+x),d3_geo_centroidY2+=z*(y0+y),d3_geo_centroidZ2+=3*z,d3_geo_pathCentroidPoint(x0=x,y0=y)}var x00,y00,x0,y0;d3_geo_pathCentroid.point=function(x,y){d3_geo_pathCentroid.point=nextPoint,d3_geo_pathCentroidPoint(x00=x0=x,y00=y0=y)},d3_geo_pathCentroid.lineEnd=function(){nextPoint(x00,y00)}}function d3_geo_pathContext(context){function point(x,y){context.moveTo(x,y),context.arc(x,y,pointRadius,0,τ)}function pointLineStart(x,y){context.moveTo(x,y),stream.point=pointLine}function pointLine(x,y){context.lineTo(x,y)}function lineEnd(){stream.point=point}function lineEndPolygon(){context.closePath()}var pointRadius=4.5,stream={point:point,lineStart:function(){stream.point=pointLineStart},lineEnd:lineEnd,polygonStart:function(){stream.lineEnd=lineEndPolygon},polygonEnd:function(){stream.lineEnd=lineEnd,stream.point=point},pointRadius:function(_){return pointRadius=_,stream},result:d3_noop};return stream}function d3_geo_resample(project){function resample(stream){return(maxDepth?resampleRecursive:resampleNone)(stream)}function resampleNone(stream){return d3_geo_transformPoint(stream,function(x,y){x=project(x,y),stream.point(x[0],x[1])})}function resampleRecursive(stream){function point(x,y){x=project(x,y),stream.point(x[0],x[1])}function lineStart(){x0=0/0,resample.point=linePoint,stream.lineStart()}function linePoint(λ,φ){var c=d3_geo_cartesian([λ,φ]),p=project(λ,φ);resampleLineTo(x0,y0,λ0,a0,b0,c0,x0=p[0],y0=p[1],λ0=λ,a0=c[0],b0=c[1],c0=c[2],maxDepth,stream),stream.point(x0,y0)}function lineEnd(){resample.point=point,stream.lineEnd()}function ringStart(){lineStart(),resample.point=ringPoint,resample.lineEnd=ringEnd}function ringPoint(λ,φ){linePoint(λ00=λ,φ00=φ),x00=x0,y00=y0,a00=a0,b00=b0,c00=c0,resample.point=linePoint}function ringEnd(){resampleLineTo(x0,y0,λ0,a0,b0,c0,x00,y00,λ00,a00,b00,c00,maxDepth,stream),resample.lineEnd=lineEnd,lineEnd()}var λ00,φ00,x00,y00,a00,b00,c00,λ0,x0,y0,a0,b0,c0,resample={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){stream.polygonStart(),resample.lineStart=ringStart},polygonEnd:function(){stream.polygonEnd(),resample.lineStart=lineStart}};return resample}function resampleLineTo(x0,y0,λ0,a0,b0,c0,x1,y1,λ1,a1,b1,c1,depth,stream){var dx=x1-x0,dy=y1-y0,d2=dx*dx+dy*dy;if(d2>4*δ2&&depth--){var a=a0+a1,b=b0+b1,c=c0+c1,m=Math.sqrt(a*a+b*b+c*c),φ2=Math.asin(c/=m),λ2=abs(abs(c)-1)<ε||abs(λ0-λ1)<ε?(λ0+λ1)/2:Math.atan2(b,a),p=project(λ2,φ2),x2=p[0],y2=p[1],dx2=x2-x0,dy2=y2-y0,dz=dy*dx2-dx*dy2;(dz*dz/d2>δ2||abs((dx*dx2+dy*dy2)/d2-.5)>.3||cosMinDistance>a0*a1+b0*b1+c0*c1)&&(resampleLineTo(x0,y0,λ0,a0,b0,c0,x2,y2,λ2,a/=m,b/=m,c,depth,stream),stream.point(x2,y2),resampleLineTo(x2,y2,λ2,a,b,c,x1,y1,λ1,a1,b1,c1,depth,stream))}}var δ2=.5,cosMinDistance=Math.cos(30*d3_radians),maxDepth=16;return resample.precision=function(_){return arguments.length?(maxDepth=(δ2=_*_)>0&&16,resample):Math.sqrt(δ2)},resample}function d3_geo_pathProjectStream(project){var resample=d3_geo_resample(function(x,y){return project([x*d3_degrees,y*d3_degrees])});return function(stream){return d3_geo_projectionRadians(resample(stream))}}function d3_geo_transform(stream){this.stream=stream}function d3_geo_transformPoint(stream,point){return{point:point,sphere:function(){stream.sphere()},lineStart:function(){stream.lineStart()},lineEnd:function(){stream.lineEnd()},polygonStart:function(){stream.polygonStart()},polygonEnd:function(){stream.polygonEnd()}}}function d3_geo_projection(project){return d3_geo_projectionMutator(function(){return project})()}function d3_geo_projectionMutator(projectAt){function projection(point){return point=projectRotate(point[0]*d3_radians,point[1]*d3_radians),[point[0]*k+δx,δy-point[1]*k]}function invert(point){return point=projectRotate.invert((point[0]-δx)/k,(δy-point[1])/k),point&&[point[0]*d3_degrees,point[1]*d3_degrees]}function reset(){projectRotate=d3_geo_compose(rotate=d3_geo_rotation(δλ,δφ,δγ),project);var center=project(λ,φ);return δx=x-center[0]*k,δy=y+center[1]*k,invalidate()}function invalidate(){return stream&&(stream.valid=!1,stream=null),projection}var project,rotate,projectRotate,δx,δy,stream,projectResample=d3_geo_resample(function(x,y){return x=project(x,y),[x[0]*k+δx,δy-x[1]*k]}),k=150,x=480,y=250,λ=0,φ=0,δλ=0,δφ=0,δγ=0,preclip=d3_geo_clipAntimeridian,postclip=d3_identity,clipAngle=null,clipExtent=null;return projection.stream=function(output){return stream&&(stream.valid=!1),stream=d3_geo_projectionRadians(preclip(rotate,projectResample(postclip(output)))),stream.valid=!0,stream},projection.clipAngle=function(_){return arguments.length?(preclip=null==_?(clipAngle=_,d3_geo_clipAntimeridian):d3_geo_clipCircle((clipAngle=+_)*d3_radians),invalidate()):clipAngle},projection.clipExtent=function(_){return arguments.length?(clipExtent=_,postclip=_?d3_geo_clipExtent(_[0][0],_[0][1],_[1][0],_[1][1]):d3_identity,invalidate()):clipExtent},projection.scale=function(_){return arguments.length?(k=+_,reset()):k},projection.translate=function(_){return arguments.length?(x=+_[0],y=+_[1],reset()):[x,y]},projection.center=function(_){return arguments.length?(λ=_[0]%360*d3_radians,φ=_[1]%360*d3_radians,reset()):[λ*d3_degrees,φ*d3_degrees]},projection.rotate=function(_){return arguments.length?(δλ=_[0]%360*d3_radians,δφ=_[1]%360*d3_radians,δγ=_.length>2?_[2]%360*d3_radians:0,reset()):[δλ*d3_degrees,δφ*d3_degrees,δγ*d3_degrees]},d3.rebind(projection,projectResample,"precision"),function(){return project=projectAt.apply(this,arguments),projection.invert=project.invert&&invert,reset()}}function d3_geo_projectionRadians(stream){return d3_geo_transformPoint(stream,function(x,y){stream.point(x*d3_radians,y*d3_radians)})}function d3_geo_equirectangular(λ,φ){return[λ,φ]}function d3_geo_identityRotation(λ,φ){return[λ>π?λ-τ:-π>λ?λ+τ:λ,φ]}function d3_geo_rotation(δλ,δφ,δγ){return δλ?δφ||δγ?d3_geo_compose(d3_geo_rotationλ(δλ),d3_geo_rotationφγ(δφ,δγ)):d3_geo_rotationλ(δλ):δφ||δγ?d3_geo_rotationφγ(δφ,δγ):d3_geo_identityRotation}function d3_geo_forwardRotationλ(δλ){return function(λ,φ){return λ+=δλ,[λ>π?λ-τ:-π>λ?λ+τ:λ,φ]}}function d3_geo_rotationλ(δλ){var rotation=d3_geo_forwardRotationλ(δλ);return rotation.invert=d3_geo_forwardRotationλ(-δλ),rotation}function d3_geo_rotationφγ(δφ,δγ){function rotation(λ,φ){var cosφ=Math.cos(φ),x=Math.cos(λ)*cosφ,y=Math.sin(λ)*cosφ,z=Math.sin(φ),k=z*cosδφ+x*sinδφ;return[Math.atan2(y*cosδγ-k*sinδγ,x*cosδφ-z*sinδφ),d3_asin(k*cosδγ+y*sinδγ)]}var cosδφ=Math.cos(δφ),sinδφ=Math.sin(δφ),cosδγ=Math.cos(δγ),sinδγ=Math.sin(δγ);return rotation.invert=function(λ,φ){var cosφ=Math.cos(φ),x=Math.cos(λ)*cosφ,y=Math.sin(λ)*cosφ,z=Math.sin(φ),k=z*cosδγ-y*sinδγ;return[Math.atan2(y*cosδγ+z*sinδγ,x*cosδφ+k*sinδφ),d3_asin(k*cosδφ-x*sinδφ)]},rotation}function d3_geo_circleInterpolate(radius,precision){var cr=Math.cos(radius),sr=Math.sin(radius);return function(from,to,direction,listener){var step=direction*precision;null!=from?(from=d3_geo_circleAngle(cr,from),to=d3_geo_circleAngle(cr,to),(direction>0?to>from:from>to)&&(from+=direction*τ)):(from=radius+direction*τ,to=radius-.5*step);for(var point,t=from;direction>0?t>to:to>t;t-=step)listener.point((point=d3_geo_spherical([cr,-sr*Math.cos(t),-sr*Math.sin(t)]))[0],point[1])}}function d3_geo_circleAngle(cr,point){var a=d3_geo_cartesian(point);a[0]-=cr,d3_geo_cartesianNormalize(a);var angle=d3_acos(-a[1]);return((-a[2]<0?-angle:angle)+2*Math.PI-ε)%(2*Math.PI)}function d3_geo_graticuleX(y0,y1,dy){var y=d3.range(y0,y1-ε,dy).concat(y1);return function(x){return y.map(function(y){return[x,y]})}}function d3_geo_graticuleY(x0,x1,dx){var x=d3.range(x0,x1-ε,dx).concat(x1);return function(y){return x.map(function(x){return[x,y]})}}function d3_source(d){return d.source}function d3_target(d){return d.target}function d3_geo_interpolate(x0,y0,x1,y1){var cy0=Math.cos(y0),sy0=Math.sin(y0),cy1=Math.cos(y1),sy1=Math.sin(y1),kx0=cy0*Math.cos(x0),ky0=cy0*Math.sin(x0),kx1=cy1*Math.cos(x1),ky1=cy1*Math.sin(x1),d=2*Math.asin(Math.sqrt(d3_haversin(y1-y0)+cy0*cy1*d3_haversin(x1-x0))),k=1/Math.sin(d),interpolate=d?function(t){var B=Math.sin(t*=d)*k,A=Math.sin(d-t)*k,x=A*kx0+B*kx1,y=A*ky0+B*ky1,z=A*sy0+B*sy1;return[Math.atan2(y,x)*d3_degrees,Math.atan2(z,Math.sqrt(x*x+y*y))*d3_degrees]}:function(){return[x0*d3_degrees,y0*d3_degrees]};return interpolate.distance=d,interpolate}function d3_geo_lengthLineStart(){function nextPoint(λ,φ){var sinφ=Math.sin(φ*=d3_radians),cosφ=Math.cos(φ),t=abs((λ*=d3_radians)-λ0),cosΔλ=Math.cos(t);d3_geo_lengthSum+=Math.atan2(Math.sqrt((t=cosφ*Math.sin(t))*t+(t=cosφ0*sinφ-sinφ0*cosφ*cosΔλ)*t),sinφ0*sinφ+cosφ0*cosφ*cosΔλ),λ0=λ,sinφ0=sinφ,cosφ0=cosφ}var λ0,sinφ0,cosφ0;d3_geo_length.point=function(λ,φ){λ0=λ*d3_radians,sinφ0=Math.sin(φ*=d3_radians),cosφ0=Math.cos(φ),d3_geo_length.point=nextPoint},d3_geo_length.lineEnd=function(){d3_geo_length.point=d3_geo_length.lineEnd=d3_noop}}function d3_geo_azimuthal(scale,angle){function azimuthal(λ,φ){var cosλ=Math.cos(λ),cosφ=Math.cos(φ),k=scale(cosλ*cosφ);return[k*cosφ*Math.sin(λ),k*Math.sin(φ)]}return azimuthal.invert=function(x,y){var ρ=Math.sqrt(x*x+y*y),c=angle(ρ),sinc=Math.sin(c),cosc=Math.cos(c);return[Math.atan2(x*sinc,ρ*cosc),Math.asin(ρ&&y*sinc/ρ)]},azimuthal}function d3_geo_conicConformal(φ0,φ1){function forward(λ,φ){var ρ=abs(abs(φ)-halfπ)<ε?0:F/Math.pow(t(φ),n);return[ρ*Math.sin(n*λ),F-ρ*Math.cos(n*λ)]}var cosφ0=Math.cos(φ0),t=function(φ){return Math.tan(π/4+φ/2)},n=φ0===φ1?Math.sin(φ0):Math.log(cosφ0/Math.cos(φ1))/Math.log(t(φ1)/t(φ0)),F=cosφ0*Math.pow(t(φ0),n)/n;return n?(forward.invert=function(x,y){var ρ0_y=F-y,ρ=d3_sgn(n)*Math.sqrt(x*x+ρ0_y*ρ0_y);return[Math.atan2(x,ρ0_y)/n,2*Math.atan(Math.pow(F/ρ,1/n))-halfπ]},forward):d3_geo_mercator}function d3_geo_conicEquidistant(φ0,φ1){function forward(λ,φ){var ρ=G-φ;return[ρ*Math.sin(n*λ),G-ρ*Math.cos(n*λ)]}var cosφ0=Math.cos(φ0),n=φ0===φ1?Math.sin(φ0):(cosφ0-Math.cos(φ1))/(φ1-φ0),G=cosφ0/n+φ0;return abs(n)<ε?d3_geo_equirectangular:(forward.invert=function(x,y){var ρ0_y=G-y;return[Math.atan2(x,ρ0_y)/n,G-d3_sgn(n)*Math.sqrt(x*x+ρ0_y*ρ0_y)]},forward)}function d3_geo_mercator(λ,φ){return[λ,Math.log(Math.tan(π/4+φ/2))]}function d3_geo_mercatorProjection(project){var clipAuto,m=d3_geo_projection(project),scale=m.scale,translate=m.translate,clipExtent=m.clipExtent;return m.scale=function(){var v=scale.apply(m,arguments);return v===m?clipAuto?m.clipExtent(null):m:v},m.translate=function(){var v=translate.apply(m,arguments);return v===m?clipAuto?m.clipExtent(null):m:v},m.clipExtent=function(_){var v=clipExtent.apply(m,arguments);if(v===m){if(clipAuto=null==_){var k=π*scale(),t=translate();clipExtent([[t[0]-k,t[1]-k],[t[0]+k,t[1]+k]])}}else clipAuto&&(v=null);return v},m.clipExtent(null)}function d3_geo_transverseMercator(λ,φ){return[Math.log(Math.tan(π/4+φ/2)),-λ]}function d3_geom_pointX(d){return d[0]}function d3_geom_pointY(d){return d[1]}function d3_geom_hullUpper(points){for(var n=points.length,hull=[0,1],hs=2,i=2;n>i;i++){for(;hs>1&&d3_cross2d(points[hull[hs-2]],points[hull[hs-1]],points[i])<=0;)--hs;hull[hs++]=i}return hull.slice(0,hs)}function d3_geom_hullOrder(a,b){return a[0]-b[0]||a[1]-b[1]}function d3_geom_polygonInside(p,a,b){return(b[0]-a[0])*(p[1]-a[1])<(b[1]-a[1])*(p[0]-a[0])}function d3_geom_polygonIntersect(c,d,a,b){var x1=c[0],x3=a[0],x21=d[0]-x1,x43=b[0]-x3,y1=c[1],y3=a[1],y21=d[1]-y1,y43=b[1]-y3,ua=(x43*(y1-y3)-y43*(x1-x3))/(y43*x21-x43*y21);return[x1+ua*x21,y1+ua*y21]}function d3_geom_polygonClosed(coordinates){var a=coordinates[0],b=coordinates[coordinates.length-1];return!(a[0]-b[0]||a[1]-b[1])}function d3_geom_voronoiBeach(){d3_geom_voronoiRedBlackNode(this),this.edge=this.site=this.circle=null}function d3_geom_voronoiCreateBeach(site){var beach=d3_geom_voronoiBeachPool.pop()||new d3_geom_voronoiBeach;return beach.site=site,beach}function d3_geom_voronoiDetachBeach(beach){d3_geom_voronoiDetachCircle(beach),d3_geom_voronoiBeaches.remove(beach),d3_geom_voronoiBeachPool.push(beach),d3_geom_voronoiRedBlackNode(beach)}function d3_geom_voronoiRemoveBeach(beach){var circle=beach.circle,x=circle.x,y=circle.cy,vertex={x:x,y:y},previous=beach.P,next=beach.N,disappearing=[beach];d3_geom_voronoiDetachBeach(beach);for(var lArc=previous;lArc.circle&&abs(x-lArc.circle.x)<ε&&abs(y-lArc.circle.cy)<ε;)previous=lArc.P,disappearing.unshift(lArc),d3_geom_voronoiDetachBeach(lArc),lArc=previous;disappearing.unshift(lArc),d3_geom_voronoiDetachCircle(lArc);for(var rArc=next;rArc.circle&&abs(x-rArc.circle.x)<ε&&abs(y-rArc.circle.cy)<ε;)next=rArc.N,disappearing.push(rArc),d3_geom_voronoiDetachBeach(rArc),rArc=next;disappearing.push(rArc),d3_geom_voronoiDetachCircle(rArc);var iArc,nArcs=disappearing.length;for(iArc=1;nArcs>iArc;++iArc)rArc=disappearing[iArc],lArc=disappearing[iArc-1],d3_geom_voronoiSetEdgeEnd(rArc.edge,lArc.site,rArc.site,vertex);lArc=disappearing[0],rArc=disappearing[nArcs-1],rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,rArc.site,null,vertex),d3_geom_voronoiAttachCircle(lArc),d3_geom_voronoiAttachCircle(rArc)}function d3_geom_voronoiAddBeach(site){for(var lArc,rArc,dxl,dxr,x=site.x,directrix=site.y,node=d3_geom_voronoiBeaches._;node;)if(dxl=d3_geom_voronoiLeftBreakPoint(node,directrix)-x,dxl>ε)node=node.L;else{if(dxr=x-d3_geom_voronoiRightBreakPoint(node,directrix),!(dxr>ε)){dxl>-ε?(lArc=node.P,rArc=node):dxr>-ε?(lArc=node,rArc=node.N):lArc=rArc=node;break}if(!node.R){lArc=node;break}node=node.R}var newArc=d3_geom_voronoiCreateBeach(site);if(d3_geom_voronoiBeaches.insert(lArc,newArc),lArc||rArc){if(lArc===rArc)return d3_geom_voronoiDetachCircle(lArc),rArc=d3_geom_voronoiCreateBeach(lArc.site),d3_geom_voronoiBeaches.insert(newArc,rArc),newArc.edge=rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site),d3_geom_voronoiAttachCircle(lArc),void d3_geom_voronoiAttachCircle(rArc);if(!rArc)return void(newArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site));d3_geom_voronoiDetachCircle(lArc),d3_geom_voronoiDetachCircle(rArc);var lSite=lArc.site,ax=lSite.x,ay=lSite.y,bx=site.x-ax,by=site.y-ay,rSite=rArc.site,cx=rSite.x-ax,cy=rSite.y-ay,d=2*(bx*cy-by*cx),hb=bx*bx+by*by,hc=cx*cx+cy*cy,vertex={x:(cy*hb-by*hc)/d+ax,y:(bx*hc-cx*hb)/d+ay};d3_geom_voronoiSetEdgeEnd(rArc.edge,lSite,rSite,vertex),newArc.edge=d3_geom_voronoiCreateEdge(lSite,site,null,vertex),rArc.edge=d3_geom_voronoiCreateEdge(site,rSite,null,vertex),d3_geom_voronoiAttachCircle(lArc),d3_geom_voronoiAttachCircle(rArc)}}function d3_geom_voronoiLeftBreakPoint(arc,directrix){var site=arc.site,rfocx=site.x,rfocy=site.y,pby2=rfocy-directrix;if(!pby2)return rfocx;var lArc=arc.P;if(!lArc)return-1/0;site=lArc.site;var lfocx=site.x,lfocy=site.y,plby2=lfocy-directrix;if(!plby2)return lfocx;var hl=lfocx-rfocx,aby2=1/pby2-1/plby2,b=hl/plby2;return aby2?(-b+Math.sqrt(b*b-2*aby2*(hl*hl/(-2*plby2)-lfocy+plby2/2+rfocy-pby2/2)))/aby2+rfocx:(rfocx+lfocx)/2}function d3_geom_voronoiRightBreakPoint(arc,directrix){var rArc=arc.N;if(rArc)return d3_geom_voronoiLeftBreakPoint(rArc,directrix);var site=arc.site;return site.y===directrix?site.x:1/0}function d3_geom_voronoiCell(site){this.site=site,this.edges=[]}function d3_geom_voronoiCloseCells(extent){for(var x2,y2,x3,y3,cell,iHalfEdge,halfEdges,nHalfEdges,start,end,x0=extent[0][0],x1=extent[1][0],y0=extent[0][1],y1=extent[1][1],cells=d3_geom_voronoiCells,iCell=cells.length;iCell--;)if(cell=cells[iCell],cell&&cell.prepare())for(halfEdges=cell.edges,nHalfEdges=halfEdges.length,iHalfEdge=0;nHalfEdges>iHalfEdge;)end=halfEdges[iHalfEdge].end(),x3=end.x,y3=end.y,start=halfEdges[++iHalfEdge%nHalfEdges].start(),x2=start.x,y2=start.y,(abs(x3-x2)>ε||abs(y3-y2)>ε)&&(halfEdges.splice(iHalfEdge,0,new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site,end,abs(x3-x0)<ε&&y1-y3>ε?{x:x0,y:abs(x2-x0)<ε?y2:y1}:abs(y3-y1)<ε&&x1-x3>ε?{x:abs(y2-y1)<ε?x2:x1,y:y1}:abs(x3-x1)<ε&&y3-y0>ε?{x:x1,y:abs(x2-x1)<ε?y2:y0}:abs(y3-y0)<ε&&x3-x0>ε?{x:abs(y2-y0)<ε?x2:x0,y:y0}:null),cell.site,null)),++nHalfEdges)}function d3_geom_voronoiHalfEdgeOrder(a,b){return b.angle-a.angle}function d3_geom_voronoiCircle(){d3_geom_voronoiRedBlackNode(this),this.x=this.y=this.arc=this.site=this.cy=null}function d3_geom_voronoiAttachCircle(arc){var lArc=arc.P,rArc=arc.N;if(lArc&&rArc){var lSite=lArc.site,cSite=arc.site,rSite=rArc.site;if(lSite!==rSite){var bx=cSite.x,by=cSite.y,ax=lSite.x-bx,ay=lSite.y-by,cx=rSite.x-bx,cy=rSite.y-by,d=2*(ax*cy-ay*cx);if(!(d>=-ε2)){var ha=ax*ax+ay*ay,hc=cx*cx+cy*cy,x=(cy*ha-ay*hc)/d,y=(ax*hc-cx*ha)/d,cy=y+by,circle=d3_geom_voronoiCirclePool.pop()||new d3_geom_voronoiCircle;circle.arc=arc,circle.site=cSite,circle.x=x+bx,circle.y=cy+Math.sqrt(x*x+y*y),circle.cy=cy,arc.circle=circle;for(var before=null,node=d3_geom_voronoiCircles._;node;)if(circle.yfx||fx>=x1)return;if(lx>rx){if(va){if(va.y>=y1)return}else va={x:fx,y:y0};vb={x:fx,y:y1}}else{if(va){if(va.yfm||fm>1)if(lx>rx){if(va){if(va.y>=y1)return}else va={x:(y0-fb)/fm,y:y0};vb={x:(y1-fb)/fm,y:y1}}else{if(va){if(va.yly){if(va){if(va.x>=x1)return}else va={x:x0,y:fm*x0+fb};vb={x:x1,y:fm*x1+fb}}else{if(va){if(va.xi;++i)if(o=q[i],o.x==m[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),j=i+1;n>j;++j)q[j].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),j=i+1;n>j;++j)q[j].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),j=i+1;n>j;++j)q[j].i--;q.splice(i,1),n--,i--}else o.x=d3_interpolateNumber(parseFloat(m[0]),parseFloat(o.x));for(;n>i;)o=q.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),n--;return 1===s.length?null==s[0]?(o=q[0].x,function(t){return o(t)+""}):function(){return b}:function(t){for(i=0;n>i;++i)s[(o=q[i]).i]=o.x(t);return s.join("")}}function d3_interpolate(a,b){for(var f,i=d3.interpolators.length;--i>=0&&!(f=d3.interpolators[i](a,b)););return f}function d3_interpolateArray(a,b){var i,x=[],c=[],na=a.length,nb=b.length,n0=Math.min(a.length,b.length);for(i=0;n0>i;++i)x.push(d3_interpolate(a[i],b[i]));for(;na>i;++i)c[i]=a[i];for(;nb>i;++i)c[i]=b[i];return function(t){for(i=0;n0>i;++i)c[i]=x[i](t);return c}}function d3_ease_clamp(f){return function(t){return 0>=t?0:t>=1?1:f(t)}}function d3_ease_reverse(f){return function(t){return 1-f(1-t)}}function d3_ease_reflect(f){return function(t){return.5*(.5>t?f(2*t):2-f(2-2*t))}}function d3_ease_quad(t){return t*t}function d3_ease_cubic(t){return t*t*t}function d3_ease_cubicInOut(t){if(0>=t)return 0;if(t>=1)return 1;var t2=t*t,t3=t2*t;return 4*(.5>t?t3:3*(t-t2)+t3-.75)}function d3_ease_poly(e){return function(t){return Math.pow(t,e)}}function d3_ease_sin(t){return 1-Math.cos(t*halfπ)}function d3_ease_exp(t){return Math.pow(2,10*(t-1))}function d3_ease_circle(t){return 1-Math.sqrt(1-t*t)}function d3_ease_elastic(a,p){var s;return arguments.length<2&&(p=.45),arguments.length?s=p/τ*Math.asin(1/a):(a=1,s=p/4),function(t){return 1+a*Math.pow(2,-10*t)*Math.sin((t-s)*τ/p)}}function d3_ease_back(s){return s||(s=1.70158),function(t){return t*t*((s+1)*t-s)}}function d3_ease_bounce(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375 -}function d3_interpolateHcl(a,b){a=d3.hcl(a),b=d3.hcl(b);var ah=a.h,ac=a.c,al=a.l,bh=b.h-ah,bc=b.c-ac,bl=b.l-al;return isNaN(bc)&&(bc=0,ac=isNaN(ac)?b.c:ac),isNaN(bh)?(bh=0,ah=isNaN(ah)?b.h:ah):bh>180?bh-=360:-180>bh&&(bh+=360),function(t){return d3_hcl_lab(ah+bh*t,ac+bc*t,al+bl*t)+""}}function d3_interpolateHsl(a,b){a=d3.hsl(a),b=d3.hsl(b);var ah=a.h,as=a.s,al=a.l,bh=b.h-ah,bs=b.s-as,bl=b.l-al;return isNaN(bs)&&(bs=0,as=isNaN(as)?b.s:as),isNaN(bh)?(bh=0,ah=isNaN(ah)?b.h:ah):bh>180?bh-=360:-180>bh&&(bh+=360),function(t){return d3_hsl_rgb(ah+bh*t,as+bs*t,al+bl*t)+""}}function d3_interpolateLab(a,b){a=d3.lab(a),b=d3.lab(b);var al=a.l,aa=a.a,ab=a.b,bl=b.l-al,ba=b.a-aa,bb=b.b-ab;return function(t){return d3_lab_rgb(al+bl*t,aa+ba*t,ab+bb*t)+""}}function d3_interpolateRound(a,b){return b-=a,function(t){return Math.round(a+b*t)}}function d3_transform(m){var r0=[m.a,m.b],r1=[m.c,m.d],kx=d3_transformNormalize(r0),kz=d3_transformDot(r0,r1),ky=d3_transformNormalize(d3_transformCombine(r1,r0,-kz))||0;r0[0]*r1[1]180?rb+=360:rb-ra>180&&(ra+=360),q.push({i:s.push(s.pop()+"rotate(",null,")")-2,x:d3_interpolateNumber(ra,rb)})):rb&&s.push(s.pop()+"rotate("+rb+")"),wa!=wb?q.push({i:s.push(s.pop()+"skewX(",null,")")-2,x:d3_interpolateNumber(wa,wb)}):wb&&s.push(s.pop()+"skewX("+wb+")"),ka[0]!=kb[0]||ka[1]!=kb[1]?(n=s.push(s.pop()+"scale(",null,",",null,")"),q.push({i:n-4,x:d3_interpolateNumber(ka[0],kb[0])},{i:n-2,x:d3_interpolateNumber(ka[1],kb[1])})):(1!=kb[0]||1!=kb[1])&&s.push(s.pop()+"scale("+kb+")"),n=q.length,function(t){for(var o,i=-1;++ii;++i)(k=array[i][1])>v&&(j=i,v=k);return j}function d3_layout_stackReduceSum(d){return d.reduce(d3_layout_stackSum,0)}function d3_layout_stackSum(p,d){return p+d[1]}function d3_layout_histogramBinSturges(range,values){return d3_layout_histogramBinFixed(range,Math.ceil(Math.log(values.length)/Math.LN2+1))}function d3_layout_histogramBinFixed(range,n){for(var x=-1,b=+range[0],m=(range[1]-b)/n,f=[];++x<=n;)f[x]=m*x+b;return f}function d3_layout_histogramRange(values){return[d3.min(values),d3.max(values)]}function d3_layout_treeSeparation(a,b){return a.parent==b.parent?1:2}function d3_layout_treeLeft(node){var children=node.children;return children&&children.length?children[0]:node._tree.thread}function d3_layout_treeRight(node){var n,children=node.children;return children&&(n=children.length)?children[n-1]:node._tree.thread}function d3_layout_treeSearch(node,compare){var children=node.children;if(children&&(n=children.length))for(var child,n,i=-1;++i0&&(node=child);return node}function d3_layout_treeRightmost(a,b){return a.x-b.x}function d3_layout_treeLeftmost(a,b){return b.x-a.x}function d3_layout_treeDeepest(a,b){return a.depth-b.depth}function d3_layout_treeVisitAfter(node,callback){function visit(node,previousSibling){var children=node.children;if(children&&(n=children.length))for(var child,n,previousChild=null,i=-1;++i=0;)child=children[i]._tree,child.prelim+=shift,child.mod+=shift,shift+=child.shift+(change+=child.change)}function d3_layout_treeMove(ancestor,node,shift){ancestor=ancestor._tree,node=node._tree;var change=shift/(node.number-ancestor.number);ancestor.change+=change,node.change-=change,node.shift+=shift,node.prelim+=shift,node.mod+=shift}function d3_layout_treeAncestor(vim,node,ancestor){return vim._tree.ancestor.parent==node.parent?vim._tree.ancestor:ancestor}function d3_layout_packSort(a,b){return a.value-b.value}function d3_layout_packInsert(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function d3_layout_packSplice(a,b){a._pack_next=b,b._pack_prev=a}function d3_layout_packIntersects(a,b){var dx=b.x-a.x,dy=b.y-a.y,dr=a.r+b.r;return.999*dr*dr>dx*dx+dy*dy}function d3_layout_packSiblings(node){function bound(node){xMin=Math.min(node.x-node.r,xMin),xMax=Math.max(node.x+node.r,xMax),yMin=Math.min(node.y-node.r,yMin),yMax=Math.max(node.y+node.r,yMax)}if((nodes=node.children)&&(n=nodes.length)){var nodes,a,b,c,i,j,k,n,xMin=1/0,xMax=-1/0,yMin=1/0,yMax=-1/0;if(nodes.forEach(d3_layout_packLink),a=nodes[0],a.x=-a.r,a.y=0,bound(a),n>1&&(b=nodes[1],b.x=b.r,b.y=0,bound(b),n>2))for(c=nodes[2],d3_layout_packPlace(a,b,c),bound(c),d3_layout_packInsert(a,c),a._pack_prev=c,d3_layout_packInsert(c,b),b=a._pack_next,i=3;n>i;i++){d3_layout_packPlace(a,b,c=nodes[i]);var isect=0,s1=1,s2=1;for(j=b._pack_next;j!==b;j=j._pack_next,s1++)if(d3_layout_packIntersects(j,c)){isect=1;break}if(1==isect)for(k=a._pack_prev;k!==j._pack_prev&&!d3_layout_packIntersects(k,c);k=k._pack_prev,s2++);isect?(s2>s1||s1==s2&&b.ri;i++)c=nodes[i],c.x-=cx,c.y-=cy,cr=Math.max(cr,c.r+Math.sqrt(c.x*c.x+c.y*c.y));node.r=cr,nodes.forEach(d3_layout_packUnlink)}}function d3_layout_packLink(node){node._pack_next=node._pack_prev=node}function d3_layout_packUnlink(node){delete node._pack_next,delete node._pack_prev}function d3_layout_packTransform(node,x,y,k){var children=node.children;if(node.x=x+=k*node.x,node.y=y+=k*node.y,node.r*=k,children)for(var i=-1,n=children.length;++idx&&(x+=dx/2,dx=0),0>dy&&(y+=dy/2,dy=0),{x:x,y:y,dx:dx,dy:dy}}function d3_scaleExtent(domain){var start=domain[0],stop=domain[domain.length-1];return stop>start?[start,stop]:[stop,start]}function d3_scaleRange(scale){return scale.rangeExtent?scale.rangeExtent():d3_scaleExtent(scale.range())}function d3_scale_bilinear(domain,range,uninterpolate,interpolate){var u=uninterpolate(domain[0],domain[1]),i=interpolate(range[0],range[1]);return function(x){return i(u(x))}}function d3_scale_nice(domain,nice){var dx,i0=0,i1=domain.length-1,x0=domain[i0],x1=domain[i1];return x0>x1&&(dx=i0,i0=i1,i1=dx,dx=x0,x0=x1,x1=dx),domain[i0]=nice.floor(x0),domain[i1]=nice.ceil(x1),domain}function d3_scale_niceStep(step){return step?{floor:function(x){return Math.floor(x/step)*step},ceil:function(x){return Math.ceil(x/step)*step}}:d3_scale_niceIdentity}function d3_scale_polylinear(domain,range,uninterpolate,interpolate){var u=[],i=[],j=0,k=Math.min(domain.length,range.length)-1;for(domain[k]2?d3_scale_polylinear:d3_scale_bilinear,uninterpolate=clamp?d3_uninterpolateClamp:d3_uninterpolateNumber;return output=linear(domain,range,uninterpolate,interpolate),input=linear(range,domain,uninterpolate,d3_interpolate),scale}function scale(x){return output(x)}var output,input;return scale.invert=function(y){return input(y)},scale.domain=function(x){return arguments.length?(domain=x.map(Number),rescale()):domain},scale.range=function(x){return arguments.length?(range=x,rescale()):range},scale.rangeRound=function(x){return scale.range(x).interpolate(d3_interpolateRound)},scale.clamp=function(x){return arguments.length?(clamp=x,rescale()):clamp},scale.interpolate=function(x){return arguments.length?(interpolate=x,rescale()):interpolate},scale.ticks=function(m){return d3_scale_linearTicks(domain,m)},scale.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},scale.nice=function(m){return d3_scale_linearNice(domain,m),rescale()},scale.copy=function(){return d3_scale_linear(domain,range,interpolate,clamp)},rescale()}function d3_scale_linearRebind(scale,linear){return d3.rebind(scale,linear,"range","rangeRound","interpolate","clamp")}function d3_scale_linearNice(domain,m){return d3_scale_nice(domain,d3_scale_niceStep(d3_scale_linearTickRange(domain,m)[2]))}function d3_scale_linearTickRange(domain,m){null==m&&(m=10);var extent=d3_scaleExtent(domain),span=extent[1]-extent[0],step=Math.pow(10,Math.floor(Math.log(span/m)/Math.LN10)),err=m/span*step;return.15>=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.ceil(extent[0]/step)*step,extent[1]=Math.floor(extent[1]/step)*step+.5*step,extent[2]=step,extent}function d3_scale_linearTicks(domain,m){return d3.range.apply(d3,d3_scale_linearTickRange(domain,m))}function d3_scale_linearTickFormat(domain,m,format){var range=d3_scale_linearTickRange(domain,m);return d3.format(format?format.replace(d3_format_re,function(a,b,c,d,e,f,g,h,i,j){return[b,c,d,e,f,g,h,i||"."+d3_scale_linearFormatPrecision(j,range),j].join("")}):",."+d3_scale_linearPrecision(range[2])+"f")}function d3_scale_linearPrecision(value){return-Math.floor(Math.log(value)/Math.LN10+.01)}function d3_scale_linearFormatPrecision(type,range){var p=d3_scale_linearPrecision(range[2]);return type in d3_scale_linearFormatSignificant?Math.abs(p-d3_scale_linearPrecision(Math.max(Math.abs(range[0]),Math.abs(range[1]))))+ +("e"!==type):p-2*("%"===type)}function d3_scale_log(linear,base,positive,domain){function log(x){return(positive?Math.log(0>x?0:x):-Math.log(x>0?0:-x))/Math.log(base)}function pow(x){return positive?Math.pow(base,x):-Math.pow(base,-x)}function scale(x){return linear(log(x))}return scale.invert=function(x){return pow(linear.invert(x))},scale.domain=function(x){return arguments.length?(positive=x[0]>=0,linear.domain((domain=x.map(Number)).map(log)),scale):domain},scale.base=function(_){return arguments.length?(base=+_,linear.domain(domain.map(log)),scale):base},scale.nice=function(){var niced=d3_scale_nice(domain.map(log),positive?Math:d3_scale_logNiceNegative);return linear.domain(niced),domain=niced.map(pow),scale},scale.ticks=function(){var extent=d3_scaleExtent(domain),ticks=[],u=extent[0],v=extent[1],i=Math.floor(log(u)),j=Math.ceil(log(v)),n=base%1?2:base;if(isFinite(j-i)){if(positive){for(;j>i;i++)for(var k=1;n>k;k++)ticks.push(pow(i)*k);ticks.push(pow(i))}else for(ticks.push(pow(i));i++0;k--)ticks.push(pow(i)*k);for(i=0;ticks[i]v;j--);ticks=ticks.slice(i,j)}return ticks},scale.tickFormat=function(n,format){if(!arguments.length)return d3_scale_logFormat;arguments.length<2?format=d3_scale_logFormat:"function"!=typeof format&&(format=d3.format(format));var e,k=Math.max(.1,n/scale.ticks().length),f=positive?(e=1e-12,Math.ceil):(e=-1e-12,Math.floor);return function(d){return d/pow(f(log(d)+e))<=k?format(d):""}},scale.copy=function(){return d3_scale_log(linear.copy(),base,positive,domain)},d3_scale_linearRebind(scale,linear)}function d3_scale_pow(linear,exponent,domain){function scale(x){return linear(powp(x))}var powp=d3_scale_powPow(exponent),powb=d3_scale_powPow(1/exponent);return scale.invert=function(x){return powb(linear.invert(x))},scale.domain=function(x){return arguments.length?(linear.domain((domain=x.map(Number)).map(powp)),scale):domain},scale.ticks=function(m){return d3_scale_linearTicks(domain,m)},scale.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},scale.nice=function(m){return scale.domain(d3_scale_linearNice(domain,m))},scale.exponent=function(x){return arguments.length?(powp=d3_scale_powPow(exponent=x),powb=d3_scale_powPow(1/exponent),linear.domain(domain.map(powp)),scale):exponent},scale.copy=function(){return d3_scale_pow(linear.copy(),exponent,domain)},d3_scale_linearRebind(scale,linear)}function d3_scale_powPow(e){return function(x){return 0>x?-Math.pow(-x,e):Math.pow(x,e)}}function d3_scale_ordinal(domain,ranger){function scale(x){return range[((index.get(x)||"range"===ranger.t&&index.set(x,domain.push(x)))-1)%range.length]}function steps(start,step){return d3.range(domain.length).map(function(i){return start+step*i})}var index,range,rangeBand;return scale.domain=function(x){if(!arguments.length)return domain;domain=[],index=new d3_Map;for(var xi,i=-1,n=x.length;++iy?[0/0,0/0]:[y>0?thresholds[y-1]:domain[0],yy?0/0:y/kx+x0,[y,y+1/kx]},scale.copy=function(){return d3_scale_quantize(x0,x1,range)},rescale()}function d3_scale_threshold(domain,range){function scale(x){return x>=x?range[d3.bisect(domain,x)]:void 0}return scale.domain=function(_){return arguments.length?(domain=_,scale):domain},scale.range=function(_){return arguments.length?(range=_,scale):range},scale.invertExtent=function(y){return y=range.indexOf(y),[domain[y-1],domain[y]]},scale.copy=function(){return d3_scale_threshold(domain,range)},scale}function d3_scale_identity(domain){function identity(x){return+x}return identity.invert=identity,identity.domain=identity.range=function(x){return arguments.length?(domain=x.map(identity),identity):domain},identity.ticks=function(m){return d3_scale_linearTicks(domain,m)},identity.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},identity.copy=function(){return d3_scale_identity(domain)},identity}function d3_svg_arcInnerRadius(d){return d.innerRadius}function d3_svg_arcOuterRadius(d){return d.outerRadius}function d3_svg_arcStartAngle(d){return d.startAngle}function d3_svg_arcEndAngle(d){return d.endAngle}function d3_svg_line(projection){function line(data){function segment(){segments.push("M",interpolate(projection(points),tension))}for(var d,segments=[],points=[],i=-1,n=data.length,fx=d3_functor(x),fy=d3_functor(y);++i1&&path.push("H",p[0]),path.join("")}function d3_svg_lineStepBefore(points){for(var i=0,n=points.length,p=points[0],path=[p[0],",",p[1]];++i1){t=tangents[1],p=points[pi],pi++,path+="C"+(p0[0]+t0[0])+","+(p0[1]+t0[1])+","+(p[0]-t[0])+","+(p[1]-t[1])+","+p[0]+","+p[1];for(var i=2;i9&&(s=3*d/Math.sqrt(s),m[i]=s*a,m[i+1]=s*b));for(i=-1;++i<=j;)s=(points[Math.min(j,i+1)][0]-points[Math.max(0,i-1)][0])/(6*(1+m[i]*m[i])),tangents.push([s||0,m[i]*s||0]);return tangents}function d3_svg_lineMonotone(points){return points.length<3?d3_svg_lineLinear(points):points[0]+d3_svg_lineHermite(points,d3_svg_lineMonotoneTangents(points))}function d3_svg_lineRadial(points){for(var point,r,a,i=-1,n=points.length;++iid?stop():(lock.active=id,transition.event&&transition.event.start.call(node,d,i),transition.tween.forEach(function(key,value){(value=value.call(node,d,i))&&tweened.push(value)}),void d3.timer(function(){return timer.c=tick(elapsed||1)?d3_true:tick,1},0,time))}function tick(elapsed){if(lock.active!==id)return stop();for(var t=elapsed/duration,e=ease(t),n=tweened.length;n>0;)tweened[--n].call(node,e);return t>=1?(transition.event&&transition.event.end.call(node,d,i),stop()):void 0}function stop(){return--lock.count?delete lock[id]:delete node.__transition__,1}var d=node.__data__,ease=transition.ease,delay=transition.delay,duration=transition.duration,timer=d3_timer_active,tweened=[];return timer.t=delay+time,elapsed>=delay?start(elapsed-delay):void(timer.c=start)},0,time)}}function d3_svg_axisX(selection,x){selection.attr("transform",function(d){return"translate("+x(d)+",0)"})}function d3_svg_axisY(selection,y){selection.attr("transform",function(d){return"translate(0,"+y(d)+")"})}function d3_time_formatIsoNative(date){return date.toISOString()}function d3_time_scale(linear,methods,format){function scale(x){return linear(x)}function tickMethod(extent,count){var span=extent[1]-extent[0],target=span/count,i=d3.bisect(d3_time_scaleSteps,target);return i==d3_time_scaleSteps.length?[methods.year,d3_scale_linearTickRange(extent.map(function(d){return d/31536e6}),count)[2]]:i?methods[target/d3_time_scaleSteps[i-1]1?{floor:function(date){for(;skipped(date=interval.floor(date));)date=d3_time_scaleDate(date-1); +};var SNAKE_CASE_REGEXP=/[A-Z]/g,version={full:"1.2.12",major:1,minor:2,dot:12,codeName:"cauliflower-eradication"},jqCache=JQLite.cache={},jqName=JQLite.expando="ng-"+(new Date).getTime(),jqId=1,addEventListenerFn=window.document.addEventListener?function(element,type,fn){element.addEventListener(type,fn,!1)}:function(element,type,fn){element.attachEvent("on"+type,fn)},removeEventListenerFn=window.document.removeEventListener?function(element,type,fn){element.removeEventListener(type,fn,!1)}:function(element,type,fn){element.detachEvent("on"+type,fn)},SPECIAL_CHARS_REGEXP=/([\:\-\_]+(.))/g,MOZ_HACK_REGEXP=/^moz([A-Z])/,jqLiteMinErr=minErr("jqLite"),JQLitePrototype=JQLite.prototype={ready:function(fn){function trigger(){fired||(fired=!0,fn())}var fired=!1;"complete"===document.readyState?setTimeout(trigger):(this.on("DOMContentLoaded",trigger),JQLite(window).on("load",trigger))},toString:function(){var value=[];return forEach(this,function(e){value.push(""+e)}),"["+value.join(", ")+"]"},eq:function(index){return index>=0?jqLite(this[index]):jqLite(this[this.length+index])},length:0,push:push,sort:[].sort,splice:[].splice},BOOLEAN_ATTR={};forEach("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(value){BOOLEAN_ATTR[lowercase(value)]=value});var BOOLEAN_ELEMENTS={};forEach("input,select,option,textarea,button,form,details".split(","),function(value){BOOLEAN_ELEMENTS[uppercase(value)]=!0}),forEach({data:jqLiteData,inheritedData:jqLiteInheritedData,scope:function(element){return jqLite(element).data("$scope")||jqLiteInheritedData(element.parentNode||element,["$isolateScope","$scope"])},isolateScope:function(element){return jqLite(element).data("$isolateScope")||jqLite(element).data("$isolateScopeNoTemplate")},controller:jqLiteController,injector:function(element){return jqLiteInheritedData(element,"$injector")},removeAttr:function(element,name){element.removeAttribute(name)},hasClass:jqLiteHasClass,css:function(element,name,value){if(name=camelCase(name),!isDefined(value)){var val;return 8>=msie&&(val=element.currentStyle&&element.currentStyle[name],""===val&&(val="auto")),val=val||element.style[name],8>=msie&&(val=""===val?undefined:val),val}element.style[name]=value},attr:function(element,name,value){var lowercasedName=lowercase(name);if(BOOLEAN_ATTR[lowercasedName]){if(!isDefined(value))return element[name]||(element.attributes.getNamedItem(name)||noop).specified?lowercasedName:undefined;value?(element[name]=!0,element.setAttribute(name,lowercasedName)):(element[name]=!1,element.removeAttribute(lowercasedName))}else if(isDefined(value))element.setAttribute(name,value);else if(element.getAttribute){var ret=element.getAttribute(name,2);return null===ret?undefined:ret}},prop:function(element,name,value){return isDefined(value)?(element[name]=value,void 0):element[name]},text:function(){function getText(element,value){var textProp=NODE_TYPE_TEXT_PROPERTY[element.nodeType];return isUndefined(value)?textProp?element[textProp]:"":(element[textProp]=value,void 0)}var NODE_TYPE_TEXT_PROPERTY=[];return 9>msie?(NODE_TYPE_TEXT_PROPERTY[1]="innerText",NODE_TYPE_TEXT_PROPERTY[3]="nodeValue"):NODE_TYPE_TEXT_PROPERTY[1]=NODE_TYPE_TEXT_PROPERTY[3]="textContent",getText.$dv="",getText}(),val:function(element,value){if(isUndefined(value)){if("SELECT"===nodeName_(element)&&element.multiple){var result=[];return forEach(element.options,function(option){option.selected&&result.push(option.value||option.text)}),0===result.length?null:result}return element.value}element.value=value},html:function(element,value){if(isUndefined(value))return element.innerHTML;for(var i=0,childNodes=element.childNodes;ij;j++){var nodeValue=fn(this[j],arg1,arg2);value=value?value+nodeValue:nodeValue}return value}for(i=0;i":function(self,locals,a,b){return a(self,locals)>b(self,locals)},"<=":function(self,locals,a,b){return a(self,locals)<=b(self,locals)},">=":function(self,locals,a,b){return a(self,locals)>=b(self,locals)},"&&":function(self,locals,a,b){return a(self,locals)&&b(self,locals)},"||":function(self,locals,a,b){return a(self,locals)||b(self,locals)},"&":function(self,locals,a,b){return a(self,locals)&b(self,locals)},"|":function(self,locals,a,b){return b(self,locals)(self,locals,a(self,locals))},"!":function(self,locals,a){return!a(self,locals)}},ESCAPE={n:"\n",f:"\f",r:"\r",t:" ",v:" ","'":"'",'"':'"'},Lexer=function(options){this.options=options};Lexer.prototype={constructor:Lexer,lex:function(text){this.text=text,this.index=0,this.ch=undefined,this.lastCh=":",this.tokens=[];for(var token,json=[];this.index="0"&&"9">=ch},isWhitespace:function(ch){return" "===ch||"\r"===ch||" "===ch||"\n"===ch||" "===ch||" "===ch},isIdent:function(ch){return ch>="a"&&"z">=ch||ch>="A"&&"Z">=ch||"_"===ch||"$"===ch},isExpOperator:function(ch){return"-"===ch||"+"===ch||this.isNumber(ch)},throwError:function(error,start,end){end=end||this.index;var colStr=isDefined(start)?"s "+start+"-"+this.index+" ["+this.text.substring(start,end)+"]":" "+end;throw $parseMinErr("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",error,colStr,this.text)},readNumber:function(){for(var number="",start=this.index;this.index0){var token=this.tokens[0],t=token.text;if(t===e1||t===e2||t===e3||t===e4||!e1&&!e2&&!e3&&!e4)return token}return!1},expect:function(e1,e2,e3,e4){var token=this.peek(e1,e2,e3,e4);return token?(this.json&&!token.json&&this.throwError("is not valid json",token),this.tokens.shift(),token):!1},consume:function(e1){this.expect(e1)||this.throwError("is unexpected, expecting ["+e1+"]",this.peek())},unaryFn:function(fn,right){return extend(function(self,locals){return fn(self,locals,right)},{constant:right.constant})},ternaryFn:function(left,middle,right){return extend(function(self,locals){return left(self,locals)?middle(self,locals):right(self,locals)},{constant:left.constant&&middle.constant&&right.constant})},binaryFn:function(left,fn,right){return extend(function(self,locals){return fn(self,locals,left,right)},{constant:left.constant&&right.constant})},statements:function(){for(var statements=[];;)if(this.tokens.length>0&&!this.peek("}",")",";","]")&&statements.push(this.filterChain()),!this.expect(";"))return 1===statements.length?statements[0]:function(self,locals){for(var value,i=0;i","<=",">="))&&(left=this.binaryFn(left,token.fn,this.relational())),left},additive:function(){for(var token,left=this.multiplicative();token=this.expect("+","-");)left=this.binaryFn(left,token.fn,this.multiplicative());return left},multiplicative:function(){for(var token,left=this.unary();token=this.expect("*","/","%");)left=this.binaryFn(left,token.fn,this.unary());return left},unary:function(){var token;return this.expect("+")?this.primary():(token=this.expect("-"))?this.binaryFn(Parser.ZERO,token.fn,this.unary()):(token=this.expect("!"))?this.unaryFn(token.fn,this.unary()):this.primary()},fieldAccess:function(object){var parser=this,field=this.expect().text,getter=getterFn(field,this.options,this.text);return extend(function(scope,locals,self){return getter(self||object(scope,locals))},{assign:function(scope,value,locals){return setter(object(scope,locals),field,value,parser.text,parser.options)}})},objectIndex:function(obj){var parser=this,indexFn=this.expression();return this.consume("]"),extend(function(self,locals){var v,p,o=obj(self,locals),i=indexFn(self,locals);return o?(v=ensureSafeObject(o[i],parser.text),v&&v.then&&parser.options.unwrapPromises&&(p=v,"$$v"in v||(p.$$v=undefined,p.then(function(val){p.$$v=val})),v=v.$$v),v):undefined},{assign:function(self,value,locals){var key=indexFn(self,locals),safe=ensureSafeObject(obj(self,locals),parser.text);return safe[key]=value}})},functionCall:function(fn,contextGetter){var argsFn=[];if(")"!==this.peekToken().text)do argsFn.push(this.expression());while(this.expect(","));this.consume(")");var parser=this;return function(scope,locals){for(var args=[],context=contextGetter?contextGetter(scope,locals):scope,i=0;i=msie&&(attr.href||attr.name||attr.$set("href",""),element.append(document.createComment("IE fix"))),attr.href||attr.xlinkHref||attr.name?void 0:function(scope,element){var href="[object SVGAnimatedString]"===toString.call(element.prop("href"))?"xlink:href":"href";element.on("click",function(event){element.attr(href)||event.preventDefault()})}}}),ngAttributeAliasDirectives={};forEach(BOOLEAN_ATTR,function(propName,attrName){if("multiple"!=propName){var normalized=directiveNormalize("ng-"+attrName);ngAttributeAliasDirectives[normalized]=function(){return{priority:100,link:function(scope,element,attr){scope.$watch(attr[normalized],function(value){attr.$set(attrName,!!value)})}}}}}),forEach(["src","srcset","href"],function(attrName){var normalized=directiveNormalize("ng-"+attrName);ngAttributeAliasDirectives[normalized]=function(){return{priority:99,link:function(scope,element,attr){attr.$observe(normalized,function(value){value&&(attr.$set(attrName,value),msie&&element.prop(attrName,attr[attrName]))})}}}});var nullFormCtrl={$addControl:noop,$removeControl:noop,$setValidity:noop,$setDirty:noop,$setPristine:noop};FormController.$inject=["$element","$attrs","$scope"];var formDirectiveFactory=function(isNgForm){return["$timeout",function($timeout){var formDirective={name:"form",restrict:isNgForm?"EAC":"E",controller:FormController,compile:function(){return{pre:function(scope,formElement,attr,controller){if(!attr.action){var preventDefaultListener=function(event){event.preventDefault?event.preventDefault():event.returnValue=!1};addEventListenerFn(formElement[0],"submit",preventDefaultListener),formElement.on("$destroy",function(){$timeout(function(){removeEventListenerFn(formElement[0],"submit",preventDefaultListener)},0,!1)})}var parentFormCtrl=formElement.parent().controller("form"),alias=attr.name||attr.ngForm;alias&&setter(scope,alias,controller,alias),parentFormCtrl&&formElement.on("$destroy",function(){parentFormCtrl.$removeControl(controller),alias&&setter(scope,alias,undefined,alias),extend(controller,nullFormCtrl)})}}}};return formDirective}]},formDirective=formDirectiveFactory(),ngFormDirective=formDirectiveFactory(!0),URL_REGEXP=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,EMAIL_REGEXP=/^[a-z0-9!#$%&'*+/=?^_`{|}~.-]+@[a-z0-9-]+(\.[a-z0-9-]+)*$/i,NUMBER_REGEXP=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,inputType={text:textInputType,number:numberInputType,url:urlInputType,email:emailInputType,radio:radioInputType,checkbox:checkboxInputType,hidden:noop,button:noop,submit:noop,reset:noop},inputDirective=["$browser","$sniffer",function($browser,$sniffer){return{restrict:"E",require:"?ngModel",link:function(scope,element,attr,ctrl){ctrl&&(inputType[lowercase(attr.type)]||inputType.text)(scope,element,attr,ctrl,$sniffer,$browser)}}}],VALID_CLASS="ng-valid",INVALID_CLASS="ng-invalid",PRISTINE_CLASS="ng-pristine",DIRTY_CLASS="ng-dirty",NgModelController=["$scope","$exceptionHandler","$attrs","$element","$parse",function($scope,$exceptionHandler,$attr,$element,$parse){function toggleValidCss(isValid,validationErrorKey){validationErrorKey=validationErrorKey?"-"+snake_case(validationErrorKey,"-"):"",$element.removeClass((isValid?INVALID_CLASS:VALID_CLASS)+validationErrorKey).addClass((isValid?VALID_CLASS:INVALID_CLASS)+validationErrorKey)}this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$name=$attr.name;var ngModelGet=$parse($attr.ngModel),ngModelSet=ngModelGet.assign;if(!ngModelSet)throw minErr("ngModel")("nonassign","Expression '{0}' is non-assignable. Element: {1}",$attr.ngModel,startingTag($element));this.$render=noop,this.$isEmpty=function(value){return isUndefined(value)||""===value||null===value||value!==value};var parentForm=$element.inheritedData("$formController")||nullFormCtrl,invalidCount=0,$error=this.$error={};$element.addClass(PRISTINE_CLASS),toggleValidCss(!0),this.$setValidity=function(validationErrorKey,isValid){$error[validationErrorKey]!==!isValid&&(isValid?($error[validationErrorKey]&&invalidCount--,invalidCount||(toggleValidCss(!0),this.$valid=!0,this.$invalid=!1)):(toggleValidCss(!1),this.$invalid=!0,this.$valid=!1,invalidCount++),$error[validationErrorKey]=!isValid,toggleValidCss(isValid,validationErrorKey),parentForm.$setValidity(validationErrorKey,isValid,this))},this.$setPristine=function(){this.$dirty=!1,this.$pristine=!0,$element.removeClass(DIRTY_CLASS).addClass(PRISTINE_CLASS)},this.$setViewValue=function(value){this.$viewValue=value,this.$pristine&&(this.$dirty=!0,this.$pristine=!1,$element.removeClass(PRISTINE_CLASS).addClass(DIRTY_CLASS),parentForm.$setDirty()),forEach(this.$parsers,function(fn){value=fn(value)}),this.$modelValue!==value&&(this.$modelValue=value,ngModelSet($scope,value),forEach(this.$viewChangeListeners,function(listener){try{listener()}catch(e){$exceptionHandler(e)}}))};var ctrl=this;$scope.$watch(function(){var value=ngModelGet($scope);if(ctrl.$modelValue!==value){var formatters=ctrl.$formatters,idx=formatters.length;for(ctrl.$modelValue=value;idx--;)value=formatters[idx](value);ctrl.$viewValue!==value&&(ctrl.$viewValue=value,ctrl.$render())}return value})}],ngModelDirective=function(){return{require:["ngModel","^?form"],controller:NgModelController,link:function(scope,element,attr,ctrls){var modelCtrl=ctrls[0],formCtrl=ctrls[1]||nullFormCtrl;formCtrl.$addControl(modelCtrl),scope.$on("$destroy",function(){formCtrl.$removeControl(modelCtrl)})}}},ngChangeDirective=valueFn({require:"ngModel",link:function(scope,element,attr,ctrl){ctrl.$viewChangeListeners.push(function(){scope.$eval(attr.ngChange) +})}}),requiredDirective=function(){return{require:"?ngModel",link:function(scope,elm,attr,ctrl){if(ctrl){attr.required=!0;var validator=function(value){return attr.required&&ctrl.$isEmpty(value)?(ctrl.$setValidity("required",!1),void 0):(ctrl.$setValidity("required",!0),value)};ctrl.$formatters.push(validator),ctrl.$parsers.unshift(validator),attr.$observe("required",function(){validator(ctrl.$viewValue)})}}}},ngListDirective=function(){return{require:"ngModel",link:function(scope,element,attr,ctrl){var match=/\/(.*)\//.exec(attr.ngList),separator=match&&new RegExp(match[1])||attr.ngList||",",parse=function(viewValue){if(!isUndefined(viewValue)){var list=[];return viewValue&&forEach(viewValue.split(separator),function(value){value&&list.push(trim(value))}),list}};ctrl.$parsers.push(parse),ctrl.$formatters.push(function(value){return isArray(value)?value.join(", "):undefined}),ctrl.$isEmpty=function(value){return!value||!value.length}}}},CONSTANT_VALUE_REGEXP=/^(true|false|\d+)$/,ngValueDirective=function(){return{priority:100,compile:function(tpl,tplAttr){return CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)?function(scope,elm,attr){attr.$set("value",scope.$eval(attr.ngValue))}:function(scope,elm,attr){scope.$watch(attr.ngValue,function(value){attr.$set("value",value)})}}}},ngBindDirective=ngDirective(function(scope,element,attr){element.addClass("ng-binding").data("$binding",attr.ngBind),scope.$watch(attr.ngBind,function(value){element.text(value==undefined?"":value)})}),ngBindTemplateDirective=["$interpolate",function($interpolate){return function(scope,element,attr){var interpolateFn=$interpolate(element.attr(attr.$attr.ngBindTemplate));element.addClass("ng-binding").data("$binding",interpolateFn),attr.$observe("ngBindTemplate",function(value){element.text(value)})}}],ngBindHtmlDirective=["$sce","$parse",function($sce,$parse){return function(scope,element,attr){function getStringValue(){return(parsed(scope)||"").toString()}element.addClass("ng-binding").data("$binding",attr.ngBindHtml);var parsed=$parse(attr.ngBindHtml);scope.$watch(getStringValue,function(){element.html($sce.getTrustedHtml(parsed(scope))||"")})}}],ngClassDirective=classDirective("",!0),ngClassOddDirective=classDirective("Odd",0),ngClassEvenDirective=classDirective("Even",1),ngCloakDirective=ngDirective({compile:function(element,attr){attr.$set("ngCloak",undefined),element.removeClass("ng-cloak")}}),ngControllerDirective=[function(){return{scope:!0,controller:"@",priority:500}}],ngEventDirectives={};forEach("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(name){var directiveName=directiveNormalize("ng-"+name);ngEventDirectives[directiveName]=["$parse",function($parse){return{compile:function($element,attr){var fn=$parse(attr[directiveName]);return function(scope,element){element.on(lowercase(name),function(event){scope.$apply(function(){fn(scope,{$event:event})})})}}}}]});var ngIfDirective=["$animate",function($animate){return{transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function($scope,$element,$attr,ctrl,$transclude){var block,childScope;$scope.$watch($attr.ngIf,function(value){toBoolean(value)?childScope||(childScope=$scope.$new(),$transclude(childScope,function(clone){clone[clone.length++]=document.createComment(" end ngIf: "+$attr.ngIf+" "),block={clone:clone},$animate.enter(clone,$element.parent(),$element)})):(childScope&&(childScope.$destroy(),childScope=null),block&&($animate.leave(getBlockElements(block.clone)),block=null))})}}}],ngIncludeDirective=["$http","$templateCache","$anchorScroll","$animate","$sce",function($http,$templateCache,$anchorScroll,$animate,$sce){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:angular.noop,compile:function(element,attr){var srcExp=attr.ngInclude||attr.src,onloadExp=attr.onload||"",autoScrollExp=attr.autoscroll;return function(scope,$element,$attr,ctrl,$transclude){var currentScope,currentElement,changeCounter=0,cleanupLastIncludeContent=function(){currentScope&&(currentScope.$destroy(),currentScope=null),currentElement&&($animate.leave(currentElement),currentElement=null)};scope.$watch($sce.parseAsResourceUrl(srcExp),function(src){var afterAnimation=function(){!isDefined(autoScrollExp)||autoScrollExp&&!scope.$eval(autoScrollExp)||$anchorScroll()},thisChangeId=++changeCounter;src?($http.get(src,{cache:$templateCache}).success(function(response){if(thisChangeId===changeCounter){var newScope=scope.$new();ctrl.template=response;var clone=$transclude(newScope,function(clone){cleanupLastIncludeContent(),$animate.enter(clone,null,$element,afterAnimation)});currentScope=newScope,currentElement=clone,currentScope.$emit("$includeContentLoaded"),scope.$eval(onloadExp)}}).error(function(){thisChangeId===changeCounter&&cleanupLastIncludeContent()}),scope.$emit("$includeContentRequested")):(cleanupLastIncludeContent(),ctrl.template=null)})}}}}],ngIncludeFillContentDirective=["$compile",function($compile){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(scope,$element,$attr,ctrl){$element.html(ctrl.template),$compile($element.contents())(scope)}}}],ngInitDirective=ngDirective({priority:450,compile:function(){return{pre:function(scope,element,attrs){scope.$eval(attrs.ngInit)}}}}),ngNonBindableDirective=ngDirective({terminal:!0,priority:1e3}),ngPluralizeDirective=["$locale","$interpolate",function($locale,$interpolate){var BRACE=/{}/g;return{restrict:"EA",link:function(scope,element,attr){var numberExp=attr.count,whenExp=attr.$attr.when&&element.attr(attr.$attr.when),offset=attr.offset||0,whens=scope.$eval(whenExp)||{},whensExpFns={},startSymbol=$interpolate.startSymbol(),endSymbol=$interpolate.endSymbol(),isWhen=/^when(Minus)?(.+)$/;forEach(attr,function(expression,attributeName){isWhen.test(attributeName)&&(whens[lowercase(attributeName.replace("when","").replace("Minus","-"))]=element.attr(attr.$attr[attributeName]))}),forEach(whens,function(expression,key){whensExpFns[key]=$interpolate(expression.replace(BRACE,startSymbol+numberExp+"-"+offset+endSymbol))}),scope.$watch(function(){var value=parseFloat(scope.$eval(numberExp));return isNaN(value)?"":(value in whens||(value=$locale.pluralCat(value-offset)),whensExpFns[value](scope,element,!0))},function(newVal){element.text(newVal)})}}}],ngRepeatDirective=["$parse","$animate",function($parse,$animate){function getBlockStart(block){return block.clone[0]}function getBlockEnd(block){return block.clone[block.clone.length-1]}var NG_REMOVED="$$NG_REMOVED",ngRepeatMinErr=minErr("ngRepeat");return{transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,link:function($scope,$element,$attr,ctrl,$transclude){var trackByExp,trackByExpGetter,trackByIdExpFn,trackByIdArrayFn,trackByIdObjFn,lhs,rhs,valueIdentifier,keyIdentifier,expression=$attr.ngRepeat,match=expression.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?\s*$/),hashFnLocals={$id:hashKey};if(!match)throw ngRepeatMinErr("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",expression);if(lhs=match[1],rhs=match[2],trackByExp=match[3],trackByExp?(trackByExpGetter=$parse(trackByExp),trackByIdExpFn=function(key,value,index){return keyIdentifier&&(hashFnLocals[keyIdentifier]=key),hashFnLocals[valueIdentifier]=value,hashFnLocals.$index=index,trackByExpGetter($scope,hashFnLocals)}):(trackByIdArrayFn=function(key,value){return hashKey(value)},trackByIdObjFn=function(key){return key}),match=lhs.match(/^(?:([\$\w]+)|\(([\$\w]+)\s*,\s*([\$\w]+)\))$/),!match)throw ngRepeatMinErr("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",lhs);valueIdentifier=match[3]||match[1],keyIdentifier=match[2];var lastBlockMap={};$scope.$watchCollection(rhs,function(collection){var index,length,nextNode,arrayLength,childScope,key,value,trackById,trackByIdFn,collectionKeys,block,elementsToRemove,previousNode=$element[0],nextBlockMap={},nextBlockOrder=[];if(isArrayLike(collection))collectionKeys=collection,trackByIdFn=trackByIdExpFn||trackByIdArrayFn;else{trackByIdFn=trackByIdExpFn||trackByIdObjFn,collectionKeys=[];for(key in collection)collection.hasOwnProperty(key)&&"$"!=key.charAt(0)&&collectionKeys.push(key);collectionKeys.sort()}for(arrayLength=collectionKeys.length,length=nextBlockOrder.length=collectionKeys.length,index=0;length>index;index++)if(key=collection===collectionKeys?index:collectionKeys[index],value=collection[key],trackById=trackByIdFn(key,value,index),assertNotHasOwnProperty(trackById,"`track by` id"),lastBlockMap.hasOwnProperty(trackById))block=lastBlockMap[trackById],delete lastBlockMap[trackById],nextBlockMap[trackById]=block,nextBlockOrder[index]=block;else{if(nextBlockMap.hasOwnProperty(trackById))throw forEach(nextBlockOrder,function(block){block&&block.scope&&(lastBlockMap[block.id]=block)}),ngRepeatMinErr("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}",expression,trackById);nextBlockOrder[index]={id:trackById},nextBlockMap[trackById]=!1}for(key in lastBlockMap)lastBlockMap.hasOwnProperty(key)&&(block=lastBlockMap[key],elementsToRemove=getBlockElements(block.clone),$animate.leave(elementsToRemove),forEach(elementsToRemove,function(element){element[NG_REMOVED]=!0}),block.scope.$destroy());for(index=0,length=collectionKeys.length;length>index;index++){if(key=collection===collectionKeys?index:collectionKeys[index],value=collection[key],block=nextBlockOrder[index],nextBlockOrder[index-1]&&(previousNode=getBlockEnd(nextBlockOrder[index-1])),block.scope){childScope=block.scope,nextNode=previousNode;do nextNode=nextNode.nextSibling;while(nextNode&&nextNode[NG_REMOVED]);getBlockStart(block)!=nextNode&&$animate.move(getBlockElements(block.clone),null,jqLite(previousNode)),previousNode=getBlockEnd(block)}else childScope=$scope.$new();childScope[valueIdentifier]=value,keyIdentifier&&(childScope[keyIdentifier]=key),childScope.$index=index,childScope.$first=0===index,childScope.$last=index===arrayLength-1,childScope.$middle=!(childScope.$first||childScope.$last),childScope.$odd=!(childScope.$even=0===(1&index)),block.scope||$transclude(childScope,function(clone){clone[clone.length++]=document.createComment(" end ngRepeat: "+expression+" "),$animate.enter(clone,null,jqLite(previousNode)),previousNode=clone,block.scope=childScope,block.clone=clone,nextBlockMap[block.id]=block})}lastBlockMap=nextBlockMap})}}}],ngShowDirective=["$animate",function($animate){return function(scope,element,attr){scope.$watch(attr.ngShow,function(value){$animate[toBoolean(value)?"removeClass":"addClass"](element,"ng-hide")})}}],ngHideDirective=["$animate",function($animate){return function(scope,element,attr){scope.$watch(attr.ngHide,function(value){$animate[toBoolean(value)?"addClass":"removeClass"](element,"ng-hide")})}}],ngStyleDirective=ngDirective(function(scope,element,attr){scope.$watch(attr.ngStyle,function(newStyles,oldStyles){oldStyles&&newStyles!==oldStyles&&forEach(oldStyles,function(val,style){element.css(style,"")}),newStyles&&element.css(newStyles)},!0)}),ngSwitchDirective=["$animate",function($animate){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(scope,element,attr,ngSwitchController){var selectedTranscludes,selectedElements,watchExpr=attr.ngSwitch||attr.on,selectedScopes=[];scope.$watch(watchExpr,function(value){for(var i=0,ii=selectedScopes.length;ii>i;i++)selectedScopes[i].$destroy(),$animate.leave(selectedElements[i]);selectedElements=[],selectedScopes=[],(selectedTranscludes=ngSwitchController.cases["!"+value]||ngSwitchController.cases["?"])&&(scope.$eval(attr.change),forEach(selectedTranscludes,function(selectedTransclude){var selectedScope=scope.$new();selectedScopes.push(selectedScope),selectedTransclude.transclude(selectedScope,function(caseElement){var anchor=selectedTransclude.element;selectedElements.push(caseElement),$animate.enter(caseElement,anchor.parent(),anchor)})}))})}}}],ngSwitchWhenDirective=ngDirective({transclude:"element",priority:800,require:"^ngSwitch",link:function(scope,element,attrs,ctrl,$transclude){ctrl.cases["!"+attrs.ngSwitchWhen]=ctrl.cases["!"+attrs.ngSwitchWhen]||[],ctrl.cases["!"+attrs.ngSwitchWhen].push({transclude:$transclude,element:element})}}),ngSwitchDefaultDirective=ngDirective({transclude:"element",priority:800,require:"^ngSwitch",link:function(scope,element,attr,ctrl,$transclude){ctrl.cases["?"]=ctrl.cases["?"]||[],ctrl.cases["?"].push({transclude:$transclude,element:element})}}),ngTranscludeDirective=ngDirective({controller:["$element","$transclude",function($element,$transclude){if(!$transclude)throw minErr("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",startingTag($element));this.$transclude=$transclude}],link:function($scope,$element,$attrs,controller){controller.$transclude(function(clone){$element.empty(),$element.append(clone)})}}),scriptDirective=["$templateCache",function($templateCache){return{restrict:"E",terminal:!0,compile:function(element,attr){if("text/ng-template"==attr.type){var templateUrl=attr.id,text=element[0].text;$templateCache.put(templateUrl,text)}}}}],ngOptionsMinErr=minErr("ngOptions"),ngOptionsDirective=valueFn({terminal:!0}),selectDirective=["$compile","$parse",function($compile,$parse){var NG_OPTIONS_REGEXP=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?\s+for\s+(?:([\$\w][\$\w]*)|(?:\(\s*([\$\w][\$\w]*)\s*,\s*([\$\w][\$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,nullModelCtrl={$setViewValue:noop};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function($element,$scope,$attrs){var nullOption,unknownOption,self=this,optionsMap={},ngModelCtrl=nullModelCtrl;self.databound=$attrs.ngModel,self.init=function(ngModelCtrl_,nullOption_,unknownOption_){ngModelCtrl=ngModelCtrl_,nullOption=nullOption_,unknownOption=unknownOption_},self.addOption=function(value){assertNotHasOwnProperty(value,'"option value"'),optionsMap[value]=!0,ngModelCtrl.$viewValue==value&&($element.val(value),unknownOption.parent()&&unknownOption.remove())},self.removeOption=function(value){this.hasOption(value)&&(delete optionsMap[value],ngModelCtrl.$viewValue==value&&this.renderUnknownOption(value))},self.renderUnknownOption=function(val){var unknownVal="? "+hashKey(val)+" ?";unknownOption.val(unknownVal),$element.prepend(unknownOption),$element.val(unknownVal),unknownOption.prop("selected",!0)},self.hasOption=function(value){return optionsMap.hasOwnProperty(value)},$scope.$on("$destroy",function(){self.renderUnknownOption=noop})}],link:function(scope,element,attr,ctrls){function setupAsSingle(scope,selectElement,ngModelCtrl,selectCtrl){ngModelCtrl.$render=function(){var viewValue=ngModelCtrl.$viewValue;selectCtrl.hasOption(viewValue)?(unknownOption.parent()&&unknownOption.remove(),selectElement.val(viewValue),""===viewValue&&emptyOption.prop("selected",!0)):isUndefined(viewValue)&&emptyOption?selectElement.val(""):selectCtrl.renderUnknownOption(viewValue)},selectElement.on("change",function(){scope.$apply(function(){unknownOption.parent()&&unknownOption.remove(),ngModelCtrl.$setViewValue(selectElement.val())})})}function setupAsMultiple(scope,selectElement,ctrl){var lastView;ctrl.$render=function(){var items=new HashMap(ctrl.$viewValue);forEach(selectElement.find("option"),function(option){option.selected=isDefined(items.get(option.value))})},scope.$watch(function(){equals(lastView,ctrl.$viewValue)||(lastView=copy(ctrl.$viewValue),ctrl.$render())}),selectElement.on("change",function(){scope.$apply(function(){var array=[];forEach(selectElement.find("option"),function(option){option.selected&&array.push(option.value)}),ctrl.$setViewValue(array)})})}function setupAsOptions(scope,selectElement,ctrl){function render(){var optionGroupName,optionGroup,option,existingParent,existingOptions,existingOption,key,groupLength,length,groupIndex,index,selected,lastElement,element,label,optionGroups={"":[]},optionGroupNames=[""],modelValue=ctrl.$modelValue,values=valuesFn(scope)||[],keys=keyName?sortedKeys(values):values,locals={},selectedSet=!1;if(multiple)if(trackFn&&isArray(modelValue)){selectedSet=new HashMap([]);for(var trackIndex=0;trackIndexindex;index++){if(key=index,keyName){if(key=keys[index],"$"===key.charAt(0))continue;locals[keyName]=key}if(locals[valueName]=values[key],optionGroupName=groupByFn(scope,locals)||"",(optionGroup=optionGroups[optionGroupName])||(optionGroup=optionGroups[optionGroupName]=[],optionGroupNames.push(optionGroupName)),multiple)selected=isDefined(selectedSet.remove(trackFn?trackFn(scope,locals):valueFn(scope,locals)));else{if(trackFn){var modelCast={};modelCast[valueName]=modelValue,selected=trackFn(scope,modelCast)===trackFn(scope,locals)}else selected=modelValue===valueFn(scope,locals);selectedSet=selectedSet||selected}label=displayFn(scope,locals),label=isDefined(label)?label:"",optionGroup.push({id:trackFn?trackFn(scope,locals):keyName?keys[index]:index,label:label,selected:selected})}for(multiple||(nullOption||null===modelValue?optionGroups[""].unshift({id:"",label:"",selected:!selectedSet}):selectedSet||optionGroups[""].unshift({id:"?",label:"",selected:!0})),groupIndex=0,groupLength=optionGroupNames.length;groupLength>groupIndex;groupIndex++){for(optionGroupName=optionGroupNames[groupIndex],optionGroup=optionGroups[optionGroupName],optionGroupsCache.length<=groupIndex?(existingParent={element:optGroupTemplate.clone().attr("label",optionGroupName),label:optionGroup.label},existingOptions=[existingParent],optionGroupsCache.push(existingOptions),selectElement.append(existingParent.element)):(existingOptions=optionGroupsCache[groupIndex],existingParent=existingOptions[0],existingParent.label!=optionGroupName&&existingParent.element.attr("label",existingParent.label=optionGroupName)),lastElement=null,index=0,length=optionGroup.length;length>index;index++)option=optionGroup[index],(existingOption=existingOptions[index+1])?(lastElement=existingOption.element,existingOption.label!==option.label&&lastElement.text(existingOption.label=option.label),existingOption.id!==option.id&&lastElement.val(existingOption.id=option.id),lastElement[0].selected!==option.selected&&lastElement.prop("selected",existingOption.selected=option.selected)):(""===option.id&&nullOption?element=nullOption:(element=optionTemplate.clone()).val(option.id).attr("selected",option.selected).text(option.label),existingOptions.push(existingOption={element:element,label:option.label,id:option.id,selected:option.selected}),lastElement?lastElement.after(element):existingParent.element.append(element),lastElement=element);for(index++;existingOptions.length>index;)existingOptions.pop().element.remove()}for(;optionGroupsCache.length>groupIndex;)optionGroupsCache.pop()[0].element.remove()}var match;if(!(match=optionsExp.match(NG_OPTIONS_REGEXP)))throw ngOptionsMinErr("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",optionsExp,startingTag(selectElement));var displayFn=$parse(match[2]||match[1]),valueName=match[4]||match[6],keyName=match[5],groupByFn=$parse(match[3]||""),valueFn=$parse(match[2]?match[1]:valueName),valuesFn=$parse(match[7]),track=match[8],trackFn=track?$parse(match[8]):null,optionGroupsCache=[[{element:selectElement,label:""}]];nullOption&&($compile(nullOption)(scope),nullOption.removeClass("ng-scope"),nullOption.remove()),selectElement.empty(),selectElement.on("change",function(){scope.$apply(function(){var optionGroup,key,value,optionElement,index,groupIndex,length,groupLength,trackIndex,collection=valuesFn(scope)||[],locals={};if(multiple){for(value=[],groupIndex=0,groupLength=optionGroupsCache.length;groupLength>groupIndex;groupIndex++)for(optionGroup=optionGroupsCache[groupIndex],index=1,length=optionGroup.length;length>index;index++)if((optionElement=optionGroup[index].element)[0].selected){if(key=optionElement.val(),keyName&&(locals[keyName]=key),trackFn)for(trackIndex=0;trackIndexi;i++)if(""===children[i].value){emptyOption=nullOption=children.eq(i);break}selectCtrl.init(ngModelCtrl,nullOption,unknownOption),multiple&&(ngModelCtrl.$isEmpty=function(value){return!value||0===value.length}),optionsExp?setupAsOptions(scope,element,ngModelCtrl):multiple?setupAsMultiple(scope,element,ngModelCtrl):setupAsSingle(scope,element,ngModelCtrl,selectCtrl)}}}}],optionDirective=["$interpolate",function($interpolate){var nullSelectCtrl={addOption:noop,removeOption:noop};return{restrict:"E",priority:100,compile:function(element,attr){if(isUndefined(attr.value)){var interpolateFn=$interpolate(element.text(),!0);interpolateFn||attr.$set("value",element.text())}return function(scope,element,attr){var selectCtrlName="$selectController",parent=element.parent(),selectCtrl=parent.data(selectCtrlName)||parent.parent().data(selectCtrlName);selectCtrl&&selectCtrl.databound?element.prop("selected",!1):selectCtrl=nullSelectCtrl,interpolateFn?scope.$watch(interpolateFn,function(newVal,oldVal){attr.$set("value",newVal),newVal!==oldVal&&selectCtrl.removeOption(oldVal),selectCtrl.addOption(newVal)}):selectCtrl.addOption(attr.value),element.on("$destroy",function(){selectCtrl.removeOption(attr.value)})}}}}],styleDirective=valueFn({restrict:"E",terminal:!0});bindJQuery(),publishExternalAPI(angular),jqLite(document).ready(function(){angularInit(document,bootstrap)})}(window,document),!angular.$$csp()&&angular.element(document).find("head").prepend(''),angular.module("zetta",["siren","ui.state"]).config(["classRouterProvider","$stateProvider",function(classRouterProvider,$stateProvider){classRouterProvider.when(["root"],"overview").otherwise("device"),$stateProvider.state("index",{url:"",templateUrl:"partials/start.html",controller:"MainCtrl"}).state("overview",{url:"/overview?url&filter",templateUrl:"partials/overview.html",controller:"OverviewCtrl"}).state("device",{url:"/device?url",templateUrl:"partials/device.html",controller:"DeviceCtrl"})}]).factory("appState",function(){return{url:"",filter:null}}),function(window,angular,undefined){"use strict";angular.module("ngAnimate",["ng"]).factory("$$animateReflow",["$window","$timeout",function($window,$timeout){var requestAnimationFrame=$window.requestAnimationFrame||$window.webkitRequestAnimationFrame||function(fn){return $timeout(fn,10,!1)},cancelAnimationFrame=$window.cancelAnimationFrame||$window.webkitCancelAnimationFrame||function(timer){return $timeout.cancel(timer)};return function(fn){var id=requestAnimationFrame(fn);return function(){cancelAnimationFrame(id)}}}]).config(["$provide","$animateProvider",function($provide,$animateProvider){function extractElementNode(element){for(var i=0;i=0||"removeClass"==animationEvent&&-1==futureClassName.indexOf(classNameToken)?(fireDOMOperation(),fireBeforeCallbackAsync(),fireAfterCallbackAsync(),fireDoneCallbackAsync(),void 0):(element.addClass(NG_ANIMATE_CLASS_NAME),element.data(NG_ANIMATE_STATE,{running:!0,event:animationEvent,className:className,structural:!isClassBased,animations:animations,done:onBeforeAnimationsComplete}),invokeRegisteredAnimationFns(animations,"before",onBeforeAnimationsComplete),void 0)}function cancelChildAnimations(element){var node=extractElementNode(element);forEach(node.querySelectorAll("."+NG_ANIMATE_CLASS_NAME),function(element){element=angular.element(element);var data=element.data(NG_ANIMATE_STATE);data&&(cancelAnimations(data.animations),cleanup(element))})}function cancelAnimations(animations){var isCancelledFlag=!0;forEach(animations,function(animation){animation.beforeComplete||(animation.beforeEnd||noop)(isCancelledFlag),animation.afterComplete||(animation.afterEnd||noop)(isCancelledFlag)})}function cleanup(element){isMatchingElement(element,$rootElement)?rootAnimateState.disabled||(rootAnimateState.running=!1,rootAnimateState.structural=!1):(element.removeClass(NG_ANIMATE_CLASS_NAME),element.removeData(NG_ANIMATE_STATE))}function animationsDisabled(element,parentElement){if(rootAnimateState.disabled)return!0;if(isMatchingElement(element,$rootElement))return rootAnimateState.disabled||rootAnimateState.running;do{if(0===parentElement.length)break;var isRoot=isMatchingElement(parentElement,$rootElement),state=isRoot?rootAnimateState:parentElement.data(NG_ANIMATE_STATE),result=state&&(!!state.disabled||!!state.running);if(isRoot||result)return result;if(isRoot)return!0}while(parentElement=parentElement.parent());return!0}$rootElement.data(NG_ANIMATE_STATE,rootAnimateState),$rootScope.$$postDigest(function(){$rootScope.$$postDigest(function(){rootAnimateState.running=!1})});var classNameFilter=$animateProvider.classNameFilter(),isAnimatableClassName=classNameFilter?function(className){return classNameFilter.test(className)}:function(){return!0};return{enter:function(element,parentElement,afterElement,doneCallback){this.enabled(!1,element),$delegate.enter(element,parentElement,afterElement),$rootScope.$$postDigest(function(){performAnimation("enter","ng-enter",element,parentElement,afterElement,noop,doneCallback)})},leave:function(element,doneCallback){cancelChildAnimations(element),this.enabled(!1,element),$rootScope.$$postDigest(function(){performAnimation("leave","ng-leave",element,null,null,function(){$delegate.leave(element) +},doneCallback)})},move:function(element,parentElement,afterElement,doneCallback){cancelChildAnimations(element),this.enabled(!1,element),$delegate.move(element,parentElement,afterElement),$rootScope.$$postDigest(function(){performAnimation("move","ng-move",element,parentElement,afterElement,noop,doneCallback)})},addClass:function(element,className,doneCallback){performAnimation("addClass",className,element,null,null,function(){$delegate.addClass(element,className)},doneCallback)},removeClass:function(element,className,doneCallback){performAnimation("removeClass",className,element,null,null,function(){$delegate.removeClass(element,className)},doneCallback)},enabled:function(value,element){switch(arguments.length){case 2:if(value)cleanup(element);else{var data=element.data(NG_ANIMATE_STATE)||{};data.disabled=!0,element.data(NG_ANIMATE_STATE,data)}break;case 1:rootAnimateState.disabled=!value;break;default:value=!rootAnimateState.disabled}return!!value}}}]),$animateProvider.register("",["$window","$sniffer","$timeout","$$animateReflow",function($window,$sniffer,$timeout,$$animateReflow){function afterReflow(element,callback){cancelAnimationReflow&&cancelAnimationReflow(),animationReflowQueue.push(callback);var node=extractElementNode(element);element=angular.element(node),animationElementQueue.push(element);var elementData=element.data(NG_ANIMATE_CSS_DATA_KEY),stagger=elementData.stagger,staggerTime=elementData.itemIndex*(Math.max(stagger.animationDelay,stagger.transitionDelay)||0),animationTime=(elementData.maxDelay+elementData.maxDuration)*CLOSING_TIME_BUFFER;closingAnimationTime=Math.max(closingAnimationTime,(staggerTime+animationTime)*ONE_SECOND),elementData.animationCount=animationCounter,cancelAnimationReflow=$$animateReflow(function(){forEach(animationReflowQueue,function(fn){fn()});var elementQueueSnapshot=[],animationCounterSnapshot=animationCounter;forEach(animationElementQueue,function(elm){elementQueueSnapshot.push(elm)}),$timeout(function(){closeAllAnimations(elementQueueSnapshot,animationCounterSnapshot),elementQueueSnapshot=null},closingAnimationTime,!1),animationReflowQueue=[],animationElementQueue=[],cancelAnimationReflow=null,lookupCache={},closingAnimationTime=0,animationCounter++})}function closeAllAnimations(elements,count){forEach(elements,function(element){var elementData=element.data(NG_ANIMATE_CSS_DATA_KEY);elementData&&elementData.animationCount==count&&(elementData.closeAnimationFn||noop)()})}function getElementAnimationDetails(element,cacheKey){var data=cacheKey?lookupCache[cacheKey]:null;if(!data){var transitionDelayStyle,animationDelayStyle,transitionDurationStyle,transitionPropertyStyle,transitionDuration=0,transitionDelay=0,animationDuration=0,animationDelay=0;forEach(element,function(element){if(element.nodeType==ELEMENT_NODE){var elementStyles=$window.getComputedStyle(element)||{};transitionDurationStyle=elementStyles[TRANSITION_PROP+DURATION_KEY],transitionDuration=Math.max(parseMaxTime(transitionDurationStyle),transitionDuration),transitionPropertyStyle=elementStyles[TRANSITION_PROP+PROPERTY_KEY],transitionDelayStyle=elementStyles[TRANSITION_PROP+DELAY_KEY],transitionDelay=Math.max(parseMaxTime(transitionDelayStyle),transitionDelay),animationDelayStyle=elementStyles[ANIMATION_PROP+DELAY_KEY],animationDelay=Math.max(parseMaxTime(animationDelayStyle),animationDelay);var aDuration=parseMaxTime(elementStyles[ANIMATION_PROP+DURATION_KEY]);aDuration>0&&(aDuration*=parseInt(elementStyles[ANIMATION_PROP+ANIMATION_ITERATION_COUNT_KEY],10)||1),animationDuration=Math.max(aDuration,animationDuration)}}),data={total:0,transitionPropertyStyle:transitionPropertyStyle,transitionDurationStyle:transitionDurationStyle,transitionDelayStyle:transitionDelayStyle,transitionDelay:transitionDelay,transitionDuration:transitionDuration,animationDelayStyle:animationDelayStyle,animationDelay:animationDelay,animationDuration:animationDuration},cacheKey&&(lookupCache[cacheKey]=data)}return data}function parseMaxTime(str){var maxValue=0,values=angular.isString(str)?str.split(/\s*,\s*/):[];return forEach(values,function(value){maxValue=Math.max(parseFloat(value)||0,maxValue)}),maxValue}function getCacheKey(element){var parentElement=element.parent(),parentID=parentElement.data(NG_ANIMATE_PARENT_KEY);return parentID||(parentElement.data(NG_ANIMATE_PARENT_KEY,++parentCounter),parentID=parentCounter),parentID+"-"+extractElementNode(element).className}function animateSetup(element,className,calculationDecorator){var cacheKey=getCacheKey(element),eventCacheKey=cacheKey+" "+className,stagger={},itemIndex=lookupCache[eventCacheKey]?++lookupCache[eventCacheKey].total:0;if(itemIndex>0){var staggerClassName=className+"-stagger",staggerCacheKey=cacheKey+" "+staggerClassName,applyClasses=!lookupCache[staggerCacheKey];applyClasses&&element.addClass(staggerClassName),stagger=getElementAnimationDetails(element,staggerCacheKey),applyClasses&&element.removeClass(staggerClassName)}calculationDecorator=calculationDecorator||function(fn){return fn()},element.addClass(className);var timings=calculationDecorator(function(){return getElementAnimationDetails(element,eventCacheKey)}),maxDelay=Math.max(timings.transitionDelay,timings.animationDelay),maxDuration=Math.max(timings.transitionDuration,timings.animationDuration);if(0===maxDuration)return element.removeClass(className),!1;var activeClassName="";return timings.transitionDuration>0?blockTransitions(element):blockKeyframeAnimations(element),forEach(className.split(" "),function(klass,i){activeClassName+=(i>0?" ":"")+klass+"-active"}),element.data(NG_ANIMATE_CSS_DATA_KEY,{className:className,activeClassName:activeClassName,maxDuration:maxDuration,maxDelay:maxDelay,classes:className+" "+activeClassName,timings:timings,stagger:stagger,itemIndex:itemIndex}),!0}function blockTransitions(element){extractElementNode(element).style[TRANSITION_PROP+PROPERTY_KEY]="none"}function blockKeyframeAnimations(element){extractElementNode(element).style[ANIMATION_PROP]="none 0s"}function unblockTransitions(element){var prop=TRANSITION_PROP+PROPERTY_KEY,node=extractElementNode(element);node.style[prop]&&node.style[prop].length>0&&(node.style[prop]="")}function unblockKeyframeAnimations(element){var prop=ANIMATION_PROP,node=extractElementNode(element);node.style[prop]&&node.style[prop].length>0&&(node.style[prop]="")}function animateRun(element,className,activeAnimationComplete){function onEnd(){element.off(css3AnimationEvents,onAnimationProgress),element.removeClass(activeClassName),animateClose(element,className);var node=extractElementNode(element);for(var i in appliedStyles)node.style.removeProperty(appliedStyles[i])}function onAnimationProgress(event){event.stopPropagation();var ev=event.originalEvent||event,timeStamp=ev.$manualTimeStamp||ev.timeStamp||Date.now(),elapsedTime=parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));Math.max(timeStamp-startTime,0)>=maxDelayTime&&elapsedTime>=maxDuration&&activeAnimationComplete()}var elementData=element.data(NG_ANIMATE_CSS_DATA_KEY),node=extractElementNode(element);if(-1==node.className.indexOf(className)||!elementData)return activeAnimationComplete(),void 0;var timings=elementData.timings,stagger=elementData.stagger,maxDuration=elementData.maxDuration,activeClassName=elementData.activeClassName,maxDelayTime=Math.max(timings.transitionDelay,timings.animationDelay)*ONE_SECOND,startTime=Date.now(),css3AnimationEvents=ANIMATIONEND_EVENT+" "+TRANSITIONEND_EVENT,itemIndex=elementData.itemIndex,style="",appliedStyles=[];if(timings.transitionDuration>0){var propertyStyle=timings.transitionPropertyStyle;-1==propertyStyle.indexOf("all")&&(style+=CSS_PREFIX+"transition-property: "+propertyStyle+";",style+=CSS_PREFIX+"transition-duration: "+timings.transitionDurationStyle+";",appliedStyles.push(CSS_PREFIX+"transition-property"),appliedStyles.push(CSS_PREFIX+"transition-duration"))}if(itemIndex>0){if(stagger.transitionDelay>0&&0===stagger.transitionDuration){var delayStyle=timings.transitionDelayStyle;style+=CSS_PREFIX+"transition-delay: "+prepareStaggerDelay(delayStyle,stagger.transitionDelay,itemIndex)+"; ",appliedStyles.push(CSS_PREFIX+"transition-delay")}stagger.animationDelay>0&&0===stagger.animationDuration&&(style+=CSS_PREFIX+"animation-delay: "+prepareStaggerDelay(timings.animationDelayStyle,stagger.animationDelay,itemIndex)+"; ",appliedStyles.push(CSS_PREFIX+"animation-delay"))}if(appliedStyles.length>0){var oldStyle=node.getAttribute("style")||"";node.setAttribute("style",oldStyle+" "+style)}return element.on(css3AnimationEvents,onAnimationProgress),element.addClass(activeClassName),elementData.closeAnimationFn=function(){onEnd(),activeAnimationComplete()},onEnd}function prepareStaggerDelay(delayStyle,staggerDelay,index){var style="";return forEach(delayStyle.split(","),function(val,i){style+=(i>0?",":"")+(index*staggerDelay+parseInt(val,10))+"s"}),style}function animateBefore(element,className,calculationDecorator){return animateSetup(element,className,calculationDecorator)?function(cancelled){cancelled&&animateClose(element,className)}:void 0}function animateAfter(element,className,afterAnimationComplete){return element.data(NG_ANIMATE_CSS_DATA_KEY)?animateRun(element,className,afterAnimationComplete):(animateClose(element,className),afterAnimationComplete(),void 0)}function animate(element,className,animationComplete){var preReflowCancellation=animateBefore(element,className);if(!preReflowCancellation)return animationComplete(),void 0;var cancel=preReflowCancellation;return afterReflow(element,function(){unblockTransitions(element),unblockKeyframeAnimations(element),cancel=animateAfter(element,className,animationComplete)}),function(cancelled){(cancel||noop)(cancelled)}}function animateClose(element,className){element.removeClass(className),element.removeData(NG_ANIMATE_CSS_DATA_KEY)}function suffixClasses(classes,suffix){var className="";return classes=angular.isArray(classes)?classes:classes.split(/\s+/),forEach(classes,function(klass,i){klass&&klass.length>0&&(className+=(i>0?" ":"")+klass+suffix)}),className}var TRANSITION_PROP,TRANSITIONEND_EVENT,ANIMATION_PROP,ANIMATIONEND_EVENT,CSS_PREFIX="";window.ontransitionend===undefined&&window.onwebkittransitionend!==undefined?(CSS_PREFIX="-webkit-",TRANSITION_PROP="WebkitTransition",TRANSITIONEND_EVENT="webkitTransitionEnd transitionend"):(TRANSITION_PROP="transition",TRANSITIONEND_EVENT="transitionend"),window.onanimationend===undefined&&window.onwebkitanimationend!==undefined?(CSS_PREFIX="-webkit-",ANIMATION_PROP="WebkitAnimation",ANIMATIONEND_EVENT="webkitAnimationEnd animationend"):(ANIMATION_PROP="animation",ANIMATIONEND_EVENT="animationend");var cancelAnimationReflow,DURATION_KEY="Duration",PROPERTY_KEY="Property",DELAY_KEY="Delay",ANIMATION_ITERATION_COUNT_KEY="IterationCount",NG_ANIMATE_PARENT_KEY="$$ngAnimateKey",NG_ANIMATE_CSS_DATA_KEY="$$ngAnimateCSS3Data",ELAPSED_TIME_MAX_DECIMAL_PLACES=3,CLOSING_TIME_BUFFER=1.5,ONE_SECOND=1e3,animationCounter=0,lookupCache={},parentCounter=0,animationReflowQueue=[],animationElementQueue=[],closingAnimationTime=0;return{allowCancel:function(element,animationEvent,className){var oldClasses=(element.data(NG_ANIMATE_CSS_DATA_KEY)||{}).classes;if(!oldClasses||["enter","leave","move"].indexOf(animationEvent)>=0)return!0;var parentElement=element.parent(),clone=angular.element(extractElementNode(element).cloneNode());clone.attr("style","position:absolute; top:-9999px; left:-9999px"),clone.removeAttr("id"),clone.empty(),forEach(oldClasses.split(" "),function(klass){clone.removeClass(klass)});var suffix="addClass"==animationEvent?"-add":"-remove";clone.addClass(suffixClasses(className,suffix)),parentElement.append(clone);var timings=getElementAnimationDetails(clone);return clone.remove(),Math.max(timings.transitionDuration,timings.animationDuration)>0},enter:function(element,animationCompleted){return animate(element,"ng-enter",animationCompleted)},leave:function(element,animationCompleted){return animate(element,"ng-leave",animationCompleted)},move:function(element,animationCompleted){return animate(element,"ng-move",animationCompleted)},beforeAddClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore(element,suffixClasses(className,"-add"),function(fn){element.addClass(className);var timings=fn();return element.removeClass(className),timings});return cancellationMethod?(afterReflow(element,function(){unblockTransitions(element),unblockKeyframeAnimations(element),animationCompleted()}),cancellationMethod):(animationCompleted(),void 0)},addClass:function(element,className,animationCompleted){return animateAfter(element,suffixClasses(className,"-add"),animationCompleted)},beforeRemoveClass:function(element,className,animationCompleted){var cancellationMethod=animateBefore(element,suffixClasses(className,"-remove"),function(fn){var klass=element.attr("class");element.removeClass(className);var timings=fn();return element.attr("class",klass),timings});return cancellationMethod?(afterReflow(element,function(){unblockTransitions(element),unblockKeyframeAnimations(element),animationCompleted()}),cancellationMethod):(animationCompleted(),void 0)},removeClass:function(element,className,animationCompleted){return animateAfter(element,suffixClasses(className,"-remove"),animationCompleted)}}}])}])}(window,window.angular),function(){"use strict";angular.module("leaflet-directive",[]).directive("leaflet",function($q,leafletData,leafletMapDefaults,leafletHelpers,leafletEvents){var _leafletMap;return{restrict:"EA",replace:!0,scope:{center:"=center",defaults:"=defaults",maxbounds:"=maxbounds",bounds:"=bounds",markers:"=markers",legend:"=legend",geojson:"=geojson",paths:"=paths",tiles:"=tiles",layers:"=layers",controls:"=controls",eventBroadcast:"=eventBroadcast"},template:'
',controller:function($scope){_leafletMap=$q.defer(),this.getMap=function(){return _leafletMap.promise},this.getLeafletScope=function(){return $scope}},link:function(scope,element,attrs){var isDefined=leafletHelpers.isDefined,defaults=leafletMapDefaults.setDefaults(scope.defaults,attrs.id),genDispatchMapEvent=leafletEvents.genDispatchMapEvent,mapEvents=leafletEvents.getAvailableMapEvents();isDefined(attrs.width)&&(isNaN(attrs.width)?element.css("width",attrs.width):element.css("width",attrs.width+"px")),isDefined(attrs.height)&&(isNaN(attrs.height)?element.css("height",attrs.height):element.css("height",attrs.height+"px"));var map=new L.Map(element[0],leafletMapDefaults.getMapCreationDefaults(attrs.id));if(_leafletMap.resolve(map),isDefined(attrs.center)||map.setView([defaults.center.lat,defaults.center.lng],defaults.center.zoom),!isDefined(attrs.tiles)&&!isDefined(attrs.layers)){var tileLayerObj=L.tileLayer(defaults.tileLayer,defaults.tileLayerOptions);tileLayerObj.addTo(map),leafletData.setTiles(tileLayerObj)}if(isDefined(map.zoomControl)&&isDefined(defaults.zoomControlPosition)&&map.zoomControl.setPosition(defaults.zoomControlPosition),isDefined(map.zoomControl)&&defaults.zoomControl===!1&&map.zoomControl.removeFrom(map),isDefined(map.zoomsliderControl)&&isDefined(defaults.zoomsliderControl)&&defaults.zoomsliderControl===!1&&map.zoomsliderControl.removeFrom(map),!isDefined(attrs.eventBroadcast))for(var logic="broadcast",i=0;idefaults.center.zoom?map.locate({setView:!0,maxZoom:center.zoom}):isDefined(defaults.maxZoom)?map.locate({setView:!0,maxZoom:defaults.maxZoom}):map.locate({setView:!0}),void 0):(map.setView([center.lat,center.lng],center.zoom),changingModel=!1,void 0):($log.warn("[AngularJS - Leaflet] invalid 'center'"),map.setView([defaults.center.lat,defaults.center.lng],defaults.center.zoom),void 0)},!0),map.on("moveend",function(){changingModel||safeApply(leafletScope,function(scope){centerModel&&(centerModel.lat.assign(scope,map.getCenter().lat),centerModel.lng.assign(scope,map.getCenter().lng),centerModel.zoom.assign(scope,map.getZoom()),centerModel.autoDiscover.assign(scope,!1))})}),center.autoDiscover===!0&&map.on("locationerror",function(){$log.warn("[AngularJS - Leaflet] The Geolocation API is unauthorized on this page."),isValidCenter(center)?map.setView([center.lat,center.lng],center.zoom):map.setView([defaults.center.lat,defaults.center.lng],defaults.center.zoom)})})}}}),angular.module("leaflet-directive").directive("tiles",function($log,leafletData,leafletMapDefaults,leafletHelpers){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(scope,element,attrs,controller){var isDefined=leafletHelpers.isDefined,leafletScope=controller.getLeafletScope(),tiles=leafletScope.tiles;return isDefined(tiles)||isDefined(tiles.url)?(controller.getMap().then(function(map){var tileLayerObj,defaults=leafletMapDefaults.getDefaults(attrs.id);leafletScope.$watch("tiles",function(tiles){var tileLayerOptions=defaults.tileLayerOptions,tileLayerUrl=defaults.tileLayer;return!isDefined(tiles.url)&&isDefined(tileLayerObj)?(map.removeLayer(tileLayerObj),void 0):isDefined(tileLayerObj)?isDefined(tiles.url)&&isDefined(tiles.options)&&!angular.equals(tiles.options,tileLayerOptions)?(map.removeLayer(tileLayerObj),tileLayerOptions=defaults.tileLayerOptions,angular.copy(tiles.options,tileLayerOptions),tileLayerUrl=tiles.url,tileLayerObj=L.tileLayer(tileLayerUrl,tileLayerOptions),tileLayerObj.addTo(map),leafletData.setTiles(tileLayerObj,attrs.id),void 0):(isDefined(tiles.url)&&tileLayerObj.setUrl(tiles.url),void 0):(isDefined(tiles.options)&&angular.copy(tiles.options,tileLayerOptions),isDefined(tiles.url)&&(tileLayerUrl=tiles.url),tileLayerObj=L.tileLayer(tileLayerUrl,tileLayerOptions),tileLayerObj.addTo(map),leafletData.setTiles(tileLayerObj,attrs.id),void 0)},!0)}),void 0):($log.warn("[AngularJS - Leaflet] The 'tiles' definition doesn't have the 'url' property."),void 0)}}}),angular.module("leaflet-directive").directive("legend",function($log,leafletHelpers){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(scope,element,attrs,controller){var isArray=leafletHelpers.isArray,leafletScope=controller.getLeafletScope(),legend=leafletScope.legend;controller.getMap().then(function(map){if(isArray(legend.colors)&&isArray(legend.labels)&&legend.colors.length===legend.labels.length){var legendClass=legend.legendClass?legend.legendClass:"legend",position=legend.position||"bottomright",leafletLegend=L.control({position:position});leafletLegend.onAdd=function(){for(var div=L.DomUtil.create("div",legendClass),i=0;i'+legend.labels[i]+"";return div},leafletLegend.addTo(map)}else $log.warn("[AngularJS - Leaflet] legend.colors and legend.labels must be set.")})}}}),angular.module("leaflet-directive").directive("geojson",function($log,$rootScope,leafletData,leafletHelpers){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(scope,element,attrs,controller){var safeApply=leafletHelpers.safeApply,isDefined=leafletHelpers.isDefined,leafletScope=controller.getLeafletScope(),leafletGeoJSON={};controller.getMap().then(function(map){leafletScope.$watch("geojson",function(geojson){if(isDefined(leafletGeoJSON)&&map.hasLayer(leafletGeoJSON)&&map.removeLayer(leafletGeoJSON),isDefined(geojson)&&isDefined(geojson.data)){var resetStyleOnMouseout=geojson.resetStyleOnMouseout,onEachFeature=geojson.onEachFeature;onEachFeature||(onEachFeature=function(feature,layer){leafletHelpers.LabelPlugin.isLoaded()&&isDefined(geojson.label)&&layer.bindLabel(feature.properties.description),layer.on({mouseover:function(e){safeApply(leafletScope,function(){geojson.selected=feature,$rootScope.$broadcast("leafletDirectiveMap.geojsonMouseover",e)})},mouseout:function(e){resetStyleOnMouseout&&leafletGeoJSON.resetStyle(e.target),safeApply(leafletScope,function(){geojson.selected=void 0,$rootScope.$broadcast("leafletDirectiveMap.geojsonMouseout",e)})},click:function(e){safeApply(leafletScope,function(){$rootScope.$broadcast("leafletDirectiveMap.geojsonClick",geojson.selected,e)})}})}),geojson.options={style:geojson.style,onEachFeature:onEachFeature},leafletGeoJSON=L.geoJson(geojson.data,geojson.options),leafletData.setGeoJSON(leafletGeoJSON),leafletGeoJSON.addTo(map)}})})}}}),angular.module("leaflet-directive").directive("layers",function($log,$q,leafletData,leafletHelpers,leafletMapDefaults,leafletLayerHelpers){var _leafletLayers;return{restrict:"A",scope:!1,replace:!1,require:"leaflet",controller:function(){_leafletLayers=$q.defer(),this.getLayers=function(){return _leafletLayers.promise}},link:function(scope,element,attrs,controller){var isDefined=leafletHelpers.isDefined,isObject=leafletHelpers.isObject,leafletLayers={},leafletScope=controller.getLeafletScope(),layers=leafletScope.layers,createLayer=leafletLayerHelpers.createLayer;controller.getMap().then(function(map){var defaults=leafletMapDefaults.getDefaults(attrs.id);if(!isDefined(layers)||!isDefined(layers.baselayers)||0===Object.keys(layers.baselayers).length)return $log.error("[AngularJS - Leaflet] At least one baselayer has to be defined"),void 0;_leafletLayers.resolve(leafletLayers),leafletData.setLayers(leafletLayers,attrs.id),leafletLayers.baselayers={},leafletLayers.controls={},leafletLayers.controls.layers=new L.control.layers,leafletLayers.controls.layers.setPosition(defaults.controlLayersPosition);var oneVisibleLayer=!1;for(var layerName in layers.baselayers){var newBaseLayer=createLayer(layers.baselayers[layerName]);isDefined(newBaseLayer)?(leafletLayers.baselayers[layerName]=newBaseLayer,layers.baselayers[layerName].top===!0&&(map.addLayer(leafletLayers.baselayers[layerName]),oneVisibleLayer=!0),leafletLayers.controls.layers.addBaseLayer(leafletLayers.baselayers[layerName],layers.baselayers[layerName].name)):delete layers.baselayers[layerName]}var numberOfLayers=Object.keys(layers.baselayers).length;isObject(layers.overlays)&&(numberOfLayers+=Object.keys(layers.overlays).length),numberOfLayers>1&&leafletLayers.controls.layers.addTo(map),!oneVisibleLayer&&Object.keys(leafletLayers.baselayers).length>0&&map.addLayer(leafletLayers.baselayers[Object.keys(layers.baselayers)[0]]),leafletLayers.overlays={};for(layerName in layers.overlays){var newOverlayLayer=createLayer(layers.overlays[layerName]);isDefined(newOverlayLayer)?(leafletLayers.overlays[layerName]=newOverlayLayer,layers.overlays[layerName].visible===!0&&map.addLayer(leafletLayers.overlays[layerName]),leafletLayers.controls.layers.addOverlay(leafletLayers.overlays[layerName],layers.overlays[layerName].name)):delete layers.overlays[layerName]}leafletScope.$watch("layers.baselayers",function(newBaseLayers){for(var name in leafletLayers.baselayers)isDefined(newBaseLayers[name])||(leafletLayers.controls.layers.removeLayer(leafletLayers.baselayers[name]),map.hasLayer(leafletLayers.baselayers[name])&&map.removeLayer(leafletLayers.baselayers[name]),delete leafletLayers.baselayers[name]);for(var newName in newBaseLayers)if(!isDefined(leafletLayers.baselayers[newName])){var testBaseLayer=createLayer(newBaseLayers[newName]);isDefined(testBaseLayer)&&(leafletLayers.baselayers[newName]=testBaseLayer,newBaseLayers[newName].top===!0&&map.addLayer(leafletLayers.baselayers[newName]),leafletLayers.controls.layers.addBaseLayer(leafletLayers.baselayers[newName],newBaseLayers[newName].name))}if(0===Object.keys(leafletLayers.baselayers).length)return $log.error("[AngularJS - Leaflet] At least one baselayer has to be defined"),void 0;var found=!1;for(var key in leafletLayers.baselayers)if(map.hasLayer(leafletLayers.baselayers[key])){found=!0;break}found||map.addLayer(leafletLayers.baselayers[Object.keys(layers.baselayers)[0]])},!0),leafletScope.$watch("layers.overlays",function(newOverlayLayers){for(var name in leafletLayers.overlays)isDefined(newOverlayLayers[name])||(leafletLayers.controls.layers.removeLayer(leafletLayers.overlays[name]),map.hasLayer(leafletLayers.overlays[name])&&map.removeLayer(leafletLayers.overlays[name]),delete leafletLayers.overlays[name]);for(var newName in newOverlayLayers){if(!isDefined(leafletLayers.overlays[newName])){var testOverlayLayer=createLayer(newOverlayLayers[newName]);isDefined(testOverlayLayer)&&(leafletLayers.overlays[newName]=testOverlayLayer,leafletLayers.controls.layers.addOverlay(leafletLayers.overlays[newName],newOverlayLayers[newName].name),newOverlayLayers[newName].visible===!0&&map.addLayer(leafletLayers.overlays[newName]))}newOverlayLayers[newName].visible&&!map.hasLayer(leafletLayers.overlays[newName])?map.addLayer(leafletLayers.overlays[newName]):newOverlayLayers[newName].visible===!1&&map.hasLayer(leafletLayers.overlays[newName])&&map.removeLayer(leafletLayers.overlays[newName])}},!0)})}}}),angular.module("leaflet-directive").directive("bounds",function($log,leafletHelpers,leafletBoundsHelpers){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(scope,element,attrs,controller){var isDefined=leafletHelpers.isDefined,createLeafletBounds=leafletBoundsHelpers.createLeafletBounds,updateBoundsInScope=leafletBoundsHelpers.updateBoundsInScope,leafletScope=controller.getLeafletScope();controller.getMap().then(function(map){var initializing=!0;map.whenReady(function(){leafletScope.$watch("bounds",function(newBounds){if(!isDefined(newBounds))return $log.error("[AngularJS - Leaflet] Invalid bounds"),void 0;initializing=!1;var leafletBounds=createLeafletBounds(newBounds);leafletBounds&&!map.getBounds().equals(leafletBounds)&&map.fitBounds(leafletBounds)},!0),map.on("dragend zoomend",function(){initializing||updateBoundsInScope(leafletScope,map)})})})}}}),angular.module("leaflet-directive").directive("markers",function($log,$rootScope,$q,leafletData,leafletHelpers,leafletMapDefaults,leafletMarkersHelpers,leafletEvents){return{restrict:"A",scope:!1,replace:!1,require:["leaflet","?layers"],link:function(scope,element,attrs,controller){var mapController=controller[0],Helpers=leafletHelpers,isDefined=leafletHelpers.isDefined,isString=leafletHelpers.isString,leafletScope=mapController.getLeafletScope(),markers=leafletScope.markers,deleteMarker=leafletMarkersHelpers.deleteMarker,addMarkerWatcher=leafletMarkersHelpers.addMarkerWatcher,addMarkerToGroup=leafletMarkersHelpers.addMarkerToGroup,bindMarkerEvents=leafletEvents.bindMarkerEvents,createMarker=leafletMarkersHelpers.createMarker;mapController.getMap().then(function(map){var getLayers,leafletMarkers={};getLayers=isDefined(controller[1])?controller[1].getLayers:function(){var deferred=$q.defer();return deferred.resolve(),deferred.promise},isDefined(markers)&&getLayers().then(function(layers){leafletData.setMarkers(leafletMarkers,attrs.id),leafletScope.$watch("markers",function(newMarkers){for(var name in leafletMarkers)isDefined(newMarkers)&&isDefined(newMarkers[name])||(deleteMarker(leafletMarkers[name],map,layers),delete leafletMarkers[name]);for(var newName in newMarkers)if(!isDefined(leafletMarkers[newName])){var markerData=newMarkers[newName],marker=createMarker(markerData);if(!isDefined(marker)){$log.error("[AngularJS - Leaflet] Received invalid data on the marker "+newName+".");continue}if(leafletMarkers[newName]=marker,isDefined(markerData.message)&&marker.bindPopup(markerData.message),isDefined(markerData.group)&&addMarkerToGroup(marker,markerData.group,map),Helpers.LabelPlugin.isLoaded()&&isDefined(markerData.label)&&isDefined(markerData.label.message)&&marker.bindLabel(markerData.label.message,markerData.label.options),isDefined(markerData)&&isDefined(markerData.layer)){if(!isString(markerData.layer)){$log.error("[AngularJS - Leaflet] A layername must be a string");continue}if(!isDefined(layers)){$log.error("[AngularJS - Leaflet] You must add layers to the directive if the markers are going to use this functionality.");continue}if(!isDefined(layers.overlays)||!isDefined(layers.overlays[markerData.layer])){$log.error('[AngularJS - Leaflet] A marker can only be added to a layer of type "group"');continue}var layerGroup=layers.overlays[markerData.layer];if(!(layerGroup instanceof L.LayerGroup)){$log.error('[AngularJS - Leaflet] Adding a marker to an overlay needs a overlay of the type "group"');continue}layerGroup.addLayer(marker),map.hasLayer(marker)&&markerData.focus===!0&&marker.openPopup()}else map.addLayer(marker),markerData.focus===!0&&marker.openPopup(),Helpers.LabelPlugin.isLoaded()&&isDefined(markerData.label)&&isDefined(markerData.label.options)&&markerData.label.options.noHide===!0&&marker.showLabel();var shouldWatch=!isDefined(attrs.watchMarkers)||"true"===attrs.watchMarkers;shouldWatch&&addMarkerWatcher(marker,newName,leafletScope,layers,map),bindMarkerEvents(marker,newName,markerData,leafletScope)}},!0)})})}}}),angular.module("leaflet-directive").directive("paths",function($log,leafletData,leafletMapDefaults,leafletHelpers,leafletPathsHelpers,leafletEvents){return{restrict:"A",scope:!1,replace:!1,require:"leaflet",link:function(scope,element,attrs,controller){var isDefined=leafletHelpers.isDefined,leafletScope=controller.getLeafletScope(),paths=leafletScope.paths,createPath=leafletPathsHelpers.createPath,bindPathEvents=leafletEvents.bindPathEvents,setPathOptions=leafletPathsHelpers.setPathOptions;controller.getMap().then(function(map){var defaults=leafletMapDefaults.getDefaults(attrs.id);if(isDefined(paths)){var leafletPaths={};leafletData.setPaths(leafletPaths,attrs.id);var watchPathFn=function(leafletPath,name){var clearWatch=leafletScope.$watch("paths."+name,function(pathData){return isDefined(pathData)?(setPathOptions(leafletPath,pathData.type,pathData),void 0):(map.removeLayer(leafletPath),clearWatch(),void 0)},!0)};leafletScope.$watch("paths",function(newPaths){for(var newName in newPaths)if(!isDefined(leafletPaths[newName])){var pathData=newPaths[newName],newPath=createPath(newName,newPaths[newName],defaults);isDefined(newPath)&&(leafletPaths[newName]=newPath,map.addLayer(newPath),watchPathFn(newPath,newName)),bindPathEvents(newPath,newName,pathData,leafletScope)}for(var name in leafletPaths)isDefined(newPaths[name])||delete leafletPaths[name]},!0)}})}}}),angular.module("leaflet-directive").directive("controls",function($log,leafletHelpers){return{restrict:"A",scope:!1,replace:!1,require:"?^leaflet",link:function(scope,element,attrs,controller){if(controller){var isDefined=leafletHelpers.isDefined,leafletScope=controller.getLeafletScope(),controls=leafletScope.controls;controller.getMap().then(function(map){if(isDefined(L.Control.Draw)&&isDefined(controls.draw)){var drawControl=new L.Control.Draw(controls.draw.options);map.addControl(drawControl)}if(isDefined(controls.custom))for(var i=0;iOpenStreetMap contributors'},path:{weight:10,opacity:1,color:"#0000ff"},center:{lat:0,lng:0,zoom:1}}}var isDefined=leafletHelpers.isDefined,obtainEffectiveMapId=leafletHelpers.obtainEffectiveMapId,defaults={};return{getDefaults:function(scopeId){var mapId=obtainEffectiveMapId(defaults,scopeId);return defaults[mapId]},getMapCreationDefaults:function(scopeId){var mapId=obtainEffectiveMapId(defaults,scopeId),d=defaults[mapId],mapDefaults={maxZoom:d.maxZoom,keyboard:d.keyboard,dragging:d.dragging,zoomControl:d.zoomControl,doubleClickZoom:d.doubleClickZoom,scrollWheelZoom:d.scrollWheelZoom,attributionControl:d.attributionControl,worldCopyJump:d.worldCopyJump,crs:d.crs};return isDefined(d.minZoom)&&(mapDefaults.minZoom=d.minZoom),isDefined(d.zoomAnimation)&&(mapDefaults.zoomAnimation=d.zoomAnimation),isDefined(d.fadeAnimation)&&(mapDefaults.fadeAnimation=d.fadeAnimation),isDefined(d.markerZoomAnimation)&&(mapDefaults.markerZoomAnimation=d.markerZoomAnimation),mapDefaults},setDefaults:function(userDefaults,scopeId){var newDefaults=_getDefaults();isDefined(userDefaults)&&(newDefaults.doubleClickZoom=isDefined(userDefaults.doubleClickZoom)?userDefaults.doubleClickZoom:newDefaults.doubleClickZoom,newDefaults.scrollWheelZoom=isDefined(userDefaults.scrollWheelZoom)?userDefaults.scrollWheelZoom:newDefaults.doubleClickZoom,newDefaults.zoomControl=isDefined(userDefaults.zoomControl)?userDefaults.zoomControl:newDefaults.zoomControl,newDefaults.zoomsliderControl=isDefined(userDefaults.zoomsliderControl)?userDefaults.zoomsliderControl:newDefaults.zoomsliderControl,newDefaults.attributionControl=isDefined(userDefaults.attributionControl)?userDefaults.attributionControl:newDefaults.attributionControl,newDefaults.tileLayer=isDefined(userDefaults.tileLayer)?userDefaults.tileLayer:newDefaults.tileLayer,newDefaults.zoomControlPosition=isDefined(userDefaults.zoomControlPosition)?userDefaults.zoomControlPosition:newDefaults.zoomControlPosition,newDefaults.keyboard=isDefined(userDefaults.keyboard)?userDefaults.keyboard:newDefaults.keyboard,newDefaults.dragging=isDefined(userDefaults.dragging)?userDefaults.dragging:newDefaults.dragging,newDefaults.controlLayersPosition=isDefined(userDefaults.controlLayersPosition)?userDefaults.controlLayersPosition:newDefaults.controlLayersPosition,isDefined(userDefaults.crs)&&isDefined(L.CRS[userDefaults.crs])&&(newDefaults.crs=L.CRS[userDefaults.crs]),isDefined(userDefaults.tileLayerOptions)&&angular.copy(userDefaults.tileLayerOptions,newDefaults.tileLayerOptions),isDefined(userDefaults.maxZoom)&&(newDefaults.maxZoom=userDefaults.maxZoom),isDefined(userDefaults.minZoom)&&(newDefaults.minZoom=userDefaults.minZoom),isDefined(userDefaults.zoomAnimation)&&(newDefaults.zoomAnimation=userDefaults.zoomAnimation),isDefined(userDefaults.fadeAnimation)&&(newDefaults.fadeAnimation=userDefaults.fadeAnimation),isDefined(userDefaults.markerZoomAnimation)&&(newDefaults.markerZoomAnimation=userDefaults.markerZoomAnimation),isDefined(userDefaults.worldCopyJump)&&(newDefaults.worldCopyJump=userDefaults.worldCopyJump));var mapId=obtainEffectiveMapId(defaults,scopeId);return defaults[mapId]=newDefaults,newDefaults}}}),angular.module("leaflet-directive").factory("leafletEvents",function($rootScope,$q,$log,leafletHelpers){var safeApply=leafletHelpers.safeApply,isDefined=leafletHelpers.isDefined,isObject=leafletHelpers.isObject,Helpers=leafletHelpers,_getAvailableLabelEvents=function(){return["click","dblclick","mousedown","mouseover","mouseout","contextmenu"]},genLabelEvents=function(leafletScope,logic,marker,name){for(var labelEvents=_getAvailableLabelEvents(),scopeWatchName="markers."+name,i=0;ii;++i){var key=keys[i-1],val="string"==typeof m[i]?decodeURIComponent(m[i]):m[i];key&&val&&(params[key.name]=val)}return params}function updateRoute(){var next=parseRoute(),last=$route.current;next&&last&&next.$$route===last.$$route&&angular.equals(next.pathParams,last.pathParams)&&!next.reloadOnSearch&&!forceReload?(last.params=next.params,angular.copy(last.params,$routeParams),$rootScope.$broadcast("$routeUpdate",last)):(next||last)&&(forceReload=!1,$rootScope.$broadcast("$routeChangeStart",next,last),$route.current=next,next&&next.redirectTo&&(angular.isString(next.redirectTo)?$location.path(interpolate(next.redirectTo,next.params)).search(next.params).replace():$location.url(next.redirectTo(next.pathParams,$location.path(),$location.search())).replace()),$q.when(next).then(function(){if(next){var template,templateUrl,locals=angular.extend({},next.resolve);return angular.forEach(locals,function(value,key){locals[key]=angular.isString(value)?$injector.get(value):$injector.invoke(value)}),angular.isDefined(template=next.template)?angular.isFunction(template)&&(template=template(next.params)):angular.isDefined(templateUrl=next.templateUrl)&&(angular.isFunction(templateUrl)&&(templateUrl=templateUrl(next.params)),templateUrl=$sce.getTrustedResourceUrl(templateUrl),angular.isDefined(templateUrl)&&(next.loadedTemplateUrl=templateUrl,template=$http.get(templateUrl,{cache:$templateCache}).then(function(response){return response.data}))),angular.isDefined(template)&&(locals.$template=template),$q.all(locals)}}).then(function(locals){next==$route.current&&(next&&(next.locals=locals,angular.copy(next.params,$routeParams)),$rootScope.$broadcast("$routeChangeSuccess",next,last))},function(error){next==$route.current&&$rootScope.$broadcast("$routeChangeError",next,last,error)}))}function parseRoute(){var params,match;return angular.forEach(routes,function(route){!match&&(params=switchRouteMatcher($location.path(),route))&&(match=inherit(route,{params:angular.extend({},$location.search(),params),pathParams:params}),match.$$route=route)}),match||routes[null]&&inherit(routes[null],{params:{},pathParams:{}})}function interpolate(string,params){var result=[];return angular.forEach((string||"").split(":"),function(segment,i){if(0===i)result.push(segment);else{var segmentMatch=segment.match(/(\w+)(.*)/),key=segmentMatch[1];result.push(params[key]),result.push(segmentMatch[2]||""),delete params[key]}}),result.join("")}var forceReload=!1,$route={routes:routes,reload:function(){forceReload=!0,$rootScope.$evalAsync(updateRoute)}};return $rootScope.$on("$locationChangeSuccess",updateRoute),$route}]}function $RouteParamsProvider(){this.$get=function(){return{}}}function ngViewFactory($route,$anchorScroll,$animate){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(scope,$element,attr,ctrl,$transclude){function cleanupLastView(){currentScope&&(currentScope.$destroy(),currentScope=null),currentElement&&($animate.leave(currentElement),currentElement=null)}function update(){var locals=$route.current&&$route.current.locals,template=locals&&locals.$template;if(angular.isDefined(template)){var newScope=scope.$new(),current=$route.current,clone=$transclude(newScope,function(clone){$animate.enter(clone,null,currentElement||$element,function(){!angular.isDefined(autoScrollExp)||autoScrollExp&&!scope.$eval(autoScrollExp)||$anchorScroll()}),cleanupLastView()});currentElement=clone,currentScope=current.scope=newScope,currentScope.$emit("$viewContentLoaded"),currentScope.$eval(onloadExp)}else cleanupLastView()}var currentScope,currentElement,autoScrollExp=attr.autoscroll,onloadExp=attr.onload||"";scope.$on("$routeChangeSuccess",update),update()}}}function ngViewFillContentFactory($compile,$controller,$route){return{restrict:"ECA",priority:-400,link:function(scope,$element){var current=$route.current,locals=current.locals;$element.html(locals.$template);var link=$compile($element.contents());if(current.controller){locals.$scope=scope;var controller=$controller(current.controller,locals);current.controllerAs&&(scope[current.controllerAs]=controller),$element.data("$ngControllerController",controller),$element.children().data("$ngControllerController",controller)}link(scope)}}}var ngRouteModule=angular.module("ngRoute",["ng"]).provider("$route",$RouteProvider);ngRouteModule.provider("$routeParams",$RouteParamsProvider),ngRouteModule.directive("ngView",ngViewFactory),ngRouteModule.directive("ngView",ngViewFillContentFactory),ngViewFactory.$inject=["$route","$anchorScroll","$animate"],ngViewFillContentFactory.$inject=["$compile","$controller","$route"]}(window,window.angular),function(p,h,q){"use strict";function E(a){var e=[];return s(e,h.noop).chars(a),e.join("")}function k(a){var e={};a=a.split(",");var d;for(d=0;d=0&&f[c]!=b;c--);if(c>=0){for(d=f.length-1;d>=c;d--)e.end&&e.end(f[d]);f.length=c}}var b,g,f=[],l=a;for(f.last=function(){return f[f.length-1]};a;){if(g=!0,f.last()&&x[f.last()]?(a=a.replace(RegExp("(.*)<\\s*\\/\\s*"+f.last()+"[^>]*>","i"),function(b,a){return a=a.replace(H,"$1").replace(I,"$1"),e.chars&&e.chars(r(a)),""}),c("",f.last())):(0===a.indexOf("",b)===b&&(e.comment&&e.comment(a.substring(4,b)),a=a.substring(b+3),g=!1)):y.test(a)?(b=a.match(y))&&(a=a.replace(b[0],""),g=!1):J.test(a)?(b=a.match(z))&&(a=a.substring(b[0].length),b[0].replace(z,c),g=!1):K.test(a)&&(b=a.match(A))&&(a=a.substring(b[0].length),b[0].replace(A,d),g=!1),g&&(b=a.indexOf("<"),g=0>b?a:a.substring(0,b),a=0>b?"":a.substring(b),e.chars&&e.chars(r(g)))),a==l)throw L("badparse",a);l=a}c()}function r(a){if(!a)return"";var e=M.exec(a);a=e[1];var d=e[3];return(e=e[2])&&(n.innerHTML=e.replace(//g,">")}function s(a,e){var d=!1,c=h.bind(a,a.push);return{start:function(a,g,f){a=h.lowercase(a),!d&&x[a]&&(d=a),d||!0!==C[a]||(c("<"),c(a),h.forEach(g,function(d,f){var g=h.lowercase(f),k="img"===a&&"src"===g||"background"===g;!0!==O[g]||!0===D[g]&&!e(d,k)||(c(" "),c(f),c('="'),c(B(d)),c('"'))}),c(f?"/>":">"))},end:function(a){a=h.lowercase(a),d||!0!==C[a]||(c("")),a==d&&(d=!1)},chars:function(a){d||c(B(a))}}}var L=h.$$minErr("$sanitize"),A=/^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*>/,z=/^<\s*\/\s*([\w:-]+)[^>]*>/,G=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,K=/^]*?)>/i,I=/]/,d=/^mailto:/;return function(c,b){function g(a){a&&m.push(E(a))}function f(a,c){m.push("'),g(c),m.push("")}if(!c)return c;for(var l,n,p,k=c,m=[];l=k.match(e);)n=l[0],l[2]==l[3]&&(n="mailto:"+n),p=l.index,g(k.substr(0,p)),f(n,l[0].replace(d,"")),k=k.substring(p+l[0].length);return g(k),a(m.join(""))}}])}(window,window.angular),function(t,r,e){"use strict";function n(t,r){return g(new(g(function(){},{prototype:t})),r)}function a(t){return d(arguments,function(r){r!==t&&d(r,function(r,e){t.hasOwnProperty(e)||(t[e]=r)})}),t}function i(t,r,e){this.fromConfig=function(t,r,e){return h(t.template)?this.fromString(t.template,r):h(t.templateUrl)?this.fromUrl(t.templateUrl,r):h(t.templateProvider)?this.fromProvider(t.templateProvider,r,e):null},this.fromString=function(t,r){return m(t)?t(r):t},this.fromUrl=function(e,n){return m(e)&&(e=e(n)),null==e?null:t.get(e,{cache:r}).then(function(t){return t.data})},this.fromProvider=function(t,r,n){return e.invoke(t,null,n||{params:r})}}function o(t){function r(r){if(!/^\w+$/.test(r))throw Error("Invalid parameter name '"+r+"' in pattern '"+t+"'");if(i[r])throw Error("Duplicate parameter name '"+r+"' in pattern '"+t+"'");i[r]=!0,l.push(r)}function e(t){return t.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&")}var n,a=/([:*])(\w+)|\{(\w+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,i={},o="^",s=0,u=this.segments=[],l=this.params=[];this.source=t;for(var c,f,h;(n=a.exec(t))&&(c=n[2]||n[3],f=n[4]||("*"==n[1]?".*":"[^/]*"),h=t.substring(s,n.index),!(h.indexOf("?")>=0));)o+=e(h)+"("+f+")",r(c),u.push(h),s=a.lastIndex;h=t.substring(s);var m=h.indexOf("?");if(m>=0){var p=this.sourceSearch=h.substring(m);h=h.substring(0,m),this.sourcePath=t.substring(0,s+m),d(p.substring(1).split(/[&?]/),r)}else this.sourcePath=t,this.sourceSearch="";o+=e(h)+"$",u.push(h),this.regexp=RegExp(o),this.prefix=u[0]}function s(){this.compile=function(t){return new o(t)},this.isMatcher=function(t){return t instanceof o},this.$get=function(){return this}}function u(t){function r(t){var r=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(t.source);return null!=r?r[1].replace(/\\(.)/g,"$1"):""}function e(t,r){return t.replace(/\$(\$|\d{1,2})/,function(t,e){return r["$"===e?0:Number(e)]})}function n(t,r,e){if(!e)return!1;var n=t.invoke(r,r,{$match:e});return h(n)?n:!0}var a=[],i=null;this.rule=function(t){if(!m(t))throw Error("'rule' must be a function");return a.push(t),this},this.otherwise=function(t){if(p(t)){var r=t;t=function(){return r}}else if(!m(t))throw Error("'rule' must be a function");return i=t,this},this.when=function(a,i){var o,s;if(p(a)&&(a=t.compile(a)),t.isMatcher(a)){if(p(i))s=t.compile(i),i=["$match",function(t){return s.format(t)}];else if(!m(i)&&!v(i))throw Error("invalid 'handler' in when()");o=function(t,r){return n(t,i,a.exec(r.path(),r.search()))},o.prefix=p(a.prefix)?a.prefix:""}else{if(!(a instanceof RegExp))throw Error("invalid 'what' in when()");if(p(i))s=i,i=["$match",function(t){return e(s,t)}];else if(!m(i)&&!v(i))throw Error("invalid 'handler' in when()");if(a.global||a.sticky)throw Error("when() RegExp must not be global or sticky");o=function(t,r){return n(t,i,a.exec(r.path()))},o.prefix=r(a)}return this.rule(o)},this.$get=["$location","$rootScope","$injector",function(t,r,e){function n(){var r,n,i=a.length;for(r=0;i>r;r++)if(n=a[r](e,t)){p(n)&&t.replace().url(n);break}}return i&&a.push(i),r.$on("$locationChangeSuccess",n),{}}]}function l(t,r){function e(t){var r;if(p(t)){if(r=c[t],!r)throw Error("No such state '"+t+"'")}else if(r=c[t.name],!r||r!==t&&r.self!==t)throw Error("Invalid or unregistered state");return r}function i(a){a=n(a,{self:a,toString:function(){return this.name}});var i=a.name;if(!p(i)||i.indexOf("@")>=0)throw Error("State must have a valid name");if(c[i])throw Error("State '"+i+"'' is already defined");var o=u;if(h(a.parent))null!=a.parent&&(o=e(a.parent));else{var s=/^(.+)\.[^.]+$/.exec(i);null!=s&&(o=e(s[1]))}a.parent=o;var f=a.url;if(p(f))f=a.url="^"==f.charAt(0)?r.compile(f.substring(1)):(o.navigable||u).url.concat(f);else if($(f)&&m(f.exec)&&m(f.format)&&m(f.concat));else if(null!=f)throw Error("Invalid url '"+f+"' in state '"+a+"'");a.navigable=f?a:o?o.navigable:null;var w=a.params;if(w){if(!v(w))throw Error("Invalid params in state '"+a+"'");if(f)throw Error("Both params and url specicified in state '"+a+"'")}else w=a.params=f?f.parameters():a.parent.params;var b={};if(d(w,function(t){b[t]=!0}),o){d(o.params,function(t){if(!b[t])throw Error("Missing required parameter '"+t+"' in state '"+i+"'");b[t]=!1});var E=a.ownParams=[];d(b,function(t,r){t&&E.push(r)})}else a.ownParams=w;var x={};d(h(a.views)?a.views:{"":a},function(t,r){0>r.indexOf("@")&&(r=r+"@"+a.parent.name),x[r]=t}),a.views=x,a.path=o?o.path.concat(a):[];var P=a.includes=o?g({},o.includes):{};return P[i]=!0,a.resolve||(a.resolve={}),!a["abstract"]&&f&&t.when(f,["$match",function(t){l.transitionTo(a,t,!1)}]),c[i]=a,a}function o(t,r){return $(t)?r=t:r.name=t,i(r),this}function s(t,r,i,o,s,c){function f(t,e,n,s,u){function l(e,n){d(e,function(e,a){f.push(r.when(p(e)?o.get(e):o.invoke(e,t.self,h)).then(function(t){n[a]=t}))})}var c,f=[s];n?c=e:(c={},d(t.params,function(t){c[t]=e[t]}));var h={$stateParams:c},m=u.globals={$stateParams:c};return l(t.resolve,m),m.$$state=t,d(t.views,function(e,n){var a=u[n]={$$controller:e.controller};f.push(r.when(i.fromConfig(e,c,h)||"").then(function(t){a.$template=t})),e.resolve!==t.resolve&&l(e.resolve,a)}),r.all(f).then(function(r){return a(u.globals,r[0].globals),d(t.views,function(t,r){a(u[r],u.globals)}),u})}function m(t,r){var e={};return d(t,function(t){var n=r[t];e[t]=null!=n?n+"":null}),e}function $(t,r,e){for(var n=0;e.length>n;n++){var a=e[n];if(t[a]!=r[a])return!1}return!0}var v=r.reject(Error("transition superseded")),g=r.reject(Error("transition prevented"));return l={params:{},current:u.self,$current:u,transition:null},l.transitionTo=function(a,i,p){if(h(p)||(p=!0),a=e(a),a["abstract"])throw Error("Cannot transition to abstract state '"+a+"'");var d,b,E=a.path,x=l.$current,P=l.params,S=x.path,C=u.locals,y=[];for(d=0,b=E[d];b&&b===S[d]&&$(i,P,b.ownParams);d++,b=E[d])C=y[d]=b.locals;if(a===x&&C===x.locals)return l.transition=null,r.when(l.current);if(i=m(a.params,i||{}),t.$broadcast("$stateChangeStart",a.self,i,x.self,P).defaultPrevented)return g;for(var j=r.when(C),R=d;E.length>R;R++,b=E[R])C=y[R]=n(C),j=f(b,i,b===a,j,C);var k=l.transition=j.then(function(){var r,e,n;if(l.transition!==k)return v;for(r=S.length-1;r>=d;r--)n=S[r],n.self.onExit&&o.invoke(n.self.onExit,n.self,n.locals.globals),n.locals=null;for(r=d;E.length>r;r++)e=E[r],e.locals=y[r],e.self.onEnter&&o.invoke(e.self.onEnter,e.self,e.locals.globals);l.$current=a,l.current=a.self,l.params=i,w(l.params,s),l.transition=null;var u=a.navigable;return p&&u&&c.url(u.url.format(u.locals.globals.$stateParams)),t.$broadcast("$stateChangeSuccess",a.self,i,x.self,P),l.current},function(e){return l.transition!==k?v:(l.transition=null,t.$broadcast("$stateChangeError",a.self,i,x.self,P,e),r.reject(e))});return k},l.is=function(t){return l.$current===e(t)},l.includes=function(t){return l.$current.includes[e(t).name]},l.href=function(t,r){var n=e(t),a=n.navigable;if(!a)throw Error("State '"+n+"' is not navigable");return a.url.format(m(n.params,r||{}))},l}var u,l,c={};u=i({name:"",url:"^",views:null,"abstract":!0}),u.locals={globals:{$stateParams:{}}},u.navigable=null,this.state=o,this.$get=s,s.$inject=["$rootScope","$q","$templateFactory","$injector","$stateParams","$location","$urlRouter"]}function c(t,e,n,a,i){var o;try{o=a.get("$animator")}catch(s){}var u={restrict:"ECA",terminal:!0,link:function(a,s,l){function c(o){var u=t.$current&&t.$current.locals[p];if(u!==m)if(f&&(v&&o?v.leave(s.contents(),s):s.html(""),f.$destroy(),f=null),u){m=u,g.state=u.$$state;var l;v&&o?(l=r.element("
").html(u.$template).contents(),v.enter(l,s)):(s.html(u.$template),l=s.contents());var c=e(l);if(f=a.$new(),u.$$controller){u.$scope=f;var h=n(u.$$controller,u);s.children().data("$ngControllerController",h)}c(f),f.$emit("$viewContentLoaded"),f.$eval($),i()}else m=null,g.state=null}var f,m,p=l[u.name]||l.name||"",$=l.onload||"",v=h(o)&&o(a,l),d=s.parent().inheritedData("$uiView");0>p.indexOf("@")&&(p=p+"@"+(d?d.state.name:""));var g={name:p,state:null};s.data("$uiView",g),a.$on("$stateChangeSuccess",function(){c(!0)}),c(!1)}};return u}function f(t,r){function a(t){this.locals=t.locals.globals,this.params=this.locals.$stateParams}function i(){this.locals=null,this.params=null}function o(e,o){if(null!=o.redirectTo){var s,l=o.redirectTo;if(p(l))s=l;else{if(!m(l))throw Error("Invalid 'redirectTo' in when()");s=function(t,r){return l(t,r.path(),r.search())}}r.when(e,s)}else t.state(n(o,{parent:null,name:"route:"+encodeURIComponent(e),url:e,onEnter:a,onExit:i}));return u.push(o),this}function s(t,r,n){function a(t){return""!==t.name?t:e}var i={routes:u,params:n,current:e};return r.$on("$stateChangeStart",function(t,e,n,i){r.$broadcast("$routeChangeStart",a(e),a(i))}),r.$on("$stateChangeSuccess",function(t,e,n,o){i.current=a(e),r.$broadcast("$routeChangeSuccess",a(e),a(o)),w(n,i.params)}),r.$on("$stateChangeError",function(t,e,n,i,o,s){r.$broadcast("$routeChangeError",a(e),a(i),s)}),i}var u=[];a.$inject=["$$state"],this.when=o,this.$get=s,s.$inject=["$state","$rootScope","$routeParams"]}var h=r.isDefined,m=r.isFunction,p=r.isString,$=r.isObject,v=r.isArray,d=r.forEach,g=r.extend,w=r.copy;r.module("ui.util",["ng"]),r.module("ui.router",["ui.util"]),r.module("ui.state",["ui.router","ui.util"]),r.module("ui.compat",["ui.state"]),i.$inject=["$http","$templateCache","$injector"],r.module("ui.util").service("$templateFactory",i),o.prototype.concat=function(t){return new o(this.sourcePath+t+this.sourceSearch)},o.prototype.toString=function(){return this.source},o.prototype.exec=function(t,r){var e=this.regexp.exec(t);if(!e)return null;var n,a=this.params,i=a.length,o=this.segments.length-1,s={};for(n=0;o>n;n++)s[a[n]]=decodeURIComponent(e[n+1]);for(;i>n;n++)s[a[n]]=r[a[n]];return s},o.prototype.parameters=function(){return this.params},o.prototype.format=function(t){var r=this.segments,e=this.params;if(!t)return r.join("");var n,a,i,o=r.length-1,s=e.length,u=r[0];for(n=0;o>n;n++)i=t[e[n]],null!=i&&(u+=i),u+=r[n+1];for(;s>n;n++)i=t[e[n]],null!=i&&(u+=(a?"&":"?")+e[n]+"="+encodeURIComponent(i),a=!0);return u},r.module("ui.util").provider("$urlMatcherFactory",s),u.$inject=["$urlMatcherFactoryProvider"],r.module("ui.router").provider("$urlRouter",u),l.$inject=["$urlRouterProvider","$urlMatcherFactoryProvider"],r.module("ui.state").value("$stateParams",{}).provider("$state",l),c.$inject=["$state","$compile","$controller","$injector","$anchorScroll"],r.module("ui.state").directive("uiView",c),f.$inject=["$stateProvider","$urlRouterProvider"],r.module("ui.compat").provider("$route",f).directive("ngView",c)}(window,window.angular),!function(){function d3_number(x){return null!=x&&!isNaN(x)}function d3_zipLength(d){return d.length}function d3_range_integerScale(x){for(var k=1;x*k%1;)k*=10;return k}function d3_class(ctor,properties){try{for(var key in properties)Object.defineProperty(ctor.prototype,key,{value:properties[key],enumerable:!1})}catch(e){ctor.prototype=properties}}function d3_Map(){}function d3_map_has(key){return d3_map_prefix+key in this}function d3_map_remove(key){return key=d3_map_prefix+key,key in this&&delete this[key]}function d3_map_keys(){var keys=[];return this.forEach(function(key){keys.push(key)}),keys}function d3_map_size(){var size=0;for(var key in this)key.charCodeAt(0)===d3_map_prefixCode&&++size;return size}function d3_map_empty(){for(var key in this)if(key.charCodeAt(0)===d3_map_prefixCode)return!1;return!0}function d3_Set(){}function d3_rebind(target,source,method){return function(){var value=method.apply(source,arguments);return value===source?target:value}}function d3_vendorSymbol(object,name){if(name in object)return name;name=name.charAt(0).toUpperCase()+name.substring(1);for(var i=0,n=d3_vendorPrefixes.length;n>i;++i){var prefixName=d3_vendorPrefixes[i]+name;if(prefixName in object)return prefixName}}function d3_noop(){}function d3_dispatch(){}function d3_dispatch_event(dispatch){function event(){for(var l,z=listeners,i=-1,n=z.length;++ij;j++)for(var node,group=groups[j],i=0,n=group.length;n>i;i++)(node=group[i])&&callback(node,i,j);return groups}function d3_selection_enter(selection){return d3_subclass(selection,d3_selection_enterPrototype),selection}function d3_selection_enterInsertBefore(enter){var i0,j0;return function(d,i,j){var node,group=enter[j].update,n=group.length;for(j!=j0&&(j0=j,i0=0),i>=i0&&(i0=i+1);!(node=group[i0])&&++i00&&(type=type.substring(0,i));var filter=d3_selection_onFilters.get(type);return filter&&(type=filter,wrap=d3_selection_onFilter),i?listener?onAdd:onRemove:listener?d3_noop:removeAll}function d3_selection_onListener(listener,argumentz){return function(e){var o=d3.event;d3.event=e,argumentz[0]=this.__data__;try{listener.apply(this,argumentz)}finally{d3.event=o}}}function d3_selection_onFilter(listener,argumentz){var l=d3_selection_onListener(listener,argumentz);return function(e){var target=this,related=e.relatedTarget;related&&(related===target||8&related.compareDocumentPosition(target))||l.call(target,e)}}function d3_event_dragSuppress(){var name=".dragsuppress-"+ ++d3_event_dragId,click="click"+name,w=d3.select(d3_window).on("touchmove"+name,d3_eventPreventDefault).on("dragstart"+name,d3_eventPreventDefault).on("selectstart"+name,d3_eventPreventDefault);if(d3_event_dragSelect){var style=d3_documentElement.style,select=style[d3_event_dragSelect];style[d3_event_dragSelect]="none"}return function(suppressClick){function off(){w.on(click,null)}w.on(name,null),d3_event_dragSelect&&(style[d3_event_dragSelect]=select),suppressClick&&(w.on(click,function(){d3_eventPreventDefault(),off()},!0),setTimeout(off,0))}}function d3_mousePoint(container,e){e.changedTouches&&(e=e.changedTouches[0]);var svg=container.ownerSVGElement||container;if(svg.createSVGPoint){var point=svg.createSVGPoint(); +if(0>d3_mouse_bug44083&&(d3_window.scrollX||d3_window.scrollY)){svg=d3.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var ctm=svg[0][0].getScreenCTM();d3_mouse_bug44083=!(ctm.f||ctm.e),svg.remove()}return d3_mouse_bug44083?(point.x=e.pageX,point.y=e.pageY):(point.x=e.clientX,point.y=e.clientY),point=point.matrixTransform(container.getScreenCTM().inverse()),[point.x,point.y]}var rect=container.getBoundingClientRect();return[e.clientX-rect.left-container.clientLeft,e.clientY-rect.top-container.clientTop]}function d3_sgn(x){return x>0?1:0>x?-1:0}function d3_cross2d(a,b,c){return(b[0]-a[0])*(c[1]-a[1])-(b[1]-a[1])*(c[0]-a[0])}function d3_acos(x){return x>1?0:-1>x?π:Math.acos(x)}function d3_asin(x){return x>1?halfπ:-1>x?-halfπ:Math.asin(x)}function d3_sinh(x){return((x=Math.exp(x))-1/x)/2}function d3_cosh(x){return((x=Math.exp(x))+1/x)/2}function d3_tanh(x){return((x=Math.exp(2*x))-1)/(x+1)}function d3_haversin(x){return(x=Math.sin(x/2))*x}function d3_Color(){}function d3_hsl(h,s,l){return new d3_Hsl(h,s,l)}function d3_Hsl(h,s,l){this.h=h,this.s=s,this.l=l}function d3_hsl_rgb(h,s,l){function v(h){return h>360?h-=360:0>h&&(h+=360),60>h?m1+(m2-m1)*h/60:180>h?m2:240>h?m1+(m2-m1)*(240-h)/60:m1}function vv(h){return Math.round(255*v(h))}var m1,m2;return h=isNaN(h)?0:(h%=360)<0?h+360:h,s=isNaN(s)?0:0>s?0:s>1?1:s,l=0>l?0:l>1?1:l,m2=.5>=l?l*(1+s):l+s-l*s,m1=2*l-m2,d3_rgb(vv(h+120),vv(h),vv(h-120))}function d3_hcl(h,c,l){return new d3_Hcl(h,c,l)}function d3_Hcl(h,c,l){this.h=h,this.c=c,this.l=l}function d3_hcl_lab(h,c,l){return isNaN(h)&&(h=0),isNaN(c)&&(c=0),d3_lab(l,Math.cos(h*=d3_radians)*c,Math.sin(h)*c)}function d3_lab(l,a,b){return new d3_Lab(l,a,b)}function d3_Lab(l,a,b){this.l=l,this.a=a,this.b=b}function d3_lab_rgb(l,a,b){var y=(l+16)/116,x=y+a/500,z=y-b/200;return x=d3_lab_xyz(x)*d3_lab_X,y=d3_lab_xyz(y)*d3_lab_Y,z=d3_lab_xyz(z)*d3_lab_Z,d3_rgb(d3_xyz_rgb(3.2404542*x-1.5371385*y-.4985314*z),d3_xyz_rgb(-.969266*x+1.8760108*y+.041556*z),d3_xyz_rgb(.0556434*x-.2040259*y+1.0572252*z))}function d3_lab_hcl(l,a,b){return l>0?d3_hcl(Math.atan2(b,a)*d3_degrees,Math.sqrt(a*a+b*b),l):d3_hcl(0/0,0/0,l)}function d3_lab_xyz(x){return x>.206893034?x*x*x:(x-4/29)/7.787037}function d3_xyz_lab(x){return x>.008856?Math.pow(x,1/3):7.787037*x+4/29}function d3_xyz_rgb(r){return Math.round(255*(.00304>=r?12.92*r:1.055*Math.pow(r,1/2.4)-.055))}function d3_rgbNumber(value){return d3_rgb(value>>16,value>>8&255,255&value)}function d3_rgbString(value){return d3_rgbNumber(value)+""}function d3_rgb(r,g,b){return new d3_Rgb(r,g,b)}function d3_Rgb(r,g,b){this.r=r,this.g=g,this.b=b}function d3_rgb_hex(v){return 16>v?"0"+Math.max(0,v).toString(16):Math.min(255,v).toString(16)}function d3_rgb_parse(format,rgb,hsl){var m1,m2,name,r=0,g=0,b=0;if(m1=/([a-z]+)\((.*)\)/i.exec(format))switch(m2=m1[2].split(","),m1[1]){case"hsl":return hsl(parseFloat(m2[0]),parseFloat(m2[1])/100,parseFloat(m2[2])/100);case"rgb":return rgb(d3_rgb_parseNumber(m2[0]),d3_rgb_parseNumber(m2[1]),d3_rgb_parseNumber(m2[2]))}return(name=d3_rgb_names.get(format))?rgb(name.r,name.g,name.b):(null!=format&&"#"===format.charAt(0)&&(4===format.length?(r=format.charAt(1),r+=r,g=format.charAt(2),g+=g,b=format.charAt(3),b+=b):7===format.length&&(r=format.substring(1,3),g=format.substring(3,5),b=format.substring(5,7)),r=parseInt(r,16),g=parseInt(g,16),b=parseInt(b,16)),rgb(r,g,b))}function d3_rgb_hsl(r,g,b){var h,s,min=Math.min(r/=255,g/=255,b/=255),max=Math.max(r,g,b),d=max-min,l=(max+min)/2;return d?(s=.5>l?d/(max+min):d/(2-max-min),h=r==max?(g-b)/d+(b>g?6:0):g==max?(b-r)/d+2:(r-g)/d+4,h*=60):(h=0/0,s=l>0&&1>l?0:h),d3_hsl(h,s,l)}function d3_rgb_lab(r,g,b){r=d3_rgb_xyz(r),g=d3_rgb_xyz(g),b=d3_rgb_xyz(b);var x=d3_xyz_lab((.4124564*r+.3575761*g+.1804375*b)/d3_lab_X),y=d3_xyz_lab((.2126729*r+.7151522*g+.072175*b)/d3_lab_Y),z=d3_xyz_lab((.0193339*r+.119192*g+.9503041*b)/d3_lab_Z);return d3_lab(116*y-16,500*(x-y),200*(y-z))}function d3_rgb_xyz(r){return(r/=255)<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function d3_rgb_parseNumber(c){var f=parseFloat(c);return"%"===c.charAt(c.length-1)?Math.round(2.55*f):f}function d3_functor(v){return"function"==typeof v?v:function(){return v}}function d3_identity(d){return d}function d3_xhrType(response){return function(url,mimeType,callback){return 2===arguments.length&&"function"==typeof mimeType&&(callback=mimeType,mimeType=null),d3_xhr(url,mimeType,response,callback)}}function d3_xhr(url,mimeType,response,callback){function respond(){var result,status=request.status;if(!status&&request.responseText||status>=200&&300>status||304===status){try{result=response.call(xhr,request)}catch(e){return dispatch.error.call(xhr,e),void 0}dispatch.load.call(xhr,result)}else dispatch.error.call(xhr,request)}var xhr={},dispatch=d3.dispatch("beforesend","progress","load","error"),headers={},request=new XMLHttpRequest,responseType=null;return!d3_window.XDomainRequest||"withCredentials"in request||!/^(http(s)?:)?\/\//.test(url)||(request=new XDomainRequest),"onload"in request?request.onload=request.onerror=respond:request.onreadystatechange=function(){request.readyState>3&&respond()},request.onprogress=function(event){var o=d3.event;d3.event=event;try{dispatch.progress.call(xhr,request)}finally{d3.event=o}},xhr.header=function(name,value){return name=(name+"").toLowerCase(),arguments.length<2?headers[name]:(null==value?delete headers[name]:headers[name]=value+"",xhr)},xhr.mimeType=function(value){return arguments.length?(mimeType=null==value?null:value+"",xhr):mimeType},xhr.responseType=function(value){return arguments.length?(responseType=value,xhr):responseType},xhr.response=function(value){return response=value,xhr},["get","post"].forEach(function(method){xhr[method]=function(){return xhr.send.apply(xhr,[method].concat(d3_array(arguments)))}}),xhr.send=function(method,data,callback){if(2===arguments.length&&"function"==typeof data&&(callback=data,data=null),request.open(method,url,!0),null==mimeType||"accept"in headers||(headers.accept=mimeType+",*/*"),request.setRequestHeader)for(var name in headers)request.setRequestHeader(name,headers[name]);return null!=mimeType&&request.overrideMimeType&&request.overrideMimeType(mimeType),null!=responseType&&(request.responseType=responseType),null!=callback&&xhr.on("error",callback).on("load",function(request){callback(null,request)}),dispatch.beforesend.call(xhr,request),request.send(null==data?null:data),xhr},xhr.abort=function(){return request.abort(),xhr},d3.rebind(xhr,dispatch,"on"),null==callback?xhr:xhr.get(d3_xhr_fixCallback(callback))}function d3_xhr_fixCallback(callback){return 1===callback.length?function(error,request){callback(null==error?request:null)}:callback}function d3_timer_step(){var now=d3_timer_mark(),delay=d3_timer_sweep()-now;delay>24?(isFinite(delay)&&(clearTimeout(d3_timer_timeout),d3_timer_timeout=setTimeout(d3_timer_step,delay)),d3_timer_interval=0):(d3_timer_interval=1,d3_timer_frame(d3_timer_step))}function d3_timer_mark(){var now=Date.now();for(d3_timer_active=d3_timer_queueHead;d3_timer_active;)now>=d3_timer_active.t&&(d3_timer_active.f=d3_timer_active.c(now-d3_timer_active.t)),d3_timer_active=d3_timer_active.n;return now}function d3_timer_sweep(){for(var t0,t1=d3_timer_queueHead,time=1/0;t1;)t1.f?t1=t0?t0.n=t1.n:d3_timer_queueHead=t1.n:(t1.t8?function(d){return d/k}:function(d){return d*k},symbol:d}}function d3_locale_numberFormat(locale){var locale_decimal=locale.decimal,locale_thousands=locale.thousands,locale_grouping=locale.grouping,locale_currency=locale.currency,formatGroup=locale_grouping?function(value){for(var i=value.length,t=[],j=0,g=locale_grouping[0];i>0&&g>0;)t.push(value.substring(i-=g,i+g)),g=locale_grouping[j=(j+1)%locale_grouping.length];return t.reverse().join(locale_thousands)}:d3_identity;return function(specifier){var match=d3_format_re.exec(specifier),fill=match[1]||" ",align=match[2]||">",sign=match[3]||"",symbol=match[4]||"",zfill=match[5],width=+match[6],comma=match[7],precision=match[8],type=match[9],scale=1,prefix="",suffix="",integer=!1;switch(precision&&(precision=+precision.substring(1)),(zfill||"0"===fill&&"="===align)&&(zfill=fill="0",align="=",comma&&(width-=Math.floor((width-1)/4))),type){case"n":comma=!0,type="g";break;case"%":scale=100,suffix="%",type="f";break;case"p":scale=100,suffix="%",type="r";break;case"b":case"o":case"x":case"X":"#"===symbol&&(prefix="0"+type.toLowerCase());case"c":case"d":integer=!0,precision=0;break;case"s":scale=-1,type="r"}"$"===symbol&&(prefix=locale_currency[0],suffix=locale_currency[1]),"r"!=type||precision||(type="g"),null!=precision&&("g"==type?precision=Math.max(1,Math.min(21,precision)):("e"==type||"f"==type)&&(precision=Math.max(0,Math.min(20,precision)))),type=d3_format_types.get(type)||d3_format_typeDefault;var zcomma=zfill&,return function(value){if(integer&&value%1)return"";var negative=0>value||0===value&&0>1/value?(value=-value,"-"):sign;if(0>scale){var unit=d3.formatPrefix(value,precision);value=unit.scale(value),suffix=unit.symbol}else value*=scale;value=type(value,precision);var i=value.lastIndexOf("."),before=0>i?value:value.substring(0,i),after=0>i?"":locale_decimal+value.substring(i+1);!zfill&&comma&&(before=formatGroup(before));var length=prefix.length+before.length+after.length+(zcomma?0:negative.length),padding=width>length?new Array(length=width-length+1).join(fill):"";return zcomma&&(before=formatGroup(padding+before)),negative+=prefix,value=before+after,("<"===align?negative+value+padding:">"===align?padding+negative+value:"^"===align?padding.substring(0,length>>=1)+negative+value+padding.substring(length):negative+(zcomma?value:padding+value))+suffix}}}function d3_format_typeDefault(x){return x+""}function d3_date_utc(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function d3_time_interval(local,step,number){function round(date){var d0=local(date),d1=offset(d0,1);return d1-date>date-d0?d0:d1}function ceil(date){return step(date=local(new d3_date(date-1)),1),date}function offset(date,k){return step(date=new d3_date(+date),k),date}function range(t0,t1,dt){var time=ceil(t0),times=[];if(dt>1)for(;t1>time;)number(time)%dt||times.push(new Date(+time)),step(time,1);else for(;t1>time;)times.push(new Date(+time)),step(time,1);return times}function range_utc(t0,t1,dt){try{d3_date=d3_date_utc;var utc=new d3_date_utc;return utc._=t0,range(utc,t1,dt)}finally{d3_date=Date}}local.floor=local,local.round=round,local.ceil=ceil,local.offset=offset,local.range=range;var utc=local.utc=d3_time_interval_utc(local);return utc.floor=utc,utc.round=d3_time_interval_utc(round),utc.ceil=d3_time_interval_utc(ceil),utc.offset=d3_time_interval_utc(offset),utc.range=range_utc,local}function d3_time_interval_utc(method){return function(date,k){try{d3_date=d3_date_utc;var utc=new d3_date_utc;return utc._=date,method(utc,k)._}finally{d3_date=Date}}}function d3_locale_timeFormat(locale){function d3_time_format(template){function format(date){for(var c,p,f,string=[],i=-1,j=0;++ii;){if(j>=m)return-1;if(c=template.charCodeAt(i++),37===c){if(t=template.charAt(i++),p=d3_time_parsers[t in d3_time_formatPads?template.charAt(i++):t],!p||(j=p(date,string,j))<0)return-1}else if(c!=string.charCodeAt(j++))return-1}return j}function d3_time_parseWeekdayAbbrev(date,string,i){d3_time_dayAbbrevRe.lastIndex=0;var n=d3_time_dayAbbrevRe.exec(string.substring(i));return n?(date.w=d3_time_dayAbbrevLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseWeekday(date,string,i){d3_time_dayRe.lastIndex=0;var n=d3_time_dayRe.exec(string.substring(i));return n?(date.w=d3_time_dayLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseMonthAbbrev(date,string,i){d3_time_monthAbbrevRe.lastIndex=0;var n=d3_time_monthAbbrevRe.exec(string.substring(i));return n?(date.m=d3_time_monthAbbrevLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseMonth(date,string,i){d3_time_monthRe.lastIndex=0;var n=d3_time_monthRe.exec(string.substring(i));return n?(date.m=d3_time_monthLookup.get(n[0].toLowerCase()),i+n[0].length):-1}function d3_time_parseLocaleFull(date,string,i){return d3_time_parse(date,d3_time_formats.c.toString(),string,i)}function d3_time_parseLocaleDate(date,string,i){return d3_time_parse(date,d3_time_formats.x.toString(),string,i)}function d3_time_parseLocaleTime(date,string,i){return d3_time_parse(date,d3_time_formats.X.toString(),string,i)}function d3_time_parseAmPm(date,string,i){var n=d3_time_periodLookup.get(string.substring(i,i+=2).toLowerCase());return null==n?-1:(date.p=n,i)}var locale_dateTime=locale.dateTime,locale_date=locale.date,locale_time=locale.time,locale_periods=locale.periods,locale_days=locale.days,locale_shortDays=locale.shortDays,locale_months=locale.months,locale_shortMonths=locale.shortMonths;d3_time_format.utc=function(template){function format(date){try{d3_date=d3_date_utc;var utc=new d3_date;return utc._=date,local(utc)}finally{d3_date=Date}}var local=d3_time_format(template);return format.parse=function(string){try{d3_date=d3_date_utc;var date=local.parse(string);return date&&date._}finally{d3_date=Date}},format.toString=local.toString,format},d3_time_format.multi=d3_time_format.utc.multi=d3_time_formatMulti;var d3_time_periodLookup=d3.map(),d3_time_dayRe=d3_time_formatRe(locale_days),d3_time_dayLookup=d3_time_formatLookup(locale_days),d3_time_dayAbbrevRe=d3_time_formatRe(locale_shortDays),d3_time_dayAbbrevLookup=d3_time_formatLookup(locale_shortDays),d3_time_monthRe=d3_time_formatRe(locale_months),d3_time_monthLookup=d3_time_formatLookup(locale_months),d3_time_monthAbbrevRe=d3_time_formatRe(locale_shortMonths),d3_time_monthAbbrevLookup=d3_time_formatLookup(locale_shortMonths);locale_periods.forEach(function(p,i){d3_time_periodLookup.set(p.toLowerCase(),i)});var d3_time_formats={a:function(d){return locale_shortDays[d.getDay()]},A:function(d){return locale_days[d.getDay()]},b:function(d){return locale_shortMonths[d.getMonth()]},B:function(d){return locale_months[d.getMonth()]},c:d3_time_format(locale_dateTime),d:function(d,p){return d3_time_formatPad(d.getDate(),p,2)},e:function(d,p){return d3_time_formatPad(d.getDate(),p,2)},H:function(d,p){return d3_time_formatPad(d.getHours(),p,2)},I:function(d,p){return d3_time_formatPad(d.getHours()%12||12,p,2)},j:function(d,p){return d3_time_formatPad(1+d3_time.dayOfYear(d),p,3)},L:function(d,p){return d3_time_formatPad(d.getMilliseconds(),p,3)},m:function(d,p){return d3_time_formatPad(d.getMonth()+1,p,2)},M:function(d,p){return d3_time_formatPad(d.getMinutes(),p,2)},p:function(d){return locale_periods[+(d.getHours()>=12)]},S:function(d,p){return d3_time_formatPad(d.getSeconds(),p,2)},U:function(d,p){return d3_time_formatPad(d3_time.sundayOfYear(d),p,2)},w:function(d){return d.getDay()},W:function(d,p){return d3_time_formatPad(d3_time.mondayOfYear(d),p,2)},x:d3_time_format(locale_date),X:d3_time_format(locale_time),y:function(d,p){return d3_time_formatPad(d.getFullYear()%100,p,2)},Y:function(d,p){return d3_time_formatPad(d.getFullYear()%1e4,p,4)},Z:d3_time_zone,"%":function(){return"%"}},d3_time_parsers={a:d3_time_parseWeekdayAbbrev,A:d3_time_parseWeekday,b:d3_time_parseMonthAbbrev,B:d3_time_parseMonth,c:d3_time_parseLocaleFull,d:d3_time_parseDay,e:d3_time_parseDay,H:d3_time_parseHour24,I:d3_time_parseHour24,j:d3_time_parseDayOfYear,L:d3_time_parseMilliseconds,m:d3_time_parseMonthNumber,M:d3_time_parseMinutes,p:d3_time_parseAmPm,S:d3_time_parseSeconds,U:d3_time_parseWeekNumberSunday,w:d3_time_parseWeekdayNumber,W:d3_time_parseWeekNumberMonday,x:d3_time_parseLocaleDate,X:d3_time_parseLocaleTime,y:d3_time_parseYear,Y:d3_time_parseFullYear,Z:d3_time_parseZone,"%":d3_time_parseLiteralPercent};return d3_time_format}function d3_time_formatPad(value,fill,width){var sign=0>value?"-":"",string=(sign?-value:value)+"",length=string.length;return sign+(width>length?new Array(width-length+1).join(fill)+string:string)}function d3_time_formatRe(names){return new RegExp("^(?:"+names.map(d3.requote).join("|")+")","i")}function d3_time_formatLookup(names){for(var map=new d3_Map,i=-1,n=names.length;++i68?1900:2e3)}function d3_time_parseMonthNumber(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.m=n[0]-1,i+n[0].length):-1}function d3_time_parseDay(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.d=+n[0],i+n[0].length):-1}function d3_time_parseDayOfYear(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+3));return n?(date.j=+n[0],i+n[0].length):-1}function d3_time_parseHour24(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.H=+n[0],i+n[0].length):-1}function d3_time_parseMinutes(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.M=+n[0],i+n[0].length):-1}function d3_time_parseSeconds(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+2));return n?(date.S=+n[0],i+n[0].length):-1}function d3_time_parseMilliseconds(date,string,i){d3_time_numberRe.lastIndex=0;var n=d3_time_numberRe.exec(string.substring(i,i+3));return n?(date.L=+n[0],i+n[0].length):-1}function d3_time_zone(d){var z=d.getTimezoneOffset(),zs=z>0?"-":"+",zh=~~(abs(z)/60),zm=abs(z)%60;return zs+d3_time_formatPad(zh,"0",2)+d3_time_formatPad(zm,"0",2)}function d3_time_parseLiteralPercent(date,string,i){d3_time_percentRe.lastIndex=0;var n=d3_time_percentRe.exec(string.substring(i,i+1));return n?i+n[0].length:-1}function d3_time_formatMulti(formats){for(var n=formats.length,i=-1;++ii;++i)listener.point((p0=segment[i])[0],p0[1]);return listener.lineEnd(),void 0}var a=new d3_geo_clipPolygonIntersection(p0,segment,null,!0),b=new d3_geo_clipPolygonIntersection(p0,null,a,!1);a.o=b,subject.push(a),clip.push(b),a=new d3_geo_clipPolygonIntersection(p1,segment,null,!1),b=new d3_geo_clipPolygonIntersection(p1,null,a,!0),a.o=b,subject.push(a),clip.push(b)}}),clip.sort(compare),d3_geo_clipPolygonLinkCircular(subject),d3_geo_clipPolygonLinkCircular(clip),subject.length){for(var i=0,entry=clipStartInside,n=clip.length;n>i;++i)clip[i].e=entry=!entry;for(var points,point,start=subject[0];;){for(var current=start,isSubject=!0;current.v;)if((current=current.n)===start)return;points=current.z,listener.lineStart();do{if(current.v=current.o.v=!0,current.e){if(isSubject)for(var i=0,n=points.length;n>i;++i)listener.point((point=points[i])[0],point[1]);else interpolate(current.x,current.n.x,1,listener);current=current.n}else{if(isSubject){points=current.p.z;for(var i=points.length-1;i>=0;--i)listener.point((point=points[i])[0],point[1])}else interpolate(current.x,current.p.x,-1,listener);current=current.p}current=current.o,points=current.z,isSubject=!isSubject}while(!current.v);listener.lineEnd()}}}function d3_geo_clipPolygonLinkCircular(array){if(n=array.length){for(var n,b,i=0,a=array[0];++i1&&2&clean&&ringSegments.push(ringSegments.pop().concat(ringSegments.shift())),segments.push(ringSegments.filter(d3_geo_clipSegmentLength1))}}var segments,polygon,ring,line=clipLine(listener),rotatedClipStart=rotate.invert(clipStart[0],clipStart[1]),clip={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){clip.point=pointRing,clip.lineStart=ringStart,clip.lineEnd=ringEnd,segments=[],polygon=[],listener.polygonStart()},polygonEnd:function(){clip.point=point,clip.lineStart=lineStart,clip.lineEnd=lineEnd,segments=d3.merge(segments);var clipStartInside=d3_geo_pointInPolygon(rotatedClipStart,polygon);segments.length?d3_geo_clipPolygon(segments,d3_geo_clipSort,clipStartInside,interpolate,listener):clipStartInside&&(listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd()),listener.polygonEnd(),segments=polygon=null},sphere:function(){listener.polygonStart(),listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd(),listener.polygonEnd()}},buffer=d3_geo_clipBufferListener(),ringListener=clipLine(buffer);return clip}}function d3_geo_clipSegmentLength1(segment){return segment.length>1}function d3_geo_clipBufferListener(){var line,lines=[];return{lineStart:function(){lines.push(line=[])},point:function(λ,φ){line.push([λ,φ])},lineEnd:d3_noop,buffer:function(){var buffer=lines;return lines=[],line=null,buffer},rejoin:function(){lines.length>1&&lines.push(lines.pop().concat(lines.shift()))}}}function d3_geo_clipSort(a,b){return((a=a.x)[0]<0?a[1]-halfπ-ε:halfπ-a[1])-((b=b.x)[0]<0?b[1]-halfπ-ε:halfπ-b[1])}function d3_geo_pointInPolygon(point,polygon){var meridian=point[0],parallel=point[1],meridianNormal=[Math.sin(meridian),-Math.cos(meridian),0],polarAngle=0,winding=0;d3_geo_areaRingSum.reset();for(var i=0,n=polygon.length;n>i;++i){var ring=polygon[i],m=ring.length;if(m)for(var point0=ring[0],λ0=point0[0],φ0=point0[1]/2+π/4,sinφ0=Math.sin(φ0),cosφ0=Math.cos(φ0),j=1;;){j===m&&(j=0),point=ring[j];var λ=point[0],φ=point[1]/2+π/4,sinφ=Math.sin(φ),cosφ=Math.cos(φ),dλ=λ-λ0,antimeridian=abs(dλ)>π,k=sinφ0*sinφ;if(d3_geo_areaRingSum.add(Math.atan2(k*Math.sin(dλ),cosφ0*cosφ+k*Math.cos(dλ))),polarAngle+=antimeridian?dλ+(dλ>=0?τ:-τ):dλ,antimeridian^λ0>=meridian^λ>=meridian){var arc=d3_geo_cartesianCross(d3_geo_cartesian(point0),d3_geo_cartesian(point));d3_geo_cartesianNormalize(arc);var intersection=d3_geo_cartesianCross(meridianNormal,arc);d3_geo_cartesianNormalize(intersection);var φarc=(antimeridian^dλ>=0?-1:1)*d3_asin(intersection[2]);(parallel>φarc||parallel===φarc&&(arc[0]||arc[1]))&&(winding+=antimeridian^dλ>=0?1:-1)}if(!j++)break;λ0=λ,sinφ0=sinφ,cosφ0=cosφ,point0=point}}return(-ε>polarAngle||ε>polarAngle&&0>d3_geo_areaRingSum)^1&winding}function d3_geo_clipAntimeridianLine(listener){var clean,λ0=0/0,φ0=0/0,sλ0=0/0;return{lineStart:function(){listener.lineStart(),clean=1},point:function(λ1,φ1){var sλ1=λ1>0?π:-π,dλ=abs(λ1-λ0);abs(dλ-π)<ε?(listener.point(λ0,φ0=(φ0+φ1)/2>0?halfπ:-halfπ),listener.point(sλ0,φ0),listener.lineEnd(),listener.lineStart(),listener.point(sλ1,φ0),listener.point(λ1,φ0),clean=0):sλ0!==sλ1&&dλ>=π&&(abs(λ0-sλ0)<ε&&(λ0-=sλ0*ε),abs(λ1-sλ1)<ε&&(λ1-=sλ1*ε),φ0=d3_geo_clipAntimeridianIntersect(λ0,φ0,λ1,φ1),listener.point(sλ0,φ0),listener.lineEnd(),listener.lineStart(),listener.point(sλ1,φ0),clean=0),listener.point(λ0=λ1,φ0=φ1),sλ0=sλ1},lineEnd:function(){listener.lineEnd(),λ0=φ0=0/0},clean:function(){return 2-clean}}}function d3_geo_clipAntimeridianIntersect(λ0,φ0,λ1,φ1){var cosφ0,cosφ1,sinλ0_λ1=Math.sin(λ0-λ1);return abs(sinλ0_λ1)>ε?Math.atan((Math.sin(φ0)*(cosφ1=Math.cos(φ1))*Math.sin(λ1)-Math.sin(φ1)*(cosφ0=Math.cos(φ0))*Math.sin(λ0))/(cosφ0*cosφ1*sinλ0_λ1)):(φ0+φ1)/2}function d3_geo_clipAntimeridianInterpolate(from,to,direction,listener){var φ;if(null==from)φ=direction*halfπ,listener.point(-π,φ),listener.point(0,φ),listener.point(π,φ),listener.point(π,0),listener.point(π,-φ),listener.point(0,-φ),listener.point(-π,-φ),listener.point(-π,0),listener.point(-π,φ);else if(abs(from[0]-to[0])>ε){var s=from[0]cr}function clipLine(listener){var point0,c0,v0,v00,clean;return{lineStart:function(){v00=v0=!1,clean=1},point:function(λ,φ){var point2,point1=[λ,φ],v=visible(λ,φ),c=smallRadius?v?0:code(λ,φ):v?code(λ+(0>λ?π:-π),φ):0;if(!point0&&(v00=v0=v)&&listener.lineStart(),v!==v0&&(point2=intersect(point0,point1),(d3_geo_sphericalEqual(point0,point2)||d3_geo_sphericalEqual(point1,point2))&&(point1[0]+=ε,point1[1]+=ε,v=visible(point1[0],point1[1]))),v!==v0)clean=0,v?(listener.lineStart(),point2=intersect(point1,point0),listener.point(point2[0],point2[1])):(point2=intersect(point0,point1),listener.point(point2[0],point2[1]),listener.lineEnd()),point0=point2;else if(notHemisphere&&point0&&smallRadius^v){var t;c&c0||!(t=intersect(point1,point0,!0))||(clean=0,smallRadius?(listener.lineStart(),listener.point(t[0][0],t[0][1]),listener.point(t[1][0],t[1][1]),listener.lineEnd()):(listener.point(t[1][0],t[1][1]),listener.lineEnd(),listener.lineStart(),listener.point(t[0][0],t[0][1]))) +}!v||point0&&d3_geo_sphericalEqual(point0,point1)||listener.point(point1[0],point1[1]),point0=point1,v0=v,c0=c},lineEnd:function(){v0&&listener.lineEnd(),point0=null},clean:function(){return clean|(v00&&v0)<<1}}}function intersect(a,b,two){var pa=d3_geo_cartesian(a),pb=d3_geo_cartesian(b),n1=[1,0,0],n2=d3_geo_cartesianCross(pa,pb),n2n2=d3_geo_cartesianDot(n2,n2),n1n2=n2[0],determinant=n2n2-n1n2*n1n2;if(!determinant)return!two&&a;var c1=cr*n2n2/determinant,c2=-cr*n1n2/determinant,n1xn2=d3_geo_cartesianCross(n1,n2),A=d3_geo_cartesianScale(n1,c1),B=d3_geo_cartesianScale(n2,c2);d3_geo_cartesianAdd(A,B);var u=n1xn2,w=d3_geo_cartesianDot(A,u),uu=d3_geo_cartesianDot(u,u),t2=w*w-uu*(d3_geo_cartesianDot(A,A)-1);if(!(0>t2)){var t=Math.sqrt(t2),q=d3_geo_cartesianScale(u,(-w-t)/uu);if(d3_geo_cartesianAdd(q,A),q=d3_geo_spherical(q),!two)return q;var z,λ0=a[0],λ1=b[0],φ0=a[1],φ1=b[1];λ0>λ1&&(z=λ0,λ0=λ1,λ1=z);var δλ=λ1-λ0,polar=abs(δλ-π)<ε,meridian=polar||ε>δλ;if(!polar&&φ0>φ1&&(z=φ0,φ0=φ1,φ1=z),meridian?polar?φ0+φ1>0^q[1]<(abs(q[0]-λ0)<ε?φ0:φ1):φ0<=q[1]&&q[1]<=φ1:δλ>π^(λ0<=q[0]&&q[0]<=λ1)){var q1=d3_geo_cartesianScale(u,(-w+t)/uu);return d3_geo_cartesianAdd(q1,A),[q,d3_geo_spherical(q1)]}}}function code(λ,φ){var r=smallRadius?radius:π-radius,code=0;return-r>λ?code|=1:λ>r&&(code|=2),-r>φ?code|=4:φ>r&&(code|=8),code}var cr=Math.cos(radius),smallRadius=cr>0,notHemisphere=abs(cr)>ε,interpolate=d3_geo_circleInterpolate(radius,6*d3_radians);return d3_geo_clip(visible,clipLine,interpolate,smallRadius?[0,-radius]:[-π,radius-π])}function d3_geom_clipLine(x0,y0,x1,y1){return function(line){var r,a=line.a,b=line.b,ax=a.x,ay=a.y,bx=b.x,by=b.y,t0=0,t1=1,dx=bx-ax,dy=by-ay;if(r=x0-ax,dx||!(r>0)){if(r/=dx,0>dx){if(t0>r)return;t1>r&&(t1=r)}else if(dx>0){if(r>t1)return;r>t0&&(t0=r)}if(r=x1-ax,dx||!(0>r)){if(r/=dx,0>dx){if(r>t1)return;r>t0&&(t0=r)}else if(dx>0){if(t0>r)return;t1>r&&(t1=r)}if(r=y0-ay,dy||!(r>0)){if(r/=dy,0>dy){if(t0>r)return;t1>r&&(t1=r)}else if(dy>0){if(r>t1)return;r>t0&&(t0=r)}if(r=y1-ay,dy||!(0>r)){if(r/=dy,0>dy){if(r>t1)return;r>t0&&(t0=r)}else if(dy>0){if(t0>r)return;t1>r&&(t1=r)}return t0>0&&(line.a={x:ax+t0*dx,y:ay+t0*dy}),1>t1&&(line.b={x:ax+t1*dx,y:ay+t1*dy}),line}}}}}}function d3_geo_clipExtent(x0,y0,x1,y1){function corner(p,direction){return abs(p[0]-x0)<ε?direction>0?0:3:abs(p[0]-x1)<ε?direction>0?2:1:abs(p[1]-y0)<ε?direction>0?1:0:direction>0?3:2}function compare(a,b){return comparePoints(a.x,b.x)}function comparePoints(a,b){var ca=corner(a,1),cb=corner(b,1);return ca!==cb?ca-cb:0===ca?b[1]-a[1]:1===ca?a[0]-b[0]:2===ca?a[1]-b[1]:b[0]-a[0]}return function(listener){function insidePolygon(p){for(var wn=0,n=polygon.length,y=p[1],i=0;n>i;++i)for(var b,j=1,v=polygon[i],m=v.length,a=v[0];m>j;++j)b=v[j],a[1]<=y?b[1]>y&&d3_cross2d(a,b,p)>0&&++wn:b[1]<=y&&d3_cross2d(a,b,p)<0&&--wn,a=b;return 0!==wn}function interpolate(from,to,direction,listener){var a=0,a1=0;if(null==from||(a=corner(from,direction))!==(a1=corner(to,direction))||comparePoints(from,to)<0^direction>0){do listener.point(0===a||3===a?x0:x1,a>1?y1:y0);while((a=(a+direction+4)%4)!==a1)}else listener.point(to[0],to[1])}function pointVisible(x,y){return x>=x0&&x1>=x&&y>=y0&&y1>=y}function point(x,y){pointVisible(x,y)&&listener.point(x,y)}function lineStart(){clip.point=linePoint,polygon&&polygon.push(ring=[]),first=!0,v_=!1,x_=y_=0/0}function lineEnd(){segments&&(linePoint(x__,y__),v__&&v_&&bufferListener.rejoin(),segments.push(bufferListener.buffer())),clip.point=point,v_&&listener.lineEnd()}function linePoint(x,y){x=Math.max(-d3_geo_clipExtentMAX,Math.min(d3_geo_clipExtentMAX,x)),y=Math.max(-d3_geo_clipExtentMAX,Math.min(d3_geo_clipExtentMAX,y));var v=pointVisible(x,y);if(polygon&&ring.push([x,y]),first)x__=x,y__=y,v__=v,first=!1,v&&(listener.lineStart(),listener.point(x,y));else if(v&&v_)listener.point(x,y);else{var l={a:{x:x_,y:y_},b:{x:x,y:y}};clipLine(l)?(v_||(listener.lineStart(),listener.point(l.a.x,l.a.y)),listener.point(l.b.x,l.b.y),v||listener.lineEnd(),clean=!1):v&&(listener.lineStart(),listener.point(x,y),clean=!1)}x_=x,y_=y,v_=v}var segments,polygon,ring,x__,y__,v__,x_,y_,v_,first,clean,listener_=listener,bufferListener=d3_geo_clipBufferListener(),clipLine=d3_geom_clipLine(x0,y0,x1,y1),clip={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){listener=bufferListener,segments=[],polygon=[],clean=!0},polygonEnd:function(){listener=listener_,segments=d3.merge(segments);var clipStartInside=insidePolygon([x0,y1]),inside=clean&&clipStartInside,visible=segments.length;(inside||visible)&&(listener.polygonStart(),inside&&(listener.lineStart(),interpolate(null,null,1,listener),listener.lineEnd()),visible&&d3_geo_clipPolygon(segments,compare,clipStartInside,interpolate,listener),listener.polygonEnd()),segments=polygon=ring=null}};return clip}}function d3_geo_compose(a,b){function compose(x,y){return x=a(x,y),b(x[0],x[1])}return a.invert&&b.invert&&(compose.invert=function(x,y){return x=b.invert(x,y),x&&a.invert(x[0],x[1])}),compose}function d3_geo_conic(projectAt){var φ0=0,φ1=π/3,m=d3_geo_projectionMutator(projectAt),p=m(φ0,φ1);return p.parallels=function(_){return arguments.length?m(φ0=_[0]*π/180,φ1=_[1]*π/180):[φ0/π*180,φ1/π*180]},p}function d3_geo_conicEqualArea(φ0,φ1){function forward(λ,φ){var ρ=Math.sqrt(C-2*n*Math.sin(φ))/n;return[ρ*Math.sin(λ*=n),ρ0-ρ*Math.cos(λ)]}var sinφ0=Math.sin(φ0),n=(sinφ0+Math.sin(φ1))/2,C=1+sinφ0*(2*n-sinφ0),ρ0=Math.sqrt(C)/n;return forward.invert=function(x,y){var ρ0_y=ρ0-y;return[Math.atan2(x,ρ0_y)/n,d3_asin((C-(x*x+ρ0_y*ρ0_y)*n*n)/(2*n))]},forward}function d3_geo_pathAreaRingStart(){function nextPoint(x,y){d3_geo_pathAreaPolygon+=y0*x-x0*y,x0=x,y0=y}var x00,y00,x0,y0;d3_geo_pathArea.point=function(x,y){d3_geo_pathArea.point=nextPoint,x00=x0=x,y00=y0=y},d3_geo_pathArea.lineEnd=function(){nextPoint(x00,y00)}}function d3_geo_pathBoundsPoint(x,y){d3_geo_pathBoundsX0>x&&(d3_geo_pathBoundsX0=x),x>d3_geo_pathBoundsX1&&(d3_geo_pathBoundsX1=x),d3_geo_pathBoundsY0>y&&(d3_geo_pathBoundsY0=y),y>d3_geo_pathBoundsY1&&(d3_geo_pathBoundsY1=y)}function d3_geo_pathBuffer(){function point(x,y){buffer.push("M",x,",",y,pointCircle)}function pointLineStart(x,y){buffer.push("M",x,",",y),stream.point=pointLine}function pointLine(x,y){buffer.push("L",x,",",y)}function lineEnd(){stream.point=point}function lineEndPolygon(){buffer.push("Z")}var pointCircle=d3_geo_pathBufferCircle(4.5),buffer=[],stream={point:point,lineStart:function(){stream.point=pointLineStart},lineEnd:lineEnd,polygonStart:function(){stream.lineEnd=lineEndPolygon},polygonEnd:function(){stream.lineEnd=lineEnd,stream.point=point},pointRadius:function(_){return pointCircle=d3_geo_pathBufferCircle(_),stream},result:function(){if(buffer.length){var result=buffer.join("");return buffer=[],result}}};return stream}function d3_geo_pathBufferCircle(radius){return"m0,"+radius+"a"+radius+","+radius+" 0 1,1 0,"+-2*radius+"a"+radius+","+radius+" 0 1,1 0,"+2*radius+"z"}function d3_geo_pathCentroidPoint(x,y){d3_geo_centroidX0+=x,d3_geo_centroidY0+=y,++d3_geo_centroidZ0}function d3_geo_pathCentroidLineStart(){function nextPoint(x,y){var dx=x-x0,dy=y-y0,z=Math.sqrt(dx*dx+dy*dy);d3_geo_centroidX1+=z*(x0+x)/2,d3_geo_centroidY1+=z*(y0+y)/2,d3_geo_centroidZ1+=z,d3_geo_pathCentroidPoint(x0=x,y0=y)}var x0,y0;d3_geo_pathCentroid.point=function(x,y){d3_geo_pathCentroid.point=nextPoint,d3_geo_pathCentroidPoint(x0=x,y0=y)}}function d3_geo_pathCentroidLineEnd(){d3_geo_pathCentroid.point=d3_geo_pathCentroidPoint}function d3_geo_pathCentroidRingStart(){function nextPoint(x,y){var dx=x-x0,dy=y-y0,z=Math.sqrt(dx*dx+dy*dy);d3_geo_centroidX1+=z*(x0+x)/2,d3_geo_centroidY1+=z*(y0+y)/2,d3_geo_centroidZ1+=z,z=y0*x-x0*y,d3_geo_centroidX2+=z*(x0+x),d3_geo_centroidY2+=z*(y0+y),d3_geo_centroidZ2+=3*z,d3_geo_pathCentroidPoint(x0=x,y0=y)}var x00,y00,x0,y0;d3_geo_pathCentroid.point=function(x,y){d3_geo_pathCentroid.point=nextPoint,d3_geo_pathCentroidPoint(x00=x0=x,y00=y0=y)},d3_geo_pathCentroid.lineEnd=function(){nextPoint(x00,y00)}}function d3_geo_pathContext(context){function point(x,y){context.moveTo(x,y),context.arc(x,y,pointRadius,0,τ)}function pointLineStart(x,y){context.moveTo(x,y),stream.point=pointLine}function pointLine(x,y){context.lineTo(x,y)}function lineEnd(){stream.point=point}function lineEndPolygon(){context.closePath()}var pointRadius=4.5,stream={point:point,lineStart:function(){stream.point=pointLineStart},lineEnd:lineEnd,polygonStart:function(){stream.lineEnd=lineEndPolygon},polygonEnd:function(){stream.lineEnd=lineEnd,stream.point=point},pointRadius:function(_){return pointRadius=_,stream},result:d3_noop};return stream}function d3_geo_resample(project){function resample(stream){return(maxDepth?resampleRecursive:resampleNone)(stream)}function resampleNone(stream){return d3_geo_transformPoint(stream,function(x,y){x=project(x,y),stream.point(x[0],x[1])})}function resampleRecursive(stream){function point(x,y){x=project(x,y),stream.point(x[0],x[1])}function lineStart(){x0=0/0,resample.point=linePoint,stream.lineStart()}function linePoint(λ,φ){var c=d3_geo_cartesian([λ,φ]),p=project(λ,φ);resampleLineTo(x0,y0,λ0,a0,b0,c0,x0=p[0],y0=p[1],λ0=λ,a0=c[0],b0=c[1],c0=c[2],maxDepth,stream),stream.point(x0,y0)}function lineEnd(){resample.point=point,stream.lineEnd()}function ringStart(){lineStart(),resample.point=ringPoint,resample.lineEnd=ringEnd}function ringPoint(λ,φ){linePoint(λ00=λ,φ00=φ),x00=x0,y00=y0,a00=a0,b00=b0,c00=c0,resample.point=linePoint}function ringEnd(){resampleLineTo(x0,y0,λ0,a0,b0,c0,x00,y00,λ00,a00,b00,c00,maxDepth,stream),resample.lineEnd=lineEnd,lineEnd()}var λ00,φ00,x00,y00,a00,b00,c00,λ0,x0,y0,a0,b0,c0,resample={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){stream.polygonStart(),resample.lineStart=ringStart},polygonEnd:function(){stream.polygonEnd(),resample.lineStart=lineStart}};return resample}function resampleLineTo(x0,y0,λ0,a0,b0,c0,x1,y1,λ1,a1,b1,c1,depth,stream){var dx=x1-x0,dy=y1-y0,d2=dx*dx+dy*dy;if(d2>4*δ2&&depth--){var a=a0+a1,b=b0+b1,c=c0+c1,m=Math.sqrt(a*a+b*b+c*c),φ2=Math.asin(c/=m),λ2=abs(abs(c)-1)<ε||abs(λ0-λ1)<ε?(λ0+λ1)/2:Math.atan2(b,a),p=project(λ2,φ2),x2=p[0],y2=p[1],dx2=x2-x0,dy2=y2-y0,dz=dy*dx2-dx*dy2;(dz*dz/d2>δ2||abs((dx*dx2+dy*dy2)/d2-.5)>.3||cosMinDistance>a0*a1+b0*b1+c0*c1)&&(resampleLineTo(x0,y0,λ0,a0,b0,c0,x2,y2,λ2,a/=m,b/=m,c,depth,stream),stream.point(x2,y2),resampleLineTo(x2,y2,λ2,a,b,c,x1,y1,λ1,a1,b1,c1,depth,stream))}}var δ2=.5,cosMinDistance=Math.cos(30*d3_radians),maxDepth=16;return resample.precision=function(_){return arguments.length?(maxDepth=(δ2=_*_)>0&&16,resample):Math.sqrt(δ2)},resample}function d3_geo_pathProjectStream(project){var resample=d3_geo_resample(function(x,y){return project([x*d3_degrees,y*d3_degrees])});return function(stream){return d3_geo_projectionRadians(resample(stream))}}function d3_geo_transform(stream){this.stream=stream}function d3_geo_transformPoint(stream,point){return{point:point,sphere:function(){stream.sphere()},lineStart:function(){stream.lineStart()},lineEnd:function(){stream.lineEnd()},polygonStart:function(){stream.polygonStart()},polygonEnd:function(){stream.polygonEnd()}}}function d3_geo_projection(project){return d3_geo_projectionMutator(function(){return project})()}function d3_geo_projectionMutator(projectAt){function projection(point){return point=projectRotate(point[0]*d3_radians,point[1]*d3_radians),[point[0]*k+δx,δy-point[1]*k]}function invert(point){return point=projectRotate.invert((point[0]-δx)/k,(δy-point[1])/k),point&&[point[0]*d3_degrees,point[1]*d3_degrees]}function reset(){projectRotate=d3_geo_compose(rotate=d3_geo_rotation(δλ,δφ,δγ),project);var center=project(λ,φ);return δx=x-center[0]*k,δy=y+center[1]*k,invalidate()}function invalidate(){return stream&&(stream.valid=!1,stream=null),projection}var project,rotate,projectRotate,δx,δy,stream,projectResample=d3_geo_resample(function(x,y){return x=project(x,y),[x[0]*k+δx,δy-x[1]*k]}),k=150,x=480,y=250,λ=0,φ=0,δλ=0,δφ=0,δγ=0,preclip=d3_geo_clipAntimeridian,postclip=d3_identity,clipAngle=null,clipExtent=null;return projection.stream=function(output){return stream&&(stream.valid=!1),stream=d3_geo_projectionRadians(preclip(rotate,projectResample(postclip(output)))),stream.valid=!0,stream},projection.clipAngle=function(_){return arguments.length?(preclip=null==_?(clipAngle=_,d3_geo_clipAntimeridian):d3_geo_clipCircle((clipAngle=+_)*d3_radians),invalidate()):clipAngle},projection.clipExtent=function(_){return arguments.length?(clipExtent=_,postclip=_?d3_geo_clipExtent(_[0][0],_[0][1],_[1][0],_[1][1]):d3_identity,invalidate()):clipExtent},projection.scale=function(_){return arguments.length?(k=+_,reset()):k},projection.translate=function(_){return arguments.length?(x=+_[0],y=+_[1],reset()):[x,y]},projection.center=function(_){return arguments.length?(λ=_[0]%360*d3_radians,φ=_[1]%360*d3_radians,reset()):[λ*d3_degrees,φ*d3_degrees]},projection.rotate=function(_){return arguments.length?(δλ=_[0]%360*d3_radians,δφ=_[1]%360*d3_radians,δγ=_.length>2?_[2]%360*d3_radians:0,reset()):[δλ*d3_degrees,δφ*d3_degrees,δγ*d3_degrees]},d3.rebind(projection,projectResample,"precision"),function(){return project=projectAt.apply(this,arguments),projection.invert=project.invert&&invert,reset()}}function d3_geo_projectionRadians(stream){return d3_geo_transformPoint(stream,function(x,y){stream.point(x*d3_radians,y*d3_radians)})}function d3_geo_equirectangular(λ,φ){return[λ,φ]}function d3_geo_identityRotation(λ,φ){return[λ>π?λ-τ:-π>λ?λ+τ:λ,φ]}function d3_geo_rotation(δλ,δφ,δγ){return δλ?δφ||δγ?d3_geo_compose(d3_geo_rotationλ(δλ),d3_geo_rotationφγ(δφ,δγ)):d3_geo_rotationλ(δλ):δφ||δγ?d3_geo_rotationφγ(δφ,δγ):d3_geo_identityRotation}function d3_geo_forwardRotationλ(δλ){return function(λ,φ){return λ+=δλ,[λ>π?λ-τ:-π>λ?λ+τ:λ,φ]}}function d3_geo_rotationλ(δλ){var rotation=d3_geo_forwardRotationλ(δλ);return rotation.invert=d3_geo_forwardRotationλ(-δλ),rotation}function d3_geo_rotationφγ(δφ,δγ){function rotation(λ,φ){var cosφ=Math.cos(φ),x=Math.cos(λ)*cosφ,y=Math.sin(λ)*cosφ,z=Math.sin(φ),k=z*cosδφ+x*sinδφ;return[Math.atan2(y*cosδγ-k*sinδγ,x*cosδφ-z*sinδφ),d3_asin(k*cosδγ+y*sinδγ)]}var cosδφ=Math.cos(δφ),sinδφ=Math.sin(δφ),cosδγ=Math.cos(δγ),sinδγ=Math.sin(δγ);return rotation.invert=function(λ,φ){var cosφ=Math.cos(φ),x=Math.cos(λ)*cosφ,y=Math.sin(λ)*cosφ,z=Math.sin(φ),k=z*cosδγ-y*sinδγ;return[Math.atan2(y*cosδγ+z*sinδγ,x*cosδφ+k*sinδφ),d3_asin(k*cosδφ-x*sinδφ)]},rotation}function d3_geo_circleInterpolate(radius,precision){var cr=Math.cos(radius),sr=Math.sin(radius);return function(from,to,direction,listener){var step=direction*precision;null!=from?(from=d3_geo_circleAngle(cr,from),to=d3_geo_circleAngle(cr,to),(direction>0?to>from:from>to)&&(from+=direction*τ)):(from=radius+direction*τ,to=radius-.5*step);for(var point,t=from;direction>0?t>to:to>t;t-=step)listener.point((point=d3_geo_spherical([cr,-sr*Math.cos(t),-sr*Math.sin(t)]))[0],point[1])}}function d3_geo_circleAngle(cr,point){var a=d3_geo_cartesian(point);a[0]-=cr,d3_geo_cartesianNormalize(a);var angle=d3_acos(-a[1]);return((-a[2]<0?-angle:angle)+2*Math.PI-ε)%(2*Math.PI)}function d3_geo_graticuleX(y0,y1,dy){var y=d3.range(y0,y1-ε,dy).concat(y1);return function(x){return y.map(function(y){return[x,y]})}}function d3_geo_graticuleY(x0,x1,dx){var x=d3.range(x0,x1-ε,dx).concat(x1);return function(y){return x.map(function(x){return[x,y]})}}function d3_source(d){return d.source}function d3_target(d){return d.target}function d3_geo_interpolate(x0,y0,x1,y1){var cy0=Math.cos(y0),sy0=Math.sin(y0),cy1=Math.cos(y1),sy1=Math.sin(y1),kx0=cy0*Math.cos(x0),ky0=cy0*Math.sin(x0),kx1=cy1*Math.cos(x1),ky1=cy1*Math.sin(x1),d=2*Math.asin(Math.sqrt(d3_haversin(y1-y0)+cy0*cy1*d3_haversin(x1-x0))),k=1/Math.sin(d),interpolate=d?function(t){var B=Math.sin(t*=d)*k,A=Math.sin(d-t)*k,x=A*kx0+B*kx1,y=A*ky0+B*ky1,z=A*sy0+B*sy1;return[Math.atan2(y,x)*d3_degrees,Math.atan2(z,Math.sqrt(x*x+y*y))*d3_degrees]}:function(){return[x0*d3_degrees,y0*d3_degrees]};return interpolate.distance=d,interpolate}function d3_geo_lengthLineStart(){function nextPoint(λ,φ){var sinφ=Math.sin(φ*=d3_radians),cosφ=Math.cos(φ),t=abs((λ*=d3_radians)-λ0),cosΔλ=Math.cos(t);d3_geo_lengthSum+=Math.atan2(Math.sqrt((t=cosφ*Math.sin(t))*t+(t=cosφ0*sinφ-sinφ0*cosφ*cosΔλ)*t),sinφ0*sinφ+cosφ0*cosφ*cosΔλ),λ0=λ,sinφ0=sinφ,cosφ0=cosφ}var λ0,sinφ0,cosφ0;d3_geo_length.point=function(λ,φ){λ0=λ*d3_radians,sinφ0=Math.sin(φ*=d3_radians),cosφ0=Math.cos(φ),d3_geo_length.point=nextPoint},d3_geo_length.lineEnd=function(){d3_geo_length.point=d3_geo_length.lineEnd=d3_noop}}function d3_geo_azimuthal(scale,angle){function azimuthal(λ,φ){var cosλ=Math.cos(λ),cosφ=Math.cos(φ),k=scale(cosλ*cosφ);return[k*cosφ*Math.sin(λ),k*Math.sin(φ)]}return azimuthal.invert=function(x,y){var ρ=Math.sqrt(x*x+y*y),c=angle(ρ),sinc=Math.sin(c),cosc=Math.cos(c);return[Math.atan2(x*sinc,ρ*cosc),Math.asin(ρ&&y*sinc/ρ)]},azimuthal}function d3_geo_conicConformal(φ0,φ1){function forward(λ,φ){var ρ=abs(abs(φ)-halfπ)<ε?0:F/Math.pow(t(φ),n);return[ρ*Math.sin(n*λ),F-ρ*Math.cos(n*λ)]}var cosφ0=Math.cos(φ0),t=function(φ){return Math.tan(π/4+φ/2)},n=φ0===φ1?Math.sin(φ0):Math.log(cosφ0/Math.cos(φ1))/Math.log(t(φ1)/t(φ0)),F=cosφ0*Math.pow(t(φ0),n)/n;return n?(forward.invert=function(x,y){var ρ0_y=F-y,ρ=d3_sgn(n)*Math.sqrt(x*x+ρ0_y*ρ0_y);return[Math.atan2(x,ρ0_y)/n,2*Math.atan(Math.pow(F/ρ,1/n))-halfπ]},forward):d3_geo_mercator}function d3_geo_conicEquidistant(φ0,φ1){function forward(λ,φ){var ρ=G-φ;return[ρ*Math.sin(n*λ),G-ρ*Math.cos(n*λ)]}var cosφ0=Math.cos(φ0),n=φ0===φ1?Math.sin(φ0):(cosφ0-Math.cos(φ1))/(φ1-φ0),G=cosφ0/n+φ0;return abs(n)<ε?d3_geo_equirectangular:(forward.invert=function(x,y){var ρ0_y=G-y;return[Math.atan2(x,ρ0_y)/n,G-d3_sgn(n)*Math.sqrt(x*x+ρ0_y*ρ0_y)]},forward)}function d3_geo_mercator(λ,φ){return[λ,Math.log(Math.tan(π/4+φ/2))]}function d3_geo_mercatorProjection(project){var clipAuto,m=d3_geo_projection(project),scale=m.scale,translate=m.translate,clipExtent=m.clipExtent;return m.scale=function(){var v=scale.apply(m,arguments);return v===m?clipAuto?m.clipExtent(null):m:v},m.translate=function(){var v=translate.apply(m,arguments);return v===m?clipAuto?m.clipExtent(null):m:v},m.clipExtent=function(_){var v=clipExtent.apply(m,arguments);if(v===m){if(clipAuto=null==_){var k=π*scale(),t=translate();clipExtent([[t[0]-k,t[1]-k],[t[0]+k,t[1]+k]])}}else clipAuto&&(v=null);return v},m.clipExtent(null)}function d3_geo_transverseMercator(λ,φ){return[Math.log(Math.tan(π/4+φ/2)),-λ]}function d3_geom_pointX(d){return d[0]}function d3_geom_pointY(d){return d[1]}function d3_geom_hullUpper(points){for(var n=points.length,hull=[0,1],hs=2,i=2;n>i;i++){for(;hs>1&&d3_cross2d(points[hull[hs-2]],points[hull[hs-1]],points[i])<=0;)--hs;hull[hs++]=i}return hull.slice(0,hs)}function d3_geom_hullOrder(a,b){return a[0]-b[0]||a[1]-b[1]}function d3_geom_polygonInside(p,a,b){return(b[0]-a[0])*(p[1]-a[1])<(b[1]-a[1])*(p[0]-a[0])}function d3_geom_polygonIntersect(c,d,a,b){var x1=c[0],x3=a[0],x21=d[0]-x1,x43=b[0]-x3,y1=c[1],y3=a[1],y21=d[1]-y1,y43=b[1]-y3,ua=(x43*(y1-y3)-y43*(x1-x3))/(y43*x21-x43*y21);return[x1+ua*x21,y1+ua*y21]}function d3_geom_polygonClosed(coordinates){var a=coordinates[0],b=coordinates[coordinates.length-1];return!(a[0]-b[0]||a[1]-b[1])}function d3_geom_voronoiBeach(){d3_geom_voronoiRedBlackNode(this),this.edge=this.site=this.circle=null}function d3_geom_voronoiCreateBeach(site){var beach=d3_geom_voronoiBeachPool.pop()||new d3_geom_voronoiBeach;return beach.site=site,beach}function d3_geom_voronoiDetachBeach(beach){d3_geom_voronoiDetachCircle(beach),d3_geom_voronoiBeaches.remove(beach),d3_geom_voronoiBeachPool.push(beach),d3_geom_voronoiRedBlackNode(beach)}function d3_geom_voronoiRemoveBeach(beach){var circle=beach.circle,x=circle.x,y=circle.cy,vertex={x:x,y:y},previous=beach.P,next=beach.N,disappearing=[beach];d3_geom_voronoiDetachBeach(beach);for(var lArc=previous;lArc.circle&&abs(x-lArc.circle.x)<ε&&abs(y-lArc.circle.cy)<ε;)previous=lArc.P,disappearing.unshift(lArc),d3_geom_voronoiDetachBeach(lArc),lArc=previous;disappearing.unshift(lArc),d3_geom_voronoiDetachCircle(lArc);for(var rArc=next;rArc.circle&&abs(x-rArc.circle.x)<ε&&abs(y-rArc.circle.cy)<ε;)next=rArc.N,disappearing.push(rArc),d3_geom_voronoiDetachBeach(rArc),rArc=next;disappearing.push(rArc),d3_geom_voronoiDetachCircle(rArc);var iArc,nArcs=disappearing.length;for(iArc=1;nArcs>iArc;++iArc)rArc=disappearing[iArc],lArc=disappearing[iArc-1],d3_geom_voronoiSetEdgeEnd(rArc.edge,lArc.site,rArc.site,vertex);lArc=disappearing[0],rArc=disappearing[nArcs-1],rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,rArc.site,null,vertex),d3_geom_voronoiAttachCircle(lArc),d3_geom_voronoiAttachCircle(rArc)}function d3_geom_voronoiAddBeach(site){for(var lArc,rArc,dxl,dxr,x=site.x,directrix=site.y,node=d3_geom_voronoiBeaches._;node;)if(dxl=d3_geom_voronoiLeftBreakPoint(node,directrix)-x,dxl>ε)node=node.L;else{if(dxr=x-d3_geom_voronoiRightBreakPoint(node,directrix),!(dxr>ε)){dxl>-ε?(lArc=node.P,rArc=node):dxr>-ε?(lArc=node,rArc=node.N):lArc=rArc=node;break}if(!node.R){lArc=node;break}node=node.R}var newArc=d3_geom_voronoiCreateBeach(site);if(d3_geom_voronoiBeaches.insert(lArc,newArc),lArc||rArc){if(lArc===rArc)return d3_geom_voronoiDetachCircle(lArc),rArc=d3_geom_voronoiCreateBeach(lArc.site),d3_geom_voronoiBeaches.insert(newArc,rArc),newArc.edge=rArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site),d3_geom_voronoiAttachCircle(lArc),d3_geom_voronoiAttachCircle(rArc),void 0;if(!rArc)return newArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site),void 0;d3_geom_voronoiDetachCircle(lArc),d3_geom_voronoiDetachCircle(rArc);var lSite=lArc.site,ax=lSite.x,ay=lSite.y,bx=site.x-ax,by=site.y-ay,rSite=rArc.site,cx=rSite.x-ax,cy=rSite.y-ay,d=2*(bx*cy-by*cx),hb=bx*bx+by*by,hc=cx*cx+cy*cy,vertex={x:(cy*hb-by*hc)/d+ax,y:(bx*hc-cx*hb)/d+ay};d3_geom_voronoiSetEdgeEnd(rArc.edge,lSite,rSite,vertex),newArc.edge=d3_geom_voronoiCreateEdge(lSite,site,null,vertex),rArc.edge=d3_geom_voronoiCreateEdge(site,rSite,null,vertex),d3_geom_voronoiAttachCircle(lArc),d3_geom_voronoiAttachCircle(rArc)}}function d3_geom_voronoiLeftBreakPoint(arc,directrix){var site=arc.site,rfocx=site.x,rfocy=site.y,pby2=rfocy-directrix;if(!pby2)return rfocx;var lArc=arc.P;if(!lArc)return-1/0;site=lArc.site;var lfocx=site.x,lfocy=site.y,plby2=lfocy-directrix;if(!plby2)return lfocx;var hl=lfocx-rfocx,aby2=1/pby2-1/plby2,b=hl/plby2;return aby2?(-b+Math.sqrt(b*b-2*aby2*(hl*hl/(-2*plby2)-lfocy+plby2/2+rfocy-pby2/2)))/aby2+rfocx:(rfocx+lfocx)/2}function d3_geom_voronoiRightBreakPoint(arc,directrix){var rArc=arc.N;if(rArc)return d3_geom_voronoiLeftBreakPoint(rArc,directrix);var site=arc.site;return site.y===directrix?site.x:1/0}function d3_geom_voronoiCell(site){this.site=site,this.edges=[]}function d3_geom_voronoiCloseCells(extent){for(var x2,y2,x3,y3,cell,iHalfEdge,halfEdges,nHalfEdges,start,end,x0=extent[0][0],x1=extent[1][0],y0=extent[0][1],y1=extent[1][1],cells=d3_geom_voronoiCells,iCell=cells.length;iCell--;)if(cell=cells[iCell],cell&&cell.prepare())for(halfEdges=cell.edges,nHalfEdges=halfEdges.length,iHalfEdge=0;nHalfEdges>iHalfEdge;)end=halfEdges[iHalfEdge].end(),x3=end.x,y3=end.y,start=halfEdges[++iHalfEdge%nHalfEdges].start(),x2=start.x,y2=start.y,(abs(x3-x2)>ε||abs(y3-y2)>ε)&&(halfEdges.splice(iHalfEdge,0,new d3_geom_voronoiHalfEdge(d3_geom_voronoiCreateBorderEdge(cell.site,end,abs(x3-x0)<ε&&y1-y3>ε?{x:x0,y:abs(x2-x0)<ε?y2:y1}:abs(y3-y1)<ε&&x1-x3>ε?{x:abs(y2-y1)<ε?x2:x1,y:y1}:abs(x3-x1)<ε&&y3-y0>ε?{x:x1,y:abs(x2-x1)<ε?y2:y0}:abs(y3-y0)<ε&&x3-x0>ε?{x:abs(y2-y0)<ε?x2:x0,y:y0}:null),cell.site,null)),++nHalfEdges)}function d3_geom_voronoiHalfEdgeOrder(a,b){return b.angle-a.angle}function d3_geom_voronoiCircle(){d3_geom_voronoiRedBlackNode(this),this.x=this.y=this.arc=this.site=this.cy=null}function d3_geom_voronoiAttachCircle(arc){var lArc=arc.P,rArc=arc.N;if(lArc&&rArc){var lSite=lArc.site,cSite=arc.site,rSite=rArc.site;if(lSite!==rSite){var bx=cSite.x,by=cSite.y,ax=lSite.x-bx,ay=lSite.y-by,cx=rSite.x-bx,cy=rSite.y-by,d=2*(ax*cy-ay*cx);if(!(d>=-ε2)){var ha=ax*ax+ay*ay,hc=cx*cx+cy*cy,x=(cy*ha-ay*hc)/d,y=(ax*hc-cx*ha)/d,cy=y+by,circle=d3_geom_voronoiCirclePool.pop()||new d3_geom_voronoiCircle;circle.arc=arc,circle.site=cSite,circle.x=x+bx,circle.y=cy+Math.sqrt(x*x+y*y),circle.cy=cy,arc.circle=circle;for(var before=null,node=d3_geom_voronoiCircles._;node;)if(circle.yfx||fx>=x1)return;if(lx>rx){if(va){if(va.y>=y1)return}else va={x:fx,y:y0};vb={x:fx,y:y1}}else{if(va){if(va.yfm||fm>1)if(lx>rx){if(va){if(va.y>=y1)return}else va={x:(y0-fb)/fm,y:y0};vb={x:(y1-fb)/fm,y:y1}}else{if(va){if(va.yly){if(va){if(va.x>=x1)return}else va={x:x0,y:fm*x0+fb};vb={x:x1,y:fm*x1+fb}}else{if(va){if(va.xi;++i)if(o=q[i],o.x==m[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),j=i+1;n>j;++j)q[j].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),j=i+1;n>j;++j)q[j].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),j=i+1;n>j;++j)q[j].i--;q.splice(i,1),n--,i--}else o.x=d3_interpolateNumber(parseFloat(m[0]),parseFloat(o.x));for(;n>i;)o=q.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),n--;return 1===s.length?null==s[0]?(o=q[0].x,function(t){return o(t)+""}):function(){return b}:function(t){for(i=0;n>i;++i)s[(o=q[i]).i]=o.x(t);return s.join("")}}function d3_interpolate(a,b){for(var f,i=d3.interpolators.length;--i>=0&&!(f=d3.interpolators[i](a,b)););return f}function d3_interpolateArray(a,b){var i,x=[],c=[],na=a.length,nb=b.length,n0=Math.min(a.length,b.length);for(i=0;n0>i;++i)x.push(d3_interpolate(a[i],b[i]));for(;na>i;++i)c[i]=a[i];for(;nb>i;++i)c[i]=b[i];return function(t){for(i=0;n0>i;++i)c[i]=x[i](t);return c}}function d3_ease_clamp(f){return function(t){return 0>=t?0:t>=1?1:f(t)}}function d3_ease_reverse(f){return function(t){return 1-f(1-t)}}function d3_ease_reflect(f){return function(t){return.5*(.5>t?f(2*t):2-f(2-2*t))}}function d3_ease_quad(t){return t*t}function d3_ease_cubic(t){return t*t*t}function d3_ease_cubicInOut(t){if(0>=t)return 0;if(t>=1)return 1;var t2=t*t,t3=t2*t;return 4*(.5>t?t3:3*(t-t2)+t3-.75)}function d3_ease_poly(e){return function(t){return Math.pow(t,e)}}function d3_ease_sin(t){return 1-Math.cos(t*halfπ)}function d3_ease_exp(t){return Math.pow(2,10*(t-1))}function d3_ease_circle(t){return 1-Math.sqrt(1-t*t)}function d3_ease_elastic(a,p){var s;return arguments.length<2&&(p=.45),arguments.length?s=p/τ*Math.asin(1/a):(a=1,s=p/4),function(t){return 1+a*Math.pow(2,-10*t)*Math.sin((t-s)*τ/p)}}function d3_ease_back(s){return s||(s=1.70158),function(t){return t*t*((s+1)*t-s)}}function d3_ease_bounce(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375 +}function d3_interpolateHcl(a,b){a=d3.hcl(a),b=d3.hcl(b);var ah=a.h,ac=a.c,al=a.l,bh=b.h-ah,bc=b.c-ac,bl=b.l-al;return isNaN(bc)&&(bc=0,ac=isNaN(ac)?b.c:ac),isNaN(bh)?(bh=0,ah=isNaN(ah)?b.h:ah):bh>180?bh-=360:-180>bh&&(bh+=360),function(t){return d3_hcl_lab(ah+bh*t,ac+bc*t,al+bl*t)+""}}function d3_interpolateHsl(a,b){a=d3.hsl(a),b=d3.hsl(b);var ah=a.h,as=a.s,al=a.l,bh=b.h-ah,bs=b.s-as,bl=b.l-al;return isNaN(bs)&&(bs=0,as=isNaN(as)?b.s:as),isNaN(bh)?(bh=0,ah=isNaN(ah)?b.h:ah):bh>180?bh-=360:-180>bh&&(bh+=360),function(t){return d3_hsl_rgb(ah+bh*t,as+bs*t,al+bl*t)+""}}function d3_interpolateLab(a,b){a=d3.lab(a),b=d3.lab(b);var al=a.l,aa=a.a,ab=a.b,bl=b.l-al,ba=b.a-aa,bb=b.b-ab;return function(t){return d3_lab_rgb(al+bl*t,aa+ba*t,ab+bb*t)+""}}function d3_interpolateRound(a,b){return b-=a,function(t){return Math.round(a+b*t)}}function d3_transform(m){var r0=[m.a,m.b],r1=[m.c,m.d],kx=d3_transformNormalize(r0),kz=d3_transformDot(r0,r1),ky=d3_transformNormalize(d3_transformCombine(r1,r0,-kz))||0;r0[0]*r1[1]180?rb+=360:rb-ra>180&&(ra+=360),q.push({i:s.push(s.pop()+"rotate(",null,")")-2,x:d3_interpolateNumber(ra,rb)})):rb&&s.push(s.pop()+"rotate("+rb+")"),wa!=wb?q.push({i:s.push(s.pop()+"skewX(",null,")")-2,x:d3_interpolateNumber(wa,wb)}):wb&&s.push(s.pop()+"skewX("+wb+")"),ka[0]!=kb[0]||ka[1]!=kb[1]?(n=s.push(s.pop()+"scale(",null,",",null,")"),q.push({i:n-4,x:d3_interpolateNumber(ka[0],kb[0])},{i:n-2,x:d3_interpolateNumber(ka[1],kb[1])})):(1!=kb[0]||1!=kb[1])&&s.push(s.pop()+"scale("+kb+")"),n=q.length,function(t){for(var o,i=-1;++ii;++i)(k=array[i][1])>v&&(j=i,v=k);return j}function d3_layout_stackReduceSum(d){return d.reduce(d3_layout_stackSum,0)}function d3_layout_stackSum(p,d){return p+d[1]}function d3_layout_histogramBinSturges(range,values){return d3_layout_histogramBinFixed(range,Math.ceil(Math.log(values.length)/Math.LN2+1))}function d3_layout_histogramBinFixed(range,n){for(var x=-1,b=+range[0],m=(range[1]-b)/n,f=[];++x<=n;)f[x]=m*x+b;return f}function d3_layout_histogramRange(values){return[d3.min(values),d3.max(values)]}function d3_layout_treeSeparation(a,b){return a.parent==b.parent?1:2}function d3_layout_treeLeft(node){var children=node.children;return children&&children.length?children[0]:node._tree.thread}function d3_layout_treeRight(node){var n,children=node.children;return children&&(n=children.length)?children[n-1]:node._tree.thread}function d3_layout_treeSearch(node,compare){var children=node.children;if(children&&(n=children.length))for(var child,n,i=-1;++i0&&(node=child);return node}function d3_layout_treeRightmost(a,b){return a.x-b.x}function d3_layout_treeLeftmost(a,b){return b.x-a.x}function d3_layout_treeDeepest(a,b){return a.depth-b.depth}function d3_layout_treeVisitAfter(node,callback){function visit(node,previousSibling){var children=node.children;if(children&&(n=children.length))for(var child,n,previousChild=null,i=-1;++i=0;)child=children[i]._tree,child.prelim+=shift,child.mod+=shift,shift+=child.shift+(change+=child.change)}function d3_layout_treeMove(ancestor,node,shift){ancestor=ancestor._tree,node=node._tree;var change=shift/(node.number-ancestor.number);ancestor.change+=change,node.change-=change,node.shift+=shift,node.prelim+=shift,node.mod+=shift}function d3_layout_treeAncestor(vim,node,ancestor){return vim._tree.ancestor.parent==node.parent?vim._tree.ancestor:ancestor}function d3_layout_packSort(a,b){return a.value-b.value}function d3_layout_packInsert(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function d3_layout_packSplice(a,b){a._pack_next=b,b._pack_prev=a}function d3_layout_packIntersects(a,b){var dx=b.x-a.x,dy=b.y-a.y,dr=a.r+b.r;return.999*dr*dr>dx*dx+dy*dy}function d3_layout_packSiblings(node){function bound(node){xMin=Math.min(node.x-node.r,xMin),xMax=Math.max(node.x+node.r,xMax),yMin=Math.min(node.y-node.r,yMin),yMax=Math.max(node.y+node.r,yMax)}if((nodes=node.children)&&(n=nodes.length)){var nodes,a,b,c,i,j,k,n,xMin=1/0,xMax=-1/0,yMin=1/0,yMax=-1/0;if(nodes.forEach(d3_layout_packLink),a=nodes[0],a.x=-a.r,a.y=0,bound(a),n>1&&(b=nodes[1],b.x=b.r,b.y=0,bound(b),n>2))for(c=nodes[2],d3_layout_packPlace(a,b,c),bound(c),d3_layout_packInsert(a,c),a._pack_prev=c,d3_layout_packInsert(c,b),b=a._pack_next,i=3;n>i;i++){d3_layout_packPlace(a,b,c=nodes[i]);var isect=0,s1=1,s2=1;for(j=b._pack_next;j!==b;j=j._pack_next,s1++)if(d3_layout_packIntersects(j,c)){isect=1;break}if(1==isect)for(k=a._pack_prev;k!==j._pack_prev&&!d3_layout_packIntersects(k,c);k=k._pack_prev,s2++);isect?(s2>s1||s1==s2&&b.ri;i++)c=nodes[i],c.x-=cx,c.y-=cy,cr=Math.max(cr,c.r+Math.sqrt(c.x*c.x+c.y*c.y));node.r=cr,nodes.forEach(d3_layout_packUnlink)}}function d3_layout_packLink(node){node._pack_next=node._pack_prev=node}function d3_layout_packUnlink(node){delete node._pack_next,delete node._pack_prev}function d3_layout_packTransform(node,x,y,k){var children=node.children;if(node.x=x+=k*node.x,node.y=y+=k*node.y,node.r*=k,children)for(var i=-1,n=children.length;++idx&&(x+=dx/2,dx=0),0>dy&&(y+=dy/2,dy=0),{x:x,y:y,dx:dx,dy:dy}}function d3_scaleExtent(domain){var start=domain[0],stop=domain[domain.length-1];return stop>start?[start,stop]:[stop,start]}function d3_scaleRange(scale){return scale.rangeExtent?scale.rangeExtent():d3_scaleExtent(scale.range())}function d3_scale_bilinear(domain,range,uninterpolate,interpolate){var u=uninterpolate(domain[0],domain[1]),i=interpolate(range[0],range[1]);return function(x){return i(u(x))}}function d3_scale_nice(domain,nice){var dx,i0=0,i1=domain.length-1,x0=domain[i0],x1=domain[i1];return x0>x1&&(dx=i0,i0=i1,i1=dx,dx=x0,x0=x1,x1=dx),domain[i0]=nice.floor(x0),domain[i1]=nice.ceil(x1),domain}function d3_scale_niceStep(step){return step?{floor:function(x){return Math.floor(x/step)*step},ceil:function(x){return Math.ceil(x/step)*step}}:d3_scale_niceIdentity}function d3_scale_polylinear(domain,range,uninterpolate,interpolate){var u=[],i=[],j=0,k=Math.min(domain.length,range.length)-1;for(domain[k]2?d3_scale_polylinear:d3_scale_bilinear,uninterpolate=clamp?d3_uninterpolateClamp:d3_uninterpolateNumber;return output=linear(domain,range,uninterpolate,interpolate),input=linear(range,domain,uninterpolate,d3_interpolate),scale}function scale(x){return output(x)}var output,input;return scale.invert=function(y){return input(y)},scale.domain=function(x){return arguments.length?(domain=x.map(Number),rescale()):domain},scale.range=function(x){return arguments.length?(range=x,rescale()):range},scale.rangeRound=function(x){return scale.range(x).interpolate(d3_interpolateRound)},scale.clamp=function(x){return arguments.length?(clamp=x,rescale()):clamp},scale.interpolate=function(x){return arguments.length?(interpolate=x,rescale()):interpolate},scale.ticks=function(m){return d3_scale_linearTicks(domain,m)},scale.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},scale.nice=function(m){return d3_scale_linearNice(domain,m),rescale()},scale.copy=function(){return d3_scale_linear(domain,range,interpolate,clamp)},rescale()}function d3_scale_linearRebind(scale,linear){return d3.rebind(scale,linear,"range","rangeRound","interpolate","clamp")}function d3_scale_linearNice(domain,m){return d3_scale_nice(domain,d3_scale_niceStep(d3_scale_linearTickRange(domain,m)[2]))}function d3_scale_linearTickRange(domain,m){null==m&&(m=10);var extent=d3_scaleExtent(domain),span=extent[1]-extent[0],step=Math.pow(10,Math.floor(Math.log(span/m)/Math.LN10)),err=m/span*step;return.15>=err?step*=10:.35>=err?step*=5:.75>=err&&(step*=2),extent[0]=Math.ceil(extent[0]/step)*step,extent[1]=Math.floor(extent[1]/step)*step+.5*step,extent[2]=step,extent}function d3_scale_linearTicks(domain,m){return d3.range.apply(d3,d3_scale_linearTickRange(domain,m))}function d3_scale_linearTickFormat(domain,m,format){var range=d3_scale_linearTickRange(domain,m);return d3.format(format?format.replace(d3_format_re,function(a,b,c,d,e,f,g,h,i,j){return[b,c,d,e,f,g,h,i||"."+d3_scale_linearFormatPrecision(j,range),j].join("")}):",."+d3_scale_linearPrecision(range[2])+"f")}function d3_scale_linearPrecision(value){return-Math.floor(Math.log(value)/Math.LN10+.01)}function d3_scale_linearFormatPrecision(type,range){var p=d3_scale_linearPrecision(range[2]);return type in d3_scale_linearFormatSignificant?Math.abs(p-d3_scale_linearPrecision(Math.max(Math.abs(range[0]),Math.abs(range[1]))))+ +("e"!==type):p-2*("%"===type)}function d3_scale_log(linear,base,positive,domain){function log(x){return(positive?Math.log(0>x?0:x):-Math.log(x>0?0:-x))/Math.log(base)}function pow(x){return positive?Math.pow(base,x):-Math.pow(base,-x)}function scale(x){return linear(log(x))}return scale.invert=function(x){return pow(linear.invert(x))},scale.domain=function(x){return arguments.length?(positive=x[0]>=0,linear.domain((domain=x.map(Number)).map(log)),scale):domain},scale.base=function(_){return arguments.length?(base=+_,linear.domain(domain.map(log)),scale):base},scale.nice=function(){var niced=d3_scale_nice(domain.map(log),positive?Math:d3_scale_logNiceNegative);return linear.domain(niced),domain=niced.map(pow),scale},scale.ticks=function(){var extent=d3_scaleExtent(domain),ticks=[],u=extent[0],v=extent[1],i=Math.floor(log(u)),j=Math.ceil(log(v)),n=base%1?2:base;if(isFinite(j-i)){if(positive){for(;j>i;i++)for(var k=1;n>k;k++)ticks.push(pow(i)*k);ticks.push(pow(i))}else for(ticks.push(pow(i));i++0;k--)ticks.push(pow(i)*k);for(i=0;ticks[i]v;j--);ticks=ticks.slice(i,j)}return ticks},scale.tickFormat=function(n,format){if(!arguments.length)return d3_scale_logFormat;arguments.length<2?format=d3_scale_logFormat:"function"!=typeof format&&(format=d3.format(format));var e,k=Math.max(.1,n/scale.ticks().length),f=positive?(e=1e-12,Math.ceil):(e=-1e-12,Math.floor);return function(d){return d/pow(f(log(d)+e))<=k?format(d):""}},scale.copy=function(){return d3_scale_log(linear.copy(),base,positive,domain)},d3_scale_linearRebind(scale,linear)}function d3_scale_pow(linear,exponent,domain){function scale(x){return linear(powp(x))}var powp=d3_scale_powPow(exponent),powb=d3_scale_powPow(1/exponent);return scale.invert=function(x){return powb(linear.invert(x))},scale.domain=function(x){return arguments.length?(linear.domain((domain=x.map(Number)).map(powp)),scale):domain},scale.ticks=function(m){return d3_scale_linearTicks(domain,m)},scale.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},scale.nice=function(m){return scale.domain(d3_scale_linearNice(domain,m))},scale.exponent=function(x){return arguments.length?(powp=d3_scale_powPow(exponent=x),powb=d3_scale_powPow(1/exponent),linear.domain(domain.map(powp)),scale):exponent},scale.copy=function(){return d3_scale_pow(linear.copy(),exponent,domain)},d3_scale_linearRebind(scale,linear)}function d3_scale_powPow(e){return function(x){return 0>x?-Math.pow(-x,e):Math.pow(x,e)}}function d3_scale_ordinal(domain,ranger){function scale(x){return range[((index.get(x)||"range"===ranger.t&&index.set(x,domain.push(x)))-1)%range.length]}function steps(start,step){return d3.range(domain.length).map(function(i){return start+step*i})}var index,range,rangeBand;return scale.domain=function(x){if(!arguments.length)return domain;domain=[],index=new d3_Map;for(var xi,i=-1,n=x.length;++iy?[0/0,0/0]:[y>0?thresholds[y-1]:domain[0],yy?0/0:y/kx+x0,[y,y+1/kx]},scale.copy=function(){return d3_scale_quantize(x0,x1,range)},rescale()}function d3_scale_threshold(domain,range){function scale(x){return x>=x?range[d3.bisect(domain,x)]:void 0}return scale.domain=function(_){return arguments.length?(domain=_,scale):domain},scale.range=function(_){return arguments.length?(range=_,scale):range},scale.invertExtent=function(y){return y=range.indexOf(y),[domain[y-1],domain[y]]},scale.copy=function(){return d3_scale_threshold(domain,range)},scale}function d3_scale_identity(domain){function identity(x){return+x}return identity.invert=identity,identity.domain=identity.range=function(x){return arguments.length?(domain=x.map(identity),identity):domain},identity.ticks=function(m){return d3_scale_linearTicks(domain,m)},identity.tickFormat=function(m,format){return d3_scale_linearTickFormat(domain,m,format)},identity.copy=function(){return d3_scale_identity(domain)},identity}function d3_svg_arcInnerRadius(d){return d.innerRadius}function d3_svg_arcOuterRadius(d){return d.outerRadius}function d3_svg_arcStartAngle(d){return d.startAngle}function d3_svg_arcEndAngle(d){return d.endAngle}function d3_svg_line(projection){function line(data){function segment(){segments.push("M",interpolate(projection(points),tension))}for(var d,segments=[],points=[],i=-1,n=data.length,fx=d3_functor(x),fy=d3_functor(y);++i1&&path.push("H",p[0]),path.join("")}function d3_svg_lineStepBefore(points){for(var i=0,n=points.length,p=points[0],path=[p[0],",",p[1]];++i1){t=tangents[1],p=points[pi],pi++,path+="C"+(p0[0]+t0[0])+","+(p0[1]+t0[1])+","+(p[0]-t[0])+","+(p[1]-t[1])+","+p[0]+","+p[1];for(var i=2;i9&&(s=3*d/Math.sqrt(s),m[i]=s*a,m[i+1]=s*b));for(i=-1;++i<=j;)s=(points[Math.min(j,i+1)][0]-points[Math.max(0,i-1)][0])/(6*(1+m[i]*m[i])),tangents.push([s||0,m[i]*s||0]);return tangents}function d3_svg_lineMonotone(points){return points.length<3?d3_svg_lineLinear(points):points[0]+d3_svg_lineHermite(points,d3_svg_lineMonotoneTangents(points))}function d3_svg_lineRadial(points){for(var point,r,a,i=-1,n=points.length;++iid?stop():(lock.active=id,transition.event&&transition.event.start.call(node,d,i),transition.tween.forEach(function(key,value){(value=value.call(node,d,i))&&tweened.push(value)}),d3.timer(function(){return timer.c=tick(elapsed||1)?d3_true:tick,1},0,time),void 0)}function tick(elapsed){if(lock.active!==id)return stop();for(var t=elapsed/duration,e=ease(t),n=tweened.length;n>0;)tweened[--n].call(node,e);return t>=1?(transition.event&&transition.event.end.call(node,d,i),stop()):void 0}function stop(){return--lock.count?delete lock[id]:delete node.__transition__,1}var d=node.__data__,ease=transition.ease,delay=transition.delay,duration=transition.duration,timer=d3_timer_active,tweened=[];return timer.t=delay+time,elapsed>=delay?start(elapsed-delay):(timer.c=start,void 0)},0,time)}}function d3_svg_axisX(selection,x){selection.attr("transform",function(d){return"translate("+x(d)+",0)"})}function d3_svg_axisY(selection,y){selection.attr("transform",function(d){return"translate(0,"+y(d)+")"})}function d3_time_formatIsoNative(date){return date.toISOString()}function d3_time_scale(linear,methods,format){function scale(x){return linear(x)}function tickMethod(extent,count){var span=extent[1]-extent[0],target=span/count,i=d3.bisect(d3_time_scaleSteps,target);return i==d3_time_scaleSteps.length?[methods.year,d3_scale_linearTickRange(extent.map(function(d){return d/31536e6}),count)[2]]:i?methods[target/d3_time_scaleSteps[i-1]1?{floor:function(date){for(;skipped(date=interval.floor(date));)date=d3_time_scaleDate(date-1); return date},ceil:function(date){for(;skipped(date=interval.ceil(date));)date=d3_time_scaleDate(+date+1);return date}}:interval))},scale.ticks=function(interval,skip){var extent=d3_scaleExtent(scale.domain()),method=null==interval?tickMethod(extent,10):"number"==typeof interval?tickMethod(extent,interval):!interval.range&&[{range:interval},skip];return method&&(interval=method[0],skip=method[1]),interval.range(extent[0],d3_time_scaleDate(+extent[1]+1),1>skip?1:skip)},scale.tickFormat=function(){return format},scale.copy=function(){return d3_time_scale(linear.copy(),methods,format)},d3_scale_linearRebind(scale,linear)}function d3_time_scaleDate(t){return new Date(t)}function d3_json(request){return JSON.parse(request.responseText)}function d3_html(request){var range=d3_document.createRange();return range.selectNode(d3_document.body),range.createContextualFragment(request.responseText)}var d3={version:"3.4.1"};Date.now||(Date.now=function(){return+new Date});var d3_arraySlice=[].slice,d3_array=function(list){return d3_arraySlice.call(list)},d3_document=document,d3_documentElement=d3_document.documentElement,d3_window=window;try{d3_array(d3_documentElement.childNodes)[0].nodeType}catch(e){d3_array=function(list){for(var i=list.length,array=new Array(i);i--;)array[i]=list[i];return array}}try{d3_document.createElement("div").style.setProperty("opacity",0,"")}catch(error){var d3_element_prototype=d3_window.Element.prototype,d3_element_setAttribute=d3_element_prototype.setAttribute,d3_element_setAttributeNS=d3_element_prototype.setAttributeNS,d3_style_prototype=d3_window.CSSStyleDeclaration.prototype,d3_style_setProperty=d3_style_prototype.setProperty;d3_element_prototype.setAttribute=function(name,value){d3_element_setAttribute.call(this,name,value+"")},d3_element_prototype.setAttributeNS=function(space,local,value){d3_element_setAttributeNS.call(this,space,local,value+"")},d3_style_prototype.setProperty=function(name,value,priority){d3_style_setProperty.call(this,name,value+"",priority)}}d3.ascending=function(a,b){return b>a?-1:a>b?1:a>=b?0:0/0},d3.descending=function(a,b){return a>b?-1:b>a?1:b>=a?0:0/0},d3.min=function(array,f){var a,b,i=-1,n=array.length;if(1===arguments.length){for(;++i=a);)a=void 0;for(;++ib&&(a=b)}else{for(;++i=a);)a=void 0;for(;++ib&&(a=b)}return a},d3.max=function(array,f){var a,b,i=-1,n=array.length;if(1===arguments.length){for(;++i=a);)a=void 0;for(;++ia&&(a=b)}else{for(;++i=a);)a=void 0;for(;++ia&&(a=b)}return a},d3.extent=function(array,f){var a,b,c,i=-1,n=array.length;if(1===arguments.length){for(;++i=a);)a=c=void 0;for(;++ib&&(a=b),b>c&&(c=b))}else{for(;++i=a);)a=void 0;for(;++ib&&(a=b),b>c&&(c=b))}return[a,c]},d3.sum=function(array,f){var a,s=0,n=array.length,i=-1;if(1===arguments.length)for(;++i1&&(array=array.map(f)),array=array.filter(d3_number),array.length?d3.quantile(array.sort(d3.ascending),.5):void 0},d3.bisector=function(f){return{left:function(a,x,lo,hi){for(arguments.length<3&&(lo=0),arguments.length<4&&(hi=a.length);hi>lo;){var mid=lo+hi>>>1;f.call(a,a[mid],mid)lo;){var mid=lo+hi>>>1;xn?0:n);n>i;)pairs[i]=[p0=p1,p1=array[++i]];return pairs},d3.zip=function(){if(!(n=arguments.length))return[];for(var i=-1,m=d3.min(arguments,d3_zipLength),zips=new Array(m);++i=0;)for(array=arrays[n],m=array.length;--m>=0;)merged[--j]=array[m];return merged};var abs=Math.abs;d3.range=function(start,stop,step){if(arguments.length<3&&(step=1,arguments.length<2&&(stop=start,start=0)),(stop-start)/step===1/0)throw new Error("infinite range");var j,range=[],k=d3_range_integerScale(abs(step)),i=-1;if(start*=k,stop*=k,step*=k,0>step)for(;(j=start+step*++i)>stop;)range.push(j/k);else for(;(j=start+step*++i)=keys.length)return rollup?rollup.call(nest,array):sortValues?array.sort(sortValues):array;for(var keyValue,object,setter,values,i=-1,n=array.length,key=keys[depth++],valuesByKey=new d3_Map;++i=keys.length)return map;var array=[],sortKey=sortKeys[depth++];return map.forEach(function(key,keyMap){array.push({key:key,values:entries(keyMap,depth)})}),sortKey?array.sort(function(a,b){return sortKey(a.key,b.key)}):array}var sortValues,rollup,nest={},keys=[],sortKeys=[];return nest.map=function(array,mapType){return map(mapType,array,0)},nest.entries=function(array){return entries(map(d3.map,array,0),0)},nest.key=function(d){return keys.push(d),nest},nest.sortKeys=function(order){return sortKeys[keys.length-1]=order,nest},nest.sortValues=function(order){return sortValues=order,nest},nest.rollup=function(f){return rollup=f,nest},nest},d3.set=function(array){var set=new d3_Set;if(array)for(var i=0,n=array.length;n>i;++i)set.add(array[i]);return set},d3_class(d3_Set,{has:d3_map_has,add:function(value){return this[d3_map_prefix+value]=!0,value},remove:function(value){return value=d3_map_prefix+value,value in this&&delete this[value]},values:d3_map_keys,size:d3_map_size,empty:d3_map_empty,forEach:function(f){for(var value in this)value.charCodeAt(0)===d3_map_prefixCode&&f.call(this,value.substring(1))}}),d3.behavior={},d3.rebind=function(target,source){for(var method,i=1,n=arguments.length;++i=0&&(name=type.substring(i+1),type=type.substring(0,i)),type)return arguments.length<2?this[type].on(name):this[type].on(name,listener);if(2===arguments.length){if(null==listener)for(type in this)this.hasOwnProperty(type)&&this[type].on(name,null);return this}},d3.event=null,d3.requote=function(s){return s.replace(d3_requote_re,"\\$&")};var d3_requote_re=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,d3_subclass={}.__proto__?function(object,prototype){object.__proto__=prototype}:function(object,prototype){for(var property in prototype)object[property]=prototype[property]},d3_select=function(s,n){return n.querySelector(s)},d3_selectAll=function(s,n){return n.querySelectorAll(s)},d3_selectMatcher=d3_documentElement[d3_vendorSymbol(d3_documentElement,"matchesSelector")],d3_selectMatches=function(n,s){return d3_selectMatcher.call(n,s)};"function"==typeof Sizzle&&(d3_select=function(s,n){return Sizzle(s,n)[0]||null},d3_selectAll=function(s,n){return Sizzle.uniqueSort(Sizzle(s,n))},d3_selectMatches=Sizzle.matchesSelector),d3.selection=function(){return d3_selectionRoot};var d3_selectionPrototype=d3.selection.prototype=[];d3_selectionPrototype.select=function(selector){var subgroup,subnode,group,node,subgroups=[];selector=d3_selection_selector(selector);for(var j=-1,m=this.length;++j=0&&(prefix=name.substring(0,i),name=name.substring(i+1)),d3_nsPrefix.hasOwnProperty(prefix)?{space:d3_nsPrefix[prefix],local:name}:name}},d3_selectionPrototype.attr=function(name,value){if(arguments.length<2){if("string"==typeof name){var node=this.node();return name=d3.ns.qualify(name),name.local?node.getAttributeNS(name.space,name.local):node.getAttribute(name)}for(value in name)this.each(d3_selection_attr(value,name[value]));return this}return this.each(d3_selection_attr(name,value))},d3_selectionPrototype.classed=function(name,value){if(arguments.length<2){if("string"==typeof name){var node=this.node(),n=(name=d3_selection_classes(name)).length,i=-1;if(value=node.classList){for(;++in){if("string"!=typeof name){2>n&&(value="");for(priority in name)this.each(d3_selection_style(priority,name[priority],value));return this}if(2>n)return d3_window.getComputedStyle(this.node(),null).getPropertyValue(name);priority=""}return this.each(d3_selection_style(name,value,priority))},d3_selectionPrototype.property=function(name,value){if(arguments.length<2){if("string"==typeof name)return this.node()[name];for(value in name)this.each(d3_selection_property(value,name[value]));return this}return this.each(d3_selection_property(name,value))},d3_selectionPrototype.text=function(value){return arguments.length?this.each("function"==typeof value?function(){var v=value.apply(this,arguments);this.textContent=null==v?"":v}:null==value?function(){this.textContent=""}:function(){this.textContent=value}):this.node().textContent},d3_selectionPrototype.html=function(value){return arguments.length?this.each("function"==typeof value?function(){var v=value.apply(this,arguments);this.innerHTML=null==v?"":v}:null==value?function(){this.innerHTML=""}:function(){this.innerHTML=value}):this.node().innerHTML},d3_selectionPrototype.append=function(name){return name=d3_selection_creator(name),this.select(function(){return this.appendChild(name.apply(this,arguments))})},d3_selectionPrototype.insert=function(name,before){return name=d3_selection_creator(name),before=d3_selection_selector(before),this.select(function(){return this.insertBefore(name.apply(this,arguments),before.apply(this,arguments)||null)})},d3_selectionPrototype.remove=function(){return this.each(function(){var parent=this.parentNode;parent&&parent.removeChild(this)})},d3_selectionPrototype.data=function(value,key){function bind(group,groupData){var i,node,nodeData,n=group.length,m=groupData.length,n0=Math.min(n,m),updateNodes=new Array(m),enterNodes=new Array(m),exitNodes=new Array(n);if(key){var keyValue,nodeByKeyValue=new d3_Map,dataByKeyValue=new d3_Map,keyValues=[];for(i=-1;++ii;++i)enterNodes[i]=d3_selection_dataNode(groupData[i]);for(;n>i;++i)exitNodes[i]=group[i]}enterNodes.update=updateNodes,enterNodes.parentNode=updateNodes.parentNode=exitNodes.parentNode=group.parentNode,enter.push(enterNodes),update.push(updateNodes),exit.push(exitNodes)}var group,node,i=-1,n=this.length;if(!arguments.length){for(value=new Array(n=(group=this[0]).length);++ij;j++){subgroups.push(subgroup=[]),subgroup.parentNode=(group=this[j]).parentNode;for(var i=0,n=group.length;n>i;i++)(node=group[i])&&filter.call(node,node.__data__,i,j)&&subgroup.push(node)}return d3_selection(subgroups)},d3_selectionPrototype.order=function(){for(var j=-1,m=this.length;++j=0;)(node=group[i])&&(next&&next!==node.nextSibling&&next.parentNode.insertBefore(node,next),next=node);return this},d3_selectionPrototype.sort=function(comparator){comparator=d3_selection_sortComparator.apply(this,arguments);for(var j=-1,m=this.length;++jj;j++)for(var group=this[j],i=0,n=group.length;n>i;i++){var node=group[i];if(node)return node}return null},d3_selectionPrototype.size=function(){var n=0;return this.each(function(){++n}),n};var d3_selection_enterPrototype=[];d3.selection.enter=d3_selection_enter,d3.selection.enter.prototype=d3_selection_enterPrototype,d3_selection_enterPrototype.append=d3_selectionPrototype.append,d3_selection_enterPrototype.empty=d3_selectionPrototype.empty,d3_selection_enterPrototype.node=d3_selectionPrototype.node,d3_selection_enterPrototype.call=d3_selectionPrototype.call,d3_selection_enterPrototype.size=d3_selectionPrototype.size,d3_selection_enterPrototype.select=function(selector){for(var subgroup,subnode,upgroup,group,node,subgroups=[],j=-1,m=this.length;++jn){if("string"!=typeof type){2>n&&(listener=!1);for(capture in type)this.each(d3_selection_on(capture,type[capture],listener));return this}if(2>n)return(n=this.node()["__on"+type])&&n._;capture=!1}return this.each(d3_selection_on(type,listener,capture))};var d3_selection_onFilters=d3.map({mouseenter:"mouseover",mouseleave:"mouseout"});d3_selection_onFilters.forEach(function(k){"on"+k in d3_document&&d3_selection_onFilters.remove(k)});var d3_event_dragSelect="onselectstart"in d3_document?null:d3_vendorSymbol(d3_documentElement.style,"userSelect"),d3_event_dragId=0;d3.mouse=function(container){return d3_mousePoint(container,d3_eventSource())};var d3_mouse_bug44083=/WebKit/.test(d3_window.navigator.userAgent)?-1:0;d3.touches=function(container,touches){return arguments.length<2&&(touches=d3_eventSource().touches),touches?d3_array(touches).map(function(touch){var point=d3_mousePoint(container,touch);return point.identifier=touch.identifier,point}):[]},d3.behavior.drag=function(){function drag(){this.on("mousedown.drag",mousedown).on("touchstart.drag",touchstart)}function touchid(){return d3.event.changedTouches[0].identifier}function touchposition(parent,id){return d3.touches(parent).filter(function(p){return p.identifier===id})[0]}function dragstart(id,position,move,end){return function(){function moved(){var p=position(parent,eventId),dx=p[0]-origin_[0],dy=p[1]-origin_[1];dragged|=dx|dy,origin_=p,event_({type:"drag",x:p[0]+offset[0],y:p[1]+offset[1],dx:dx,dy:dy})}function ended(){w.on(move+"."+drag,null).on(end+"."+drag,null),dragRestore(dragged&&d3.event.target===eventTarget),event_({type:"dragend"})}var offset,target=this,parent=target.parentNode,event_=event.of(target,arguments),eventTarget=d3.event.target,eventId=id(),drag=null==eventId?"drag":"drag-"+eventId,origin_=position(parent,eventId),dragged=0,w=d3.select(d3_window).on(move+"."+drag,moved).on(end+"."+drag,ended),dragRestore=d3_event_dragSuppress();origin?(offset=origin.apply(target,arguments),offset=[offset.x-origin_[0],offset.y-origin_[1]]):offset=[0,0],event_({type:"dragstart"})}}var event=d3_eventDispatch(drag,"drag","dragstart","dragend"),origin=null,mousedown=dragstart(d3_noop,d3.mouse,"mousemove","mouseup"),touchstart=dragstart(touchid,touchposition,"touchmove","touchend");return drag.origin=function(x){return arguments.length?(origin=x,drag):origin},d3.rebind(drag,event,"on")};var π=Math.PI,τ=2*π,halfπ=π/2,ε=1e-6,ε2=ε*ε,d3_radians=π/180,d3_degrees=180/π,ρ=Math.SQRT2,ρ2=2,ρ4=4;d3.interpolateZoom=function(p0,p1){function interpolate(t){var s=t*S;if(dr){var coshr0=d3_cosh(r0),u=w0/(ρ2*d1)*(coshr0*d3_tanh(ρ*s+r0)-d3_sinh(r0));return[ux0+u*dx,uy0+u*dy,w0*coshr0/d3_cosh(ρ*s+r0)]}return[ux0+t*dx,uy0+t*dy,w0*Math.exp(ρ*s)]}var ux0=p0[0],uy0=p0[1],w0=p0[2],ux1=p1[0],uy1=p1[1],w1=p1[2],dx=ux1-ux0,dy=uy1-uy0,d2=dx*dx+dy*dy,d1=Math.sqrt(d2),b0=(w1*w1-w0*w0+ρ4*d2)/(2*w0*ρ2*d1),b1=(w1*w1-w0*w0-ρ4*d2)/(2*w1*ρ2*d1),r0=Math.log(Math.sqrt(b0*b0+1)-b0),r1=Math.log(Math.sqrt(b1*b1+1)-b1),dr=r1-r0,S=(dr||Math.log(w1/w0))/ρ;return interpolate.duration=1e3*S,interpolate},d3.behavior.zoom=function(){function zoom(g){g.on(mousedown,mousedowned).on(d3_behavior_zoomWheel+".zoom",mousewheeled).on(mousemove,mousewheelreset).on("dblclick.zoom",dblclicked).on(touchstart,touchstarted)}function location(p){return[(p[0]-view.x)/view.k,(p[1]-view.y)/view.k]}function point(l){return[l[0]*view.k+view.x,l[1]*view.k+view.y]}function scaleTo(s){view.k=Math.max(scaleExtent[0],Math.min(scaleExtent[1],s))}function translateTo(p,l){l=point(l),view.x+=p[0]-l[0],view.y+=p[1]-l[1]}function rescale(){x1&&x1.domain(x0.range().map(function(x){return(x-view.x)/view.k}).map(x0.invert)),y1&&y1.domain(y0.range().map(function(y){return(y-view.y)/view.k}).map(y0.invert))}function zoomstarted(event){event({type:"zoomstart"})}function zoomed(event){rescale(),event({type:"zoom",scale:view.k,translate:[view.x,view.y]})}function zoomended(event){event({type:"zoomend"})}function mousedowned(){function moved(){dragged=1,translateTo(d3.mouse(target),l),zoomed(event_)}function ended(){w.on(mousemove,d3_window===target?mousewheelreset:null).on(mouseup,null),dragRestore(dragged&&d3.event.target===eventTarget),zoomended(event_)}var target=this,event_=event.of(target,arguments),eventTarget=d3.event.target,dragged=0,w=d3.select(d3_window).on(mousemove,moved).on(mouseup,ended),l=location(d3.mouse(target)),dragRestore=d3_event_dragSuppress();d3_selection_interrupt.call(target),zoomstarted(event_)}function touchstarted(){function relocate(){var touches=d3.touches(target);return scale0=view.k,touches.forEach(function(t){t.identifier in locations0&&(locations0[t.identifier]=location(t))}),touches}function started(){for(var changed=d3.event.changedTouches,i=0,n=changed.length;n>i;++i)locations0[changed[i].identifier]=null;var touches=relocate(),now=Date.now();if(1===touches.length){if(500>now-touchtime){var p=touches[0],l=locations0[p.identifier];scaleTo(2*view.k),translateTo(p,l),d3_eventPreventDefault(),zoomed(event_)}touchtime=now}else if(touches.length>1){var p=touches[0],q=touches[1],dx=p[0]-q[0],dy=p[1]-q[1];distance0=dx*dx+dy*dy}}function moved(){for(var p0,l0,p1,l1,touches=d3.touches(target),i=0,n=touches.length;n>i;++i,l1=null)if(p1=touches[i],l1=locations0[p1.identifier]){if(l0)break;p0=p1,l0=l1}if(l1){var distance1=(distance1=p1[0]-p0[0])*distance1+(distance1=p1[1]-p0[1])*distance1,scale1=distance0&&Math.sqrt(distance1/distance0);p0=[(p0[0]+p1[0])/2,(p0[1]+p1[1])/2],l0=[(l0[0]+l1[0])/2,(l0[1]+l1[1])/2],scaleTo(scale1*scale0)}touchtime=null,translateTo(p0,l0),zoomed(event_)}function ended(){if(d3.event.touches.length){for(var changed=d3.event.changedTouches,i=0,n=changed.length;n>i;++i)delete locations0[changed[i].identifier];for(var identifier in locations0)return void relocate()}w.on(touchmove,null).on(touchend,null),t.on(mousedown,mousedowned).on(touchstart,touchstarted),dragRestore(),zoomended(event_)}var scale0,target=this,event_=event.of(target,arguments),locations0={},distance0=0,eventId=d3.event.changedTouches[0].identifier,touchmove="touchmove.zoom-"+eventId,touchend="touchend.zoom-"+eventId,w=d3.select(d3_window).on(touchmove,moved).on(touchend,ended),t=d3.select(target).on(mousedown,null).on(touchstart,started),dragRestore=d3_event_dragSuppress();d3_selection_interrupt.call(target),started(),zoomstarted(event_)}function mousewheeled(){var event_=event.of(this,arguments);mousewheelTimer?clearTimeout(mousewheelTimer):(d3_selection_interrupt.call(this),zoomstarted(event_)),mousewheelTimer=setTimeout(function(){mousewheelTimer=null,zoomended(event_)},50),d3_eventPreventDefault();var point=center||d3.mouse(this);translate0||(translate0=location(point)),scaleTo(Math.pow(2,.002*d3_behavior_zoomDelta())*view.k),translateTo(point,translate0),zoomed(event_)}function mousewheelreset(){translate0=null}function dblclicked(){var event_=event.of(this,arguments),p=d3.mouse(this),l=location(p),k=Math.log(view.k)/Math.LN2;zoomstarted(event_),scaleTo(Math.pow(2,d3.event.shiftKey?Math.ceil(k)-1:Math.floor(k)+1)),translateTo(p,l),zoomed(event_),zoomended(event_)}var translate0,center,mousewheelTimer,touchtime,x0,x1,y0,y1,view={x:0,y:0,k:1},size=[960,500],scaleExtent=d3_behavior_zoomInfinity,mousedown="mousedown.zoom",mousemove="mousemove.zoom",mouseup="mouseup.zoom",touchstart="touchstart.zoom",event=d3_eventDispatch(zoom,"zoomstart","zoom","zoomend");return zoom.event=function(g){g.each(function(){var event_=event.of(this,arguments),view1=view;d3_transitionInheritId?d3.select(this).transition().each("start.zoom",function(){view=this.__chart__||{x:0,y:0,k:1},zoomstarted(event_)}).tween("zoom:zoom",function(){var dx=size[0],dy=size[1],cx=dx/2,cy=dy/2,i=d3.interpolateZoom([(cx-view.x)/view.k,(cy-view.y)/view.k,dx/view.k],[(cx-view1.x)/view1.k,(cy-view1.y)/view1.k,dx/view1.k]);return function(t){var l=i(t),k=dx/l[2];this.__chart__=view={x:cx-l[0]*k,y:cy-l[1]*k,k:k},zoomed(event_)}}).each("end.zoom",function(){zoomended(event_)}):(this.__chart__=view,zoomstarted(event_),zoomed(event_),zoomended(event_))})},zoom.translate=function(_){return arguments.length?(view={x:+_[0],y:+_[1],k:view.k},rescale(),zoom):[view.x,view.y]},zoom.scale=function(_){return arguments.length?(view={x:view.x,y:view.y,k:+_},rescale(),zoom):view.k},zoom.scaleExtent=function(_){return arguments.length?(scaleExtent=null==_?d3_behavior_zoomInfinity:[+_[0],+_[1]],zoom):scaleExtent},zoom.center=function(_){return arguments.length?(center=_&&[+_[0],+_[1]],zoom):center},zoom.size=function(_){return arguments.length?(size=_&&[+_[0],+_[1]],zoom):size},zoom.x=function(z){return arguments.length?(x1=z,x0=z.copy(),view={x:0,y:0,k:1},zoom):x1},zoom.y=function(z){return arguments.length?(y1=z,y0=z.copy(),view={x:0,y:0,k:1},zoom):y1},d3.rebind(zoom,event,"on")};var d3_behavior_zoomDelta,d3_behavior_zoomInfinity=[0,1/0],d3_behavior_zoomWheel="onwheel"in d3_document?(d3_behavior_zoomDelta=function(){return-d3.event.deltaY*(d3.event.deltaMode?120:1)},"wheel"):"onmousewheel"in d3_document?(d3_behavior_zoomDelta=function(){return d3.event.wheelDelta},"mousewheel"):(d3_behavior_zoomDelta=function(){return-d3.event.detail},"MozMousePixelScroll");d3_Color.prototype.toString=function(){return this.rgb()+""},d3.hsl=function(h,s,l){return 1===arguments.length?h instanceof d3_Hsl?d3_hsl(h.h,h.s,h.l):d3_rgb_parse(""+h,d3_rgb_hsl,d3_hsl):d3_hsl(+h,+s,+l)};var d3_hslPrototype=d3_Hsl.prototype=new d3_Color;d3_hslPrototype.brighter=function(k){return k=Math.pow(.7,arguments.length?k:1),d3_hsl(this.h,this.s,this.l/k)},d3_hslPrototype.darker=function(k){return k=Math.pow(.7,arguments.length?k:1),d3_hsl(this.h,this.s,k*this.l)},d3_hslPrototype.rgb=function(){return d3_hsl_rgb(this.h,this.s,this.l)},d3.hcl=function(h,c,l){return 1===arguments.length?h instanceof d3_Hcl?d3_hcl(h.h,h.c,h.l):h instanceof d3_Lab?d3_lab_hcl(h.l,h.a,h.b):d3_lab_hcl((h=d3_rgb_lab((h=d3.rgb(h)).r,h.g,h.b)).l,h.a,h.b):d3_hcl(+h,+c,+l)};var d3_hclPrototype=d3_Hcl.prototype=new d3_Color;d3_hclPrototype.brighter=function(k){return d3_hcl(this.h,this.c,Math.min(100,this.l+d3_lab_K*(arguments.length?k:1)))},d3_hclPrototype.darker=function(k){return d3_hcl(this.h,this.c,Math.max(0,this.l-d3_lab_K*(arguments.length?k:1)))},d3_hclPrototype.rgb=function(){return d3_hcl_lab(this.h,this.c,this.l).rgb()},d3.lab=function(l,a,b){return 1===arguments.length?l instanceof d3_Lab?d3_lab(l.l,l.a,l.b):l instanceof d3_Hcl?d3_hcl_lab(l.l,l.c,l.h):d3_rgb_lab((l=d3.rgb(l)).r,l.g,l.b):d3_lab(+l,+a,+b)};var d3_lab_K=18,d3_lab_X=.95047,d3_lab_Y=1,d3_lab_Z=1.08883,d3_labPrototype=d3_Lab.prototype=new d3_Color;d3_labPrototype.brighter=function(k){return d3_lab(Math.min(100,this.l+d3_lab_K*(arguments.length?k:1)),this.a,this.b)},d3_labPrototype.darker=function(k){return d3_lab(Math.max(0,this.l-d3_lab_K*(arguments.length?k:1)),this.a,this.b)},d3_labPrototype.rgb=function(){return d3_lab_rgb(this.l,this.a,this.b)},d3.rgb=function(r,g,b){return 1===arguments.length?r instanceof d3_Rgb?d3_rgb(r.r,r.g,r.b):d3_rgb_parse(""+r,d3_rgb,d3_hsl_rgb):d3_rgb(~~r,~~g,~~b)};var d3_rgbPrototype=d3_Rgb.prototype=new d3_Color;d3_rgbPrototype.brighter=function(k){k=Math.pow(.7,arguments.length?k:1);var r=this.r,g=this.g,b=this.b,i=30;return r||g||b?(r&&i>r&&(r=i),g&&i>g&&(g=i),b&&i>b&&(b=i),d3_rgb(Math.min(255,~~(r/k)),Math.min(255,~~(g/k)),Math.min(255,~~(b/k)))):d3_rgb(i,i,i)},d3_rgbPrototype.darker=function(k){return k=Math.pow(.7,arguments.length?k:1),d3_rgb(~~(k*this.r),~~(k*this.g),~~(k*this.b))},d3_rgbPrototype.hsl=function(){return d3_rgb_hsl(this.r,this.g,this.b)},d3_rgbPrototype.toString=function(){return"#"+d3_rgb_hex(this.r)+d3_rgb_hex(this.g)+d3_rgb_hex(this.b)};var d3_rgb_names=d3.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}); -d3_rgb_names.forEach(function(key,value){d3_rgb_names.set(key,d3_rgbNumber(value))}),d3.functor=d3_functor,d3.xhr=d3_xhrType(d3_identity),d3.dsv=function(delimiter,mimeType){function dsv(url,row,callback){arguments.length<3&&(callback=row,row=null);var xhr=d3_xhr(url,mimeType,null==row?response:typedResponse(row),callback);return xhr.row=function(_){return arguments.length?xhr.response(null==(row=_)?response:typedResponse(_)):row},xhr}function response(request){return dsv.parse(request.responseText)}function typedResponse(f){return function(request){return dsv.parse(request.responseText,f)}}function formatRow(row){return row.map(formatValue).join(delimiter)}function formatValue(text){return reFormat.test(text)?'"'+text.replace(/\"/g,'""')+'"':text}var reFormat=new RegExp('["'+delimiter+"\n]"),delimiterCode=delimiter.charCodeAt(0);return dsv.parse=function(text,f){var o;return dsv.parseRows(text,function(row,i){if(o)return o(row,i-1);var a=new Function("d","return {"+row.map(function(name,i){return JSON.stringify(name)+": d["+i+"]"}).join(",")+"}");o=f?function(row,i){return f(a(row),i)}:a})},dsv.parseRows=function(text,f){function token(){if(I>=N)return EOF;if(eol)return eol=!1,EOL;var j=I;if(34===text.charCodeAt(j)){for(var i=j;i++I;){var c=text.charCodeAt(I++),k=1;if(10===c)eol=!0;else if(13===c)eol=!0,10===text.charCodeAt(I)&&(++I,++k);else if(c!==delimiterCode)continue;return text.substring(j,I-k)}return text.substring(j)}for(var t,eol,EOL={},EOF={},rows=[],N=text.length,I=0,n=0;(t=token())!==EOF;){for(var a=[];t!==EOL&&t!==EOF;)a.push(t),t=token();(!f||(a=f(a,n++)))&&rows.push(a)}return rows},dsv.format=function(rows){if(Array.isArray(rows[0]))return dsv.formatRows(rows);var fieldSet=new d3_Set,fields=[];return rows.forEach(function(row){for(var field in row)fieldSet.has(field)||fields.push(fieldSet.add(field))}),[fields.map(formatValue).join(delimiter)].concat(rows.map(function(row){return fields.map(function(field){return formatValue(row[field])}).join(delimiter)})).join("\n")},dsv.formatRows=function(rows){return rows.map(formatRow).join("\n")},dsv},d3.csv=d3.dsv(",","text/csv"),d3.tsv=d3.dsv(" ","text/tab-separated-values");var d3_timer_queueHead,d3_timer_queueTail,d3_timer_interval,d3_timer_timeout,d3_timer_active,d3_timer_frame=d3_window[d3_vendorSymbol(d3_window,"requestAnimationFrame")]||function(callback){setTimeout(callback,17)};d3.timer=function(callback,delay,then){var n=arguments.length;2>n&&(delay=0),3>n&&(then=Date.now());var time=then+delay,timer={c:callback,t:time,f:!1,n:null};d3_timer_queueTail?d3_timer_queueTail.n=timer:d3_timer_queueHead=timer,d3_timer_queueTail=timer,d3_timer_interval||(d3_timer_timeout=clearTimeout(d3_timer_timeout),d3_timer_interval=1,d3_timer_frame(d3_timer_step))},d3.timer.flush=function(){d3_timer_mark(),d3_timer_sweep()},d3.round=function(x,n){return n?Math.round(x*(n=Math.pow(10,n)))/n:Math.round(x)};var d3_formatPrefixes=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(d3_formatPrefix);d3.formatPrefix=function(value,precision){var i=0;return value&&(0>value&&(value*=-1),precision&&(value=d3.round(value,d3_format_precision(value,precision))),i=1+Math.floor(1e-12+Math.log(value)/Math.LN10),i=Math.max(-24,Math.min(24,3*Math.floor((0>=i?i+1:i-1)/3)))),d3_formatPrefixes[8+i/3]};var d3_format_re=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,d3_format_types=d3.map({b:function(x){return x.toString(2)},c:function(x){return String.fromCharCode(x)},o:function(x){return x.toString(8)},x:function(x){return x.toString(16)},X:function(x){return x.toString(16).toUpperCase()},g:function(x,p){return x.toPrecision(p)},e:function(x,p){return x.toExponential(p)},f:function(x,p){return x.toFixed(p)},r:function(x,p){return(x=d3.round(x,d3_format_precision(x,p))).toFixed(Math.max(0,Math.min(20,d3_format_precision(x*(1+1e-15),p))))}}),d3_time=d3.time={},d3_date=Date;d3_date_utc.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(){d3_time_prototype.setUTCDate.apply(this._,arguments)},setDay:function(){d3_time_prototype.setUTCDay.apply(this._,arguments)},setFullYear:function(){d3_time_prototype.setUTCFullYear.apply(this._,arguments)},setHours:function(){d3_time_prototype.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){d3_time_prototype.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){d3_time_prototype.setUTCMinutes.apply(this._,arguments)},setMonth:function(){d3_time_prototype.setUTCMonth.apply(this._,arguments)},setSeconds:function(){d3_time_prototype.setUTCSeconds.apply(this._,arguments)},setTime:function(){d3_time_prototype.setTime.apply(this._,arguments)}};var d3_time_prototype=Date.prototype;d3_time.year=d3_time_interval(function(date){return date=d3_time.day(date),date.setMonth(0,1),date},function(date,offset){date.setFullYear(date.getFullYear()+offset)},function(date){return date.getFullYear()}),d3_time.years=d3_time.year.range,d3_time.years.utc=d3_time.year.utc.range,d3_time.day=d3_time_interval(function(date){var day=new d3_date(2e3,0);return day.setFullYear(date.getFullYear(),date.getMonth(),date.getDate()),day},function(date,offset){date.setDate(date.getDate()+offset)},function(date){return date.getDate()-1}),d3_time.days=d3_time.day.range,d3_time.days.utc=d3_time.day.utc.range,d3_time.dayOfYear=function(date){var year=d3_time.year(date);return Math.floor((date-year-6e4*(date.getTimezoneOffset()-year.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(day,i){i=7-i;var interval=d3_time[day]=d3_time_interval(function(date){return(date=d3_time.day(date)).setDate(date.getDate()-(date.getDay()+i)%7),date},function(date,offset){date.setDate(date.getDate()+7*Math.floor(offset))},function(date){var day=d3_time.year(date).getDay();return Math.floor((d3_time.dayOfYear(date)+(day+i)%7)/7)-(day!==i)});d3_time[day+"s"]=interval.range,d3_time[day+"s"].utc=interval.utc.range,d3_time[day+"OfYear"]=function(date){var day=d3_time.year(date).getDay();return Math.floor((d3_time.dayOfYear(date)+(day+i)%7)/7)}}),d3_time.week=d3_time.sunday,d3_time.weeks=d3_time.sunday.range,d3_time.weeks.utc=d3_time.sunday.utc.range,d3_time.weekOfYear=d3_time.sundayOfYear;var d3_time_formatPads={"-":"",_:" ",0:"0"},d3_time_numberRe=/^\s*\d+/,d3_time_percentRe=/^%/;d3.locale=function(locale){return{numberFormat:d3_locale_numberFormat(locale),timeFormat:d3_locale_timeFormat(locale)}};var d3_locale_enUS=d3.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"]});d3.format=d3_locale_enUS.numberFormat,d3.geo={},d3_adder.prototype={s:0,t:0,add:function(y){d3_adderSum(y,this.t,d3_adderTemp),d3_adderSum(d3_adderTemp.s,this.s,this),this.s?this.t+=d3_adderTemp.t:this.s=d3_adderTemp.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var d3_adderTemp=new d3_adder;d3.geo.stream=function(object,listener){object&&d3_geo_streamObjectType.hasOwnProperty(object.type)?d3_geo_streamObjectType[object.type](object,listener):d3_geo_streamGeometry(object,listener)};var d3_geo_streamObjectType={Feature:function(feature,listener){d3_geo_streamGeometry(feature.geometry,listener)},FeatureCollection:function(object,listener){for(var features=object.features,i=-1,n=features.length;++iarea?4*π+area:area,d3_geo_area.lineStart=d3_geo_area.lineEnd=d3_geo_area.point=d3_noop}};d3.geo.bounds=function(){function point(λ,φ){ranges.push(range=[λ0=λ,λ1=λ]),φ0>φ&&(φ0=φ),φ>φ1&&(φ1=φ)}function linePoint(λ,φ){var p=d3_geo_cartesian([λ*d3_radians,φ*d3_radians]);if(p0){var normal=d3_geo_cartesianCross(p0,p),equatorial=[normal[1],-normal[0],0],inflection=d3_geo_cartesianCross(equatorial,normal);d3_geo_cartesianNormalize(inflection),inflection=d3_geo_spherical(inflection);var dλ=λ-λ_,s=dλ>0?1:-1,λi=inflection[0]*d3_degrees*s,antimeridian=abs(dλ)>180;if(antimeridian^(λi>s*λ_&&s*λ>λi)){var φi=inflection[1]*d3_degrees;φi>φ1&&(φ1=φi)}else if(λi=(λi+360)%360-180,antimeridian^(λi>s*λ_&&s*λ>λi)){var φi=-inflection[1]*d3_degrees;φ0>φi&&(φ0=φi)}else φ0>φ&&(φ0=φ),φ>φ1&&(φ1=φ);antimeridian?λ_>λ?angle(λ0,λ)>angle(λ0,λ1)&&(λ1=λ):angle(λ,λ1)>angle(λ0,λ1)&&(λ0=λ):λ1>=λ0?(λ0>λ&&(λ0=λ),λ>λ1&&(λ1=λ)):λ>λ_?angle(λ0,λ)>angle(λ0,λ1)&&(λ1=λ):angle(λ,λ1)>angle(λ0,λ1)&&(λ0=λ)}else point(λ,φ);p0=p,λ_=λ}function lineStart(){bound.point=linePoint}function lineEnd(){range[0]=λ0,range[1]=λ1,bound.point=point,p0=null}function ringPoint(λ,φ){if(p0){var dλ=λ-λ_;dλSum+=abs(dλ)>180?dλ+(dλ>0?360:-360):dλ}else λ__=λ,φ__=φ;d3_geo_area.point(λ,φ),linePoint(λ,φ)}function ringStart(){d3_geo_area.lineStart()}function ringEnd(){ringPoint(λ__,φ__),d3_geo_area.lineEnd(),abs(dλSum)>ε&&(λ0=-(λ1=180)),range[0]=λ0,range[1]=λ1,p0=null}function angle(λ0,λ1){return(λ1-=λ0)<0?λ1+360:λ1}function compareRanges(a,b){return a[0]-b[0]}function withinRange(x,range){return range[0]<=range[1]?range[0]<=x&&x<=range[1]:xd3_geo_areaRingSum?(λ0=-(λ1=180),φ0=-(φ1=90)):dλSum>ε?φ1=90:-ε>dλSum&&(φ0=-90),range[0]=λ0,range[1]=λ1}};return function(feature){φ1=λ1=-(λ0=φ0=1/0),ranges=[],d3.geo.stream(feature,bound);var n=ranges.length;if(n){ranges.sort(compareRanges);for(var b,i=1,a=ranges[0],merged=[a];n>i;++i)b=ranges[i],withinRange(b[0],a)||withinRange(b[1],a)?(angle(a[0],b[1])>angle(a[0],a[1])&&(a[1]=b[1]),angle(b[0],a[1])>angle(a[0],a[1])&&(a[0]=b[0])):merged.push(a=b);for(var dλ,b,best=-1/0,n=merged.length-1,i=0,a=merged[n];n>=i;a=b,++i)b=merged[i],(dλ=angle(a[1],b[0]))>best&&(best=dλ,λ0=b[0],λ1=a[1])}return ranges=range=null,1/0===λ0||1/0===φ0?[[0/0,0/0],[0/0,0/0]]:[[λ0,φ0],[λ1,φ1]]}}(),d3.geo.centroid=function(object){d3_geo_centroidW0=d3_geo_centroidW1=d3_geo_centroidX0=d3_geo_centroidY0=d3_geo_centroidZ0=d3_geo_centroidX1=d3_geo_centroidY1=d3_geo_centroidZ1=d3_geo_centroidX2=d3_geo_centroidY2=d3_geo_centroidZ2=0,d3.geo.stream(object,d3_geo_centroid);var x=d3_geo_centroidX2,y=d3_geo_centroidY2,z=d3_geo_centroidZ2,m=x*x+y*y+z*z;return ε2>m&&(x=d3_geo_centroidX1,y=d3_geo_centroidY1,z=d3_geo_centroidZ1,ε>d3_geo_centroidW1&&(x=d3_geo_centroidX0,y=d3_geo_centroidY0,z=d3_geo_centroidZ0),m=x*x+y*y+z*z,ε2>m)?[0/0,0/0]:[Math.atan2(y,x)*d3_degrees,d3_asin(z/Math.sqrt(m))*d3_degrees]};var d3_geo_centroidW0,d3_geo_centroidW1,d3_geo_centroidX0,d3_geo_centroidY0,d3_geo_centroidZ0,d3_geo_centroidX1,d3_geo_centroidY1,d3_geo_centroidZ1,d3_geo_centroidX2,d3_geo_centroidY2,d3_geo_centroidZ2,d3_geo_centroid={sphere:d3_noop,point:d3_geo_centroidPoint,lineStart:d3_geo_centroidLineStart,lineEnd:d3_geo_centroidLineEnd,polygonStart:function(){d3_geo_centroid.lineStart=d3_geo_centroidRingStart},polygonEnd:function(){d3_geo_centroid.lineStart=d3_geo_centroidLineStart}},d3_geo_clipAntimeridian=d3_geo_clip(d3_true,d3_geo_clipAntimeridianLine,d3_geo_clipAntimeridianInterpolate,[-π,-π/2]),d3_geo_clipExtentMAX=1e9;d3.geo.clipExtent=function(){var x0,y0,x1,y1,stream,clip,clipExtent={stream:function(output){return stream&&(stream.valid=!1),stream=clip(output),stream.valid=!0,stream},extent:function(_){return arguments.length?(clip=d3_geo_clipExtent(x0=+_[0][0],y0=+_[0][1],x1=+_[1][0],y1=+_[1][1]),stream&&(stream.valid=!1,stream=null),clipExtent):[[x0,y0],[x1,y1]]}};return clipExtent.extent([[0,0],[960,500]])},(d3.geo.conicEqualArea=function(){return d3_geo_conic(d3_geo_conicEqualArea)}).raw=d3_geo_conicEqualArea,d3.geo.albers=function(){return d3.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},d3.geo.albersUsa=function(){function albersUsa(coordinates){var x=coordinates[0],y=coordinates[1];return point=null,lower48Point(x,y),point||(alaskaPoint(x,y),point)||hawaiiPoint(x,y),point}var point,lower48Point,alaskaPoint,hawaiiPoint,lower48=d3.geo.albers(),alaska=d3.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),hawaii=d3.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),pointStream={point:function(x,y){point=[x,y]}};return albersUsa.invert=function(coordinates){var k=lower48.scale(),t=lower48.translate(),x=(coordinates[0]-t[0])/k,y=(coordinates[1]-t[1])/k;return(y>=.12&&.234>y&&x>=-.425&&-.214>x?alaska:y>=.166&&.234>y&&x>=-.214&&-.115>x?hawaii:lower48).invert(coordinates)},albersUsa.stream=function(stream){var lower48Stream=lower48.stream(stream),alaskaStream=alaska.stream(stream),hawaiiStream=hawaii.stream(stream);return{point:function(x,y){lower48Stream.point(x,y),alaskaStream.point(x,y),hawaiiStream.point(x,y)},sphere:function(){lower48Stream.sphere(),alaskaStream.sphere(),hawaiiStream.sphere()},lineStart:function(){lower48Stream.lineStart(),alaskaStream.lineStart(),hawaiiStream.lineStart()},lineEnd:function(){lower48Stream.lineEnd(),alaskaStream.lineEnd(),hawaiiStream.lineEnd()},polygonStart:function(){lower48Stream.polygonStart(),alaskaStream.polygonStart(),hawaiiStream.polygonStart()},polygonEnd:function(){lower48Stream.polygonEnd(),alaskaStream.polygonEnd(),hawaiiStream.polygonEnd()}}},albersUsa.precision=function(_){return arguments.length?(lower48.precision(_),alaska.precision(_),hawaii.precision(_),albersUsa):lower48.precision()},albersUsa.scale=function(_){return arguments.length?(lower48.scale(_),alaska.scale(.35*_),hawaii.scale(_),albersUsa.translate(lower48.translate())):lower48.scale()},albersUsa.translate=function(_){if(!arguments.length)return lower48.translate();var k=lower48.scale(),x=+_[0],y=+_[1];return lower48Point=lower48.translate(_).clipExtent([[x-.455*k,y-.238*k],[x+.455*k,y+.238*k]]).stream(pointStream).point,alaskaPoint=alaska.translate([x-.307*k,y+.201*k]).clipExtent([[x-.425*k+ε,y+.12*k+ε],[x-.214*k-ε,y+.234*k-ε]]).stream(pointStream).point,hawaiiPoint=hawaii.translate([x-.205*k,y+.212*k]).clipExtent([[x-.214*k+ε,y+.166*k+ε],[x-.115*k-ε,y+.234*k-ε]]).stream(pointStream).point,albersUsa},albersUsa.scale(1070)};var d3_geo_pathAreaSum,d3_geo_pathAreaPolygon,d3_geo_pathBoundsX0,d3_geo_pathBoundsY0,d3_geo_pathBoundsX1,d3_geo_pathBoundsY1,d3_geo_pathArea={point:d3_noop,lineStart:d3_noop,lineEnd:d3_noop,polygonStart:function(){d3_geo_pathAreaPolygon=0,d3_geo_pathArea.lineStart=d3_geo_pathAreaRingStart},polygonEnd:function(){d3_geo_pathArea.lineStart=d3_geo_pathArea.lineEnd=d3_geo_pathArea.point=d3_noop,d3_geo_pathAreaSum+=abs(d3_geo_pathAreaPolygon/2)}},d3_geo_pathBounds={point:d3_geo_pathBoundsPoint,lineStart:d3_noop,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop},d3_geo_pathCentroid={point:d3_geo_pathCentroidPoint,lineStart:d3_geo_pathCentroidLineStart,lineEnd:d3_geo_pathCentroidLineEnd,polygonStart:function(){d3_geo_pathCentroid.lineStart=d3_geo_pathCentroidRingStart},polygonEnd:function(){d3_geo_pathCentroid.point=d3_geo_pathCentroidPoint,d3_geo_pathCentroid.lineStart=d3_geo_pathCentroidLineStart,d3_geo_pathCentroid.lineEnd=d3_geo_pathCentroidLineEnd}};d3.geo.path=function(){function path(object){return object&&("function"==typeof pointRadius&&contextStream.pointRadius(+pointRadius.apply(this,arguments)),cacheStream&&cacheStream.valid||(cacheStream=projectStream(contextStream)),d3.geo.stream(object,cacheStream)),contextStream.result()}function reset(){return cacheStream=null,path}var projection,context,projectStream,contextStream,cacheStream,pointRadius=4.5;return path.area=function(object){return d3_geo_pathAreaSum=0,d3.geo.stream(object,projectStream(d3_geo_pathArea)),d3_geo_pathAreaSum},path.centroid=function(object){return d3_geo_centroidX0=d3_geo_centroidY0=d3_geo_centroidZ0=d3_geo_centroidX1=d3_geo_centroidY1=d3_geo_centroidZ1=d3_geo_centroidX2=d3_geo_centroidY2=d3_geo_centroidZ2=0,d3.geo.stream(object,projectStream(d3_geo_pathCentroid)),d3_geo_centroidZ2?[d3_geo_centroidX2/d3_geo_centroidZ2,d3_geo_centroidY2/d3_geo_centroidZ2]:d3_geo_centroidZ1?[d3_geo_centroidX1/d3_geo_centroidZ1,d3_geo_centroidY1/d3_geo_centroidZ1]:d3_geo_centroidZ0?[d3_geo_centroidX0/d3_geo_centroidZ0,d3_geo_centroidY0/d3_geo_centroidZ0]:[0/0,0/0]},path.bounds=function(object){return d3_geo_pathBoundsX1=d3_geo_pathBoundsY1=-(d3_geo_pathBoundsX0=d3_geo_pathBoundsY0=1/0),d3.geo.stream(object,projectStream(d3_geo_pathBounds)),[[d3_geo_pathBoundsX0,d3_geo_pathBoundsY0],[d3_geo_pathBoundsX1,d3_geo_pathBoundsY1]]},path.projection=function(_){return arguments.length?(projectStream=(projection=_)?_.stream||d3_geo_pathProjectStream(_):d3_identity,reset()):projection},path.context=function(_){return arguments.length?(contextStream=null==(context=_)?new d3_geo_pathBuffer:new d3_geo_pathContext(_),"function"!=typeof pointRadius&&contextStream.pointRadius(pointRadius),reset()):context},path.pointRadius=function(_){return arguments.length?(pointRadius="function"==typeof _?_:(contextStream.pointRadius(+_),+_),path):pointRadius},path.projection(d3.geo.albersUsa()).context(null)},d3.geo.transform=function(methods){return{stream:function(stream){var transform=new d3_geo_transform(stream);for(var k in methods)transform[k]=methods[k];return transform}}},d3_geo_transform.prototype={point:function(x,y){this.stream.point(x,y)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},d3.geo.projection=d3_geo_projection,d3.geo.projectionMutator=d3_geo_projectionMutator,(d3.geo.equirectangular=function(){return d3_geo_projection(d3_geo_equirectangular)}).raw=d3_geo_equirectangular.invert=d3_geo_equirectangular,d3.geo.rotation=function(rotate){function forward(coordinates){return coordinates=rotate(coordinates[0]*d3_radians,coordinates[1]*d3_radians),coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates}return rotate=d3_geo_rotation(rotate[0]%360*d3_radians,rotate[1]*d3_radians,rotate.length>2?rotate[2]*d3_radians:0),forward.invert=function(coordinates){return coordinates=rotate.invert(coordinates[0]*d3_radians,coordinates[1]*d3_radians),coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates},forward},d3_geo_identityRotation.invert=d3_geo_equirectangular,d3.geo.circle=function(){function circle(){var center="function"==typeof origin?origin.apply(this,arguments):origin,rotate=d3_geo_rotation(-center[0]*d3_radians,-center[1]*d3_radians,0).invert,ring=[];return interpolate(null,null,1,{point:function(x,y){ring.push(x=rotate(x,y)),x[0]*=d3_degrees,x[1]*=d3_degrees}}),{type:"Polygon",coordinates:[ring]}}var angle,interpolate,origin=[0,0],precision=6;return circle.origin=function(x){return arguments.length?(origin=x,circle):origin},circle.angle=function(x){return arguments.length?(interpolate=d3_geo_circleInterpolate((angle=+x)*d3_radians,precision*d3_radians),circle):angle},circle.precision=function(_){return arguments.length?(interpolate=d3_geo_circleInterpolate(angle*d3_radians,(precision=+_)*d3_radians),circle):precision},circle.angle(90)},d3.geo.distance=function(a,b){var t,Δλ=(b[0]-a[0])*d3_radians,φ0=a[1]*d3_radians,φ1=b[1]*d3_radians,sinΔλ=Math.sin(Δλ),cosΔλ=Math.cos(Δλ),sinφ0=Math.sin(φ0),cosφ0=Math.cos(φ0),sinφ1=Math.sin(φ1),cosφ1=Math.cos(φ1);return Math.atan2(Math.sqrt((t=cosφ1*sinΔλ)*t+(t=cosφ0*sinφ1-sinφ0*cosφ1*cosΔλ)*t),sinφ0*sinφ1+cosφ0*cosφ1*cosΔλ)},d3.geo.graticule=function(){function graticule(){return{type:"MultiLineString",coordinates:lines()}}function lines(){return d3.range(Math.ceil(X0/DX)*DX,X1,DX).map(X).concat(d3.range(Math.ceil(Y0/DY)*DY,Y1,DY).map(Y)).concat(d3.range(Math.ceil(x0/dx)*dx,x1,dx).filter(function(x){return abs(x%DX)>ε}).map(x)).concat(d3.range(Math.ceil(y0/dy)*dy,y1,dy).filter(function(y){return abs(y%DY)>ε}).map(y))}var x1,x0,X1,X0,y1,y0,Y1,Y0,x,y,X,Y,dx=10,dy=dx,DX=90,DY=360,precision=2.5;return graticule.lines=function(){return lines().map(function(coordinates){return{type:"LineString",coordinates:coordinates}})},graticule.outline=function(){return{type:"Polygon",coordinates:[X(X0).concat(Y(Y1).slice(1),X(X1).reverse().slice(1),Y(Y0).reverse().slice(1))]}},graticule.extent=function(_){return arguments.length?graticule.majorExtent(_).minorExtent(_):graticule.minorExtent()},graticule.majorExtent=function(_){return arguments.length?(X0=+_[0][0],X1=+_[1][0],Y0=+_[0][1],Y1=+_[1][1],X0>X1&&(_=X0,X0=X1,X1=_),Y0>Y1&&(_=Y0,Y0=Y1,Y1=_),graticule.precision(precision)):[[X0,Y0],[X1,Y1]]},graticule.minorExtent=function(_){return arguments.length?(x0=+_[0][0],x1=+_[1][0],y0=+_[0][1],y1=+_[1][1],x0>x1&&(_=x0,x0=x1,x1=_),y0>y1&&(_=y0,y0=y1,y1=_),graticule.precision(precision)):[[x0,y0],[x1,y1]]},graticule.step=function(_){return arguments.length?graticule.majorStep(_).minorStep(_):graticule.minorStep()},graticule.majorStep=function(_){return arguments.length?(DX=+_[0],DY=+_[1],graticule):[DX,DY]},graticule.minorStep=function(_){return arguments.length?(dx=+_[0],dy=+_[1],graticule):[dx,dy]},graticule.precision=function(_){return arguments.length?(precision=+_,x=d3_geo_graticuleX(y0,y1,90),y=d3_geo_graticuleY(x0,x1,precision),X=d3_geo_graticuleX(Y0,Y1,90),Y=d3_geo_graticuleY(X0,X1,precision),graticule):precision},graticule.majorExtent([[-180,-90+ε],[180,90-ε]]).minorExtent([[-180,-80-ε],[180,80+ε]])},d3.geo.greatArc=function(){function greatArc(){return{type:"LineString",coordinates:[source_||source.apply(this,arguments),target_||target.apply(this,arguments)]}}var source_,target_,source=d3_source,target=d3_target;return greatArc.distance=function(){return d3.geo.distance(source_||source.apply(this,arguments),target_||target.apply(this,arguments))},greatArc.source=function(_){return arguments.length?(source=_,source_="function"==typeof _?null:_,greatArc):source},greatArc.target=function(_){return arguments.length?(target=_,target_="function"==typeof _?null:_,greatArc):target},greatArc.precision=function(){return arguments.length?greatArc:0},greatArc},d3.geo.interpolate=function(source,target){return d3_geo_interpolate(source[0]*d3_radians,source[1]*d3_radians,target[0]*d3_radians,target[1]*d3_radians)},d3.geo.length=function(object){return d3_geo_lengthSum=0,d3.geo.stream(object,d3_geo_length),d3_geo_lengthSum};var d3_geo_lengthSum,d3_geo_length={sphere:d3_noop,point:d3_noop,lineStart:d3_geo_lengthLineStart,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop},d3_geo_azimuthalEqualArea=d3_geo_azimuthal(function(cosλcosφ){return Math.sqrt(2/(1+cosλcosφ))},function(ρ){return 2*Math.asin(ρ/2)});(d3.geo.azimuthalEqualArea=function(){return d3_geo_projection(d3_geo_azimuthalEqualArea)}).raw=d3_geo_azimuthalEqualArea;var d3_geo_azimuthalEquidistant=d3_geo_azimuthal(function(cosλcosφ){var c=Math.acos(cosλcosφ);return c&&c/Math.sin(c)},d3_identity);(d3.geo.azimuthalEquidistant=function(){return d3_geo_projection(d3_geo_azimuthalEquidistant)}).raw=d3_geo_azimuthalEquidistant,(d3.geo.conicConformal=function(){return d3_geo_conic(d3_geo_conicConformal)}).raw=d3_geo_conicConformal,(d3.geo.conicEquidistant=function(){return d3_geo_conic(d3_geo_conicEquidistant)}).raw=d3_geo_conicEquidistant;var d3_geo_gnomonic=d3_geo_azimuthal(function(cosλcosφ){return 1/cosλcosφ},Math.atan);(d3.geo.gnomonic=function(){return d3_geo_projection(d3_geo_gnomonic)}).raw=d3_geo_gnomonic,d3_geo_mercator.invert=function(x,y){return[x,2*Math.atan(Math.exp(y))-halfπ]},(d3.geo.mercator=function(){return d3_geo_mercatorProjection(d3_geo_mercator)}).raw=d3_geo_mercator;var d3_geo_orthographic=d3_geo_azimuthal(function(){return 1},Math.asin);(d3.geo.orthographic=function(){return d3_geo_projection(d3_geo_orthographic)}).raw=d3_geo_orthographic;var d3_geo_stereographic=d3_geo_azimuthal(function(cosλcosφ){return 1/(1+cosλcosφ)},function(ρ){return 2*Math.atan(ρ)});(d3.geo.stereographic=function(){return d3_geo_projection(d3_geo_stereographic)}).raw=d3_geo_stereographic,d3_geo_transverseMercator.invert=function(x,y){return[-y,2*Math.atan(Math.exp(x))-halfπ]},(d3.geo.transverseMercator=function(){var projection=d3_geo_mercatorProjection(d3_geo_transverseMercator),center=projection.center,rotate=projection.rotate;return projection.center=function(_){return _?center([-_[1],_[0]]):(_=center(),[-_[1],_[0]])},projection.rotate=function(_){return _?rotate([_[0],_[1],_.length>2?_[2]+90:90]):(_=rotate(),[_[0],_[1],_[2]-90])},projection.rotate([0,0])}).raw=d3_geo_transverseMercator,d3.geom={},d3.geom.hull=function(vertices){function hull(data){if(data.length<3)return[];var i,fx=d3_functor(x),fy=d3_functor(y),n=data.length,points=[],flippedPoints=[];for(i=0;n>i;i++)points.push([+fx.call(this,data[i],i),+fy.call(this,data[i],i),i]);for(points.sort(d3_geom_hullOrder),i=0;n>i;i++)flippedPoints.push([points[i][0],-points[i][1]]);var upper=d3_geom_hullUpper(points),lower=d3_geom_hullUpper(flippedPoints),skipLeft=lower[0]===upper[0],skipRight=lower[lower.length-1]===upper[upper.length-1],polygon=[];for(i=upper.length-1;i>=0;--i)polygon.push(data[points[upper[i]][2]]);for(i=+skipLeft;i=x0&&site.x<=x1&&site.y>=y0&&site.y<=y1?[[x0,y1],[x1,y1],[x1,y0],[x0,y0]]:[];polygon.point=data[i]}),polygons}function sites(data){return data.map(function(d,i){return{x:Math.round(fx(d,i)/ε)*ε,y:Math.round(fy(d,i)/ε)*ε,i:i}})}var x=d3_geom_pointX,y=d3_geom_pointY,fx=x,fy=y,clipExtent=d3_geom_voronoiClipExtent;return points?voronoi(points):(voronoi.links=function(data){return d3_geom_voronoi(sites(data)).edges.filter(function(edge){return edge.l&&edge.r}).map(function(edge){return{source:data[edge.l.i],target:data[edge.r.i]}})},voronoi.triangles=function(data){var triangles=[];return d3_geom_voronoi(sites(data)).cells.forEach(function(cell,i){for(var e0,s0,site=cell.site,edges=cell.edges.sort(d3_geom_voronoiHalfEdgeOrder),j=-1,m=edges.length,e1=edges[m-1].edge,s1=e1.l===site?e1.r:e1.l;++j=sx,bottom=y>=sy,i=(bottom<<1)+right;n.leaf=!1,n=n.nodes[i]||(n.nodes[i]=d3_geom_quadtreeNode()),right?x1=sx:x2=sx,bottom?y1=sy:y2=sy,insert(n,d,x,y,x1,y1,x2,y2)}var d,xs,ys,i,n,x1_,y1_,x2_,y2_,fx=d3_functor(x),fy=d3_functor(y);if(null!=x1)x1_=x1,y1_=y1,x2_=x2,y2_=y2;else if(x2_=y2_=-(x1_=y1_=1/0),xs=[],ys=[],n=data.length,compat)for(i=0;n>i;++i)d=data[i],d.xx2_&&(x2_=d.x),d.y>y2_&&(y2_=d.y),xs.push(d.x),ys.push(d.y);else for(i=0;n>i;++i){var x_=+fx(d=data[i],i),y_=+fy(d,i);x1_>x_&&(x1_=x_),y1_>y_&&(y1_=y_),x_>x2_&&(x2_=x_),y_>y2_&&(y2_=y_),xs.push(x_),ys.push(y_)}var dx=x2_-x1_,dy=y2_-y1_;dx>dy?y2_=y1_+dx:x2_=x1_+dy;var root=d3_geom_quadtreeNode();if(root.add=function(d){insert(root,d,+fx(d,++i),+fy(d,i),x1_,y1_,x2_,y2_)},root.visit=function(f){d3_geom_quadtreeVisit(f,root,x1_,y1_,x2_,y2_)},i=-1,null==x1){for(;++i=0?name.substring(0,i):name,m=i>=0?name.substring(i+1):"in";return t=d3_ease.get(t)||d3_ease_default,m=d3_ease_mode.get(m)||d3_identity,d3_ease_clamp(m(t.apply(null,d3_arraySlice.call(arguments,1))))},d3.interpolateHcl=d3_interpolateHcl,d3.interpolateHsl=d3_interpolateHsl,d3.interpolateLab=d3_interpolateLab,d3.interpolateRound=d3_interpolateRound,d3.transform=function(string){var g=d3_document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(string){if(null!=string){g.setAttribute("transform",string);var t=g.transform.baseVal.consolidate()}return new d3_transform(t?t.matrix:d3_transformIdentity)})(string)},d3_transform.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var d3_transformIdentity={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolateTransform=d3_interpolateTransform,d3.layout={},d3.layout.bundle=function(){return function(links){for(var paths=[],i=-1,n=links.length;++idw*dw/theta2){if(chargeDistance2>dn){var k=quad.charge/dn;node.px-=dx*k,node.py-=dy*k}return!0}if(quad.point&&dn&&chargeDistance2>dn){var k=quad.pointCharge/dn;node.px-=dx*k,node.py-=dy*k}}return!quad.charge}}function dragmove(d){d.px=d3.event.x,d.py=d3.event.y,force.resume()}var drag,alpha,distances,strengths,charges,force={},event=d3.dispatch("start","tick","end"),size=[1,1],friction=.9,linkDistance=d3_layout_forceLinkDistance,linkStrength=d3_layout_forceLinkStrength,charge=-30,chargeDistance2=d3_layout_forceChargeDistance2,gravity=.1,theta2=.64,nodes=[],links=[];return force.tick=function(){if((alpha*=.99)<.005)return event.end({type:"end",alpha:alpha=0}),!0;var q,i,o,s,t,l,k,x,y,n=nodes.length,m=links.length;for(i=0;m>i;++i)o=links[i],s=o.source,t=o.target,x=t.x-s.x,y=t.y-s.y,(l=x*x+y*y)&&(l=alpha*strengths[i]*((l=Math.sqrt(l))-distances[i])/l,x*=l,y*=l,t.x-=x*(k=s.weight/(t.weight+s.weight)),t.y-=y*k,s.x+=x*(k=1-k),s.y+=y*k);if((k=alpha*gravity)&&(x=size[0]/2,y=size[1]/2,i=-1,k))for(;++i0?x:0:x>0&&(event.start({type:"start",alpha:alpha=x}),d3.timer(force.tick)),force):alpha},force.start=function(){function position(dimension,size){if(!neighbors){for(neighbors=new Array(n),j=0;n>j;++j)neighbors[j]=[];for(j=0;m>j;++j){var o=links[j];neighbors[o.source.index].push(o.target),neighbors[o.target.index].push(o.source)}}for(var x,candidates=neighbors[i],j=-1,m=candidates.length;++ji;++i)(o=nodes[i]).index=i,o.weight=0;for(i=0;m>i;++i)o=links[i],"number"==typeof o.source&&(o.source=nodes[o.source]),"number"==typeof o.target&&(o.target=nodes[o.target]),++o.source.weight,++o.target.weight;for(i=0;n>i;++i)o=nodes[i],isNaN(o.x)&&(o.x=position("x",w)),isNaN(o.y)&&(o.y=position("y",h)),isNaN(o.px)&&(o.px=o.x),isNaN(o.py)&&(o.py=o.y);if(distances=[],"function"==typeof linkDistance)for(i=0;m>i;++i)distances[i]=+linkDistance.call(this,links[i],i);else for(i=0;m>i;++i)distances[i]=linkDistance;if(strengths=[],"function"==typeof linkStrength)for(i=0;m>i;++i)strengths[i]=+linkStrength.call(this,links[i],i);else for(i=0;m>i;++i)strengths[i]=linkStrength;if(charges=[],"function"==typeof charge)for(i=0;n>i;++i)charges[i]=+charge.call(this,nodes[i],i);else for(i=0;n>i;++i)charges[i]=charge;return force.resume()},force.resume=function(){return force.alpha(.1)},force.stop=function(){return force.alpha(0)},force.drag=function(){return drag||(drag=d3.behavior.drag().origin(d3_identity).on("dragstart.force",d3_layout_forceDragstart).on("drag.force",dragmove).on("dragend.force",d3_layout_forceDragend)),arguments.length?void this.on("mouseover.force",d3_layout_forceMouseover).on("mouseout.force",d3_layout_forceMouseout).call(drag):drag},d3.rebind(force,event,"on")};var d3_layout_forceLinkDistance=20,d3_layout_forceLinkStrength=1,d3_layout_forceChargeDistance2=1/0;d3.layout.hierarchy=function(){function recurse(node,depth,nodes){var childs=children.call(hierarchy,node,depth);if(node.depth=depth,nodes.push(node),childs&&(n=childs.length)){for(var n,d,i=-1,c=node.children=new Array(n),v=0,j=depth+1;++ij;++j)for(out.call(stack,series[0][j],o=offsets[j],points[0][j][1]),i=1;n>i;++i)out.call(stack,series[i][j],o+=points[i-1][j][1],points[i][j][1]);return data}var values=d3_identity,order=d3_layout_stackOrderDefault,offset=d3_layout_stackOffsetZero,out=d3_layout_stackOut,x=d3_layout_stackX,y=d3_layout_stackY;return stack.values=function(x){return arguments.length?(values=x,stack):values},stack.order=function(x){return arguments.length?(order="function"==typeof x?x:d3_layout_stackOrders.get(x)||d3_layout_stackOrderDefault,stack):order},stack.offset=function(x){return arguments.length?(offset="function"==typeof x?x:d3_layout_stackOffsets.get(x)||d3_layout_stackOffsetZero,stack):offset},stack.x=function(z){return arguments.length?(x=z,stack):x},stack.y=function(z){return arguments.length?(y=z,stack):y},stack.out=function(z){return arguments.length?(out=z,stack):out},stack};var d3_layout_stackOrders=d3.map({"inside-out":function(data){var i,j,n=data.length,max=data.map(d3_layout_stackMaxIndex),sums=data.map(d3_layout_stackReduceSum),index=d3.range(n).sort(function(a,b){return max[a]-max[b]}),top=0,bottom=0,tops=[],bottoms=[];for(i=0;n>i;++i)j=index[i],bottom>top?(top+=sums[j],tops.push(j)):(bottom+=sums[j],bottoms.push(j));return bottoms.reverse().concat(tops)},reverse:function(data){return d3.range(data.length).reverse()},"default":d3_layout_stackOrderDefault}),d3_layout_stackOffsets=d3.map({silhouette:function(data){var i,j,o,n=data.length,m=data[0].length,sums=[],max=0,y0=[];for(j=0;m>j;++j){for(i=0,o=0;n>i;i++)o+=data[i][j][1];o>max&&(max=o),sums.push(o)}for(j=0;m>j;++j)y0[j]=(max-sums[j])/2;return y0},wiggle:function(data){var i,j,k,s1,s2,s3,dx,o,o0,n=data.length,x=data[0],m=x.length,y0=[];for(y0[0]=o=o0=0,j=1;m>j;++j){for(i=0,s1=0;n>i;++i)s1+=data[i][j][1];for(i=0,s2=0,dx=x[j][0]-x[j-1][0];n>i;++i){for(k=0,s3=(data[i][j][1]-data[i][j-1][1])/(2*dx);i>k;++k)s3+=(data[k][j][1]-data[k][j-1][1])/dx;s2+=s3*data[i][j][1]}y0[j]=o-=s1?s2/s1*dx:0,o0>o&&(o0=o)}for(j=0;m>j;++j)y0[j]-=o0;return y0},expand:function(data){var i,j,o,n=data.length,m=data[0].length,k=1/n,y0=[];for(j=0;m>j;++j){for(i=0,o=0;n>i;i++)o+=data[i][j][1];if(o)for(i=0;n>i;i++)data[i][j][1]/=o;else for(i=0;n>i;i++)data[i][j][1]=k}for(j=0;m>j;++j)y0[j]=0;return y0},zero:d3_layout_stackOffsetZero});d3.layout.histogram=function(){function histogram(data,i){for(var bin,x,bins=[],values=data.map(valuer,this),range=ranger.call(this,values,i),thresholds=binner.call(this,range,values,i),i=-1,n=values.length,m=thresholds.length-1,k=frequency?1:1/n;++i0)for(i=-1;++i=range[0]&&x<=range[1]&&(bin=bins[d3.bisect(thresholds,x,1,m)-1],bin.y+=k,bin.push(data[i]));return bins}var frequency=!0,valuer=Number,ranger=d3_layout_histogramRange,binner=d3_layout_histogramBinSturges;return histogram.value=function(x){return arguments.length?(valuer=x,histogram):valuer},histogram.range=function(x){return arguments.length?(ranger=d3_functor(x),histogram):ranger},histogram.bins=function(x){return arguments.length?(binner="number"==typeof x?function(range){return d3_layout_histogramBinFixed(range,x)}:d3_functor(x),histogram):binner},histogram.frequency=function(x){return arguments.length?(frequency=!!x,histogram):frequency},histogram},d3.layout.tree=function(){function tree(d,i){function firstWalk(node,previousSibling){var children=node.children,layout=node._tree;if(children&&(n=children.length)){for(var n,previousChild,child,firstChild=children[0],ancestor=firstChild,i=-1;++i0&&(d3_layout_treeMove(d3_layout_treeAncestor(vim,node,ancestor),node,shift),sip+=shift,sop+=shift),sim+=vim._tree.mod,sip+=vip._tree.mod,som+=vom._tree.mod,sop+=vop._tree.mod;vim&&!d3_layout_treeRight(vop)&&(vop._tree.thread=vim,vop._tree.mod+=sim-sop),vip&&!d3_layout_treeLeft(vom)&&(vom._tree.thread=vip,vom._tree.mod+=sip-som,ancestor=node)}return ancestor}var nodes=hierarchy.call(this,d,i),root=nodes[0];d3_layout_treeVisitAfter(root,function(node,previousSibling){node._tree={ancestor:node,prelim:0,mod:0,change:0,shift:0,number:previousSibling?previousSibling._tree.number+1:0}}),firstWalk(root),secondWalk(root,-root._tree.prelim);var left=d3_layout_treeSearch(root,d3_layout_treeLeftmost),right=d3_layout_treeSearch(root,d3_layout_treeRightmost),deep=d3_layout_treeSearch(root,d3_layout_treeDeepest),x0=left.x-separation(left,right)/2,x1=right.x+separation(right,left)/2,y1=deep.depth||1;return d3_layout_treeVisitAfter(root,nodeSize?function(node){node.x*=size[0],node.y=node.depth*size[1],delete node._tree}:function(node){node.x=(node.x-x0)/(x1-x0)*size[0],node.y=node.depth/y1*size[1],delete node._tree}),nodes}var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=!1;return tree.separation=function(x){return arguments.length?(separation=x,tree):separation},tree.size=function(x){return arguments.length?(nodeSize=null==(size=x),tree):nodeSize?null:size},tree.nodeSize=function(x){return arguments.length?(nodeSize=null!=(size=x),tree):nodeSize?size:null},d3_layout_hierarchyRebind(tree,hierarchy)},d3.layout.pack=function(){function pack(d,i){var nodes=hierarchy.call(this,d,i),root=nodes[0],w=size[0],h=size[1],r=null==radius?Math.sqrt:"function"==typeof radius?radius:function(){return radius};if(root.x=root.y=0,d3_layout_treeVisitAfter(root,function(d){d.r=+r(d.value)}),d3_layout_treeVisitAfter(root,d3_layout_packSiblings),padding){var dr=padding*(radius?1:Math.max(2*root.r/w,2*root.r/h))/2;d3_layout_treeVisitAfter(root,function(d){d.r+=dr}),d3_layout_treeVisitAfter(root,d3_layout_packSiblings),d3_layout_treeVisitAfter(root,function(d){d.r-=dr})}return d3_layout_packTransform(root,w/2,h/2,radius?1:1/Math.max(2*root.r/w,2*root.r/h)),nodes}var radius,hierarchy=d3.layout.hierarchy().sort(d3_layout_packSort),padding=0,size=[1,1];return pack.size=function(_){return arguments.length?(size=_,pack):size},pack.radius=function(_){return arguments.length?(radius=null==_||"function"==typeof _?_:+_,pack):radius},pack.padding=function(_){return arguments.length?(padding=+_,pack):padding},d3_layout_hierarchyRebind(pack,hierarchy)},d3.layout.cluster=function(){function cluster(d,i){var previousNode,nodes=hierarchy.call(this,d,i),root=nodes[0],x=0;d3_layout_treeVisitAfter(root,function(node){var children=node.children;children&&children.length?(node.x=d3_layout_clusterX(children),node.y=d3_layout_clusterY(children)):(node.x=previousNode?x+=separation(node,previousNode):0,node.y=0,previousNode=node)});var left=d3_layout_clusterLeft(root),right=d3_layout_clusterRight(root),x0=left.x-separation(left,right)/2,x1=right.x+separation(right,left)/2;return d3_layout_treeVisitAfter(root,nodeSize?function(node){node.x=(node.x-root.x)*size[0],node.y=(root.y-node.y)*size[1]}:function(node){node.x=(node.x-x0)/(x1-x0)*size[0],node.y=(1-(root.y?node.y/root.y:1))*size[1]}),nodes}var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=!1;return cluster.separation=function(x){return arguments.length?(separation=x,cluster):separation},cluster.size=function(x){return arguments.length?(nodeSize=null==(size=x),cluster):nodeSize?null:size},cluster.nodeSize=function(x){return arguments.length?(nodeSize=null!=(size=x),cluster):nodeSize?size:null},d3_layout_hierarchyRebind(cluster,hierarchy)},d3.layout.treemap=function(){function scale(children,k){for(var child,area,i=-1,n=children.length;++ik?0:k),child.area=isNaN(area)||0>=area?0:area}function squarify(node){var children=node.children;if(children&&children.length){var child,score,n,rect=pad(node),row=[],remaining=children.slice(),best=1/0,u="slice"===mode?rect.dx:"dice"===mode?rect.dy:"slice-dice"===mode?1&node.depth?rect.dy:rect.dx:Math.min(rect.dx,rect.dy);for(scale(remaining,rect.dx*rect.dy/node.value),row.area=0;(n=remaining.length)>0;)row.push(child=remaining[n-1]),row.area+=child.area,"squarify"!==mode||(score=worst(row,u))<=best?(remaining.pop(),best=score):(row.area-=row.pop().area,position(row,u,rect,!1),u=Math.min(rect.dx,rect.dy),row.length=row.area=0,best=1/0);row.length&&(position(row,u,rect,!0),row.length=row.area=0),children.forEach(squarify)}}function stickify(node){var children=node.children;if(children&&children.length){var child,rect=pad(node),remaining=children.slice(),row=[];for(scale(remaining,rect.dx*rect.dy/node.value),row.area=0;child=remaining.pop();)row.push(child),row.area+=child.area,null!=child.z&&(position(row,child.z?rect.dx:rect.dy,rect,!remaining.length),row.length=row.area=0);children.forEach(stickify)}}function worst(row,u){for(var r,s=row.area,rmax=0,rmin=1/0,i=-1,n=row.length;++ir&&(rmin=r),r>rmax&&(rmax=r));return s*=s,u*=u,s?Math.max(u*rmax*ratio/s,s/(u*rmin*ratio)):1/0}function position(row,u,rect,flush){var o,i=-1,n=row.length,x=rect.x,y=rect.y,v=u?round(row.area/u):0;if(u==rect.dx){for((flush||v>rect.dy)&&(v=rect.dy);++irect.dx)&&(v=rect.dx);++in&&(σ=1),1>n&&(µ=0),function(){var x,y,r;do x=2*Math.random()-1,y=2*Math.random()-1,r=x*x+y*y;while(!r||r>1);return µ+σ*x*Math.sqrt(-2*Math.log(r)/r)}},logNormal:function(){var random=d3.random.normal.apply(d3,arguments);return function(){return Math.exp(random())}},bates:function(m){var random=d3.random.irwinHall(m);return function(){return random()/m}},irwinHall:function(m){return function(){for(var s=0,j=0;m>j;j++)s+=Math.random();return s}}},d3.scale={};var d3_scale_niceIdentity={floor:d3_identity,ceil:d3_identity};d3.scale.linear=function(){return d3_scale_linear([0,1],[0,1],d3_interpolate,!1)};var d3_scale_linearFormatSignificant={s:1,g:1,p:1,r:1,e:1};d3.scale.log=function(){return d3_scale_log(d3.scale.linear().domain([0,1]),10,!0,[1,10])};var d3_scale_logFormat=d3.format(".0e"),d3_scale_logNiceNegative={floor:function(x){return-Math.ceil(-x)},ceil:function(x){return-Math.floor(-x)}};d3.scale.pow=function(){return d3_scale_pow(d3.scale.linear(),1,[0,1])},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return d3_scale_ordinal([],{t:"range",a:[[]]})},d3.scale.category10=function(){return d3.scale.ordinal().range(d3_category10)},d3.scale.category20=function(){return d3.scale.ordinal().range(d3_category20)},d3.scale.category20b=function(){return d3.scale.ordinal().range(d3_category20b)},d3.scale.category20c=function(){return d3.scale.ordinal().range(d3_category20c)};var d3_category10=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(d3_rgbString),d3_category20=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(d3_rgbString),d3_category20b=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(d3_rgbString),d3_category20c=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(d3_rgbString);d3.scale.quantile=function(){return d3_scale_quantile([],[])},d3.scale.quantize=function(){return d3_scale_quantize(0,1,[0,1])},d3.scale.threshold=function(){return d3_scale_threshold([.5],[0,1])},d3.scale.identity=function(){return d3_scale_identity([0,1])},d3.svg={},d3.svg.arc=function(){function arc(){var r0=innerRadius.apply(this,arguments),r1=outerRadius.apply(this,arguments),a0=startAngle.apply(this,arguments)+d3_svg_arcOffset,a1=endAngle.apply(this,arguments)+d3_svg_arcOffset,da=(a0>a1&&(da=a0,a0=a1,a1=da),a1-a0),df=π>da?"0":"1",c0=Math.cos(a0),s0=Math.sin(a0),c1=Math.cos(a1),s1=Math.sin(a1);return da>=d3_svg_arcMax?r0?"M0,"+r1+"A"+r1+","+r1+" 0 1,1 0,"+-r1+"A"+r1+","+r1+" 0 1,1 0,"+r1+"M0,"+r0+"A"+r0+","+r0+" 0 1,0 0,"+-r0+"A"+r0+","+r0+" 0 1,0 0,"+r0+"Z":"M0,"+r1+"A"+r1+","+r1+" 0 1,1 0,"+-r1+"A"+r1+","+r1+" 0 1,1 0,"+r1+"Z":r0?"M"+r1*c0+","+r1*s0+"A"+r1+","+r1+" 0 "+df+",1 "+r1*c1+","+r1*s1+"L"+r0*c1+","+r0*s1+"A"+r0+","+r0+" 0 "+df+",0 "+r0*c0+","+r0*s0+"Z":"M"+r1*c0+","+r1*s0+"A"+r1+","+r1+" 0 "+df+",1 "+r1*c1+","+r1*s1+"L0,0Z"}var innerRadius=d3_svg_arcInnerRadius,outerRadius=d3_svg_arcOuterRadius,startAngle=d3_svg_arcStartAngle,endAngle=d3_svg_arcEndAngle;return arc.innerRadius=function(v){return arguments.length?(innerRadius=d3_functor(v),arc):innerRadius},arc.outerRadius=function(v){return arguments.length?(outerRadius=d3_functor(v),arc):outerRadius},arc.startAngle=function(v){return arguments.length?(startAngle=d3_functor(v),arc):startAngle},arc.endAngle=function(v){return arguments.length?(endAngle=d3_functor(v),arc):endAngle},arc.centroid=function(){var r=(innerRadius.apply(this,arguments)+outerRadius.apply(this,arguments))/2,a=(startAngle.apply(this,arguments)+endAngle.apply(this,arguments))/2+d3_svg_arcOffset;return[Math.cos(a)*r,Math.sin(a)*r]},arc};var d3_svg_arcOffset=-halfπ,d3_svg_arcMax=τ-ε;d3.svg.line=function(){return d3_svg_line(d3_identity)};var d3_svg_lineInterpolators=d3.map({linear:d3_svg_lineLinear,"linear-closed":d3_svg_lineLinearClosed,step:d3_svg_lineStep,"step-before":d3_svg_lineStepBefore,"step-after":d3_svg_lineStepAfter,basis:d3_svg_lineBasis,"basis-open":d3_svg_lineBasisOpen,"basis-closed":d3_svg_lineBasisClosed,bundle:d3_svg_lineBundle,cardinal:d3_svg_lineCardinal,"cardinal-open":d3_svg_lineCardinalOpen,"cardinal-closed":d3_svg_lineCardinalClosed,monotone:d3_svg_lineMonotone}); +d3_rgb_names.forEach(function(key,value){d3_rgb_names.set(key,d3_rgbNumber(value))}),d3.functor=d3_functor,d3.xhr=d3_xhrType(d3_identity),d3.dsv=function(delimiter,mimeType){function dsv(url,row,callback){arguments.length<3&&(callback=row,row=null);var xhr=d3_xhr(url,mimeType,null==row?response:typedResponse(row),callback);return xhr.row=function(_){return arguments.length?xhr.response(null==(row=_)?response:typedResponse(_)):row},xhr}function response(request){return dsv.parse(request.responseText)}function typedResponse(f){return function(request){return dsv.parse(request.responseText,f)}}function formatRow(row){return row.map(formatValue).join(delimiter)}function formatValue(text){return reFormat.test(text)?'"'+text.replace(/\"/g,'""')+'"':text}var reFormat=new RegExp('["'+delimiter+"\n]"),delimiterCode=delimiter.charCodeAt(0);return dsv.parse=function(text,f){var o;return dsv.parseRows(text,function(row,i){if(o)return o(row,i-1);var a=new Function("d","return {"+row.map(function(name,i){return JSON.stringify(name)+": d["+i+"]"}).join(",")+"}");o=f?function(row,i){return f(a(row),i)}:a})},dsv.parseRows=function(text,f){function token(){if(I>=N)return EOF;if(eol)return eol=!1,EOL;var j=I;if(34===text.charCodeAt(j)){for(var i=j;i++I;){var c=text.charCodeAt(I++),k=1;if(10===c)eol=!0;else if(13===c)eol=!0,10===text.charCodeAt(I)&&(++I,++k);else if(c!==delimiterCode)continue;return text.substring(j,I-k)}return text.substring(j)}for(var t,eol,EOL={},EOF={},rows=[],N=text.length,I=0,n=0;(t=token())!==EOF;){for(var a=[];t!==EOL&&t!==EOF;)a.push(t),t=token();(!f||(a=f(a,n++)))&&rows.push(a)}return rows},dsv.format=function(rows){if(Array.isArray(rows[0]))return dsv.formatRows(rows);var fieldSet=new d3_Set,fields=[];return rows.forEach(function(row){for(var field in row)fieldSet.has(field)||fields.push(fieldSet.add(field))}),[fields.map(formatValue).join(delimiter)].concat(rows.map(function(row){return fields.map(function(field){return formatValue(row[field])}).join(delimiter)})).join("\n")},dsv.formatRows=function(rows){return rows.map(formatRow).join("\n")},dsv},d3.csv=d3.dsv(",","text/csv"),d3.tsv=d3.dsv(" ","text/tab-separated-values");var d3_timer_queueHead,d3_timer_queueTail,d3_timer_interval,d3_timer_timeout,d3_timer_active,d3_timer_frame=d3_window[d3_vendorSymbol(d3_window,"requestAnimationFrame")]||function(callback){setTimeout(callback,17)};d3.timer=function(callback,delay,then){var n=arguments.length;2>n&&(delay=0),3>n&&(then=Date.now());var time=then+delay,timer={c:callback,t:time,f:!1,n:null};d3_timer_queueTail?d3_timer_queueTail.n=timer:d3_timer_queueHead=timer,d3_timer_queueTail=timer,d3_timer_interval||(d3_timer_timeout=clearTimeout(d3_timer_timeout),d3_timer_interval=1,d3_timer_frame(d3_timer_step))},d3.timer.flush=function(){d3_timer_mark(),d3_timer_sweep()},d3.round=function(x,n){return n?Math.round(x*(n=Math.pow(10,n)))/n:Math.round(x)};var d3_formatPrefixes=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(d3_formatPrefix);d3.formatPrefix=function(value,precision){var i=0;return value&&(0>value&&(value*=-1),precision&&(value=d3.round(value,d3_format_precision(value,precision))),i=1+Math.floor(1e-12+Math.log(value)/Math.LN10),i=Math.max(-24,Math.min(24,3*Math.floor((0>=i?i+1:i-1)/3)))),d3_formatPrefixes[8+i/3]};var d3_format_re=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,d3_format_types=d3.map({b:function(x){return x.toString(2)},c:function(x){return String.fromCharCode(x)},o:function(x){return x.toString(8)},x:function(x){return x.toString(16)},X:function(x){return x.toString(16).toUpperCase()},g:function(x,p){return x.toPrecision(p)},e:function(x,p){return x.toExponential(p)},f:function(x,p){return x.toFixed(p)},r:function(x,p){return(x=d3.round(x,d3_format_precision(x,p))).toFixed(Math.max(0,Math.min(20,d3_format_precision(x*(1+1e-15),p))))}}),d3_time=d3.time={},d3_date=Date;d3_date_utc.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(){d3_time_prototype.setUTCDate.apply(this._,arguments)},setDay:function(){d3_time_prototype.setUTCDay.apply(this._,arguments)},setFullYear:function(){d3_time_prototype.setUTCFullYear.apply(this._,arguments)},setHours:function(){d3_time_prototype.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){d3_time_prototype.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){d3_time_prototype.setUTCMinutes.apply(this._,arguments)},setMonth:function(){d3_time_prototype.setUTCMonth.apply(this._,arguments)},setSeconds:function(){d3_time_prototype.setUTCSeconds.apply(this._,arguments)},setTime:function(){d3_time_prototype.setTime.apply(this._,arguments)}};var d3_time_prototype=Date.prototype;d3_time.year=d3_time_interval(function(date){return date=d3_time.day(date),date.setMonth(0,1),date},function(date,offset){date.setFullYear(date.getFullYear()+offset)},function(date){return date.getFullYear()}),d3_time.years=d3_time.year.range,d3_time.years.utc=d3_time.year.utc.range,d3_time.day=d3_time_interval(function(date){var day=new d3_date(2e3,0);return day.setFullYear(date.getFullYear(),date.getMonth(),date.getDate()),day},function(date,offset){date.setDate(date.getDate()+offset)},function(date){return date.getDate()-1}),d3_time.days=d3_time.day.range,d3_time.days.utc=d3_time.day.utc.range,d3_time.dayOfYear=function(date){var year=d3_time.year(date);return Math.floor((date-year-6e4*(date.getTimezoneOffset()-year.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(day,i){i=7-i;var interval=d3_time[day]=d3_time_interval(function(date){return(date=d3_time.day(date)).setDate(date.getDate()-(date.getDay()+i)%7),date},function(date,offset){date.setDate(date.getDate()+7*Math.floor(offset))},function(date){var day=d3_time.year(date).getDay();return Math.floor((d3_time.dayOfYear(date)+(day+i)%7)/7)-(day!==i)});d3_time[day+"s"]=interval.range,d3_time[day+"s"].utc=interval.utc.range,d3_time[day+"OfYear"]=function(date){var day=d3_time.year(date).getDay();return Math.floor((d3_time.dayOfYear(date)+(day+i)%7)/7)}}),d3_time.week=d3_time.sunday,d3_time.weeks=d3_time.sunday.range,d3_time.weeks.utc=d3_time.sunday.utc.range,d3_time.weekOfYear=d3_time.sundayOfYear;var d3_time_formatPads={"-":"",_:" ",0:"0"},d3_time_numberRe=/^\s*\d+/,d3_time_percentRe=/^%/;d3.locale=function(locale){return{numberFormat:d3_locale_numberFormat(locale),timeFormat:d3_locale_timeFormat(locale)}};var d3_locale_enUS=d3.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"]});d3.format=d3_locale_enUS.numberFormat,d3.geo={},d3_adder.prototype={s:0,t:0,add:function(y){d3_adderSum(y,this.t,d3_adderTemp),d3_adderSum(d3_adderTemp.s,this.s,this),this.s?this.t+=d3_adderTemp.t:this.s=d3_adderTemp.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var d3_adderTemp=new d3_adder;d3.geo.stream=function(object,listener){object&&d3_geo_streamObjectType.hasOwnProperty(object.type)?d3_geo_streamObjectType[object.type](object,listener):d3_geo_streamGeometry(object,listener)};var d3_geo_streamObjectType={Feature:function(feature,listener){d3_geo_streamGeometry(feature.geometry,listener)},FeatureCollection:function(object,listener){for(var features=object.features,i=-1,n=features.length;++iarea?4*π+area:area,d3_geo_area.lineStart=d3_geo_area.lineEnd=d3_geo_area.point=d3_noop}};d3.geo.bounds=function(){function point(λ,φ){ranges.push(range=[λ0=λ,λ1=λ]),φ0>φ&&(φ0=φ),φ>φ1&&(φ1=φ)}function linePoint(λ,φ){var p=d3_geo_cartesian([λ*d3_radians,φ*d3_radians]);if(p0){var normal=d3_geo_cartesianCross(p0,p),equatorial=[normal[1],-normal[0],0],inflection=d3_geo_cartesianCross(equatorial,normal);d3_geo_cartesianNormalize(inflection),inflection=d3_geo_spherical(inflection);var dλ=λ-λ_,s=dλ>0?1:-1,λi=inflection[0]*d3_degrees*s,antimeridian=abs(dλ)>180;if(antimeridian^(λi>s*λ_&&s*λ>λi)){var φi=inflection[1]*d3_degrees;φi>φ1&&(φ1=φi)}else if(λi=(λi+360)%360-180,antimeridian^(λi>s*λ_&&s*λ>λi)){var φi=-inflection[1]*d3_degrees;φ0>φi&&(φ0=φi)}else φ0>φ&&(φ0=φ),φ>φ1&&(φ1=φ);antimeridian?λ_>λ?angle(λ0,λ)>angle(λ0,λ1)&&(λ1=λ):angle(λ,λ1)>angle(λ0,λ1)&&(λ0=λ):λ1>=λ0?(λ0>λ&&(λ0=λ),λ>λ1&&(λ1=λ)):λ>λ_?angle(λ0,λ)>angle(λ0,λ1)&&(λ1=λ):angle(λ,λ1)>angle(λ0,λ1)&&(λ0=λ)}else point(λ,φ);p0=p,λ_=λ}function lineStart(){bound.point=linePoint}function lineEnd(){range[0]=λ0,range[1]=λ1,bound.point=point,p0=null}function ringPoint(λ,φ){if(p0){var dλ=λ-λ_;dλSum+=abs(dλ)>180?dλ+(dλ>0?360:-360):dλ}else λ__=λ,φ__=φ;d3_geo_area.point(λ,φ),linePoint(λ,φ)}function ringStart(){d3_geo_area.lineStart()}function ringEnd(){ringPoint(λ__,φ__),d3_geo_area.lineEnd(),abs(dλSum)>ε&&(λ0=-(λ1=180)),range[0]=λ0,range[1]=λ1,p0=null}function angle(λ0,λ1){return(λ1-=λ0)<0?λ1+360:λ1}function compareRanges(a,b){return a[0]-b[0]}function withinRange(x,range){return range[0]<=range[1]?range[0]<=x&&x<=range[1]:xd3_geo_areaRingSum?(λ0=-(λ1=180),φ0=-(φ1=90)):dλSum>ε?φ1=90:-ε>dλSum&&(φ0=-90),range[0]=λ0,range[1]=λ1}};return function(feature){φ1=λ1=-(λ0=φ0=1/0),ranges=[],d3.geo.stream(feature,bound);var n=ranges.length;if(n){ranges.sort(compareRanges);for(var b,i=1,a=ranges[0],merged=[a];n>i;++i)b=ranges[i],withinRange(b[0],a)||withinRange(b[1],a)?(angle(a[0],b[1])>angle(a[0],a[1])&&(a[1]=b[1]),angle(b[0],a[1])>angle(a[0],a[1])&&(a[0]=b[0])):merged.push(a=b);for(var dλ,b,best=-1/0,n=merged.length-1,i=0,a=merged[n];n>=i;a=b,++i)b=merged[i],(dλ=angle(a[1],b[0]))>best&&(best=dλ,λ0=b[0],λ1=a[1])}return ranges=range=null,1/0===λ0||1/0===φ0?[[0/0,0/0],[0/0,0/0]]:[[λ0,φ0],[λ1,φ1]]}}(),d3.geo.centroid=function(object){d3_geo_centroidW0=d3_geo_centroidW1=d3_geo_centroidX0=d3_geo_centroidY0=d3_geo_centroidZ0=d3_geo_centroidX1=d3_geo_centroidY1=d3_geo_centroidZ1=d3_geo_centroidX2=d3_geo_centroidY2=d3_geo_centroidZ2=0,d3.geo.stream(object,d3_geo_centroid);var x=d3_geo_centroidX2,y=d3_geo_centroidY2,z=d3_geo_centroidZ2,m=x*x+y*y+z*z;return ε2>m&&(x=d3_geo_centroidX1,y=d3_geo_centroidY1,z=d3_geo_centroidZ1,ε>d3_geo_centroidW1&&(x=d3_geo_centroidX0,y=d3_geo_centroidY0,z=d3_geo_centroidZ0),m=x*x+y*y+z*z,ε2>m)?[0/0,0/0]:[Math.atan2(y,x)*d3_degrees,d3_asin(z/Math.sqrt(m))*d3_degrees]};var d3_geo_centroidW0,d3_geo_centroidW1,d3_geo_centroidX0,d3_geo_centroidY0,d3_geo_centroidZ0,d3_geo_centroidX1,d3_geo_centroidY1,d3_geo_centroidZ1,d3_geo_centroidX2,d3_geo_centroidY2,d3_geo_centroidZ2,d3_geo_centroid={sphere:d3_noop,point:d3_geo_centroidPoint,lineStart:d3_geo_centroidLineStart,lineEnd:d3_geo_centroidLineEnd,polygonStart:function(){d3_geo_centroid.lineStart=d3_geo_centroidRingStart},polygonEnd:function(){d3_geo_centroid.lineStart=d3_geo_centroidLineStart}},d3_geo_clipAntimeridian=d3_geo_clip(d3_true,d3_geo_clipAntimeridianLine,d3_geo_clipAntimeridianInterpolate,[-π,-π/2]),d3_geo_clipExtentMAX=1e9;d3.geo.clipExtent=function(){var x0,y0,x1,y1,stream,clip,clipExtent={stream:function(output){return stream&&(stream.valid=!1),stream=clip(output),stream.valid=!0,stream},extent:function(_){return arguments.length?(clip=d3_geo_clipExtent(x0=+_[0][0],y0=+_[0][1],x1=+_[1][0],y1=+_[1][1]),stream&&(stream.valid=!1,stream=null),clipExtent):[[x0,y0],[x1,y1]]}};return clipExtent.extent([[0,0],[960,500]])},(d3.geo.conicEqualArea=function(){return d3_geo_conic(d3_geo_conicEqualArea)}).raw=d3_geo_conicEqualArea,d3.geo.albers=function(){return d3.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},d3.geo.albersUsa=function(){function albersUsa(coordinates){var x=coordinates[0],y=coordinates[1];return point=null,lower48Point(x,y),point||(alaskaPoint(x,y),point)||hawaiiPoint(x,y),point}var point,lower48Point,alaskaPoint,hawaiiPoint,lower48=d3.geo.albers(),alaska=d3.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),hawaii=d3.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),pointStream={point:function(x,y){point=[x,y]}};return albersUsa.invert=function(coordinates){var k=lower48.scale(),t=lower48.translate(),x=(coordinates[0]-t[0])/k,y=(coordinates[1]-t[1])/k;return(y>=.12&&.234>y&&x>=-.425&&-.214>x?alaska:y>=.166&&.234>y&&x>=-.214&&-.115>x?hawaii:lower48).invert(coordinates)},albersUsa.stream=function(stream){var lower48Stream=lower48.stream(stream),alaskaStream=alaska.stream(stream),hawaiiStream=hawaii.stream(stream);return{point:function(x,y){lower48Stream.point(x,y),alaskaStream.point(x,y),hawaiiStream.point(x,y)},sphere:function(){lower48Stream.sphere(),alaskaStream.sphere(),hawaiiStream.sphere()},lineStart:function(){lower48Stream.lineStart(),alaskaStream.lineStart(),hawaiiStream.lineStart()},lineEnd:function(){lower48Stream.lineEnd(),alaskaStream.lineEnd(),hawaiiStream.lineEnd()},polygonStart:function(){lower48Stream.polygonStart(),alaskaStream.polygonStart(),hawaiiStream.polygonStart()},polygonEnd:function(){lower48Stream.polygonEnd(),alaskaStream.polygonEnd(),hawaiiStream.polygonEnd()}}},albersUsa.precision=function(_){return arguments.length?(lower48.precision(_),alaska.precision(_),hawaii.precision(_),albersUsa):lower48.precision()},albersUsa.scale=function(_){return arguments.length?(lower48.scale(_),alaska.scale(.35*_),hawaii.scale(_),albersUsa.translate(lower48.translate())):lower48.scale()},albersUsa.translate=function(_){if(!arguments.length)return lower48.translate();var k=lower48.scale(),x=+_[0],y=+_[1];return lower48Point=lower48.translate(_).clipExtent([[x-.455*k,y-.238*k],[x+.455*k,y+.238*k]]).stream(pointStream).point,alaskaPoint=alaska.translate([x-.307*k,y+.201*k]).clipExtent([[x-.425*k+ε,y+.12*k+ε],[x-.214*k-ε,y+.234*k-ε]]).stream(pointStream).point,hawaiiPoint=hawaii.translate([x-.205*k,y+.212*k]).clipExtent([[x-.214*k+ε,y+.166*k+ε],[x-.115*k-ε,y+.234*k-ε]]).stream(pointStream).point,albersUsa},albersUsa.scale(1070)};var d3_geo_pathAreaSum,d3_geo_pathAreaPolygon,d3_geo_pathBoundsX0,d3_geo_pathBoundsY0,d3_geo_pathBoundsX1,d3_geo_pathBoundsY1,d3_geo_pathArea={point:d3_noop,lineStart:d3_noop,lineEnd:d3_noop,polygonStart:function(){d3_geo_pathAreaPolygon=0,d3_geo_pathArea.lineStart=d3_geo_pathAreaRingStart},polygonEnd:function(){d3_geo_pathArea.lineStart=d3_geo_pathArea.lineEnd=d3_geo_pathArea.point=d3_noop,d3_geo_pathAreaSum+=abs(d3_geo_pathAreaPolygon/2)}},d3_geo_pathBounds={point:d3_geo_pathBoundsPoint,lineStart:d3_noop,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop},d3_geo_pathCentroid={point:d3_geo_pathCentroidPoint,lineStart:d3_geo_pathCentroidLineStart,lineEnd:d3_geo_pathCentroidLineEnd,polygonStart:function(){d3_geo_pathCentroid.lineStart=d3_geo_pathCentroidRingStart},polygonEnd:function(){d3_geo_pathCentroid.point=d3_geo_pathCentroidPoint,d3_geo_pathCentroid.lineStart=d3_geo_pathCentroidLineStart,d3_geo_pathCentroid.lineEnd=d3_geo_pathCentroidLineEnd}};d3.geo.path=function(){function path(object){return object&&("function"==typeof pointRadius&&contextStream.pointRadius(+pointRadius.apply(this,arguments)),cacheStream&&cacheStream.valid||(cacheStream=projectStream(contextStream)),d3.geo.stream(object,cacheStream)),contextStream.result()}function reset(){return cacheStream=null,path}var projection,context,projectStream,contextStream,cacheStream,pointRadius=4.5;return path.area=function(object){return d3_geo_pathAreaSum=0,d3.geo.stream(object,projectStream(d3_geo_pathArea)),d3_geo_pathAreaSum},path.centroid=function(object){return d3_geo_centroidX0=d3_geo_centroidY0=d3_geo_centroidZ0=d3_geo_centroidX1=d3_geo_centroidY1=d3_geo_centroidZ1=d3_geo_centroidX2=d3_geo_centroidY2=d3_geo_centroidZ2=0,d3.geo.stream(object,projectStream(d3_geo_pathCentroid)),d3_geo_centroidZ2?[d3_geo_centroidX2/d3_geo_centroidZ2,d3_geo_centroidY2/d3_geo_centroidZ2]:d3_geo_centroidZ1?[d3_geo_centroidX1/d3_geo_centroidZ1,d3_geo_centroidY1/d3_geo_centroidZ1]:d3_geo_centroidZ0?[d3_geo_centroidX0/d3_geo_centroidZ0,d3_geo_centroidY0/d3_geo_centroidZ0]:[0/0,0/0]},path.bounds=function(object){return d3_geo_pathBoundsX1=d3_geo_pathBoundsY1=-(d3_geo_pathBoundsX0=d3_geo_pathBoundsY0=1/0),d3.geo.stream(object,projectStream(d3_geo_pathBounds)),[[d3_geo_pathBoundsX0,d3_geo_pathBoundsY0],[d3_geo_pathBoundsX1,d3_geo_pathBoundsY1]]},path.projection=function(_){return arguments.length?(projectStream=(projection=_)?_.stream||d3_geo_pathProjectStream(_):d3_identity,reset()):projection},path.context=function(_){return arguments.length?(contextStream=null==(context=_)?new d3_geo_pathBuffer:new d3_geo_pathContext(_),"function"!=typeof pointRadius&&contextStream.pointRadius(pointRadius),reset()):context},path.pointRadius=function(_){return arguments.length?(pointRadius="function"==typeof _?_:(contextStream.pointRadius(+_),+_),path):pointRadius},path.projection(d3.geo.albersUsa()).context(null)},d3.geo.transform=function(methods){return{stream:function(stream){var transform=new d3_geo_transform(stream);for(var k in methods)transform[k]=methods[k];return transform}}},d3_geo_transform.prototype={point:function(x,y){this.stream.point(x,y)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},d3.geo.projection=d3_geo_projection,d3.geo.projectionMutator=d3_geo_projectionMutator,(d3.geo.equirectangular=function(){return d3_geo_projection(d3_geo_equirectangular)}).raw=d3_geo_equirectangular.invert=d3_geo_equirectangular,d3.geo.rotation=function(rotate){function forward(coordinates){return coordinates=rotate(coordinates[0]*d3_radians,coordinates[1]*d3_radians),coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates}return rotate=d3_geo_rotation(rotate[0]%360*d3_radians,rotate[1]*d3_radians,rotate.length>2?rotate[2]*d3_radians:0),forward.invert=function(coordinates){return coordinates=rotate.invert(coordinates[0]*d3_radians,coordinates[1]*d3_radians),coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates},forward},d3_geo_identityRotation.invert=d3_geo_equirectangular,d3.geo.circle=function(){function circle(){var center="function"==typeof origin?origin.apply(this,arguments):origin,rotate=d3_geo_rotation(-center[0]*d3_radians,-center[1]*d3_radians,0).invert,ring=[];return interpolate(null,null,1,{point:function(x,y){ring.push(x=rotate(x,y)),x[0]*=d3_degrees,x[1]*=d3_degrees}}),{type:"Polygon",coordinates:[ring]}}var angle,interpolate,origin=[0,0],precision=6;return circle.origin=function(x){return arguments.length?(origin=x,circle):origin},circle.angle=function(x){return arguments.length?(interpolate=d3_geo_circleInterpolate((angle=+x)*d3_radians,precision*d3_radians),circle):angle},circle.precision=function(_){return arguments.length?(interpolate=d3_geo_circleInterpolate(angle*d3_radians,(precision=+_)*d3_radians),circle):precision},circle.angle(90)},d3.geo.distance=function(a,b){var t,Δλ=(b[0]-a[0])*d3_radians,φ0=a[1]*d3_radians,φ1=b[1]*d3_radians,sinΔλ=Math.sin(Δλ),cosΔλ=Math.cos(Δλ),sinφ0=Math.sin(φ0),cosφ0=Math.cos(φ0),sinφ1=Math.sin(φ1),cosφ1=Math.cos(φ1);return Math.atan2(Math.sqrt((t=cosφ1*sinΔλ)*t+(t=cosφ0*sinφ1-sinφ0*cosφ1*cosΔλ)*t),sinφ0*sinφ1+cosφ0*cosφ1*cosΔλ)},d3.geo.graticule=function(){function graticule(){return{type:"MultiLineString",coordinates:lines()}}function lines(){return d3.range(Math.ceil(X0/DX)*DX,X1,DX).map(X).concat(d3.range(Math.ceil(Y0/DY)*DY,Y1,DY).map(Y)).concat(d3.range(Math.ceil(x0/dx)*dx,x1,dx).filter(function(x){return abs(x%DX)>ε}).map(x)).concat(d3.range(Math.ceil(y0/dy)*dy,y1,dy).filter(function(y){return abs(y%DY)>ε}).map(y))}var x1,x0,X1,X0,y1,y0,Y1,Y0,x,y,X,Y,dx=10,dy=dx,DX=90,DY=360,precision=2.5;return graticule.lines=function(){return lines().map(function(coordinates){return{type:"LineString",coordinates:coordinates}})},graticule.outline=function(){return{type:"Polygon",coordinates:[X(X0).concat(Y(Y1).slice(1),X(X1).reverse().slice(1),Y(Y0).reverse().slice(1))]}},graticule.extent=function(_){return arguments.length?graticule.majorExtent(_).minorExtent(_):graticule.minorExtent()},graticule.majorExtent=function(_){return arguments.length?(X0=+_[0][0],X1=+_[1][0],Y0=+_[0][1],Y1=+_[1][1],X0>X1&&(_=X0,X0=X1,X1=_),Y0>Y1&&(_=Y0,Y0=Y1,Y1=_),graticule.precision(precision)):[[X0,Y0],[X1,Y1]]},graticule.minorExtent=function(_){return arguments.length?(x0=+_[0][0],x1=+_[1][0],y0=+_[0][1],y1=+_[1][1],x0>x1&&(_=x0,x0=x1,x1=_),y0>y1&&(_=y0,y0=y1,y1=_),graticule.precision(precision)):[[x0,y0],[x1,y1]]},graticule.step=function(_){return arguments.length?graticule.majorStep(_).minorStep(_):graticule.minorStep()},graticule.majorStep=function(_){return arguments.length?(DX=+_[0],DY=+_[1],graticule):[DX,DY]},graticule.minorStep=function(_){return arguments.length?(dx=+_[0],dy=+_[1],graticule):[dx,dy]},graticule.precision=function(_){return arguments.length?(precision=+_,x=d3_geo_graticuleX(y0,y1,90),y=d3_geo_graticuleY(x0,x1,precision),X=d3_geo_graticuleX(Y0,Y1,90),Y=d3_geo_graticuleY(X0,X1,precision),graticule):precision},graticule.majorExtent([[-180,-90+ε],[180,90-ε]]).minorExtent([[-180,-80-ε],[180,80+ε]])},d3.geo.greatArc=function(){function greatArc(){return{type:"LineString",coordinates:[source_||source.apply(this,arguments),target_||target.apply(this,arguments)]}}var source_,target_,source=d3_source,target=d3_target;return greatArc.distance=function(){return d3.geo.distance(source_||source.apply(this,arguments),target_||target.apply(this,arguments))},greatArc.source=function(_){return arguments.length?(source=_,source_="function"==typeof _?null:_,greatArc):source},greatArc.target=function(_){return arguments.length?(target=_,target_="function"==typeof _?null:_,greatArc):target},greatArc.precision=function(){return arguments.length?greatArc:0},greatArc},d3.geo.interpolate=function(source,target){return d3_geo_interpolate(source[0]*d3_radians,source[1]*d3_radians,target[0]*d3_radians,target[1]*d3_radians)},d3.geo.length=function(object){return d3_geo_lengthSum=0,d3.geo.stream(object,d3_geo_length),d3_geo_lengthSum};var d3_geo_lengthSum,d3_geo_length={sphere:d3_noop,point:d3_noop,lineStart:d3_geo_lengthLineStart,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop},d3_geo_azimuthalEqualArea=d3_geo_azimuthal(function(cosλcosφ){return Math.sqrt(2/(1+cosλcosφ))},function(ρ){return 2*Math.asin(ρ/2)});(d3.geo.azimuthalEqualArea=function(){return d3_geo_projection(d3_geo_azimuthalEqualArea)}).raw=d3_geo_azimuthalEqualArea;var d3_geo_azimuthalEquidistant=d3_geo_azimuthal(function(cosλcosφ){var c=Math.acos(cosλcosφ);return c&&c/Math.sin(c)},d3_identity);(d3.geo.azimuthalEquidistant=function(){return d3_geo_projection(d3_geo_azimuthalEquidistant)}).raw=d3_geo_azimuthalEquidistant,(d3.geo.conicConformal=function(){return d3_geo_conic(d3_geo_conicConformal)}).raw=d3_geo_conicConformal,(d3.geo.conicEquidistant=function(){return d3_geo_conic(d3_geo_conicEquidistant)}).raw=d3_geo_conicEquidistant;var d3_geo_gnomonic=d3_geo_azimuthal(function(cosλcosφ){return 1/cosλcosφ},Math.atan);(d3.geo.gnomonic=function(){return d3_geo_projection(d3_geo_gnomonic)}).raw=d3_geo_gnomonic,d3_geo_mercator.invert=function(x,y){return[x,2*Math.atan(Math.exp(y))-halfπ]},(d3.geo.mercator=function(){return d3_geo_mercatorProjection(d3_geo_mercator)}).raw=d3_geo_mercator;var d3_geo_orthographic=d3_geo_azimuthal(function(){return 1},Math.asin);(d3.geo.orthographic=function(){return d3_geo_projection(d3_geo_orthographic)}).raw=d3_geo_orthographic;var d3_geo_stereographic=d3_geo_azimuthal(function(cosλcosφ){return 1/(1+cosλcosφ)},function(ρ){return 2*Math.atan(ρ)});(d3.geo.stereographic=function(){return d3_geo_projection(d3_geo_stereographic)}).raw=d3_geo_stereographic,d3_geo_transverseMercator.invert=function(x,y){return[-y,2*Math.atan(Math.exp(x))-halfπ]},(d3.geo.transverseMercator=function(){var projection=d3_geo_mercatorProjection(d3_geo_transverseMercator),center=projection.center,rotate=projection.rotate;return projection.center=function(_){return _?center([-_[1],_[0]]):(_=center(),[-_[1],_[0]])},projection.rotate=function(_){return _?rotate([_[0],_[1],_.length>2?_[2]+90:90]):(_=rotate(),[_[0],_[1],_[2]-90])},projection.rotate([0,0])}).raw=d3_geo_transverseMercator,d3.geom={},d3.geom.hull=function(vertices){function hull(data){if(data.length<3)return[];var i,fx=d3_functor(x),fy=d3_functor(y),n=data.length,points=[],flippedPoints=[];for(i=0;n>i;i++)points.push([+fx.call(this,data[i],i),+fy.call(this,data[i],i),i]);for(points.sort(d3_geom_hullOrder),i=0;n>i;i++)flippedPoints.push([points[i][0],-points[i][1]]);var upper=d3_geom_hullUpper(points),lower=d3_geom_hullUpper(flippedPoints),skipLeft=lower[0]===upper[0],skipRight=lower[lower.length-1]===upper[upper.length-1],polygon=[];for(i=upper.length-1;i>=0;--i)polygon.push(data[points[upper[i]][2]]);for(i=+skipLeft;i=x0&&site.x<=x1&&site.y>=y0&&site.y<=y1?[[x0,y1],[x1,y1],[x1,y0],[x0,y0]]:[];polygon.point=data[i]}),polygons}function sites(data){return data.map(function(d,i){return{x:Math.round(fx(d,i)/ε)*ε,y:Math.round(fy(d,i)/ε)*ε,i:i}})}var x=d3_geom_pointX,y=d3_geom_pointY,fx=x,fy=y,clipExtent=d3_geom_voronoiClipExtent;return points?voronoi(points):(voronoi.links=function(data){return d3_geom_voronoi(sites(data)).edges.filter(function(edge){return edge.l&&edge.r}).map(function(edge){return{source:data[edge.l.i],target:data[edge.r.i]}})},voronoi.triangles=function(data){var triangles=[];return d3_geom_voronoi(sites(data)).cells.forEach(function(cell,i){for(var e0,s0,site=cell.site,edges=cell.edges.sort(d3_geom_voronoiHalfEdgeOrder),j=-1,m=edges.length,e1=edges[m-1].edge,s1=e1.l===site?e1.r:e1.l;++j=sx,bottom=y>=sy,i=(bottom<<1)+right;n.leaf=!1,n=n.nodes[i]||(n.nodes[i]=d3_geom_quadtreeNode()),right?x1=sx:x2=sx,bottom?y1=sy:y2=sy,insert(n,d,x,y,x1,y1,x2,y2)}var d,xs,ys,i,n,x1_,y1_,x2_,y2_,fx=d3_functor(x),fy=d3_functor(y);if(null!=x1)x1_=x1,y1_=y1,x2_=x2,y2_=y2;else if(x2_=y2_=-(x1_=y1_=1/0),xs=[],ys=[],n=data.length,compat)for(i=0;n>i;++i)d=data[i],d.xx2_&&(x2_=d.x),d.y>y2_&&(y2_=d.y),xs.push(d.x),ys.push(d.y);else for(i=0;n>i;++i){var x_=+fx(d=data[i],i),y_=+fy(d,i);x1_>x_&&(x1_=x_),y1_>y_&&(y1_=y_),x_>x2_&&(x2_=x_),y_>y2_&&(y2_=y_),xs.push(x_),ys.push(y_)}var dx=x2_-x1_,dy=y2_-y1_;dx>dy?y2_=y1_+dx:x2_=x1_+dy;var root=d3_geom_quadtreeNode();if(root.add=function(d){insert(root,d,+fx(d,++i),+fy(d,i),x1_,y1_,x2_,y2_)},root.visit=function(f){d3_geom_quadtreeVisit(f,root,x1_,y1_,x2_,y2_)},i=-1,null==x1){for(;++i=0?name.substring(0,i):name,m=i>=0?name.substring(i+1):"in";return t=d3_ease.get(t)||d3_ease_default,m=d3_ease_mode.get(m)||d3_identity,d3_ease_clamp(m(t.apply(null,d3_arraySlice.call(arguments,1))))},d3.interpolateHcl=d3_interpolateHcl,d3.interpolateHsl=d3_interpolateHsl,d3.interpolateLab=d3_interpolateLab,d3.interpolateRound=d3_interpolateRound,d3.transform=function(string){var g=d3_document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(string){if(null!=string){g.setAttribute("transform",string);var t=g.transform.baseVal.consolidate()}return new d3_transform(t?t.matrix:d3_transformIdentity)})(string)},d3_transform.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var d3_transformIdentity={a:1,b:0,c:0,d:1,e:0,f:0};d3.interpolateTransform=d3_interpolateTransform,d3.layout={},d3.layout.bundle=function(){return function(links){for(var paths=[],i=-1,n=links.length;++idw*dw/theta2){if(chargeDistance2>dn){var k=quad.charge/dn;node.px-=dx*k,node.py-=dy*k}return!0}if(quad.point&&dn&&chargeDistance2>dn){var k=quad.pointCharge/dn;node.px-=dx*k,node.py-=dy*k}}return!quad.charge}}function dragmove(d){d.px=d3.event.x,d.py=d3.event.y,force.resume()}var drag,alpha,distances,strengths,charges,force={},event=d3.dispatch("start","tick","end"),size=[1,1],friction=.9,linkDistance=d3_layout_forceLinkDistance,linkStrength=d3_layout_forceLinkStrength,charge=-30,chargeDistance2=d3_layout_forceChargeDistance2,gravity=.1,theta2=.64,nodes=[],links=[];return force.tick=function(){if((alpha*=.99)<.005)return event.end({type:"end",alpha:alpha=0}),!0;var q,i,o,s,t,l,k,x,y,n=nodes.length,m=links.length;for(i=0;m>i;++i)o=links[i],s=o.source,t=o.target,x=t.x-s.x,y=t.y-s.y,(l=x*x+y*y)&&(l=alpha*strengths[i]*((l=Math.sqrt(l))-distances[i])/l,x*=l,y*=l,t.x-=x*(k=s.weight/(t.weight+s.weight)),t.y-=y*k,s.x+=x*(k=1-k),s.y+=y*k);if((k=alpha*gravity)&&(x=size[0]/2,y=size[1]/2,i=-1,k))for(;++i0?x:0:x>0&&(event.start({type:"start",alpha:alpha=x}),d3.timer(force.tick)),force):alpha},force.start=function(){function position(dimension,size){if(!neighbors){for(neighbors=new Array(n),j=0;n>j;++j)neighbors[j]=[];for(j=0;m>j;++j){var o=links[j];neighbors[o.source.index].push(o.target),neighbors[o.target.index].push(o.source)}}for(var x,candidates=neighbors[i],j=-1,m=candidates.length;++ji;++i)(o=nodes[i]).index=i,o.weight=0;for(i=0;m>i;++i)o=links[i],"number"==typeof o.source&&(o.source=nodes[o.source]),"number"==typeof o.target&&(o.target=nodes[o.target]),++o.source.weight,++o.target.weight;for(i=0;n>i;++i)o=nodes[i],isNaN(o.x)&&(o.x=position("x",w)),isNaN(o.y)&&(o.y=position("y",h)),isNaN(o.px)&&(o.px=o.x),isNaN(o.py)&&(o.py=o.y);if(distances=[],"function"==typeof linkDistance)for(i=0;m>i;++i)distances[i]=+linkDistance.call(this,links[i],i);else for(i=0;m>i;++i)distances[i]=linkDistance;if(strengths=[],"function"==typeof linkStrength)for(i=0;m>i;++i)strengths[i]=+linkStrength.call(this,links[i],i);else for(i=0;m>i;++i)strengths[i]=linkStrength;if(charges=[],"function"==typeof charge)for(i=0;n>i;++i)charges[i]=+charge.call(this,nodes[i],i);else for(i=0;n>i;++i)charges[i]=charge;return force.resume()},force.resume=function(){return force.alpha(.1)},force.stop=function(){return force.alpha(0)},force.drag=function(){return drag||(drag=d3.behavior.drag().origin(d3_identity).on("dragstart.force",d3_layout_forceDragstart).on("drag.force",dragmove).on("dragend.force",d3_layout_forceDragend)),arguments.length?(this.on("mouseover.force",d3_layout_forceMouseover).on("mouseout.force",d3_layout_forceMouseout).call(drag),void 0):drag},d3.rebind(force,event,"on")};var d3_layout_forceLinkDistance=20,d3_layout_forceLinkStrength=1,d3_layout_forceChargeDistance2=1/0;d3.layout.hierarchy=function(){function recurse(node,depth,nodes){var childs=children.call(hierarchy,node,depth);if(node.depth=depth,nodes.push(node),childs&&(n=childs.length)){for(var n,d,i=-1,c=node.children=new Array(n),v=0,j=depth+1;++ij;++j)for(out.call(stack,series[0][j],o=offsets[j],points[0][j][1]),i=1;n>i;++i)out.call(stack,series[i][j],o+=points[i-1][j][1],points[i][j][1]);return data}var values=d3_identity,order=d3_layout_stackOrderDefault,offset=d3_layout_stackOffsetZero,out=d3_layout_stackOut,x=d3_layout_stackX,y=d3_layout_stackY;return stack.values=function(x){return arguments.length?(values=x,stack):values},stack.order=function(x){return arguments.length?(order="function"==typeof x?x:d3_layout_stackOrders.get(x)||d3_layout_stackOrderDefault,stack):order},stack.offset=function(x){return arguments.length?(offset="function"==typeof x?x:d3_layout_stackOffsets.get(x)||d3_layout_stackOffsetZero,stack):offset},stack.x=function(z){return arguments.length?(x=z,stack):x},stack.y=function(z){return arguments.length?(y=z,stack):y},stack.out=function(z){return arguments.length?(out=z,stack):out},stack};var d3_layout_stackOrders=d3.map({"inside-out":function(data){var i,j,n=data.length,max=data.map(d3_layout_stackMaxIndex),sums=data.map(d3_layout_stackReduceSum),index=d3.range(n).sort(function(a,b){return max[a]-max[b]}),top=0,bottom=0,tops=[],bottoms=[];for(i=0;n>i;++i)j=index[i],bottom>top?(top+=sums[j],tops.push(j)):(bottom+=sums[j],bottoms.push(j));return bottoms.reverse().concat(tops)},reverse:function(data){return d3.range(data.length).reverse()},"default":d3_layout_stackOrderDefault}),d3_layout_stackOffsets=d3.map({silhouette:function(data){var i,j,o,n=data.length,m=data[0].length,sums=[],max=0,y0=[];for(j=0;m>j;++j){for(i=0,o=0;n>i;i++)o+=data[i][j][1];o>max&&(max=o),sums.push(o)}for(j=0;m>j;++j)y0[j]=(max-sums[j])/2;return y0},wiggle:function(data){var i,j,k,s1,s2,s3,dx,o,o0,n=data.length,x=data[0],m=x.length,y0=[];for(y0[0]=o=o0=0,j=1;m>j;++j){for(i=0,s1=0;n>i;++i)s1+=data[i][j][1];for(i=0,s2=0,dx=x[j][0]-x[j-1][0];n>i;++i){for(k=0,s3=(data[i][j][1]-data[i][j-1][1])/(2*dx);i>k;++k)s3+=(data[k][j][1]-data[k][j-1][1])/dx;s2+=s3*data[i][j][1]}y0[j]=o-=s1?s2/s1*dx:0,o0>o&&(o0=o)}for(j=0;m>j;++j)y0[j]-=o0;return y0},expand:function(data){var i,j,o,n=data.length,m=data[0].length,k=1/n,y0=[];for(j=0;m>j;++j){for(i=0,o=0;n>i;i++)o+=data[i][j][1];if(o)for(i=0;n>i;i++)data[i][j][1]/=o;else for(i=0;n>i;i++)data[i][j][1]=k}for(j=0;m>j;++j)y0[j]=0;return y0},zero:d3_layout_stackOffsetZero});d3.layout.histogram=function(){function histogram(data,i){for(var bin,x,bins=[],values=data.map(valuer,this),range=ranger.call(this,values,i),thresholds=binner.call(this,range,values,i),i=-1,n=values.length,m=thresholds.length-1,k=frequency?1:1/n;++i0)for(i=-1;++i=range[0]&&x<=range[1]&&(bin=bins[d3.bisect(thresholds,x,1,m)-1],bin.y+=k,bin.push(data[i]));return bins}var frequency=!0,valuer=Number,ranger=d3_layout_histogramRange,binner=d3_layout_histogramBinSturges;return histogram.value=function(x){return arguments.length?(valuer=x,histogram):valuer},histogram.range=function(x){return arguments.length?(ranger=d3_functor(x),histogram):ranger},histogram.bins=function(x){return arguments.length?(binner="number"==typeof x?function(range){return d3_layout_histogramBinFixed(range,x)}:d3_functor(x),histogram):binner},histogram.frequency=function(x){return arguments.length?(frequency=!!x,histogram):frequency},histogram},d3.layout.tree=function(){function tree(d,i){function firstWalk(node,previousSibling){var children=node.children,layout=node._tree;if(children&&(n=children.length)){for(var n,previousChild,child,firstChild=children[0],ancestor=firstChild,i=-1;++i0&&(d3_layout_treeMove(d3_layout_treeAncestor(vim,node,ancestor),node,shift),sip+=shift,sop+=shift),sim+=vim._tree.mod,sip+=vip._tree.mod,som+=vom._tree.mod,sop+=vop._tree.mod;vim&&!d3_layout_treeRight(vop)&&(vop._tree.thread=vim,vop._tree.mod+=sim-sop),vip&&!d3_layout_treeLeft(vom)&&(vom._tree.thread=vip,vom._tree.mod+=sip-som,ancestor=node)}return ancestor}var nodes=hierarchy.call(this,d,i),root=nodes[0];d3_layout_treeVisitAfter(root,function(node,previousSibling){node._tree={ancestor:node,prelim:0,mod:0,change:0,shift:0,number:previousSibling?previousSibling._tree.number+1:0}}),firstWalk(root),secondWalk(root,-root._tree.prelim);var left=d3_layout_treeSearch(root,d3_layout_treeLeftmost),right=d3_layout_treeSearch(root,d3_layout_treeRightmost),deep=d3_layout_treeSearch(root,d3_layout_treeDeepest),x0=left.x-separation(left,right)/2,x1=right.x+separation(right,left)/2,y1=deep.depth||1;return d3_layout_treeVisitAfter(root,nodeSize?function(node){node.x*=size[0],node.y=node.depth*size[1],delete node._tree}:function(node){node.x=(node.x-x0)/(x1-x0)*size[0],node.y=node.depth/y1*size[1],delete node._tree}),nodes}var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=!1;return tree.separation=function(x){return arguments.length?(separation=x,tree):separation},tree.size=function(x){return arguments.length?(nodeSize=null==(size=x),tree):nodeSize?null:size},tree.nodeSize=function(x){return arguments.length?(nodeSize=null!=(size=x),tree):nodeSize?size:null},d3_layout_hierarchyRebind(tree,hierarchy)},d3.layout.pack=function(){function pack(d,i){var nodes=hierarchy.call(this,d,i),root=nodes[0],w=size[0],h=size[1],r=null==radius?Math.sqrt:"function"==typeof radius?radius:function(){return radius};if(root.x=root.y=0,d3_layout_treeVisitAfter(root,function(d){d.r=+r(d.value)}),d3_layout_treeVisitAfter(root,d3_layout_packSiblings),padding){var dr=padding*(radius?1:Math.max(2*root.r/w,2*root.r/h))/2;d3_layout_treeVisitAfter(root,function(d){d.r+=dr}),d3_layout_treeVisitAfter(root,d3_layout_packSiblings),d3_layout_treeVisitAfter(root,function(d){d.r-=dr})}return d3_layout_packTransform(root,w/2,h/2,radius?1:1/Math.max(2*root.r/w,2*root.r/h)),nodes}var radius,hierarchy=d3.layout.hierarchy().sort(d3_layout_packSort),padding=0,size=[1,1];return pack.size=function(_){return arguments.length?(size=_,pack):size},pack.radius=function(_){return arguments.length?(radius=null==_||"function"==typeof _?_:+_,pack):radius},pack.padding=function(_){return arguments.length?(padding=+_,pack):padding},d3_layout_hierarchyRebind(pack,hierarchy)},d3.layout.cluster=function(){function cluster(d,i){var previousNode,nodes=hierarchy.call(this,d,i),root=nodes[0],x=0;d3_layout_treeVisitAfter(root,function(node){var children=node.children;children&&children.length?(node.x=d3_layout_clusterX(children),node.y=d3_layout_clusterY(children)):(node.x=previousNode?x+=separation(node,previousNode):0,node.y=0,previousNode=node)});var left=d3_layout_clusterLeft(root),right=d3_layout_clusterRight(root),x0=left.x-separation(left,right)/2,x1=right.x+separation(right,left)/2;return d3_layout_treeVisitAfter(root,nodeSize?function(node){node.x=(node.x-root.x)*size[0],node.y=(root.y-node.y)*size[1]}:function(node){node.x=(node.x-x0)/(x1-x0)*size[0],node.y=(1-(root.y?node.y/root.y:1))*size[1]}),nodes}var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=!1;return cluster.separation=function(x){return arguments.length?(separation=x,cluster):separation},cluster.size=function(x){return arguments.length?(nodeSize=null==(size=x),cluster):nodeSize?null:size},cluster.nodeSize=function(x){return arguments.length?(nodeSize=null!=(size=x),cluster):nodeSize?size:null},d3_layout_hierarchyRebind(cluster,hierarchy)},d3.layout.treemap=function(){function scale(children,k){for(var child,area,i=-1,n=children.length;++ik?0:k),child.area=isNaN(area)||0>=area?0:area}function squarify(node){var children=node.children;if(children&&children.length){var child,score,n,rect=pad(node),row=[],remaining=children.slice(),best=1/0,u="slice"===mode?rect.dx:"dice"===mode?rect.dy:"slice-dice"===mode?1&node.depth?rect.dy:rect.dx:Math.min(rect.dx,rect.dy);for(scale(remaining,rect.dx*rect.dy/node.value),row.area=0;(n=remaining.length)>0;)row.push(child=remaining[n-1]),row.area+=child.area,"squarify"!==mode||(score=worst(row,u))<=best?(remaining.pop(),best=score):(row.area-=row.pop().area,position(row,u,rect,!1),u=Math.min(rect.dx,rect.dy),row.length=row.area=0,best=1/0);row.length&&(position(row,u,rect,!0),row.length=row.area=0),children.forEach(squarify)}}function stickify(node){var children=node.children;if(children&&children.length){var child,rect=pad(node),remaining=children.slice(),row=[];for(scale(remaining,rect.dx*rect.dy/node.value),row.area=0;child=remaining.pop();)row.push(child),row.area+=child.area,null!=child.z&&(position(row,child.z?rect.dx:rect.dy,rect,!remaining.length),row.length=row.area=0);children.forEach(stickify)}}function worst(row,u){for(var r,s=row.area,rmax=0,rmin=1/0,i=-1,n=row.length;++ir&&(rmin=r),r>rmax&&(rmax=r));return s*=s,u*=u,s?Math.max(u*rmax*ratio/s,s/(u*rmin*ratio)):1/0}function position(row,u,rect,flush){var o,i=-1,n=row.length,x=rect.x,y=rect.y,v=u?round(row.area/u):0;if(u==rect.dx){for((flush||v>rect.dy)&&(v=rect.dy);++irect.dx)&&(v=rect.dx);++in&&(σ=1),1>n&&(µ=0),function(){var x,y,r;do x=2*Math.random()-1,y=2*Math.random()-1,r=x*x+y*y;while(!r||r>1);return µ+σ*x*Math.sqrt(-2*Math.log(r)/r)}},logNormal:function(){var random=d3.random.normal.apply(d3,arguments);return function(){return Math.exp(random())}},bates:function(m){var random=d3.random.irwinHall(m);return function(){return random()/m}},irwinHall:function(m){return function(){for(var s=0,j=0;m>j;j++)s+=Math.random();return s}}},d3.scale={};var d3_scale_niceIdentity={floor:d3_identity,ceil:d3_identity};d3.scale.linear=function(){return d3_scale_linear([0,1],[0,1],d3_interpolate,!1)};var d3_scale_linearFormatSignificant={s:1,g:1,p:1,r:1,e:1};d3.scale.log=function(){return d3_scale_log(d3.scale.linear().domain([0,1]),10,!0,[1,10])};var d3_scale_logFormat=d3.format(".0e"),d3_scale_logNiceNegative={floor:function(x){return-Math.ceil(-x)},ceil:function(x){return-Math.floor(-x)}};d3.scale.pow=function(){return d3_scale_pow(d3.scale.linear(),1,[0,1])},d3.scale.sqrt=function(){return d3.scale.pow().exponent(.5)},d3.scale.ordinal=function(){return d3_scale_ordinal([],{t:"range",a:[[]]})},d3.scale.category10=function(){return d3.scale.ordinal().range(d3_category10)},d3.scale.category20=function(){return d3.scale.ordinal().range(d3_category20)},d3.scale.category20b=function(){return d3.scale.ordinal().range(d3_category20b)},d3.scale.category20c=function(){return d3.scale.ordinal().range(d3_category20c)};var d3_category10=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(d3_rgbString),d3_category20=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(d3_rgbString),d3_category20b=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(d3_rgbString),d3_category20c=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(d3_rgbString);d3.scale.quantile=function(){return d3_scale_quantile([],[])},d3.scale.quantize=function(){return d3_scale_quantize(0,1,[0,1])},d3.scale.threshold=function(){return d3_scale_threshold([.5],[0,1])},d3.scale.identity=function(){return d3_scale_identity([0,1])},d3.svg={},d3.svg.arc=function(){function arc(){var r0=innerRadius.apply(this,arguments),r1=outerRadius.apply(this,arguments),a0=startAngle.apply(this,arguments)+d3_svg_arcOffset,a1=endAngle.apply(this,arguments)+d3_svg_arcOffset,da=(a0>a1&&(da=a0,a0=a1,a1=da),a1-a0),df=π>da?"0":"1",c0=Math.cos(a0),s0=Math.sin(a0),c1=Math.cos(a1),s1=Math.sin(a1);return da>=d3_svg_arcMax?r0?"M0,"+r1+"A"+r1+","+r1+" 0 1,1 0,"+-r1+"A"+r1+","+r1+" 0 1,1 0,"+r1+"M0,"+r0+"A"+r0+","+r0+" 0 1,0 0,"+-r0+"A"+r0+","+r0+" 0 1,0 0,"+r0+"Z":"M0,"+r1+"A"+r1+","+r1+" 0 1,1 0,"+-r1+"A"+r1+","+r1+" 0 1,1 0,"+r1+"Z":r0?"M"+r1*c0+","+r1*s0+"A"+r1+","+r1+" 0 "+df+",1 "+r1*c1+","+r1*s1+"L"+r0*c1+","+r0*s1+"A"+r0+","+r0+" 0 "+df+",0 "+r0*c0+","+r0*s0+"Z":"M"+r1*c0+","+r1*s0+"A"+r1+","+r1+" 0 "+df+",1 "+r1*c1+","+r1*s1+"L0,0Z"}var innerRadius=d3_svg_arcInnerRadius,outerRadius=d3_svg_arcOuterRadius,startAngle=d3_svg_arcStartAngle,endAngle=d3_svg_arcEndAngle;return arc.innerRadius=function(v){return arguments.length?(innerRadius=d3_functor(v),arc):innerRadius},arc.outerRadius=function(v){return arguments.length?(outerRadius=d3_functor(v),arc):outerRadius},arc.startAngle=function(v){return arguments.length?(startAngle=d3_functor(v),arc):startAngle},arc.endAngle=function(v){return arguments.length?(endAngle=d3_functor(v),arc):endAngle},arc.centroid=function(){var r=(innerRadius.apply(this,arguments)+outerRadius.apply(this,arguments))/2,a=(startAngle.apply(this,arguments)+endAngle.apply(this,arguments))/2+d3_svg_arcOffset;return[Math.cos(a)*r,Math.sin(a)*r]},arc};var d3_svg_arcOffset=-halfπ,d3_svg_arcMax=τ-ε;d3.svg.line=function(){return d3_svg_line(d3_identity)};var d3_svg_lineInterpolators=d3.map({linear:d3_svg_lineLinear,"linear-closed":d3_svg_lineLinearClosed,step:d3_svg_lineStep,"step-before":d3_svg_lineStepBefore,"step-after":d3_svg_lineStepAfter,basis:d3_svg_lineBasis,"basis-open":d3_svg_lineBasisOpen,"basis-closed":d3_svg_lineBasisClosed,bundle:d3_svg_lineBundle,cardinal:d3_svg_lineCardinal,"cardinal-open":d3_svg_lineCardinalOpen,"cardinal-closed":d3_svg_lineCardinalClosed,monotone:d3_svg_lineMonotone}); d3_svg_lineInterpolators.forEach(function(key,value){value.key=key,value.closed=/-closed$/.test(key)});var d3_svg_lineBasisBezier1=[0,2/3,1/3,0],d3_svg_lineBasisBezier2=[0,1/3,2/3,0],d3_svg_lineBasisBezier3=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var line=d3_svg_line(d3_svg_lineRadial);return line.radius=line.x,delete line.x,line.angle=line.y,delete line.y,line},d3_svg_lineStepBefore.reverse=d3_svg_lineStepAfter,d3_svg_lineStepAfter.reverse=d3_svg_lineStepBefore,d3.svg.area=function(){return d3_svg_area(d3_identity)},d3.svg.area.radial=function(){var area=d3_svg_area(d3_svg_lineRadial);return area.radius=area.x,delete area.x,area.innerRadius=area.x0,delete area.x0,area.outerRadius=area.x1,delete area.x1,area.angle=area.y,delete area.y,area.startAngle=area.y0,delete area.y0,area.endAngle=area.y1,delete area.y1,area},d3.svg.chord=function(){function chord(d,i){var s=subgroup(this,source,d,i),t=subgroup(this,target,d,i);return"M"+s.p0+arc(s.r,s.p1,s.a1-s.a0)+(equals(s,t)?curve(s.r,s.p1,s.r,s.p0):curve(s.r,s.p1,t.r,t.p0)+arc(t.r,t.p1,t.a1-t.a0)+curve(t.r,t.p1,s.r,s.p0))+"Z"}function subgroup(self,f,d,i){var subgroup=f.call(self,d,i),r=radius.call(self,subgroup,i),a0=startAngle.call(self,subgroup,i)+d3_svg_arcOffset,a1=endAngle.call(self,subgroup,i)+d3_svg_arcOffset;return{r:r,a0:a0,a1:a1,p0:[r*Math.cos(a0),r*Math.sin(a0)],p1:[r*Math.cos(a1),r*Math.sin(a1)]}}function equals(a,b){return a.a0==b.a0&&a.a1==b.a1}function arc(r,p,a){return"A"+r+","+r+" 0 "+ +(a>π)+",1 "+p}function curve(r0,p0,r1,p1){return"Q 0,0 "+p1}var source=d3_source,target=d3_target,radius=d3_svg_chordRadius,startAngle=d3_svg_arcStartAngle,endAngle=d3_svg_arcEndAngle;return chord.radius=function(v){return arguments.length?(radius=d3_functor(v),chord):radius},chord.source=function(v){return arguments.length?(source=d3_functor(v),chord):source},chord.target=function(v){return arguments.length?(target=d3_functor(v),chord):target},chord.startAngle=function(v){return arguments.length?(startAngle=d3_functor(v),chord):startAngle},chord.endAngle=function(v){return arguments.length?(endAngle=d3_functor(v),chord):endAngle},chord},d3.svg.diagonal=function(){function diagonal(d,i){var p0=source.call(this,d,i),p3=target.call(this,d,i),m=(p0.y+p3.y)/2,p=[p0,{x:p0.x,y:m},{x:p3.x,y:m},p3];return p=p.map(projection),"M"+p[0]+"C"+p[1]+" "+p[2]+" "+p[3]}var source=d3_source,target=d3_target,projection=d3_svg_diagonalProjection;return diagonal.source=function(x){return arguments.length?(source=d3_functor(x),diagonal):source},diagonal.target=function(x){return arguments.length?(target=d3_functor(x),diagonal):target},diagonal.projection=function(x){return arguments.length?(projection=x,diagonal):projection},diagonal},d3.svg.diagonal.radial=function(){var diagonal=d3.svg.diagonal(),projection=d3_svg_diagonalProjection,projection_=diagonal.projection;return diagonal.projection=function(x){return arguments.length?projection_(d3_svg_diagonalRadialProjection(projection=x)):projection},diagonal},d3.svg.symbol=function(){function symbol(d,i){return(d3_svg_symbols.get(type.call(this,d,i))||d3_svg_symbolCircle)(size.call(this,d,i))}var type=d3_svg_symbolType,size=d3_svg_symbolSize;return symbol.type=function(x){return arguments.length?(type=d3_functor(x),symbol):type},symbol.size=function(x){return arguments.length?(size=d3_functor(x),symbol):size},symbol};var d3_svg_symbols=d3.map({circle:d3_svg_symbolCircle,cross:function(size){var r=Math.sqrt(size/5)/2;return"M"+-3*r+","+-r+"H"+-r+"V"+-3*r+"H"+r+"V"+-r+"H"+3*r+"V"+r+"H"+r+"V"+3*r+"H"+-r+"V"+r+"H"+-3*r+"Z"},diamond:function(size){var ry=Math.sqrt(size/(2*d3_svg_symbolTan30)),rx=ry*d3_svg_symbolTan30;return"M0,"+-ry+"L"+rx+",0 0,"+ry+" "+-rx+",0Z"},square:function(size){var r=Math.sqrt(size)/2;return"M"+-r+","+-r+"L"+r+","+-r+" "+r+","+r+" "+-r+","+r+"Z"},"triangle-down":function(size){var rx=Math.sqrt(size/d3_svg_symbolSqrt3),ry=rx*d3_svg_symbolSqrt3/2;return"M0,"+ry+"L"+rx+","+-ry+" "+-rx+","+-ry+"Z"},"triangle-up":function(size){var rx=Math.sqrt(size/d3_svg_symbolSqrt3),ry=rx*d3_svg_symbolSqrt3/2;return"M0,"+-ry+"L"+rx+","+ry+" "+-rx+","+ry+"Z"}});d3.svg.symbolTypes=d3_svg_symbols.keys();var d3_transitionInheritId,d3_transitionInherit,d3_svg_symbolSqrt3=Math.sqrt(3),d3_svg_symbolTan30=Math.tan(30*d3_radians),d3_transitionPrototype=[],d3_transitionId=0;d3_transitionPrototype.call=d3_selectionPrototype.call,d3_transitionPrototype.empty=d3_selectionPrototype.empty,d3_transitionPrototype.node=d3_selectionPrototype.node,d3_transitionPrototype.size=d3_selectionPrototype.size,d3.transition=function(selection){return arguments.length?d3_transitionInheritId?selection.transition():selection:d3_selectionRoot.transition()},d3.transition.prototype=d3_transitionPrototype,d3_transitionPrototype.select=function(selector){var subgroup,subnode,node,id=this.id,subgroups=[];selector=d3_selection_selector(selector);for(var j=-1,m=this.length;++jj;j++){subgroups.push(subgroup=[]);for(var group=this[j],i=0,n=group.length;n>i;i++)(node=group[i])&&filter.call(node,node.__data__,i,j)&&subgroup.push(node)}return d3_transition(subgroups,this.id)},d3_transitionPrototype.tween=function(name,tween){var id=this.id;return arguments.length<2?this.node().__transition__[id].tween.get(name):d3_selection_each(this,null==tween?function(node){node.__transition__[id].tween.remove(name)}:function(node){node.__transition__[id].tween.set(name,tween)})},d3_transitionPrototype.attr=function(nameNS,value){function attrNull(){this.removeAttribute(name)}function attrNullNS(){this.removeAttributeNS(name.space,name.local)}function attrTween(b){return null==b?attrNull:(b+="",function(){var i,a=this.getAttribute(name);return a!==b&&(i=interpolate(a,b),function(t){this.setAttribute(name,i(t))})})}function attrTweenNS(b){return null==b?attrNullNS:(b+="",function(){var i,a=this.getAttributeNS(name.space,name.local);return a!==b&&(i=interpolate(a,b),function(t){this.setAttributeNS(name.space,name.local,i(t))})})}if(arguments.length<2){for(value in nameNS)this.attr(value,nameNS[value]);return this}var interpolate="transform"==nameNS?d3_interpolateTransform:d3_interpolate,name=d3.ns.qualify(nameNS);return d3_transition_tween(this,"attr."+nameNS,value,name.local?attrTweenNS:attrTween)},d3_transitionPrototype.attrTween=function(nameNS,tween){function attrTween(d,i){var f=tween.call(this,d,i,this.getAttribute(name));return f&&function(t){this.setAttribute(name,f(t))}}function attrTweenNS(d,i){var f=tween.call(this,d,i,this.getAttributeNS(name.space,name.local));return f&&function(t){this.setAttributeNS(name.space,name.local,f(t))}}var name=d3.ns.qualify(nameNS);return this.tween("attr."+nameNS,name.local?attrTweenNS:attrTween)},d3_transitionPrototype.style=function(name,value,priority){function styleNull(){this.style.removeProperty(name)}function styleString(b){return null==b?styleNull:(b+="",function(){var i,a=d3_window.getComputedStyle(this,null).getPropertyValue(name);return a!==b&&(i=d3_interpolate(a,b),function(t){this.style.setProperty(name,i(t),priority)})})}var n=arguments.length;if(3>n){if("string"!=typeof name){2>n&&(value="");for(priority in name)this.style(priority,name[priority],value);return this}priority=""}return d3_transition_tween(this,"style."+name,value,styleString)},d3_transitionPrototype.styleTween=function(name,tween,priority){function styleTween(d,i){var f=tween.call(this,d,i,d3_window.getComputedStyle(this,null).getPropertyValue(name));return f&&function(t){this.style.setProperty(name,f(t),priority)}}return arguments.length<3&&(priority=""),this.tween("style."+name,styleTween)},d3_transitionPrototype.text=function(value){return d3_transition_tween(this,"text",value,d3_transition_text)},d3_transitionPrototype.remove=function(){return this.each("end.transition",function(){var p;this.__transition__.count<2&&(p=this.parentNode)&&p.removeChild(this)})},d3_transitionPrototype.ease=function(value){var id=this.id;return arguments.length<1?this.node().__transition__[id].ease:("function"!=typeof value&&(value=d3.ease.apply(d3,arguments)),d3_selection_each(this,function(node){node.__transition__[id].ease=value}))},d3_transitionPrototype.delay=function(value){var id=this.id;return d3_selection_each(this,"function"==typeof value?function(node,i,j){node.__transition__[id].delay=+value.call(node,node.__data__,i,j)}:(value=+value,function(node){node.__transition__[id].delay=value}))},d3_transitionPrototype.duration=function(value){var id=this.id;return d3_selection_each(this,"function"==typeof value?function(node,i,j){node.__transition__[id].duration=Math.max(1,value.call(node,node.__data__,i,j))}:(value=Math.max(1,value),function(node){node.__transition__[id].duration=value}))},d3_transitionPrototype.each=function(type,listener){var id=this.id;if(arguments.length<2){var inherit=d3_transitionInherit,inheritId=d3_transitionInheritId;d3_transitionInheritId=id,d3_selection_each(this,function(node,i,j){d3_transitionInherit=node.__transition__[id],type.call(node,node.__data__,i,j)}),d3_transitionInherit=inherit,d3_transitionInheritId=inheritId}else d3_selection_each(this,function(node){var transition=node.__transition__[id];(transition.event||(transition.event=d3.dispatch("start","end"))).on(type,listener)});return this},d3_transitionPrototype.transition=function(){for(var subgroup,group,node,transition,id0=this.id,id1=++d3_transitionId,subgroups=[],j=0,m=this.length;m>j;j++){subgroups.push(subgroup=[]);for(var group=this[j],i=0,n=group.length;n>i;i++)(node=group[i])&&(transition=Object.create(node.__transition__[id0]),transition.delay+=transition.duration,d3_transitionNode(node,i,id1,transition)),subgroup.push(node)}return d3_transition(subgroups,id1)},d3.svg.axis=function(){function axis(g){g.each(function(){var tickTransform,g=d3.select(this),scale0=this.__chart__||scale,scale1=this.__chart__=scale.copy(),ticks=null==tickValues?scale1.ticks?scale1.ticks.apply(scale1,tickArguments_):scale1.domain():tickValues,tickFormat=null==tickFormat_?scale1.tickFormat?scale1.tickFormat.apply(scale1,tickArguments_):d3_identity:tickFormat_,tick=g.selectAll(".tick").data(ticks,scale1),tickEnter=tick.enter().insert("g",".domain").attr("class","tick").style("opacity",ε),tickExit=d3.transition(tick.exit()).style("opacity",ε).remove(),tickUpdate=d3.transition(tick).style("opacity",1),range=d3_scaleRange(scale1),path=g.selectAll(".domain").data([0]),pathUpdate=(path.enter().append("path").attr("class","domain"),d3.transition(path));tickEnter.append("line"),tickEnter.append("text");var lineEnter=tickEnter.select("line"),lineUpdate=tickUpdate.select("line"),text=tick.select("text").text(tickFormat),textEnter=tickEnter.select("text"),textUpdate=tickUpdate.select("text");switch(orient){case"bottom":tickTransform=d3_svg_axisX,lineEnter.attr("y2",innerTickSize),textEnter.attr("y",Math.max(innerTickSize,0)+tickPadding),lineUpdate.attr("x2",0).attr("y2",innerTickSize),textUpdate.attr("x",0).attr("y",Math.max(innerTickSize,0)+tickPadding),text.attr("dy",".71em").style("text-anchor","middle"),pathUpdate.attr("d","M"+range[0]+","+outerTickSize+"V0H"+range[1]+"V"+outerTickSize);break;case"top":tickTransform=d3_svg_axisX,lineEnter.attr("y2",-innerTickSize),textEnter.attr("y",-(Math.max(innerTickSize,0)+tickPadding)),lineUpdate.attr("x2",0).attr("y2",-innerTickSize),textUpdate.attr("x",0).attr("y",-(Math.max(innerTickSize,0)+tickPadding)),text.attr("dy","0em").style("text-anchor","middle"),pathUpdate.attr("d","M"+range[0]+","+-outerTickSize+"V0H"+range[1]+"V"+-outerTickSize);break;case"left":tickTransform=d3_svg_axisY,lineEnter.attr("x2",-innerTickSize),textEnter.attr("x",-(Math.max(innerTickSize,0)+tickPadding)),lineUpdate.attr("x2",-innerTickSize).attr("y2",0),textUpdate.attr("x",-(Math.max(innerTickSize,0)+tickPadding)).attr("y",0),text.attr("dy",".32em").style("text-anchor","end"),pathUpdate.attr("d","M"+-outerTickSize+","+range[0]+"H0V"+range[1]+"H"+-outerTickSize);break;case"right":tickTransform=d3_svg_axisY,lineEnter.attr("x2",innerTickSize),textEnter.attr("x",Math.max(innerTickSize,0)+tickPadding),lineUpdate.attr("x2",innerTickSize).attr("y2",0),textUpdate.attr("x",Math.max(innerTickSize,0)+tickPadding).attr("y",0),text.attr("dy",".32em").style("text-anchor","start"),pathUpdate.attr("d","M"+outerTickSize+","+range[0]+"H0V"+range[1]+"H"+outerTickSize)}if(scale1.rangeBand){var x=scale1,dx=x.rangeBand()/2;scale0=scale1=function(d){return x(d)+dx}}else scale0.rangeBand?scale0=scale1:tickExit.call(tickTransform,scale1);tickEnter.call(tickTransform,scale0),tickUpdate.call(tickTransform,scale1)})}var tickFormat_,scale=d3.scale.linear(),orient=d3_svg_axisDefaultOrient,innerTickSize=6,outerTickSize=6,tickPadding=3,tickArguments_=[10],tickValues=null;return axis.scale=function(x){return arguments.length?(scale=x,axis):scale},axis.orient=function(x){return arguments.length?(orient=x in d3_svg_axisOrients?x+"":d3_svg_axisDefaultOrient,axis):orient},axis.ticks=function(){return arguments.length?(tickArguments_=arguments,axis):tickArguments_},axis.tickValues=function(x){return arguments.length?(tickValues=x,axis):tickValues},axis.tickFormat=function(x){return arguments.length?(tickFormat_=x,axis):tickFormat_},axis.tickSize=function(x){var n=arguments.length;return n?(innerTickSize=+x,outerTickSize=+arguments[n-1],axis):innerTickSize},axis.innerTickSize=function(x){return arguments.length?(innerTickSize=+x,axis):innerTickSize},axis.outerTickSize=function(x){return arguments.length?(outerTickSize=+x,axis):outerTickSize},axis.tickPadding=function(x){return arguments.length?(tickPadding=+x,axis):tickPadding},axis.tickSubdivide=function(){return arguments.length&&axis},axis};var d3_svg_axisDefaultOrient="bottom",d3_svg_axisOrients={top:1,right:1,bottom:1,left:1};d3.svg.brush=function(){function brush(g){g.each(function(){var g=d3.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",brushstart).on("touchstart.brush",brushstart),background=g.selectAll(".background").data([0]);background.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),g.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var resize=g.selectAll(".resize").data(resizes,d3_identity);resize.exit().remove(),resize.enter().append("g").attr("class",function(d){return"resize "+d}).style("cursor",function(d){return d3_svg_brushCursor[d]}).append("rect").attr("x",function(d){return/[ew]$/.test(d)?-3:null}).attr("y",function(d){return/^[ns]/.test(d)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),resize.style("display",brush.empty()?"none":null);var range,gUpdate=d3.transition(g),backgroundUpdate=d3.transition(background);x&&(range=d3_scaleRange(x),backgroundUpdate.attr("x",range[0]).attr("width",range[1]-range[0]),redrawX(gUpdate)),y&&(range=d3_scaleRange(y),backgroundUpdate.attr("y",range[0]).attr("height",range[1]-range[0]),redrawY(gUpdate)),redraw(gUpdate)})}function redraw(g){g.selectAll(".resize").attr("transform",function(d){return"translate("+xExtent[+/e$/.test(d)]+","+yExtent[+/^s/.test(d)]+")"})}function redrawX(g){g.select(".extent").attr("x",xExtent[0]),g.selectAll(".extent,.n>rect,.s>rect").attr("width",xExtent[1]-xExtent[0])}function redrawY(g){g.select(".extent").attr("y",yExtent[0]),g.selectAll(".extent,.e>rect,.w>rect").attr("height",yExtent[1]-yExtent[0])}function brushstart(){function keydown(){32==d3.event.keyCode&&(dragging||(center=null,origin[0]-=xExtent[1],origin[1]-=yExtent[1],dragging=2),d3_eventPreventDefault())}function keyup(){32==d3.event.keyCode&&2==dragging&&(origin[0]+=xExtent[1],origin[1]+=yExtent[1],dragging=0,d3_eventPreventDefault())}function brushmove(){var point=d3.mouse(target),moved=!1;offset&&(point[0]+=offset[0],point[1]+=offset[1]),dragging||(d3.event.altKey?(center||(center=[(xExtent[0]+xExtent[1])/2,(yExtent[0]+yExtent[1])/2]),origin[0]=xExtent[+(point[0]position?(max=min,min=position):max=position),extent[0]!=min||extent[1]!=max?(i?yExtentDomain=null:xExtentDomain=null,extent[0]=min,extent[1]=max,!0):void 0}function brushend(){brushmove(),g.style("pointer-events","all").selectAll(".resize").style("display",brush.empty()?"none":null),d3.select("body").style("cursor",null),w.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),dragRestore(),event_({type:"brushend"})}var center,offset,target=this,eventTarget=d3.select(d3.event.target),event_=event.of(target,arguments),g=d3.select(target),resizing=eventTarget.datum(),resizingX=!/^(n|s)$/.test(resizing)&&x,resizingY=!/^(e|w)$/.test(resizing)&&y,dragging=eventTarget.classed("extent"),dragRestore=d3_event_dragSuppress(),origin=d3.mouse(target),w=d3.select(d3_window).on("keydown.brush",keydown).on("keyup.brush",keyup);if(d3.event.changedTouches?w.on("touchmove.brush",brushmove).on("touchend.brush",brushend):w.on("mousemove.brush",brushmove).on("mouseup.brush",brushend),g.interrupt().selectAll("*").interrupt(),dragging)origin[0]=xExtent[0]-origin[0],origin[1]=yExtent[0]-origin[1];else if(resizing){var ex=+/w$/.test(resizing),ey=+/^n/.test(resizing);offset=[xExtent[1-ex]-origin[0],yExtent[1-ey]-origin[1]],origin[0]=xExtent[ex],origin[1]=yExtent[ey]}else d3.event.altKey&&(center=origin.slice());g.style("pointer-events","none").selectAll(".resize").style("display",null),d3.select("body").style("cursor",eventTarget.style("cursor")),event_({type:"brushstart"}),brushmove()}var xExtentDomain,yExtentDomain,event=d3_eventDispatch(brush,"brushstart","brush","brushend"),x=null,y=null,xExtent=[0,0],yExtent=[0,0],xClamp=!0,yClamp=!0,resizes=d3_svg_brushResizes[0];return brush.event=function(g){g.each(function(){var event_=event.of(this,arguments),extent1={x:xExtent,y:yExtent,i:xExtentDomain,j:yExtentDomain},extent0=this.__chart__||extent1;this.__chart__=extent1,d3_transitionInheritId?d3.select(this).transition().each("start.brush",function(){xExtentDomain=extent0.i,yExtentDomain=extent0.j,xExtent=extent0.x,yExtent=extent0.y,event_({type:"brushstart"})}).tween("brush:brush",function(){var xi=d3_interpolateArray(xExtent,extent1.x),yi=d3_interpolateArray(yExtent,extent1.y);return xExtentDomain=yExtentDomain=null,function(t){xExtent=extent1.x=xi(t),yExtent=extent1.y=yi(t),event_({type:"brush",mode:"resize"})}}).each("end.brush",function(){xExtentDomain=extent1.i,yExtentDomain=extent1.j,event_({type:"brush",mode:"resize"}),event_({type:"brushend"})}):(event_({type:"brushstart"}),event_({type:"brush",mode:"resize"}),event_({type:"brushend"}))})},brush.x=function(z){return arguments.length?(x=z,resizes=d3_svg_brushResizes[!x<<1|!y],brush):x},brush.y=function(z){return arguments.length?(y=z,resizes=d3_svg_brushResizes[!x<<1|!y],brush):y},brush.clamp=function(z){return arguments.length?(x&&y?(xClamp=!!z[0],yClamp=!!z[1]):x?xClamp=!!z:y&&(yClamp=!!z),brush):x&&y?[xClamp,yClamp]:x?xClamp:y?yClamp:null},brush.extent=function(z){var x0,x1,y0,y1,t;return arguments.length?(x&&(x0=z[0],x1=z[1],y&&(x0=x0[0],x1=x1[0]),xExtentDomain=[x0,x1],x.invert&&(x0=x(x0),x1=x(x1)),x0>x1&&(t=x0,x0=x1,x1=t),(x0!=xExtent[0]||x1!=xExtent[1])&&(xExtent=[x0,x1])),y&&(y0=z[0],y1=z[1],x&&(y0=y0[1],y1=y1[1]),yExtentDomain=[y0,y1],y.invert&&(y0=y(y0),y1=y(y1)),y0>y1&&(t=y0,y0=y1,y1=t),(y0!=yExtent[0]||y1!=yExtent[1])&&(yExtent=[y0,y1])),brush):(x&&(xExtentDomain?(x0=xExtentDomain[0],x1=xExtentDomain[1]):(x0=xExtent[0],x1=xExtent[1],x.invert&&(x0=x.invert(x0),x1=x.invert(x1)),x0>x1&&(t=x0,x0=x1,x1=t))),y&&(yExtentDomain?(y0=yExtentDomain[0],y1=yExtentDomain[1]):(y0=yExtent[0],y1=yExtent[1],y.invert&&(y0=y.invert(y0),y1=y.invert(y1)),y0>y1&&(t=y0,y0=y1,y1=t))),x&&y?[[x0,y0],[x1,y1]]:x?[x0,x1]:y&&[y0,y1])},brush.clear=function(){return brush.empty()||(xExtent=[0,0],yExtent=[0,0],xExtentDomain=yExtentDomain=null),brush},brush.empty=function(){return!!x&&xExtent[0]==xExtent[1]||!!y&&yExtent[0]==yExtent[1]},d3.rebind(brush,event,"on")};var d3_svg_brushCursor={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},d3_svg_brushResizes=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],d3_time_format=d3_time.format=d3_locale_enUS.timeFormat,d3_time_formatUtc=d3_time_format.utc,d3_time_formatIso=d3_time_formatUtc("%Y-%m-%dT%H:%M:%S.%LZ");d3_time_format.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?d3_time_formatIsoNative:d3_time_formatIso,d3_time_formatIsoNative.parse=function(string){var date=new Date(string);return isNaN(date)?null:date},d3_time_formatIsoNative.toString=d3_time_formatIso.toString,d3_time.second=d3_time_interval(function(date){return new d3_date(1e3*Math.floor(date/1e3))},function(date,offset){date.setTime(date.getTime()+1e3*Math.floor(offset))},function(date){return date.getSeconds()}),d3_time.seconds=d3_time.second.range,d3_time.seconds.utc=d3_time.second.utc.range,d3_time.minute=d3_time_interval(function(date){return new d3_date(6e4*Math.floor(date/6e4))},function(date,offset){date.setTime(date.getTime()+6e4*Math.floor(offset))},function(date){return date.getMinutes()}),d3_time.minutes=d3_time.minute.range,d3_time.minutes.utc=d3_time.minute.utc.range,d3_time.hour=d3_time_interval(function(date){var timezone=date.getTimezoneOffset()/60;return new d3_date(36e5*(Math.floor(date/36e5-timezone)+timezone))},function(date,offset){date.setTime(date.getTime()+36e5*Math.floor(offset))},function(date){return date.getHours()}),d3_time.hours=d3_time.hour.range,d3_time.hours.utc=d3_time.hour.utc.range,d3_time.month=d3_time_interval(function(date){return date=d3_time.day(date),date.setDate(1),date},function(date,offset){date.setMonth(date.getMonth()+offset)},function(date){return date.getMonth()}),d3_time.months=d3_time.month.range,d3_time.months.utc=d3_time.month.utc.range;var d3_time_scaleSteps=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],d3_time_scaleLocalMethods=[[d3_time.second,1],[d3_time.second,5],[d3_time.second,15],[d3_time.second,30],[d3_time.minute,1],[d3_time.minute,5],[d3_time.minute,15],[d3_time.minute,30],[d3_time.hour,1],[d3_time.hour,3],[d3_time.hour,6],[d3_time.hour,12],[d3_time.day,1],[d3_time.day,2],[d3_time.week,1],[d3_time.month,1],[d3_time.month,3],[d3_time.year,1]],d3_time_scaleLocalFormat=d3_time_format.multi([[".%L",function(d){return d.getMilliseconds()}],[":%S",function(d){return d.getSeconds()}],["%I:%M",function(d){return d.getMinutes()}],["%I %p",function(d){return d.getHours()}],["%a %d",function(d){return d.getDay()&&1!=d.getDate()}],["%b %d",function(d){return 1!=d.getDate()}],["%B",function(d){return d.getMonth()}],["%Y",d3_true]]),d3_time_scaleMilliseconds={range:function(start,stop,step){return d3.range(+start,+stop,step).map(d3_time_scaleDate)},floor:d3_identity,ceil:d3_identity};d3_time_scaleLocalMethods.year=d3_time.year,d3_time.scale=function(){return d3_time_scale(d3.scale.linear(),d3_time_scaleLocalMethods,d3_time_scaleLocalFormat)};var d3_time_scaleUtcMethods=d3_time_scaleLocalMethods.map(function(m){return[m[0].utc,m[1]]}),d3_time_scaleUtcFormat=d3_time_formatUtc.multi([[".%L",function(d){return d.getUTCMilliseconds()}],[":%S",function(d){return d.getUTCSeconds()}],["%I:%M",function(d){return d.getUTCMinutes()}],["%I %p",function(d){return d.getUTCHours()}],["%a %d",function(d){return d.getUTCDay()&&1!=d.getUTCDate()}],["%b %d",function(d){return 1!=d.getUTCDate()}],["%B",function(d){return d.getUTCMonth()}],["%Y",d3_true]]);d3_time_scaleUtcMethods.year=d3_time.year.utc,d3_time.scale.utc=function(){return d3_time_scale(d3.scale.linear(),d3_time_scaleUtcMethods,d3_time_scaleUtcFormat)},d3.text=d3_xhrType(function(request){return request.responseText}),d3.json=function(url,callback){return d3_xhr(url,"application/json",d3_json,callback)},d3.html=function(url,callback){return d3_xhr(url,"text/html",d3_html,callback)},d3.xml=d3_xhrType(function(request){return request.responseXML}),"function"==typeof define&&define.amd?define(d3):"object"==typeof module&&module.exports?module.exports=d3:this.d3=d3}(),function(e,t){function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function it(){return!0}function ot(){return!1}function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){for(var n,r=0;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}function tn(e,t){if(t in e)return t;for(var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;i--;)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){for(var n,r,i,o=[],a=0,s=e.length;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("