!function(){var d3={version:"3.4.4"};if(!Date.now){Date.now=function(){return +new Date()}}var d3_arraySlice=[].slice,d3_array=function(list){return d3_arraySlice.call(list)};var 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){var i=list.length,array=new Array(i);while(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=d3_ascending;function d3_ascending(a,b){return ab?1:a>=b?0:NaN}d3.descending=function(a,b){return ba?1:b>=a?0:NaN};d3.min=function(array,f){var i=-1,n=array.length,a,b;if(arguments.length===1){while(++ib){a=b}}}else{while(++ib){a=b}}}return a};d3.max=function(array,f){var i=-1,n=array.length,a,b;if(arguments.length===1){while(++ia){a=b}}}else{while(++ia){a=b}}}return a};d3.extent=function(array,f){var i=-1,n=array.length,a,b,c;if(arguments.length===1){while(++ib){a=b}if(cb){a=b}if(c1){array=array.map(f)}array=array.filter(d3_number);return array.length?d3.quantile(array.sort(d3_ascending),0.5):undefined};function d3_bisector(compare){return{left:function(a,x,lo,hi){if(arguments.length<3){lo=0}if(arguments.length<4){hi=a.length}while(lo>>1;if(compare(a[mid],x)<0){lo=mid+1}else{hi=mid}}return lo},right:function(a,x,lo,hi){if(arguments.length<3){lo=0}if(arguments.length<4){hi=a.length}while(lo>>1;if(compare(a[mid],x)>0){hi=mid}else{lo=mid+1}}return lo}}}var d3_bisect=d3_bisector(d3_ascending);d3.bisectLeft=d3_bisect.left;d3.bisect=d3.bisectRight=d3_bisect.right;d3.bisector=function(f){return d3_bisector(f.length===1?function(d,x){return d3_ascending(f(d),x)}:f)};d3.shuffle=function(array){var m=array.length,t,i;while(m){i=Math.random()*m--|0;t=array[m],array[m]=array[i],array[i]=t}return array};d3.permute=function(array,indexes){var i=indexes.length,permutes=new Array(i);while(i--){permutes[i]=array[indexes[i]]}return permutes};d3.pairs=function(array){var i=0,n=array.length-1,p0,p1=array[0],pairs=new Array(n<0?0:n);while(i=0){array=arrays[n];m=array.length;while(--m>=0){merged[--j]=array[m]}}return merged};var abs=Math.abs;d3.range=function(start,stop,step){if(arguments.length<3){step=1;if(arguments.length<2){stop=start;start=0}}if((stop-start)/step===Infinity){throw new Error("infinite range")}var range=[],k=d3_range_integerScale(abs(step)),i=-1,j;start*=k,stop*=k,step*=k;if(step<0){while((j=start+step*++i)>stop){range.push(j/k)}}else{while((j=start+step*++i)=keys.length){return rollup?rollup.call(nest,array):sortValues?array.sort(sortValues):array}var i=-1,n=array.length,key=keys[depth++],keyValue,object,setter,valuesByKey=new d3_Map(),values;while(++i=keys.length){return map}var array=[],sortKey=sortKeys[depth++];map.forEach(function(key,keyMap){array.push({key:key,values:entries(keyMap,depth)})});return sortKey?array.sort(function(a,b){return sortKey(a.key,b.key)}):array}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){keys.push(d);return nest};nest.sortKeys=function(order){sortKeys[keys.length-1]=order;return nest};nest.sortValues=function(order){sortValues=order;return nest};nest.rollup=function(f){rollup=f;return nest};return nest};d3.set=function(array){var set=new d3_Set();if(array){for(var i=0,n=array.length;i=0){name=type.substring(i+1);type=type.substring(0,i)}if(type){return arguments.length<2?this[type].on(name):this[type].on(name,listener)}if(arguments.length===2){if(listener==null){for(type in this){if(this.hasOwnProperty(type)){this[type].on(name,null)}}}return this}};function d3_dispatch_event(dispatch){var listeners=[],listenerByName=new d3_Map();function event(){var z=listeners,i=-1,n=z.length,l;while(++i=0){prefix=name.substring(0,i);name=name.substring(i+1)}return d3_nsPrefix.hasOwnProperty(prefix)?{space:d3_nsPrefix[prefix],local:name}:name}};d3_selectionPrototype.attr=function(name,value){if(arguments.length<2){if(typeof name==="string"){var node=this.node();name=d3.ns.qualify(name);return 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))};function d3_selection_attr(name,value){name=d3.ns.qualify(name);function attrNull(){this.removeAttribute(name)}function attrNullNS(){this.removeAttributeNS(name.space,name.local)}function attrConstant(){this.setAttribute(name,value)}function attrConstantNS(){this.setAttributeNS(name.space,name.local,value)}function attrFunction(){var x=value.apply(this,arguments);if(x==null){this.removeAttribute(name)}else{this.setAttribute(name,x)}}function attrFunctionNS(){var x=value.apply(this,arguments);if(x==null){this.removeAttributeNS(name.space,name.local)}else{this.setAttributeNS(name.space,name.local,x)}}return value==null?name.local?attrNullNS:attrNull:typeof value==="function"?name.local?attrFunctionNS:attrFunction:name.local?attrConstantNS:attrConstant}function d3_collapse(s){return s.trim().replace(/\s+/g," ")}d3_selectionPrototype.classed=function(name,value){if(arguments.length<2){if(typeof name==="string"){var node=this.node(),n=(name=d3_selection_classes(name)).length,i=-1;if(value=node.classList){while(++i=0;){if(node=group[i]){if(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;++j=i0){i0=i+1}while(!(node=group[i0])&&++i00){type=type.substring(0,i)}var filter=d3_selection_onFilters.get(type);if(filter){type=filter,wrap=d3_selection_onFilter}function onRemove(){var l=this[name];if(l){this.removeEventListener(type,l,l.$);delete this[name]}}function onAdd(){var l=wrap(listener,d3_array(arguments));onRemove.call(this);this.addEventListener(type,this[name]=l,l.$=capture);l._=listener}function removeAll(){var re=new RegExp("^__on([^.]+)"+d3.requote(type)+"$"),match;for(var name in this){if(match=name.match(re)){var l=this[name];this.removeEventListener(match[1],l,l.$);delete this[name]}}}return i?listener?onAdd:onRemove:listener?d3_noop:removeAll}var d3_selection_onFilters=d3.map({mouseenter:"mouseover",mouseleave:"mouseout"});d3_selection_onFilters.forEach(function(k){if("on"+k in d3_document){d3_selection_onFilters.remove(k)}});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;if(!related||related!==target&&!(related.compareDocumentPosition(target)&8)){l.call(target,e)}}}var d3_event_dragSelect="onselectstart" in d3_document?null:d3_vendorSymbol(d3_documentElement.style,"userSelect"),d3_event_dragId=0;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){w.on(name,null);if(d3_event_dragSelect){style[d3_event_dragSelect]=select}if(suppressClick){function off(){w.on(click,null)}w.on(click,function(){d3_eventPreventDefault();off()},true);setTimeout(off,0)}}}d3.mouse=function(container){return d3_mousePoint(container,d3_eventSource())};function d3_mousePoint(container,e){if(e.changedTouches){e=e.changedTouches[0]}var svg=container.ownerSVGElement||container;if(svg.createSVGPoint){var point=svg.createSVGPoint();point.x=e.clientX,point.y=e.clientY;point=point.matrixTransform(container.getScreenCTM().inverse());return[point.x,point.y]}var rect=container.getBoundingClientRect();return[e.clientX-rect.left-container.clientLeft,e.clientY-rect.top-container.clientTop]}d3.touches=function(container,touches){if(arguments.length<2){touches=d3_eventSource().touches}return touches?d3_array(touches).map(function(touch){var point=d3_mousePoint(container,touch);point.identifier=touch.identifier;return point}):[]};d3.behavior.drag=function(){var event=d3_eventDispatch(drag,"drag","dragstart","dragend"),origin=null,mousedown=dragstart(d3_noop,d3.mouse,d3_behavior_dragMouseSubject,"mousemove","mouseup"),touchstart=dragstart(d3_behavior_dragTouchId,d3.touch,d3_behavior_dragTouchSubject,"touchmove","touchend");function drag(){this.on("mousedown.drag",mousedown).on("touchstart.drag",touchstart)}function dragstart(id,position,subject,move,end){return function(){var that=this,target=d3.event.target,parent=that.parentNode,dispatch=event.of(that,arguments),dragged=0,dragId=id(),dragName=".drag"+(dragId==null?"":"-"+dragId),dragOffset,dragSubject=d3.select(subject()).on(move+dragName,moved).on(end+dragName,ended),dragRestore=d3_event_dragSuppress(),position0=position(parent,dragId);if(origin){dragOffset=origin.apply(that,arguments);dragOffset=[dragOffset.x-position0[0],dragOffset.y-position0[1]]}else{dragOffset=[0,0]}dispatch({type:"dragstart"});function moved(){var position1=position(parent,dragId),dx,dy;if(!position1){return}dx=position1[0]-position0[0];dy=position1[1]-position0[1];dragged|=dx|dy;position0=position1;dispatch({type:"drag",x:position1[0]+dragOffset[0],y:position1[1]+dragOffset[1],dx:dx,dy:dy})}function ended(){if(!position(parent,dragId)){return}dragSubject.on(move+dragName,null).on(end+dragName,null);dragRestore(dragged&&d3.event.target===target);dispatch({type:"dragend"})}}}drag.origin=function(x){if(!arguments.length){return origin}origin=x;return drag};return d3.rebind(drag,event,"on")};function d3_behavior_dragTouchId(){return d3.event.changedTouches[0].identifier}function d3_behavior_dragTouchSubject(){return d3.event.target}function d3_behavior_dragMouseSubject(){return d3_window}var π=Math.PI,τ=2*π,halfπ=π/2,ε=0.000001,ε2=ε*ε,d3_radians=π/180,d3_degrees=180/π;function d3_sgn(x){return x>0?1:x<0?-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:x<-1?π:Math.acos(x)}function d3_asin(x){return x>1?halfπ:x<-1?-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}var ρ=Math.SQRT2,ρ2=2,ρ4=4;d3.interpolateZoom=function(p0,p1){var ux0=p0[0],uy0=p0[1],w0=p0[2],ux1=p1[0],uy1=p1[1],w1=p1[2];var 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))/ρ;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)]}interpolate.duration=S*1000;return interpolate};d3.behavior.zoom=function(){var view={x:0,y:0,k:1},translate0,center,size=[960,500],scaleExtent=d3_behavior_zoomInfinity,mousedown="mousedown.zoom",mousemove="mousemove.zoom",mouseup="mouseup.zoom",mousewheelTimer,touchstart="touchstart.zoom",touchtime,event=d3_eventDispatch(zoom,"zoomstart","zoom","zoomend"),x0,x1,y0,y1;function zoom(g){g.on(mousedown,mousedowned).on(d3_behavior_zoomWheel+".zoom",mousewheeled).on(mousemove,mousewheelreset).on("dblclick.zoom",dblclicked).on(touchstart,touchstarted)}zoom.event=function(g){g.each(function(){var dispatch=event.of(this,arguments),view1=view;if(d3_transitionInheritId){d3.select(this).transition().each("start.zoom",function(){view=this.__chart__||{x:0,y:0,k:1};zoomstarted(dispatch)}).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(dispatch)}}).each("end.zoom",function(){zoomended(dispatch)})}else{this.__chart__=view;zoomstarted(dispatch);zoomed(dispatch);zoomended(dispatch)}})};zoom.translate=function(_){if(!arguments.length){return[view.x,view.y]}view={x:+_[0],y:+_[1],k:view.k};rescale();return zoom};zoom.scale=function(_){if(!arguments.length){return view.k}view={x:view.x,y:view.y,k:+_};rescale();return zoom};zoom.scaleExtent=function(_){if(!arguments.length){return scaleExtent}scaleExtent=_==null?d3_behavior_zoomInfinity:[+_[0],+_[1]];return zoom};zoom.center=function(_){if(!arguments.length){return center}center=_&&[+_[0],+_[1]];return zoom};zoom.size=function(_){if(!arguments.length){return size}size=_&&[+_[0],+_[1]];return zoom};zoom.x=function(z){if(!arguments.length){return x1}x1=z;x0=z.copy();view={x:0,y:0,k:1};return zoom};zoom.y=function(z){if(!arguments.length){return y1}y1=z;y0=z.copy();view={x:0,y:0,k:1};return zoom};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(){if(x1){x1.domain(x0.range().map(function(x){return(x-view.x)/view.k}).map(x0.invert))}if(y1){y1.domain(y0.range().map(function(y){return(y-view.y)/view.k}).map(y0.invert))}}function zoomstarted(dispatch){dispatch({type:"zoomstart"})}function zoomed(dispatch){rescale();dispatch({type:"zoom",scale:view.k,translate:[view.x,view.y]})}function zoomended(dispatch){dispatch({type:"zoomend"})}function mousedowned(){var that=this,target=d3.event.target,dispatch=event.of(that,arguments),dragged=0,subject=d3.select(d3_window).on(mousemove,moved).on(mouseup,ended),location0=location(d3.mouse(that)),dragRestore=d3_event_dragSuppress();d3_selection_interrupt.call(that);zoomstarted(dispatch);function moved(){dragged=1;translateTo(d3.mouse(that),location0);zoomed(dispatch)}function ended(){subject.on(mousemove,d3_window===that?mousewheelreset:null).on(mouseup,null);dragRestore(dragged&&d3.event.target===target);zoomended(dispatch)}}function touchstarted(){var that=this,dispatch=event.of(that,arguments),locations0={},distance0=0,scale0,zoomName=".zoom-"+d3.event.changedTouches[0].identifier,touchmove="touchmove"+zoomName,touchend="touchend"+zoomName,target=d3.select(d3.event.target).on(touchmove,moved).on(touchend,ended),subject=d3.select(that).on(mousedown,null).on(touchstart,started),dragRestore=d3_event_dragSuppress();d3_selection_interrupt.call(that);started();zoomstarted(dispatch);function relocate(){var touches=d3.touches(that);scale0=view.k;touches.forEach(function(t){if(t.identifier in locations0){locations0[t.identifier]=location(t)}});return touches}function started(){var changed=d3.event.changedTouches;for(var i=0,n=changed.length;i1){var p=touches[0],q=touches[1],dx=p[0]-q[0],dy=p[1]-q[1];distance0=dx*dx+dy*dy}}}function moved(){var touches=d3.touches(that),p0,l0,p1,l1;for(var i=0,n=touches.length;i1?1:s;l=l<0?0:l>1?1:l;m2=l<=0.5?l*(1+s):l+s-l*s;m1=2*l-m2;function v(h){if(h>360){h-=360}else{if(h<0){h+=360}}if(h<60){return m1+(m2-m1)*h/60}if(h<180){return m2}if(h<240){return m1+(m2-m1)*(240-h)/60}return m1}function vv(h){return Math.round(v(h)*255)}return d3_rgb(vv(h+120),vv(h),vv(h-120))}d3.hcl=function(h,c,l){return arguments.length===1?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)};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}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()};function d3_hcl_lab(h,c,l){if(isNaN(h)){h=0}if(isNaN(c)){c=0}return d3_lab(l,Math.cos(h*=d3_radians)*c,Math.sin(h)*c)}d3.lab=function(l,a,b){return arguments.length===1?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)};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}var d3_lab_K=18;var d3_lab_X=0.95047,d3_lab_Y=1,d3_lab_Z=1.08883;var 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)};function d3_lab_rgb(l,a,b){var y=(l+16)/116,x=y+a/500,z=y-b/200;x=d3_lab_xyz(x)*d3_lab_X;y=d3_lab_xyz(y)*d3_lab_Y;z=d3_lab_xyz(z)*d3_lab_Z;return d3_rgb(d3_xyz_rgb(3.2404542*x-1.5371385*y-0.4985314*z),d3_xyz_rgb(-0.969266*x+1.8760108*y+0.041556*z),d3_xyz_rgb(0.0556434*x-0.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(NaN,NaN,l)}function d3_lab_xyz(x){return x>0.206893034?x*x*x:(x-4/29)/7.787037}function d3_xyz_lab(x){return x>0.008856?Math.pow(x,1/3):7.787037*x+4/29}function d3_xyz_rgb(r){return Math.round(255*(r<=0.00304?12.92*r:1.055*Math.pow(r,1/2.4)-0.055))}d3.rgb=function(r,g,b){return arguments.length===1?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)};function d3_rgbNumber(value){return d3_rgb(value>>16,value>>8&255,value&255)}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}var d3_rgbPrototype=d3_Rgb.prototype=new d3_Color();d3_rgbPrototype.brighter=function(k){k=Math.pow(0.7,arguments.length?k:1);var r=this.r,g=this.g,b=this.b,i=30;if(!r&&!g&&!b){return d3_rgb(i,i,i)}if(r&&r>4;r=r>>4|r;g=color&240;g=g>>4|g;b=color&15;b=b<<4|b}else{if(format.length===7){r=(color&16711680)>>16;g=(color&65280)>>8;b=color&255}}}return rgb(r,g,b)}function d3_rgb_hsl(r,g,b){var min=Math.min(r/=255,g/=255,b/=255),max=Math.max(r,g,b),d=max-min,h,s,l=(max+min)/2;if(d){s=l<0.5?d/(max+min):d/(2-max-min);if(r==max){h=(g-b)/d+(g0&&l<1?0:h}return 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((0.4124564*r+0.3575761*g+0.1804375*b)/d3_lab_X),y=d3_xyz_lab((0.2126729*r+0.7151522*g+0.072175*b)/d3_lab_Y),z=d3_xyz_lab((0.0193339*r+0.119192*g+0.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)<=0.04045?r/12.92:Math.pow((r+0.055)/1.055,2.4)}function d3_rgb_parseNumber(c){var f=parseFloat(c);return c.charAt(c.length-1)==="%"?Math.round(f*2.55):f}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))});function d3_functor(v){return typeof v==="function"?v:function(){return v}}d3.functor=d3_functor;function d3_identity(d){return d}d3.xhr=d3_xhrType(d3_identity);function d3_xhrType(response){return function(url,mimeType,callback){if(arguments.length===2&&typeof mimeType==="function"){callback=mimeType,mimeType=null}return d3_xhr(url,mimeType,response,callback)}}function d3_xhr(url,mimeType,response,callback){var xhr={},dispatch=d3.dispatch("beforesend","progress","load","error"),headers={},request=new XMLHttpRequest(),responseType=null;if(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()};function respond(){var status=request.status,result;if(!status&&request.responseText||status>=200&&status<300||status===304){try{result=response.call(xhr,request)}catch(e){dispatch.error.call(xhr,e);return}dispatch.load.call(xhr,result)}else{dispatch.error.call(xhr,request)}}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){name=(name+"").toLowerCase();if(arguments.length<2){return headers[name]}if(value==null){delete headers[name]}else{headers[name]=value+""}return xhr};xhr.mimeType=function(value){if(!arguments.length){return mimeType}mimeType=value==null?null:value+"";return xhr};xhr.responseType=function(value){if(!arguments.length){return responseType}responseType=value;return xhr};xhr.response=function(value){response=value;return 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(arguments.length===2&&typeof data==="function"){callback=data,data=null}request.open(method,url,true);if(mimeType!=null&&!("accept" in headers)){headers.accept=mimeType+",*/*"}if(request.setRequestHeader){for(var name in headers){request.setRequestHeader(name,headers[name])}}if(mimeType!=null&&request.overrideMimeType){request.overrideMimeType(mimeType)}if(responseType!=null){request.responseType=responseType}if(callback!=null){xhr.on("error",callback).on("load",function(request){callback(null,request)})}dispatch.beforesend.call(xhr,request);request.send(data==null?null:data);return xhr};xhr.abort=function(){request.abort();return xhr};d3.rebind(xhr,dispatch,"on");return callback==null?xhr:xhr.get(d3_xhr_fixCallback(callback))}function d3_xhr_fixCallback(callback){return callback.length===1?function(error,request){callback(error==null?request:null)}:callback}d3.dsv=function(delimiter,mimeType){var reFormat=new RegExp('["'+delimiter+"\n]"),delimiterCode=delimiter.charCodeAt(0);function dsv(url,row,callback){if(arguments.length<3){callback=row,row=null}var xhr=d3_xhr(url,mimeType,row==null?response:typedResponse(row),callback);xhr.row=function(_){return arguments.length?xhr.response((row=_)==null?response:typedResponse(_)):row};return xhr}function response(request){return dsv.parse(request.responseText)}function typedResponse(f){return function(request){return dsv.parse(request.responseText,f)}}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){var EOL={},EOF={},rows=[],N=text.length,I=0,n=0,t,eol;function token(){if(I>=N){return EOF}if(eol){return eol=false,EOL}var j=I;if(text.charCodeAt(j)===34){var i=j;while(i++24){if(isFinite(delay)){clearTimeout(d3_timer_timeout);d3_timer_timeout=setTimeout(d3_timer_step,delay)}d3_timer_interval=0}else{d3_timer_interval=1;d3_timer_frame(d3_timer_step)}}d3.timer.flush=function(){d3_timer_mark();d3_timer_sweep()};function d3_timer_mark(){var now=Date.now();d3_timer_active=d3_timer_queueHead;while(d3_timer_active){if(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(){var t0,t1=d3_timer_queueHead,time=Infinity;while(t1){if(t1.f){t1=t0?t0.n=t1.n:d3_timer_queueHead=t1.n}else{if(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){var i=value.length,t=[],j=0,g=locale_grouping[0];while(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=false;if(precision){precision=+precision.substring(1)}if(zfill||fill==="0"&&align==="="){zfill=fill="0";align="=";if(comma){width-=Math.floor((width-1)/4)}}switch(type){case"n":comma=true;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":if(symbol==="#"){prefix="0"+type.toLowerCase()}case"c":case"d":integer=true;precision=0;break;case"s":scale=-1;type="r";break}if(symbol==="$"){prefix=locale_currency[0],suffix=locale_currency[1]}if(type=="r"&&!precision){type="g"}if(precision!=null){if(type=="g"){precision=Math.max(1,Math.min(21,precision))}else{if(type=="e"||type=="f"){precision=Math.max(0,Math.min(20,precision))}}}type=d3_format_types.get(type)||d3_format_typeDefault;var zcomma=zfill&,return function(value){var fullSuffix=suffix;if(integer&&value%1){return""}var negative=value<0||value===0&&1/value<0?(value=-value,"-"):sign;if(scale<0){var unit=d3.formatPrefix(value,precision);value=unit.scale(value);fullSuffix=unit.symbol+suffix}else{value*=scale}value=type(value,precision);var i=value.lastIndexOf("."),before=i<0?value:value.substring(0,i),after=i<0?"":locale_decimal+value.substring(i+1);if(!zfill&&comma){before=formatGroup(before)}var length=prefix.length+before.length+after.length+(zcomma?0:negative.length),padding=length"?padding+negative+value:align==="^"?padding.substring(0,length>>=1)+negative+value+padding.substring(length):negative+(zcomma?value:padding+value))+fullSuffix}}}var d3_format_re=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i;var 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))))}});function d3_format_typeDefault(x){return x+""}var d3_time=d3.time={},d3_date=Date;function d3_date_utc(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}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;function d3_time_interval(local,step,number){function round(date){var d0=local(date),d1=offset(d0,1);return date-d01){while(time=m){return -1}c=template.charCodeAt(i++);if(c===37){t=template.charAt(i++);p=d3_time_parsers[t in d3_time_formatPads?template.charAt(i++):t];if(!p||(j=p(date,string,j))<0){return -1}}else{if(c!=string.charCodeAt(j++)){return -1}}}return j}d3_time_format.utc=function(template){var local=d3_time_format(template);function format(date){try{d3_date=d3_date_utc;var utc=new d3_date();utc._=date;return local(utc)}finally{d3_date=Date}}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;return 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()%10000,p,4)},Z:d3_time_zone,"%":function(){return"%"}};var 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};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 n==null?-1:(date.p=n,i)}return d3_time_format}var d3_time_formatPads={"-":"",_:" ","0":"0"},d3_time_numberRe=/^\s*\d+/,d3_time_percentRe=/^%/;function d3_time_formatPad(value,fill,width){var sign=value<0?"-":"",string=(sign?-value:value)+"",length=string.length;return sign+(length68?1900:2000)}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){var n=formats.length,i=-1;while(++i=0?1:-1,adλ=sdλ*dλ,cosφ=Math.cos(φ),sinφ=Math.sin(φ),k=sinφ0*sinφ,u=cosφ0*cosφ+k*Math.cos(adλ),v=k*sdλ*Math.sin(adλ);d3_geo_areaRingSum.add(Math.atan2(v,u));λ0=λ,cosφ0=cosφ,sinφ0=sinφ}d3_geo_area.lineEnd=function(){nextPoint(λ00,φ00)}}function d3_geo_cartesian(spherical){var λ=spherical[0],φ=spherical[1],cosφ=Math.cos(φ);return[cosφ*Math.cos(λ),cosφ*Math.sin(λ),Math.sin(φ)]}function d3_geo_cartesianDot(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]}function d3_geo_cartesianCross(a,b){return[a[1]*b[2]-a[2]*b[1],a[2]*b[0]-a[0]*b[2],a[0]*b[1]-a[1]*b[0]]}function d3_geo_cartesianAdd(a,b){a[0]+=b[0];a[1]+=b[1];a[2]+=b[2]}function d3_geo_cartesianScale(vector,k){return[vector[0]*k,vector[1]*k,vector[2]*k]}function d3_geo_cartesianNormalize(d){var l=Math.sqrt(d[0]*d[0]+d[1]*d[1]+d[2]*d[2]);d[0]/=l;d[1]/=l;d[2]/=l}function d3_geo_spherical(cartesian){return[Math.atan2(cartesian[1],cartesian[0]),d3_asin(cartesian[2])]}function d3_geo_sphericalEqual(a,b){return abs(a[0]-b[0])<ε&&abs(a[1]-b[1])<ε}d3.geo.bounds=function(){var λ0,φ0,λ1,φ1,λ_,λ__,φ__,p0,dλSum,ranges,range;var bound={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){bound.point=ringPoint;bound.lineStart=ringStart;bound.lineEnd=ringEnd;dλSum=0;d3_geo_area.polygonStart()},polygonEnd:function(){d3_geo_area.polygonEnd();bound.point=point;bound.lineStart=lineStart;bound.lineEnd=lineEnd;if(d3_geo_areaRingSum<0){λ0=-(λ1=180),φ0=-(φ1=90)}else{if(dλSum>ε){φ1=90}else{if(dλSum<-ε){φ0=-90}}}range[0]=λ0,range[1]=λ1}};function point(λ,φ){ranges.push(range=[λ0=λ,λ1=λ]);if(φ<φ0){φ0=φ}if(φ>φ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^(s*λ_<λi&&λiφ1){φ1=φi}}else{if(λi=(λi+360)%360-180,antimeridian^(s*λ_<λi&&λiφ1){φ1=φ}}}if(antimeridian){if(λ<λ_){if(angle(λ0,λ)>angle(λ0,λ1)){λ1=λ}}else{if(angle(λ,λ1)>angle(λ0,λ1)){λ0=λ}}}else{if(λ1>=λ0){if(λ<λ0){λ0=λ}if(λ>λ1){λ1=λ}}else{if(λ>λ_){if(angle(λ0,λ)>angle(λ0,λ1)){λ1=λ}}else{if(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();if(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]:xangle(a[0],a[1])){a[1]=b[1]}if(angle(b[0],a[1])>angle(a[0],a[1])){a[0]=b[0]}}else{merged.push(a=b)}}var best=-Infinity,dλ;for(var n=merged.length-1,i=0,a=merged[n],b;i<=n;a=b,++i){b=merged[i];if((dλ=angle(a[1],b[0]))>best){best=dλ,λ0=b[0],λ1=a[1]}}}ranges=range=null;return λ0===Infinity||φ0===Infinity?[[NaN,NaN],[NaN,NaN]]:[[λ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;if(m<ε2){x=d3_geo_centroidX1,y=d3_geo_centroidY1,z=d3_geo_centroidZ1;if(d3_geo_centroidW1<ε){x=d3_geo_centroidX0,y=d3_geo_centroidY0,z=d3_geo_centroidZ0}m=x*x+y*y+z*z;if(m<ε2){return[NaN,NaN]}}return[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;var 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}};function d3_geo_centroidPoint(λ,φ){λ*=d3_radians;var cosφ=Math.cos(φ*=d3_radians);d3_geo_centroidPointXYZ(cosφ*Math.cos(λ),cosφ*Math.sin(λ),Math.sin(φ))}function d3_geo_centroidPointXYZ(x,y,z){++d3_geo_centroidW0;d3_geo_centroidX0+=(x-d3_geo_centroidX0)/d3_geo_centroidW0;d3_geo_centroidY0+=(y-d3_geo_centroidY0)/d3_geo_centroidW0;d3_geo_centroidZ0+=(z-d3_geo_centroidZ0)/d3_geo_centroidW0}function d3_geo_centroidLineStart(){var x0,y0,z0;d3_geo_centroid.point=function(λ,φ){λ*=d3_radians;var cosφ=Math.cos(φ*=d3_radians);x0=cosφ*Math.cos(λ);y0=cosφ*Math.sin(λ);z0=Math.sin(φ);d3_geo_centroid.point=nextPoint;d3_geo_centroidPointXYZ(x0,y0,z0)};function nextPoint(λ,φ){λ*=d3_radians;var cosφ=Math.cos(φ*=d3_radians),x=cosφ*Math.cos(λ),y=cosφ*Math.sin(λ),z=Math.sin(φ),w=Math.atan2(Math.sqrt((w=y0*z-z0*y)*w+(w=z0*x-x0*z)*w+(w=x0*y-y0*x)*w),x0*x+y0*y+z0*z);d3_geo_centroidW1+=w;d3_geo_centroidX1+=w*(x0+(x0=x));d3_geo_centroidY1+=w*(y0+(y0=y));d3_geo_centroidZ1+=w*(z0+(z0=z));d3_geo_centroidPointXYZ(x0,y0,z0)}}function d3_geo_centroidLineEnd(){d3_geo_centroid.point=d3_geo_centroidPoint}function d3_geo_centroidRingStart(){var λ00,φ00,x0,y0,z0;d3_geo_centroid.point=function(λ,φ){λ00=λ,φ00=φ;d3_geo_centroid.point=nextPoint;λ*=d3_radians;var cosφ=Math.cos(φ*=d3_radians);x0=cosφ*Math.cos(λ);y0=cosφ*Math.sin(λ);z0=Math.sin(φ);d3_geo_centroidPointXYZ(x0,y0,z0)};d3_geo_centroid.lineEnd=function(){nextPoint(λ00,φ00);d3_geo_centroid.lineEnd=d3_geo_centroidLineEnd;d3_geo_centroid.point=d3_geo_centroidPoint};function nextPoint(λ,φ){λ*=d3_radians;var cosφ=Math.cos(φ*=d3_radians),x=cosφ*Math.cos(λ),y=cosφ*Math.sin(λ),z=Math.sin(φ),cx=y0*z-z0*y,cy=z0*x-x0*z,cz=x0*y-y0*x,m=Math.sqrt(cx*cx+cy*cy+cz*cz),u=x0*x+y0*y+z0*z,v=m&&-d3_acos(u)/m,w=Math.atan2(m,u);d3_geo_centroidX2+=v*cx;d3_geo_centroidY2+=v*cy;d3_geo_centroidZ2+=v*cz;d3_geo_centroidW1+=w;d3_geo_centroidX1+=w*(x0+(x0=x));d3_geo_centroidY1+=w*(y0+(y0=y));d3_geo_centroidZ1+=w*(z0+(z0=z));d3_geo_centroidPointXYZ(x0,y0,z0)}}function d3_true(){return true}function d3_geo_clipPolygon(segments,compare,clipStartInside,interpolate,listener){var subject=[],clip=[];segments.forEach(function(segment){if((n=segment.length-1)<=0){return}var n,p0=segment[0],p1=segment[n];if(d3_geo_sphericalEqual(p0,p1)){listener.lineStart();for(var i=0;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)){return}var n,i=0,a=array[0],b;while(++i1&&clean&2){ringSegments.push(ringSegments.pop().concat(ringSegments.shift()))}segments.push(ringSegments.filter(d3_geo_clipSegmentLength1))}return clip}}function d3_geo_clipSegmentLength1(segment){return segment.length>1}function d3_geo_clipBufferListener(){var lines=[],line;return{lineStart:function(){lines.push(line=[])},point:function(λ,φ){line.push([λ,φ])},lineEnd:d3_noop,buffer:function(){var buffer=lines;lines=[];line=null;return buffer},rejoin:function(){if(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;i=0?1:-1,adλ=sdλ*dλ,antimeridian=adλ>π,k=sinφ0*sinφ;d3_geo_areaRingSum.add(Math.atan2(k*sdλ*Math.sin(adλ),cosφ0*cosφ+k*Math.cos(adλ)));polarAngle+=antimeridian?dλ+sdλ*τ:dλ;if(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]);if(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<ε&&d3_geo_areaRingSum<0)^winding&1}var d3_geo_clipAntimeridian=d3_geo_clip(d3_true,d3_geo_clipAntimeridianLine,d3_geo_clipAntimeridianInterpolate,[-π,-π/2]);function d3_geo_clipAntimeridianLine(listener){var λ0=NaN,φ0=NaN,sλ0=NaN,clean;return{lineStart:function(){listener.lineStart();clean=1},point:function(λ1,φ1){var sλ1=λ1>0?π:-π,dλ=abs(λ1-λ0);if(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}else{if(sλ0!==sλ1&&dλ>=π){if(abs(λ0-sλ0)<ε){λ0-=sλ0*ε}if(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=NaN},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(from==null){φ=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]0,notHemisphere=abs(cr)>ε,interpolate=d3_geo_circleInterpolate(radius,6*d3_radians);return d3_geo_clip(visible,clipLine,interpolate,smallRadius?[0,-radius]:[-π,radius-π]);function visible(λ,φ){return Math.cos(λ)*Math.cos(φ)>cr}function clipLine(listener){var point0,c0,v0,v00,clean;return{lineStart:function(){v00=v0=false;clean=1},point:function(λ,φ){var point1=[λ,φ],point2,v=visible(λ,φ),c=smallRadius?v?0:code(λ,φ):v?code(λ+(λ<0?π:-π),φ):0;if(!point0&&(v00=v0=v)){listener.lineStart()}if(v!==v0){point2=intersect(point0,point1);if(d3_geo_sphericalEqual(point0,point2)||d3_geo_sphericalEqual(point1,point2)){point1[0]+=ε;point1[1]+=ε;v=visible(point1[0],point1[1])}}if(v!==v0){clean=0;if(v){listener.lineStart();point2=intersect(point1,point0);listener.point(point2[0],point2[1])}else{point2=intersect(point0,point1);listener.point(point2[0],point2[1]);listener.lineEnd()}point0=point2}else{if(notHemisphere&&point0&&smallRadius^v){var t;if(!(c&c0)&&(t=intersect(point1,point0,true))){clean=0;if(smallRadius){listener.lineStart();listener.point(t[0][0],t[0][1]);listener.point(t[1][0],t[1][1]);listener.lineEnd()}else{listener.point(t[1][0],t[1][1]);listener.lineEnd();listener.lineStart();listener.point(t[0][0],t[0][1])}}}}if(v&&(!point0||!d3_geo_sphericalEqual(point0,point1))){listener.point(point1[0],point1[1])}point0=point1,v0=v,c0=c},lineEnd:function(){if(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);var 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(t2<0){return}var t=Math.sqrt(t2),q=d3_geo_cartesianScale(u,(-w-t)/uu);d3_geo_cartesianAdd(q,A);q=d3_geo_spherical(q);if(!two){return q}var λ0=a[0],λ1=b[0],φ0=a[1],φ1=b[1],z;if(λ1<λ0){z=λ0,λ0=λ1,λ1=z}var δλ=λ1-λ0,polar=abs(δλ-π)<ε,meridian=polar||δλ<ε;if(!polar&&φ1<φ0){z=φ0,φ0=φ1,φ1=z}if(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);d3_geo_cartesianAdd(q1,A);return[q,d3_geo_spherical(q1)]}}function code(λ,φ){var r=smallRadius?radius:π-radius,code=0;if(λ<-r){code|=1}else{if(λ>r){code|=2}}if(φ<-r){code|=4}else{if(φ>r){code|=8}}return code}}function d3_geom_clipLine(x0,y0,x1,y1){return function(line){var 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,r;r=x0-ax;if(!dx&&r>0){return}r/=dx;if(dx<0){if(r0){if(r>t1){return}if(r>t0){t0=r}}}r=x1-ax;if(!dx&&r<0){return}r/=dx;if(dx<0){if(r>t1){return}if(r>t0){t0=r}}else{if(dx>0){if(r0){return}r/=dy;if(dy<0){if(r0){if(r>t1){return}if(r>t0){t0=r}}}r=y1-ay;if(!dy&&r<0){return}r/=dy;if(dy<0){if(r>t1){return}if(r>t0){t0=r}}else{if(dy>0){if(r0){line.a={x:ax+t0*dx,y:ay+t0*dy}}if(t1<1){line.b={x:ax+t1*dx,y:ay+t1*dy}}return line}}var d3_geo_clipExtentMAX=1000000000;d3.geo.clipExtent=function(){var x0,y0,x1,y1,stream,clip,clipExtent={stream:function(output){if(stream){stream.valid=false}stream=clip(output);stream.valid=true;return stream},extent:function(_){if(!arguments.length){return[[x0,y0],[x1,y1]]}clip=d3_geo_clipExtent(x0=+_[0][0],y0=+_[0][1],x1=+_[1][0],y1=+_[1][1]);if(stream){stream.valid=false,stream=null}return clipExtent}};return clipExtent.extent([[0,0],[960,500]])};function d3_geo_clipExtent(x0,y0,x1,y1){return function(listener){var listener_=listener,bufferListener=d3_geo_clipBufferListener(),clipLine=d3_geom_clipLine(x0,y0,x1,y1),segments,polygon,ring;var clip={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){listener=bufferListener;segments=[];polygon=[];clean=true},polygonEnd:function(){listener=listener_;segments=d3.merge(segments);var clipStartInside=insidePolygon([x0,y1]),inside=clean&&clipStartInside,visible=segments.length;if(inside||visible){listener.polygonStart();if(inside){listener.lineStart();interpolate(null,null,1,listener);listener.lineEnd()}if(visible){d3_geo_clipPolygon(segments,compare,clipStartInside,interpolate,listener)}listener.polygonEnd()}segments=polygon=ring=null}};function insidePolygon(p){var wn=0,n=polygon.length,y=p[1];for(var i=0;iy&&d3_cross2d(a,b,p)>0){++wn}}else{if(b[1]<=y&&d3_cross2d(a,b,p)<0){--wn}}a=b}}return wn!==0}function interpolate(from,to,direction,listener){var a=0,a1=0;if(from==null||(a=corner(from,direction))!==(a1=corner(to,direction))||comparePoints(from,to)<0^direction>0){do{listener.point(a===0||a===3?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 x0<=x&&x<=x1&&y0<=y&&y<=y1}function point(x,y){if(pointVisible(x,y)){listener.point(x,y)}}var x__,y__,v__,x_,y_,v_,first,clean;function lineStart(){clip.point=linePoint;if(polygon){polygon.push(ring=[])}first=true;v_=false;x_=y_=NaN}function lineEnd(){if(segments){linePoint(x__,y__);if(v__&&v_){bufferListener.rejoin()}segments.push(bufferListener.buffer())}clip.point=point;if(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])}if(first){x__=x,y__=y,v__=v;first=false;if(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}};if(clipLine(l)){if(!v_){listener.lineStart();listener.point(l.a.x,l.a.y)}listener.point(l.b.x,l.b.y);if(!v){listener.lineEnd()}clean=false}else{if(v){listener.lineStart();listener.point(x,y);clean=false}}}}x_=x,y_=y,v_=v}return clip};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:ca===0?b[1]-a[1]:ca===1?a[0]-b[0]:ca===2?a[1]-b[1]:b[0]-a[0]}}function d3_geo_compose(a,b){function compose(x,y){return x=a(x,y),b(x[0],x[1])}if(a.invert&&b.invert){compose.invert=function(x,y){return x=b.invert(x,y),x&&a.invert(x[0],x[1])}}return compose}function d3_geo_conic(projectAt){var φ0=0,φ1=π/3,m=d3_geo_projectionMutator(projectAt),p=m(φ0,φ1);p.parallels=function(_){if(!arguments.length){return[φ0/π*180,φ1/π*180]}return m(φ0=_[0]*π/180,φ1=_[1]*π/180)};return p}function d3_geo_conicEqualArea(φ0,φ1){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;function forward(λ,φ){var ρ=Math.sqrt(C-2*n*Math.sin(φ))/n;return[ρ*Math.sin(λ*=n),ρ0-ρ*Math.cos(λ)]}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))]};return forward}(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([-0.6,38.7]).parallels([29.5,45.5]).scale(1070)};d3.geo.albersUsa=function(){var lower48=d3.geo.albers();var alaska=d3.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]);var hawaii=d3.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]);var point,pointStream={point:function(x,y){point=[x,y]}},lower48Point,alaskaPoint,hawaiiPoint;function albersUsa(coordinates){var x=coordinates[0],y=coordinates[1];point=null;(lower48Point(x,y),point)||(alaskaPoint(x,y),point)||hawaiiPoint(x,y);return point}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>=0.12&&y<0.234&&x>=-0.425&&x<-0.214?alaska:y>=0.166&&y<0.234&&x>=-0.214&&x<-0.115?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(_){if(!arguments.length){return lower48.precision()}lower48.precision(_);alaska.precision(_);hawaii.precision(_);return albersUsa};albersUsa.scale=function(_){if(!arguments.length){return lower48.scale()}lower48.scale(_);alaska.scale(_*0.35);hawaii.scale(_);return albersUsa.translate(lower48.translate())};albersUsa.translate=function(_){if(!arguments.length){return lower48.translate()}var k=lower48.scale(),x=+_[0],y=+_[1];lower48Point=lower48.translate(_).clipExtent([[x-0.455*k,y-0.238*k],[x+0.455*k,y+0.238*k]]).stream(pointStream).point;alaskaPoint=alaska.translate([x-0.307*k,y+0.201*k]).clipExtent([[x-0.425*k+ε,y+0.12*k+ε],[x-0.214*k-ε,y+0.234*k-ε]]).stream(pointStream).point;hawaiiPoint=hawaii.translate([x-0.205*k,y+0.212*k]).clipExtent([[x-0.214*k+ε,y+0.166*k+ε],[x-0.115*k-ε,y+0.234*k-ε]]).stream(pointStream).point;return albersUsa};return albersUsa.scale(1070)};var d3_geo_pathAreaSum,d3_geo_pathAreaPolygon,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)}};function d3_geo_pathAreaRingStart(){var x00,y00,x0,y0;d3_geo_pathArea.point=function(x,y){d3_geo_pathArea.point=nextPoint;x00=x0=x,y00=y0=y};function nextPoint(x,y){d3_geo_pathAreaPolygon+=y0*x-x0*y;x0=x,y0=y}d3_geo_pathArea.lineEnd=function(){nextPoint(x00,y00)}}var d3_geo_pathBoundsX0,d3_geo_pathBoundsY0,d3_geo_pathBoundsX1,d3_geo_pathBoundsY1;var d3_geo_pathBounds={point:d3_geo_pathBoundsPoint,lineStart:d3_noop,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop};function d3_geo_pathBoundsPoint(x,y){if(xd3_geo_pathBoundsX1){d3_geo_pathBoundsX1=x}if(yd3_geo_pathBoundsY1){d3_geo_pathBoundsY1=y}}function d3_geo_pathBuffer(){var pointCircle=d3_geo_pathBufferCircle(4.5),buffer=[];var 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(_){pointCircle=d3_geo_pathBufferCircle(_);return stream},result:function(){if(buffer.length){var result=buffer.join("");buffer=[];return result}}};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")}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"}var 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}};function d3_geo_pathCentroidPoint(x,y){d3_geo_centroidX0+=x;d3_geo_centroidY0+=y;++d3_geo_centroidZ0}function d3_geo_pathCentroidLineStart(){var x0,y0;d3_geo_pathCentroid.point=function(x,y){d3_geo_pathCentroid.point=nextPoint;d3_geo_pathCentroidPoint(x0=x,y0=y)};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)}}function d3_geo_pathCentroidLineEnd(){d3_geo_pathCentroid.point=d3_geo_pathCentroidPoint}function d3_geo_pathCentroidRingStart(){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)};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+=z*3;d3_geo_pathCentroidPoint(x0=x,y0=y)}d3_geo_pathCentroid.lineEnd=function(){nextPoint(x00,y00)}}function d3_geo_pathContext(context){var pointRadius=4.5;var 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(_){pointRadius=_;return stream},result:d3_noop};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()}return stream}function d3_geo_resample(project){var δ2=0.5,cosMinDistance=Math.cos(30*d3_radians),maxDepth=16;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){var λ00,φ00,x00,y00,a00,b00,c00,λ0,x0,y0,a0,b0,c0;var resample={point:point,lineStart:lineStart,lineEnd:lineEnd,polygonStart:function(){stream.polygonStart();resample.lineStart=ringStart},polygonEnd:function(){stream.polygonEnd();resample.lineStart=lineStart}};function point(x,y){x=project(x,y);stream.point(x[0],x[1])}function lineStart(){x0=NaN;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()}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;if(dz*dz/d2>δ2||abs((dx*dx2+dy*dy2)/d2-0.5)>0.3||a0*a1+b0*b1+c0*c10&&16;return resample};return resample}d3.geo.path=function(){var pointRadius=4.5,projection,context,projectStream,contextStream,cacheStream;function path(object){if(object){if(typeof pointRadius==="function"){contextStream.pointRadius(+pointRadius.apply(this,arguments))}if(!cacheStream||!cacheStream.valid){cacheStream=projectStream(contextStream)}d3.geo.stream(object,cacheStream)}return contextStream.result()}path.area=function(object){d3_geo_pathAreaSum=0;d3.geo.stream(object,projectStream(d3_geo_pathArea));return d3_geo_pathAreaSum};path.centroid=function(object){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));return 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]:[NaN,NaN]};path.bounds=function(object){d3_geo_pathBoundsX1=d3_geo_pathBoundsY1=-(d3_geo_pathBoundsX0=d3_geo_pathBoundsY0=Infinity);d3.geo.stream(object,projectStream(d3_geo_pathBounds));return[[d3_geo_pathBoundsX0,d3_geo_pathBoundsY0],[d3_geo_pathBoundsX1,d3_geo_pathBoundsY1]]};path.projection=function(_){if(!arguments.length){return projection}projectStream=(projection=_)?_.stream||d3_geo_pathProjectStream(_):d3_identity;return reset()};path.context=function(_){if(!arguments.length){return context}contextStream=(context=_)==null?new d3_geo_pathBuffer():new d3_geo_pathContext(_);if(typeof pointRadius!=="function"){contextStream.pointRadius(pointRadius)}return reset()};path.pointRadius=function(_){if(!arguments.length){return pointRadius}pointRadius=typeof _==="function"?_:(contextStream.pointRadius(+_),+_);return path};function reset(){cacheStream=null;return path}return path.projection(d3.geo.albersUsa()).context(null)};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))}}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}}};function d3_geo_transform(stream){this.stream=stream}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()}};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()}}}d3.geo.projection=d3_geo_projection;d3.geo.projectionMutator=d3_geo_projectionMutator;function d3_geo_projection(project){return d3_geo_projectionMutator(function(){return project})()}function d3_geo_projectionMutator(projectAt){var project,rotate,projectRotate,projectResample=d3_geo_resample(function(x,y){x=project(x,y);return[x[0]*k+δx,δy-x[1]*k]}),k=150,x=480,y=250,λ=0,φ=0,δλ=0,δφ=0,δγ=0,δx,δy,preclip=d3_geo_clipAntimeridian,postclip=d3_identity,clipAngle=null,clipExtent=null,stream;function projection(point){point=projectRotate(point[0]*d3_radians,point[1]*d3_radians);return[point[0]*k+δx,δy-point[1]*k]}function invert(point){point=projectRotate.invert((point[0]-δx)/k,(δy-point[1])/k);return point&&[point[0]*d3_degrees,point[1]*d3_degrees]}projection.stream=function(output){if(stream){stream.valid=false}stream=d3_geo_projectionRadians(preclip(rotate,projectResample(postclip(output))));stream.valid=true;return stream};projection.clipAngle=function(_){if(!arguments.length){return clipAngle}preclip=_==null?(clipAngle=_,d3_geo_clipAntimeridian):d3_geo_clipCircle((clipAngle=+_)*d3_radians);return invalidate()};projection.clipExtent=function(_){if(!arguments.length){return clipExtent}clipExtent=_;postclip=_?d3_geo_clipExtent(_[0][0],_[0][1],_[1][0],_[1][1]):d3_identity;return invalidate()};projection.scale=function(_){if(!arguments.length){return k}k=+_;return reset()};projection.translate=function(_){if(!arguments.length){return[x,y]}x=+_[0];y=+_[1];return reset()};projection.center=function(_){if(!arguments.length){return[λ*d3_degrees,φ*d3_degrees]}λ=_[0]%360*d3_radians;φ=_[1]%360*d3_radians;return reset()};projection.rotate=function(_){if(!arguments.length){return[δλ*d3_degrees,δφ*d3_degrees,δγ*d3_degrees]}δλ=_[0]%360*d3_radians;δφ=_[1]%360*d3_radians;δγ=_.length>2?_[2]%360*d3_radians:0;return reset()};d3.rebind(projection,projectResample,"precision");function reset(){projectRotate=d3_geo_compose(rotate=d3_geo_rotation(δλ,δφ,δγ),project);var center=project(λ,φ);δx=x-center[0]*k;δy=y+center[1]*k;return invalidate()}function invalidate(){if(stream){stream.valid=false,stream=null}return projection}return function(){project=projectAt.apply(this,arguments);projection.invert=project.invert&&invert;return 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[λ,φ]}(d3.geo.equirectangular=function(){return d3_geo_projection(d3_geo_equirectangular)}).raw=d3_geo_equirectangular.invert=d3_geo_equirectangular;d3.geo.rotation=function(rotate){rotate=d3_geo_rotation(rotate[0]%360*d3_radians,rotate[1]*d3_radians,rotate.length>2?rotate[2]*d3_radians:0);function forward(coordinates){coordinates=rotate(coordinates[0]*d3_radians,coordinates[1]*d3_radians);return coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates}forward.invert=function(coordinates){coordinates=rotate.invert(coordinates[0]*d3_radians,coordinates[1]*d3_radians);return coordinates[0]*=d3_degrees,coordinates[1]*=d3_degrees,coordinates};return forward};function d3_geo_identityRotation(λ,φ){return[λ>π?λ-τ:λ<-π?λ+τ:λ,φ]}d3_geo_identityRotation.invert=d3_geo_equirectangular;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λ(δλ);rotation.invert=d3_geo_forwardRotationλ(-δλ);return rotation}function d3_geo_rotationφγ(δφ,δγ){var cosδφ=Math.cos(δφ),sinδφ=Math.sin(δφ),cosδγ=Math.cos(δγ),sinδγ=Math.sin(δγ);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δγ)]}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δφ)]};return rotation}d3.geo.circle=function(){var origin=[0,0],angle,precision=6,interpolate;function circle(){var center=typeof origin==="function"?origin.apply(this,arguments):origin,rotate=d3_geo_rotation(-center[0]*d3_radians,-center[1]*d3_radians,0).invert,ring=[];interpolate(null,null,1,{point:function(x,y){ring.push(x=rotate(x,y));x[0]*=d3_degrees,x[1]*=d3_degrees}});return{type:"Polygon",coordinates:[ring]}}circle.origin=function(x){if(!arguments.length){return origin}origin=x;return circle};circle.angle=function(x){if(!arguments.length){return angle}interpolate=d3_geo_circleInterpolate((angle=+x)*d3_radians,precision*d3_radians);return circle};circle.precision=function(_){if(!arguments.length){return precision}interpolate=d3_geo_circleInterpolate(angle*d3_radians,(precision=+_)*d3_radians);return circle};return circle.angle(90)};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;if(from!=null){from=d3_geo_circleAngle(cr,from);to=d3_geo_circleAngle(cr,to);if(direction>0?fromto){from+=direction*τ}}else{from=radius+direction*τ;to=radius-0.5*step}for(var point,t=from;direction>0?t>to:tε}).map(x)).concat(d3.range(Math.ceil(y0/dy)*dy,y1,dy).filter(function(y){return abs(y%DY)>ε}).map(y))}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(_){if(!arguments.length){return graticule.minorExtent()}return graticule.majorExtent(_).minorExtent(_)};graticule.majorExtent=function(_){if(!arguments.length){return[[X0,Y0],[X1,Y1]]}X0=+_[0][0],X1=+_[1][0];Y0=+_[0][1],Y1=+_[1][1];if(X0>X1){_=X0,X0=X1,X1=_}if(Y0>Y1){_=Y0,Y0=Y1,Y1=_}return graticule.precision(precision)};graticule.minorExtent=function(_){if(!arguments.length){return[[x0,y0],[x1,y1]]}x0=+_[0][0],x1=+_[1][0];y0=+_[0][1],y1=+_[1][1];if(x0>x1){_=x0,x0=x1,x1=_}if(y0>y1){_=y0,y0=y1,y1=_}return graticule.precision(precision)};graticule.step=function(_){if(!arguments.length){return graticule.minorStep()}return graticule.majorStep(_).minorStep(_)};graticule.majorStep=function(_){if(!arguments.length){return[DX,DY]}DX=+_[0],DY=+_[1];return graticule};graticule.minorStep=function(_){if(!arguments.length){return[dx,dy]}dx=+_[0],dy=+_[1];return graticule};graticule.precision=function(_){if(!arguments.length){return precision}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);return graticule};return graticule.majorExtent([[-180,-90+ε],[180,90-ε]]).minorExtent([[-180,-80-ε],[180,80+ε]])};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}d3.geo.greatArc=function(){var source=d3_source,source_,target=d3_target,target_;function greatArc(){return{type:"LineString",coordinates:[source_||source.apply(this,arguments),target_||target.apply(this,arguments)]}}greatArc.distance=function(){return d3.geo.distance(source_||source.apply(this,arguments),target_||target.apply(this,arguments))};greatArc.source=function(_){if(!arguments.length){return source}source=_,source_=typeof _==="function"?null:_;return greatArc};greatArc.target=function(_){if(!arguments.length){return target}target=_,target_=typeof _==="function"?null:_;return greatArc};greatArc.precision=function(){return arguments.length?greatArc:0};return 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)};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);var 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]};interpolate.distance=d;return interpolate}d3.geo.length=function(object){d3_geo_lengthSum=0;d3.geo.stream(object,d3_geo_length);return d3_geo_lengthSum};var d3_geo_lengthSum;var d3_geo_length={sphere:d3_noop,point:d3_noop,lineStart:d3_geo_lengthLineStart,lineEnd:d3_noop,polygonStart:d3_noop,polygonEnd:d3_noop};function d3_geo_lengthLineStart(){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 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φ}}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(φ)]}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/ρ)]};return azimuthal}var 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;function d3_geo_conicConformal(φ0,φ1){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;if(!n){return d3_geo_mercator}function forward(λ,φ){if(F>0){if(φ<-halfπ+ε){φ=-halfπ+ε}}else{if(φ>halfπ-ε){φ=halfπ-ε}}var ρ=F/Math.pow(t(φ),n);return[ρ*Math.sin(n*λ),F-ρ*Math.cos(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π]};return forward}(d3.geo.conicConformal=function(){return d3_geo_conic(d3_geo_conicConformal)}).raw=d3_geo_conicConformal;function d3_geo_conicEquidistant(φ0,φ1){var cosφ0=Math.cos(φ0),n=φ0===φ1?Math.sin(φ0):(cosφ0-Math.cos(φ1))/(φ1-φ0),G=cosφ0/n+φ0;if(abs(n)<ε){return d3_geo_equirectangular}function forward(λ,φ){var ρ=G-φ;return[ρ*Math.sin(n*λ),G-ρ*Math.cos(n*λ)]}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)]};return forward}(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;function d3_geo_mercator(λ,φ){return[λ,Math.log(Math.tan(π/4+φ/2))]}d3_geo_mercator.invert=function(x,y){return[x,2*Math.atan(Math.exp(y))-halfπ]};function d3_geo_mercatorProjection(project){var m=d3_geo_projection(project),scale=m.scale,translate=m.translate,clipExtent=m.clipExtent,clipAuto;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{if(clipAuto){v=null}}return v};return m.clipExtent(null)}(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;function d3_geo_transverseMercator(λ,φ){return[Math.log(Math.tan(π/4+φ/2)),-λ]}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;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])};return projection.rotate([0,0])}).raw=d3_geo_transverseMercator;d3.geom={};function d3_geom_pointX(d){return d[0]}function d3_geom_pointY(d){return d[1]}d3.geom.hull=function(vertices){var x=d3_geom_pointX,y=d3_geom_pointY;if(arguments.length){return hull(vertices)}function hull(data){if(data.length<3){return[]}var fx=d3_functor(x),fy=d3_functor(y),i,n=data.length,points=[],flippedPoints=[];for(i=0;i=0;--i){polygon.push(data[points[upper[i]][2]])}for(i=+skipLeft;i1&&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]}d3.geom.polygon=function(coordinates){d3_subclass(coordinates,d3_geom_polygonPrototype);return coordinates};var d3_geom_polygonPrototype=d3.geom.polygon.prototype=[];d3_geom_polygonPrototype.area=function(){var i=-1,n=this.length,a,b=this[n-1],area=0;while(++iε){node=node.L}else{dxr=x-d3_geom_voronoiRightBreakPoint(node,directrix);if(dxr>ε){if(!node.R){lArc=node;break}node=node.R}else{if(dxl>-ε){lArc=node.P;rArc=node}else{if(dxr>-ε){lArc=node;rArc=node.N}else{lArc=rArc=node}}break}}}var newArc=d3_geom_voronoiCreateBeach(site);d3_geom_voronoiBeaches.insert(lArc,newArc);if(!lArc&&!rArc){return}if(lArc===rArc){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);return}if(!rArc){newArc.edge=d3_geom_voronoiCreateEdge(lArc.site,newArc.site);return}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 -Infinity}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;if(aby2){return(-b+Math.sqrt(b*b-2*aby2*(hl*hl/(-2*plby2)-lfocy+plby2/2+rfocy-pby2/2)))/aby2+rfocx}return(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:Infinity}function d3_geom_voronoiCell(site){this.site=site;this.edges=[]}d3_geom_voronoiCell.prototype.prepare=function(){var halfEdges=this.edges,iHalfEdge=halfEdges.length,edge;while(iHalfEdge--){edge=halfEdges[iHalfEdge].edge;if(!edge.b||!edge.a){halfEdges.splice(iHalfEdge,1)}}halfEdges.sort(d3_geom_voronoiHalfEdgeOrder);return halfEdges.length};function d3_geom_voronoiCloseCells(extent){var x0=extent[0][0],x1=extent[1][0],y0=extent[0][1],y1=extent[1][1],x2,y2,x3,y3,cells=d3_geom_voronoiCells,iCell=cells.length,cell,iHalfEdge,halfEdges,nHalfEdges,start,end;while(iCell--){cell=cells[iCell];if(!cell||!cell.prepare()){continue}halfEdges=cell.edges;nHalfEdges=halfEdges.length;iHalfEdge=0;while(iHalfEdgeε||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){return}var lSite=lArc.site,cSite=arc.site,rSite=rArc.site;if(lSite===rSite){return}var bx=cSite.x,by=cSite.y,ax=lSite.x-bx,ay=lSite.y-by,cx=rSite.x-bx,cy=rSite.y-by;var d=2*(ax*cy-ay*cx);if(d>=-ε2){return}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;var 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;var before=null,node=d3_geom_voronoiCircles._;while(node){if(circle.y=x1){return}if(lx>rx){if(!va){va={x:fx,y:y0}}else{if(va.y>=y1){return}}vb={x:fx,y:y1}}else{if(!va){va={x:fx,y:y1}}else{if(va.y1){if(lx>rx){if(!va){va={x:(y0-fb)/fm,y:y0}}else{if(va.y>=y1){return}}vb={x:(y1-fb)/fm,y:y1}}else{if(!va){va={x:(y1-fb)/fm,y:y1}}else{if(va.y=x1){return}}vb={x:x1,y:fm*x1+fb}}else{if(!va){va={x:x1,y:fm*x1+fb}}else{if(va.x=x0&&site.x<=x1&&site.y>=y0&&site.y<=y1?[[x0,y1],[x1,y1],[x1,y0],[x0,y0]]:[];polygon.point=data[i]});return 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}})}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=[];d3_geom_voronoi(sites(data)).cells.forEach(function(cell,i){var site=cell.site,edges=cell.edges.sort(d3_geom_voronoiHalfEdgeOrder),j=-1,m=edges.length,e0,s0,e1=edges[m-1].edge,s1=e1.l===site?e1.r:e1.l;while(++jx2_){x2_=d.x}if(d.y>y2_){y2_=d.y}xs.push(d.x);ys.push(d.y)}}else{for(i=0;ix2_){x2_=x_}if(y_>y2_){y2_=y_}xs.push(x_);ys.push(y_)}}}var dx=x2_-x1_,dy=y2_-y1_;if(dx>dy){y2_=y1_+dx}else{x2_=x1_+dy}function insert(n,d,x,y,x1,y1,x2,y2){if(isNaN(x)||isNaN(y)){return}if(n.leaf){var nx=n.x,ny=n.y;if(nx!=null){if(abs(nx-x)+abs(ny-y)<0.01){insertChild(n,d,x,y,x1,y1,x2,y2)}else{var nPoint=n.point;n.x=n.y=n.point=null;insertChild(n,nPoint,nx,ny,x1,y1,x2,y2);insertChild(n,d,x,y,x1,y1,x2,y2)}}else{n.x=x,n.y=y,n.point=d}}else{insertChild(n,d,x,y,x1,y1,x2,y2)}}function insertChild(n,d,x,y,x1,y1,x2,y2){var sx=(x1+x2)*0.5,sy=(y1+y2)*0.5,right=x>=sx,bottom=y>=sy,i=(bottom<<1)+right;n.leaf=false;n=n.nodes[i]||(n.nodes[i]=d3_geom_quadtreeNode());if(right){x1=sx}else{x2=sx}if(bottom){y1=sy}else{y2=sy}insert(n,d,x,y,x1,y1,x2,y2)}var root=d3_geom_quadtreeNode();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;if(x1==null){while(++i=0&&!(f=d3.interpolators[i](a,b))){}return f}d3.interpolators=[function(a,b){var t=typeof b;return(t==="string"?d3_rgb_names.has(b)||/^(#|rgb\(|hsl\()/.test(b)?d3_interpolateRgb:d3_interpolateString:b instanceof d3_Color?d3_interpolateRgb:Array.isArray(b)?d3_interpolateArray:t==="object"&&isNaN(b)?d3_interpolateObject:d3_interpolateNumber)(a,b)}];d3.interpolateArray=d3_interpolateArray;function d3_interpolateArray(a,b){var x=[],c=[],na=a.length,nb=b.length,n0=Math.min(a.length,b.length),i;for(i=0;i=0?name.substring(0,i):name,m=i>=0?name.substring(i+1):"in";t=d3_ease.get(t)||d3_ease_default;m=d3_ease_mode.get(m)||d3_identity;return d3_ease_clamp(m(t.apply(null,d3_arraySlice.call(arguments,1))))};function d3_ease_clamp(f){return function(t){return t<=0?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 0.5*(t<0.5?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(t<=0){return 0}if(t>=1){return 1}var t2=t*t,t3=t2*t;return 4*(t<0.5?t3:3*(t-t2)+t3-0.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;if(arguments.length<2){p=0.45}if(arguments.length){s=p/τ*Math.asin(1/a)}else{a=1,s=p/4}return function(t){return 1+a*Math.pow(2,-10*t)*Math.sin((t-s)*τ/p)}}function d3_ease_back(s){if(!s){s=1.70158}return function(t){return t*t*((s+1)*t-s)}}function d3_ease_bounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+0.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+0.9375:7.5625*(t-=2.625/2.75)*t+0.984375}d3.interpolateHcl=d3_interpolateHcl;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;if(isNaN(bc)){bc=0,ac=isNaN(ac)?b.c:ac}if(isNaN(bh)){bh=0,ah=isNaN(ah)?b.h:ah}else{if(bh>180){bh-=360}else{if(bh<-180){bh+=360}}}return function(t){return d3_hcl_lab(ah+bh*t,ac+bc*t,al+bl*t)+""}}d3.interpolateHsl=d3_interpolateHsl;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;if(isNaN(bs)){bs=0,as=isNaN(as)?b.s:as}if(isNaN(bh)){bh=0,ah=isNaN(ah)?b.h:ah}else{if(bh>180){bh-=360}else{if(bh<-180){bh+=360}}}return function(t){return d3_hsl_rgb(ah+bh*t,as+bs*t,al+bl*t)+""}}d3.interpolateLab=d3_interpolateLab;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)+""}}d3.interpolateRound=d3_interpolateRound;function d3_interpolateRound(a,b){b-=a;return function(t){return Math.round(a+b*t)}}d3.transform=function(string){var g=d3_document.createElementNS(d3.ns.prefix.svg,"g");return(d3.transform=function(string){if(string!=null){g.setAttribute("transform",string);var t=g.transform.baseVal.consolidate()}return new d3_transform(t?t.matrix:d3_transformIdentity)})(string)};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;if(r0[0]*r1[1]180){rb+=360}else{if(rb-ra>180){ra+=360}}q.push({i:s.push(s.pop()+"rotate(",null,")")-2,x:d3_interpolateNumber(ra,rb)})}else{if(rb){s.push(s.pop()+"rotate("+rb+")")}}if(wa!=wb){q.push({i:s.push(s.pop()+"skewX(",null,")")-2,x:d3_interpolateNumber(wa,wb)})}else{if(wb){s.push(s.pop()+"skewX("+wb+")")}}if(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])})}else{if(kb[0]!=1||kb[1]!=1){s.push(s.pop()+"scale("+kb+")")}}n=q.length;return function(t){var i=-1,o;while(++i0){alpha=x}else{alpha=0}}else{if(x>0){event.start({type:"start",alpha:alpha=x});d3.timer(force.tick)}}return force};force.start=function(){var i,n=nodes.length,m=links.length,w=size[0],h=size[1],neighbors,o;for(i=0;imax){max=o}sums.push(o)}for(j=0;jv){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]}d3.layout.histogram=function(){var frequency=true,valuer=Number,ranger=d3_layout_histogramRange,binner=d3_layout_histogramBinSturges;function histogram(data,i){var bins=[],values=data.map(valuer,this),range=ranger.call(this,values,i),thresholds=binner.call(this,range,values,i),bin,i=-1,n=values.length,m=thresholds.length-1,k=frequency?1:1/n,x;while(++i0){i=-1;while(++i=range[0]&&x<=range[1]){bin=bins[d3.bisect(thresholds,x,1,m)-1];bin.y+=k;bin.push(data[i])}}}return bins}histogram.value=function(x){if(!arguments.length){return valuer}valuer=x;return histogram};histogram.range=function(x){if(!arguments.length){return ranger}ranger=d3_functor(x);return histogram};histogram.bins=function(x){if(!arguments.length){return binner}binner=typeof x==="number"?function(range){return d3_layout_histogramBinFixed(range,x)}:d3_functor(x);return histogram};histogram.frequency=function(x){if(!arguments.length){return frequency}frequency=!!x;return histogram};return histogram};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){var x=-1,b=+range[0],m=(range[1]-b)/n,f=[];while(++x<=n){f[x]=m*x+b}return f}function d3_layout_histogramRange(values){return[d3.min(values),d3.max(values)]}d3.layout.tree=function(){var hierarchy=d3.layout.hierarchy().sort(null).value(null),separation=d3_layout_treeSeparation,size=[1,1],nodeSize=false;function tree(d,i){var nodes=hierarchy.call(this,d,i),root=nodes[0];function firstWalk(node,previousSibling){var children=node.children,layout=node._tree;if(children&&(n=children.length)){var n,firstChild=children[0],previousChild,ancestor=firstChild,child,i=-1;while(++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}if(vim&&!d3_layout_treeRight(vop)){vop._tree.thread=vim;vop._tree.mod+=sim-sop}if(vip&&!d3_layout_treeLeft(vom)){vom._tree.thread=vip;vom._tree.mod+=sip-som;ancestor=node}}return ancestor}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;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});return nodes}tree.separation=function(x){if(!arguments.length){return separation}separation=x;return tree};tree.size=function(x){if(!arguments.length){return nodeSize?null:size}nodeSize=(size=x)==null;return tree};tree.nodeSize=function(x){if(!arguments.length){return nodeSize?size:null}nodeSize=(size=x)!=null;return tree};return d3_layout_hierarchyRebind(tree,hierarchy)};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 children=node.children,n;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)){var child,n,i=-1;while(++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)){var child,previousChild=null,i=-1,n;while(++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}d3.layout.pack=function(){var hierarchy=d3.layout.hierarchy().sort(d3_layout_packSort),padding=0,size=[1,1],radius;function pack(d,i){var nodes=hierarchy.call(this,d,i),root=nodes[0],w=size[0],h=size[1],r=radius==null?Math.sqrt:typeof radius==="function"?radius:function(){return radius};root.x=root.y=0;d3_layout_treeVisitAfter(root,function(d){d.r=+r(d.value)});d3_layout_treeVisitAfter(root,d3_layout_packSiblings);if(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})}d3_layout_packTransform(root,w/2,h/2,radius?1:1/Math.max(2*root.r/w,2*root.r/h));return nodes}pack.size=function(_){if(!arguments.length){return size}size=_;return pack};pack.radius=function(_){if(!arguments.length){return radius}radius=_==null||typeof _==="function"?_:+_;return pack};pack.padding=function(_){if(!arguments.length){return padding}padding=+_;return pack};return d3_layout_hierarchyRebind(pack,hierarchy)};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 0.999*dr*dr>dx*dx+dy*dy}function d3_layout_packSiblings(node){if(!(nodes=node.children)||!(n=nodes.length)){return}var nodes,xMin=Infinity,xMax=-Infinity,yMin=Infinity,yMax=-Infinity,a,b,c,i,j,k,n;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)}nodes.forEach(d3_layout_packLink);a=nodes[0];a.x=-a.r;a.y=0;bound(a);if(n>1){b=nodes[1];b.x=b.r;b.y=0;bound(b);if(n>2){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;for(i=3;i0){row.push(child=remaining[n-1]);row.area+=child.area;if(mode!=="squarify"||(score=worst(row,u))<=best){remaining.pop();best=score}else{row.area-=row.pop().area;position(row,u,rect,false);u=Math.min(rect.dx,rect.dy);row.length=row.area=0;best=Infinity}}if(row.length){position(row,u,rect,true);row.length=row.area=0}children.forEach(squarify)}}function stickify(node){var children=node.children;if(children&&children.length){var rect=pad(node),remaining=children.slice(),child,row=[];scale(remaining,rect.dx*rect.dy/node.value);row.area=0;while(child=remaining.pop()){row.push(child);row.area+=child.area;if(child.z!=null){position(row,child.z?rect.dx:rect.dy,rect,!remaining.length);row.length=row.area=0}}children.forEach(stickify)}}function worst(row,u){var s=row.area,r,rmax=0,rmin=Infinity,i=-1,n=row.length;while(++irmax){rmax=r}}s*=s;u*=u;return s?Math.max(u*rmax*ratio/s,s/(u*rmin*ratio)):Infinity}function position(row,u,rect,flush){var i=-1,n=row.length,x=rect.x,y=rect.y,v=u?round(row.area/u):0,o;if(u==rect.dx){if(flush||v>rect.dy){v=rect.dy}while(++irect.dx){v=rect.dx}while(++i1);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;j2?d3_scale_polylinear:d3_scale_bilinear,uninterpolate=clamp?d3_uninterpolateClamp:d3_uninterpolateNumber;output=linear(domain,range,uninterpolate,interpolate);input=linear(range,domain,uninterpolate,d3_interpolate);return scale}function scale(x){return output(x)}scale.invert=function(y){return input(y)};scale.domain=function(x){if(!arguments.length){return domain}domain=x.map(Number);return rescale()};scale.range=function(x){if(!arguments.length){return range}range=x;return rescale()};scale.rangeRound=function(x){return scale.range(x).interpolate(d3_interpolateRound)};scale.clamp=function(x){if(!arguments.length){return clamp}clamp=x;return rescale()};scale.interpolate=function(x){if(!arguments.length){return interpolate}interpolate=x;return rescale()};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){d3_scale_linearNice(domain,m);return rescale()};scale.copy=function(){return d3_scale_linear(domain,range,interpolate,clamp)};return 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){if(m==null){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;if(err<=0.15){step*=10}else{if(err<=0.35){step*=5}else{if(err<=0.75){step*=2}}}extent[0]=Math.ceil(extent[0]/step)*step;extent[1]=Math.floor(extent[1]/step)*step+step*0.5;extent[2]=step;return 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);if(format){var match=d3_format_re.exec(format);match.shift();if(match[8]==="s"){var prefix=d3.formatPrefix(Math.max(abs(range[0]),abs(range[1])));if(!match[7]){match[7]="."+d3_scale_linearPrecision(prefix.scale(range[2]))}match[8]="f";format=d3.format(match.join(""));return function(d){return format(prefix.scale(d))+prefix.symbol}}if(!match[7]){match[7]="."+d3_scale_linearFormatPrecision(match[8],range)}format=match.join("")}else{format=",."+d3_scale_linearPrecision(range[2])+"f"}return d3.format(format)}var d3_scale_linearFormatSignificant={s:1,g:1,p:1,r:1,e:1};function d3_scale_linearPrecision(value){return -Math.floor(Math.log(value)/Math.LN10+0.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(abs(range[0]),abs(range[1]))))+ +(type!=="e"):p-(type==="%")*2}d3.scale.log=function(){return d3_scale_log(d3.scale.linear().domain([0,1]),10,true,[1,10])};function d3_scale_log(linear,base,positive,domain){function log(x){return(positive?Math.log(x<0?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))}scale.invert=function(x){return pow(linear.invert(x))};scale.domain=function(x){if(!arguments.length){return domain}positive=x[0]>=0;linear.domain((domain=x.map(Number)).map(log));return scale};scale.base=function(_){if(!arguments.length){return base}base=+_;linear.domain(domain.map(log));return scale};scale.nice=function(){var niced=d3_scale_nice(domain.map(log),positive?Math:d3_scale_logNiceNegative);linear.domain(niced);domain=niced.map(pow);return 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(;i0;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}if(arguments.length<2){format=d3_scale_logFormat}else{if(typeof format!=="function"){format=d3.format(format)}}var k=Math.max(0.1,n/scale.ticks().length),f=positive?(e=1e-12,Math.ceil):(e=-1e-12,Math.floor),e;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)};return d3_scale_linearRebind(scale,linear)}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])};function d3_scale_pow(linear,exponent,domain){var powp=d3_scale_powPow(exponent),powb=d3_scale_powPow(1/exponent);function scale(x){return linear(powp(x))}scale.invert=function(x){return powb(linear.invert(x))};scale.domain=function(x){if(!arguments.length){return domain}linear.domain((domain=x.map(Number)).map(powp));return scale};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){if(!arguments.length){return exponent}powp=d3_scale_powPow(exponent=x);powb=d3_scale_powPow(1/exponent);linear.domain(domain.map(powp));return scale};scale.copy=function(){return d3_scale_pow(linear.copy(),exponent,domain)};return d3_scale_linearRebind(scale,linear)}function d3_scale_powPow(e){return function(x){return x<0?-Math.pow(-x,e):Math.pow(x,e)}}d3.scale.sqrt=function(){return d3.scale.pow().exponent(0.5)};d3.scale.ordinal=function(){return d3_scale_ordinal([],{t:"range",a:[[]]})};function d3_scale_ordinal(domain,ranger){var index,range,rangeBand;function scale(x){return range[((index.get(x)||(ranger.t==="range"?index.set(x,domain.push(x)):NaN))-1)%range.length]}function steps(start,step){return d3.range(domain.length).map(function(i){return start+step*i})}scale.domain=function(x){if(!arguments.length){return domain}domain=[];index=new d3_Map();var i=-1,n=x.length,xi;while(++i0?thresholds[y-1]:domain[0],y=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"}arc.innerRadius=function(v){if(!arguments.length){return innerRadius}innerRadius=d3_functor(v);return arc};arc.outerRadius=function(v){if(!arguments.length){return outerRadius}outerRadius=d3_functor(v);return arc};arc.startAngle=function(v){if(!arguments.length){return startAngle}startAngle=d3_functor(v);return arc};arc.endAngle=function(v){if(!arguments.length){return endAngle}endAngle=d3_functor(v);return arc};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]};return arc};var d3_svg_arcOffset=-halfπ,d3_svg_arcMax=τ-ε;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){var x=d3_geom_pointX,y=d3_geom_pointY,defined=d3_true,interpolate=d3_svg_lineLinear,interpolateKey=interpolate.key,tension=0.7;function line(data){var segments=[],points=[],i=-1,n=data.length,d,fx=d3_functor(x),fy=d3_functor(y);function segment(){segments.push("M",interpolate(projection(points),tension))}while(++i1){path.push("H",p[0])}return path.join("")}function d3_svg_lineStepBefore(points){var i=0,n=points.length,p=points[0],path=[p[0],",",p[1]];while(++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=d*3/Math.sqrt(s);m[i]=s*a;m[i+1]=s*b}}}i=-1;while(++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))}d3.svg.line.radial=function(){var line=d3_svg_line(d3_svg_lineRadial);line.radius=line.x,delete line.x;line.angle=line.y,delete line.y;return line};function d3_svg_lineRadial(points){var point,i=-1,n=points.length,r,a;while(++iπ)+",1 "+p}function curve(r0,p0,r1,p1){return"Q 0,0 "+p1}chord.radius=function(v){if(!arguments.length){return radius}radius=d3_functor(v);return chord};chord.source=function(v){if(!arguments.length){return source}source=d3_functor(v);return chord};chord.target=function(v){if(!arguments.length){return target}target=d3_functor(v);return chord};chord.startAngle=function(v){if(!arguments.length){return startAngle}startAngle=d3_functor(v);return chord};chord.endAngle=function(v){if(!arguments.length){return endAngle}endAngle=d3_functor(v);return chord};return chord};function d3_svg_chordRadius(d){return d.radius}d3.svg.diagonal=function(){var source=d3_source,target=d3_target,projection=d3_svg_diagonalProjection;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];p=p.map(projection);return"M"+p[0]+"C"+p[1]+" "+p[2]+" "+p[3]}diagonal.source=function(x){if(!arguments.length){return source}source=d3_functor(x);return diagonal};diagonal.target=function(x){if(!arguments.length){return target}target=d3_functor(x);return diagonal};diagonal.projection=function(x){if(!arguments.length){return projection}projection=x;return diagonal};return diagonal};function d3_svg_diagonalProjection(d){return[d.x,d.y]}d3.svg.diagonal.radial=function(){var diagonal=d3.svg.diagonal(),projection=d3_svg_diagonalProjection,projection_=diagonal.projection;diagonal.projection=function(x){return arguments.length?projection_(d3_svg_diagonalRadialProjection(projection=x)):projection};return diagonal};function d3_svg_diagonalRadialProjection(projection){return function(){var d=projection.apply(this,arguments),r=d[0],a=d[1]+d3_svg_arcOffset;return[r*Math.cos(a),r*Math.sin(a)]}}d3.svg.symbol=function(){var type=d3_svg_symbolType,size=d3_svg_symbolSize;function symbol(d,i){return(d3_svg_symbols.get(type.call(this,d,i))||d3_svg_symbolCircle)(size.call(this,d,i))}symbol.type=function(x){if(!arguments.length){return type}type=d3_functor(x);return symbol};symbol.size=function(x){if(!arguments.length){return size}size=d3_functor(x);return symbol};return symbol};function d3_svg_symbolSize(){return 64}function d3_svg_symbolType(){return"circle"}function d3_svg_symbolCircle(size){var r=Math.sqrt(size/π);return"M0,"+r+"A"+r+","+r+" 0 1,1 0,"+-r+"A"+r+","+r+" 0 1,1 0,"+r+"Z"}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_svg_symbolSqrt3=Math.sqrt(3),d3_svg_symbolTan30=Math.tan(30*d3_radians);function d3_transition(groups,id){d3_subclass(groups,d3_transitionPrototype);groups.id=id;return groups}var d3_transitionPrototype=[],d3_transitionId=0,d3_transitionInheritId,d3_transitionInherit;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 id=this.id,subgroups=[],subgroup,subnode,node;selector=d3_selection_selector(selector);for(var j=-1,m=this.length;++jid){return stop()}lock.active=id;transition.event&&transition.event.start.call(node,d,i);transition.tween.forEach(function(key,value){if(value=value.call(node,d,i)){tweened.push(value)}});d3.timer(function(){timer.c=tick(elapsed||1)?d3_true:tick;return 1},0,time)}function tick(elapsed){if(lock.active!==id){return stop()}var t=elapsed/duration,e=ease(t),n=tweened.length;while(n>0){tweened[--n].call(node,e)}if(t>=1){transition.event&&transition.event.end.call(node,d,i);return stop()}}function stop(){if(--lock.count){delete lock[id]}else{delete node.__transition__}return 1}},0,time)}}d3.svg.axis=function(){var scale=d3.scale.linear(),orient=d3_svg_axisDefaultOrient,innerTickSize=6,outerTickSize=6,tickPadding=3,tickArguments_=[10],tickValues=null,tickFormat_;function axis(g){g.each(function(){var g=d3.select(this);var scale0=this.__chart__||scale,scale1=this.__chart__=scale.copy();var ticks=tickValues==null?scale1.ticks?scale1.ticks.apply(scale1,tickArguments_):scale1.domain():tickValues,tickFormat=tickFormat_==null?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.order()).style("opacity",1),tickTransform;var 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);break}if(scale1.rangeBand){var x=scale1,dx=x.rangeBand()/2;scale0=scale1=function(d){return x(d)+dx}}else{if(scale0.rangeBand){scale0=scale1}else{tickExit.call(tickTransform,scale1)}}tickEnter.call(tickTransform,scale0);tickUpdate.call(tickTransform,scale1)})}axis.scale=function(x){if(!arguments.length){return scale}scale=x;return axis};axis.orient=function(x){if(!arguments.length){return orient}orient=x in d3_svg_axisOrients?x+"":d3_svg_axisDefaultOrient;return axis};axis.ticks=function(){if(!arguments.length){return tickArguments_}tickArguments_=arguments;return axis};axis.tickValues=function(x){if(!arguments.length){return tickValues}tickValues=x;return axis};axis.tickFormat=function(x){if(!arguments.length){return tickFormat_}tickFormat_=x;return axis};axis.tickSize=function(x){var n=arguments.length;if(!n){return innerTickSize}innerTickSize=+x;outerTickSize=+arguments[n-1];return axis};axis.innerTickSize=function(x){if(!arguments.length){return innerTickSize}innerTickSize=+x;return axis};axis.outerTickSize=function(x){if(!arguments.length){return outerTickSize}outerTickSize=+x;return axis};axis.tickPadding=function(x){if(!arguments.length){return tickPadding}tickPadding=+x;return axis};axis.tickSubdivide=function(){return arguments.length&&axis};return axis};var d3_svg_axisDefaultOrient="bottom",d3_svg_axisOrients={top:1,right:1,bottom:1,left:1};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)+")"})}d3.svg.brush=function(){var event=d3_eventDispatch(brush,"brushstart","brush","brushend"),x=null,y=null,xExtent=[0,0],yExtent=[0,0],xExtentDomain,yExtentDomain,xClamp=true,yClamp=true,resizes=d3_svg_brushResizes[0];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);var 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 gUpdate=d3.transition(g),backgroundUpdate=d3.transition(background),range;if(x){range=d3_scaleRange(x);backgroundUpdate.attr("x",range[0]).attr("width",range[1]-range[0]);redrawX(gUpdate)}if(y){range=d3_scaleRange(y);backgroundUpdate.attr("y",range[0]).attr("height",range[1]-range[0]);redrawY(gUpdate)}redraw(gUpdate)})}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;if(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);xExtentDomain=yExtentDomain=null;return 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"})})}else{event_({type:"brushstart"});event_({type:"brush",mode:"resize"});event_({type:"brushend"})}})};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(){var 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(),center,origin=d3.mouse(target),offset;var 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)}else{w.on("mousemove.brush",brushmove).on("mouseup.brush",brushend)}g.interrupt().selectAll("*").interrupt();if(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{if(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();function keydown(){if(d3.event.keyCode==32){if(!dragging){center=null;origin[0]-=xExtent[1];origin[1]-=yExtent[1];dragging=2}d3_eventPreventDefault()}}function keyup(){if(d3.event.keyCode==32&&dragging==2){origin[0]+=xExtent[1];origin[1]+=yExtent[1];dragging=0;d3_eventPreventDefault()}}function brushmove(){var point=d3.mouse(target),moved=false;if(offset){point[0]+=offset[0];point[1]+=offset[1]}if(!dragging){if(d3.event.altKey){if(!center){center=[(xExtent[0]+xExtent[1])/2,(yExtent[0]+yExtent[1])/2]}origin[0]=xExtent[+(point[0]1?{floor:function(date){while(skipped(date=interval.floor(date))){date=d3_time_scaleDate(date-1)}return date},ceil:function(date){while(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=interval==null?tickMethod(extent,10):typeof interval==="number"?tickMethod(extent,interval):!interval.range&&[{range:interval},skip];if(method){interval=method[0],skip=method[1]}return interval.range(extent[0],d3_time_scaleDate(+extent[1]+1),skip<1?1:skip)};scale.tickFormat=function(){return format};scale.copy=function(){return d3_time_scale(linear.copy(),methods,format)};return d3_scale_linearRebind(scale,linear)}function d3_time_scaleDate(t){return new Date(t)}var d3_time_scaleSteps=[1000,5000,15000,30000,60000,300000,900000,1800000,3600000,10800000,21600000,43200000,86400000,172800000,604800000,2592000000,7776000000,31536000000];var 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]];var 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()&&d.getDate()!=1}],["%b %d",function(d){return d.getDate()!=1}],["%B",function(d){return d.getMonth()}],["%Y",d3_true]]);var d3_time_scaleMilliseconds={range:function(start,stop,step){return d3.range(Math.ceil(start/step)*step,+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]]});var 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()&&d.getUTCDate()!=1}],["%b %d",function(d){return d.getUTCDate()!=1}],["%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)};function d3_json(request){return JSON.parse(request.responseText)}d3.html=function(url,callback){return d3_xhr(url,"text/html",d3_html,callback)};function d3_html(request){var range=d3_document.createRange();range.selectNode(d3_document.body);return range.createContextualFragment(request.responseText)}d3.xml=d3_xhrType(function(request){return request.responseXML});if(typeof define==="function"&&define.amd){define(d3)}else{if(typeof module==="object"&&module.exports){module.exports=d3}else{this.d3=d3}}}();(function(){d3.box=function(){var width=1,height=1,duration=0,domain=null,value=Number,whiskers=boxWhiskers,quartiles=boxQuartiles,tickFormat=null,scale=d3.scale.log;function box(g){g.each(function(d,i){d=d.map(value).sort(d3.ascending);var g=d3.select(this),n=d.length,min=d[0],max=d[n-1];var quartileData=d.quartiles=quartiles(d);var whiskerIndices=whiskers&&whiskers.call(this,d,i),whiskerData=whiskerIndices&&whiskerIndices.map(function(i){return d[i]});var outlierIndices=whiskerIndices?d3.range(0,whiskerIndices[0]).concat(d3.range(whiskerIndices[1]+1,n)):d3.range(n);var x1=scale().domain(domain&&domain.call(this,d,i)||[min,max]).range([height,0]);var x0=this.__chart__||scale().domain([0,Infinity]).range(x1.range());this.__chart__=x1;var center=g.selectAll("line.center").data(whiskerData?[whiskerData]:[]);center.enter().insert("line","rect").attr("class","center").attr("x1",width/2).attr("y1",function(d){return x0(d[0])}).attr("x2",width/2).attr("y2",function(d){return x0(d[1])}).style("opacity",0.000001).transition().duration(duration).style("opacity",1).attr("y1",function(d){return x1(d[0])}).attr("y2",function(d){return x1(d[1])});center.transition().duration(duration).style("opacity",1).attr("y1",function(d){return x1(d[0])}).attr("y2",function(d){return x1(d[1])});center.exit().transition().duration(duration).style("opacity",0.000001).attr("y1",function(d){return x1(d[0])}).attr("y2",function(d){return x1(d[1])}).remove();var box=g.selectAll("rect.box").data([quartileData]);box.enter().append("rect").attr("class","box").attr("x",0).attr("y",function(d){return x0(d[2])}).attr("width",width).attr("height",function(d){return x0(d[0])-x0(d[2])}).transition().duration(duration).attr("y",function(d){return x1(d[2])}).attr("height",function(d){return x1(d[0])-x1(d[2])});box.transition().duration(duration).attr("y",function(d){return x1(d[2])}).attr("height",function(d){return x1(d[0])-x1(d[2])});var medianLine=g.selectAll("line.median").data([quartileData[1]]);medianLine.enter().append("line").attr("class","median").attr("x1",0).attr("y1",x0).attr("x2",width).attr("y2",x0).transition().duration(duration).attr("y1",x1).attr("y2",x1);medianLine.transition().duration(duration).attr("y1",x1).attr("y2",x1);var whisker=g.selectAll("line.whisker").data(whiskerData||[]);whisker.enter().insert("line","circle, text").attr("class","whisker").attr("x1",0).attr("y1",x0).attr("x2",width).attr("y2",x0).style("opacity",0.000001).transition().duration(duration).attr("y1",x1).attr("y2",x1).style("opacity",1);whisker.transition().duration(duration).attr("y1",x1).attr("y2",x1).style("opacity",1);whisker.exit().transition().duration(duration).attr("y1",x1).attr("y2",x1).style("opacity",0.000001).remove();var outlier=g.selectAll("circle.outlier").data(outlierIndices,Number);outlier.enter().insert("circle","text").attr("class","outlier").attr("r",5).attr("cx",width/2).attr("cy",function(i){return x0(d[i])}).style("opacity",0.000001).transition().duration(duration).attr("cy",function(i){return x1(d[i])}).style("opacity",1);outlier.transition().duration(duration).attr("cy",function(i){return x1(d[i])}).style("opacity",1);outlier.exit().transition().duration(duration).attr("cy",function(i){return x1(d[i])}).style("opacity",0.000001).remove();var format=tickFormat||x1.tickFormat(8);var boxTick=g.selectAll("text.box").data(quartileData);boxTick.enter().append("text").attr("class","box").attr("dy",".3em").attr("dx",function(d,i){return i&1?6:-6}).attr("x",function(d,i){return i&1?width:0}).attr("y",x0).attr("text-anchor",function(d,i){return i&1?"start":"end"}).text(format).transition().duration(duration).attr("y",x1);boxTick.transition().duration(duration).text(format).attr("y",x1);var whiskerTick=g.selectAll("text.whisker").data(whiskerData||[]);whiskerTick.enter().append("text").attr("class","whisker").attr("dy",".3em").attr("dx",6).attr("x",width).attr("y",x0).text(format).style("opacity",0.000001).transition().duration(duration).attr("y",x1).style("opacity",1);whiskerTick.transition().duration(duration).text(format).attr("y",x1).style("opacity",1);whiskerTick.exit().transition().duration(duration).attr("y",x1).style("opacity",0.000001).remove()});d3.timer.flush()}box.width=function(x){if(!arguments.length){return width}width=x;return box};box.height=function(x){if(!arguments.length){return height}height=x;return box};box.tickFormat=function(x){if(!arguments.length){return tickFormat}tickFormat=x;return box};box.duration=function(x){if(!arguments.length){return duration}duration=x;return box};box.domain=function(x){if(!arguments.length){return domain}domain=x==null?x:d3.functor(x);return box};box.value=function(x){if(!arguments.length){return value}value=x;return box};box.whiskers=function(x){if(!arguments.length){return whiskers}whiskers=x;return box};box.quartiles=function(x){if(!arguments.length){return quartiles}quartiles=x;return box};box.scale=function(x){if(!arguments.length){return scale}scale=x;return box};return box};function boxWhiskers(d){return[0,d.length-1]}function boxQuartiles(d){return[d3.quantile(d,0.25),d3.quantile(d,0.5),d3.quantile(d,0.75)]}})();d3.parcoords=function(config){var __={data:[],dimensions:[],dimensionTitles:{},types:{},brushed:false,mode:"default",rate:20,width:600,height:300,margin:{top:24,right:0,bottom:12,left:0},color:"#069",composite:"source-over",alpha:0.7};extend(__,config);var pc=function(selection){selection=pc.selection=d3.select(selection);__.width=selection[0][0].clientWidth;__.height=selection[0][0].clientHeight;["shadows","marks","foreground","highlight"].forEach(function(layer){canvas[layer]=selection.append("canvas").attr("class",layer)[0][0];ctx[layer]=canvas[layer].getContext("2d")});pc.svg=selection.append("svg").attr("style","width: "+__.width+"px; height: "+__.height+"px").append("svg:g").attr("transform","translate("+__.margin.left+","+__.margin.top+")");return pc};var events=d3.dispatch.apply(this,["render","resize","highlight","brush"].concat(d3.keys(__))),w=function(){return __.width-__.margin.right-__.margin.left},h=function(){return __.height-__.margin.top-__.margin.bottom},flags={brushable:false,reorderable:false,axes:false,interactive:false,shadows:false,debug:false},xscale=d3.scale.ordinal(),yscale={},dragging={},line=d3.svg.line(),axis=d3.svg.axis().orient("left").ticks(5),g,ctx={},canvas={};var side_effects=d3.dispatch.apply(this,d3.keys(__)).on("composite",function(d){ctx.foreground.globalCompositeOperation=d.value}).on("alpha",function(d){ctx.foreground.globalAlpha=d.value}).on("width",function(d){pc.resize()}).on("height",function(d){pc.resize()}).on("margin",function(d){pc.resize()}).on("rate",function(d){rqueue.rate(d.value)}).on("data",function(d){if(flags.shadows){paths(__.data,ctx.shadows)}}).on("dimensions",function(d){xscale.domain(__.dimensions);if(flags.interactive){pc.render().updateAxes()}});pc.state=__;pc.flags=flags;getset(pc,__,events);d3.rebind(pc,events,"on");d3.rebind(pc,axis,"ticks","orient","tickValues","tickSubdivide","tickSize","tickPadding","tickFormat");function getset(obj,state,events){d3.keys(state).forEach(function(key){obj[key]=function(x){if(!arguments.length){return state[key]}var old=state[key];state[key]=x;side_effects[key].call(pc,{value:x,previous:old});events[key].call(pc,{value:x,previous:old});return obj}})}function extend(target,source){for(key in source){target[key]=source[key]}return target}pc.autoscale=function(){var defaultScales={date:function(k){return d3.time.scale().domain(d3.extent(__.data,function(d){return d[k]?d[k]:null})).nice().range([h()+1,1])},number:function(k){return d3.scale.linear().domain(d3.extent(__.data,function(d){return +d[k]})).range([h()+1,1])},string:function(k){return d3.scale.ordinal().domain(__.data.map(function(p){return p[k]})).rangePoints([h()+1,1])}};__.dimensions.forEach(function(k){yscale[k]=defaultScales[__.types[k]](k)});pc.dimensions(pc.dimensions().filter(function(p,i){var uniques=yscale[p].domain().length;if(__.types[p]=="string"&&(uniques>60||uniques<2)){return false}return true}));xscale.rangePoints([0,w()],1);pc.selection.selectAll("canvas").style("margin-top",__.margin.top+"px").style("margin-left",__.margin.left+"px").attr("width",w()+2).attr("height",h()+2);ctx.foreground.strokeStyle=__.color;ctx.foreground.lineWidth=1.4;ctx.foreground.globalCompositeOperation=__.composite;ctx.foreground.globalAlpha=__.alpha;ctx.highlight.lineWidth=3;ctx.shadows.strokeStyle="#dadada";return this};pc.detectDimensions=function(){pc.types(pc.detectDimensionTypes(__.data));pc.dimensions(d3.keys(pc.types()));return this};pc.toType=function(v){return({}).toString.call(v).match(/\s([a-zA-Z]+)/)[1].toLowerCase()};pc.toTypeCoerceNumbers=function(v){if((parseFloat(v)==v)&&(v!=null)){return"number"}return pc.toType(v)};pc.detectDimensionTypes=function(data){var types={};d3.keys(data[0]).forEach(function(col){types[col]=pc.toTypeCoerceNumbers(data[0][col])});return types};pc.render=function(){if(!__.dimensions.length){pc.detectDimensions()}if(!(__.dimensions[0] in yscale)){pc.autoscale()}pc.render[__.mode]();events.render.call(this);return this};pc.render["default"]=function(){pc.clear("foreground");if(__.brushed){__.brushed.forEach(path_foreground)}else{__.data.forEach(path_foreground)}};var rqueue=d3.renderQueue(path_foreground).rate(50).clear(function(){pc.clear("foreground")});pc.render.queue=function(){if(__.brushed){rqueue(__.brushed)}else{rqueue(__.data)}};pc.shadows=function(){flags.shadows=true;if(__.data.length>0){paths(__.data,ctx.shadows)}return this};pc.axisDots=function(){var ctx=pc.ctx.marks;ctx.globalAlpha=d3.min([1/Math.pow(data.length,1/2),1]);__.data.forEach(function(d){__.dimensions.map(function(p,i){ctx.fillRect(position(p)-0.75,yscale[p](d[p])-0.75,1.5,1.5)})});return this};function color_path(d,ctx){ctx.strokeStyle=d3.functor(__.color)(d);ctx.beginPath();__.dimensions.map(function(p,i){if(i==0){ctx.moveTo(position(p),yscale[p](d[p]))}else{ctx.lineTo(position(p),yscale[p](d[p]))}});ctx.stroke()}function paths(data,ctx){ctx.clearRect(-1,-1,w()+2,h()+2);ctx.beginPath();data.forEach(function(d){__.dimensions.map(function(p,i){if(i==0){ctx.moveTo(position(p),yscale[p](d[p]))}else{ctx.lineTo(position(p),yscale[p](d[p]))}})});ctx.stroke()}function path_foreground(d){return color_path(d,ctx.foreground)}function path_highlight(d){return color_path(d,ctx.highlight)}pc.clear=function(layer){ctx[layer].clearRect(0,0,w()+2,h()+2);return this};pc.createAxes=function(){if(g){pc.removeAxes()}g=pc.svg.selectAll(".dimension").data(__.dimensions,function(d){return d}).enter().append("svg:g").attr("class","dimension").attr("transform",function(d){return"translate("+xscale(d)+")"});g.append("svg:g").attr("class","axis").attr("transform","translate(0,0)").each(function(d){d3.select(this).call(axis.scale(yscale[d]))}).append("svg:text").attr({"text-anchor":"middle",y:0,transform:"translate(0,-12)",x:0,"class":"label"}).text(function(d){return d in __.dimensionTitles?__.dimensionTitles[d]:d});flags.axes=true;return this};pc.removeAxes=function(){g.remove();return this};pc.updateAxes=function(){var g_data=pc.svg.selectAll(".dimension").data(__.dimensions,function(d){return d});g_data.enter().append("svg:g").attr("class","dimension").attr("transform",function(p){return"translate("+position(p)+")"}).style("opacity",0).append("svg:g").attr("class","axis").attr("transform","translate(0,0)").each(function(d){d3.select(this).call(axis.scale(yscale[d]))}).append("svg:text").attr({"text-anchor":"middle",y:0,transform:"translate(0,-12)",x:0,"class":"label"}).text(String);g_data.exit().remove();g=pc.svg.selectAll(".dimension");g.transition().duration(1100).attr("transform",function(p){return"translate("+position(p)+")"}).style("opacity",1);if(flags.shadows){paths(__.data,ctx.shadows)}return this};pc.brushable=function(){if(!g){pc.createAxes()}g.append("svg:g").attr("class","brush").each(function(d){d3.select(this).call(yscale[d].brush=d3.svg.brush().y(yscale[d]).on("brushstart",function(){d3.event.sourceEvent.stopPropagation()}).on("brush",pc.brush))}).selectAll("rect").style("visibility",null).attr("x",-15).attr("width",30);flags.brushable=true;return this};pc.reorderable=function(){if(!g){pc.createAxes()}g.style("cursor","move").call(d3.behavior.drag().on("dragstart",function(d){dragging[d]=this.__origin__=xscale(d)}).on("drag",function(d){dragging[d]=Math.min(w(),Math.max(0,this.__origin__+=d3.event.dx));__.dimensions.sort(function(a,b){return position(a)-position(b)});xscale.domain(__.dimensions);pc.render();g.attr("transform",function(d){return"translate("+position(d)+")"})}).on("dragend",function(d){delete this.__origin__;delete dragging[d];d3.select(this).transition().attr("transform","translate("+xscale(d)+")");pc.render()}));flags.reorderable=true;return this};pc.adjacent_pairs=function(arr){var ret=[];for(var i=0;i_queue.length){return true}var chunk=_queue.slice(_i,_i+_rate);_i+=_rate;chunk.map(func)}d3.timer(doFrame)};rq.data=function(data){rq.invalidate();_queue=data.slice(0);return rq};rq.rate=function(value){if(!arguments.length){return _rate}_rate=value;return rq};rq.remaining=function(){return _queue.length-_i};rq.clear=function(func){if(!arguments.length){_clear();return rq}_clear=func;return rq};rq.invalidate=function(){};return rq});(function(){d3.parsets=function(){var event=d3.dispatch("sortDimensions","sortCategories"),dimensions_=autoDimensions,dimensionFormat=String,tooltip_=defaultTooltip,categoryTooltip=defaultCategoryTooltip,value_,spacing=20,width,height,tension=1,tension0,duration=500;function parsets(selection){selection.each(function(data,i){var g=d3.select(this),ordinal=d3.scale.ordinal(),dragging=false,dimensionNames=dimensions_.call(this,data,i),dimensions=[],tree={children:{},count:0},nodes,total,ribbon;d3.select(window).on("mousemove.parsets."+ ++parsetsId,unhighlight);if(tension0==null){tension0=tension}g.selectAll(".ribbon, .ribbon-mouse").data(["ribbon","ribbon-mouse"],String).enter().append("g").attr("class",String);updateDimensions();if(tension!=tension0){var t=d3.transition(g);if(t.tween){t.tween("ribbon",tensionTween)}else{tensionTween()(1)}}function tensionTween(){var i=d3.interpolateNumber(tension0,tension);return function(t){tension0=i(t);ribbon.attr("d",ribbonPath)}}function updateDimensions(){var dimension=g.selectAll("g.dimension"),cache={};dimension.each(function(d){cache[d.name]=d});dimensionNames.forEach(function(d){if(!cache.hasOwnProperty(d)){cache[d]={name:d,categories:[]}}dimensions.push(cache[d])});dimensions.sort(compareY);g.select(".ribbon").selectAll("path").each(function(d){var path=d.path.split("\0"),node=tree,n=path.length-1;for(var i=0;i0?type+" »":"« "+type);d.categories.sort(function(){return direction*f.apply(this,arguments)});nodes=layout(tree,dimensions,ordinal);updateCategories(dimension);updateRibbons();event.sortCategories()}}function updateRibbons(){ribbon=g.select(".ribbon").selectAll("path").data(nodes,function(d){return d.path});ribbon.enter().append("path").each(function(d){d.source.x0=d.source.x;d.target.x0=d.target.x}).attr("class",function(d){return"category-"+d.major}).attr("d",ribbonPath);ribbon.sort(function(a,b){return b.count-a.count});ribbon.exit().remove();var mouse=g.select(".ribbon-mouse").selectAll("path").data(nodes,function(d){return d.path});mouse.enter().append("path").on("mousemove.parsets",function(d){ribbon.classed("active",false);if(dragging){return}highlight(d=d.node,true);showTooltip(tooltip_.call(this,d));d3.event.stopPropagation()});mouse.sort(function(a,b){return b.count-a.count}).attr("d",ribbonPathStatic);mouse.exit().remove()}function ribbonTweenX(d){var nodes=[d],r=ribbon.filter(function(r){var s,t;if(r.source.node===d){nodes.push(s=r.source)}if(r.target.node===d){nodes.push(t=r.target)}return s||t}),i=nodes.map(function(d){return d3.interpolateNumber(d.x0,d.x)}),n=nodes.length;return function(t){for(var j=0;j=0;if(active){this.parentNode.appendChild(this)}return active}).classed("active",true)}function unhighlight(){if(dragging){return}ribbon.classed("active",false);hideTooltip()}function updateCategories(g){var category=g.selectAll("g.category").data(function(d){return d.categories},function(d){return d.name});var categoryEnter=category.enter().append("g").attr("class","category").attr("transform",function(d){return"translate("+d.x+")"});category.exit().remove();category.on("mousemove.parsets",function(d){ribbon.classed("active",false);if(dragging){return}d.nodes.forEach(function(d){highlight(d)});showTooltip(categoryTooltip.call(this,d));d3.event.stopPropagation()}).on("mouseout.parsets",unhighlight).on("mousedown.parsets",cancelEvent).call(d3.behavior.drag().origin(identity).on("dragstart",function(d){dragging=true;d.x0=d.x}).on("drag",function(d){d.x=d3.event.x;var categories=d.dimension.categories;for(var i=0,c=categories[0];++i(c=categories[i]).x+c.dx/2){categories.sort(function(a,b){return a.x+a.dx/2-b.x-b.dx/2});nodes=layout(tree,dimensions,ordinal);updateRibbons();updateCategories(g);highlight(d.node);event.sortCategories();break}}var x=0,p=spacing/(categories.length-1);categories.forEach(function(e){if(d===e){e.x0=d3.event.x}e.x=x;x+=e.count/total*(width-spacing)+p});d3.select(this).attr("transform",function(d){return"translate("+d.x0+")"}).transition();ribbon.filter(function(r){return r.source.node===d||r.target.node===d}).attr("d",ribbonPath)}).on("dragend",function(d){dragging=false;unhighlight();updateRibbons();transition(d3.select(this)).attr("transform","translate("+d.x+")").tween("ribbon",ribbonTweenX)}));category.transition().duration(duration).attr("transform",function(d){return"translate("+d.x+")"}).tween("ribbon",ribbonTweenX);categoryEnter.append("rect").attr("width",function(d){return d.dx}).attr("y",-20).attr("height",20);categoryEnter.append("line").style("stroke-width",2);categoryEnter.append("text").attr("dy","-.3em");category.select("rect").attr("width",function(d){return d.dx}).attr("class",function(d){return"category-"+(d.dimension===dimensions[0]?ordinal(d.name):"background")});category.select("line").attr("x2",function(d){return d.dx});category.select("text").text(truncateText(function(d){return d.name},function(d){return d.dx}))}})}parsets.dimensionFormat=function(_){if(!arguments.length){return dimensionFormat}dimensionFormat=_;return parsets};parsets.dimensions=function(_){if(!arguments.length){return dimensions_}dimensions_=d3.functor(_);return parsets};parsets.value=function(_){if(!arguments.length){return value_}value_=d3.functor(_);return parsets};parsets.width=function(_){if(!arguments.length){return width}width=+_;return parsets};parsets.height=function(_){if(!arguments.length){return height}height=+_;return parsets};parsets.spacing=function(_){if(!arguments.length){return spacing}spacing=+_;return parsets};parsets.tension=function(_){if(!arguments.length){return tension}tension=+_;return parsets};parsets.duration=function(_){if(!arguments.length){return duration}duration=+_;return parsets};parsets.tooltip=function(_){if(!arguments.length){return tooltip}tooltip=_==null?defaultTooltip:_;return parsets};parsets.categoryTooltip=function(_){if(!arguments.length){return categoryTooltip}categoryTooltip=_==null?defaultCategoryTooltip:_;return parsets};var body=d3.select("body");var tooltip=body.append("div").style("display","none").attr("class","parsets tooltip");return d3.rebind(parsets,event,"on").value(1).width(960).height(600);function dimensionFormatName(d,i){return dimensionFormat.call(this,d.name,i)}function showTooltip(html){var m=d3.mouse(body.node());tooltip.style("display",null).style("left",m[0]+30+"px").style("top",m[1]-20+"px").html(html)}function hideTooltip(){tooltip.style("display","none")}function transition(g){return duration?g.transition().duration(duration).ease(parsetsEase):g}function layout(tree,dimensions,ordinal){var nodes=[],nd=dimensions.length,y0=45,dy=(height-y0-2)/(nd-1);dimensions.forEach(function(d,i){d.categories.forEach(function(c){c.dimension=d;c.count=0;c.nodes=[]});d.y=y0+i*dy});var total=(function rollup(d,i){if(!d.children){return d.count}var dim=dimensions[i],total=0;dim.categories.forEach(function(c){var child=d.children[c.name];if(!child){return}c.nodes.push(child);var count=rollup(child,i+1);c.count+=count;total+=count});return total})(tree,0);dimensions.forEach(function(d){d.categories=d.categories.filter(function(d){return d.count});var x=0,p=spacing/(d.categories.length-1);d.categories.forEach(function(c){c.x=x;c.dx=c.count/total*(width-spacing);c["in"]={dx:0};c.out={dx:0};x+=c.dx+p})});var dim=dimensions[0];dim.categories.forEach(function(c){var k=c.name;if(tree.children.hasOwnProperty(k)){recurse(c,{node:tree.children[k],path:k},1,ordinal(k))}});function recurse(p,d,depth,major){var node=d.node,dimension=dimensions[depth];dimension.categories.forEach(function(c){var k=c.name;if(!node.children.hasOwnProperty(k)){return}var child=node.children[k];child.path=d.path+"\0"+k;var target=child.target||{node:c,dimension:dimension};target.x=c["in"].dx;target.dx=child.count/total*(width-spacing);c["in"].dx+=target.dx;var source=child.source||{node:p,dimension:dimensions[depth-1]};source.x=p.out.dx;source.dx=target.dx;p.out.dx+=source.dx;child.node=child;child.source=source;child.target=target;child.major=major;nodes.push(child);if(depth+1b?1:a>=b?0:a<=a?-1:b<=b?1:NaN}};d3.parsets.tree=buildTree;function autoDimensions(d){return d.length?d3.keys(d[0]).sort():[]}function cancelEvent(){d3.event.stopPropagation();d3.event.preventDefault()}function dimensionName(d){return d.name}function getTotal(dimensions){return dimensions[0].categories.reduce(function(a,d){return a+d.count},0)}function truncateText(text,width){return function(d,i){var t=this.textContent=text(d,i),w=width(d,i);if(this.getComputedTextLength()>1;if((x=this.getSubStringLength(0,mid))1?t.substr(0,lo-2)+"…":""}}var percent=d3.format("%"),comma=d3.format(",f"),parsetsEase="elastic",parsetsId=0;function buildTree(root,data,dimensions,value){zeroCounts(root);var n=data.length,nd=dimensions.length;for(var i=0;i"+comma(count)+" ("+percent(count/d.count)+")"}function defaultCategoryTooltip(d){return d.name+"
"+comma(d.count)+" ("+percent(d.count/d.dimension.count)+")"}})();vg=(function(d3,topojson){var vg={version:"1.3.3",d3:d3,topojson:topojson};var toString=Object.prototype.toString;vg.isObject=function(obj){return obj===Object(obj)};vg.isFunction=function(obj){return toString.call(obj)=="[object Function]"};vg.isString=function(obj){return toString.call(obj)=="[object String]"};vg.isArray=Array.isArray||function(obj){return toString.call(obj)=="[object Array]"};vg.isNumber=function(obj){return toString.call(obj)=="[object Number]"};vg.isBoolean=function(obj){return toString.call(obj)=="[object Boolean]"};vg.isTree=function(obj){return obj&&obj.__vgtree__};vg.tree=function(obj,children){var d=[obj];d.__vgtree__=true;d.children=children||"children";return d};vg.number=function(s){return +s};vg["boolean"]=function(s){return !!s};vg.identity=function(x){return x};vg.extend=function(obj){for(var x,name,i=1,len=arguments.length;i1?function(x){return s.reduce(function(x,f){return x[f]},x)}:function(x){return x[f]}};vg.comparator=function(sort){var sign=[];if(sort===undefined){sort=[]}sort=vg.array(sort).map(function(f){var s=1;if(f[0]==="-"){s=-1;f=f.slice(1)}else{if(f[0]==="+"){s=+1;f=f.slice(1)}}sign.push(s);return vg.accessor(f)});return function(a,b){var i,n,f,x,y;for(i=0,n=sort.length;iy){return sign[i]}}return 0}};vg.cmp=function(a,b){return ab?1:0};vg.numcmp=function(a,b){return a-b};vg.array=function(x){return x!=null?(vg.isArray(x)?x:[x]):[]};vg.values=function(x){return(vg.isObject(x)&&!vg.isArray(x)&&x.values)?x.values:x};vg.str=function(x){return vg.isArray(x)?"["+x.map(vg.str)+"]":vg.isObject(x)?JSON.stringify(x):vg.isString(x)?("'"+vg_escape_str(x)+"'"):x};var escape_str_re=/(^|[^\\])'/g;function vg_escape_str(x){return x.replace(escape_str_re,"$1\\'")}vg.keys=function(x){var keys=[];for(var key in x){keys.push(key)}return keys};vg.unique=function(data,f,results){if(!vg.isArray(data)||data.length==0){return[]}f=f||vg.identity;results=results||[];for(var v,i=0,n=data.length;imax){max=v;idx=i}}return idx};vg.truncate=function(s,length,pos,word,ellipsis){var len=s.length;if(len<=length){return s}ellipsis=ellipsis||"...";var l=Math.max(0,length-ellipsis.length);switch(pos){case"left":return ellipsis+(word?vg_truncateOnWord(s,l,1):s.slice(len-l));case"middle":case"center":var l1=Math.ceil(l/2),l2=Math.floor(l/2);return(word?vg_truncateOnWord(s,l1):s.slice(0,l1))+ellipsis+(word?vg_truncateOnWord(s,l2,1):s.slice(len-l2));default:return(word?vg_truncateOnWord(s,l):s.slice(0,l))+ellipsis}};function vg_truncateOnWord(s,len,rev){var cnt=0,tok=s.split(vg_truncate_word_re);if(rev){s=(tok=tok.reverse()).filter(function(w){cnt+=w.length;return cnt<=len}).reverse()}else{s=tok.filter(function(w){cnt+=w.length;return cnt<=len})}return s.length?s.join("").trim():tok[0].slice(0,len)}var vg_truncate_word_re=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/;function vg_write(msg){vg.config.isNode?process.stderr.write(msg+"\n"):console.log(msg)}vg.log=function(msg){vg_write("[Vega Log] "+msg)};vg.error=function(msg){msg="[Vega Err] "+msg;vg_write(msg);if(typeof alert!=="undefined"){alert(msg)}};vg.config={};vg.config.isNode=typeof exports!=="undefined"&&this.exports!==exports;vg.config.baseURL="";vg.config.svgNamespace='version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"';vg.config.autopadInset=5;vg.config.scale={time:d3.time.scale,utc:d3.time.scale.utc};vg.config.render={lineWidth:1,lineCap:"butt",font:"sans-serif",fontSize:11};vg.config.axis={orient:"bottom",ticks:10,padding:3,axisColor:"#000",gridColor:"#d8d8d8",tickColor:"#000",tickLabelColor:"#000",axisWidth:1,tickWidth:1,tickSize:6,tickLabelFontSize:11,tickLabelFont:"sans-serif",titleColor:"#000",titleFont:"sans-serif",titleFontSize:11,titleFontWeight:"bold",titleOffset:35};vg.config.legend={orient:"right",offset:10,padding:3,gradientStrokeColor:"#888",gradientStrokeWidth:1,gradientHeight:16,gradientWidth:100,labelColor:"#000",labelFontSize:10,labelFont:"sans-serif",labelAlign:"left",labelBaseline:"middle",labelOffset:8,symbolShape:"circle",symbolSize:50,symbolColor:"#888",symbolStrokeWidth:1,titleColor:"#000",titleFont:"sans-serif",titleFontSize:11,titleFontWeight:"bold"};vg.config.color={rgb:[128,128,128],lab:[50,0,0],hcl:[0,0,50],hsl:[0,0,0.5]};vg.config.range={category10:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],category20:["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"],shapes:["circle","cross","diamond","square","triangle-down","triangle-up"]};vg.Bounds=(function(){var bounds=function(b){this.clear();if(b){this.union(b)}};var prototype=bounds.prototype;prototype.clear=function(){this.x1=+Number.MAX_VALUE;this.y1=+Number.MAX_VALUE;this.x2=-Number.MAX_VALUE;this.y2=-Number.MAX_VALUE;return this};prototype.set=function(x1,y1,x2,y2){this.x1=x1;this.y1=y1;this.x2=x2;this.y2=y2;return this};prototype.add=function(x,y){if(xthis.x2){this.x2=x}if(y>this.y2){this.y2=y}return this};prototype.expand=function(d){this.x1-=d;this.y1-=d;this.x2+=d;this.y2+=d;return this};prototype.round=function(){this.x1=Math.floor(this.x1);this.y1=Math.floor(this.y1);this.x2=Math.ceil(this.x2);this.y2=Math.ceil(this.y2);return this};prototype.translate=function(dx,dy){this.x1+=dx;this.x2+=dx;this.y1+=dy;this.y2+=dy;return this};prototype.rotate=function(angle,x,y){var cos=Math.cos(angle),sin=Math.sin(angle),cx=x-x*cos+y*sin,cy=y-x*sin-y*cos,x1=this.x1,x2=this.x2,y1=this.y1,y2=this.y2;return this.clear().add(cos*x1-sin*y1+cx,sin*x1+cos*y1+cy).add(cos*x1-sin*y2+cx,sin*x1+cos*y2+cy).add(cos*x2-sin*y1+cx,sin*x2+cos*y1+cy).add(cos*x2-sin*y2+cx,sin*x2+cos*y2+cy)};prototype.union=function(b){if(b.x1this.x2){this.x2=b.x2}if(b.y2>this.y2){this.y2=b.y2}return this};prototype.encloses=function(b){return b&&(this.x1<=b.x1&&this.x2>=b.x2&&this.y1<=b.y1&&this.y2>=b.y2)};prototype.intersects=function(b){return b&&!(this.x2b.x2||this.y2b.y2)};prototype.contains=function(x,y){return !(xthis.x2||ythis.y2)};prototype.width=function(){return this.x2-this.x1};prototype.height=function(){return this.y2-this.y1};return bounds})();vg.Gradient=(function(){function gradient(type){this.id="grad_"+(vg_gradient_id++);this.type=type||"linear";this.stops=[];this.x1=0;this.x2=1;this.y1=0;this.y2=0}var prototype=gradient.prototype;prototype.stop=function(offset,color){this.stops.push({offset:offset,color:color});return this};return gradient})();var vg_gradient_id=0;vg.canvas={};vg.canvas.path=(function(){var cmdLength={m:2,l:2,h:1,v:1,c:6,s:4,q:4,t:2,a:7},re=[/([MLHVCSQTAZmlhvcsqtaz])/g,/###/,/(\d)-/g,/\s|,|###/];function parse(path){var result=[],currentPath,chunks,parsed;path=path.slice().replace(re[0],"###$1").split(re[1]).slice(1);for(var i=0,j,chunksParsed,len=path.length;icommandLength){for(var k=1,klen=chunksParsed.length;k1){pl=Math.sqrt(pl);rx*=pl;ry*=pl}var a00=cos_th/rx;var a01=sin_th/rx;var a10=(-sin_th)/ry;var a11=(cos_th)/ry;var x0=a00*ox+a01*oy;var y0=a10*ox+a11*oy;var x1=a00*x+a01*y;var y1=a10*x+a11*y;var d=(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0);var sfactor_sq=1/d-0.25;if(sfactor_sq<0){sfactor_sq=0}var sfactor=Math.sqrt(sfactor_sq);if(sweep==large){sfactor=-sfactor}var xc=0.5*(x0+x1)-sfactor*(y1-y0);var yc=0.5*(y0+y1)+sfactor*(x1-x0);var th0=Math.atan2(y0-yc,x0-xc);var th1=Math.atan2(y1-yc,x1-xc);var th_arc=th1-th0;if(th_arc<0&&sweep==1){th_arc+=2*Math.PI}else{if(th_arc>0&&sweep==0){th_arc-=2*Math.PI}}var segments=Math.ceil(Math.abs(th_arc/(Math.PI*0.5+0.001)));var result=[];for(var i=0;i0){g.globalAlpha=opac*(o.strokeOpacity==null?1:o.strokeOpacity);g.strokeStyle=color(g,o,stroke);g.lineWidth=lw;g.lineCap=(lc=o.strokeCap)!=null?lc:vg.config.render.lineCap;g.vgLineDash(o.strokeDash||null);g.vgLineDashOffset(o.strokeDashOffset||0);g.stroke()}}}function drawPathAll(path,g,scene,bounds){var i,len,item;for(i=0,len=scene.items.length;i0){g.globalAlpha=opac*(o.strokeOpacity==null?1:o.strokeOpacity);g.strokeStyle=color(g,o,stroke);g.lineWidth=lw;g.lineCap=(lc=o.strokeCap)!=null?lc:vg.config.render.lineCap;g.vgLineDash(o.strokeDash||null);g.vgLineDashOffset(o.strokeDashOffset||0);g.strokeRect(x,y,w,h)}}}}function drawRule(g,scene,bounds){if(!scene.items.length){return}var items=scene.items,o,stroke,opac,lc,lw,x1,y1,x2,y2;for(var i=0,len=items.length;i0){g.globalAlpha=opac*(o.strokeOpacity==null?1:o.strokeOpacity);g.strokeStyle=color(g,o,stroke);g.lineWidth=lw;g.lineCap=(lc=o.strokeCap)!=null?lc:vg.config.render.lineCap;g.vgLineDash(o.strokeDash||null);g.vgLineDashOffset(o.strokeDashOffset||0);g.beginPath();g.moveTo(x1,y1);g.lineTo(x2,y2);g.stroke()}}}}function drawImage(g,scene,bounds){if(!scene.items.length){return}var renderer=this,items=scene.items,o;for(var i=0,len=items.length;i0){g.globalAlpha=opac*(o.strokeOpacity==null?1:o.strokeOpacity);g.strokeStyle=color(o,stroke);g.lineWidth=lw;g.strokeText(o.text,x,y)}}if(o.angle){g.restore()}}}function drawAll(pathFunc){return function(g,scene,bounds){drawPathAll(pathFunc,g,scene,bounds)}}function drawOne(pathFunc){return function(g,scene,bounds){if(!scene.items.length){return}if(bounds&&!bounds.intersects(scene.items[0].bounds)){return}drawPathOne(pathFunc,g,scene.items[0],scene.items)}}function drawGroup(g,scene,bounds){if(!scene.items.length){return}var items=scene.items,group,axes,legends,renderer=this,gx,gy,gb,i,n,j,m;drawRect(g,scene,bounds);for(i=0,n=items.length;i=0;){group=items[i];dx=group.x||0;dy=group.y||0;g.save();g.translate(dx,dy);for(j=group.items.length;--j>=0;){subscene=group.items[j];if(subscene.interactive===false){continue}hit=handler.pick(subscene,x,y,gx-dx,gy-dy);if(hit){g.restore();return hit}}g.restore()}return scene.interactive?pickAll(hitTests.rect,g,scene,x,y,gx,gy):false}function pickAll(test,g,scene,x,y,gx,gy){if(!scene.items.length){return false}var o,b,i;if(g._ratio!==1){x*=g._ratio;y*=g._ratio}for(i=scene.items.length;--i>=0;){o=scene.items[i];b=o.bounds;if((b&&!b.contains(gx,gy))||!b){continue}if(test(g,o,x,y,gx,gy)){return o}}return false}function pickArea(g,scene,x,y,gx,gy){if(!scene.items.length){return false}var items=scene.items,o,b,i,di,dd,od,dx,dy;b=items[0].bounds;if(b&&!b.contains(gx,gy)){return false}if(g._ratio!==1){x*=g._ratio;y*=g._ratio}if(!hitTests.area(g,items,x,y)){return false}return items[0]}function pickLine(g,scene,x,y,gx,gy){if(!scene.items.length){return false}var items=scene.items,o,b,i,di,dd,od,dx,dy;b=items[0].bounds;if(b&&!b.contains(gx,gy)){return false}if(g._ratio!==1){x*=g._ratio;y*=g._ratio}if(!hitTests.line(g,items,x,y)){return false}return items[0]}function pick(test){return function(g,scene,x,y,gx,gy){return pickAll(test,g,scene,x,y,gx,gy)}}function textHit(g,o,x,y,gx,gy){if(!o.fontSize){return false}if(!o.angle){return true}var b=vg.scene.bounds.text(o,tmpBounds,true),a=-o.angle*Math.PI/180,cos=Math.cos(a),sin=Math.sin(a),x=o.x,y=o.y,px=cos*gx-sin*gy+(x-x*cos+y*sin),py=sin*gx+cos*gy+(y-x*sin-y*cos);return b.contains(px,py)}var hitTests={text:textHit,rect:function(g,o,x,y){return true},image:function(g,o,x,y){return true},rule:function(g,o,x,y){if(!g.isPointInStroke){return false}ruleStroke(g,o);return g.isPointInStroke(x,y)},line:function(g,s,x,y){if(!g.isPointInStroke){return false}lineStroke(g,s);return g.isPointInStroke(x,y)},arc:function(g,o,x,y){arcPath(g,o);return g.isPointInPath(x,y)},area:function(g,s,x,y){areaPath(g,s);return g.isPointInPath(x,y)},path:function(g,o,x,y){pathPath(g,o);return g.isPointInPath(x,y)},symbol:function(g,o,x,y){symbolPath(g,o);return g.isPointInPath(x,y)}};return{draw:{group:drawGroup,area:drawOne(areaPath),line:drawOne(linePath),arc:drawAll(arcPath),path:drawAll(pathPath),symbol:drawAll(symbolPath),rect:drawRect,rule:drawRule,text:drawText,image:drawImage,drawOne:drawOne,drawAll:drawAll},pick:{group:pickGroup,area:pickArea,line:pickLine,arc:pick(hitTests.arc),path:pick(hitTests.path),symbol:pick(hitTests.symbol),rect:pick(hitTests.rect),rule:pick(hitTests.rule),text:pick(hitTests.text),image:pick(hitTests.image),pickAll:pickAll}}})();vg.canvas.Renderer=(function(){var renderer=function(){this._ctx=null;this._el=null;this._imgload=0};var prototype=renderer.prototype;prototype.initialize=function(el,width,height,pad){this._el=el;if(!el){return this}var canvas=d3.select(el).selectAll("canvas.marks").data([1]);canvas.enter().append("canvas").attr("class","marks");canvas.exit().remove();return this.resize(width,height,pad)};prototype.resize=function(width,height,pad){this._width=width;this._height=height;this._padding=pad;if(this._el){var canvas=d3.select(this._el).select("canvas.marks");canvas.attr("width",width+pad.left+pad.right).attr("height",height+pad.top+pad.bottom);var s;this._ctx=canvas.node().getContext("2d");this._ctx._ratio=(s=scaleCanvas(canvas.node(),this._ctx)||1);this._ctx.setTransform(s,0,0,s,s*pad.left,s*pad.top)}initializeLineDash(this._ctx);return this};function scaleCanvas(canvas,ctx){var devicePixelRatio=window.devicePixelRatio||1,backingStoreRatio=(ctx.webkitBackingStorePixelRatio||ctx.mozBackingStorePixelRatio||ctx.msBackingStorePixelRatio||ctx.oBackingStorePixelRatio||ctx.backingStorePixelRatio)||1,ratio=devicePixelRatio/backingStoreRatio;if(devicePixelRatio!==backingStoreRatio){var w=canvas.width,h=canvas.height;canvas.setAttribute("width",w*ratio);canvas.setAttribute("height",h*ratio);canvas.style.width=w+"px";canvas.style.height=h+"px"}return ratio}function initializeLineDash(ctx){if(ctx.vgLineDash){return}var NODASH=[];if(ctx.setLineDash){ctx.vgLineDash=function(dash){this.setLineDash(dash||NODASH)};ctx.vgLineDashOffset=function(off){this.lineDashOffset=off}}else{if(ctx.webkitLineDash!==undefined){ctx.vgLineDash=function(dash){this.webkitLineDash=dash||NODASH};ctx.vgLineDashOffset=function(off){this.webkitLineDashOffset=off}}else{if(ctx.mozDash!==undefined){ctx.vgLineDash=function(dash){this.mozDash=dash};ctx.vgLineDashOffset=function(off){}}else{ctx.vgLineDash=function(dash){};ctx.vgLineDashOffset=function(off){}}}}}prototype.context=function(ctx){if(ctx){this._ctx=ctx;return this}else{return this._ctx}};prototype.element=function(){return this._el};prototype.pendingImages=function(){return this._imgload};function translatedBounds(item,bounds){var b=new vg.Bounds(bounds);while((item=item.mark.group)!=null){b.translate(item.x||0,item.y||0)}return b}function getBounds(items){return !items?null:vg.array(items).reduce(function(b,item){return b.union(translatedBounds(item,item.bounds)).union(translatedBounds(item,item["bounds:prev"]))},new vg.Bounds())}function setBounds(g,bounds){var bbox=null;if(bounds){bbox=(new vg.Bounds(bounds)).round();g.beginPath();g.rect(bbox.x1,bbox.y1,bbox.width(),bbox.height());g.clip()}return bbox}prototype.render=function(scene,items){var g=this._ctx,pad=this._padding,w=this._width+pad.left+pad.right,h=this._height+pad.top+pad.bottom,bb=null,bb2;this._scene=scene;g.save();bb=setBounds(g,getBounds(items));g.clearRect(-pad.left,-pad.top,w,h);this.draw(g,scene,bb);if(items){g.restore();g.save();bb2=setBounds(g,getBounds(items));if(!bb.encloses(bb2)){g.clearRect(-pad.left,-pad.top,w,h);this.draw(g,scene,bb2)}}g.restore();this._scene=null};prototype.draw=function(ctx,scene,bounds){var marktype=scene.marktype,renderer=vg.canvas.marks.draw[marktype];renderer.call(this,ctx,scene,bounds)};prototype.renderAsync=function(scene){var renderer=this;if(renderer._async_id){clearTimeout(renderer._async_id)}renderer._async_id=setTimeout(function(){renderer.render(scene);delete renderer._async_id},50)};prototype.loadImage=function(uri){var renderer=this,scene=renderer._scene,image=null,url;renderer._imgload+=1;if(vg.config.isNode){image=new (require("canvas").Image)();vg.data.load(uri,function(err,data){if(err){vg.error(err);return}image.src=data;image.loaded=true;renderer._imgload-=1})}else{image=new Image();url=vg.config.baseURL+uri;image.onload=function(){vg.log("LOAD IMAGE: "+url);image.loaded=true;renderer._imgload-=1;renderer.renderAsync(scene)};image.src=url}return image};return renderer})();vg.canvas.Handler=(function(){var handler=function(el,model){this._active=null;this._handlers={};if(el){this.initialize(el)}if(model){this.model(model)}};var prototype=handler.prototype;prototype.initialize=function(el,pad,obj){this._el=d3.select(el).node();this._canvas=d3.select(el).select("canvas.marks").node();this._padding=pad;this._obj=obj||null;var canvas=this._canvas,that=this;events.forEach(function(type){canvas.addEventListener(type,function(evt){prototype[type].call(that,evt)})});return this};prototype.padding=function(pad){this._padding=pad;return this};prototype.model=function(model){if(!arguments.length){return this._model}this._model=model;return this};prototype.handlers=function(){var h=this._handlers;return vg.keys(h).reduce(function(a,k){return h[k].reduce(function(a,x){return(a.push(x),a)},a)},[])};var events=["mousedown","mouseup","click","dblclick","wheel","keydown","keypress","keyup","mousewheel"];events.forEach(function(type){prototype[type]=function(evt){this.fire(type,evt)}});events.push("mousemove");events.push("mouseout");function eventName(name){var i=name.indexOf(".");return i<0?name:name.slice(0,i)}prototype.mousemove=function(evt){var pad=this._padding,b=evt.target.getBoundingClientRect(),x=evt.clientX-b.left,y=evt.clientY-b.top,a=this._active,p=this.pick(this._model.scene(),x,y,x-pad.left,y-pad.top);if(p===a){this.fire("mousemove",evt);return}else{if(a){this.fire("mouseout",evt)}}this._active=p;if(p){this.fire("mouseover",evt)}};prototype.mouseout=function(evt){if(this._active){this.fire("mouseout",evt)}this._active=null};prototype.DOMMouseScroll=function(evt){this.fire("mousewheel",evt)};prototype.fire=function(type,evt){var a=this._active,h=this._handlers[type];if(a&&h){for(var i=0,len=h.length;i=0;){if(h[i].type!==type){continue}if(!handler||h[i].handler===handler){h.splice(i,1)}}return this};prototype.context=function(){return this._canvas.getContext("2d")};prototype.pick=function(scene,x,y,gx,gy){var g=this.context(),marktype=scene.marktype,picker=vg.canvas.marks.pick[marktype];return picker.call(this,g,scene,x,y,gx,gy)};return handler})();vg.svg={};vg.svg.marks=(function(){function x(o){return o.x||0}function y(o){return o.y||0}function yh(o){return o.y+o.height||0}function key(o){return o.key}function size(o){return o.size==null?100:o.size}function shape(o){return o.shape||"circle"}var arc_path=d3.svg.arc(),area_path=d3.svg.area().x(x).y1(y).y0(yh),line_path=d3.svg.line().x(x).y(y),symbol_path=d3.svg.symbol().type(shape).size(size);var mark_id=0,clip_id=0;var textAlign={left:"start",center:"middle",right:"end"};var styles={fill:"fill",fillOpacity:"fill-opacity",stroke:"stroke",strokeWidth:"stroke-width",strokeOpacity:"stroke-opacity",strokeCap:"stroke-linecap",strokeDash:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",opacity:"opacity"};var styleProps=vg.keys(styles);function style(d){var i,n,prop,name,value,o=d.mark?d:d.length?d[0]:null;if(o===null){return}for(i=0,n=styleProps.length;i "+tag,m=p.selectAll(s).data(data),e=m.enter().append(tag);if(notG){p.style("pointer-events",evts);e.each(function(d){if(d.mark){d._svg=this}else{if(d.length){d[0]._svg=this}}})}else{e.append("rect").attr("class","background").style("pointer-events",evts)}m.exit().remove();m.each(attr);if(notG){m.each(style)}else{p.selectAll(s+" > rect.background").each(group_bg).each(style)}return p}function drawGroup(g,scene,index,prefix){var p=drawMark(g,scene,index,prefix||"group_","g",group),c=p.node().childNodes,n=c.length,i,j,m;for(i=0;i=0;){if(h[i].type!==type){continue}if(!handler||h[i].handler===handler){dom.removeEventListener(name,h[i].svg);h.splice(i,1)}}return this};return handler})();vg.data={};vg.data.ingestAll=function(data){return vg.isTree(data)?vg_make_tree(vg.data.ingestTree(data[0],data.children)):data.map(vg.data.ingest)};vg.data.ingest=function(datum,index){return{data:datum,index:index}};vg.data.ingestTree=function(node,children,index){var d=vg.data.ingest(node,index||0),c=node[children],n,i;if(c&&(n=c.length)){d.values=Array(n);for(i=0;i=0){file=file.slice(vg_load_fileProtocol.length)}require("fs").readFile(file,callback)}function vg_load_http(url,callback){vg.log("LOAD HTTP: "+url);var req=require("http").request(url,function(res){var pos=0,data=new Buffer(parseInt(res.headers["content-length"],10));res.on("error",function(err){callback(err,null)});res.on("data",function(x){x.copy(data,pos);pos+=x.length});res.on("end",function(){callback(null,data)})});req.on("error",function(err){callback(err)});req.end()}vg.data.read=(function(){var formats={},parsers={number:vg.number,"boolean":vg["boolean"],date:Date.parse};function read(data,format){var type=(format&&format.type)||"json";data=formats[type](data,format);if(format&&format.parse){parseValues(data,format.parse)}return data}formats.json=function(data,format){var d=vg.isObject(data)?data:JSON.parse(data);if(format&&format.property){d=vg.accessor(format.property)(d)}return d};formats.csv=function(data,format){var d=d3.csv.parse(data);return d};formats.tsv=function(data,format){var d=d3.tsv.parse(data);return d};formats.topojson=function(data,format){if(topojson==null){vg.error("TopoJSON library not loaded.");return[]}var t=vg.isObject(data)?data:JSON.parse(data),obj=[];if(format&&format.feature){obj=(obj=t.objects[format.feature])?topojson.feature(t,obj).features:(vg.error("Invalid TopoJSON object: "+format.feature),[])}else{if(format&&format.mesh){obj=(obj=t.objects[format.mesh])?[topojson.mesh(t,t.objects[format.mesh])]:(vg.error("Invalid TopoJSON object: "+format.mesh),[])}else{vg.error("Missing TopoJSON feature or mesh parameter.")}}return obj};formats.treejson=function(data,format){data=vg.isObject(data)?data:JSON.parse(data);return vg.tree(data,format.children)};function parseValues(data,types){var cols=vg.keys(types),p=cols.map(function(col){return parsers[types[col]]}),tree=vg.isTree(data);vg_parseArray(tree?[data]:data,cols,p,tree)}function vg_parseArray(data,cols,p,tree){var d,i,j,len,clen;for(i=0,len=data.length;i0?"|":"")+String(kv)}obj=map[kstr];if(obj===undefined){vals.push(obj=map[kstr]={key:kstr,keys:klist,index:vals.length,values:[]})}obj.values.push(data[i])}if(sort){for(i=0,len=vals.length;ib?1:0});data=[data[~~(list.length/2)]]}else{var idx=vg.array(by);data=data.slice(idx[0],idx[1])}}}return data}slice.by=function(x){by=x;return slice};slice.field=function(f){field=vg.accessor(f);return slice};return slice};vg.data.sort=function(){var by=null;function sort(data){data=(vg.isArray(data)?data:data.values||[]);data.sort(by);for(var i=0,n=data.length;ib.x?1:(a.zb.z?1:0)});for(x=points[0].x,i=0,j=0,k=0,n=points.length;ki){series[i++].push({x:j,y:0})}p.x=j;series[i++].push(p)}while(imax){max=v}sum+=v;delta=v-mean;mean=mean+delta/(i+1);M2=M2+delta*(v-mean)}M2=M2/(len-1);var o=vg.isArray(data)?{}:data;if(median){list.sort(vg.numcmp);i=list.length>>1;o[output.median]=list.length%2?list[i]:(list[i-1]+list[i])/2}o[output.count]=len;o[output.min]=min;o[output.max]=max;o[output.sum]=sum;o[output.mean]=mean;o[output.variance]=M2;o[output.stdev]=Math.sqrt(M2);if(assign){list=(vg.isArray(data)?data:data.values);v={};v[output.count]=len;v[output.min]=min;v[output.max]=max;v[output.sum]=sum;v[output.mean]=mean;v[output.variance]=M2;v[output.stdev]=Math.sqrt(M2);if(median){v[output.median]=o[output.median]}for(i=0,len=list.length;i\~\&\|\?\:\+\-\/\*\%\!\^\,\;\[\]\{\}\(\) ]+)/;return function(x){var tokens=x.split(lexer),t,v,i,n,sq,dq;for(sq=0,dq=0,i=0,n=tokens.length;i0)?"\n ":" ";code+="o."+name+" = "+valueRef(name,ref)+";";vars[name]=true}if(vars.x2){if(vars.x){code+="\n if (o.x > o.x2) { var t = o.x; o.x = o.x2; o.x2 = t; };";code+="\n o.width = (o.x2 - o.x);"}else{if(vars.width){code+="\n o.x = (o.x2 - o.width);"}else{code+="\n o.x = o.x2;"}}}if(vars.y2){if(vars.y){code+="\n if (o.y > o.y2) { var t = o.y; o.y = o.y2; o.y2 = t; };";code+="\n o.height = (o.y2 - o.y);"}else{if(vars.height){code+="\n o.y = (o.y2 - o.height);"}else{code+="\n o.y = o.y2;"}}}if(hasPath(mark,vars)){code+="\n item.touch();"}code+="\n if (trans) trans.interpolate(item, o);";try{return Function("item","group","trans",code)}catch(e){vg.error(e);vg.log(code)}}function hasPath(mark,vars){return vars.path||((mark==="area"||mark==="line")&&(vars.x||vars.x2||vars.width||vars.y||vars.y2||vars.height||vars.tension||vars.interpolate))}var GROUP_VARS={width:1,height:1,"mark.group.width":1,"mark.group.height":1};function valueRef(name,ref){if(ref==null){return null}var isColor=name==="fill"||name==="stroke";if(isColor){if(ref.c){return colorRef("hcl",ref.h,ref.c,ref.l)}else{if(ref.h||ref.s){return colorRef("hsl",ref.h,ref.s,ref.l)}else{if(ref.l||ref.a){return colorRef("lab",ref.l,ref.a,ref.b)}else{if(ref.r||ref.g||ref.b){return colorRef("rgb",ref.r,ref.g,ref.b)}}}}}var val="item.datum.data";if(ref.value!==undefined){val=vg.str(ref.value)}if(ref.group!=null){var grp="group.datum";if(vg.isString(ref.group)){grp=GROUP_VARS[ref.group]?"group."+ref.group:"group.datum["+vg.field(ref.group).map(vg.str).join("][")+"]"}}if(ref.field!=null){if(vg.isString(ref.field)){val="item.datum["+vg.field(ref.field).map(vg.str).join("][")+"]";if(ref.group!=null){val="this.accessor("+val+")("+grp+")"}}else{val="this.accessor(group.datum["+vg.field(ref.field.group).map(vg.str).join("][")+"])(item.datum.data)"}}else{if(ref.group!=null){val=grp}}if(ref.scale!=null){var scale=vg.isString(ref.scale)?vg.str(ref.scale):(ref.scale.group?"group":"item")+".datum["+vg.str(ref.scale.group||ref.scale.field)+"]";scale="group.scales["+scale+"]";val=scale+(ref.band?".rangeBand()":"("+val+")")}val="("+(ref.mult?(vg.number(ref.mult)+" * "):"")+val+")"+(ref.offset?" + "+vg.number(ref.offset):"");return val}function colorRef(type,x,y,z){var xx=x?valueRef("",x):vg.config.color[type][0],yy=y?valueRef("",y):vg.config.color[type][1],zz=z?valueRef("",z):vg.config.color[type][2];return"(this.d3."+type+"("+[xx,yy,zz].join(",")+') + "")'}return compile})();vg.parse.scales=(function(){var LINEAR="linear",ORDINAL="ordinal",LOG="log",POWER="pow",TIME="time",GROUP_PROPERTY={width:1,height:1};function scales(spec,scales,db,group){return(spec||[]).reduce(function(o,def){var name=def.name,prev=name+":prev";o[name]=scale(def,o[name],db,group);o[prev]=o[prev]||o[name];return o},scales||{})}function scale(def,scale,db,group){var s=instance(def,scale),m=s.type===ORDINAL?ordinal:quantitative,rng=range(def,group),data=vg.values(group.datum);m(def,s,rng,db,data);return s}function instance(def,scale){var type=def.type||LINEAR;if(!scale||type!==scale.type){var ctor=vg.config.scale[type]||d3.scale[type];if(!ctor){vg.error("Unrecognized scale type: "+type)}(scale=ctor()).type=scale.type||type;scale.scaleName=def.name}return scale}function ordinal(def,scale,rng,db,data){var domain,refs,values,str;domain=def.domain;if(vg.isArray(domain)){scale.domain(domain)}else{if(vg.isObject(domain)){refs=def.domain.fields||vg.array(def.domain);values=refs.reduce(function(values,r){var dat=vg.values(db[r.data]||data),get=vg.accessor(vg.isString(r.field)?r.field:"data."+vg.accessor(r.field.group)(data));return vg.unique(dat,get,values)},[]);if(def.sort){values.sort(vg.cmp)}scale.domain(values)}}str=typeof rng[0]==="string";if(str||rng.length>2){scale.range(rng)}else{if(def.points){scale.rangePoints(rng,def.padding||0)}else{if(def.round||def.round===undefined){scale.rangeRoundBands(rng,def.padding||0)}else{scale.rangeBands(rng,def.padding||0)}}}}function quantitative(def,scale,rng,db,data){var domain,refs,interval,z;domain=[null,null];function extract(ref,min,max,z){var dat=vg.values(db[ref.data]||data);var fields=vg.array(ref.field).map(function(f){return vg.isString(f)?f:"data."+vg.accessor(f.group)(data)});fields.forEach(function(f,i){f=vg.accessor(f);if(min){domain[0]=d3.min([domain[0],d3.min(dat,f)])}if(max){domain[z]=d3.max([domain[z],d3.max(dat,f)])}})}if(def.domain!==undefined){if(vg.isArray(def.domain)){domain=def.domain.slice()}else{if(vg.isObject(def.domain)){refs=def.domain.fields||vg.array(def.domain);refs.forEach(function(r){extract(r,1,1,1)})}else{domain=def.domain}}}z=domain.length-1;if(def.domainMin!==undefined){if(vg.isObject(def.domainMin)){domain[0]=null;refs=def.domainMin.fields||vg.array(def.domainMin);refs.forEach(function(r){extract(r,1,0,z)})}else{domain[0]=def.domainMin}}if(def.domainMax!==undefined){if(vg.isObject(def.domainMax)){domain[z]=null;refs=def.domainMax.fields||vg.array(def.domainMax);refs.forEach(function(r){extract(r,0,1,z)})}else{domain[z]=def.domainMax}}if(def.type!==LOG&&def.type!==TIME&&(def.zero||def.zero===undefined)){domain[0]=Math.min(0,domain[0]);domain[z]=Math.max(0,domain[z])}scale.domain(domain);if(def.range==="height"){rng=rng.reverse()}scale[def.round&&scale.rangeRound?"rangeRound":"range"](rng);if(def.exponent&&def.type===POWER){scale.exponent(def.exponent)}if(def.clamp){scale.clamp(true)}if(def.nice){if(def.type===TIME){interval=d3.time[def.nice];if(!interval){vg.error("Unrecognized interval: "+interval)}scale.nice(interval)}else{scale.nice()}}}function range(def,group){var rng=[null,null];if(def.range!==undefined){if(typeof def.range==="string"){if(GROUP_PROPERTY[def.range]){rng=[0,group[def.range]]}else{if(vg.config.range[def.range]){rng=vg.config.range[def.range]}else{vg.error("Unrecogized range: "+def.range);return rng}}}else{if(vg.isArray(def.range)){rng=def.range}else{rng=[0,def.range]}}}if(def.rangeMin!==undefined){rng[0]=def.rangeMin}if(def.rangeMax!==undefined){rng[rng.length-1]=def.rangeMax}if(def.reverse!==undefined){var rev=def.reverse;if(vg.isObject(rev)){rev=vg.accessor(rev.field)(group.datum)}if(rev){rng=rng.reverse()}}return rng}return scales})();vg.parse.spec=function(spec,callback,viewFactory){viewFactory=viewFactory||vg.ViewFactory;function parse(spec){spec=vg.duplicate(spec);var width=spec.width||500,height=spec.height||500,viewport=spec.viewport||null;var defs={width:width,height:height,viewport:viewport,padding:vg.parse.padding(spec.padding),marks:vg.parse.marks(spec,width,height),data:vg.parse.data(spec.data,function(){callback(viewConstructor)})};var viewConstructor=viewFactory(defs)}vg.isObject(spec)?parse(spec):d3.json(spec,function(error,json){error?vg.error(error):parse(json)})};vg.parse.transform=function(def){var tx=vg.data[def.type]();vg.keys(def).forEach(function(k){if(k==="type"){return}(tx[k])(def[k])});return tx};vg.scene={};vg.scene.GROUP="group",vg.scene.ENTER=0,vg.scene.UPDATE=1,vg.scene.EXIT=2;vg.scene.DEFAULT_DATA={sentinel:1};vg.scene.data=function(data,parentData){var DEFAULT=vg.scene.DEFAULT_DATA;data=vg.values(data||parentData||[DEFAULT]);if(data===DEFAULT){data=[DEFAULT]}return data};vg.scene.fontString=function(o){return(o.fontStyle?o.fontStyle+" ":"")+(o.fontVariant?o.fontVariant+" ":"")+(o.fontWeight?o.fontWeight+" ":"")+(o.fontSize!=null?o.fontSize:vg.config.render.fontSize)+"px "+(o.font||vg.config.render.font)};vg.scene.Item=(function(){function item(mark){this.mark=mark}var prototype=item.prototype;prototype.hasPropertySet=function(name){var props=this.mark.def.properties;return props&&props[name]!=null};prototype.cousin=function(offset,index){if(offset===0){return this}offset=offset||-1;var mark=this.mark,group=mark.group,iidx=index==null?mark.items.indexOf(this):index,midx=group.items.indexOf(mark)+offset;return group.items[midx].items[iidx]};prototype.sibling=function(offset){if(offset===0){return this}offset=offset||-1;var mark=this.mark,iidx=mark.items.indexOf(this)+offset;return mark.items[iidx]};prototype.remove=function(){var item=this,list=item.mark.items,i=list.indexOf(item);if(i>=0){(i===list.length-1)?list.pop():list.splice(i,1)}return item};prototype.touch=function(){if(this.cache){this.cache=null}if(this.mark.cache){this.mark.cache=null}};return item})();vg.scene.item=function(mark){return new vg.scene.Item(mark)};vg.scene.visit=function(node,func){var i,n,items;if(func(node)){return true}if(items=node.items){for(i=0,n=items.length;i0){s+="|"}s+=String(f[i](d))}return s}}return build})();vg.scene.bounds=(function(){var parse=vg.canvas.path.parse,boundPath=vg.canvas.path.bounds,areaPath=vg.canvas.path.area,linePath=vg.canvas.path.line,halfpi=Math.PI/2,sqrt3=Math.sqrt(3),tan30=Math.tan(30*Math.PI/180),gfx=null;function context(){return gfx||(gfx=(vg.config.isNode?new (require("canvas"))(1,1):d3.select("body").append("canvas").attr("class","vega_hidden").attr("width",1).attr("height",1).style("display","none").node()).getContext("2d"))}function pathBounds(o,path,bounds){if(path==null){bounds.set(0,0,0,0)}else{boundPath(path,bounds);if(o.stroke&&o.opacity!==0&&o.strokeWidth>0){bounds.expand(o.strokeWidth)}}return bounds}function path(o,bounds){var p=o.path?o["path:parsed"]||(o["path:parsed"]=parse(o.path)):null;return pathBounds(o,p,bounds)}function area(o,bounds){var items=o.mark.items,o=items[0];var p=o["path:parsed"]||(o["path:parsed"]=parse(areaPath(items)));return pathBounds(items[0],p,bounds)}function line(o,bounds){var items=o.mark.items,o=items[0];var p=o["path:parsed"]||(o["path:parsed"]=parse(linePath(items)));return pathBounds(items[0],p,bounds)}function rect(o,bounds){var x=o.x||0,y=o.y||0,w=(x+o.width)||0,h=(y+o.height)||0;bounds.set(x,y,w,h);if(o.stroke&&o.opacity!==0&&o.strokeWidth>0){bounds.expand(o.strokeWidth)}return bounds}function image(o,bounds){var w=o.width||0,h=o.height||0,x=(o.x||0)-(o.align==="center"?w/2:(o.align==="right"?w:0)),y=(o.y||0)-(o.baseline==="middle"?h/2:(o.baseline==="bottom"?h:0));return bounds.set(x,y,x+w,y+h)}function rule(o,bounds){var x1,y1;bounds.set(x1=o.x||0,y1=o.y||0,o.x2!=null?o.x2:x1,o.y2!=null?o.y2:y1);if(o.stroke&&o.opacity!==0&&o.strokeWidth>0){bounds.expand(o.strokeWidth)}return bounds}function arc(o,bounds){var cx=o.x||0,cy=o.y||0,ir=o.innerRadius||0,or=o.outerRadius||0,sa=(o.startAngle||0)-halfpi,ea=(o.endAngle||0)-halfpi,xmin=Infinity,xmax=-Infinity,ymin=Infinity,ymax=-Infinity,a,i,n,x,y,ix,iy,ox,oy;var angles=[sa,ea],s=sa-(sa%halfpi);for(i=0;i<4&&s0){bounds.expand(o.strokeWidth)}return bounds}function symbol(o,bounds){var size=o.size!=null?o.size:100,x=o.x||0,y=o.y||0,r,t,rx,ry;switch(o.shape){case"cross":r=Math.sqrt(size/5)/2;t=3*r;bounds.set(x-t,y-r,x+t,y+r);break;case"diamond":ry=Math.sqrt(size/(2*tan30));rx=ry*tan30;bounds.set(x-rx,y-ry,x+rx,y+ry);break;case"square":t=Math.sqrt(size);r=t/2;bounds.set(x-r,y-r,x+r,y+r);break;case"triangle-down":rx=Math.sqrt(size/sqrt3);ry=rx*sqrt3/2;bounds.set(x-rx,y-ry,x+rx,y+ry);break;case"triangle-up":rx=Math.sqrt(size/sqrt3);ry=rx*sqrt3/2;bounds.set(x-rx,y-ry,x+rx,y+ry);break;default:r=Math.sqrt(size/Math.PI);bounds.set(x-r,y-r,x+r,y+r)}if(o.stroke&&o.opacity!==0&&o.strokeWidth>0){bounds.expand(o.strokeWidth)}return bounds}function text(o,bounds,noRotate){var x=(o.x||0)+(o.dx||0),y=(o.y||0)+(o.dy||0),h=o.fontSize||vg.config.render.fontSize,a=o.align,b=o.baseline,g=context(),w;g.font=vg.scene.fontString(o);g.textAlign=a||"left";g.textBaseline=b||"alphabetic";w=g.measureText(o.text||"").width;if(a==="center"){x=x-(w/2)}else{if(a==="right"){x=x-w}else{}}if(b==="top"){y=y+(h/5)}else{if(b==="bottom"){y=y-h}else{if(b==="middle"){y=y-(h/2)+(h/10)}else{y=y-4*h/5}}}bounds.set(x,y,x+w,y+h);if(o.angle&&!noRotate){bounds.rotate(o.angle*Math.PI/180,o.x||0,o.y||0)}return bounds.expand(noRotate?0:1)}function group(g,bounds,includeLegends){var axes=g.axisItems||[],legends=g.legendItems||[],j,m;for(j=0,m=axes.length;j1){f=1}e=curr.ease(f);for(i=0,n=curr.length;i1?+y:tickMajorSize,end=n>0?+arguments[n]:tickMajorSize;if(tickMajorSize!==major||tickMinorSize!==minor||tickEndSize!==end){reset()}tickMajorSize=major;tickMinorSize=minor;tickEndSize=end;return axis};axis.tickSubdivide=function(x){if(!arguments.length){return tickSubdivide}tickSubdivide=+x;return axis};axis.offset=function(x){if(!arguments.length){return offset}offset=vg.isObject(x)?x:+x;return axis};axis.tickPadding=function(x){if(!arguments.length){return tickPadding}if(tickPadding!==+x){tickPadding=+x;reset()}return axis};axis.titleOffset=function(x){if(!arguments.length){return titleOffset}if(titleOffset!==+x){titleOffset=+x;reset()}return axis};axis.layer=function(x){if(!arguments.length){return layer}if(layer!==x){layer=x;reset()}return axis};axis.grid=function(x){if(!arguments.length){return grid}if(grid!==x){grid=x;reset()}return axis};axis.gridLineProperties=function(x){if(!arguments.length){return gridLineStyle}if(gridLineStyle!==x){gridLineStyle=x}return axis};axis.majorTickProperties=function(x){if(!arguments.length){return majorTickStyle}if(majorTickStyle!==x){majorTickStyle=x}return axis};axis.minorTickProperties=function(x){if(!arguments.length){return minorTickStyle}if(minorTickStyle!==x){minorTickStyle=x}return axis};axis.tickLabelProperties=function(x){if(!arguments.length){return tickLabelStyle}if(tickLabelStyle!==x){tickLabelStyle=x}return axis};axis.titleProperties=function(x){if(!arguments.length){return titleStyle}if(titleStyle!==x){titleStyle=x}return axis};axis.domainProperties=function(x){if(!arguments.length){return domainStyle}if(domainStyle!==x){domainStyle=x}return axis};axis.reset=function(){reset()};return axis};var vg_axisOrients={top:1,right:1,bottom:1,left:1};function vg_axisSubdivide(scale,ticks,m){subticks=[];if(m&&ticks.length>1){var extent=vg_axisScaleExtent(scale.domain()),subticks,i=-1,n=ticks.length,d=(ticks[1]-ticks[0])/++m,j,v;while(++i0;){if((v=+ticks[i]-j*d)>=extent[0]){subticks.push(v)}}}for(--i,j=0;++j0){a[i]=a[i-1]+z[i-1]/2+pad}return(a[i]+=b/2,a)},[0]).map(Math.round)}else{offset=Math.round(Math.sqrt(vg.config.legend.symbolSize));range=spacing||(fs=labelStyle.fontSize)&&(fs.value+pad)||(vg.config.legend.labelFontSize+pad);range=domain.map(function(d,i){return Math.round(offset/2+i*range)})}var sz=padding,ts;if(title){ts=titleStyle.fontSize;sz+=5+((ts&&ts.value)||vg.config.legend.titleFontSize)}for(var i=0,n=range.length;ithis._width?Math.ceil(+b.x2-this._width)+inset:0,b=b.y2>this._height?Math.ceil(+b.y2-this._height)+inset:0;pad={left:l,top:t,right:r,bottom:b};if(this._strict){this._autopad=0;this._padding=pad;this._width=Math.max(0,this.__width-(l+r));this._height=Math.max(0,this.__height-(t+b));this._model.width(this._width);this._model.height(this._height);if(this._el){this.initialize(this._el.parentNode)}this.update({props:"enter"}).update({props:"update"})}else{this.padding(pad).update(opt)}return this};prototype.viewport=function(size){if(!arguments.length){return this._viewport}if(this._viewport!==size){this._viewport=size;if(this._el){this.initialize(this._el.parentNode)}}return this};prototype.renderer=function(type){if(!arguments.length){return this._io}if(type==="canvas"){type=vg.canvas}if(type==="svg"){type=vg.svg}if(this._io!==type){this._io=type;this._renderer=null;if(this._el){this.initialize(this._el.parentNode)}if(this._build){this.render()}}return this};prototype.defs=function(defs){if(!arguments.length){return this._model.defs()}this._model.defs(defs);return this};prototype.data=function(data){if(!arguments.length){return this._model.data()}var ingest=vg.keys(data).reduce(function(d,k){return(d[k]=vg.data.ingestAll(data[k]),d)},{});this._model.data(ingest);this._build=false;return this};prototype.model=function(model){if(!arguments.length){return this._model}if(this._model!==model){this._model=model;if(this._handler){this._handler.model(model)}}return this};prototype.initialize=function(el){var v=this,prevHandler,w=v._width,h=v._height,pad=v._padding;d3.select(el).select("div.vega").remove();this._el=el=d3.select(el).append("div").attr("class","vega").style("position","relative").node();if(v._viewport){d3.select(el).style("width",(v._viewport[0]||w)+"px").style("height",(v._viewport[1]||h)+"px").style("overflow","auto")}v._renderer=(v._renderer||new this._io.Renderer()).initialize(el,w,h,pad);prevHandler=v._handler;v._handler=new this._io.Handler().initialize(el,pad,v).model(v._model);if(prevHandler){prevHandler.handlers().forEach(function(h){v._handler.on(h.type,h.handler)})}return this};prototype.render=function(items){this._renderer.render(this._model.scene(),items);return this};prototype.on=function(){this._handler.on.apply(this._handler,arguments);return this};prototype.off=function(){this._handler.off.apply(this._handler,arguments);return this};prototype.update=function(opt){opt=opt||{};var view=this,trans=opt.duration?vg.scene.transition(opt.duration,opt.ease):null;view._build=view._build||(view._model.build(),true);view._model.encode(trans,opt.props,opt.items);if(trans){trans.start(function(items){view._renderer.render(view._model.scene(),items)})}else{view.render(opt.items)}return view.autopad(opt)};return view})();vg.ViewFactory=function(defs){return function(opt){opt=opt||{};var v=new vg.View().width(defs.width).height(defs.height).padding(defs.padding).viewport(defs.viewport).renderer(opt.renderer||"canvas").defs(defs);if(defs.data.load){v.data(defs.data.load)}if(opt.data){v.data(opt.data)}if(opt.el){v.initialize(opt.el)}if(opt.hover!==false){v.on("mouseover",function(evt,item){if(item.hasPropertySet("hover")){this.update({props:"hover",items:item})}}).on("mouseout",function(evt,item){if(item.hasPropertySet("hover")){this.update({props:"update",items:item})}})}return v}};vg.Spec=(function(){var spec=function(s){this.spec={width:500,height:500,padding:0,data:[],scales:[],axes:[],marks:[]};if(s){vg.extend(this.spec,s)}};var prototype=spec.prototype;prototype.width=function(w){this.spec.width=w;return this};prototype.height=function(h){this.spec.height=h;return this};prototype.padding=function(p){this.spec.padding=p;return this};prototype.viewport=function(v){this.spec.viewport=v;return this};prototype.data=function(name,params){if(!params){params=vg.isString(name)?{name:name}:name}else{params.name=name}this.spec.data.push(params);return this};prototype.scale=function(name,params){if(!params){params=vg.isString(name)?{name:name}:name}else{params.name=name}this.spec.scales.push(params);return this};prototype.axis=function(params){this.spec.axes.push(params);return this};prototype.mark=function(type,mark){if(!mark){mark={type:type}}else{mark.type=type}mark.properties={};this.spec.marks.push(mark);var that=this;return{from:function(name,obj){mark.from=obj?(obj.data=name,obj):vg.isString(name)?{data:name}:name;return this},prop:function(name,obj){mark.properties[name]=vg.keys(obj).reduce(function(o,k){var v=obj[k];return(o[k]=vg.isObject(v)?v:{value:v},o)},{});return this},done:function(){return that}}};prototype.parse=function(callback){vg.parse.spec(this.spec,callback)};prototype.json=function(){return this.spec};return spec})();vg.spec=function(s){return new vg.Spec(s)};vg.headless={};vg.headless.View=(function(){var view=function(width,height,pad,type){this._canvas=null;this._type=type;this._el="body";this._build=false;this._model=new vg.Model();this._width=this.__width=width||500;this._height=this.__height=height||500;this._autopad=1;this._padding=pad||{top:0,left:0,bottom:0,right:0};this._renderer=new vg[type].Renderer();this.initialize()};var prototype=view.prototype;prototype.el=function(el){if(!arguments.length){return this._el}if(this._el!==el){this._el=el;this.initialize()}return this};prototype.width=function(width){if(!arguments.length){return this._width}if(this._width!==width){this._width=width;this.initialize();this._model.width(width)}return this};prototype.height=function(height){if(!arguments.length){return this._height}if(this._height!==height){this._height=height;this.initialize();this._model.height(this._height)}return this};prototype.padding=function(pad){if(!arguments.length){return this._padding}if(this._padding!==pad){if(vg.isString(pad)){this._autopad=1;this._padding={top:0,left:0,bottom:0,right:0};this._strict=(pad==="strict")}else{this._autopad=0;this._padding=pad;this._strict=false}this.initialize()}return this};prototype.autopad=function(opt){if(this._autopad<1){return this}else{this._autopad=0}var pad=this._padding,b=this._model.scene().bounds,inset=vg.config.autopadInset,l=b.x1<0?Math.ceil(-b.x1)+inset:0,t=b.y1<0?Math.ceil(-b.y1)+inset:0,r=b.x2>this._width?Math.ceil(+b.x2-this._width)+inset:0,b=b.y2>this._height?Math.ceil(+b.y2-this._height)+inset:0;pad={left:l,top:t,right:r,bottom:b};if(this._strict){this._autopad=0;this._padding=pad;this._width=Math.max(0,this.__width-(l+r));this._height=Math.max(0,this.__height-(t+b));this._model.width(this._width);this._model.height(this._height);if(this._el){this.initialize()}this.update({props:"enter"}).update({props:"update"})}else{this.padding(pad).update(opt)}return this};prototype.viewport=function(){if(!arguments.length){return null}return this};prototype.defs=function(defs){if(!arguments.length){return this._model.defs()}this._model.defs(defs);return this};prototype.data=function(data){if(!arguments.length){return this._model.data()}var ingest=vg.keys(data).reduce(function(d,k){return(d[k]=vg.data.ingestAll(data[k]),d)},{});this._model.data(ingest);this._build=false;return this};prototype.renderer=function(){return this._renderer};prototype.canvas=function(){return this._canvas};prototype.canvasAsync=function(callback){var r=this._renderer,view=this;function wait(){if(r.pendingImages()===0){view.render();callback(view._canvas)}else{setTimeout(wait,10)}}(r.pendingImages()>0)?wait():callback(this._canvas)};prototype.svg=function(){if(this._type!=="svg"){return null}var p=this._padding,w=this._width+(p?p.left+p.right:0),h=this._height+(p?p.top+p.bottom:0);var svg=d3.select(this._el).select("svg").node().innerHTML.replace(/ href=/g," xlink:href=");return'"+svg+""};prototype.initialize=function(){var w=this._width,h=this._height,pad=this._padding;if(this._type==="svg"){this.initSVG(w,h,pad)}else{this.initCanvas(w,h,pad)}return this};prototype.initCanvas=function(w,h,pad){var Canvas=require("canvas"),tw=w+pad.left+pad.right,th=h+pad.top+pad.bottom,canvas=this._canvas=new Canvas(tw,th),ctx=canvas.getContext("2d");ctx.setTransform(1,0,0,1,pad.left,pad.top);this._renderer.context(ctx);this._renderer.resize(w,h,pad)};prototype.initSVG=function(w,h,pad){var tw=w+pad.left+pad.right,th=h+pad.top+pad.bottom;this._renderer.initialize(this._el,w,h,pad)};prototype.render=function(items){this._renderer.render(this._model.scene(),items);return this};prototype.update=function(opt){opt=opt||{};var view=this;view._build=view._build||(view._model.build(),true);view._model.encode(null,opt.props,opt.items);view.render(opt.items);return view.autopad(opt)};return view})();vg.headless.View.Factory=function(defs){return function(opt){opt=opt||{};var w=defs.width,h=defs.height,p=defs.padding,r=opt.renderer||"canvas",v=new vg.headless.View(w,h,p,r).defs(defs);if(defs.data.load){v.data(defs.data.load)}if(opt.data){v.data(opt.data)}return v}};vg.headless.render=function(opt,callback){function draw(chart){try{var view=chart({data:opt.data,renderer:opt.renderer}).update();if(opt.renderer==="svg"){callback(null,{svg:view.svg()})}else{view.canvasAsync(function(canvas){callback(null,{canvas:canvas})})}}catch(err){callback(err,null)}}vg.parse.spec(opt.spec,draw,vg.headless.View.Factory)};return vg})(d3,typeof topojson==="undefined"?null:topojson);