{"mappings":"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","names":["ascending","a","b","descending","a","b","bisector","f","compare1","compare2","delta","ascending","d","x","descending","zero","left","a","lo","hi","mid","right","center","i","number","x","numbers","values","valueof","value","index","ascendingBisect","bisector","ascending","bisectRight","bisectLeft","bisectCenter","number","bisect_default","blur","values","r","length","blurf","temp","blur2","Blur2","blurImage","blurfImage","data","rx","ry","width","height","blurx","blury","blurh","blurv","T","S","w","h","y","n","x","radius","start","stop","step","radius0","bluri","t","sum","s0","s1","i","j","count","values","valueof","value","index","length","array","empty","arrayify","values","reducer","reduce","cross","lengths","j","index","product","i","cumsum","values","valueof","sum","index","v","variance","values","valueof","count","delta","mean","sum","value","index","deviation","values","valueof","v","variance","extent","values","valueof","min","max","value","index","Adder","x","p","i","j","y","hi","lo","fsum","values","valueof","adder","value","index","fcumsum","v","InternMap","entries","key","keyof","value","intern_get","intern_set","intern_delete","InternSet","values","_intern","_key","identity","x","group","values","keys","nest","identity","groups","flatten","i","n","g","key","value","flatGroup","flatRollup","reduce","rollups","rollup","index","unique","indexes","map","regroup","InternMap","keyof","permute","source","keys","key","sort","values","F","f","index","d","i","j","c","ascendingDefined","permute","compareDefined","compare","ascending","a","b","x","groupSort","values","reduce","key","sort","rollup","ak","av","bk","bv","ascending","group","array","slice","map","constant","x","e10","e5","e2","tickSpec","start","stop","count","step","power","error","factor","i1","i2","inc","ticks","reverse","n","i","tickIncrement","tickStep","nice","start","stop","count","prestep","step","tickIncrement","thresholdSturges","values","count","bin","value","identity","domain","extent","threshold","thresholdSturges","histogram","data","n","x","step","values","xz","x0","x1","tz","max","tn","nice","ticks","tickIncrement","m","a","b","bins","j","bisect_default","_","constant","slice","max","values","valueof","value","index","maxIndex","values","valueof","max","index","value","min","values","valueof","value","index","minIndex","values","valueof","min","index","value","quickselect","array","k","left","right","compare","ascendingDefined","compareDefined","n","m","z","s","sd","newLeft","newRight","t","i","j","swap","greatest","values","compare","ascending","max","defined","maxValue","element","value","quantile","values","p","valueof","numbers","n","min","max","i","i0","value0","quickselect","value1","quantileSorted","number","quantileIndex","_","minIndex","maxIndex","index","j","ascendingDefined","greatest","thresholdFreedmanDiaconis","values","min","max","c","count","d","quantile","thresholdScott","values","min","max","c","count","d","deviation","mean","values","valueof","count","sum","value","index","median","values","valueof","quantile","medianIndex","quantileIndex","flatten","arrays","array","merge","mode","values","valueof","counts","InternMap","value","index","modeValue","modeCount","count","pairs","values","pairof","pair","previous","first","value","a","b","range","start","stop","step","n","i","rank","values","valueof","ascending","V","R","compareIndex","i","j","k","r","_","ascendingDefined","compareDefined","c","least","values","compare","ascending","min","defined","minValue","element","value","leastIndex","values","compare","ascending","minIndex","minValue","min","index","value","greatestIndex","values","compare","ascending","maxIndex","maxValue","max","index","value","scan","values","compare","index","leastIndex","shuffle_default","shuffler","random","array","i0","i1","m","i","t","sum","values","valueof","value","index","transpose","matrix","n","i","m","min","length","j","row","d","zip","transpose","every","values","test","index","value","some","values","test","index","value","filter","values","test","array","index","value","map","values","mapper","value","index","reduce","values","reducer","value","iterator","done","next","index","reverse","values","difference","values","others","InternSet","other","value","disjoint","values","other","iterator","set","InternSet","v","value","done","intersection","values","others","InternSet","set","out","value","other","superset","values","other","iterator","set","io","intern","value","done","ivalue","subset","values","other","superset","union","others","set","InternSet","other","o","identity_default","x","top","right","bottom","left","epsilon","translateX","x","translateY","y","number","scale","d","center","offset","entering","axis","orient","tickArguments","tickValues","tickFormat","tickSizeInner","tickSizeOuter","tickPadding","k","transform","context","values","format","identity_default","spacing","range","range0","range1","position","selection","path","tick","tickExit","tickEnter","line","text","p","_","axisTop","axisRight","axisBottom","axisLeft","noop","dispatch","i","n","_","t","Dispatch","parseTypenames","typenames","types","name","typename","callback","T","get","set","copy","type","that","args","c","dispatch_default","xhtml","namespaces_default","namespace_default","name","prefix","i","namespaces_default","creatorInherit","name","document","uri","xhtml","creatorFixed","fullname","creator_default","namespace_default","none","selector_default","selector","select_default","select","selector_default","groups","m","subgroups","j","group","n","subgroup","node","subnode","i","Selection","array","x","empty","selectorAll_default","selector","arrayAll","select","array","selectAll_default","selectorAll_default","groups","m","subgroups","parents","j","group","n","node","i","Selection","matcher_default","selector","childMatcher","node","find","childFind","match","childFirst","selectChild_default","childMatcher","filter","children","childrenFilter","match","selectChildren_default","childMatcher","filter_default","match","matcher_default","groups","m","subgroups","j","group","n","subgroup","node","i","Selection","sparse_default","update","enter_default","Selection","sparse_default","EnterNode","parent","datum","child","next","selector","constant_default","x","bindIndex","parent","group","enter","update","exit","data","i","node","groupLength","dataLength","EnterNode","bindKey","key","nodeByKeyValue","keyValues","keyValue","datum","data_default","value","bind","parents","groups","constant_default","m","j","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","next","Selection","exit_default","Selection","sparse_default","join_default","onenter","onupdate","onexit","enter","update","exit","merge_default","context","selection","groups0","groups1","m0","m1","m","merges","j","group0","group1","n","merge","node","i","Selection","order_default","groups","j","m","group","i","next","node","sort_default","compare","ascending","compareNode","a","b","groups","m","sortgroups","j","group","n","sortgroup","node","i","Selection","call_default","callback","nodes_default","node_default","groups","j","m","group","i","n","node","size_default","size","node","empty_default","each_default","callback","groups","j","m","group","n","node","attrRemove","name","attrRemoveNS","fullname","attrConstant","value","attrConstantNS","attrFunction","v","attrFunctionNS","attr_default","namespace_default","node","window_default","node","styleRemove","name","styleConstant","value","priority","styleFunction","v","style_default","styleValue","node","window_default","propertyRemove","name","propertyConstant","value","propertyFunction","v","property_default","classArray","string","classList","node","ClassList","name","i","classedAdd","names","list","n","classedRemove","classedTrue","classedFalse","classedFunction","value","classed_default","textRemove","textConstant","value","textFunction","v","text_default","htmlRemove","htmlConstant","value","htmlFunction","v","html_default","raise","raise_default","lower","lower_default","append_default","name","create","creator_default","constantNull","insert_default","name","before","create","creator_default","select","selector_default","remove","parent","remove_default","selection_cloneShallow","clone","parent","selection_cloneDeep","clone_default","deep","datum_default","value","contextListener","listener","event","parseTypenames","typenames","t","name","i","onRemove","typename","on","j","m","o","onAdd","value","options","on_default","n","dispatchEvent","node","type","params","window","window_default","event","dispatchConstant","dispatchFunction","dispatch_default","iterator_default","groups","j","m","group","i","n","node","root","Selection","groups","parents","selection","selection_selection","select_default","selectAll_default","selectChild_default","selectChildren_default","filter_default","data_default","enter_default","exit_default","join_default","merge_default","order_default","sort_default","call_default","nodes_default","node_default","size_default","empty_default","each_default","attr_default","style_default","property_default","classed_default","text_default","html_default","raise_default","lower_default","append_default","insert_default","remove_default","clone_default","datum_default","on_default","dispatch_default","iterator_default","selection_default","select_default","selector","Selection","root","create_default","name","select_default","creator_default","nextId","local","Local","node","id","value","sourceEvent_default","event","sourceEvent","pointer_default","event","node","sourceEvent_default","svg","point","rect","pointers_default","events","node","sourceEvent_default","event","pointer_default","selectAll_default","selector","Selection","array","root","nonpassive","nonpassivecapture","nopropagation","event","noevent_default","nodrag_default","view","root","selection","select_default","noevent_default","nonpassivecapture","yesdrag","noclick","constant_default","x","DragEvent","type","sourceEvent","subject","target","identifier","active","x","y","dx","dy","dispatch","value","defaultFilter","event","defaultContainer","defaultSubject","d","defaultTouchable","drag_default","filter","container","subject","touchable","gestures","listeners","dispatch_default","active","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag","selection","mousedowned","touchstarted","touchmoved","nonpassive","touchended","gesture","beforestart","select_default","mousemoved","nonpassivecapture","mouseupped","nodrag_default","nopropagation","noevent_default","dx","dy","yesdrag","touches","c","n","i","that","identifier","touch","dispatch","p","pointer_default","s","DragEvent","type","p0","_","constant_default","value","define_default","constructor","factory","prototype","extend","parent","definition","key","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","define_default","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","m","l","rgbn","Rgb","rgba","hsla","n","r","g","b","a","rgbConvert","o","rgb","opacity","extend","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","value","h","s","Hsl","min","max","hsl","m2","m1","hsl2rgb","clamph","clampt","radians","degrees","K","Xn","Yn","Zn","t0","t1","t2","t3","labConvert","o","Lab","Hcl","hcl2lab","Rgb","rgbConvert","r","rgb2lrgb","g","b","y","xyz2lab","x","z","gray","l","opacity","lab","a","define_default","extend","Color","k","lab2xyz","lrgb2rgb","hclConvert","h","degrees","lch","c","hcl","radians","A","B","C","D","E","ED","EB","BC_DA","cubehelixConvert","o","Cubehelix","Rgb","rgbConvert","r","g","b","l","bl","k","s","h","degrees","cubehelix","opacity","define_default","extend","Color","brighter","darker","radians","a","cosh","sinh","basis","t1","v0","v1","v2","v3","t2","t3","basis_default","values","n","t","i","basisClosed_default","values","n","t","i","v0","v1","v2","v3","basis","constant_default","x","linear","a","d","t","exponential","b","y","hue","constant_default","gamma","nogamma","rgb_default","rgbGamma","y","color","gamma","rgb","start","end","r","g","b","opacity","nogamma","t","rgbSpline","spline","colors","i","rgbBasis","basis_default","rgbBasisClosed","basisClosed_default","numberArray_default","a","b","c","i","t","isNumberArray","x","array_default","a","b","isNumberArray","numberArray_default","genericArray","nb","na","x","c","i","value_default","t","date_default","a","b","d","t","number_default","a","b","t","object_default","a","b","i","c","k","value_default","t","reA","reB","zero","b","one","t","string_default","a","bi","am","bm","bs","i","s","q","number_default","o","value_default","a","b","t","c","constant_default","number_default","color","rgb_default","string_default","date_default","isNumberArray","numberArray_default","genericArray","object_default","discrete_default","range","n","t","hue_default","a","b","i","hue","t","x","round_default","a","b","t","degrees","identity","decompose_default","a","b","c","d","e","f","scaleX","scaleY","skewX","svgNode","parseCss","value","m","identity","decompose_default","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","s","translate","xa","ya","xb","yb","q","i","number_default","rotate","a","b","skewX","scale","t","n","o","interpolateTransformCss","parseCss","interpolateTransformSvg","parseSvg","epsilon2","cosh","x","sinh","tanh","zoom_default","zoomRho","rho","rho2","rho4","zoom","p0","p1","ux0","uy0","w0","ux1","uy1","w1","dx","dy","d2","i","S","t","d1","b0","b1","r0","r1","s","coshr0","u","_","_1","_2","_4","hsl","hue","start","end","h","s","nogamma","l","opacity","t","hsl_default","hslLong","lab","start","end","l","nogamma","a","b","opacity","t","hcl","hue","start","end","h","c","nogamma","l","opacity","t","hcl_default","hclLong","cubehelix","hue","cubehelixGamma","y","start","end","h","s","nogamma","l","opacity","t","cubehelix_default","cubehelixLong","piecewise","interpolate","values","value_default","i","n","v","I","t","quantize_default","interpolator","n","samples","i","frame","timeout","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","f","now","clearNow","Timer","timer","callback","delay","time","sleep","t","timerFlush","wake","nap","poke","t0","t1","t2","timeout_default","callback","delay","time","t","Timer","elapsed","interval_default","callback","delay","time","t","Timer","total","now","tick","elapsed","emptyOn","dispatch_default","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule_default","node","name","id","index","group","timing","schedules","create","init","schedule","get","set","self","tween","timer","elapsed","start","i","j","n","o","stop","timeout_default","tick","t","interrupt_default","node","name","schedules","schedule","active","empty","i","STARTING","ENDING","ENDED","interrupt_default","name","tweenRemove","id","name","tween0","tween1","schedule","set","tween","i","n","tweenFunction","value","t","tween_default","get","tweenValue","transition","node","interpolate_default","a","b","c","number_default","color","rgb_default","string_default","attrRemove","name","attrRemoveNS","fullname","attrConstant","interpolate","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","value","string10","attrFunctionNS","attr_default","namespace_default","i","interpolateTransformSvg","interpolate_default","tweenValue","attrInterpolate","name","i","t","attrInterpolateNS","fullname","attrTweenNS","value","t0","i0","tween","attrTween","attrTween_default","key","namespace_default","delayFunction","id","value","init","delayConstant","delay_default","get","durationFunction","id","value","set","durationConstant","duration_default","get","easeConstant","id","value","set","ease_default","get","easeVarying","id","value","v","set","easeVarying_default","filter_default","match","matcher_default","groups","m","subgroups","j","group","n","subgroup","node","i","Transition","merge_default","transition","groups0","groups1","m0","m1","m","merges","j","group0","group1","n","merge","node","i","Transition","start","name","t","i","onFunction","id","listener","on0","on1","sit","init","set","schedule","on","on_default","get","removeFunction","id","parent","i","remove_default","select_default","select","name","id","selector_default","groups","m","subgroups","j","group","n","subgroup","node","subnode","i","schedule_default","get","Transition","selectAll_default","select","name","id","selectorAll_default","groups","m","subgroups","parents","j","group","n","node","i","children","child","inherit","get","k","l","schedule_default","Transition","Selection","selection_default","styleNull","name","interpolate","string00","string10","interpolate0","string0","styleValue","string1","styleRemove","styleConstant","value1","styleFunction","value","styleMaybeRemove","id","on0","on1","listener0","key","event","remove","schedule","set","on","listener","style_default","priority","i","interpolateTransformCss","interpolate_default","tweenValue","styleInterpolate","name","i","priority","t","styleTween","value","i0","tween","styleTween_default","key","textConstant","value","textFunction","value1","text_default","tweenValue","textInterpolate","i","t","textTween","value","t0","i0","tween","textTween_default","key","transition_default","name","id0","id1","newId","groups","m","j","group","n","node","i","inherit","get","schedule_default","Transition","end_default","on0","on1","that","id","size","resolve","reject","cancel","end","schedule","set","on","id","Transition","groups","parents","name","transition","selection_default","newId","selection_prototype","select_default","selectAll_default","filter_default","merge_default","transition_default","on_default","attr_default","attrTween_default","style_default","styleTween_default","text_default","textTween_default","remove_default","tween_default","delay_default","duration_default","ease_default","easeVarying_default","end_default","linear","quadIn","quadOut","quadInOut","cubicIn","cubicOut","cubicInOut","exponent","polyIn","custom","t","polyOut","polyInOut","pi","halfPi","sinIn","sinOut","sinInOut","tpmt","x","expIn","tpmt","expOut","expInOut","circleIn","circleOut","circleInOut","b1","b2","b3","b4","b5","b6","b7","b8","b9","b0","bounceIn","bounceOut","bounceInOut","overshoot","backIn","custom","s","t","backOut","backInOut","tau","amplitude","period","elasticIn","custom","a","p","s","t","tpmt","elasticOut","elasticInOut","defaultTiming","cubicInOut","inherit","node","id","timing","transition_default","name","Transition","newId","now","groups","m","j","group","n","i","schedule_default","selection_default","interrupt_default","transition_default","root","active_default","node","name","schedules","schedule","i","SCHEDULED","Transition","constant_default","x","BrushEvent","type","sourceEvent","target","selection","mode","dispatch","nopropagation","event","noevent_default","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","abs","max","min","number1","e","number2","X","type","x","xy","Y","y","XY","cursors","flipX","flipY","signsX","signsY","defaultFilter","event","defaultExtent","svg","defaultTouchable","local","node","empty","extent","brushSelection","state","brushX","brush","brushY","brush_default","dim","filter","touchable","keys","listeners","dispatch_default","handleSize","touchending","group","overlay","initialize","select_default","handle","d","redraw","started","touchmoved","touchended","selection","emitter","that","emit","selection0","selection1","i","value_default","tween","t","args","interrupt_default","clean","Emitter","mode","BrushEvent","signX","signY","W","w0","w1","N","n0","n1","E","e0","e1","S","s0","s1","dx","dy","moving","shifting","lockX","lockY","points","pointer_default","pts","move","moved","ended","view","keydowned","keyupped","nodrag_default","p","point","noevent_default","point0","nopropagation","yesdrag","_","constant_default","value","abs","cos","sin","pi","halfPi","tau","max","epsilon","range","i","j","_","k","compareValue","compare","a","b","chord_default","chord","chordTranspose","chordDirected","directed","transpose","padAngle","sortGroups","sortSubgroups","sortChords","matrix","n","groupSums","groupIndex","chords","groups","dx","x","max","tau","x0","subgroupIndex","source","pi","tau","epsilon","tauEpsilon","append","strings","i","appendRound","digits","d","k","n","Path","x","y","x1","y1","x2","y2","r","x0","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","l","t01","t21","a0","a1","ccw","dx","dy","cw","da","w","h","path","pathRound","slice","constant_default","x","defaultSource","d","defaultTarget","defaultRadius","defaultStartAngle","defaultEndAngle","defaultPadAngle","defaultArrowheadRadius","ribbon","headRadius","source","target","sourceRadius","targetRadius","startAngle","endAngle","padAngle","context","buffer","s","t","ap","argv","slice","sr","sa0","halfPi","sa1","tr","ta0","ta1","path","epsilon","abs","cos","sin","hr","tr2","ta2","_","constant_default","ribbon_default","ribbonArrow","array","slice","ascending_default","a","b","area_default","ring","i","area","constant_default","x","contains_default","ring","hole","i","n","c","ringContains","point","x","y","contains","j","pi","xi","yi","pj","xj","yj","segmentContains","a","b","collinear","within","p","q","r","noop_default","cases","contours_default","dx","dy","threshold","thresholdSturges","smooth","smoothLinear","contours","values","tz","ascending_default","e","extent","finite","ticks","nice","value","contour","v","polygons","holes","isorings","ring","area_default","hole","i","n","polygon","contains_default","callback","fragmentByStart","fragmentByEnd","x","y","t0","t1","t2","t3","above","stitch","line","start","end","startIndex","index","endIndex","f","g","point","xt","yt","v1","valid","smooth1","_","_0","_1","constant_default","slice","noop_default","v0","a","b","d","defaultX","d","defaultY","defaultWeight","density_default","x","y","weight","dx","dy","r","k","o","n","m","threshold","constant_default","grid","data","values","pow2k","i","xi","yi","wi","x0","y0","xt","yt","blur2","density","tz","pow4k","ticks","max","contours_default","c","transform","contours","contour","value","geometry","transformPolygon","coordinates","transformRing","transformPoint","resize","_0","_1","slice","epsilon","splitter","resulterrbound","sum","elen","flen","f","h","Q","Qnew","hh","bvirt","enow","fnow","eindex","findex","hindex","estimate","elen","Q","i","vec","n","ccwerrboundA","epsilon","ccwerrboundB","ccwerrboundC","B","vec","C1","C2","D","u","orient2dadapt","ax","ay","bx","by","cx","cy","detsum","acxtail","acytail","bcxtail","bcytail","bvirt","c","ahi","alo","bhi","blo","_i","_j","_0","s1","s0","t1","t0","u3","acx","bcx","acy","bcy","splitter","det","estimate","errbound","resulterrbound","C1len","sum","C2len","Dlen","orient2d","detleft","detright","o3derrboundA","epsilon","o3derrboundB","o3derrboundC","bc","vec","ca","ab","at_b","at_c","bt_c","bt_a","ct_a","ct_b","bct","cat","abt","u","_8","_8b","_16","_12","fin","fin2","iccerrboundA","epsilon","iccerrboundB","iccerrboundC","bc","vec","ca","ab","aa","bb","cc","u","v","axtbc","aytbc","bxtca","bytca","cxtab","cytab","abt","bct","cat","abtt","bctt","catt","_8","_16","_16b","_16c","_32","_32b","_48","_64","fin","fin2","isperrboundA","epsilon","isperrboundB","isperrboundC","ab","vec","bc","cd","de","ea","ac","bd","ce","da","eb","abc","bcd","cde","dea","eab","abd","bce","cda","deb","eac","adet","bdet","cdet","ddet","edet","abdet","cddet","cdedet","deter","_8","_8b","_8c","_16","_24","_48","_48b","_96","_192","_384x","_384y","_384z","_768","xdet","vec","ydet","zdet","fin","EPSILON","EDGE_STACK","Delaunator","_Delaunator","points","getX","defaultGetX","getY","defaultGetY","n","coords","i","p","maxTriangles","hullPrev","hullNext","hullTri","hullHash","minX","minY","maxX","maxY","x","y","cx","cy","i0","i1","i2","minDist","d","dist","i0x","i0y","i1x","i1y","minRadius","r","circumradius","i2x","i2y","quicksort","hull","j","d0","id","orient2d","center","circumcenter","hullSize","k","xp","yp","start","key","e","q","t","pseudoAngle","a","triangles","halfedges","ar","b","a0","b0","al","bl","p0","pr","pl","p1","inCircle","hbl","br","c","dx","dy","ax","ay","bx","by","px","py","ex","ey","fx","fy","ap","bp","cp","cl","ids","dists","left","right","temp","tempDist","median","swap","arr","tmp","Path","x","y","x0","y0","w","h","Polygon","x","y","Voronoi","delaunay","xmin","ymin","xmax","ymax","points","hull","triangles","vectors","bx","by","circumcenters","i","j","n","x","t1","t2","t3","x1","y1","x2","y2","x3","y3","dx","dy","ex","ey","ab","a","d","bl","cl","h","p0","p1","x0","y0","context","buffer","Path","halfedges","inedges","ti","tj","xi","yi","xj","yj","h0","h1","t","y","v","p","cell","polygon","Polygon","S","c0","c1","ci","cj","loop","ai","li","aj","lj","e0","e","V","P","e1","sx0","sy0","sx1","sy1","flip","vx0","vy0","vxn","vyn","vx","vy","c","k","tau","pow","pointX","p","pointY","collinear","d","triangles","coords","i","a","b","c","jitter","x","y","r","Delaunay","_Delaunay","points","fx","fy","that","flatArray","flatIterable","Delaunator","_","j","e","f","bounds","n","halfedges","hull","inedges","hullIndex","Voronoi","_hullIndex","l","e0","p0","i0","dc","t","dt","context","buffer","Path","ti","tj","h","polygon","Polygon","t0","t1","t2","array","EOL","EOF","QUOTE","NEWLINE","RETURN","objectConverter","columns","name","i","customConverter","f","object","row","inferColumns","rows","columnSet","column","pad","value","width","s","length","formatYear","year","formatDate","date","hours","minutes","seconds","milliseconds","dsv_default","delimiter","reFormat","DELIMITER","parse","text","convert","parseRows","N","I","n","t","eof","eol","token","j","c","preformatBody","formatValue","format","formatBody","formatRows","formatRow","csv","dsv_default","csvParse","csvParseRows","csvFormat","csvFormatBody","csvFormatRows","csvFormatRow","csvFormatValue","tsv","dsv_default","tsvParse","tsvParseRows","tsvFormat","tsvFormatBody","tsvFormatRows","tsvFormatRow","tsvFormatValue","autoType","object","key","value","number","m","fixtz","responseBlob","response","blob_default","input","init","responseArrayBuffer","response","buffer_default","input","init","responseText","response","text_default","input","init","dsvParse","parse","input","init","row","text_default","response","dsv","delimiter","format","dsv_default","csv","csvParse","tsv","tsvParse","image_default","input","init","resolve","reject","image","key","responseJson","response","json_default","input","init","parser","type","input","init","text_default","text","xml_default","html","svg","center_default","x","y","nodes","strength","force","n","node","sx","sy","_","add_default","d","x","y","add","tree","parent","node","leaf","x0","y0","x1","y1","xm","ym","xp","yp","right","bottom","i","j","addAll","data","n","xz","yz","cover_default","x","y","x0","y0","x1","y1","z","node","parent","i","data_default","data","node","extent_default","_","quad_default","node","x0","y0","x1","y1","find_default","x","y","radius","data","x0","y0","x1","y1","x2","y2","x3","y3","quads","node","q","i","quad_default","xm","ym","dx","dy","d2","d","remove_default","d","x","y","parent","node","retainer","previous","next","x0","y0","x1","y1","xm","ym","right","bottom","i","j","removeAll","data","root_default","size_default","size","node","visit_default","callback","quads","q","node","child","x0","y0","x1","y1","quad_default","xm","ym","visitAfter_default","callback","quads","next","q","quad_default","node","child","x0","y0","x1","y1","xm","ym","defaultX","d","x_default","_","defaultY","d","y_default","_","quadtree","nodes","x","y","tree","Quadtree","defaultX","defaultY","x0","y0","x1","y1","leaf_copy","leaf","copy","next","treeProto","node","child","i","add_default","addAll","cover_default","data_default","extent_default","find_default","remove_default","removeAll","root_default","size_default","visit_default","visitAfter_default","x_default","y_default","constant_default","x","jiggle_default","random","x","d","y","collide_default","radius","nodes","radii","random","strength","iterations","constant_default","force","i","n","tree","node","xi","yi","ri","ri2","k","quadtree","prepare","apply","quad","x0","y0","x1","y1","data","rj","r","l","jiggle_default","initialize","_nodes","_random","_","index","d","find","nodeById","nodeId","node","link_default","links","id","strength","defaultStrength","strengths","distance","constant_default","distances","nodes","count","bias","random","iterations","link","force","alpha","k","n","i","source","target","x","y","l","b","jiggle_default","initialize","m","initializeStrength","initializeDistance","_nodes","_random","_","lcg_default","s","x","d","y","initialRadius","initialAngle","simulation_default","nodes","simulation","alpha","alphaMin","alphaDecay","alphaTarget","velocityDecay","forces","stepper","timer","step","event","dispatch_default","random","lcg_default","tick","iterations","i","n","node","k","force","initializeNodes","radius","angle","initializeForce","_","name","dx","dy","d2","closest","manyBody_default","nodes","node","random","alpha","strength","constant_default","strengths","distanceMin2","distanceMax2","theta2","force","_","i","n","tree","quadtree","x","y","accumulate","apply","initialize","quad","q","c","weight","x1","x2","w","l","jiggle_default","_nodes","_random","radial_default","radius","x","y","nodes","strength","constant_default","strengths","radiuses","force","alpha","i","n","node","dx","dy","r","k","initialize","_","x_default","x","strength","constant_default","nodes","strengths","xz","force","alpha","i","n","node","initialize","_","y_default","y","strength","constant_default","nodes","strengths","yz","force","alpha","i","n","node","initialize","_","formatDecimal_default","x","formatDecimalParts","p","i","coefficient","exponent_default","x","formatDecimalParts","formatGroup_default","grouping","thousands","value","width","i","t","j","g","length","formatNumerals_default","numerals","value","i","re","formatSpecifier","specifier","match","FormatSpecifier","formatTrim_default","s","out","n","i","i0","i1","prefixExponent","formatPrefixAuto_default","x","p","d","formatDecimalParts","coefficient","exponent","n","formatRounded_default","x","p","d","formatDecimalParts","coefficient","exponent","formatTypes_default","x","p","formatDecimal_default","formatRounded_default","formatPrefixAuto_default","identity_default","x","map","prefixes","locale_default","locale","group","identity_default","formatGroup_default","currencyPrefix","currencySuffix","decimal","numerals","formatNumerals_default","percent","minus","nan","newFormat","specifier","formatSpecifier","fill","align","sign","symbol","zero","width","comma","precision","trim","type","formatTypes_default","prefix","suffix","formatType","maybeSuffix","format","value","valuePrefix","valueSuffix","i","n","c","valueNegative","formatTrim_default","prefixExponent","length","padding","formatPrefix","f","e","exponent_default","k","locale","format","formatPrefix","defaultLocale","definition","locale_default","precisionFixed_default","step","exponent_default","precisionPrefix_default","step","value","exponent_default","precisionRound_default","step","max","exponent_default","epsilon","epsilon2","pi","halfPi","quarterPi","tau","degrees","radians","abs","atan","atan2","cos","ceil","exp","hypot","log","pow","sin","sign","x","sqrt","tan","acos","pi","asin","halfPi","haversin","noop","streamGeometry","geometry","stream","streamGeometryType","streamObjectType","object","features","i","n","coordinates","streamLine","streamPolygon","geometries","closed","coordinate","stream_default","areaRingSum","Adder","areaSum","lambda00","phi00","lambda0","cosPhi0","sinPhi0","areaStream","noop","areaRingStart","areaRingEnd","areaRing","tau","areaPointFirst","areaPoint","lambda","phi","radians","cos","quarterPi","sin","dLambda","sdLambda","adLambda","cosPhi","sinPhi","k","u","v","atan2","area_default","object","stream_default","spherical","cartesian","atan2","asin","lambda","phi","cosPhi","cos","sin","cartesianDot","a","b","cartesianCross","cartesianAddInPlace","cartesianScale","vector","k","cartesianNormalizeInPlace","d","l","sqrt","lambda0","phi0","lambda1","phi1","lambda2","lambda00","phi00","p0","deltaSum","ranges","range","boundsStream","boundsPoint","boundsLineStart","boundsLineEnd","boundsRingPoint","boundsRingStart","boundsRingEnd","Adder","areaStream","areaRingSum","epsilon","lambda","phi","linePoint","p","cartesian","radians","normal","cartesianCross","equatorial","inflection","cartesianNormalizeInPlace","spherical","delta","sign","lambdai","degrees","phii","antimeridian","abs","angle","rangeCompare","a","b","rangeContains","x","bounds_default","feature","i","merged","deltaMax","stream_default","W0","W1","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","lambda00","phi00","x0","y0","z0","centroidStream","noop","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","lambda","phi","radians","cosPhi","cos","centroidPointCartesian","sin","x","y","z","centroidLinePointFirst","centroidLinePoint","w","atan2","sqrt","centroidRingPointFirst","centroidRingPoint","cx","cy","cz","m","hypot","asin","v","centroid_default","object","Adder","stream_default","epsilon2","epsilon","degrees","constant_default","x","compose_default","a","b","compose","x","y","rotationIdentity","lambda","phi","abs","pi","tau","rotateRadians","deltaLambda","deltaPhi","deltaGamma","compose_default","rotationLambda","rotationPhiGamma","forwardRotationLambda","rotation","cosDeltaPhi","cos","sinDeltaPhi","sin","cosDeltaGamma","sinDeltaGamma","cosPhi","x","y","z","k","atan2","asin","rotation_default","rotate","radians","forward","coordinates","degrees","circleStream","stream","radius","delta","direction","t0","t1","cosRadius","cos","sinRadius","sin","step","tau","circleRadius","point","t","spherical","cartesian","cartesianNormalizeInPlace","acos","epsilon","circle_default","center","constant_default","precision","ring","rotate","x","y","degrees","circle","c","r","radians","p","rotateRadians","_","buffer_default","lines","line","x","y","m","noop","result","pointEqual_default","a","b","abs","epsilon","Intersection","point","points","other","entry","rejoin_default","segments","compareIntersection","startInside","interpolate","stream","subject","clip","i","n","segment","p0","p1","x","pointEqual_default","epsilon","link","start","current","isSubject","array","a","b","longitude","point","abs","pi","sign","tau","polygonContains_default","polygon","lambda","phi","sinPhi","sin","normal","cos","angle","winding","sum","Adder","halfPi","epsilon","i","n","m","ring","point0","lambda0","phi0","quarterPi","sinPhi0","cosPhi0","j","lambda1","sinPhi1","cosPhi1","point1","phi1","delta","absDelta","antimeridian","k","atan2","arc","cartesianCross","cartesian","cartesianNormalizeInPlace","intersection","phiArc","asin","epsilon2","clip_default","pointVisible","clipLine","interpolate","start","sink","line","ringBuffer","buffer_default","ringSink","polygonStarted","polygon","segments","ring","clip","point","lineStart","lineEnd","pointRing","ringStart","ringEnd","merge","startInside","polygonContains_default","rejoin_default","compareIntersection","lambda","phi","pointLine","clean","ringSegments","i","n","m","segment","validSegment","a","b","halfPi","epsilon","antimeridian_default","clip_default","clipAntimeridianLine","clipAntimeridianInterpolate","pi","halfPi","stream","lambda0","phi0","sign0","clean","lambda1","phi1","sign1","delta","abs","epsilon","clipAntimeridianIntersect","cosPhi0","cosPhi1","sinLambda0Lambda1","sin","atan","cos","from","to","direction","phi","lambda","circle_default","radius","cr","cos","delta","radians","smallRadius","notHemisphere","abs","epsilon","interpolate","from","to","direction","stream","circleStream","visible","lambda","phi","clipLine","point0","c0","v0","v00","clean","point1","point2","v","c","code","pi","intersect","pointEqual_default","t","a","b","two","pa","cartesian","pb","n1","n2","cartesianCross","n2n2","cartesianDot","n1n2","determinant","c1","c2","n1xn2","A","cartesianScale","B","cartesianAddInPlace","u","w","uu","t2","sqrt","q","spherical","lambda0","lambda1","phi0","phi1","z","polar","meridian","q1","r","clip_default","line_default","a","b","x0","y0","x1","y1","ax","ay","bx","by","t0","t1","dx","dy","r","clipMax","clipMin","clipRectangle","x0","y0","x1","y1","visible","x","y","interpolate","from","to","direction","stream","a","a1","corner","comparePoint","p","abs","epsilon","compareIntersection","b","ca","cb","activeStream","bufferStream","buffer_default","segments","polygon","ring","x__","y__","v__","x_","y_","v_","first","clean","clipStream","point","lineStart","lineEnd","polygonStart","polygonEnd","polygonInside","winding","i","n","j","m","a0","b0","b1","startInside","cleanInside","merge","rejoin_default","linePoint","v","line_default","extent_default","x0","y0","x1","y1","cache","cacheStream","clip","stream","clipRectangle","_","lengthSum","lambda0","sinPhi0","cosPhi0","lengthStream","noop","lengthLineStart","lengthPointFirst","lengthLineEnd","lambda","phi","radians","sin","cos","lengthPoint","sinPhi","cosPhi","delta","abs","cosDelta","sinDelta","x","y","z","atan2","sqrt","length_default","object","Adder","stream_default","coordinates","object","distance_default","a","b","length_default","containsObjectType","object","point","containsGeometry","features","i","n","containsGeometryType","containsPoint","coordinates","containsLine","containsPolygon","geometries","geometry","distance_default","ao","bo","ab","epsilon2","polygonContains_default","ringRadians","pointRadians","ring","radians","contains_default","graticuleX","y0","y1","dy","y","range","epsilon","x","graticuleY","x0","x1","dx","graticule","X1","X0","Y1","Y0","DX","DY","X","Y","precision","lines","ceil","abs","coordinates","_","graticule10","interpolate_default","a","b","x0","radians","y0","x1","y1","cy0","cos","sy0","sin","cy1","sy1","kx0","ky0","kx1","ky1","asin","sqrt","haversin","k","interpolate","t","B","A","x","y","z","atan2","degrees","identity_default","x","areaSum","Adder","areaRingSum","x00","y00","x0","y0","areaStream","noop","areaRingStart","areaRingEnd","abs","area","areaPointFirst","x","y","areaPoint","area_default","x0","y0","x1","y1","boundsStream","boundsPoint","noop","bounds","x","y","bounds_default","X0","Y0","Z0","X1","Y1","Z1","X2","Y2","Z2","x00","y00","x0","y0","centroidStream","centroidPoint","centroidLineStart","centroidLineEnd","centroidRingStart","centroidRingEnd","centroid","x","y","centroidPointFirstLine","centroidPointLine","dx","dy","z","sqrt","centroidPointFirstRing","centroidPointRing","centroid_default","PathContext","context","_","x","y","tau","noop","lengthSum","Adder","lengthRing","x00","y00","x0","y0","lengthStream","noop","lengthPointFirst","lengthPoint","length","x","y","sqrt","measure_default","cacheDigits","cacheAppend","cacheRadius","cacheCircle","PathString","digits","append","appendRound","_","x","y","s","result","strings","i","j","d","k","path_default","projection","context","digits","pointRadius","projectionStream","contextStream","path","object","stream_default","area_default","measure_default","bounds_default","centroid_default","_","identity_default","PathString","PathContext","d","transform_default","methods","transformer","stream","s","TransformStream","key","x","y","fit","projection","fitBounds","object","clip","stream_default","bounds_default","fitExtent","extent","b","w","h","k","x","y","fitSize","size","fitWidth","width","fitHeight","height","maxDepth","cosMinDistance","cos","radians","resample_default","project","delta2","resample","resampleNone","transformer","x","y","resampleLineTo","x0","y0","lambda0","a0","b0","c0","x1","y1","lambda1","a1","b1","c1","depth","stream","dx","dy","d2","a","b","c","m","sqrt","phi2","asin","lambda2","abs","epsilon","atan2","p","x2","y2","dx2","dy2","dz","lambda00","x00","y00","a00","b00","c00","resampleStream","point","lineStart","lineEnd","ringStart","linePoint","lambda","phi","cartesian","ringPoint","ringEnd","transformRadians","transformer","x","y","radians","transformRotate","rotate","scaleTranslate","k","dx","dy","sx","sy","transform","scaleTranslateRotate","alpha","cosAlpha","cos","sinAlpha","sin","a","b","ai","bi","ci","fi","projection","project","projectionMutator","projectAt","lambda","phi","deltaLambda","deltaPhi","deltaGamma","theta","preclip","antimeridian_default","x0","y0","x1","y1","postclip","identity_default","delta2","projectResample","projectTransform","projectRotateTransform","cache","cacheStream","point","invert","degrees","stream","_","reset","circle_default","clipRectangle","recenter","resample_default","sqrt","extent","object","fitExtent","size","fitSize","width","fitWidth","height","fitHeight","center","rotateRadians","compose_default","conicProjection","projectAt","phi0","phi1","pi","m","projectionMutator","p","_","radians","degrees","cylindricalEqualAreaRaw","phi0","cosPhi0","cos","forward","lambda","phi","sin","x","y","asin","conicEqualAreaRaw","y0","y1","sy0","sin","n","abs","epsilon","cylindricalEqualAreaRaw","c","r0","sqrt","project","x","y","r","cos","r0y","l","atan2","sign","pi","asin","conicEqualArea_default","conicProjection","albers_default","conicEqualArea_default","multiplex","streams","n","x","y","i","albersUsa_default","cache","cacheStream","lower48","albers_default","lower48Point","alaska","conicEqualArea_default","alaskaPoint","hawaii","hawaiiPoint","point","pointStream","albersUsa","coordinates","k","t","stream","_","reset","epsilon","extent","object","fitExtent","size","fitSize","width","fitWidth","height","fitHeight","azimuthalRaw","scale","x","y","cx","cos","cy","k","sin","azimuthalInvert","angle","z","sqrt","c","sc","cc","atan2","asin","azimuthalEqualAreaRaw","azimuthalRaw","cxcy","sqrt","azimuthalInvert","z","asin","azimuthalEqualArea_default","projection","azimuthalEquidistantRaw","azimuthalRaw","c","acos","sin","azimuthalInvert","z","azimuthalEquidistant_default","projection","mercatorRaw","lambda","phi","log","tan","halfPi","x","y","atan","exp","mercator_default","mercatorProjection","tau","project","m","projection","center","scale","translate","clipExtent","x0","y0","x1","y1","_","reclip","k","pi","t","rotation_default","tany","y","tan","halfPi","conicConformalRaw","y0","y1","cy0","cos","n","sin","log","f","pow","mercatorRaw","project","x","epsilon","r","fy","sign","sqrt","l","atan2","abs","pi","atan","conicConformal_default","conicProjection","equirectangularRaw","lambda","phi","equirectangular_default","projection","conicEquidistantRaw","y0","y1","cy0","cos","n","sin","g","abs","epsilon","equirectangularRaw","project","x","y","gy","nx","l","atan2","sign","pi","sqrt","conicEquidistant_default","conicProjection","A1","A2","A3","A4","M","sqrt","iterations","equalEarthRaw","lambda","phi","l","asin","sin","l2","l6","cos","x","y","delta","fy","fpy","abs","epsilon2","equalEarth_default","projection","gnomonicRaw","x","y","cy","cos","k","sin","azimuthalInvert","atan","gnomonic_default","projection","identity_default","k","tx","ty","sx","sy","alpha","ca","sa","x0","y0","x1","y1","kx","ky","transform","transformer","x","y","p","projection","postclip","cache","cacheStream","reset","t","stream","_","clipRectangle","radians","sin","cos","degrees","extent","object","fitExtent","size","fitSize","width","fitWidth","height","fitHeight","naturalEarth1Raw","lambda","phi","phi2","phi4","x","y","i","delta","abs","epsilon","naturalEarth1_default","projection","orthographicRaw","x","y","cos","sin","azimuthalInvert","asin","orthographic_default","projection","epsilon","stereographicRaw","x","y","cy","cos","k","sin","azimuthalInvert","z","atan","stereographic_default","projection","transverseMercatorRaw","lambda","phi","log","tan","halfPi","x","y","atan","exp","transverseMercator_default","m","mercatorProjection","center","rotate","_","defaultSeparation","a","b","meanX","children","meanXReduce","x","c","maxY","maxYReduce","y","leafLeft","node","leafRight","cluster_default","separation","dx","dy","nodeSize","cluster","root","previousNode","left","right","x0","x1","count","node","sum","children","i","count_default","each_default","callback","that","index","node","eachBefore_default","callback","that","node","nodes","children","index","eachAfter_default","callback","that","node","nodes","next","children","i","n","index","find_default","callback","that","index","node","sum_default","value","node","sum","children","i","sort_default","compare","node","path_default","end","start","ancestor","leastCommonAncestor","nodes","k","a","b","aNodes","bNodes","c","ancestors_default","node","nodes","descendants_default","leaves_default","leaves","node","links_default","root","links","node","iterator_default","node","current","next","children","i","n","hierarchy","data","children","mapChildren","objectChildren","root","Node","node","nodes","child","childs","i","n","computeHeight","node_copy","copyData","d","height","count_default","each_default","eachAfter_default","eachBefore_default","find_default","sum_default","sort_default","path_default","ancestors_default","descendants_default","leaves_default","links_default","iterator_default","optional","f","required","constantZero","constant_default","x","lcg_default","s","array_default","x","shuffle","array","random","m","t","i","enclose_default","circles","packEncloseRandom","lcg_default","random","i","n","shuffle","B","p","e","enclosesWeak","encloseBasis","extendBasis","j","enclosesWeakAll","enclosesNot","encloseBasis2","encloseBasis3","a","b","dr","dx","dy","encloseBasis1","x1","y1","r1","x2","y2","r2","x21","y21","r21","l","c","x3","y3","r3","a2","a3","b2","b3","c2","c3","d1","d2","d3","ab","xa","xb","ya","yb","A","C","r","place","b","a","c","dx","x","a2","dy","y","b2","d2","intersects","dr","score","node","ab","Node","circle","packSiblingsRandom","circles","random","n","array_default","aa","ca","i","j","k","sj","sk","pack","packEncloseRandom","siblings_default","lcg_default","defaultRadius","d","pack_default","radius","dx","dy","padding","constantZero","pack","root","random","lcg_default","radiusLeaf","packChildrenRandom","translateChild","x","optional","constant_default","node","k","children","n","r","e","packSiblingsRandom","parent","round_default","node","dice_default","parent","x0","y0","x1","y1","nodes","node","i","n","k","partition_default","dx","dy","padding","round","partition","root","n","positionNode","round_default","node","dice_default","x0","y0","x1","y1","x","preroot","ambiguous","imputed","defaultId","d","defaultParentId","stratify_default","id","parentId","path","stratify","data","nodes","currentId","currentParentId","n","i","root","parent","node","nodeId","nodeKey","nodeByKey","I","normalize","P","parentof","S","_","Node","computeHeight","x","optional","slash","k","defaultSeparation","a","b","nextLeft","v","children","nextRight","moveSubtree","wm","wp","shift","change","executeShifts","i","w","nextAncestor","vim","ancestor","TreeNode","node","Node","treeRoot","root","tree","nodes","child","n","tree_default","separation","dx","dy","nodeSize","t","firstWalk","secondWalk","sizeNode","left","right","bottom","s","tx","kx","ky","siblings","midpoint","apportion","vip","vop","vom","sip","sop","sim","som","x","slice_default","parent","x0","y0","x1","y1","nodes","node","i","n","k","phi","squarifyRatio","ratio","parent","x0","y0","x1","y1","rows","nodes","row","nodeValue","i0","i1","n","dx","dy","value","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","dice_default","slice_default","squarify_default","custom","squarify","x","treemap_default","tile","squarify_default","round","dx","dy","paddingStack","paddingInner","constantZero","paddingTop","paddingRight","paddingBottom","paddingLeft","treemap","root","positionNode","round_default","node","x0","y0","x1","y1","x","required","constant_default","binary_default","parent","x0","y0","x1","y1","nodes","i","n","sum","sums","partition","j","value","node","valueOffset","valueTarget","k","hi","mid","valueLeft","valueRight","xk","yk","sliceDice_default","parent","x0","y0","x1","y1","slice_default","dice_default","resquarify_default","custom","ratio","resquarify","parent","x0","y0","x1","y1","rows","row","nodes","i","j","n","m","value","dice_default","slice_default","squarifyRatio","x","phi","area_default","polygon","i","a","b","area","centroid_default","polygon","i","x","y","a","b","c","k","cross_default","a","b","c","lexicographicOrder","a","b","computeUpperHullIndexes","points","n","indexes","size","i","cross_default","hull_default","sortedPoints","flippedPoints","upperIndexes","lowerIndexes","skipLeft","skipRight","hull","contains_default","polygon","point","p","x","y","x0","y0","x1","y1","inside","i","length_default","polygon","i","b","xa","ya","xb","yb","perimeter","defaultSource_default","uniform_default","sourceRandomUniform","source","randomUniform","min","max","defaultSource_default","int_default","sourceRandomInt","source","randomInt","min","max","defaultSource_default","normal_default","sourceRandomNormal","source","randomNormal","mu","sigma","x","r","y","defaultSource_default","logNormal_default","sourceRandomLogNormal","source","N","normal_default","randomLogNormal","randomNormal","defaultSource_default","irwinHall_default","sourceRandomIrwinHall","source","randomIrwinHall","n","sum","defaultSource_default","bates_default","sourceRandomBates","source","I","irwinHall_default","randomBates","n","randomIrwinHall","defaultSource_default","exponential_default","sourceRandomExponential","source","randomExponential","lambda","defaultSource_default","pareto_default","sourceRandomPareto","source","randomPareto","alpha","defaultSource_default","bernoulli_default","sourceRandomBernoulli","source","randomBernoulli","p","defaultSource_default","geometric_default","sourceRandomGeometric","source","randomGeometric","p","defaultSource_default","gamma_default","sourceRandomGamma","source","randomNormal","normal_default","randomGamma","k","theta","d","c","multiplier","x","v","u","defaultSource_default","beta_default","sourceRandomBeta","source","G","gamma_default","randomBeta","alpha","beta","X","Y","x","defaultSource_default","binomial_default","sourceRandomBinomial","source","G","geometric_default","B","beta_default","randomBinomial","n","p","acc","nn","pp","i","y","sign","pFinal","g","s","k","defaultSource_default","weibull_default","sourceRandomWeibull","source","randomWeibull","k","a","b","outerFunc","x","defaultSource_default","cauchy_default","sourceRandomCauchy","source","randomCauchy","a","b","defaultSource_default","logistic_default","sourceRandomLogistic","source","randomLogistic","a","b","u","defaultSource_default","poisson_default","sourceRandomPoisson","source","G","gamma_default","B","binomial_default","randomPoisson","lambda","acc","l","n","t","s","k","defaultSource_default","eps","lcg","seed","state","initRange","domain","range","initInterpolator","interpolator","implicit","ordinal","index","InternMap","domain","range","unknown","scale","d","i","_","value","initRange","band","scale","ordinal","domain","ordinalRange","r0","r1","step","bandwidth","round","paddingInner","paddingOuter","align","rescale","n","reverse","start","stop","values","range","i","_","initRange","pointish","copy","point","constants","x","number","x","unit","identity","x","normalize","a","b","constants","clamper","t","bimap","domain","range","interpolate","d0","d1","r0","r1","polymap","j","d","r","i","bisect_default","copy","source","target","transformer","value_default","transform","untransform","unknown","clamp","piecewise","output","input","rescale","n","scale","y","number_default","_","number","round_default","u","continuous","tickFormat","start","stop","count","specifier","step","tickStep","precision","formatSpecifier","value","precisionPrefix_default","formatPrefix","precisionRound_default","precisionFixed_default","format","linearish","scale","domain","count","d","ticks","specifier","tickFormat","i0","i1","start","stop","prestep","step","maxIter","tickIncrement","linear","continuous","copy","initRange","identity","domain","unknown","scale","x","_","number","linearish","nice","domain","interval","i0","i1","x0","x1","t","transformLog","x","transformExp","transformLogn","transformExpn","pow10","powp","base","logp","reflect","f","k","loggish","transform","scale","domain","logs","pows","rescale","_","count","d","v","r","i","j","t","n","z","ticks","specifier","formatSpecifier","format","nice","log","transformer","copy","initRange","transformSymlog","c","x","transformSymexp","symlogish","transform","scale","_","linearish","symlog","transformer","copy","initRange","transformPow","exponent","x","transformSqrt","transformSquare","powish","transform","scale","identity","rescale","_","linearish","pow","transformer","copy","initRange","sqrt","square","x","unsquare","radial","squared","continuous","range","round","unknown","scale","y","_","number","initRange","linearish","quantile","domain","range","thresholds","unknown","rescale","i","n","quantileSorted","scale","x","bisect_default","y","_","d","ascending","initRange","quantize","x0","x1","domain","range","unknown","scale","x","bisect_default","rescale","i","_","y","initRange","linearish","threshold","domain","range","unknown","n","scale","x","bisect_default","_","y","i","initRange","t0","t1","timeInterval","floori","offseti","count","field","interval","date","d0","d1","step","start","stop","range","previous","test","end","d","millisecond","timeInterval","date","step","start","end","k","milliseconds","second","timeInterval","date","step","start","end","seconds","timeMinute","timeInterval","date","step","start","end","timeMinutes","utcMinute","utcMinutes","timeHour","timeInterval","date","step","start","end","timeHours","utcHour","utcHours","timeDay","timeInterval","date","step","start","end","timeDays","utcDay","utcDays","unixDay","unixDays","timeWeekday","i","timeInterval","date","step","start","end","timeSunday","timeMonday","timeTuesday","timeWednesday","timeThursday","timeFriday","timeSaturday","timeSundays","timeMondays","timeTuesdays","timeWednesdays","timeThursdays","timeFridays","timeSaturdays","utcWeekday","utcSunday","utcMonday","utcTuesday","utcWednesday","utcThursday","utcFriday","utcSaturday","utcSundays","utcMondays","utcTuesdays","utcWednesdays","utcThursdays","utcFridays","utcSaturdays","timeMonth","timeInterval","date","step","start","end","timeMonths","utcMonth","utcMonths","timeYear","timeInterval","date","step","start","end","k","timeYears","utcYear","utcYears","ticker","year","month","week","day","hour","minute","tickIntervals","second","ticks","start","stop","count","reverse","interval","tickInterval","target","i","bisector","step","tickStep","millisecond","t","utcTicks","utcTickInterval","utcYear","utcMonth","utcSunday","unixDay","utcHour","utcMinute","timeTicks","timeTickInterval","timeYear","timeMonth","timeSunday","timeDay","timeHour","timeMinute","localDate","d","date","utcDate","newDate","y","m","formatLocale","locale","locale_dateTime","locale_date","locale_time","locale_periods","locale_weekdays","locale_shortWeekdays","locale_months","locale_shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","formatShortWeekday","formatWeekday","formatShortMonth","formatMonth","formatDayOfMonth","formatMicroseconds","formatYearISO","formatFullYearISO","formatHour24","formatHour12","formatDayOfYear","formatMilliseconds","formatMonthNumber","formatMinutes","formatPeriod","formatQuarter","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCShortWeekday","formatUTCWeekday","formatUTCShortMonth","formatUTCMonth","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMilliseconds","formatUTCMonthNumber","formatUTCMinutes","formatUTCPeriod","formatUTCQuarter","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseShortWeekday","parseWeekday","parseShortMonth","parseMonth","parseLocaleDateTime","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parsePeriod","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseLocaleDate","parseLocaleTime","parseZone","parseLiteralPercent","newFormat","specifier","string","i","j","n","c","pad","format","pads","newParse","Z","parseSpecifier","week","day","utcMonday","utcDay","timeMonday","timeDay","parse","f","p","numberRe","percentRe","requoteRe","value","fill","width","sign","length","requote","s","names","name","timeYear","timeSunday","dISO","timeThursday","z","utcYear","dow","utcSunday","UTCdISO","utcThursday","locale","timeFormat","timeParse","utcFormat","utcParse","defaultLocale","definition","formatLocale","isoSpecifier","formatIsoNative","date","formatIso","utcFormat","isoFormat_default","parseIsoNative","string","date","parseIso","utcParse","isoSpecifier","isoParse_default","date","number","calendar","ticks","tickInterval","year","month","week","day","hour","minute","second","format","scale","continuous","invert","domain","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","formatYear","tickFormat","y","_","interval","d","count","specifier","nice","copy","time","initRange","timeTicks","timeTickInterval","timeYear","timeMonth","timeSunday","timeDay","timeHour","timeMinute","timeFormat","utcTime","initRange","calendar","utcTicks","utcTickInterval","utcYear","utcMonth","utcSunday","utcDay","utcHour","utcMinute","second","utcFormat","transformer","x0","x1","t0","t1","k10","transform","interpolator","identity","clamp","unknown","scale","x","_","range","interpolate","r0","r1","value_default","round_default","t","copy","source","target","sequential","linearish","initInterpolator","sequentialLog","loggish","sequentialSymlog","symlogish","sequentialPow","powish","sequentialSqrt","sequentialQuantile","domain","interpolator","identity","scale","x","bisect_default","_","d","ascending","i","n","quantile","initInterpolator","transformer","x0","x1","x2","s","t0","t1","t2","k10","k21","interpolator","identity","transform","clamp","unknown","scale","x","_","range","interpolate","r0","r1","r2","piecewise","value_default","round_default","t","diverging","linearish","copy","initInterpolator","divergingLog","loggish","divergingSymlog","symlogish","divergingPow","powish","divergingSqrt","colors_default","specifier","n","colors","i","category10_default","colors_default","Accent_default","colors_default","Dark2_default","colors_default","observable10_default","colors_default","Paired_default","colors_default","Pastel1_default","colors_default","Pastel2_default","colors_default","Set1_default","colors_default","Set2_default","colors_default","Set3_default","colors_default","Tableau10_default","colors_default","ramp_default","scheme","rgbBasis","scheme","colors_default","BrBG_default","ramp_default","scheme","colors_default","PRGn_default","ramp_default","scheme","colors_default","PiYG_default","ramp_default","scheme","colors_default","PuOr_default","ramp_default","scheme","colors_default","RdBu_default","ramp_default","scheme","colors_default","RdGy_default","ramp_default","scheme","colors_default","RdYlBu_default","ramp_default","scheme","colors_default","RdYlGn_default","ramp_default","scheme","colors_default","Spectral_default","ramp_default","scheme","colors_default","BuGn_default","ramp_default","scheme","colors_default","BuPu_default","ramp_default","scheme","colors_default","GnBu_default","ramp_default","scheme","colors_default","OrRd_default","ramp_default","scheme","colors_default","PuBuGn_default","ramp_default","scheme","colors_default","PuBu_default","ramp_default","scheme","colors_default","PuRd_default","ramp_default","scheme","colors_default","RdPu_default","ramp_default","scheme","colors_default","YlGnBu_default","ramp_default","scheme","colors_default","YlGn_default","ramp_default","scheme","colors_default","YlOrBr_default","ramp_default","scheme","colors_default","YlOrRd_default","ramp_default","scheme","colors_default","Blues_default","ramp_default","scheme","colors_default","Greens_default","ramp_default","scheme","colors_default","Greys_default","ramp_default","scheme","colors_default","Purples_default","ramp_default","scheme","colors_default","Reds_default","ramp_default","scheme","colors_default","Oranges_default","ramp_default","cividis_default","cubehelix_default","cubehelixLong","cubehelix","warm","cubehelixLong","cubehelix","cool","c","rainbow_default","ts","c","rgb","pi_1_3","pi_2_3","sinebow_default","x","turbo_default","ramp","range","n","t","viridis_default","colors_default","magma","inferno","plasma","constant_default","x","abs","atan2","cos","max","min","sin","sqrt","epsilon","pi","halfPi","tau","acos","x","asin","withPath","shape","digits","_","d","Path","arcInnerRadius","d","arcOuterRadius","arcStartAngle","arcEndAngle","arcPadAngle","intersect","x0","y0","x1","y1","x2","y2","x3","y3","x10","y10","x32","y32","t","epsilon","cornerTangents","r1","rc","cw","x01","y01","lo","sqrt","ox","oy","x11","y11","x00","y00","dx","dy","d2","r","D","max","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","arc_default","innerRadius","outerRadius","cornerRadius","constant_default","padRadius","startAngle","endAngle","padAngle","context","path","withPath","arc","buffer","r0","a0","halfPi","a1","da","abs","tau","cos","sin","a01","a11","a00","a10","da0","da1","ap","rp","min","rc0","rc1","t0","t1","p0","asin","p1","oc","pi","ax","ay","bx","by","kc","acos","lc","atan2","a","_","slice","array_default","x","Linear","context","x","y","linear_default","x","p","y","line_default","x","y","defined","constant_default","context","curve","linear_default","output","path","withPath","line","data","i","n","array_default","d","defined0","buffer","_","area_default","x0","y0","y1","x1","defined","constant_default","context","curve","linear_default","output","path","withPath","area","x","y","data","i","j","k","n","array_default","d","defined0","buffer","x0z","y0z","arealine","line_default","_","descending_default","a","b","identity_default","d","pie_default","value","identity_default","sortValues","descending_default","sort","startAngle","constant_default","endAngle","tau","padAngle","pie","data","i","n","array_default","j","k","sum","index","arcs","a0","da","a1","p","pa","v","_","curveRadialLinear","curveRadial","linear_default","Radial","curve","a","r","radial","context","lineRadial","l","c","_","curveRadial","lineRadial_default","line_default","curveRadialLinear","areaRadial_default","a","area_default","curveRadialLinear","c","x0","x1","y0","y1","lineRadial","_","curveRadial","pointRadial_default","x","y","Bump","context","x","y","BumpRadial","p0","pointRadial_default","p1","p2","p3","bumpX","bumpY","bumpRadial","linkSource","d","linkTarget","link","curve","source","target","x","y","context","output","path","withPath","buffer","argv","slice","s","t","_","constant_default","linkHorizontal","bumpX","linkVertical","bumpY","linkRadial","l","bumpRadial","sqrt3","sqrt","asterisk_default","context","size","r","min","t","u","circle_default","context","size","r","sqrt","pi","tau","cross_default","context","size","r","sqrt","tan30","sqrt","tan30_2","diamond_default","context","size","y","x","diamond2_default","context","size","r","sqrt","plus_default","context","size","r","sqrt","min","square_default","context","size","w","sqrt","x","square2_default","context","size","r","sqrt","ka","kr","sin","pi","kx","tau","ky","cos","star_default","context","size","r","sqrt","x","y","c","sqrt3","sqrt","triangle_default","context","size","y","sqrt3","sqrt","triangle2_default","context","size","s","t","u","c","s","sqrt","k","a","wye_default","context","size","r","x0","y0","x1","y1","x2","y2","times_default","context","size","r","sqrt","min","symbolsFill","circle_default","cross_default","diamond_default","square_default","star_default","triangle_default","wye_default","symbolsStroke","plus_default","times_default","triangle2_default","asterisk_default","square2_default","diamond2_default","Symbol","type","size","context","path","withPath","symbol","constant_default","buffer","_","noop_default","point","that","x","y","Basis","context","basis_default","BasisClosed","context","noop_default","x","y","point","basisClosed_default","BasisOpen","context","x","y","x0","y0","point","basisOpen_default","Bundle","context","beta","Basis","x","y","j","x0","y0","dx","dy","i","t","bundle_default","custom","bundle","point","that","x","y","Cardinal","context","tension","cardinal_default","custom","cardinal","CardinalClosed","context","tension","noop_default","x","y","point","cardinalClosed_default","custom","cardinal","CardinalOpen","context","tension","x","y","point","cardinalOpen_default","custom","cardinal","point","that","x","y","x1","y1","x2","y2","epsilon","a","n","b","m","CatmullRom","context","alpha","x23","y23","catmullRom_default","custom","catmullRom","Cardinal","CatmullRomClosed","context","alpha","noop_default","x","y","x23","y23","point","catmullRomClosed_default","custom","catmullRom","CardinalClosed","CatmullRomOpen","context","alpha","x","y","x23","y23","point","catmullRomOpen_default","custom","catmullRom","CardinalOpen","LinearClosed","context","noop_default","x","y","linearClosed_default","sign","x","slope3","that","x2","y2","h0","h1","s0","s1","p","slope2","t","h","point","t0","t1","x0","y0","x1","y1","dx","MonotoneX","context","y","MonotoneY","ReflectContext","monotoneX","monotoneY","Natural","context","x","y","px","controlPoints","py","i0","i1","i","m","a","b","r","natural_default","Step","context","t","x","y","x1","step_default","stepBefore","stepAfter","none_default","series","order","n","i","j","s0","s1","m","none_default","series","n","o","stackValue","d","key","stackSeries","series","stack_default","keys","constant_default","order","none_default","offset","value","stack","data","sz","i","n","j","oz","array_default","_","expand_default","series","order","n","i","j","m","y","none_default","diverging_default","series","order","n","i","j","d","dy","yp","yn","m","silhouette_default","series","order","n","j","s0","m","i","y","none_default","wiggle_default","series","order","n","m","s0","y","j","i","s1","s2","si","sij0","sij1","s3","k","sk","skj0","skj1","none_default","appearance_default","series","peaks","peak","none_default","a","b","i","j","n","vi","vj","ascending_default","series","sums","sum","none_default","a","b","s","i","n","v","descending_default","series","ascending_default","insideOut_default","series","n","i","j","sums","sum","order","appearance_default","top","bottom","tops","bottoms","reverse_default","series","none_default","constant_default","x","ZoomEvent","type","sourceEvent","target","transform","dispatch","Transform","k","x","y","point","location","identity","transform","node","nopropagation","event","noevent_default","defaultFilter","event","defaultExtent","e","defaultTransform","identity","defaultWheelDelta","defaultTouchable","defaultConstrain","transform","extent","translateExtent","dx0","dx1","dy0","dy1","zoom_default","filter","constrain","wheelDelta","touchable","scaleExtent","duration","interpolate","listeners","dispatch_default","touchstarting","touchfirst","touchending","touchDelay","wheelDelay","clickDistance2","tapDistance","zoom","selection","wheeled","mousedowned","dblclicked","touchstarted","touchmoved","touchended","collection","point","schedule","gesture","k","p","k0","k1","t0","p0","centroid","p1","translate","scale","x","y","t","Transform","transition","that","args","g","w","a","b","i","l","clean","Gesture","key","type","d","select_default","ZoomEvent","pointer_default","interrupt_default","noevent_default","wheelidled","currentTarget","v","mousemoved","mouseupped","x0","y0","nodrag_default","nopropagation","dx","dy","yesdrag","t1","touches","n","started","l0","l1","dp","dl","_","constant_default","value"],"sources":["../esm/npm/d3@7.9.0/node_modules/d3-array/src/ascending.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/descending.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/bisector.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/number.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/bisect.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/blur.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/count.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/cross.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/cumsum.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/variance.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/deviation.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/extent.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/fsum.js","../esm/npm/d3@7.9.0/node_modules/internmap/src/index.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/group.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/permute.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/sort.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/groupSort.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/ticks.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/nice.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/threshold/sturges.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/bin.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/max.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/maxIndex.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/min.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/minIndex.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/quickselect.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/greatest.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/quantile.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/threshold/freedmanDiaconis.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/threshold/scott.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/mean.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/median.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/merge.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/mode.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/pairs.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/range.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/rank.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/least.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/leastIndex.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/greatestIndex.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/scan.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/shuffle.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/sum.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/transpose.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/zip.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/every.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/some.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/filter.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/map.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/reduce.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/reverse.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/difference.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/disjoint.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/intersection.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/superset.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/subset.js","../esm/npm/d3@7.9.0/node_modules/d3-array/src/union.js","../esm/npm/d3@7.9.0/node_modules/d3-axis/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-axis/src/axis.js","../esm/npm/d3@7.9.0/node_modules/d3-dispatch/src/dispatch.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/namespaces.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/namespace.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/creator.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selector.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/select.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selectorAll.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/selectAll.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/matcher.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/selectChild.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/selectChildren.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/filter.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/sparse.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/enter.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/data.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/exit.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/join.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/merge.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/order.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/sort.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/call.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/nodes.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/node.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/size.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/empty.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/each.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/attr.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/window.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/style.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/property.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/classed.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/text.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/html.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/raise.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/lower.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/append.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/insert.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/remove.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/clone.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/datum.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/on.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/dispatch.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/iterator.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selection/index.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/select.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/create.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/local.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/sourceEvent.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/pointer.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/pointers.js","../esm/npm/d3@7.9.0/node_modules/d3-selection/src/selectAll.js","../esm/npm/d3@7.9.0/node_modules/d3-drag/src/noevent.js","../esm/npm/d3@7.9.0/node_modules/d3-drag/src/nodrag.js","../esm/npm/d3@7.9.0/node_modules/d3-drag/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-drag/src/event.js","../esm/npm/d3@7.9.0/node_modules/d3-drag/src/drag.js","../esm/npm/d3@7.9.0/node_modules/d3-color/src/define.js","../esm/npm/d3@7.9.0/node_modules/d3-color/src/color.js","../esm/npm/d3@7.9.0/node_modules/d3-color/src/math.js","../esm/npm/d3@7.9.0/node_modules/d3-color/src/lab.js","../esm/npm/d3@7.9.0/node_modules/d3-color/src/cubehelix.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/basis.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/basisClosed.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/color.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/rgb.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/numberArray.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/date.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/number.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/object.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/string.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/value.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/discrete.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/hue.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/round.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/transform/decompose.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/transform/parse.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/transform/index.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/zoom.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/hsl.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/lab.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/hcl.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/cubehelix.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/piecewise.js","../esm/npm/d3@7.9.0/node_modules/d3-interpolate/src/quantize.js","../esm/npm/d3@7.9.0/node_modules/d3-timer/src/timer.js","../esm/npm/d3@7.9.0/node_modules/d3-timer/src/timeout.js","../esm/npm/d3@7.9.0/node_modules/d3-timer/src/interval.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/schedule.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/interrupt.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/selection/interrupt.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/tween.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/interpolate.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/attr.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/attrTween.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/delay.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/duration.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/ease.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/easeVarying.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/filter.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/merge.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/on.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/remove.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/select.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/selectAll.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/selection.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/style.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/styleTween.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/text.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/textTween.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/transition.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/end.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/transition/index.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/linear.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/quad.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/cubic.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/poly.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/sin.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/math.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/exp.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/circle.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/bounce.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/back.js","../esm/npm/d3@7.9.0/node_modules/d3-ease/src/elastic.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/selection/transition.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/selection/index.js","../esm/npm/d3@7.9.0/node_modules/d3-transition/src/active.js","../esm/npm/d3@7.9.0/node_modules/d3-brush/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-brush/src/event.js","../esm/npm/d3@7.9.0/node_modules/d3-brush/src/noevent.js","../esm/npm/d3@7.9.0/node_modules/d3-brush/src/brush.js","../esm/npm/d3@7.9.0/node_modules/d3-chord/src/math.js","../esm/npm/d3@7.9.0/node_modules/d3-chord/src/chord.js","../esm/npm/d3@7.9.0/node_modules/d3-path/src/path.js","../esm/npm/d3@7.9.0/node_modules/d3-chord/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-chord/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-chord/src/ribbon.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/ascending.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/area.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/contains.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/noop.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/contours.js","../esm/npm/d3@7.9.0/node_modules/d3-contour/src/density.js","../esm/npm/d3@7.9.0/node_modules/robust-predicates/esm/util.js","../esm/npm/d3@7.9.0/node_modules/robust-predicates/esm/orient2d.js","../esm/npm/d3@7.9.0/node_modules/robust-predicates/esm/orient3d.js","../esm/npm/d3@7.9.0/node_modules/robust-predicates/esm/incircle.js","../esm/npm/d3@7.9.0/node_modules/robust-predicates/esm/insphere.js","../esm/npm/d3@7.9.0/node_modules/delaunator/index.js","../esm/npm/d3@7.9.0/node_modules/d3-delaunay/src/path.js","../esm/npm/d3@7.9.0/node_modules/d3-delaunay/src/polygon.js","../esm/npm/d3@7.9.0/node_modules/d3-delaunay/src/voronoi.js","../esm/npm/d3@7.9.0/node_modules/d3-delaunay/src/delaunay.js","../esm/npm/d3@7.9.0/node_modules/d3-dsv/src/dsv.js","../esm/npm/d3@7.9.0/node_modules/d3-dsv/src/csv.js","../esm/npm/d3@7.9.0/node_modules/d3-dsv/src/tsv.js","../esm/npm/d3@7.9.0/node_modules/d3-dsv/src/autoType.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/blob.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/buffer.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/text.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/dsv.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/image.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/json.js","../esm/npm/d3@7.9.0/node_modules/d3-fetch/src/xml.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/center.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/add.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/cover.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/data.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/extent.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/quad.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/find.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/remove.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/root.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/size.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/visit.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/visitAfter.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/x.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/y.js","../esm/npm/d3@7.9.0/node_modules/d3-quadtree/src/quadtree.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/jiggle.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/collide.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/link.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/lcg.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/simulation.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/manyBody.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/radial.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/x.js","../esm/npm/d3@7.9.0/node_modules/d3-force/src/y.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatDecimal.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/exponent.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatGroup.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatNumerals.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatSpecifier.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatTrim.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatPrefixAuto.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatRounded.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/formatTypes.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/locale.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/defaultLocale.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/precisionFixed.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/precisionPrefix.js","../esm/npm/d3@7.9.0/node_modules/d3-format/src/precisionRound.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/math.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/noop.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/stream.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/area.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/cartesian.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/bounds.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/centroid.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/compose.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/rotation.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/circle.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/buffer.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/pointEqual.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/rejoin.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/polygonContains.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/index.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/antimeridian.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/circle.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/line.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/rectangle.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/clip/extent.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/length.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/distance.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/contains.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/graticule.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/interpolate.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/area.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/bounds.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/centroid.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/context.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/measure.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/string.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/path/index.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/transform.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/fit.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/resample.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/index.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/conic.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/cylindricalEqualArea.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/conicEqualArea.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/albers.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/albersUsa.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/azimuthal.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/azimuthalEqualArea.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/azimuthalEquidistant.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/mercator.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/conicConformal.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/equirectangular.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/conicEquidistant.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/equalEarth.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/gnomonic.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/naturalEarth1.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/orthographic.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/stereographic.js","../esm/npm/d3@7.9.0/node_modules/d3-geo/src/projection/transverseMercator.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/cluster.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/count.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/each.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/find.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/sum.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/sort.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/path.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/links.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/iterator.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/hierarchy/index.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/accessors.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/lcg.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/pack/enclose.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/pack/siblings.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/pack/index.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/round.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/dice.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/partition.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/stratify.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/tree.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/slice.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/squarify.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/index.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/binary.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/sliceDice.js","../esm/npm/d3@7.9.0/node_modules/d3-hierarchy/src/treemap/resquarify.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/area.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/centroid.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/cross.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/hull.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/contains.js","../esm/npm/d3@7.9.0/node_modules/d3-polygon/src/length.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/defaultSource.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/uniform.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/int.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/normal.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/logNormal.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/irwinHall.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/bates.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/exponential.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/pareto.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/bernoulli.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/geometric.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/gamma.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/beta.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/binomial.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/weibull.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/cauchy.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/logistic.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/poisson.js","../esm/npm/d3@7.9.0/node_modules/d3-random/src/lcg.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/init.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/ordinal.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/band.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/number.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/continuous.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/tickFormat.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/linear.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/nice.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/log.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/symlog.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/pow.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/radial.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/quantile.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/quantize.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/threshold.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/interval.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/millisecond.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/second.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/minute.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/hour.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/day.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/week.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/month.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/year.js","../esm/npm/d3@7.9.0/node_modules/d3-time/src/ticks.js","../esm/npm/d3@7.9.0/node_modules/d3-time-format/src/locale.js","../esm/npm/d3@7.9.0/node_modules/d3-time-format/src/defaultLocale.js","../esm/npm/d3@7.9.0/node_modules/d3-time-format/src/isoFormat.js","../esm/npm/d3@7.9.0/node_modules/d3-time-format/src/isoParse.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/time.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/utcTime.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/sequential.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/sequentialQuantile.js","../esm/npm/d3@7.9.0/node_modules/d3-scale/src/diverging.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/colors.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/category10.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Accent.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Dark2.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/observable10.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Paired.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Set1.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Set2.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Set3.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/ramp.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/BrBG.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/PRGn.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/PiYG.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/PuOr.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/RdBu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/RdGy.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/diverging/Spectral.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","../esm/npm/d3@7.9.0/node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/math.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/path.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/arc.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/array.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/linear.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/point.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/line.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/area.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/descending.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/identity.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/pie.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/radial.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/lineRadial.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/areaRadial.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/pointRadial.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/bump.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/link.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/asterisk.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/circle.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/cross.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/diamond.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/diamond2.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/plus.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/square.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/square2.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/star.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/triangle.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/triangle2.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/wye.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol/times.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/symbol.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/noop.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/basis.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/basisClosed.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/basisOpen.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/bundle.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/cardinal.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/cardinalClosed.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/cardinalOpen.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/catmullRom.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/catmullRomClosed.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/catmullRomOpen.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/linearClosed.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/monotone.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/natural.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/curve/step.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/offset/none.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/none.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/stack.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/offset/expand.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/offset/diverging.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/offset/silhouette.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/offset/wiggle.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/appearance.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/ascending.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/descending.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/insideOut.js","../esm/npm/d3@7.9.0/node_modules/d3-shape/src/order/reverse.js","../esm/npm/d3@7.9.0/node_modules/d3-zoom/src/constant.js","../esm/npm/d3@7.9.0/node_modules/d3-zoom/src/event.js","../esm/npm/d3@7.9.0/node_modules/d3-zoom/src/transform.js","../esm/npm/d3@7.9.0/node_modules/d3-zoom/src/noevent.js","../esm/npm/d3@7.9.0/node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["export default function ascending(a, b) {\n  return a == null || b == null ? NaN : a \u003c b ? -1 : a \u003e b ? 1 : a \u003e= b ? 0 : NaN;\n}\n","export default function descending(a, b) {\n  return a == null || b == null ? NaN\n    : b \u003c a ? -1\n    : b \u003e a ? 1\n    : b \u003e= a ? 0\n    : NaN;\n}\n","import ascending from \"./ascending.js\";\nimport descending from \"./descending.js\";\n\nexport default function bisector(f) {\n  let compare1, compare2, delta;\n\n  // If an accessor is specified, promote it to a comparator. In this case we\n  // can test whether the search value is (self-) comparable. We can’t do this\n  // for a comparator (except for specific, known comparators) because we can’t\n  // tell if the comparator is symmetric, and an asymmetric comparator can’t be\n  // used to test whether a single value is comparable.\n  if (f.length !== 2) {\n    compare1 = ascending;\n    compare2 = (d, x) =\u003e ascending(f(d), x);\n    delta = (d, x) =\u003e f(d) - x;\n  } else {\n    compare1 = f === ascending || f === descending ? f : zero;\n    compare2 = f;\n    delta = f;\n  }\n\n  function left(a, x, lo = 0, hi = a.length) {\n    if (lo \u003c hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) \u003e\u003e\u003e 1;\n        if (compare2(a[mid], x) \u003c 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo \u003c hi);\n    }\n    return lo;\n  }\n\n  function right(a, x, lo = 0, hi = a.length) {\n    if (lo \u003c hi) {\n      if (compare1(x, x) !== 0) return hi;\n      do {\n        const mid = (lo + hi) \u003e\u003e\u003e 1;\n        if (compare2(a[mid], x) \u003c= 0) lo = mid + 1;\n        else hi = mid;\n      } while (lo \u003c hi);\n    }\n    return lo;\n  }\n\n  function center(a, x, lo = 0, hi = a.length) {\n    const i = left(a, x, lo, hi - 1);\n    return i \u003e lo \u0026\u0026 delta(a[i - 1], x) \u003e -delta(a[i], x) ? i - 1 : i;\n  }\n\n  return {left, center, right};\n}\n\nfunction zero() {\n  return 0;\n}\n","export default function number(x) {\n  return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null \u0026\u0026 (value = +value) \u003e= value) {\n        yield value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null \u0026\u0026 (value = +value) \u003e= value) {\n        yield value;\n      }\n    }\n  }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export function blur(values, r) {\n  if (!((r = +r) \u003e= 0)) throw new RangeError(\"invalid r\");\n  let length = values.length;\n  if (!((length = Math.floor(length)) \u003e= 0)) throw new RangeError(\"invalid length\");\n  if (!length || !r) return values;\n  const blur = blurf(r);\n  const temp = values.slice();\n  blur(values, temp, 0, length, 1);\n  blur(temp, values, 0, length, 1);\n  blur(values, temp, 0, length, 1);\n  return values;\n}\n\nexport const blur2 = Blur2(blurf);\n\nexport const blurImage = Blur2(blurfImage);\n\nfunction Blur2(blur) {\n  return function(data, rx, ry = rx) {\n    if (!((rx = +rx) \u003e= 0)) throw new RangeError(\"invalid rx\");\n    if (!((ry = +ry) \u003e= 0)) throw new RangeError(\"invalid ry\");\n    let {data: values, width, height} = data;\n    if (!((width = Math.floor(width)) \u003e= 0)) throw new RangeError(\"invalid width\");\n    if (!((height = Math.floor(height !== undefined ? height : values.length / width)) \u003e= 0)) throw new RangeError(\"invalid height\");\n    if (!width || !height || (!rx \u0026\u0026 !ry)) return data;\n    const blurx = rx \u0026\u0026 blur(rx);\n    const blury = ry \u0026\u0026 blur(ry);\n    const temp = values.slice();\n    if (blurx \u0026\u0026 blury) {\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    } else if (blurx) {\n      blurh(blurx, values, temp, width, height);\n      blurh(blurx, temp, values, width, height);\n      blurh(blurx, values, temp, width, height);\n    } else if (blury) {\n      blurv(blury, values, temp, width, height);\n      blurv(blury, temp, values, width, height);\n      blurv(blury, values, temp, width, height);\n    }\n    return data;\n  };\n}\n\nfunction blurh(blur, T, S, w, h) {\n  for (let y = 0, n = w * h; y \u003c n;) {\n    blur(T, S, y, y += w, 1);\n  }\n}\n\nfunction blurv(blur, T, S, w, h) {\n  for (let x = 0, n = w * h; x \u003c w; ++x) {\n    blur(T, S, x, x + n, w);\n  }\n}\n\nfunction blurfImage(radius) {\n  const blur = blurf(radius);\n  return (T, S, start, stop, step) =\u003e {\n    start \u003c\u003c= 2, stop \u003c\u003c= 2, step \u003c\u003c= 2;\n    blur(T, S, start + 0, stop + 0, step);\n    blur(T, S, start + 1, stop + 1, step);\n    blur(T, S, start + 2, stop + 2, step);\n    blur(T, S, start + 3, stop + 3, step);\n  };\n}\n\n// Given a target array T, a source array S, sets each value T[i] to the average\n// of {S[i - r], …, S[i], …, S[i + r]}, where r = ⌊radius⌋, start \u003c= i \u003c stop,\n// for each i, i + step, i + 2 * step, etc., and where S[j] is clamped between\n// S[start] (inclusive) and S[stop] (exclusive). If the given radius is not an\n// integer, S[i - r - 1] and S[i + r + 1] are added to the sum, each weighted\n// according to r - ⌊radius⌋.\nfunction blurf(radius) {\n  const radius0 = Math.floor(radius);\n  if (radius0 === radius) return bluri(radius);\n  const t = radius - radius0;\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) =\u003e { // stop must be aligned!\n    if (!((stop -= step) \u003e= start)) return; // inclusive stop\n    let sum = radius0 * S[start];\n    const s0 = step * radius0;\n    const s1 = s0 + step;\n    for (let i = start, j = start + s0; i \u003c j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i \u003c= j; i += step) {\n      sum += S[Math.min(stop, i + s0)];\n      T[i] = (sum + t * (S[Math.max(start, i - s1)] + S[Math.min(stop, i + s1)])) / w;\n      sum -= S[Math.max(start, i - s0)];\n    }\n  };\n}\n\n// Like blurf, but optimized for integer radius.\nfunction bluri(radius) {\n  const w = 2 * radius + 1;\n  return (T, S, start, stop, step) =\u003e { // stop must be aligned!\n    if (!((stop -= step) \u003e= start)) return; // inclusive stop\n    let sum = radius * S[start];\n    const s = step * radius;\n    for (let i = start, j = start + s; i \u003c j; i += step) {\n      sum += S[Math.min(stop, i)];\n    }\n    for (let i = start, j = stop; i \u003c= j; i += step) {\n      sum += S[Math.min(stop, i + s)];\n      T[i] = sum / w;\n      sum -= S[Math.max(start, i - s)];\n    }\n  };\n}\n","export default function count(values, valueof) {\n  let count = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null \u0026\u0026 (value = +value) \u003e= value) {\n        ++count;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null \u0026\u0026 (value = +value) \u003e= value) {\n        ++count;\n      }\n    }\n  }\n  return count;\n}\n","function length(array) {\n  return array.length | 0;\n}\n\nfunction empty(length) {\n  return !(length \u003e 0);\n}\n\nfunction arrayify(values) {\n  return typeof values !== \"object\" || \"length\" in values ? values : Array.from(values);\n}\n\nfunction reducer(reduce) {\n  return values =\u003e reduce(...values);\n}\n\nexport default function cross(...values) {\n  const reduce = typeof values[values.length - 1] === \"function\" \u0026\u0026 reducer(values.pop());\n  values = values.map(arrayify);\n  const lengths = values.map(length);\n  const j = values.length - 1;\n  const index = new Array(j + 1).fill(0);\n  const product = [];\n  if (j \u003c 0 || lengths.some(empty)) return product;\n  while (true) {\n    product.push(index.map((j, i) =\u003e values[i][j]));\n    let i = j;\n    while (++index[i] === lengths[i]) {\n      if (i === 0) return reduce ? product.map(reduce) : product;\n      index[i--] = 0;\n    }\n  }\n}\n","export default function cumsum(values, valueof) {\n  var sum = 0, index = 0;\n  return Float64Array.from(values, valueof === undefined\n    ? v =\u003e (sum += +v || 0)\n    : v =\u003e (sum += +valueof(v, index++, values) || 0));\n}","export default function variance(values, valueof) {\n  let count = 0;\n  let delta;\n  let mean = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null \u0026\u0026 (value = +value) \u003e= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null \u0026\u0026 (value = +value) \u003e= value) {\n        delta = value - mean;\n        mean += delta / ++count;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n  if (count \u003e 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n  const v = variance(values, valueof);\n  return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n  let min;\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null) {\n        if (min === undefined) {\n          if (value \u003e= value) min = max = value;\n        } else {\n          if (min \u003e value) min = value;\n          if (max \u003c value) max = value;\n        }\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null) {\n        if (min === undefined) {\n          if (value \u003e= value) min = max = value;\n        } else {\n          if (min \u003e value) min = value;\n          if (max \u003c value) max = value;\n        }\n      }\n    }\n  }\n  return [min, max];\n}\n","// https://github.com/python/cpython/blob/a74eea238f5baba15797e2e8b570d153bc8690a7/Modules/mathmodule.c#L1423\nexport class Adder {\n  constructor() {\n    this._partials = new Float64Array(32);\n    this._n = 0;\n  }\n  add(x) {\n    const p = this._partials;\n    let i = 0;\n    for (let j = 0; j \u003c this._n \u0026\u0026 j \u003c 32; j++) {\n      const y = p[j],\n        hi = x + y,\n        lo = Math.abs(x) \u003c Math.abs(y) ? x - (hi - y) : y - (hi - x);\n      if (lo) p[i++] = lo;\n      x = hi;\n    }\n    p[i] = x;\n    this._n = i + 1;\n    return this;\n  }\n  valueOf() {\n    const p = this._partials;\n    let n = this._n, x, y, lo, hi = 0;\n    if (n \u003e 0) {\n      hi = p[--n];\n      while (n \u003e 0) {\n        x = hi;\n        y = p[--n];\n        hi = x + y;\n        lo = y - (hi - x);\n        if (lo) break;\n      }\n      if (n \u003e 0 \u0026\u0026 ((lo \u003c 0 \u0026\u0026 p[n - 1] \u003c 0) || (lo \u003e 0 \u0026\u0026 p[n - 1] \u003e 0))) {\n        y = lo * 2;\n        x = hi + y;\n        if (y == x - hi) hi = x;\n      }\n    }\n    return hi;\n  }\n}\n\nexport function fsum(values, valueof) {\n  const adder = new Adder();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        adder.add(value);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        adder.add(value);\n      }\n    }\n  }\n  return +adder;\n}\n\nexport function fcumsum(values, valueof) {\n  const adder = new Adder();\n  let index = -1;\n  return Float64Array.from(values, valueof === undefined\n      ? v =\u003e adder.add(+v || 0)\n      : v =\u003e adder.add(+valueof(v, ++index, values) || 0)\n  );\n}\n","export class InternMap extends Map {\n  constructor(entries, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (entries != null) for (const [key, value] of entries) this.set(key, value);\n  }\n  get(key) {\n    return super.get(intern_get(this, key));\n  }\n  has(key) {\n    return super.has(intern_get(this, key));\n  }\n  set(key, value) {\n    return super.set(intern_set(this, key), value);\n  }\n  delete(key) {\n    return super.delete(intern_delete(this, key));\n  }\n}\n\nexport class InternSet extends Set {\n  constructor(values, key = keyof) {\n    super();\n    Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n    if (values != null) for (const value of values) this.add(value);\n  }\n  has(value) {\n    return super.has(intern_get(this, value));\n  }\n  add(value) {\n    return super.add(intern_set(this, value));\n  }\n  delete(value) {\n    return super.delete(intern_delete(this, value));\n  }\n}\n\nfunction intern_get({_intern, _key}, value) {\n  const key = _key(value);\n  return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) return _intern.get(key);\n  _intern.set(key, value);\n  return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n  const key = _key(value);\n  if (_intern.has(key)) {\n    value = _intern.get(key);\n    _intern.delete(key);\n  }\n  return value;\n}\n\nfunction keyof(value) {\n  return value !== null \u0026\u0026 typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n  return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n  return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n  return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n  for (let i = 1, n = keys.length; i \u003c n; ++i) {\n    groups = groups.flatMap(g =\u003e g.pop().map(([key, value]) =\u003e [...g, key, value]));\n  }\n  return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n  return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n  return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n  return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n  return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n  return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n  return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n  if (values.length !== 1) throw new Error(\"duplicate key\");\n  return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n  return (function regroup(values, i) {\n    if (i \u003e= keys.length) return reduce(values);\n    const groups = new InternMap();\n    const keyof = keys[i++];\n    let index = -1;\n    for (const value of values) {\n      const key = keyof(value, ++index, values);\n      const group = groups.get(key);\n      if (group) group.push(value);\n      else groups.set(key, [value]);\n    }\n    for (const [key, values] of groups) {\n      groups.set(key, regroup(values, i));\n    }\n    return map(groups);\n  })(values, 0);\n}\n","export default function permute(source, keys) {\n  return Array.from(keys, key =\u003e source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  values = Array.from(values);\n  let [f] = F;\n  if ((f \u0026\u0026 f.length !== 2) || F.length \u003e 1) {\n    const index = Uint32Array.from(values, (d, i) =\u003e i);\n    if (F.length \u003e 1) {\n      F = F.map(f =\u003e values.map(f));\n      index.sort((i, j) =\u003e {\n        for (const f of F) {\n          const c = ascendingDefined(f[i], f[j]);\n          if (c) return c;\n        }\n      });\n    } else {\n      f = values.map(f);\n      index.sort((i, j) =\u003e ascendingDefined(f[i], f[j]));\n    }\n    return permute(values, index);\n  }\n  return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n  if (compare === ascending) return ascendingDefined;\n  if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n  return (a, b) =\u003e {\n    const x = compare(a, b);\n    if (x || x === 0) return x;\n    return (compare(b, b) === 0) - (compare(a, a) === 0);\n  };\n}\n\nexport function ascendingDefined(a, b) {\n  return (a == null || !(a \u003e= a)) - (b == null || !(b \u003e= b)) || (a \u003c b ? -1 : a \u003e b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n  return (reduce.length !== 2\n    ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) =\u003e ascending(av, bv) || ascending(ak, bk)))\n    : sort(group(values, key), (([ak, av], [bk, bv]) =\u003e reduce(av, bv) || ascending(ak, bk))))\n    .map(([key]) =\u003e key);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n","export default function constant(x) {\n  return () =\u003e x;\n}\n","const e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nfunction tickSpec(start, stop, count) {\n  const step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log10(step)),\n      error = step / Math.pow(10, power),\n      factor = error \u003e= e10 ? 10 : error \u003e= e5 ? 5 : error \u003e= e2 ? 2 : 1;\n  let i1, i2, inc;\n  if (power \u003c 0) {\n    inc = Math.pow(10, -power) / factor;\n    i1 = Math.round(start * inc);\n    i2 = Math.round(stop * inc);\n    if (i1 / inc \u003c start) ++i1;\n    if (i2 / inc \u003e stop) --i2;\n    inc = -inc;\n  } else {\n    inc = Math.pow(10, power) * factor;\n    i1 = Math.round(start / inc);\n    i2 = Math.round(stop / inc);\n    if (i1 * inc \u003c start) ++i1;\n    if (i2 * inc \u003e stop) --i2;\n  }\n  if (i2 \u003c i1 \u0026\u0026 0.5 \u003c= count \u0026\u0026 count \u003c 2) return tickSpec(start, stop, count * 2);\n  return [i1, i2, inc];\n}\n\nexport default function ticks(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  if (!(count \u003e 0)) return [];\n  if (start === stop) return [start];\n  const reverse = stop \u003c start, [i1, i2, inc] = reverse ? tickSpec(stop, start, count) : tickSpec(start, stop, count);\n  if (!(i2 \u003e= i1)) return [];\n  const n = i2 - i1 + 1, ticks = new Array(n);\n  if (reverse) {\n    if (inc \u003c 0) for (let i = 0; i \u003c n; ++i) ticks[i] = (i2 - i) / -inc;\n    else for (let i = 0; i \u003c n; ++i) ticks[i] = (i2 - i) * inc;\n  } else {\n    if (inc \u003c 0) for (let i = 0; i \u003c n; ++i) ticks[i] = (i1 + i) / -inc;\n    else for (let i = 0; i \u003c n; ++i) ticks[i] = (i1 + i) * inc;\n  }\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  return tickSpec(start, stop, count)[2];\n}\n\nexport function tickStep(start, stop, count) {\n  stop = +stop, start = +start, count = +count;\n  const reverse = stop \u003c start, inc = reverse ? tickIncrement(stop, start, count) : tickIncrement(start, stop, count);\n  return (reverse ? -1 : 1) * (inc \u003c 0 ? 1 / -inc : inc);\n}\n","import {tickIncrement} from \"./ticks.js\";\n\nexport default function nice(start, stop, count) {\n  let prestep;\n  while (true) {\n    const step = tickIncrement(start, stop, count);\n    if (step === prestep || step === 0 || !isFinite(step)) {\n      return [start, stop];\n    } else if (step \u003e 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n    } else if (step \u003c 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n    }\n    prestep = step;\n  }\n}\n","import count from \"../count.js\";\n\nexport default function thresholdSturges(values) {\n  return Math.max(1, Math.ceil(Math.log(count(values)) / Math.LN2) + 1);\n}\n","import {slice} from \"./array.js\";\nimport bisect from \"./bisect.js\";\nimport constant from \"./constant.js\";\nimport extent from \"./extent.js\";\nimport identity from \"./identity.js\";\nimport nice from \"./nice.js\";\nimport ticks, {tickIncrement} from \"./ticks.js\";\nimport sturges from \"./threshold/sturges.js\";\n\nexport default function bin() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    if (!Array.isArray(data)) data = Array.from(data);\n\n    var i,\n        n = data.length,\n        x,\n        step,\n        values = new Array(n);\n\n    for (i = 0; i \u003c n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds, and nice the\n    // default domain accordingly.\n    if (!Array.isArray(tz)) {\n      const max = x1, tn = +tz;\n      if (domain === extent) [x0, x1] = nice(x0, x1, tn);\n      tz = ticks(x0, x1, tn);\n\n      // If the domain is aligned with the first tick (which it will by\n      // default), then we can use quantization rather than bisection to bin\n      // values, which is substantially faster.\n      if (tz[0] \u003c= x0) step = tickIncrement(x0, x1, tn);\n\n      // If the last threshold is coincident with the domain’s upper bound, the\n      // last bin will be zero-width. If the default domain is used, and this\n      // last threshold is coincident with the maximum input value, we can\n      // extend the niced upper bound by one tick to ensure uniform bin widths;\n      // otherwise, we simply remove the last threshold. Note that we don’t\n      // coerce values or the domain to numbers, and thus must be careful to\n      // compare order (\u003e=) rather than strict equality (===)!\n      if (tz[tz.length - 1] \u003e= x1) {\n        if (max \u003e= x1 \u0026\u0026 domain === extent) {\n          const step = tickIncrement(x0, x1, tn);\n          if (isFinite(step)) {\n            if (step \u003e 0) {\n              x1 = (Math.floor(x1 / step) + 1) * step;\n            } else if (step \u003c 0) {\n              x1 = (Math.ceil(x1 * -step) + 1) / -step;\n            }\n          }\n        } else {\n          tz.pop();\n        }\n      }\n    }\n\n    // Remove any thresholds outside the domain.\n    // Be careful not to mutate an array owned by the user!\n    var m = tz.length, a = 0, b = m;\n    while (tz[a] \u003c= x0) ++a;\n    while (tz[b - 1] \u003e x1) --b;\n    if (a || b \u003c m) tz = tz.slice(a, b), m = b - a;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i \u003c= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i \u003e 0 ? tz[i - 1] : x0;\n      bin.x1 = i \u003c m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    if (isFinite(step)) {\n      if (step \u003e 0) {\n        for (i = 0; i \u003c n; ++i) {\n          if ((x = values[i]) != null \u0026\u0026 x0 \u003c= x \u0026\u0026 x \u003c= x1) {\n            bins[Math.min(m, Math.floor((x - x0) / step))].push(data[i]);\n          }\n        }\n      } else if (step \u003c 0) {\n        for (i = 0; i \u003c n; ++i) {\n          if ((x = values[i]) != null \u0026\u0026 x0 \u003c= x \u0026\u0026 x \u003c= x1) {\n            const j = Math.floor((x0 - x) * step);\n            bins[Math.min(m, j + (tz[j] \u003c= x))].push(data[i]); // handle off-by-one due to rounding\n          }\n        }\n      }\n    } else {\n      for (i = 0; i \u003c n; ++i) {\n        if ((x = values[i]) != null \u0026\u0026 x0 \u003c= x \u0026\u0026 x \u003c= x1) {\n          bins[bisect(tz, x, 0, m)].push(data[i]);\n        }\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : constant(Array.isArray(_) ? slice.call(_) : _), histogram) : threshold;\n  };\n\n  return histogram;\n}\n","export default function max(values, valueof) {\n  let max;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          \u0026\u0026 (max \u003c value || (max === undefined \u0026\u0026 value \u003e= value))) {\n        max = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          \u0026\u0026 (max \u003c value || (max === undefined \u0026\u0026 value \u003e= value))) {\n        max = value;\n      }\n    }\n  }\n  return max;\n}\n","export default function maxIndex(values, valueof) {\n  let max;\n  let maxIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          \u0026\u0026 (max \u003c value || (max === undefined \u0026\u0026 value \u003e= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          \u0026\u0026 (max \u003c value || (max === undefined \u0026\u0026 value \u003e= value))) {\n        max = value, maxIndex = index;\n      }\n    }\n  }\n  return maxIndex;\n}\n","export default function min(values, valueof) {\n  let min;\n  if (valueof === undefined) {\n    for (const value of values) {\n      if (value != null\n          \u0026\u0026 (min \u003e value || (min === undefined \u0026\u0026 value \u003e= value))) {\n        min = value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          \u0026\u0026 (min \u003e value || (min === undefined \u0026\u0026 value \u003e= value))) {\n        min = value;\n      }\n    }\n  }\n  return min;\n}\n","export default function minIndex(values, valueof) {\n  let min;\n  let minIndex = -1;\n  let index = -1;\n  if (valueof === undefined) {\n    for (const value of values) {\n      ++index;\n      if (value != null\n          \u0026\u0026 (min \u003e value || (min === undefined \u0026\u0026 value \u003e= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  } else {\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null\n          \u0026\u0026 (min \u003e value || (min === undefined \u0026\u0026 value \u003e= value))) {\n        min = value, minIndex = index;\n      }\n    }\n  }\n  return minIndex;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n  k = Math.floor(k);\n  left = Math.floor(Math.max(0, left));\n  right = Math.floor(Math.min(array.length - 1, right));\n\n  if (!(left \u003c= k \u0026\u0026 k \u003c= right)) return array;\n\n  compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n  while (right \u003e left) {\n    if (right - left \u003e 600) {\n      const n = right - left + 1;\n      const m = k - left + 1;\n      const z = Math.log(n);\n      const s = 0.5 * Math.exp(2 * z / 3);\n      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 \u003c 0 ? -1 : 1);\n      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n      quickselect(array, k, newLeft, newRight, compare);\n    }\n\n    const t = array[k];\n    let i = left;\n    let j = right;\n\n    swap(array, left, k);\n    if (compare(array[right], t) \u003e 0) swap(array, left, right);\n\n    while (i \u003c j) {\n      swap(array, i, j), ++i, --j;\n      while (compare(array[i], t) \u003c 0) ++i;\n      while (compare(array[j], t) \u003e 0) --j;\n    }\n\n    if (compare(array[left], t) === 0) swap(array, left, j);\n    else ++j, swap(array, j, right);\n\n    if (j \u003c= k) left = j + 1;\n    if (k \u003c= j) right = j - 1;\n  }\n\n  return array;\n}\n\nfunction swap(array, i, j) {\n  const t = array[i];\n  array[i] = array[j];\n  array[j] = t;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function greatest(values, compare = ascending) {\n  let max;\n  let defined = false;\n  if (compare.length === 1) {\n    let maxValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, maxValue) \u003e 0\n          : ascending(value, value) === 0) {\n        max = element;\n        maxValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, max) \u003e 0\n          : compare(value, value) === 0) {\n        max = value;\n        defined = true;\n      }\n    }\n  }\n  return max;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n  values = Float64Array.from(numbers(values, valueof));\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p \u003c= 0 || n \u003c 2) return min(values);\n  if (p \u003e= 1) return max(values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n      value1 = min(values.subarray(i0 + 1));\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n  if (!(n = values.length) || isNaN(p = +p)) return;\n  if (p \u003c= 0 || n \u003c 2) return +valueof(values[0], 0, values);\n  if (p \u003e= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n  if (isNaN(p = +p)) return;\n  numbers = Float64Array.from(values, (_, i) =\u003e number(valueof(values[i], i, values)));\n  if (p \u003c= 0) return minIndex(numbers);\n  if (p \u003e= 1) return maxIndex(numbers);\n  var numbers,\n      index = Uint32Array.from(values, (_, i) =\u003e i),\n      j = numbers.length - 1,\n      i = Math.floor(j * p);\n  quickselect(index, i, 0, j, (i, j) =\u003e ascendingDefined(numbers[i], numbers[j]));\n  i = greatest(index.subarray(0, i + 1), (i) =\u003e numbers[i]);\n  return i \u003e= 0 ? i : -1;\n}\n","import count from \"../count.js\";\nimport quantile from \"../quantile.js\";\n\nexport default function thresholdFreedmanDiaconis(values, min, max) {\n  const c = count(values), d = quantile(values, 0.75) - quantile(values, 0.25);\n  return c \u0026\u0026 d ? Math.ceil((max - min) / (2 * d * Math.pow(c, -1 / 3))) : 1;\n}\n","import count from \"../count.js\";\nimport deviation from \"../deviation.js\";\n\nexport default function thresholdScott(values, min, max) {\n  const c = count(values), d = deviation(values);\n  return c \u0026\u0026 d ? Math.ceil((max - min) * Math.cbrt(c) / (3.49 * d)) : 1;\n}\n","export default function mean(values, valueof) {\n  let count = 0;\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null \u0026\u0026 (value = +value) \u003e= value) {\n        ++count, sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null \u0026\u0026 (value = +value) \u003e= value) {\n        ++count, sum += value;\n      }\n    }\n  }\n  if (count) return sum / count;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n  return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n  return quantileIndex(values, 0.5, valueof);\n}\n","function* flatten(arrays) {\n  for (const array of arrays) {\n    yield* array;\n  }\n}\n\nexport default function merge(arrays) {\n  return Array.from(flatten(arrays));\n}\n","import {InternMap} from \"internmap\";\n\nexport default function mode(values, valueof) {\n  const counts = new InternMap();\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value != null \u0026\u0026 value \u003e= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if ((value = valueof(value, ++index, values)) != null \u0026\u0026 value \u003e= value) {\n        counts.set(value, (counts.get(value) || 0) + 1);\n      }\n    }\n  }\n  let modeValue;\n  let modeCount = 0;\n  for (const [value, count] of counts) {\n    if (count \u003e modeCount) {\n      modeCount = count;\n      modeValue = value;\n    }\n  }\n  return modeValue;\n}\n","export default function pairs(values, pairof = pair) {\n  const pairs = [];\n  let previous;\n  let first = false;\n  for (const value of values) {\n    if (first) pairs.push(pairof(previous, value));\n    previous = value;\n    first = true;\n  }\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n","export default function range(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) \u003c 2 ? (stop = start, start = 0, 1) : n \u003c 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i \u003c n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n","import ascending from \"./ascending.js\";\nimport {ascendingDefined, compareDefined} from \"./sort.js\";\n\nexport default function rank(values, valueof = ascending) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  let V = Array.from(values);\n  const R = new Float64Array(V.length);\n  if (valueof.length !== 2) V = V.map(valueof), valueof = ascending;\n  const compareIndex = (i, j) =\u003e valueof(V[i], V[j]);\n  let k, r;\n  values = Uint32Array.from(V, (_, i) =\u003e i);\n  // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123\n  values.sort(valueof === ascending ? (i, j) =\u003e ascendingDefined(V[i], V[j]) : compareDefined(compareIndex));\n  values.forEach((j, i) =\u003e {\n      const c = compareIndex(j, k === undefined ? j : k);\n      if (c \u003e= 0) {\n        if (k === undefined || c \u003e 0) k = j, r = i;\n        R[j] = r;\n      } else {\n        R[j] = NaN;\n      }\n    });\n  return R;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function least(values, compare = ascending) {\n  let min;\n  let defined = false;\n  if (compare.length === 1) {\n    let minValue;\n    for (const element of values) {\n      const value = compare(element);\n      if (defined\n          ? ascending(value, minValue) \u003c 0\n          : ascending(value, value) === 0) {\n        min = element;\n        minValue = value;\n        defined = true;\n      }\n    }\n  } else {\n    for (const value of values) {\n      if (defined\n          ? compare(value, min) \u003c 0\n          : compare(value, value) === 0) {\n        min = value;\n        defined = true;\n      }\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport minIndex from \"./minIndex.js\";\n\nexport default function leastIndex(values, compare = ascending) {\n  if (compare.length === 1) return minIndex(values, compare);\n  let minValue;\n  let min = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (min \u003c 0\n        ? compare(value, value) === 0\n        : compare(value, minValue) \u003c 0) {\n      minValue = value;\n      min = index;\n    }\n  }\n  return min;\n}\n","import ascending from \"./ascending.js\";\nimport maxIndex from \"./maxIndex.js\";\n\nexport default function greatestIndex(values, compare = ascending) {\n  if (compare.length === 1) return maxIndex(values, compare);\n  let maxValue;\n  let max = -1;\n  let index = -1;\n  for (const value of values) {\n    ++index;\n    if (max \u003c 0\n        ? compare(value, value) === 0\n        : compare(value, maxValue) \u003e 0) {\n      maxValue = value;\n      max = index;\n    }\n  }\n  return max;\n}\n","import leastIndex from \"./leastIndex.js\";\n\nexport default function scan(values, compare) {\n  const index = leastIndex(values, compare);\n  return index \u003c 0 ? undefined : index;\n}\n","export default shuffler(Math.random);\n\nexport function shuffler(random) {\n  return function shuffle(array, i0 = 0, i1 = array.length) {\n    let m = i1 - (i0 = +i0);\n    while (m) {\n      const i = random() * m-- | 0, t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n    return array;\n  };\n}\n","export default function sum(values, valueof) {\n  let sum = 0;\n  if (valueof === undefined) {\n    for (let value of values) {\n      if (value = +value) {\n        sum += value;\n      }\n    }\n  } else {\n    let index = -1;\n    for (let value of values) {\n      if (value = +valueof(value, ++index, values)) {\n        sum += value;\n      }\n    }\n  }\n  return sum;\n}\n","import min from \"./min.js\";\n\nexport default function transpose(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i \u003c m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j \u003c n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n","import transpose from \"./transpose.js\";\n\nexport default function zip() {\n  return transpose(arguments);\n}\n","export default function every(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (!test(value, ++index, values)) {\n      return false;\n    }\n  }\n  return true;\n}\n","export default function some(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      return true;\n    }\n  }\n  return false;\n}\n","export default function filter(values, test) {\n  if (typeof test !== \"function\") throw new TypeError(\"test is not a function\");\n  const array = [];\n  let index = -1;\n  for (const value of values) {\n    if (test(value, ++index, values)) {\n      array.push(value);\n    }\n  }\n  return array;\n}\n","export default function map(values, mapper) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  if (typeof mapper !== \"function\") throw new TypeError(\"mapper is not a function\");\n  return Array.from(values, (value, index) =\u003e mapper(value, index, values));\n}\n","export default function reduce(values, reducer, value) {\n  if (typeof reducer !== \"function\") throw new TypeError(\"reducer is not a function\");\n  const iterator = values[Symbol.iterator]();\n  let done, next, index = -1;\n  if (arguments.length \u003c 3) {\n    ({done, value} = iterator.next());\n    if (done) return;\n    ++index;\n  }\n  while (({done, value: next} = iterator.next()), !done) {\n    value = reducer(value, next, ++index, values);\n  }\n  return value;\n}\n","export default function reverse(values) {\n  if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n  return Array.from(values).reverse();\n}\n","import {InternSet} from \"internmap\";\n\nexport default function difference(values, ...others) {\n  values = new InternSet(values);\n  for (const other of others) {\n    for (const value of other) {\n      values.delete(value);\n    }\n  }\n  return values;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function disjoint(values, other) {\n  const iterator = other[Symbol.iterator](), set = new InternSet();\n  for (const v of values) {\n    if (set.has(v)) return false;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) break;\n      if (Object.is(v, value)) return false;\n      set.add(value);\n    }\n  }\n  return true;\n}\n","import {InternSet} from \"internmap\";\n\nexport default function intersection(values, ...others) {\n  values = new InternSet(values);\n  others = others.map(set);\n  out: for (const value of values) {\n    for (const other of others) {\n      if (!other.has(value)) {\n        values.delete(value);\n        continue out;\n      }\n    }\n  }\n  return values;\n}\n\nfunction set(values) {\n  return values instanceof InternSet ? values : new InternSet(values);\n}\n","export default function superset(values, other) {\n  const iterator = values[Symbol.iterator](), set = new Set();\n  for (const o of other) {\n    const io = intern(o);\n    if (set.has(io)) continue;\n    let value, done;\n    while (({value, done} = iterator.next())) {\n      if (done) return false;\n      const ivalue = intern(value);\n      set.add(ivalue);\n      if (Object.is(io, ivalue)) break;\n    }\n  }\n  return true;\n}\n\nfunction intern(value) {\n  return value !== null \u0026\u0026 typeof value === \"object\" ? value.valueOf() : value;\n}\n","import superset from \"./superset.js\";\n\nexport default function subset(values, other) {\n  return superset(other, values);\n}\n","import {InternSet} from \"internmap\";\n\nexport default function union(...others) {\n  const set = new InternSet();\n  for (const other of others) {\n    for (const o of other) {\n      set.add(o);\n    }\n  }\n  return set;\n}\n","export default function(x) {\n  return x;\n}\n","import identity from \"./identity.js\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n  return d =\u003e +scale(d);\n}\n\nfunction center(scale, offset) {\n  offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n  if (scale.round()) offset = Math.round(offset);\n  return d =\u003e +scale(d) + offset;\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      offset = typeof window !== \"undefined\" \u0026\u0026 window.devicePixelRatio \u003e 1 ? 0 : 0.5,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + offset,\n        range1 = +range[range.length - 1] + offset,\n        position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p \u0026\u0026 isFinite(p = p(d)) ? p : position(d)) + offset); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient === right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = Array.from(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues \u0026\u0026 tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  axis.offset = function(_) {\n    return arguments.length ? (offset = +_, axis) : offset;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n","var noop = {value: () =\u003e {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i \u003c n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i \u003e= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t \u0026\u0026 !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length \u003c 2) {\n      while (++i \u003c n) if ((t = (typename = T[i]).type) \u0026\u0026 (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null \u0026\u0026 typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i \u003c n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) \u003e 0) for (var args = new Array(n), i = 0, n, t; i \u003c n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i \u003c n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i \u003c n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i \u003c n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i \u003c n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i \u003e= 0 \u0026\u0026 (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml \u0026\u0026 document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i \u003c n; ++i) {\n      if ((node = group[i]) \u0026\u0026 (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n  return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n  return function() {\n    return array(select.apply(this, arguments));\n  };\n}\n\nexport default function(select) {\n  if (typeof select === \"function\") select = arrayAll(select);\n  else select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i \u003c n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\nexport function childMatcher(selector) {\n  return function(node) {\n    return node.matches(selector);\n  };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n  return function() {\n    return find.call(this.children, match);\n  };\n}\n\nfunction childFirst() {\n  return this.firstElementChild;\n}\n\nexport default function(match) {\n  return this.select(match == null ? childFirst\n      : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n  return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n  return function() {\n    return filter.call(this.children, match);\n  };\n}\n\nexport default function(match) {\n  return this.selectAll(match == null ? children\n      : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i \u003c n; ++i) {\n      if ((node = group[i]) \u0026\u0026 match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n  return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i \u003c dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i \u003c groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = new Map,\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i \u003c groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n      if (nodeByKeyValue.has(keyValue)) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue.set(keyValue, node);\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i \u003c dataLength; ++i) {\n    keyValue = key.call(parent, data[i], i, data) + \"\";\n    if (node = nodeByKeyValue.get(keyValue)) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue.delete(keyValue);\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i \u003c groupLength; ++i) {\n    if ((node = group[i]) \u0026\u0026 (nodeByKeyValue.get(keyValues[i]) === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction datum(node) {\n  return node.__data__;\n}\n\nexport default function(value, key) {\n  if (!arguments.length) return Array.from(this, datum);\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j \u003c m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = arraylike(value.call(parent, parent \u0026\u0026 parent.__data__, j, parents)),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 \u003c dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 \u003e= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) \u0026\u0026 ++i1 \u003c dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n  return typeof data === \"object\" \u0026\u0026 \"length\" in data\n    ? data // Array, TypedArray, NodeList, array-like\n    : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  if (typeof onenter === \"function\") {\n    enter = onenter(enter);\n    if (enter) enter = enter.selection();\n  } else {\n    enter = enter.append(onenter + \"\");\n  }\n  if (onupdate != null) {\n    update = onupdate(update);\n    if (update) update = update.selection();\n  }\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter \u0026\u0026 update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n  var selection = context.selection ? context.selection() : context;\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j \u003c m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i \u003c n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j \u003c m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j \u003c m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i \u003e= 0;) {\n      if (node = group[i]) {\n        if (next \u0026\u0026 node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a \u0026\u0026 b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i \u003c n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a \u003c b ? -1 : a \u003e b ? 1 : a \u003e= b ? 0 : NaN;\n}\n","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j \u003c m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i \u003c n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n","export default function() {\n  let size = 0;\n  for (const node of this) ++size; // eslint-disable-line no-unused-vars\n  return size;\n}\n","export default function() {\n  return !this.node();\n}\n","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j \u003c m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i \u003c n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length \u003c 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n  return (node.ownerDocument \u0026\u0026 node.ownerDocument.defaultView) // node is a Node\n      || (node.document \u0026\u0026 node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length \u003e 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length \u003e 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i \u003c 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i \u003e= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) \u003e= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i \u003c n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i \u003c n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length \u003c 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i \u003c n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n","function contextListener(listener) {\n  return function(event) {\n    listener.call(this, event, this.__data__);\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i \u003e= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j \u003c m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) \u0026\u0026 o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, options) {\n  return function() {\n    var on = this.__on, o, listener = contextListener(value);\n    if (on) for (var j = 0, m = on.length; j \u003c m; ++j) {\n      if ((o = on[j]).type === typename.type \u0026\u0026 o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.options);\n        this.addEventListener(o.type, o.listener = listener, o.options = options);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, options);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, options) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length \u003c 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j \u003c m; ++j) {\n      for (i = 0, o = on[j]; i \u003c n; ++i) {\n        if ((t = typenames[i]).type === o.type \u0026\u0026 t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  for (i = 0; i \u003c n; ++i) this.each(on(typenames[i], value, options));\n  return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n","export default function*() {\n  for (var groups = this._groups, j = 0, m = groups.length; j \u003c m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i \u003c n; ++i) {\n      if (node = group[i]) yield node;\n    }\n  }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n  return this;\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  selectChild: selection_selectChild,\n  selectChildren: selection_selectChildren,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  selection: selection_selection,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch,\n  [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n","import creator from \"./creator.js\";\nimport select from \"./select.js\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node \u0026\u0026 delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n","export default function(event) {\n  let sourceEvent;\n  while (sourceEvent = event.sourceEvent) event = sourceEvent;\n  return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n  event = sourceEvent(event);\n  if (node === undefined) node = event.currentTarget;\n  if (node) {\n    var svg = node.ownerSVGElement || node;\n    if (svg.createSVGPoint) {\n      var point = svg.createSVGPoint();\n      point.x = event.clientX, point.y = event.clientY;\n      point = point.matrixTransform(node.getScreenCTM().inverse());\n      return [point.x, point.y];\n    }\n    if (node.getBoundingClientRect) {\n      var rect = node.getBoundingClientRect();\n      return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n    }\n  }\n  return [event.pageX, event.pageY];\n}\n","import pointer from \"./pointer.js\";\nimport sourceEvent from \"./sourceEvent.js\";\n\nexport default function(events, node) {\n  if (events.target) { // i.e., instanceof Event, not TouchList or iterable\n    events = sourceEvent(events);\n    if (node === undefined) node = events.currentTarget;\n    events = events.touches || [events];\n  }\n  return Array.from(events, event =\u003e pointer(event, node));\n}\n","import array from \"./array.js\";\nimport {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([array(selector)], root);\n}\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, nonpassivecapture);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n","export default x =\u003e () =\u003e x;\n","export default function DragEvent(type, {\n  sourceEvent,\n  subject,\n  target,\n  identifier,\n  active,\n  x, y, dx, dy,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    subject: {value: subject, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    identifier: {value: identifier, enumerable: true, configurable: true},\n    active: {value: active, enumerable: true, configurable: true},\n    x: {value: x, enumerable: true, configurable: true},\n    y: {value: y, enumerable: true, configurable: true},\n    dx: {value: dx, enumerable: true, configurable: true},\n    dy: {value: dy, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n","import {dispatch} from \"d3-dispatch\";\nimport {select, pointer} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nonpassive, nonpassivecapture, nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey \u0026\u0026 !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(event, d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved, nonpassive)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned(event, d) {\n    if (touchending || !filter.call(this, event, d)) return;\n    var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n    if (!gesture) return;\n    select(event.view)\n      .on(\"mousemove.drag\", mousemoved, nonpassivecapture)\n      .on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n    nodrag(event.view);\n    nopropagation(event);\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\", event);\n  }\n\n  function mousemoved(event) {\n    noevent(event);\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy \u003e clickDistance2;\n    }\n    gestures.mouse(\"drag\", event);\n  }\n\n  function mouseupped(event) {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent(event);\n    gestures.mouse(\"end\", event);\n  }\n\n  function touchstarted(event, d) {\n    if (!filter.call(this, event, d)) return;\n    var touches = event.changedTouches,\n        c = container.call(this, event, d),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i \u003c n; ++i) {\n      if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n        nopropagation(event);\n        gesture(\"start\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchmoved(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i \u003c n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent(event);\n        gesture(\"drag\", event, touches[i]);\n      }\n    }\n  }\n\n  function touchended(event) {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i \u003c n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation(event);\n        gesture(\"end\", event, touches[i]);\n      }\n    }\n  }\n\n  function beforestart(that, container, event, d, identifier, touch) {\n    var dispatch = listeners.copy(),\n        p = pointer(touch || event, container), dx, dy,\n        s;\n\n    if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n        sourceEvent: event,\n        target: drag,\n        identifier,\n        active,\n        x: p[0],\n        y: p[1],\n        dx: 0,\n        dy: 0,\n        dispatch\n      }), d)) == null) return;\n\n    dx = s.x - p[0] || 0;\n    dy = s.y - p[1] || 0;\n\n    return function gesture(type, event, touch) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[identifier] = gesture, n = active++; break;\n        case \"end\": delete gestures[identifier], --active; // falls through\n        case \"drag\": p = pointer(touch || event, container), n = active; break;\n      }\n      dispatch.call(\n        type,\n        that,\n        new DragEvent(type, {\n          sourceEvent: event,\n          subject: s,\n          target: drag,\n          identifier,\n          active: n,\n          x: p[0] + dx,\n          y: p[1] + dy,\n          dx: p[0] - p0[0],\n          dy: p[1] - p0[1],\n          dispatch\n        }),\n        d\n      );\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n    reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n    reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n    reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n    reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n    reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHex8: color_formatHex8,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n  return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m \u003e\u003e 8 \u0026 0xf) | (m \u003e\u003e 4 \u0026 0xf0), (m \u003e\u003e 4 \u0026 0xf) | (m \u0026 0xf0), ((m \u0026 0xf) \u003c\u003c 4) | (m \u0026 0xf), 1) // #f00\n      : l === 8 ? rgba(m \u003e\u003e 24 \u0026 0xff, m \u003e\u003e 16 \u0026 0xff, m \u003e\u003e 8 \u0026 0xff, (m \u0026 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m \u003e\u003e 12 \u0026 0xf) | (m \u003e\u003e 8 \u0026 0xf0), (m \u003e\u003e 8 \u0026 0xf) | (m \u003e\u003e 4 \u0026 0xf0), (m \u003e\u003e 4 \u0026 0xf) | (m \u0026 0xf0), (((m \u0026 0xf) \u003c\u003c 4) | (m \u0026 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n \u003e\u003e 16 \u0026 0xff, n \u003e\u003e 8 \u0026 0xff, n \u0026 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a \u003c= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb() {\n    return this;\n  },\n  clamp() {\n    return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n  },\n  displayable() {\n    return (-0.5 \u003c= this.r \u0026\u0026 this.r \u003c 255.5)\n        \u0026\u0026 (-0.5 \u003c= this.g \u0026\u0026 this.g \u003c 255.5)\n        \u0026\u0026 (-0.5 \u003c= this.b \u0026\u0026 this.b \u003c 255.5)\n        \u0026\u0026 (0 \u003c= this.opacity \u0026\u0026 this.opacity \u003c= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatHex8: rgb_formatHex8,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n  return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n  const a = clampa(this.opacity);\n  return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n  return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n  return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n  value = clampi(value);\n  return (value \u003c 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a \u003c= 0) h = s = l = NaN;\n  else if (l \u003c= 0 || l \u003e= 1) h = s = NaN;\n  else if (s \u003c= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g \u003c b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l \u003c 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l \u003e 0 \u0026\u0026 l \u003c 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = this.h % 360 + (this.h \u003c 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l \u003c 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h \u003e= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h \u003c 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  clamp() {\n    return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n  },\n  displayable() {\n    return (0 \u003c= this.s \u0026\u0026 this.s \u003c= 1 || isNaN(this.s))\n        \u0026\u0026 (0 \u003c= this.l \u0026\u0026 this.l \u003c= 1)\n        \u0026\u0026 (0 \u003c= this.opacity \u0026\u0026 this.opacity \u003c= 1);\n  },\n  formatHsl() {\n    const a = clampa(this.opacity);\n    return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n  }\n}));\n\nfunction clamph(value) {\n  value = (value || 0) % 360;\n  return value \u003c 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n  return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h \u003c 60 ? m1 + (m2 - m1) * h / 60\n      : h \u003c 180 ? m2\n      : h \u003c 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g \u0026\u0026 g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t \u003e t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t \u003e t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x \u003c= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) \u003c= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 \u0026\u0026 o.b === 0) return new Hcl(NaN, 0 \u003c o.l \u0026\u0026 o.l \u003c 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h \u003c 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb() {\n    return hcl2lab(this).rgb();\n  }\n}));\n","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h \u003c 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t \u003c= 0 ? (t = 0) : t \u003e= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i \u003e 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i \u003c n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) \u003c 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n","export default x =\u003e () =\u003e x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d \u003e 180 || d \u003c -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i \u003c n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i \u003c n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) \u0026\u0026 !(x instanceof DataView);\n}\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i \u003c na; ++i) x[i] = value(a[i], b[i]);\n  for (; i \u003c nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i \u003c na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a \u0026 b.\n  while ((am = reA.exec(a))\n      \u0026\u0026 (bm = reB.exec(b))) {\n    if ((bs = bm.index) \u003e bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a \u0026 b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi \u003c b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length \u003c 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i \u003c b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" \u0026\u0026 typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d \u003c b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n  const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n  return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b \u003e 180) b += 360; else if (b - a \u003e 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i \u003c n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n  // p0 = [ux0, uy0, w0]\n  // p1 = [ux1, uy1, w1]\n  function zoom(p0, p1) {\n    var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n        ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n        dx = ux1 - ux0,\n        dy = uy1 - uy0,\n        d2 = dx * dx + dy * dy,\n        i,\n        S;\n\n    // Special case for u0 ≅ u1.\n    if (d2 \u003c epsilon2) {\n      S = Math.log(w1 / w0) / rho;\n      i = function(t) {\n        return [\n          ux0 + t * dx,\n          uy0 + t * dy,\n          w0 * Math.exp(rho * t * S)\n        ];\n      }\n    }\n\n    // General case.\n    else {\n      var d1 = Math.sqrt(d2),\n          b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n          b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n          r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n          r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n      S = (r1 - r0) / rho;\n      i = function(t) {\n        var s = t * S,\n            coshr0 = cosh(r0),\n            u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n        return [\n          ux0 + u * dx,\n          uy0 + u * dy,\n          w0 * coshr0 / cosh(rho * s + r0)\n        ];\n      }\n    }\n\n    i.duration = S * 1000 * rho / Math.SQRT2;\n\n    return i;\n  }\n\n  zoom.rho = function(_) {\n    var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n    return zoomRho(_1, _2, _4);\n  };\n\n  return zoom;\n})(Math.SQRT2, 2, 4);\n","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n","import {default as value} from \"./value.js\";\n\nexport default function piecewise(interpolate, values) {\n  if (values === undefined) values = interpolate, interpolate = value;\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n \u003c 0 ? 0 : n);\n  while (i \u003c n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i \u003c n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" \u0026\u0026 performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" \u0026\u0026 window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next \u0026\u0026 taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) \u003e= 0) t._call.call(undefined, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay \u003e pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time \u003e t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay \u003e 24) {\n    if (time \u003c Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(elapsed =\u003e {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  t._restart = t.restart;\n  t.restart = function(callback, delay, time) {\n    delay = +delay, time = time == null ? now() : +time;\n    t._restart(function tick(elapsed) {\n      elapsed += total;\n      t._restart(tick, total += delay, time);\n      callback(elapsed);\n    }, delay, time);\n  }\n  t.restart(callback, delay, time);\n  return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state \u003e CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state \u003e STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay \u003c= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i \u003c id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i \u003c n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed \u003c self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i \u003c n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state \u003e STARTING \u0026\u0026 schedule.state \u003c ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i \u003c n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i \u003c n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length \u003c 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i \u003c n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 \u0026\u0026 string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 \u0026\u0026 string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) \u0026\u0026 attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) \u0026\u0026 attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length \u003c 2) return (key = this.tween(key)) \u0026\u0026 key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (typeof v !== \"function\") throw new Error;\n    set(this, id).ease = v;\n  };\n}\n\nexport default function(value) {\n  if (typeof value !== \"function\") throw new Error;\n  return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i \u003c n; ++i) {\n      if ((node = group[i]) \u0026\u0026 match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j \u003c m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i \u003c n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j \u003c m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i \u003e= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length \u003c 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i \u003c n; ++i) {\n      if ((node = group[i]) \u0026\u0026 (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i \u003c n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k \u003c l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 \u0026\u0026 string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 \u0026\u0026 string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) \u0026\u0026 styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length \u003c 2) return (key = this.tween(key)) \u0026\u0026 key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) \u0026\u0026 textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length \u003c 1) return (key = this.tween(key)) \u0026\u0026 key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i \u003c n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n\n    // The selection was empty, resolve end immediately\n    if (size === 0) resolve();\n  });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  selectChild: selection_prototype.selectChild,\n  selectChildren: selection_prototype.selectChildren,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  easeVarying: transition_easeVarying,\n  end: transition_end,\n  [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export const linear = t =\u003e +t;\n","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) \u003c= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) \u003c= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) \u003c= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n  return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n  return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n  return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) \u003c= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) \u003c= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) \u003c b1 ? b0 * t * t : t \u003c b3 ? b0 * (t -= b2) * t + b4 : t \u003c b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) \u003c= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return (t = +t) * t * (s * (t - 1) + t);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((t + 1) * s + t) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) \u003c 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) \u003c 0\n        ? a * tpmt(-t) * Math.sin((s - t) / p)\n        : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      throw new Error(`transition ${id} not found`);\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j \u003c m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i \u003c n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state \u003e SCHEDULED \u0026\u0026 schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n","export default x =\u003e () =\u003e x;\n","export default function BrushEvent(type, {\n  sourceEvent,\n  target,\n  selection,\n  mode,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    selection: {value: selection, enumerable: true, configurable: true},\n    mode: {value: mode, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy \u0026\u0026 [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy \u0026\u0026 [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n  return !event.ctrlKey \u0026\u0026 !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection, event) {\n    if (group.tween) {\n      group\n          .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n          .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 \u0026\u0026 selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null \u0026\u0026 selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start(event).brush(event).end(event);\n          });\n    }\n  };\n\n  brush.clear = function(group, event) {\n    brush.move(group, null, event);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit \u0026\u0026 (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function(event, mode) {\n      if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n      else this.emit(\"brush\", event);\n      return this;\n    },\n    brush: function(event, mode) {\n      this.emit(\"brush\", event, mode);\n      return this;\n    },\n    end: function(event, mode) {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n      return this;\n    },\n    emit: function(type, event, mode) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new BrushEvent(type, {\n          sourceEvent: event,\n          target: brush,\n          selection: dim.output(this.state.selection),\n          mode,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function started(event) {\n    if (touchending \u0026\u0026 !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys \u0026\u0026 event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys \u0026\u0026 event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX \u0026\u0026 signY \u0026\u0026 keys \u0026\u0026 event.shiftKey,\n        lockX,\n        lockY,\n        points = Array.from(event.touches || [event], t =\u003e {\n          const i = t.identifier;\n          t = pointer(t, that);\n          t.point0 = t.slice();\n          t.identifier = i;\n          return t;\n        });\n\n    interrupt(that);\n    var emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      const pts = [points[0], points[1] || points[0]];\n      state.selection = selection = [[\n          w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n          n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n        ], [\n          e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n          s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n        ]];\n      if (points.length \u003e 1) move(event);\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    redraw.call(that);\n    emit.start(event, mode.name);\n\n    function moved(event) {\n      for (const p of event.changedTouches || [event]) {\n        for (const d of points)\n          if (d.identifier === p.identifier) d.cur = pointer(p, that);\n      }\n      if (shifting \u0026\u0026 !lockX \u0026\u0026 !lockY \u0026\u0026 points.length === 1) {\n        const point = points[0];\n        if (abs(point.cur[0] - point[0]) \u003e abs(point.cur[1] - point[1]))\n          lockY = true;\n        else\n          lockX = true;\n      }\n      for (const point of points)\n        if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n      moving = true;\n      noevent(event);\n      move(event);\n    }\n\n    function move(event) {\n      const point = points[0], point0 = point.point0;\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (points[1]) {\n            if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n            if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n          } else {\n            if (signX \u003c 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n            else if (signX \u003e 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n            if (signY \u003c 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n            else if (signY \u003e 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          }\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n          if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 \u003c w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 \u003c n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush(event, mode.name);\n      }\n    }\n\n    function ended(event) {\n      nopropagation(event);\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end(event, mode.name);\n    }\n\n    function keydowned(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX \u0026\u0026 signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX \u003c 0) e0 = e1 - dx; else if (signX \u003e 0) w0 = w1 - dx;\n            if (signY \u003c 0) s0 = s1 - dy; else if (signY \u003e 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n\n    function keyupped(event) {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move(event);\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX \u003c 0) e0 = e1; else if (signX \u003e 0) w0 = w1;\n            if (signY \u003c 0) s0 = s1; else if (signY \u003e 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move(event);\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX \u003c 0) e0 = e1; else if (signX \u003e 0) w0 = w1;\n              if (signY \u003c 0) s0 = s1; else if (signY \u003e 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move(event);\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent(event);\n    }\n  }\n\n  function touchmoved(event) {\n    emitter(this, arguments).moved(event);\n  }\n\n  function touchended(event) {\n    emitter(this, arguments).ended(event);\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n","export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n","import {max, tau} from \"./math.js\";\n\nfunction range(i, j) {\n  return Array.from({length: j - i}, (_, k) =\u003e i + k);\n}\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  return chord(false, false);\n}\n\nexport function chordTranspose() {\n  return chord(false, true);\n}\n\nexport function chordDirected() {\n  return chord(true, false);\n}\n\nfunction chord(directed, transpose) {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = new Array(n),\n        groupIndex = range(0, n),\n        chords = new Array(n * n),\n        groups = new Array(n),\n        k = 0, dx;\n\n    matrix = Float64Array.from({length: n * n}, transpose\n        ? (_, i) =\u003e matrix[i % n][i / n | 0]\n        : (_, i) =\u003e matrix[i / n | 0][i % n]);\n\n    // Compute the scaling factor from value to angle in [0, 2pi].\n    for (let i = 0; i \u003c n; ++i) {\n      let x = 0;\n      for (let j = 0; j \u003c n; ++j) x += matrix[i * n + j] + directed * matrix[j * n + i];\n      k += groupSums[i] = x;\n    }\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the angles for each group and constituent chord.\n    {\n      let x = 0;\n      if (sortGroups) groupIndex.sort((a, b) =\u003e sortGroups(groupSums[a], groupSums[b]));\n      for (const i of groupIndex) {\n        const x0 = x;\n        if (directed) {\n          const subgroupIndex = range(~n + 1, n).filter(j =\u003e j \u003c 0 ? matrix[~j * n + i] : matrix[i * n + j]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) =\u003e sortSubgroups(a \u003c 0 ? -matrix[~a * n + i] : matrix[i * n + a], b \u003c 0 ? -matrix[~b * n + i] : matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            if (j \u003c 0) {\n              const chord = chords[~j * n + i] || (chords[~j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[~j * n + i] * k, value: matrix[~j * n + i]};\n            } else {\n              const chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        } else {\n          const subgroupIndex = range(0, n).filter(j =\u003e matrix[i * n + j] || matrix[j * n + i]);\n          if (sortSubgroups) subgroupIndex.sort((a, b) =\u003e sortSubgroups(matrix[i * n + a], matrix[i * n + b]));\n          for (const j of subgroupIndex) {\n            let chord;\n            if (i \u003c j) {\n              chord = chords[i * n + j] || (chords[i * n + j] = {source: null, target: null});\n              chord.source = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n            } else {\n              chord = chords[j * n + i] || (chords[j * n + i] = {source: null, target: null});\n              chord.target = {index: i, startAngle: x, endAngle: x += matrix[i * n + j] * k, value: matrix[i * n + j]};\n              if (i === j) chord.source = chord.target;\n            }\n            if (chord.source \u0026\u0026 chord.target \u0026\u0026 chord.source.value \u003c chord.target.value) {\n              const source = chord.source;\n              chord.source = chord.target;\n              chord.target = source;\n            }\n          }\n          groups[i] = {index: i, startAngle: x0, endAngle: x, value: groupSums[i]};\n        }\n        x += dx;\n      }\n    }\n\n    // Remove empty chords.\n    chords = Object.values(chords);\n    chords.groups = groups;\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords \u0026\u0026 sortChords._;\n  };\n\n  return chord;\n}\n","const pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n  this._ += strings[0];\n  for (let i = 1, n = strings.length; i \u003c n; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  let d = Math.floor(digits);\n  if (!(d \u003e= 0)) throw new Error(`invalid digits: ${digits}`);\n  if (d \u003e 15) return append;\n  const k = 10 ** d;\n  return function(strings) {\n    this._ += strings[0];\n    for (let i = 1, n = strings.length; i \u003c n; ++i) {\n      this._ += Math.round(arguments[i] * k) / k + strings[i];\n    }\n  };\n}\n\nexport class Path {\n  constructor(digits) {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n    this._append = digits == null ? append : appendRound(digits);\n  }\n  moveTo(x, y) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._append`Z`;\n    }\n  }\n  lineTo(x, y) {\n    this._append`L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  quadraticCurveTo(x1, y1, x, y) {\n    this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  bezierCurveTo(x1, y1, x2, y2, x, y) {\n    this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arcTo(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n    // Is the radius negative? Error.\n    if (r \u003c 0) throw new Error(`negative radius: ${r}`);\n\n    let x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._append`M${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 \u003e epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) \u003e epsilon) || !r) {\n      this._append`L${this._x1 = x1},${this._y1 = y1}`;\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      let x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) \u003e epsilon) {\n        this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n      }\n\n      this._append`A${r},${r},0,0,${+(y01 * x20 \u003e x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n    }\n  }\n  arc(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n\n    // Is the radius negative? Error.\n    if (r \u003c 0) throw new Error(`negative radius: ${r}`);\n\n    let dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._append`M${x0},${y0}`;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) \u003e epsilon || Math.abs(this._y1 - y0) \u003e epsilon) {\n      this._append`L${x0},${y0}`;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da \u003c 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da \u003e tauEpsilon) {\n      this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da \u003e epsilon) {\n      this._append`A${r},${r},0,${+(da \u003e= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n    }\n  }\n  rect(x, y, w, h) {\n    this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n  }\n  toString() {\n    return this._;\n  }\n}\n\nexport function path() {\n  return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n  return new Path(+digits);\n}\n","export var slice = Array.prototype.slice;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n  return 0;\n}\n\nfunction defaultArrowheadRadius() {\n  return 10;\n}\n\nfunction ribbon(headRadius) {\n  var source = defaultSource,\n      target = defaultTarget,\n      sourceRadius = defaultRadius,\n      targetRadius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      padAngle = defaultPadAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        s = source.apply(this, arguments),\n        t = target.apply(this, arguments),\n        ap = padAngle.apply(this, arguments) / 2,\n        argv = slice.call(arguments),\n        sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi,\n        ta1 = endAngle.apply(this, argv) - halfPi;\n\n    if (!context) context = buffer = path();\n\n    if (ap \u003e epsilon) {\n      if (abs(sa1 - sa0) \u003e ap * 2 + epsilon) sa1 \u003e sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n      else sa0 = sa1 = (sa0 + sa1) / 2;\n      if (abs(ta1 - ta0) \u003e ap * 2 + epsilon) ta1 \u003e ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n      else ta0 = ta1 = (ta0 + ta1) / 2;\n    }\n\n    context.moveTo(sr * cos(sa0), sr * sin(sa0));\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) {\n      if (headRadius) {\n        var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n        context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n        context.lineTo(tr * cos(ta2), tr * sin(ta2));\n        context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n      } else {\n        context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n        context.arc(0, 0, tr, ta0, ta1);\n      }\n    }\n    context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  if (headRadius) ribbon.headRadius = function(_) {\n    return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n  };\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.sourceRadius = function(_) {\n    return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n  };\n\n  ribbon.targetRadius = function(_) {\n    return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n  };\n\n  ribbon.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n  };\n\n  return ribbon;\n}\n\nexport default function() {\n  return ribbon();\n}\n\nexport function ribbonArrow() {\n  return ribbon(defaultArrowheadRadius);\n}\n","var array = Array.prototype;\n\nexport var slice = array.slice;\n","export default function(a, b) {\n  return a - b;\n}\n","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i \u003c n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n","export default x =\u003e () =\u003e x;\n","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i \u003c n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i \u003c n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi \u003e y) !== (yj \u003e y)) \u0026\u0026 ((x \u003c (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) \u0026\u0026 within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p \u003c= q \u0026\u0026 q \u003c= r || r \u003c= q \u0026\u0026 q \u003c= p;\n}\n","export default function() {}\n","import {extent, nice, thresholdSturges, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      const e = extent(values, finite);\n      tz = ticks(...nice(e[0], e[1], tz), tz);\n      while (tz[tz.length - 1] \u003e= e[1]) tz.pop();\n      while (tz[1] \u003c e[0]) tz.shift();\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(value =\u003e contour(values, value));\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    const v = value == null ? NaN : +value;\n    if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n    var polygons = [],\n        holes = [];\n\n    isorings(values, v, function(ring) {\n      smooth(ring, values, v);\n      if (area(ring) \u003e 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i \u003c n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = above(values[0], value);\n    cases[t1 \u003c\u003c 1].forEach(stitch);\n    while (++x \u003c dx - 1) {\n      t0 = t1, t1 = above(values[x + 1], value);\n      cases[t0 | t1 \u003c\u003c 1].forEach(stitch);\n    }\n    cases[t1 \u003c\u003c 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y \u003c dy - 1) {\n      x = -1;\n      t1 = above(values[y * dx + dx], value);\n      t2 = above(values[y * dx], value);\n      cases[t1 \u003c\u003c 1 | t2 \u003c\u003c 2].forEach(stitch);\n      while (++x \u003c dx - 1) {\n        t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n        t3 = t2, t2 = above(values[y * dx + x + 1], value);\n        cases[t0 | t1 \u003c\u003c 1 | t2 \u003c\u003c 2 | t3 \u003c\u003c 3].forEach(stitch);\n      }\n      cases[t1 | t2 \u003c\u003c 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] \u003e= value;\n    cases[t2 \u003c\u003c 2].forEach(stitch);\n    while (++x \u003c dx - 1) {\n      t3 = t2, t2 = above(values[y * dx + x + 1], value);\n      cases[t2 \u003c\u003c 2 | t3 \u003c\u003c 3].forEach(stitch);\n    }\n    cases[t2 \u003c\u003c 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v1 = valid(values[yt * dx + xt]);\n      if (x \u003e 0 \u0026\u0026 x \u003c dx \u0026\u0026 xt === x) {\n        point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n      }\n      if (y \u003e 0 \u0026\u0026 y \u003c dy \u0026\u0026 yt === y) {\n        point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n    if (!(_0 \u003e= 0 \u0026\u0026 _1 \u003e= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n  return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n  return x == null ? false : +x \u003e= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n  return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n  const a = value - v0;\n  const b = v1 - v0;\n  const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n  return isNaN(d) ? x : x + d - 0.5;\n}\n","import {blur2, max, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport Contours from \"./contours.js\";\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction defaultWeight() {\n  return 1;\n}\n\nexport default function() {\n  var x = defaultX,\n      y = defaultY,\n      weight = defaultWeight,\n      dx = 960,\n      dy = 500,\n      r = 20, // blur radius\n      k = 2, // log2(grid cell size)\n      o = r * 3, // grid offset, to pad for blur\n      n = (dx + o * 2) \u003e\u003e k, // grid width\n      m = (dy + o * 2) \u003e\u003e k, // grid height\n      threshold = constant(20);\n\n  function grid(data) {\n    var values = new Float32Array(n * m),\n        pow2k = Math.pow(2, -k),\n        i = -1;\n\n    for (const d of data) {\n      var xi = (x(d, ++i, data) + o) * pow2k,\n          yi = (y(d, i, data) + o) * pow2k,\n          wi = +weight(d, i, data);\n      if (wi \u0026\u0026 xi \u003e= 0 \u0026\u0026 xi \u003c n \u0026\u0026 yi \u003e= 0 \u0026\u0026 yi \u003c m) {\n        var x0 = Math.floor(xi),\n            y0 = Math.floor(yi),\n            xt = xi - x0 - 0.5,\n            yt = yi - y0 - 0.5;\n        values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n        values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n        values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n        values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n      }\n    }\n\n    blur2({data: values, width: n, height: m}, r * pow2k);\n    return values;\n  }\n\n  function density(data) {\n    var values = grid(data),\n        tz = threshold(values),\n        pow4k = Math.pow(2, 2 * k);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = ticks(Number.MIN_VALUE, max(values) / pow4k, tz);\n    }\n\n    return Contours()\n        .size([n, m])\n        .thresholds(tz.map(d =\u003e d * pow4k))\n      (values)\n        .map((c, i) =\u003e (c.value = +tz[i], transform(c)));\n  }\n\n  density.contours = function(data) {\n    var values = grid(data),\n        contours = Contours().size([n, m]),\n        pow4k = Math.pow(2, 2 * k),\n        contour = value =\u003e {\n          value = +value;\n          var c = transform(contours.contour(values, value * pow4k));\n          c.value = value; // preserve exact threshold value\n          return c;\n        };\n    Object.defineProperty(contour, \"max\", {get: () =\u003e max(values) / pow4k});\n    return contour;\n  };\n\n  function transform(geometry) {\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  }\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    coordinates.forEach(transformPoint);\n  }\n\n  // TODO Optimize.\n  function transformPoint(coordinates) {\n    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n  }\n\n  function resize() {\n    o = r * 3;\n    n = (dx + o * 2) \u003e\u003e k;\n    m = (dy + o * 2) \u003e\u003e k;\n    return density;\n  }\n\n  density.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n  };\n\n  density.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n  };\n\n  density.weight = function(_) {\n    return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n  };\n\n  density.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = +_[0], _1 = +_[1];\n    if (!(_0 \u003e= 0 \u0026\u0026 _1 \u003e= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, resize();\n  };\n\n  density.cellSize = function(_) {\n    if (!arguments.length) return 1 \u003c\u003c k;\n    if (!((_ = +_) \u003e= 1)) throw new Error(\"invalid cell size\");\n    return k = Math.floor(Math.log(_) / Math.LN2), resize();\n  };\n\n  density.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n  };\n\n  density.bandwidth = function(_) {\n    if (!arguments.length) return Math.sqrt(r * (r + 1));\n    if (!((_ = +_) \u003e= 0)) throw new Error(\"invalid bandwidth\");\n    return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n  };\n\n  return density;\n}\n","export const epsilon = 1.1102230246251565e-16;\nexport const splitter = 134217729;\nexport const resulterrbound = (3 + 8 * epsilon) * epsilon;\n\n// fast_expansion_sum_zeroelim routine from oritinal code\nexport function sum(elen, e, flen, f, h) {\n    let Q, Qnew, hh, bvirt;\n    let enow = e[0];\n    let fnow = f[0];\n    let eindex = 0;\n    let findex = 0;\n    if ((fnow \u003e enow) === (fnow \u003e -enow)) {\n        Q = enow;\n        enow = e[++eindex];\n    } else {\n        Q = fnow;\n        fnow = f[++findex];\n    }\n    let hindex = 0;\n    if (eindex \u003c elen \u0026\u0026 findex \u003c flen) {\n        if ((fnow \u003e enow) === (fnow \u003e -enow)) {\n            Qnew = enow + Q;\n            hh = Q - (Qnew - enow);\n            enow = e[++eindex];\n        } else {\n            Qnew = fnow + Q;\n            hh = Q - (Qnew - fnow);\n            fnow = f[++findex];\n        }\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        while (eindex \u003c elen \u0026\u0026 findex \u003c flen) {\n            if ((fnow \u003e enow) === (fnow \u003e -enow)) {\n                Qnew = Q + enow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (enow - bvirt);\n                enow = e[++eindex];\n            } else {\n                Qnew = Q + fnow;\n                bvirt = Qnew - Q;\n                hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n                fnow = f[++findex];\n            }\n            Q = Qnew;\n            if (hh !== 0) {\n                h[hindex++] = hh;\n            }\n        }\n    }\n    while (eindex \u003c elen) {\n        Qnew = Q + enow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (enow - bvirt);\n        enow = e[++eindex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    while (findex \u003c flen) {\n        Qnew = Q + fnow;\n        bvirt = Qnew - Q;\n        hh = Q - (Qnew - bvirt) + (fnow - bvirt);\n        fnow = f[++findex];\n        Q = Qnew;\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function sum_three(alen, a, blen, b, clen, c, tmp, out) {\n    return sum(sum(alen, a, blen, b, tmp), tmp, clen, c, out);\n}\n\n// scale_expansion_zeroelim routine from oritinal code\nexport function scale(elen, e, b, h) {\n    let Q, sum, hh, product1, product0;\n    let bvirt, c, ahi, alo, bhi, blo;\n\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    let enow = e[0];\n    Q = enow * b;\n    c = splitter * enow;\n    ahi = c - (c - enow);\n    alo = enow - ahi;\n    hh = alo * blo - (Q - ahi * bhi - alo * bhi - ahi * blo);\n    let hindex = 0;\n    if (hh !== 0) {\n        h[hindex++] = hh;\n    }\n    for (let i = 1; i \u003c elen; i++) {\n        enow = e[i];\n        product1 = enow * b;\n        c = splitter * enow;\n        ahi = c - (c - enow);\n        alo = enow - ahi;\n        product0 = alo * blo - (product1 - ahi * bhi - alo * bhi - ahi * blo);\n        sum = Q + product0;\n        bvirt = sum - Q;\n        hh = Q - (sum - bvirt) + (product0 - bvirt);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n        Q = product1 + sum;\n        hh = sum - (Q - product1);\n        if (hh !== 0) {\n            h[hindex++] = hh;\n        }\n    }\n    if (Q !== 0 || hindex === 0) {\n        h[hindex++] = Q;\n    }\n    return hindex;\n}\n\nexport function negate(elen, e) {\n    for (let i = 0; i \u003c elen; i++) e[i] = -e[i];\n    return elen;\n}\n\nexport function estimate(elen, e) {\n    let Q = e[0];\n    for (let i = 1; i \u003c elen; i++) Q += e[i];\n    return Q;\n}\n\nexport function vec(n) {\n    return new Float64Array(n);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum} from './util.js';\n\nconst ccwerrboundA = (3 + 16 * epsilon) * epsilon;\nconst ccwerrboundB = (2 + 12 * epsilon) * epsilon;\nconst ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;\n\nconst B = vec(4);\nconst C1 = vec(8);\nconst C2 = vec(12);\nconst D = vec(16);\nconst u = vec(4);\n\nfunction orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {\n    let acxtail, acytail, bcxtail, bcytail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const acx = ax - cx;\n    const bcx = bx - cx;\n    const acy = ay - cy;\n    const bcy = by - cy;\n\n    s1 = acx * bcy;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcx;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    B[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    B[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    B[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    B[3] = u3;\n\n    let det = estimate(4, B);\n    let errbound = ccwerrboundB * detsum;\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    bvirt = ax - acx;\n    acxtail = ax - (acx + bvirt) + (bvirt - cx);\n    bvirt = bx - bcx;\n    bcxtail = bx - (bcx + bvirt) + (bvirt - cx);\n    bvirt = ay - acy;\n    acytail = ay - (acy + bvirt) + (bvirt - cy);\n    bvirt = by - bcy;\n    bcytail = by - (bcy + bvirt) + (bvirt - cy);\n\n    if (acxtail === 0 \u0026\u0026 acytail === 0 \u0026\u0026 bcxtail === 0 \u0026\u0026 bcytail === 0) {\n        return det;\n    }\n\n    errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);\n    det += (acx * bcytail + bcy * acxtail) - (acy * bcxtail + bcx * acytail);\n    if (det \u003e= errbound || -det \u003e= errbound) return det;\n\n    s1 = acxtail * bcy;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcy;\n    bhi = c - (c - bcy);\n    blo = bcy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcx;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcx;\n    bhi = c - (c - bcx);\n    blo = bcx - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C1len = sum(4, B, 4, u, C1);\n\n    s1 = acx * bcytail;\n    c = splitter * acx;\n    ahi = c - (c - acx);\n    alo = acx - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acy * bcxtail;\n    c = splitter * acy;\n    ahi = c - (c - acy);\n    alo = acy - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const C2len = sum(C1len, C1, 4, u, C2);\n\n    s1 = acxtail * bcytail;\n    c = splitter * acxtail;\n    ahi = c - (c - acxtail);\n    alo = acxtail - ahi;\n    c = splitter * bcytail;\n    bhi = c - (c - bcytail);\n    blo = bcytail - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = acytail * bcxtail;\n    c = splitter * acytail;\n    ahi = c - (c - acytail);\n    alo = acytail - ahi;\n    c = splitter * bcxtail;\n    bhi = c - (c - bcxtail);\n    blo = bcxtail - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    u[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    u[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    u[3] = u3;\n    const Dlen = sum(C2len, C2, 4, u, D);\n\n    return D[Dlen - 1];\n}\n\nexport function orient2d(ax, ay, bx, by, cx, cy) {\n    const detleft = (ay - cy) * (bx - cx);\n    const detright = (ax - cx) * (by - cy);\n    const det = detleft - detright;\n\n    const detsum = Math.abs(detleft + detright);\n    if (Math.abs(det) \u003e= ccwerrboundA * detsum) return det;\n\n    return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);\n}\n\nexport function orient2dfast(ax, ay, bx, by, cx, cy) {\n    return (ay - cy) * (bx - cx) - (ax - cx) * (by - cy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, scale} from './util.js';\n\nconst o3derrboundA = (7 + 56 * epsilon) * epsilon;\nconst o3derrboundB = (3 + 28 * epsilon) * epsilon;\nconst o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst at_b = vec(4);\nconst at_c = vec(4);\nconst bt_c = vec(4);\nconst bt_a = vec(4);\nconst ct_a = vec(4);\nconst ct_b = vec(4);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abt = vec(8);\nconst u = vec(4);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _16 = vec(8);\nconst _12 = vec(12);\n\nlet fin = vec(192);\nlet fin2 = vec(192);\n\nfunction finadd(finlen, alen, a) {\n    finlen = sum(finlen, fin, alen, a, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction tailinit(xtail, ytail, ax, ay, bx, by, a, b) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3, negate;\n    if (xtail === 0) {\n        if (ytail === 0) {\n            a[0] = 0;\n            b[0] = 0;\n            return 1;\n        } else {\n            negate = -ytail;\n            s1 = negate * ax;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        }\n    } else {\n        if (ytail === 0) {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            a[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            a[1] = s1;\n            negate = -xtail;\n            s1 = negate * by;\n            c = splitter * negate;\n            ahi = c - (c - negate);\n            alo = negate - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            b[0] = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            b[1] = s1;\n            return 2;\n        } else {\n            s1 = xtail * ay;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * ay;\n            bhi = c - (c - ay);\n            blo = ay - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = ytail * ax;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * ax;\n            bhi = c - (c - ax);\n            blo = ax - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            a[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            a[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            a[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            a[3] = u3;\n            s1 = ytail * bx;\n            c = splitter * ytail;\n            ahi = c - (c - ytail);\n            alo = ytail - ahi;\n            c = splitter * bx;\n            bhi = c - (c - bx);\n            blo = bx - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = xtail * by;\n            c = splitter * xtail;\n            ahi = c - (c - xtail);\n            alo = xtail - ahi;\n            c = splitter * by;\n            bhi = c - (c - by);\n            blo = by - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            b[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            b[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            b[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            b[3] = u3;\n            return 4;\n        }\n    }\n}\n\nfunction tailadd(finlen, a, b, k, z) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, u3;\n    s1 = a * b;\n    c = splitter * a;\n    ahi = c - (c - a);\n    alo = a - ahi;\n    c = splitter * b;\n    bhi = c - (c - b);\n    blo = b - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    c = splitter * k;\n    bhi = c - (c - k);\n    blo = k - bhi;\n    _i = s0 * k;\n    c = splitter * s0;\n    ahi = c - (c - s0);\n    alo = s0 - ahi;\n    u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n    _j = s1 * k;\n    c = splitter * s1;\n    ahi = c - (c - s1);\n    alo = s1 - ahi;\n    _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n    _k = _i + _0;\n    bvirt = _k - _i;\n    u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n    u3 = _j + _k;\n    u[2] = _k - (u3 - _j);\n    u[3] = u3;\n    finlen = finadd(finlen, 4, u);\n    if (z !== 0) {\n        c = splitter * z;\n        bhi = c - (c - z);\n        blo = z - bhi;\n        _i = s0 * z;\n        c = splitter * s0;\n        ahi = c - (c - s0);\n        alo = s0 - ahi;\n        u[0] = alo * blo - (_i - ahi * bhi - alo * bhi - ahi * blo);\n        _j = s1 * z;\n        c = splitter * s1;\n        ahi = c - (c - s1);\n        alo = s1 - ahi;\n        _0 = alo * blo - (_j - ahi * bhi - alo * bhi - ahi * blo);\n        _k = _i + _0;\n        bvirt = _k - _i;\n        u[1] = _i - (_k - bvirt) + (_0 - bvirt);\n        u3 = _j + _k;\n        u[2] = _k - (u3 - _j);\n        u[3] = u3;\n        finlen = finadd(finlen, 4, u);\n    }\n    return finlen;\n}\n\nfunction orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail;\n    let adytail, bdytail, cdytail;\n    let adztail, bdztail, cdztail;\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _k, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            scale(4, bc, adz, _8), _8,\n            scale(4, ca, bdz, _8b), _8b, _16), _16,\n        scale(4, ab, cdz, _8), _8, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = o3derrboundB * permanent;\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    bvirt = az - adz;\n    adztail = az - (adz + bvirt) + (bvirt - dz);\n    bvirt = bz - bdz;\n    bdztail = bz - (bdz + bvirt) + (bvirt - dz);\n    bvirt = cz - cdz;\n    cdztail = cz - (cdz + bvirt) + (bvirt - dz);\n\n    if (adxtail === 0 \u0026\u0026 bdxtail === 0 \u0026\u0026 cdxtail === 0 \u0026\u0026\n        adytail === 0 \u0026\u0026 bdytail === 0 \u0026\u0026 cdytail === 0 \u0026\u0026\n        adztail === 0 \u0026\u0026 bdztail === 0 \u0026\u0026 cdztail === 0) {\n        return det;\n    }\n\n    errbound = o3derrboundC * permanent + resulterrbound * Math.abs(det);\n    det +=\n        adz * (bdx * cdytail + cdy * bdxtail - (bdy * cdxtail + cdx * bdytail)) + adztail * (bdx * cdy - bdy * cdx) +\n        bdz * (cdx * adytail + ady * cdxtail - (cdy * adxtail + adx * cdytail)) + bdztail * (cdx * ady - cdy * adx) +\n        cdz * (adx * bdytail + bdy * adxtail - (ady * bdxtail + bdx * adytail)) + cdztail * (adx * bdy - ady * bdx);\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    const at_len = tailinit(adxtail, adytail, bdx, bdy, cdx, cdy, at_b, at_c);\n    const bt_len = tailinit(bdxtail, bdytail, cdx, cdy, adx, ady, bt_c, bt_a);\n    const ct_len = tailinit(cdxtail, cdytail, adx, ady, bdx, bdy, ct_a, ct_b);\n\n    const bctlen = sum(bt_len, bt_c, ct_len, ct_b, bct);\n    finlen = finadd(finlen, scale(bctlen, bct, adz, _16), _16);\n\n    const catlen = sum(ct_len, ct_a, at_len, at_c, cat);\n    finlen = finadd(finlen, scale(catlen, cat, bdz, _16), _16);\n\n    const abtlen = sum(at_len, at_b, bt_len, bt_a, abt);\n    finlen = finadd(finlen, scale(abtlen, abt, cdz, _16), _16);\n\n    if (adztail !== 0) {\n        finlen = finadd(finlen, scale(4, bc, adztail, _12), _12);\n        finlen = finadd(finlen, scale(bctlen, bct, adztail, _16), _16);\n    }\n    if (bdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ca, bdztail, _12), _12);\n        finlen = finadd(finlen, scale(catlen, cat, bdztail, _16), _16);\n    }\n    if (cdztail !== 0) {\n        finlen = finadd(finlen, scale(4, ab, cdztail, _12), _12);\n        finlen = finadd(finlen, scale(abtlen, abt, cdztail, _16), _16);\n    }\n\n    if (adxtail !== 0) {\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, adxtail, bdytail, cdz, cdztail);\n        }\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, -adxtail, cdytail, bdz, bdztail);\n        }\n    }\n    if (bdxtail !== 0) {\n        if (cdytail !== 0) {\n            finlen = tailadd(finlen, bdxtail, cdytail, adz, adztail);\n        }\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, -bdxtail, adytail, cdz, cdztail);\n        }\n    }\n    if (cdxtail !== 0) {\n        if (adytail !== 0) {\n            finlen = tailadd(finlen, cdxtail, adytail, bdz, bdztail);\n        }\n        if (bdytail !== 0) {\n            finlen = tailadd(finlen, -cdxtail, bdytail, adz, adztail);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function orient3d(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n\n    const det =\n        adz * (bdxcdy - cdxbdy) +\n        bdz * (cdxady - adxcdy) +\n        cdz * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * Math.abs(adz) +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * Math.abs(bdz) +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * Math.abs(cdz);\n\n    const errbound = o3derrboundA * permanent;\n    if (det \u003e errbound || -det \u003e errbound) {\n        return det;\n    }\n\n    return orient3dadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, permanent);\n}\n\nexport function orient3dfast(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n    const adz = az - dz;\n    const bdz = bz - dz;\n    const cdz = cz - dz;\n\n    return adx * (bdy * cdz - bdz * cdy) +\n        bdx * (cdy * adz - cdz * ady) +\n        cdx * (ady * bdz - adz * bdy);\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale} from './util.js';\n\nconst iccerrboundA = (10 + 96 * epsilon) * epsilon;\nconst iccerrboundB = (4 + 48 * epsilon) * epsilon;\nconst iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;\n\nconst bc = vec(4);\nconst ca = vec(4);\nconst ab = vec(4);\nconst aa = vec(4);\nconst bb = vec(4);\nconst cc = vec(4);\nconst u = vec(4);\nconst v = vec(4);\nconst axtbc = vec(8);\nconst aytbc = vec(8);\nconst bxtca = vec(8);\nconst bytca = vec(8);\nconst cxtab = vec(8);\nconst cytab = vec(8);\nconst abt = vec(8);\nconst bct = vec(8);\nconst cat = vec(8);\nconst abtt = vec(4);\nconst bctt = vec(4);\nconst catt = vec(4);\n\nconst _8 = vec(8);\nconst _16 = vec(16);\nconst _16b = vec(16);\nconst _16c = vec(16);\nconst _32 = vec(32);\nconst _32b = vec(32);\nconst _48 = vec(48);\nconst _64 = vec(64);\n\nlet fin = vec(1152);\nlet fin2 = vec(1152);\n\nfunction finadd(finlen, a, alen) {\n    finlen = sum(finlen, fin, a, alen, fin2);\n    const tmp = fin; fin = fin2; fin2 = tmp;\n    return finlen;\n}\n\nfunction incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent) {\n    let finlen;\n    let adxtail, bdxtail, cdxtail, adytail, bdytail, cdytail;\n    let axtbclen, aytbclen, bxtcalen, bytcalen, cxtablen, cytablen;\n    let abtlen, bctlen, catlen;\n    let abttlen, bcttlen, cattlen;\n    let n1, n0;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    s1 = bdx * cdy;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cdx * bdy;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cdx * ady;\n    c = splitter * cdx;\n    ahi = c - (c - cdx);\n    alo = cdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = adx * cdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * cdy;\n    bhi = c - (c - cdy);\n    blo = cdy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ca[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ca[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ca[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ca[3] = u3;\n    s1 = adx * bdy;\n    c = splitter * adx;\n    ahi = c - (c - adx);\n    alo = adx - ahi;\n    c = splitter * bdy;\n    bhi = c - (c - bdy);\n    blo = bdy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bdx * ady;\n    c = splitter * bdx;\n    ahi = c - (c - bdx);\n    alo = bdx - ahi;\n    c = splitter * ady;\n    bhi = c - (c - ady);\n    blo = ady - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n\n    finlen = sum(\n        sum(\n            sum(\n                scale(scale(4, bc, adx, _8), _8, adx, _16), _16,\n                scale(scale(4, bc, ady, _8), _8, ady, _16b), _16b, _32), _32,\n            sum(\n                scale(scale(4, ca, bdx, _8), _8, bdx, _16), _16,\n                scale(scale(4, ca, bdy, _8), _8, bdy, _16b), _16b, _32b), _32b, _64), _64,\n        sum(\n            scale(scale(4, ab, cdx, _8), _8, cdx, _16), _16,\n            scale(scale(4, ab, cdy, _8), _8, cdy, _16b), _16b, _32), _32, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = iccerrboundB * permanent;\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    bvirt = ax - adx;\n    adxtail = ax - (adx + bvirt) + (bvirt - dx);\n    bvirt = ay - ady;\n    adytail = ay - (ady + bvirt) + (bvirt - dy);\n    bvirt = bx - bdx;\n    bdxtail = bx - (bdx + bvirt) + (bvirt - dx);\n    bvirt = by - bdy;\n    bdytail = by - (bdy + bvirt) + (bvirt - dy);\n    bvirt = cx - cdx;\n    cdxtail = cx - (cdx + bvirt) + (bvirt - dx);\n    bvirt = cy - cdy;\n    cdytail = cy - (cdy + bvirt) + (bvirt - dy);\n    if (adxtail === 0 \u0026\u0026 bdxtail === 0 \u0026\u0026 cdxtail === 0 \u0026\u0026 adytail === 0 \u0026\u0026 bdytail === 0 \u0026\u0026 cdytail === 0) {\n        return det;\n    }\n\n    errbound = iccerrboundC * permanent + resulterrbound * Math.abs(det);\n    det += ((adx * adx + ady * ady) * ((bdx * cdytail + cdy * bdxtail) - (bdy * cdxtail + cdx * bdytail)) +\n        2 * (adx * adxtail + ady * adytail) * (bdx * cdy - bdy * cdx)) +\n        ((bdx * bdx + bdy * bdy) * ((cdx * adytail + ady * cdxtail) - (cdy * adxtail + adx * cdytail)) +\n        2 * (bdx * bdxtail + bdy * bdytail) * (cdx * ady - cdy * adx)) +\n        ((cdx * cdx + cdy * cdy) * ((adx * bdytail + bdy * adxtail) - (ady * bdxtail + bdx * adytail)) +\n        2 * (cdx * cdxtail + cdy * cdytail) * (adx * bdy - ady * bdx));\n\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n        s1 = adx * adx;\n        c = splitter * adx;\n        ahi = c - (c - adx);\n        alo = adx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = ady * ady;\n        c = splitter * ady;\n        ahi = c - (c - ady);\n        alo = ady - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        aa[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        aa[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        aa[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        aa[3] = u3;\n    }\n    if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n        s1 = bdx * bdx;\n        c = splitter * bdx;\n        ahi = c - (c - bdx);\n        alo = bdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = bdy * bdy;\n        c = splitter * bdy;\n        ahi = c - (c - bdy);\n        alo = bdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        bb[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        bb[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        bb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        bb[3] = u3;\n    }\n    if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n        s1 = cdx * cdx;\n        c = splitter * cdx;\n        ahi = c - (c - cdx);\n        alo = cdx - ahi;\n        s0 = alo * alo - (s1 - ahi * ahi - (ahi + ahi) * alo);\n        t1 = cdy * cdy;\n        c = splitter * cdy;\n        ahi = c - (c - cdy);\n        alo = cdy - ahi;\n        t0 = alo * alo - (t1 - ahi * ahi - (ahi + ahi) * alo);\n        _i = s0 + t0;\n        bvirt = _i - s0;\n        cc[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n        _j = s1 + _i;\n        bvirt = _j - s1;\n        _0 = s1 - (_j - bvirt) + (_i - bvirt);\n        _i = _0 + t1;\n        bvirt = _i - _0;\n        cc[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n        u3 = _j + _i;\n        bvirt = u3 - _j;\n        cc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n        cc[3] = u3;\n    }\n\n    if (adxtail !== 0) {\n        axtbclen = scale(4, bc, adxtail, axtbc);\n        finlen = finadd(finlen, sum_three(\n            scale(axtbclen, axtbc, 2 * adx, _16), _16,\n            scale(scale(4, cc, adxtail, _8), _8, bdy, _16b), _16b,\n            scale(scale(4, bb, adxtail, _8), _8, -cdy, _16c), _16c, _32, _48), _48);\n    }\n    if (adytail !== 0) {\n        aytbclen = scale(4, bc, adytail, aytbc);\n        finlen = finadd(finlen, sum_three(\n            scale(aytbclen, aytbc, 2 * ady, _16), _16,\n            scale(scale(4, bb, adytail, _8), _8, cdx, _16b), _16b,\n            scale(scale(4, cc, adytail, _8), _8, -bdx, _16c), _16c, _32, _48), _48);\n    }\n    if (bdxtail !== 0) {\n        bxtcalen = scale(4, ca, bdxtail, bxtca);\n        finlen = finadd(finlen, sum_three(\n            scale(bxtcalen, bxtca, 2 * bdx, _16), _16,\n            scale(scale(4, aa, bdxtail, _8), _8, cdy, _16b), _16b,\n            scale(scale(4, cc, bdxtail, _8), _8, -ady, _16c), _16c, _32, _48), _48);\n    }\n    if (bdytail !== 0) {\n        bytcalen = scale(4, ca, bdytail, bytca);\n        finlen = finadd(finlen, sum_three(\n            scale(bytcalen, bytca, 2 * bdy, _16), _16,\n            scale(scale(4, cc, bdytail, _8), _8, adx, _16b), _16b,\n            scale(scale(4, aa, bdytail, _8), _8, -cdx, _16c), _16c, _32, _48), _48);\n    }\n    if (cdxtail !== 0) {\n        cxtablen = scale(4, ab, cdxtail, cxtab);\n        finlen = finadd(finlen, sum_three(\n            scale(cxtablen, cxtab, 2 * cdx, _16), _16,\n            scale(scale(4, bb, cdxtail, _8), _8, ady, _16b), _16b,\n            scale(scale(4, aa, cdxtail, _8), _8, -bdy, _16c), _16c, _32, _48), _48);\n    }\n    if (cdytail !== 0) {\n        cytablen = scale(4, ab, cdytail, cytab);\n        finlen = finadd(finlen, sum_three(\n            scale(cytablen, cytab, 2 * cdy, _16), _16,\n            scale(scale(4, aa, cdytail, _8), _8, bdx, _16b), _16b,\n            scale(scale(4, bb, cdytail, _8), _8, -adx, _16c), _16c, _32, _48), _48);\n    }\n\n    if (adxtail !== 0 || adytail !== 0) {\n        if (bdxtail !== 0 || bdytail !== 0 || cdxtail !== 0 || cdytail !== 0) {\n            s1 = bdxtail * cdy;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdy;\n            bhi = c - (c - cdy);\n            blo = cdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * cdytail;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            s1 = cdxtail * -bdy;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * -bdy;\n            bhi = c - (c - -bdy);\n            blo = -bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * -bdytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * -bdytail;\n            bhi = c - (c - -bdytail);\n            blo = -bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            bctlen = sum(4, u, 4, v, bct);\n            s1 = bdxtail * cdytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdxtail * bdytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            bctt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            bctt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            bctt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            bctt[3] = u3;\n            bcttlen = 4;\n        } else {\n            bct[0] = 0;\n            bctlen = 1;\n            bctt[0] = 0;\n            bcttlen = 1;\n        }\n        if (adxtail !== 0) {\n            const len = scale(bctlen, bct, adxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(axtbclen, axtbc, adxtail, _16), _16,\n                scale(len, _16c, 2 * adx, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * adx, _16), _16,\n                scale(len2, _8, adxtail, _16b), _16b,\n                scale(len, _16c, adxtail, _32), _32, _32b, _64), _64);\n\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, adxtail, _8), _8, bdytail, _16), _16);\n            }\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, -adxtail, _8), _8, cdytail, _16), _16);\n            }\n        }\n        if (adytail !== 0) {\n            const len = scale(bctlen, bct, adytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(aytbclen, aytbc, adytail, _16), _16,\n                scale(len, _16c, 2 * ady, _32), _32, _48), _48);\n\n            const len2 = scale(bcttlen, bctt, adytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * ady, _16), _16,\n                scale(len2, _8, adytail, _16b), _16b,\n                scale(len, _16c, adytail, _32), _32, _32b, _64), _64);\n        }\n    }\n    if (bdxtail !== 0 || bdytail !== 0) {\n        if (cdxtail !== 0 || cdytail !== 0 || adxtail !== 0 || adytail !== 0) {\n            s1 = cdxtail * ady;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * ady;\n            bhi = c - (c - ady);\n            blo = ady - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = cdx * adytail;\n            c = splitter * cdx;\n            ahi = c - (c - cdx);\n            alo = cdx - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -cdy;\n            n0 = -cdytail;\n            s1 = adxtail * n1;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * n0;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            catlen = sum(4, u, 4, v, cat);\n            s1 = cdxtail * adytail;\n            c = splitter * cdxtail;\n            ahi = c - (c - cdxtail);\n            alo = cdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adxtail * cdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * cdytail;\n            bhi = c - (c - cdytail);\n            blo = cdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            catt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            catt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            catt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            catt[3] = u3;\n            cattlen = 4;\n        } else {\n            cat[0] = 0;\n            catlen = 1;\n            catt[0] = 0;\n            cattlen = 1;\n        }\n        if (bdxtail !== 0) {\n            const len = scale(catlen, cat, bdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bxtcalen, bxtca, bdxtail, _16), _16,\n                scale(len, _16c, 2 * bdx, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdx, _16), _16,\n                scale(len2, _8, bdxtail, _16b), _16b,\n                scale(len, _16c, bdxtail, _32), _32, _32b, _64), _64);\n\n            if (cdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, bdxtail, _8), _8, cdytail, _16), _16);\n            }\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, cc, -bdxtail, _8), _8, adytail, _16), _16);\n            }\n        }\n        if (bdytail !== 0) {\n            const len = scale(catlen, cat, bdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(bytcalen, bytca, bdytail, _16), _16,\n                scale(len, _16c, 2 * bdy, _32), _32, _48), _48);\n\n            const len2 = scale(cattlen, catt, bdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * bdy, _16), _16,\n                scale(len2, _8, bdytail, _16b), _16b,\n                scale(len, _16c, bdytail, _32), _32,  _32b, _64), _64);\n        }\n    }\n    if (cdxtail !== 0 || cdytail !== 0) {\n        if (adxtail !== 0 || adytail !== 0 || bdxtail !== 0 || bdytail !== 0) {\n            s1 = adxtail * bdy;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdy;\n            bhi = c - (c - bdy);\n            blo = bdy - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = adx * bdytail;\n            c = splitter * adx;\n            ahi = c - (c - adx);\n            alo = adx - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            u[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            u[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            u[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            u[3] = u3;\n            n1 = -ady;\n            n0 = -adytail;\n            s1 = bdxtail * n1;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * n1;\n            bhi = c - (c - n1);\n            blo = n1 - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdx * n0;\n            c = splitter * bdx;\n            ahi = c - (c - bdx);\n            alo = bdx - ahi;\n            c = splitter * n0;\n            bhi = c - (c - n0);\n            blo = n0 - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 + t0;\n            bvirt = _i - s0;\n            v[0] = s0 - (_i - bvirt) + (t0 - bvirt);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 + t1;\n            bvirt = _i - _0;\n            v[1] = _0 - (_i - bvirt) + (t1 - bvirt);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            v[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            v[3] = u3;\n            abtlen = sum(4, u, 4, v, abt);\n            s1 = adxtail * bdytail;\n            c = splitter * adxtail;\n            ahi = c - (c - adxtail);\n            alo = adxtail - ahi;\n            c = splitter * bdytail;\n            bhi = c - (c - bdytail);\n            blo = bdytail - bhi;\n            s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n            t1 = bdxtail * adytail;\n            c = splitter * bdxtail;\n            ahi = c - (c - bdxtail);\n            alo = bdxtail - ahi;\n            c = splitter * adytail;\n            bhi = c - (c - adytail);\n            blo = adytail - bhi;\n            t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n            _i = s0 - t0;\n            bvirt = s0 - _i;\n            abtt[0] = s0 - (_i + bvirt) + (bvirt - t0);\n            _j = s1 + _i;\n            bvirt = _j - s1;\n            _0 = s1 - (_j - bvirt) + (_i - bvirt);\n            _i = _0 - t1;\n            bvirt = _0 - _i;\n            abtt[1] = _0 - (_i + bvirt) + (bvirt - t1);\n            u3 = _j + _i;\n            bvirt = u3 - _j;\n            abtt[2] = _j - (u3 - bvirt) + (_i - bvirt);\n            abtt[3] = u3;\n            abttlen = 4;\n        } else {\n            abt[0] = 0;\n            abtlen = 1;\n            abtt[0] = 0;\n            abttlen = 1;\n        }\n        if (cdxtail !== 0) {\n            const len = scale(abtlen, abt, cdxtail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cxtablen, cxtab, cdxtail, _16), _16,\n                scale(len, _16c, 2 * cdx, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdxtail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdx, _16), _16,\n                scale(len2, _8, cdxtail, _16b), _16b,\n                scale(len, _16c, cdxtail, _32), _32, _32b, _64), _64);\n\n            if (adytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, bb, cdxtail, _8), _8, adytail, _16), _16);\n            }\n            if (bdytail !== 0) {\n                finlen = finadd(finlen, scale(scale(4, aa, -cdxtail, _8), _8, bdytail, _16), _16);\n            }\n        }\n        if (cdytail !== 0) {\n            const len = scale(abtlen, abt, cdytail, _16c);\n            finlen = finadd(finlen, sum(\n                scale(cytablen, cytab, cdytail, _16), _16,\n                scale(len, _16c, 2 * cdy, _32), _32, _48), _48);\n\n            const len2 = scale(abttlen, abtt, cdytail, _8);\n            finlen = finadd(finlen, sum_three(\n                scale(len2, _8, 2 * cdy, _16), _16,\n                scale(len2, _8, cdytail, _16b), _16b,\n                scale(len, _16c, cdytail, _32), _32, _32b, _64), _64);\n        }\n    }\n\n    return fin[finlen - 1];\n}\n\nexport function incircle(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const bdx = bx - dx;\n    const cdx = cx - dx;\n    const ady = ay - dy;\n    const bdy = by - dy;\n    const cdy = cy - dy;\n\n    const bdxcdy = bdx * cdy;\n    const cdxbdy = cdx * bdy;\n    const alift = adx * adx + ady * ady;\n\n    const cdxady = cdx * ady;\n    const adxcdy = adx * cdy;\n    const blift = bdx * bdx + bdy * bdy;\n\n    const adxbdy = adx * bdy;\n    const bdxady = bdx * ady;\n    const clift = cdx * cdx + cdy * cdy;\n\n    const det =\n        alift * (bdxcdy - cdxbdy) +\n        blift * (cdxady - adxcdy) +\n        clift * (adxbdy - bdxady);\n\n    const permanent =\n        (Math.abs(bdxcdy) + Math.abs(cdxbdy)) * alift +\n        (Math.abs(cdxady) + Math.abs(adxcdy)) * blift +\n        (Math.abs(adxbdy) + Math.abs(bdxady)) * clift;\n\n    const errbound = iccerrboundA * permanent;\n\n    if (det \u003e errbound || -det \u003e errbound) {\n        return det;\n    }\n    return incircleadapt(ax, ay, bx, by, cx, cy, dx, dy, permanent);\n}\n\nexport function incirclefast(ax, ay, bx, by, cx, cy, dx, dy) {\n    const adx = ax - dx;\n    const ady = ay - dy;\n    const bdx = bx - dx;\n    const bdy = by - dy;\n    const cdx = cx - dx;\n    const cdy = cy - dy;\n\n    const abdet = adx * bdy - bdx * ady;\n    const bcdet = bdx * cdy - cdx * bdy;\n    const cadet = cdx * ady - adx * cdy;\n    const alift = adx * adx + ady * ady;\n    const blift = bdx * bdx + bdy * bdy;\n    const clift = cdx * cdx + cdy * cdy;\n\n    return alift * bcdet + blift * cadet + clift * abdet;\n}\n","import {epsilon, splitter, resulterrbound, estimate, vec, sum, sum_three, scale, negate} from './util.js';\n\nconst isperrboundA = (16 + 224 * epsilon) * epsilon;\nconst isperrboundB = (5 + 72 * epsilon) * epsilon;\nconst isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;\n\nconst ab = vec(4);\nconst bc = vec(4);\nconst cd = vec(4);\nconst de = vec(4);\nconst ea = vec(4);\nconst ac = vec(4);\nconst bd = vec(4);\nconst ce = vec(4);\nconst da = vec(4);\nconst eb = vec(4);\n\nconst abc = vec(24);\nconst bcd = vec(24);\nconst cde = vec(24);\nconst dea = vec(24);\nconst eab = vec(24);\nconst abd = vec(24);\nconst bce = vec(24);\nconst cda = vec(24);\nconst deb = vec(24);\nconst eac = vec(24);\n\nconst adet = vec(1152);\nconst bdet = vec(1152);\nconst cdet = vec(1152);\nconst ddet = vec(1152);\nconst edet = vec(1152);\nconst abdet = vec(2304);\nconst cddet = vec(2304);\nconst cdedet = vec(3456);\nconst deter = vec(5760);\n\nconst _8 = vec(8);\nconst _8b = vec(8);\nconst _8c = vec(8);\nconst _16 = vec(16);\nconst _24 = vec(24);\nconst _48 = vec(48);\nconst _48b = vec(48);\nconst _96 = vec(96);\nconst _192 = vec(192);\nconst _384x = vec(384);\nconst _384y = vec(384);\nconst _384z = vec(384);\nconst _768 = vec(768);\n\nfunction sum_three_scale(a, b, c, az, bz, cz, out) {\n    return sum_three(\n        scale(4, a, az, _8), _8,\n        scale(4, b, bz, _8b), _8b,\n        scale(4, c, cz, _8c), _8c, _16, out);\n}\n\nfunction liftexact(alen, a, blen, b, clen, c, dlen, d, x, y, z, out) {\n    const len = sum(\n        sum(alen, a, blen, b, _48), _48,\n        negate(sum(clen, c, dlen, d, _48b), _48b), _48b, _96);\n\n    return sum_three(\n        scale(scale(len, _96, x, _192), _192, x, _384x), _384x,\n        scale(scale(len, _96, y, _192), _192, y, _384y), _384y,\n        scale(scale(len, _96, z, _192), _192, z, _384z), _384z, _768, out);\n}\n\nfunction insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u3;\n\n    s1 = ax * by;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ay;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ab[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ab[3] = u3;\n    s1 = bx * cy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * by;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bc[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bc[3] = u3;\n    s1 = cx * dy;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * cy;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    cd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    cd[3] = u3;\n    s1 = dx * ey;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * dy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    de[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    de[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    de[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    de[3] = u3;\n    s1 = ex * ay;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * ey;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ea[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ea[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ea[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ea[3] = u3;\n    s1 = ax * cy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cx * ay;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ac[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ac[3] = u3;\n    s1 = bx * dy;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dx * by;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    bd[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    bd[3] = u3;\n    s1 = cx * ey;\n    c = splitter * cx;\n    ahi = c - (c - cx);\n    alo = cx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ex * cy;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * cy;\n    bhi = c - (c - cy);\n    blo = cy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ce[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ce[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    ce[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    ce[3] = u3;\n    s1 = dx * ay;\n    c = splitter * dx;\n    ahi = c - (c - dx);\n    alo = dx - ahi;\n    c = splitter * ay;\n    bhi = c - (c - ay);\n    blo = ay - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = ax * dy;\n    c = splitter * ax;\n    ahi = c - (c - ax);\n    alo = ax - ahi;\n    c = splitter * dy;\n    bhi = c - (c - dy);\n    blo = dy - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    da[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    da[3] = u3;\n    s1 = ex * by;\n    c = splitter * ex;\n    ahi = c - (c - ex);\n    alo = ex - ahi;\n    c = splitter * by;\n    bhi = c - (c - by);\n    blo = by - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bx * ey;\n    c = splitter * bx;\n    ahi = c - (c - bx);\n    alo = bx - ahi;\n    c = splitter * ey;\n    bhi = c - (c - ey);\n    blo = ey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    eb[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    eb[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    u3 = _j + _i;\n    bvirt = u3 - _j;\n    eb[2] = _j - (u3 - bvirt) + (_i - bvirt);\n    eb[3] = u3;\n\n    const abclen = sum_three_scale(ab, bc, ac, cz, az, -bz, abc);\n    const bcdlen = sum_three_scale(bc, cd, bd, dz, bz, -cz, bcd);\n    const cdelen = sum_three_scale(cd, de, ce, ez, cz, -dz, cde);\n    const dealen = sum_three_scale(de, ea, da, az, dz, -ez, dea);\n    const eablen = sum_three_scale(ea, ab, eb, bz, ez, -az, eab);\n    const abdlen = sum_three_scale(ab, bd, da, dz, az, bz, abd);\n    const bcelen = sum_three_scale(bc, ce, eb, ez, bz, cz, bce);\n    const cdalen = sum_three_scale(cd, da, ac, az, cz, dz, cda);\n    const deblen = sum_three_scale(de, eb, bd, bz, dz, ez, deb);\n    const eaclen = sum_three_scale(ea, ac, ce, cz, ez, az, eac);\n\n    const deterlen = sum_three(\n        liftexact(cdelen, cde, bcelen, bce, deblen, deb, bcdlen, bcd, ax, ay, az, adet), adet,\n        liftexact(dealen, dea, cdalen, cda, eaclen, eac, cdelen, cde, bx, by, bz, bdet), bdet,\n        sum_three(\n            liftexact(eablen, eab, deblen, deb, abdlen, abd, dealen, dea, cx, cy, cz, cdet), cdet,\n            liftexact(abclen, abc, eaclen, eac, bcelen, bce, eablen, eab, dx, dy, dz, ddet), ddet,\n            liftexact(bcdlen, bcd, abdlen, abd, cdalen, cda, abclen, abc, ex, ey, ez, edet), edet, cddet, cdedet), cdedet, abdet, deter);\n\n    return deter[deterlen - 1];\n}\n\nconst xdet = vec(96);\nconst ydet = vec(96);\nconst zdet = vec(96);\nconst fin = vec(1152);\n\nfunction liftadapt(a, b, c, az, bz, cz, x, y, z, out) {\n    const len = sum_three_scale(a, b, c, az, bz, cz, _24);\n    return sum_three(\n        scale(scale(len, _24, x, _48), _48, x, xdet), xdet,\n        scale(scale(len, _24, y, _48), _48, y, ydet), ydet,\n        scale(scale(len, _24, z, _48), _48, z, zdet), zdet, _192, out);\n}\n\nfunction insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent) {\n    let ab3, bc3, cd3, da3, ac3, bd3;\n\n    let aextail, bextail, cextail, dextail;\n    let aeytail, beytail, ceytail, deytail;\n    let aeztail, beztail, ceztail, deztail;\n\n    let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0;\n\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    s1 = aex * bey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = bex * aey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ab[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ab[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ab3 = _j + _i;\n    bvirt = ab3 - _j;\n    ab[2] = _j - (ab3 - bvirt) + (_i - bvirt);\n    ab[3] = ab3;\n    s1 = bex * cey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * bey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bc[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bc[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bc3 = _j + _i;\n    bvirt = bc3 - _j;\n    bc[2] = _j - (bc3 - bvirt) + (_i - bvirt);\n    bc[3] = bc3;\n    s1 = cex * dey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * cey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    cd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    cd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    cd3 = _j + _i;\n    bvirt = cd3 - _j;\n    cd[2] = _j - (cd3 - bvirt) + (_i - bvirt);\n    cd[3] = cd3;\n    s1 = dex * aey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = aex * dey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    da[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    da[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    da3 = _j + _i;\n    bvirt = da3 - _j;\n    da[2] = _j - (da3 - bvirt) + (_i - bvirt);\n    da[3] = da3;\n    s1 = aex * cey;\n    c = splitter * aex;\n    ahi = c - (c - aex);\n    alo = aex - ahi;\n    c = splitter * cey;\n    bhi = c - (c - cey);\n    blo = cey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = cex * aey;\n    c = splitter * cex;\n    ahi = c - (c - cex);\n    alo = cex - ahi;\n    c = splitter * aey;\n    bhi = c - (c - aey);\n    blo = aey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    ac[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    ac[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    ac3 = _j + _i;\n    bvirt = ac3 - _j;\n    ac[2] = _j - (ac3 - bvirt) + (_i - bvirt);\n    ac[3] = ac3;\n    s1 = bex * dey;\n    c = splitter * bex;\n    ahi = c - (c - bex);\n    alo = bex - ahi;\n    c = splitter * dey;\n    bhi = c - (c - dey);\n    blo = dey - bhi;\n    s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);\n    t1 = dex * bey;\n    c = splitter * dex;\n    ahi = c - (c - dex);\n    alo = dex - ahi;\n    c = splitter * bey;\n    bhi = c - (c - bey);\n    blo = bey - bhi;\n    t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);\n    _i = s0 - t0;\n    bvirt = s0 - _i;\n    bd[0] = s0 - (_i + bvirt) + (bvirt - t0);\n    _j = s1 + _i;\n    bvirt = _j - s1;\n    _0 = s1 - (_j - bvirt) + (_i - bvirt);\n    _i = _0 - t1;\n    bvirt = _0 - _i;\n    bd[1] = _0 - (_i + bvirt) + (bvirt - t1);\n    bd3 = _j + _i;\n    bvirt = bd3 - _j;\n    bd[2] = _j - (bd3 - bvirt) + (_i - bvirt);\n    bd[3] = bd3;\n\n    const finlen = sum(\n        sum(\n            negate(liftadapt(bc, cd, bd, dez, bez, -cez, aex, aey, aez, adet), adet), adet,\n            liftadapt(cd, da, ac, aez, cez, dez, bex, bey, bez, bdet), bdet, abdet), abdet,\n        sum(\n            negate(liftadapt(da, ab, bd, bez, dez, aez, cex, cey, cez, cdet), cdet), cdet,\n            liftadapt(ab, bc, ac, cez, aez, -bez, dex, dey, dez, ddet), ddet, cddet), cddet, fin);\n\n    let det = estimate(finlen, fin);\n    let errbound = isperrboundB * permanent;\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    bvirt = ax - aex;\n    aextail = ax - (aex + bvirt) + (bvirt - ex);\n    bvirt = ay - aey;\n    aeytail = ay - (aey + bvirt) + (bvirt - ey);\n    bvirt = az - aez;\n    aeztail = az - (aez + bvirt) + (bvirt - ez);\n    bvirt = bx - bex;\n    bextail = bx - (bex + bvirt) + (bvirt - ex);\n    bvirt = by - bey;\n    beytail = by - (bey + bvirt) + (bvirt - ey);\n    bvirt = bz - bez;\n    beztail = bz - (bez + bvirt) + (bvirt - ez);\n    bvirt = cx - cex;\n    cextail = cx - (cex + bvirt) + (bvirt - ex);\n    bvirt = cy - cey;\n    ceytail = cy - (cey + bvirt) + (bvirt - ey);\n    bvirt = cz - cez;\n    ceztail = cz - (cez + bvirt) + (bvirt - ez);\n    bvirt = dx - dex;\n    dextail = dx - (dex + bvirt) + (bvirt - ex);\n    bvirt = dy - dey;\n    deytail = dy - (dey + bvirt) + (bvirt - ey);\n    bvirt = dz - dez;\n    deztail = dz - (dez + bvirt) + (bvirt - ez);\n    if (aextail === 0 \u0026\u0026 aeytail === 0 \u0026\u0026 aeztail === 0 \u0026\u0026\n        bextail === 0 \u0026\u0026 beytail === 0 \u0026\u0026 beztail === 0 \u0026\u0026\n        cextail === 0 \u0026\u0026 ceytail === 0 \u0026\u0026 ceztail === 0 \u0026\u0026\n        dextail === 0 \u0026\u0026 deytail === 0 \u0026\u0026 deztail === 0) {\n        return det;\n    }\n\n    errbound = isperrboundC * permanent + resulterrbound * Math.abs(det);\n\n    const abeps = (aex * beytail + bey * aextail) - (aey * bextail + bex * aeytail);\n    const bceps = (bex * ceytail + cey * bextail) - (bey * cextail + cex * beytail);\n    const cdeps = (cex * deytail + dey * cextail) - (cey * dextail + dex * ceytail);\n    const daeps = (dex * aeytail + aey * dextail) - (dey * aextail + aex * deytail);\n    const aceps = (aex * ceytail + cey * aextail) - (aey * cextail + cex * aeytail);\n    const bdeps = (bex * deytail + dey * bextail) - (bey * dextail + dex * beytail);\n    det +=\n        (((bex * bex + bey * bey + bez * bez) * ((cez * daeps + dez * aceps + aez * cdeps) +\n        (ceztail * da3 + deztail * ac3 + aeztail * cd3)) + (dex * dex + dey * dey + dez * dez) *\n        ((aez * bceps - bez * aceps + cez * abeps) + (aeztail * bc3 - beztail * ac3 + ceztail * ab3))) -\n        ((aex * aex + aey * aey + aez * aez) * ((bez * cdeps - cez * bdeps + dez * bceps) +\n        (beztail * cd3 - ceztail * bd3 + deztail * bc3)) + (cex * cex + cey * cey + cez * cez) *\n        ((dez * abeps + aez * bdeps + bez * daeps) + (deztail * ab3 + aeztail * bd3 + beztail * da3)))) +\n        2 * (((bex * bextail + bey * beytail + bez * beztail) * (cez * da3 + dez * ac3 + aez * cd3) +\n        (dex * dextail + dey * deytail + dez * deztail) * (aez * bc3 - bez * ac3 + cez * ab3)) -\n        ((aex * aextail + aey * aeytail + aez * aeztail) * (bez * cd3 - cez * bd3 + dez * bc3) +\n        (cex * cextail + cey * ceytail + cez * ceztail) * (dez * ab3 + aez * bd3 + bez * da3)));\n\n    if (det \u003e= errbound || -det \u003e= errbound) {\n        return det;\n    }\n\n    return insphereexact(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez);\n}\n\nexport function insphere(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez) {\n    const aex = ax - ex;\n    const bex = bx - ex;\n    const cex = cx - ex;\n    const dex = dx - ex;\n    const aey = ay - ey;\n    const bey = by - ey;\n    const cey = cy - ey;\n    const dey = dy - ey;\n    const aez = az - ez;\n    const bez = bz - ez;\n    const cez = cz - ez;\n    const dez = dz - ez;\n\n    const aexbey = aex * bey;\n    const bexaey = bex * aey;\n    const ab = aexbey - bexaey;\n    const bexcey = bex * cey;\n    const cexbey = cex * bey;\n    const bc = bexcey - cexbey;\n    const cexdey = cex * dey;\n    const dexcey = dex * cey;\n    const cd = cexdey - dexcey;\n    const dexaey = dex * aey;\n    const aexdey = aex * dey;\n    const da = dexaey - aexdey;\n    const aexcey = aex * cey;\n    const cexaey = cex * aey;\n    const ac = aexcey - cexaey;\n    const bexdey = bex * dey;\n    const dexbey = dex * bey;\n    const bd = bexdey - dexbey;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    const det =\n        (clift * (dez * ab + aez * bd + bez * da) - dlift * (aez * bc - bez * ac + cez * ab)) +\n        (alift * (bez * cd - cez * bd + dez * bc) - blift * (cez * da + dez * ac + aez * cd));\n\n    const aezplus = Math.abs(aez);\n    const bezplus = Math.abs(bez);\n    const cezplus = Math.abs(cez);\n    const dezplus = Math.abs(dez);\n    const aexbeyplus = Math.abs(aexbey) + Math.abs(bexaey);\n    const bexceyplus = Math.abs(bexcey) + Math.abs(cexbey);\n    const cexdeyplus = Math.abs(cexdey) + Math.abs(dexcey);\n    const dexaeyplus = Math.abs(dexaey) + Math.abs(aexdey);\n    const aexceyplus = Math.abs(aexcey) + Math.abs(cexaey);\n    const bexdeyplus = Math.abs(bexdey) + Math.abs(dexbey);\n    const permanent =\n        (cexdeyplus * bezplus + bexdeyplus * cezplus + bexceyplus * dezplus) * alift +\n        (dexaeyplus * cezplus + aexceyplus * dezplus + cexdeyplus * aezplus) * blift +\n        (aexbeyplus * dezplus + bexdeyplus * aezplus + dexaeyplus * bezplus) * clift +\n        (bexceyplus * aezplus + aexceyplus * bezplus + aexbeyplus * cezplus) * dlift;\n\n    const errbound = isperrboundA * permanent;\n    if (det \u003e errbound || -det \u003e errbound) {\n        return det;\n    }\n    return -insphereadapt(ax, ay, az, bx, by, bz, cx, cy, cz, dx, dy, dz, ex, ey, ez, permanent);\n}\n\nexport function inspherefast(pax, pay, paz, pbx, pby, pbz, pcx, pcy, pcz, pdx, pdy, pdz, pex, pey, pez) {\n    const aex = pax - pex;\n    const bex = pbx - pex;\n    const cex = pcx - pex;\n    const dex = pdx - pex;\n    const aey = pay - pey;\n    const bey = pby - pey;\n    const cey = pcy - pey;\n    const dey = pdy - pey;\n    const aez = paz - pez;\n    const bez = pbz - pez;\n    const cez = pcz - pez;\n    const dez = pdz - pez;\n\n    const ab = aex * bey - bex * aey;\n    const bc = bex * cey - cex * bey;\n    const cd = cex * dey - dex * cey;\n    const da = dex * aey - aex * dey;\n    const ac = aex * cey - cex * aey;\n    const bd = bex * dey - dex * bey;\n\n    const abc = aez * bc - bez * ac + cez * ab;\n    const bcd = bez * cd - cez * bd + dez * bc;\n    const cda = cez * da + dez * ac + aez * cd;\n    const dab = dez * ab + aez * bd + bez * da;\n\n    const alift = aex * aex + aey * aey + aez * aez;\n    const blift = bex * bex + bey * bey + bez * bez;\n    const clift = cex * cex + cey * cey + cez * cez;\n    const dlift = dex * dex + dey * dey + dez * dez;\n\n    return (clift * dab - dlift * abc) + (alift * bcd - blift * cda);\n}\n","\nconst EPSILON = Math.pow(2, -52);\nconst EDGE_STACK = new Uint32Array(512);\n\nimport {orient2d} from 'robust-predicates';\n\nexport default class Delaunator {\n\n    static from(points, getX = defaultGetX, getY = defaultGetY) {\n        const n = points.length;\n        const coords = new Float64Array(n * 2);\n\n        for (let i = 0; i \u003c n; i++) {\n            const p = points[i];\n            coords[2 * i] = getX(p);\n            coords[2 * i + 1] = getY(p);\n        }\n\n        return new Delaunator(coords);\n    }\n\n    constructor(coords) {\n        const n = coords.length \u003e\u003e 1;\n        if (n \u003e 0 \u0026\u0026 typeof coords[0] !== 'number') throw new Error('Expected coords to contain numbers.');\n\n        this.coords = coords;\n\n        // arrays that will store the triangulation graph\n        const maxTriangles = Math.max(2 * n - 5, 0);\n        this._triangles = new Uint32Array(maxTriangles * 3);\n        this._halfedges = new Int32Array(maxTriangles * 3);\n\n        // temporary arrays for tracking the edges of the advancing convex hull\n        this._hashSize = Math.ceil(Math.sqrt(n));\n        this._hullPrev = new Uint32Array(n); // edge to prev edge\n        this._hullNext = new Uint32Array(n); // edge to next edge\n        this._hullTri = new Uint32Array(n); // edge to adjacent triangle\n        this._hullHash = new Int32Array(this._hashSize); // angular edge hash\n\n        // temporary arrays for sorting points\n        this._ids = new Uint32Array(n);\n        this._dists = new Float64Array(n);\n\n        this.update();\n    }\n\n    update() {\n        const {coords, _hullPrev: hullPrev, _hullNext: hullNext, _hullTri: hullTri, _hullHash: hullHash} =  this;\n        const n = coords.length \u003e\u003e 1;\n\n        // populate an array of point indices; calculate input data bbox\n        let minX = Infinity;\n        let minY = Infinity;\n        let maxX = -Infinity;\n        let maxY = -Infinity;\n\n        for (let i = 0; i \u003c n; i++) {\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n            if (x \u003c minX) minX = x;\n            if (y \u003c minY) minY = y;\n            if (x \u003e maxX) maxX = x;\n            if (y \u003e maxY) maxY = y;\n            this._ids[i] = i;\n        }\n        const cx = (minX + maxX) / 2;\n        const cy = (minY + maxY) / 2;\n\n        let i0, i1, i2;\n\n        // pick a seed point close to the center\n        for (let i = 0, minDist = Infinity; i \u003c n; i++) {\n            const d = dist(cx, cy, coords[2 * i], coords[2 * i + 1]);\n            if (d \u003c minDist) {\n                i0 = i;\n                minDist = d;\n            }\n        }\n        const i0x = coords[2 * i0];\n        const i0y = coords[2 * i0 + 1];\n\n        // find the point closest to the seed\n        for (let i = 0, minDist = Infinity; i \u003c n; i++) {\n            if (i === i0) continue;\n            const d = dist(i0x, i0y, coords[2 * i], coords[2 * i + 1]);\n            if (d \u003c minDist \u0026\u0026 d \u003e 0) {\n                i1 = i;\n                minDist = d;\n            }\n        }\n        let i1x = coords[2 * i1];\n        let i1y = coords[2 * i1 + 1];\n\n        let minRadius = Infinity;\n\n        // find the third point which forms the smallest circumcircle with the first two\n        for (let i = 0; i \u003c n; i++) {\n            if (i === i0 || i === i1) continue;\n            const r = circumradius(i0x, i0y, i1x, i1y, coords[2 * i], coords[2 * i + 1]);\n            if (r \u003c minRadius) {\n                i2 = i;\n                minRadius = r;\n            }\n        }\n        let i2x = coords[2 * i2];\n        let i2y = coords[2 * i2 + 1];\n\n        if (minRadius === Infinity) {\n            // order collinear points by dx (or dy if all x are identical)\n            // and return the list as a hull\n            for (let i = 0; i \u003c n; i++) {\n                this._dists[i] = (coords[2 * i] - coords[0]) || (coords[2 * i + 1] - coords[1]);\n            }\n            quicksort(this._ids, this._dists, 0, n - 1);\n            const hull = new Uint32Array(n);\n            let j = 0;\n            for (let i = 0, d0 = -Infinity; i \u003c n; i++) {\n                const id = this._ids[i];\n                const d = this._dists[id];\n                if (d \u003e d0) {\n                    hull[j++] = id;\n                    d0 = d;\n                }\n            }\n            this.hull = hull.subarray(0, j);\n            this.triangles = new Uint32Array(0);\n            this.halfedges = new Uint32Array(0);\n            return;\n        }\n\n        // swap the order of the seed points for counter-clockwise orientation\n        if (orient2d(i0x, i0y, i1x, i1y, i2x, i2y) \u003c 0) {\n            const i = i1;\n            const x = i1x;\n            const y = i1y;\n            i1 = i2;\n            i1x = i2x;\n            i1y = i2y;\n            i2 = i;\n            i2x = x;\n            i2y = y;\n        }\n\n        const center = circumcenter(i0x, i0y, i1x, i1y, i2x, i2y);\n        this._cx = center.x;\n        this._cy = center.y;\n\n        for (let i = 0; i \u003c n; i++) {\n            this._dists[i] = dist(coords[2 * i], coords[2 * i + 1], center.x, center.y);\n        }\n\n        // sort the points by distance from the seed triangle circumcenter\n        quicksort(this._ids, this._dists, 0, n - 1);\n\n        // set up the seed triangle as the starting hull\n        this._hullStart = i0;\n        let hullSize = 3;\n\n        hullNext[i0] = hullPrev[i2] = i1;\n        hullNext[i1] = hullPrev[i0] = i2;\n        hullNext[i2] = hullPrev[i1] = i0;\n\n        hullTri[i0] = 0;\n        hullTri[i1] = 1;\n        hullTri[i2] = 2;\n\n        hullHash.fill(-1);\n        hullHash[this._hashKey(i0x, i0y)] = i0;\n        hullHash[this._hashKey(i1x, i1y)] = i1;\n        hullHash[this._hashKey(i2x, i2y)] = i2;\n\n        this.trianglesLen = 0;\n        this._addTriangle(i0, i1, i2, -1, -1, -1);\n\n        for (let k = 0, xp, yp; k \u003c this._ids.length; k++) {\n            const i = this._ids[k];\n            const x = coords[2 * i];\n            const y = coords[2 * i + 1];\n\n            // skip near-duplicate points\n            if (k \u003e 0 \u0026\u0026 Math.abs(x - xp) \u003c= EPSILON \u0026\u0026 Math.abs(y - yp) \u003c= EPSILON) continue;\n            xp = x;\n            yp = y;\n\n            // skip seed triangle points\n            if (i === i0 || i === i1 || i === i2) continue;\n\n            // find a visible edge on the convex hull using edge hash\n            let start = 0;\n            for (let j = 0, key = this._hashKey(x, y); j \u003c this._hashSize; j++) {\n                start = hullHash[(key + j) % this._hashSize];\n                if (start !== -1 \u0026\u0026 start !== hullNext[start]) break;\n            }\n\n            start = hullPrev[start];\n            let e = start, q;\n            while (q = hullNext[e], orient2d(x, y, coords[2 * e], coords[2 * e + 1], coords[2 * q], coords[2 * q + 1]) \u003e= 0) {\n                e = q;\n                if (e === start) {\n                    e = -1;\n                    break;\n                }\n            }\n            if (e === -1) continue; // likely a near-duplicate point; skip it\n\n            // add the first triangle from the point\n            let t = this._addTriangle(e, i, hullNext[e], -1, -1, hullTri[e]);\n\n            // recursively flip triangles from the point until they satisfy the Delaunay condition\n            hullTri[i] = this._legalize(t + 2);\n            hullTri[e] = t; // keep track of boundary triangles on the hull\n            hullSize++;\n\n            // walk forward through the hull, adding more triangles and flipping recursively\n            let n = hullNext[e];\n            while (q = hullNext[n], orient2d(x, y, coords[2 * n], coords[2 * n + 1], coords[2 * q], coords[2 * q + 1]) \u003c 0) {\n                t = this._addTriangle(n, i, q, hullTri[i], -1, hullTri[n]);\n                hullTri[i] = this._legalize(t + 2);\n                hullNext[n] = n; // mark as removed\n                hullSize--;\n                n = q;\n            }\n\n            // walk backward from the other side, adding more triangles and flipping\n            if (e === start) {\n                while (q = hullPrev[e], orient2d(x, y, coords[2 * q], coords[2 * q + 1], coords[2 * e], coords[2 * e + 1]) \u003c 0) {\n                    t = this._addTriangle(q, i, e, -1, hullTri[e], hullTri[q]);\n                    this._legalize(t + 2);\n                    hullTri[q] = t;\n                    hullNext[e] = e; // mark as removed\n                    hullSize--;\n                    e = q;\n                }\n            }\n\n            // update the hull indices\n            this._hullStart = hullPrev[i] = e;\n            hullNext[e] = hullPrev[n] = i;\n            hullNext[i] = n;\n\n            // save the two new edges in the hash table\n            hullHash[this._hashKey(x, y)] = i;\n            hullHash[this._hashKey(coords[2 * e], coords[2 * e + 1])] = e;\n        }\n\n        this.hull = new Uint32Array(hullSize);\n        for (let i = 0, e = this._hullStart; i \u003c hullSize; i++) {\n            this.hull[i] = e;\n            e = hullNext[e];\n        }\n\n        // trim typed triangle mesh arrays\n        this.triangles = this._triangles.subarray(0, this.trianglesLen);\n        this.halfedges = this._halfedges.subarray(0, this.trianglesLen);\n    }\n\n    _hashKey(x, y) {\n        return Math.floor(pseudoAngle(x - this._cx, y - this._cy) * this._hashSize) % this._hashSize;\n    }\n\n    _legalize(a) {\n        const {_triangles: triangles, _halfedges: halfedges, coords} = this;\n\n        let i = 0;\n        let ar = 0;\n\n        // recursion eliminated with a fixed-size stack\n        while (true) {\n            const b = halfedges[a];\n\n            /* if the pair of triangles doesn't satisfy the Delaunay condition\n             * (p1 is inside the circumcircle of [p0, pl, pr]), flip them,\n             * then do the same check/flip recursively for the new pair of triangles\n             *\n             *           pl                    pl\n             *          /||\\                  /  \\\n             *       al/ || \\bl            al/    \\a\n             *        /  ||  \\              /      \\\n             *       /  a||b  \\    flip    /___ar___\\\n             *     p0\\   ||   /p1   =\u003e   p0\\---bl---/p1\n             *        \\  ||  /              \\      /\n             *       ar\\ || /br             b\\    /br\n             *          \\||/                  \\  /\n             *           pr                    pr\n             */\n            const a0 = a - a % 3;\n            ar = a0 + (a + 2) % 3;\n\n            if (b === -1) { // convex hull edge\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n                continue;\n            }\n\n            const b0 = b - b % 3;\n            const al = a0 + (a + 1) % 3;\n            const bl = b0 + (b + 2) % 3;\n\n            const p0 = triangles[ar];\n            const pr = triangles[a];\n            const pl = triangles[al];\n            const p1 = triangles[bl];\n\n            const illegal = inCircle(\n                coords[2 * p0], coords[2 * p0 + 1],\n                coords[2 * pr], coords[2 * pr + 1],\n                coords[2 * pl], coords[2 * pl + 1],\n                coords[2 * p1], coords[2 * p1 + 1]);\n\n            if (illegal) {\n                triangles[a] = p1;\n                triangles[b] = p0;\n\n                const hbl = halfedges[bl];\n\n                // edge swapped on the other side of the hull (rare); fix the halfedge reference\n                if (hbl === -1) {\n                    let e = this._hullStart;\n                    do {\n                        if (this._hullTri[e] === bl) {\n                            this._hullTri[e] = a;\n                            break;\n                        }\n                        e = this._hullPrev[e];\n                    } while (e !== this._hullStart);\n                }\n                this._link(a, hbl);\n                this._link(b, halfedges[ar]);\n                this._link(ar, bl);\n\n                const br = b0 + (b + 1) % 3;\n\n                // don't worry about hitting the cap: it can only happen on extremely degenerate input\n                if (i \u003c EDGE_STACK.length) {\n                    EDGE_STACK[i++] = br;\n                }\n            } else {\n                if (i === 0) break;\n                a = EDGE_STACK[--i];\n            }\n        }\n\n        return ar;\n    }\n\n    _link(a, b) {\n        this._halfedges[a] = b;\n        if (b !== -1) this._halfedges[b] = a;\n    }\n\n    // add a new triangle given vertex indices and adjacent half-edge ids\n    _addTriangle(i0, i1, i2, a, b, c) {\n        const t = this.trianglesLen;\n\n        this._triangles[t] = i0;\n        this._triangles[t + 1] = i1;\n        this._triangles[t + 2] = i2;\n\n        this._link(t, a);\n        this._link(t + 1, b);\n        this._link(t + 2, c);\n\n        this.trianglesLen += 3;\n\n        return t;\n    }\n}\n\n// monotonically increases with real angle, but doesn't need expensive trigonometry\nfunction pseudoAngle(dx, dy) {\n    const p = dx / (Math.abs(dx) + Math.abs(dy));\n    return (dy \u003e 0 ? 3 - p : 1 + p) / 4; // [0..1]\n}\n\nfunction dist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n\nfunction inCircle(ax, ay, bx, by, cx, cy, px, py) {\n    const dx = ax - px;\n    const dy = ay - py;\n    const ex = bx - px;\n    const ey = by - py;\n    const fx = cx - px;\n    const fy = cy - py;\n\n    const ap = dx * dx + dy * dy;\n    const bp = ex * ex + ey * ey;\n    const cp = fx * fx + fy * fy;\n\n    return dx * (ey * cp - bp * fy) -\n           dy * (ex * cp - bp * fx) +\n           ap * (ex * fy - ey * fx) \u003c 0;\n}\n\nfunction circumradius(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = (ey * bl - dy * cl) * d;\n    const y = (dx * cl - ex * bl) * d;\n\n    return x * x + y * y;\n}\n\nfunction circumcenter(ax, ay, bx, by, cx, cy) {\n    const dx = bx - ax;\n    const dy = by - ay;\n    const ex = cx - ax;\n    const ey = cy - ay;\n\n    const bl = dx * dx + dy * dy;\n    const cl = ex * ex + ey * ey;\n    const d = 0.5 / (dx * ey - dy * ex);\n\n    const x = ax + (ey * bl - dy * cl) * d;\n    const y = ay + (dx * cl - ex * bl) * d;\n\n    return {x, y};\n}\n\nfunction quicksort(ids, dists, left, right) {\n    if (right - left \u003c= 20) {\n        for (let i = left + 1; i \u003c= right; i++) {\n            const temp = ids[i];\n            const tempDist = dists[temp];\n            let j = i - 1;\n            while (j \u003e= left \u0026\u0026 dists[ids[j]] \u003e tempDist) ids[j + 1] = ids[j--];\n            ids[j + 1] = temp;\n        }\n    } else {\n        const median = (left + right) \u003e\u003e 1;\n        let i = left + 1;\n        let j = right;\n        swap(ids, median, i);\n        if (dists[ids[left]] \u003e dists[ids[right]]) swap(ids, left, right);\n        if (dists[ids[i]] \u003e dists[ids[right]]) swap(ids, i, right);\n        if (dists[ids[left]] \u003e dists[ids[i]]) swap(ids, left, i);\n\n        const temp = ids[i];\n        const tempDist = dists[temp];\n        while (true) {\n            do i++; while (dists[ids[i]] \u003c tempDist);\n            do j--; while (dists[ids[j]] \u003e tempDist);\n            if (j \u003c i) break;\n            swap(ids, i, j);\n        }\n        ids[left + 1] = ids[j];\n        ids[j] = temp;\n\n        if (right - i + 1 \u003e= j - left) {\n            quicksort(ids, dists, i, right);\n            quicksort(ids, dists, left, j - 1);\n        } else {\n            quicksort(ids, dists, left, j - 1);\n            quicksort(ids, dists, i, right);\n        }\n    }\n}\n\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\nfunction defaultGetX(p) {\n    return p[0];\n}\nfunction defaultGetY(p) {\n    return p[1];\n}\n","const epsilon = 1e-6;\n\nexport default class Path {\n  constructor() {\n    this._x0 = this._y0 = // start of current subpath\n    this._x1 = this._y1 = null; // end of current subpath\n    this._ = \"\";\n  }\n  moveTo(x, y) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n  }\n  closePath() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  }\n  lineTo(x, y) {\n    this._ += `L${this._x1 = +x},${this._y1 = +y}`;\n  }\n  arc(x, y, r) {\n    x = +x, y = +y, r = +r;\n    const x0 = x + r;\n    const y0 = y;\n    if (r \u003c 0) throw new Error(\"negative radius\");\n    if (this._x1 === null) this._ += `M${x0},${y0}`;\n    else if (Math.abs(this._x1 - x0) \u003e epsilon || Math.abs(this._y1 - y0) \u003e epsilon) this._ += \"L\" + x0 + \",\" + y0;\n    if (!r) return;\n    this._ += `A${r},${r},0,1,1,${x - r},${y}A${r},${r},0,1,1,${this._x1 = x0},${this._y1 = y0}`;\n  }\n  rect(x, y, w, h) {\n    this._ += `M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${+w}v${+h}h${-w}Z`;\n  }\n  value() {\n    return this._ || null;\n  }\n}\n","export default class Polygon {\n  constructor() {\n    this._ = [];\n  }\n  moveTo(x, y) {\n    this._.push([x, y]);\n  }\n  closePath() {\n    this._.push(this._[0].slice());\n  }\n  lineTo(x, y) {\n    this._.push([x, y]);\n  }\n  value() {\n    return this._.length ? this._ : null;\n  }\n}\n","import Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\n\nexport default class Voronoi {\n  constructor(delaunay, [xmin, ymin, xmax, ymax] = [0, 0, 960, 500]) {\n    if (!((xmax = +xmax) \u003e= (xmin = +xmin)) || !((ymax = +ymax) \u003e= (ymin = +ymin))) throw new Error(\"invalid bounds\");\n    this.delaunay = delaunay;\n    this._circumcenters = new Float64Array(delaunay.points.length * 2);\n    this.vectors = new Float64Array(delaunay.points.length * 2);\n    this.xmax = xmax, this.xmin = xmin;\n    this.ymax = ymax, this.ymin = ymin;\n    this._init();\n  }\n  update() {\n    this.delaunay.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const {delaunay: {points, hull, triangles}, vectors} = this;\n    let bx, by; // lazily computed barycenter of the hull\n\n    // Compute circumcenters.\n    const circumcenters = this.circumcenters = this._circumcenters.subarray(0, triangles.length / 3 * 2);\n    for (let i = 0, j = 0, n = triangles.length, x, y; i \u003c n; i += 3, j += 2) {\n      const t1 = triangles[i] * 2;\n      const t2 = triangles[i + 1] * 2;\n      const t3 = triangles[i + 2] * 2;\n      const x1 = points[t1];\n      const y1 = points[t1 + 1];\n      const x2 = points[t2];\n      const y2 = points[t2 + 1];\n      const x3 = points[t3];\n      const y3 = points[t3 + 1];\n\n      const dx = x2 - x1;\n      const dy = y2 - y1;\n      const ex = x3 - x1;\n      const ey = y3 - y1;\n      const ab = (dx * ey - dy * ex) * 2;\n\n      if (Math.abs(ab) \u003c 1e-9) {\n        // For a degenerate triangle, the circumcenter is at the infinity, in a\n        // direction orthogonal to the halfedge and away from the “center” of\n        // the diagram \u003cbx, by\u003e, defined as the hull’s barycenter.\n        if (bx === undefined) {\n          bx = by = 0;\n          for (const i of hull) bx += points[i * 2], by += points[i * 2 + 1];\n          bx /= hull.length, by /= hull.length;\n        }\n        const a = 1e9 * Math.sign((bx - x1) * ey - (by - y1) * ex);\n        x = (x1 + x3) / 2 - a * ey;\n        y = (y1 + y3) / 2 + a * ex;\n      } else {\n        const d = 1 / ab;\n        const bl = dx * dx + dy * dy;\n        const cl = ex * ex + ey * ey;\n        x = x1 + (ey * bl - dy * cl) * d;\n        y = y1 + (dx * cl - ex * bl) * d;\n      }\n      circumcenters[j] = x;\n      circumcenters[j + 1] = y;\n    }\n\n    // Compute exterior cell rays.\n    let h = hull[hull.length - 1];\n    let p0, p1 = h * 4;\n    let x0, x1 = points[2 * h];\n    let y0, y1 = points[2 * h + 1];\n    vectors.fill(0);\n    for (let i = 0; i \u003c hull.length; ++i) {\n      h = hull[i];\n      p0 = p1, x0 = x1, y0 = y1;\n      p1 = h * 4, x1 = points[2 * h], y1 = points[2 * h + 1];\n      vectors[p0 + 2] = vectors[p1] = y0 - y1;\n      vectors[p0 + 3] = vectors[p1 + 1] = x1 - x0;\n    }\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {delaunay: {halfedges, inedges, hull}, circumcenters, vectors} = this;\n    if (hull.length \u003c= 1) return null;\n    for (let i = 0, n = halfedges.length; i \u003c n; ++i) {\n      const j = halfedges[i];\n      if (j \u003c i) continue;\n      const ti = Math.floor(i / 3) * 2;\n      const tj = Math.floor(j / 3) * 2;\n      const xi = circumcenters[ti];\n      const yi = circumcenters[ti + 1];\n      const xj = circumcenters[tj];\n      const yj = circumcenters[tj + 1];\n      this._renderSegment(xi, yi, xj, yj, context);\n    }\n    let h0, h1 = hull[hull.length - 1];\n    for (let i = 0; i \u003c hull.length; ++i) {\n      h0 = h1, h1 = hull[i];\n      const t = Math.floor(inedges[h1] / 3) * 2;\n      const x = circumcenters[t];\n      const y = circumcenters[t + 1];\n      const v = h0 * 4;\n      const p = this._project(x, y, vectors[v + 2], vectors[v + 3]);\n      if (p) this._renderSegment(x, y, p[0], p[1], context);\n    }\n    return buffer \u0026\u0026 buffer.value();\n  }\n  renderBounds(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    context.rect(this.xmin, this.ymin, this.xmax - this.xmin, this.ymax - this.ymin);\n    return buffer \u0026\u0026 buffer.value();\n  }\n  renderCell(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const points = this._clip(i);\n    if (points === null || !points.length) return;\n    context.moveTo(points[0], points[1]);\n    let n = points.length;\n    while (points[0] === points[n-2] \u0026\u0026 points[1] === points[n-1] \u0026\u0026 n \u003e 1) n -= 2;\n    for (let i = 2; i \u003c n; i += 2) {\n      if (points[i] !== points[i-2] || points[i+1] !== points[i-1])\n        context.lineTo(points[i], points[i + 1]);\n    }\n    context.closePath();\n    return buffer \u0026\u0026 buffer.value();\n  }\n  *cellPolygons() {\n    const {delaunay: {points}} = this;\n    for (let i = 0, n = points.length / 2; i \u003c n; ++i) {\n      const cell = this.cellPolygon(i);\n      if (cell) cell.index = i, yield cell;\n    }\n  }\n  cellPolygon(i) {\n    const polygon = new Polygon;\n    this.renderCell(i, polygon);\n    return polygon.value();\n  }\n  _renderSegment(x0, y0, x1, y1, context) {\n    let S;\n    const c0 = this._regioncode(x0, y0);\n    const c1 = this._regioncode(x1, y1);\n    if (c0 === 0 \u0026\u0026 c1 === 0) {\n      context.moveTo(x0, y0);\n      context.lineTo(x1, y1);\n    } else if (S = this._clipSegment(x0, y0, x1, y1, c0, c1)) {\n      context.moveTo(S[0], S[1]);\n      context.lineTo(S[2], S[3]);\n    }\n  }\n  contains(i, x, y) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return false;\n    return this.delaunay._step(i, x, y) === i;\n  }\n  *neighbors(i) {\n    const ci = this._clip(i);\n    if (ci) for (const j of this.delaunay.neighbors(i)) {\n      const cj = this._clip(j);\n      // find the common edge\n      if (cj) loop: for (let ai = 0, li = ci.length; ai \u003c li; ai += 2) {\n        for (let aj = 0, lj = cj.length; aj \u003c lj; aj += 2) {\n          if (ci[ai] === cj[aj]\n              \u0026\u0026 ci[ai + 1] === cj[aj + 1]\n              \u0026\u0026 ci[(ai + 2) % li] === cj[(aj + lj - 2) % lj]\n              \u0026\u0026 ci[(ai + 3) % li] === cj[(aj + lj - 1) % lj]) {\n            yield j;\n            break loop;\n          }\n        }\n      }\n    }\n  }\n  _cell(i) {\n    const {circumcenters, delaunay: {inedges, halfedges, triangles}} = this;\n    const e0 = inedges[i];\n    if (e0 === -1) return null; // coincident point\n    const points = [];\n    let e = e0;\n    do {\n      const t = Math.floor(e / 3);\n      points.push(circumcenters[t * 2], circumcenters[t * 2 + 1]);\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n    } while (e !== e0 \u0026\u0026 e !== -1);\n    return points;\n  }\n  _clip(i) {\n    // degenerate case (1 valid point: return the box)\n    if (i === 0 \u0026\u0026 this.delaunay.hull.length === 1) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    const points = this._cell(i);\n    if (points === null) return null;\n    const {vectors: V} = this;\n    const v = i * 4;\n    return this._simplify(V[v] || V[v + 1]\n        ? this._clipInfinite(i, points, V[v], V[v + 1], V[v + 2], V[v + 3])\n        : this._clipFinite(i, points));\n  }\n  _clipFinite(i, points) {\n    const n = points.length;\n    let P = null;\n    let x0, y0, x1 = points[n - 2], y1 = points[n - 1];\n    let c0, c1 = this._regioncode(x1, y1);\n    let e0, e1 = 0;\n    for (let j = 0; j \u003c n; j += 2) {\n      x0 = x1, y0 = y1, x1 = points[j], y1 = points[j + 1];\n      c0 = c1, c1 = this._regioncode(x1, y1);\n      if (c0 === 0 \u0026\u0026 c1 === 0) {\n        e0 = e1, e1 = 0;\n        if (P) P.push(x1, y1);\n        else P = [x1, y1];\n      } else {\n        let S, sx0, sy0, sx1, sy1;\n        if (c0 === 0) {\n          if ((S = this._clipSegment(x0, y0, x1, y1, c0, c1)) === null) continue;\n          [sx0, sy0, sx1, sy1] = S;\n        } else {\n          if ((S = this._clipSegment(x1, y1, x0, y0, c1, c0)) === null) continue;\n          [sx1, sy1, sx0, sy0] = S;\n          e0 = e1, e1 = this._edgecode(sx0, sy0);\n          if (e0 \u0026\u0026 e1) this._edge(i, e0, e1, P, P.length);\n          if (P) P.push(sx0, sy0);\n          else P = [sx0, sy0];\n        }\n        e0 = e1, e1 = this._edgecode(sx1, sy1);\n        if (e0 \u0026\u0026 e1) this._edge(i, e0, e1, P, P.length);\n        if (P) P.push(sx1, sy1);\n        else P = [sx1, sy1];\n      }\n    }\n    if (P) {\n      e0 = e1, e1 = this._edgecode(P[0], P[1]);\n      if (e0 \u0026\u0026 e1) this._edge(i, e0, e1, P, P.length);\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      return [this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax, this.xmin, this.ymin];\n    }\n    return P;\n  }\n  _clipSegment(x0, y0, x1, y1, c0, c1) {\n    // for more robustness, always consider the segment in the same order\n    const flip = c0 \u003c c1;\n    if (flip) [x0, y0, x1, y1, c0, c1] = [x1, y1, x0, y0, c1, c0];\n    while (true) {\n      if (c0 === 0 \u0026\u0026 c1 === 0) return flip ? [x1, y1, x0, y0] : [x0, y0, x1, y1];\n      if (c0 \u0026 c1) return null;\n      let x, y, c = c0 || c1;\n      if (c \u0026 0b1000) x = x0 + (x1 - x0) * (this.ymax - y0) / (y1 - y0), y = this.ymax;\n      else if (c \u0026 0b0100) x = x0 + (x1 - x0) * (this.ymin - y0) / (y1 - y0), y = this.ymin;\n      else if (c \u0026 0b0010) y = y0 + (y1 - y0) * (this.xmax - x0) / (x1 - x0), x = this.xmax;\n      else y = y0 + (y1 - y0) * (this.xmin - x0) / (x1 - x0), x = this.xmin;\n      if (c0) x0 = x, y0 = y, c0 = this._regioncode(x0, y0);\n      else x1 = x, y1 = y, c1 = this._regioncode(x1, y1);\n    }\n  }\n  _clipInfinite(i, points, vx0, vy0, vxn, vyn) {\n    let P = Array.from(points), p;\n    if (p = this._project(P[0], P[1], vx0, vy0)) P.unshift(p[0], p[1]);\n    if (p = this._project(P[P.length - 2], P[P.length - 1], vxn, vyn)) P.push(p[0], p[1]);\n    if (P = this._clipFinite(i, P)) {\n      for (let j = 0, n = P.length, c0, c1 = this._edgecode(P[n - 2], P[n - 1]); j \u003c n; j += 2) {\n        c0 = c1, c1 = this._edgecode(P[j], P[j + 1]);\n        if (c0 \u0026\u0026 c1) j = this._edge(i, c0, c1, P, j), n = P.length;\n      }\n    } else if (this.contains(i, (this.xmin + this.xmax) / 2, (this.ymin + this.ymax) / 2)) {\n      P = [this.xmin, this.ymin, this.xmax, this.ymin, this.xmax, this.ymax, this.xmin, this.ymax];\n    }\n    return P;\n  }\n  _edge(i, e0, e1, P, j) {\n    while (e0 !== e1) {\n      let x, y;\n      switch (e0) {\n        case 0b0101: e0 = 0b0100; continue; // top-left\n        case 0b0100: e0 = 0b0110, x = this.xmax, y = this.ymin; break; // top\n        case 0b0110: e0 = 0b0010; continue; // top-right\n        case 0b0010: e0 = 0b1010, x = this.xmax, y = this.ymax; break; // right\n        case 0b1010: e0 = 0b1000; continue; // bottom-right\n        case 0b1000: e0 = 0b1001, x = this.xmin, y = this.ymax; break; // bottom\n        case 0b1001: e0 = 0b0001; continue; // bottom-left\n        case 0b0001: e0 = 0b0101, x = this.xmin, y = this.ymin; break; // left\n      }\n      // Note: this implicitly checks for out of bounds: if P[j] or P[j+1] are\n      // undefined, the conditional statement will be executed.\n      if ((P[j] !== x || P[j + 1] !== y) \u0026\u0026 this.contains(i, x, y)) {\n        P.splice(j, 0, x, y), j += 2;\n      }\n    }\n    return j;\n  }\n  _project(x0, y0, vx, vy) {\n    let t = Infinity, c, x, y;\n    if (vy \u003c 0) { // top\n      if (y0 \u003c= this.ymin) return null;\n      if ((c = (this.ymin - y0) / vy) \u003c t) y = this.ymin, x = x0 + (t = c) * vx;\n    } else if (vy \u003e 0) { // bottom\n      if (y0 \u003e= this.ymax) return null;\n      if ((c = (this.ymax - y0) / vy) \u003c t) y = this.ymax, x = x0 + (t = c) * vx;\n    }\n    if (vx \u003e 0) { // right\n      if (x0 \u003e= this.xmax) return null;\n      if ((c = (this.xmax - x0) / vx) \u003c t) x = this.xmax, y = y0 + (t = c) * vy;\n    } else if (vx \u003c 0) { // left\n      if (x0 \u003c= this.xmin) return null;\n      if ((c = (this.xmin - x0) / vx) \u003c t) x = this.xmin, y = y0 + (t = c) * vy;\n    }\n    return [x, y];\n  }\n  _edgecode(x, y) {\n    return (x === this.xmin ? 0b0001\n        : x === this.xmax ? 0b0010 : 0b0000)\n        | (y === this.ymin ? 0b0100\n        : y === this.ymax ? 0b1000 : 0b0000);\n  }\n  _regioncode(x, y) {\n    return (x \u003c this.xmin ? 0b0001\n        : x \u003e this.xmax ? 0b0010 : 0b0000)\n        | (y \u003c this.ymin ? 0b0100\n        : y \u003e this.ymax ? 0b1000 : 0b0000);\n  }\n  _simplify(P) {\n    if (P \u0026\u0026 P.length \u003e 4) {\n      for (let i = 0; i \u003c P.length; i+= 2) {\n        const j = (i + 2) % P.length, k = (i + 4) % P.length;\n        if (P[i] === P[j] \u0026\u0026 P[j] === P[k] || P[i + 1] === P[j + 1] \u0026\u0026 P[j + 1] === P[k + 1]) {\n          P.splice(j, 2), i -= 2;\n        }\n      }\n      if (!P.length) P = null;\n    }\n    return P;\n  }\n}\n","import Delaunator from \"delaunator\";\nimport Path from \"./path.js\";\nimport Polygon from \"./polygon.js\";\nimport Voronoi from \"./voronoi.js\";\n\nconst tau = 2 * Math.PI, pow = Math.pow;\n\nfunction pointX(p) {\n  return p[0];\n}\n\nfunction pointY(p) {\n  return p[1];\n}\n\n// A triangulation is collinear if all its triangles have a non-null area\nfunction collinear(d) {\n  const {triangles, coords} = d;\n  for (let i = 0; i \u003c triangles.length; i += 3) {\n    const a = 2 * triangles[i],\n          b = 2 * triangles[i + 1],\n          c = 2 * triangles[i + 2],\n          cross = (coords[c] - coords[a]) * (coords[b + 1] - coords[a + 1])\n                - (coords[b] - coords[a]) * (coords[c + 1] - coords[a + 1]);\n    if (cross \u003e 1e-10) return false;\n  }\n  return true;\n}\n\nfunction jitter(x, y, r) {\n  return [x + Math.sin(x + y) * r, y + Math.cos(x - y) * r];\n}\n\nexport default class Delaunay {\n  static from(points, fx = pointX, fy = pointY, that) {\n    return new Delaunay(\"length\" in points\n        ? flatArray(points, fx, fy, that)\n        : Float64Array.from(flatIterable(points, fx, fy, that)));\n  }\n  constructor(points) {\n    this._delaunator = new Delaunator(points);\n    this.inedges = new Int32Array(points.length / 2);\n    this._hullIndex = new Int32Array(points.length / 2);\n    this.points = this._delaunator.coords;\n    this._init();\n  }\n  update() {\n    this._delaunator.update();\n    this._init();\n    return this;\n  }\n  _init() {\n    const d = this._delaunator, points = this.points;\n\n    // check for collinear\n    if (d.hull \u0026\u0026 d.hull.length \u003e 2 \u0026\u0026 collinear(d)) {\n      this.collinear = Int32Array.from({length: points.length/2}, (_,i) =\u003e i)\n        .sort((i, j) =\u003e points[2 * i] - points[2 * j] || points[2 * i + 1] - points[2 * j + 1]); // for exact neighbors\n      const e = this.collinear[0], f = this.collinear[this.collinear.length - 1],\n        bounds = [ points[2 * e], points[2 * e + 1], points[2 * f], points[2 * f + 1] ],\n        r = 1e-8 * Math.hypot(bounds[3] - bounds[1], bounds[2] - bounds[0]);\n      for (let i = 0, n = points.length / 2; i \u003c n; ++i) {\n        const p = jitter(points[2 * i], points[2 * i + 1], r);\n        points[2 * i] = p[0];\n        points[2 * i + 1] = p[1];\n      }\n      this._delaunator = new Delaunator(points);\n    } else {\n      delete this.collinear;\n    }\n\n    const halfedges = this.halfedges = this._delaunator.halfedges;\n    const hull = this.hull = this._delaunator.hull;\n    const triangles = this.triangles = this._delaunator.triangles;\n    const inedges = this.inedges.fill(-1);\n    const hullIndex = this._hullIndex.fill(-1);\n\n    // Compute an index from each point to an (arbitrary) incoming halfedge\n    // Used to give the first neighbor of each point; for this reason,\n    // on the hull we give priority to exterior halfedges\n    for (let e = 0, n = halfedges.length; e \u003c n; ++e) {\n      const p = triangles[e % 3 === 2 ? e - 2 : e + 1];\n      if (halfedges[e] === -1 || inedges[p] === -1) inedges[p] = e;\n    }\n    for (let i = 0, n = hull.length; i \u003c n; ++i) {\n      hullIndex[hull[i]] = i;\n    }\n\n    // degenerate case: 1 or 2 (distinct) points\n    if (hull.length \u003c= 2 \u0026\u0026 hull.length \u003e 0) {\n      this.triangles = new Int32Array(3).fill(-1);\n      this.halfedges = new Int32Array(3).fill(-1);\n      this.triangles[0] = hull[0];\n      inedges[hull[0]] = 1;\n      if (hull.length === 2) {\n        inedges[hull[1]] = 0;\n        this.triangles[1] = hull[1];\n        this.triangles[2] = hull[1];\n      }\n    }\n  }\n  voronoi(bounds) {\n    return new Voronoi(this, bounds);\n  }\n  *neighbors(i) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, collinear} = this;\n\n    // degenerate case with several collinear points\n    if (collinear) {\n      const l = collinear.indexOf(i);\n      if (l \u003e 0) yield collinear[l - 1];\n      if (l \u003c collinear.length - 1) yield collinear[l + 1];\n      return;\n    }\n\n    const e0 = inedges[i];\n    if (e0 === -1) return; // coincident point\n    let e = e0, p0 = -1;\n    do {\n      yield p0 = triangles[e];\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) return; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        const p = hull[(_hullIndex[i] + 1) % hull.length];\n        if (p !== p0) yield p;\n        return;\n      }\n    } while (e !== e0);\n  }\n  find(x, y, i = 0) {\n    if ((x = +x, x !== x) || (y = +y, y !== y)) return -1;\n    const i0 = i;\n    let c;\n    while ((c = this._step(i, x, y)) \u003e= 0 \u0026\u0026 c !== i \u0026\u0026 c !== i0) i = c;\n    return c;\n  }\n  _step(i, x, y) {\n    const {inedges, hull, _hullIndex, halfedges, triangles, points} = this;\n    if (inedges[i] === -1 || !points.length) return (i + 1) % (points.length \u003e\u003e 1);\n    let c = i;\n    let dc = pow(x - points[i * 2], 2) + pow(y - points[i * 2 + 1], 2);\n    const e0 = inedges[i];\n    let e = e0;\n    do {\n      let t = triangles[e];\n      const dt = pow(x - points[t * 2], 2) + pow(y - points[t * 2 + 1], 2);\n      if (dt \u003c dc) dc = dt, c = t;\n      e = e % 3 === 2 ? e - 2 : e + 1;\n      if (triangles[e] !== i) break; // bad triangulation\n      e = halfedges[e];\n      if (e === -1) {\n        e = hull[(_hullIndex[i] + 1) % hull.length];\n        if (e !== t) {\n          if (pow(x - points[e * 2], 2) + pow(y - points[e * 2 + 1], 2) \u003c dc) return e;\n        }\n        break;\n      }\n    } while (e !== e0);\n    return c;\n  }\n  render(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, halfedges, triangles} = this;\n    for (let i = 0, n = halfedges.length; i \u003c n; ++i) {\n      const j = halfedges[i];\n      if (j \u003c i) continue;\n      const ti = triangles[i] * 2;\n      const tj = triangles[j] * 2;\n      context.moveTo(points[ti], points[ti + 1]);\n      context.lineTo(points[tj], points[tj + 1]);\n    }\n    this.renderHull(context);\n    return buffer \u0026\u0026 buffer.value();\n  }\n  renderPoints(context, r) {\n    if (r === undefined \u0026\u0026 (!context || typeof context.moveTo !== \"function\")) r = context, context = null;\n    r = r == undefined ? 2 : +r;\n    const buffer = context == null ? context = new Path : undefined;\n    const {points} = this;\n    for (let i = 0, n = points.length; i \u003c n; i += 2) {\n      const x = points[i], y = points[i + 1];\n      context.moveTo(x + r, y);\n      context.arc(x, y, r, 0, tau);\n    }\n    return buffer \u0026\u0026 buffer.value();\n  }\n  renderHull(context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {hull, points} = this;\n    const h = hull[0] * 2, n = hull.length;\n    context.moveTo(points[h], points[h + 1]);\n    for (let i = 1; i \u003c n; ++i) {\n      const h = 2 * hull[i];\n      context.lineTo(points[h], points[h + 1]);\n    }\n    context.closePath();\n    return buffer \u0026\u0026 buffer.value();\n  }\n  hullPolygon() {\n    const polygon = new Polygon;\n    this.renderHull(polygon);\n    return polygon.value();\n  }\n  renderTriangle(i, context) {\n    const buffer = context == null ? context = new Path : undefined;\n    const {points, triangles} = this;\n    const t0 = triangles[i *= 3] * 2;\n    const t1 = triangles[i + 1] * 2;\n    const t2 = triangles[i + 2] * 2;\n    context.moveTo(points[t0], points[t0 + 1]);\n    context.lineTo(points[t1], points[t1 + 1]);\n    context.lineTo(points[t2], points[t2 + 1]);\n    context.closePath();\n    return buffer \u0026\u0026 buffer.value();\n  }\n  *trianglePolygons() {\n    const {triangles} = this;\n    for (let i = 0, n = triangles.length / 3; i \u003c n; ++i) {\n      yield this.trianglePolygon(i);\n    }\n  }\n  trianglePolygon(i) {\n    const polygon = new Polygon;\n    this.renderTriangle(i, polygon);\n    return polygon.value();\n  }\n}\n\nfunction flatArray(points, fx, fy, that) {\n  const n = points.length;\n  const array = new Float64Array(n * 2);\n  for (let i = 0; i \u003c n; ++i) {\n    const p = points[i];\n    array[i * 2] = fx.call(that, p, i, points);\n    array[i * 2 + 1] = fy.call(that, p, i, points);\n  }\n  return array;\n}\n\nfunction* flatIterable(points, fx, fy, that) {\n  let i = 0;\n  for (const p of points) {\n    yield fx.call(that, p, i, points);\n    yield fy.call(that, p, i, points);\n    ++i;\n  }\n}\n","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length \u003c width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year \u003c 0 ? \"-\" + pad(-year, 6)\n    : year \u003e 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N \u003c= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ \u003c N \u0026\u0026 text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) \u003e= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I \u003c N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL \u0026\u0026 t !== EOF) row.push(t), t = token();\n      if (f \u0026\u0026 (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n}\n","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n","export default function autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz \u0026\u0026 !!m[4] \u0026\u0026 !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nconst fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();","function responseBlob(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.blob();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseBlob);\n}\n","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 \u0026\u0026 typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 \u0026\u0026 typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n","export default function(input, init) {\n  return new Promise(function(resolve, reject) {\n    var image = new Image;\n    for (var key in init) image[key] = init[key];\n    image.onerror = reject;\n    image.onload = function() { resolve(image); };\n    image.src = input;\n  });\n}\n","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  if (response.status === 204 || response.status === 205) return;\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n","import text from \"./text.js\";\n\nfunction parser(type) {\n  return (input, init) =\u003e text(input, init)\n    .then(text =\u003e (new DOMParser).parseFromString(text, type));\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n","export default function(x, y) {\n  var nodes, strength = 1;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i \u003c n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = (sx / n - x) * strength, sy = (sy / n - y) * strength, i = 0; i \u003c n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  return force;\n}\n","export default function(d) {\n  const x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x \u003e= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y \u003e= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom \u003c\u003c 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp \u0026\u0026 y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x \u003e= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y \u003e= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom \u003c\u003c 1 | right) === (j = (yp \u003e= ym) \u003c\u003c 1 | (xp \u003e= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i \u003c n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x \u003c x0) x0 = x;\n    if (x \u003e x1) x1 = x;\n    if (y \u003c y0) y0 = y;\n    if (y \u003e y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 \u003e x1 || y0 \u003e y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i \u003c n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0 || 1,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 \u003e x || x \u003e= x1 || y0 \u003e y || y \u003e= y1) {\n      i = (y \u003c y0) \u003c\u003c 1 | (x \u003c x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root \u0026\u0026 this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) \u003e x3\n        || (y1 = q.y0) \u003e y3\n        || (x2 = q.x1) \u003c x0\n        || (y2 = q.y1) \u003c y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y \u003e= ym) \u003c\u003c 1 | (x \u003e= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 \u003c radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x \u003e= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y \u003e= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom \u003c\u003c 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) \u0026 3] || parent[(i + 2) \u0026 3] || parent[(i + 3) \u0026 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      \u0026\u0026 node === (parent[3] || parent[2] || parent[1] || parent[0])\n      \u0026\u0026 !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i \u003c n; ++i) this.remove(data[i]);\n  return this;\n}\n","export default function() {\n  return this._root;\n}\n","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) \u0026\u0026 node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i \u003c 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(random) {\n  return (random() - 0.5) * 1e-6;\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      random,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k \u003c iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i \u003c n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index \u003e node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l \u003c r * r) {\n            if (x === 0) x = jiggle(random), l += x * x;\n            if (y === 0) y = jiggle(random), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 \u003e xi + r || x1 \u003c xi - r || y0 \u003e yi + r || y1 \u003c yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i \u003c 4; ++i) {\n      if (quad[i] \u0026\u0026 quad[i].r \u003e quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i \u003c n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"node not found: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      random,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k \u003c iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i \u003c n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle(random);\n        y = target.y + target.vy - source.y - source.vy || jiggle(random);\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = new Map(nodes.map((d, i) =\u003e [id(d, i, nodes), d])),\n        link;\n\n    for (i = 0, count = new Array(n); i \u003c m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i \u003c m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i \u003c n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i \u003c n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () =\u003e (s = (a * s + c) % m) / m;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = new Map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\"),\n      random = lcg();\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha \u003c alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k \u003c iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.forEach(function(force) {\n        force(alpha);\n      });\n\n      for (i = 0; i \u003c n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i \u003c n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes, random);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    randomSource: function(_) {\n      return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n    },\n\n    force: function(name, _) {\n      return arguments.length \u003e 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i \u003c n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 \u003c radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length \u003e 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n","import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\nimport {x, y} from \"./simulation.js\";\n\nexport default function() {\n  var nodes,\n      node,\n      random,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i \u003c n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i \u003c n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i \u003c 4; ++i) {\n        if ((q = quad[i]) \u0026\u0026 (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 \u003c l) {\n      if (l \u003c distanceMax2) {\n        if (x === 0) x = jiggle(random), l += x * x;\n        if (y === 0) y = jiggle(random), l += y * y;\n        if (l \u003c distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l \u003e= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(random), l += x * x;\n      if (y === 0) y = jiggle(random), l += y * y;\n      if (l \u003c distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_nodes, _random) {\n    nodes = _nodes;\n    random = _random;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i \u003c n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i \u003c n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i \u003c n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i \u003c n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n","import constant from \"./constant.js\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i \u003c n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i \u003c n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n","export default function(x) {\n  return Math.abs(x = Math.round(x)) \u003e= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) \u003c 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length \u003e 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i \u003e 0 \u0026\u0026 g \u003e 0) {\n      if (length + g + 1 \u003e width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) \u003e width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([\u003c\u003e=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] \u0026\u0026 match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \"\u003e\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i \u003c n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 \u003e 0) i0 = 0; break;\n    }\n  }\n  return i0 \u003e 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i \u003e n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i \u003e 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent \u003c 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length \u003e exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": (x, p) =\u003e (x * 100).toFixed(p),\n  \"b\": (x) =\u003e Math.round(x).toString(2),\n  \"c\": (x) =\u003e x + \"\",\n  \"d\": formatDecimal,\n  \"e\": (x, p) =\u003e x.toExponential(p),\n  \"f\": (x, p) =\u003e x.toFixed(p),\n  \"g\": (x, p) =\u003e x.toPrecision(p),\n  \"o\": (x) =\u003e Math.round(x).toString(8),\n  \"p\": (x, p) =\u003e formatRounded(x * 100, p),\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": (x) =\u003e Math.round(x).toString(16).toUpperCase(),\n  \"x\": (x) =\u003e Math.round(x).toString(16)\n};\n","export default function(x) {\n  return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined \u0026\u0026 (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" \u0026\u0026 align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" \u0026\u0026 /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value \u003c 0 || 1 / value \u003c 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative \u0026\u0026 +value === 0 \u0026\u0026 sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative \u0026\u0026 sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i \u003c n) {\n            if (c = value.charCodeAt(i), 48 \u003e c || c \u003e 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma \u0026\u0026 !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length \u003c width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma \u0026\u0026 zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"\u003c\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length \u003e\u003e 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x \u003e 0 ? 1 : x \u003c 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x \u003e 1 ? 0 : x \u003c -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x \u003e 1 ? halfPi : x \u003c -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n","export default function noop() {}\n","function streamGeometry(geometry, stream) {\n  if (geometry \u0026\u0026 streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i \u003c n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i \u003c n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i \u003c n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i \u003c n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object \u0026\u0026 streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n","import {Adder} from \"d3-array\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = new Adder();\n\n// hello?\n\nvar areaSum = new Adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum = new Adder();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing \u003c 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda \u003e= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum = new Adder();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  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]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n","import {Adder} from \"d3-array\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum,\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum = new Adder();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum \u003c 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum \u003e epsilon) phi1 = 90;\n    else if (deltaSum \u003c -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi \u003c phi0) phi0 = phi;\n  if (phi \u003e phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta \u003e 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) \u003e 180;\n    if (antimeridian ^ (sign * lambda2 \u003c lambdai \u0026\u0026 lambdai \u003c sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii \u003e phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 \u003c lambdai \u0026\u0026 lambdai \u003c sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii \u003c phi0) phi0 = phii;\n    } else {\n      if (phi \u003c phi0) phi0 = phi;\n      if (phi \u003e phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda \u003c lambda2) {\n        if (angle(lambda0, lambda) \u003e angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) \u003e angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 \u003e= lambda0) {\n        if (lambda \u003c lambda0) lambda0 = lambda;\n        if (lambda \u003e lambda1) lambda1 = lambda;\n      } else {\n        if (lambda \u003e lambda2) {\n          if (angle(lambda0, lambda) \u003e angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) \u003e angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi \u003c phi0) phi0 = phi;\n  if (phi \u003e phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) \u003e 180 ? delta + (delta \u003e 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) \u003e epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) \u003c 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] \u003c= range[1] ? range[0] \u003c= x \u0026\u0026 x \u003c= range[1] : x \u003c range[0] || range[1] \u003c x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i \u003c n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) \u003e angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) \u003e angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i \u003c= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) \u003e deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n","import {Adder} from \"d3-array\";\nimport {asin, atan2, cos, degrees, epsilon, epsilon2, hypot, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(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);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = hypot(cx, cy, cz),\n      w = asin(m), // line weight = angle\n      v = m \u0026\u0026 -w / m; // area weight multiplier\n  X2.add(v * cx);\n  Y2.add(v * cy);\n  Z2.add(v * cz);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 = 0;\n  X2 = new Adder();\n  Y2 = new Adder();\n  Z2 = new Adder();\n  stream(object, centroidStream);\n\n  var x = +X2,\n      y = +Y2,\n      z = +Z2,\n      m = hypot(x, y, z);\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m \u003c epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 \u003c epsilon) x = X0, y = Y0, z = Z0;\n    m = hypot(x, y, z);\n    // If the feature still has an undefined ccentroid, then return.\n    if (m \u003c epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / m) * degrees];\n}\n","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert \u0026\u0026 b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x \u0026\u0026 a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  if (abs(lambda) \u003e pi) lambda -= Math.round(lambda / tau) * tau;\n  return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    lambda += deltaLambda;\n    if (abs(lambda) \u003e pi) lambda -= Math.round(lambda / tau) * tau;\n    return [lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length \u003e 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction \u003e 0 ? t0 \u003c t1 : t0 \u003e t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction \u003e 0 ? t \u003e t1 : t \u003c t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] \u003c 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(2),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length \u003e 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) \u003c epsilon \u0026\u0026 abs(a[1] - b[1]) \u003c epsilon;\n}\n","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next \u0026 previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) \u003c= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] \u0026\u0026 !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i \u003c n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i \u003c n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i \u003c n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i \u003e= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i \u003c n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n","import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n  return abs(point[0]) \u003c= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  var sum = new Adder();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i \u003c n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j \u003c m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta \u003e= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta \u003e pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 \u003e= lambda ^ lambda1 \u003e= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta \u003e= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi \u003e phiArc || phi === phiArc \u0026\u0026 (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta \u003e= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle \u003c -epsilon || angle \u003c epsilon \u0026\u0026 sum \u003c -epsilon2) ^ (winding \u0026 1);\n}\n","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean \u0026 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) \u003e 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i \u003c m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n \u003e 1 \u0026\u0026 clean \u0026 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length \u003e 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] \u003c 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] \u003c 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 \u003e 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) \u003c epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 \u003e 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 \u0026\u0026 delta \u003e= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) \u003c epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) \u003c epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) \u003e epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) \u003e epsilon) {\n    var lambda = from[0] \u003c to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 2 * radians,\n      smallRadius = cr \u003e 0,\n      notHemisphere = abs(cr) \u003e epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) \u003e cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda \u003c 0 ? pi : -pi), phi) : 0;\n        if (!point0 \u0026\u0026 (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere \u0026\u0026 point0 \u0026\u0026 smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c \u0026 c0) \u0026\u0026 (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v \u0026\u0026 (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 \u0026\u0026 v0) \u003c\u003c 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two \u0026\u0026 a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 \u003c 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 \u003c lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) \u003c epsilon,\n        meridian = polar || delta \u003c epsilon;\n\n    if (!polar \u0026\u0026 phi1 \u003c phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 \u003e 0 ^ q[1] \u003c (abs(q[0] - lambda0) \u003c epsilon ? phi0 : phi1)\n          : phi0 \u003c= q[1] \u0026\u0026 q[1] \u003c= phi1\n        : delta \u003e pi ^ (lambda0 \u003c= q[0] \u0026\u0026 q[0] \u003c= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda \u003c -r) code |= 1; // left\n    else if (lambda \u003e r) code |= 2; // right\n    if (phi \u003c -r) code |= 4; // below\n    else if (phi \u003e r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx \u0026\u0026 r \u003e 0) return;\n  r /= dx;\n  if (dx \u003c 0) {\n    if (r \u003c t0) return;\n    if (r \u003c t1) t1 = r;\n  } else if (dx \u003e 0) {\n    if (r \u003e t1) return;\n    if (r \u003e t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx \u0026\u0026 r \u003c 0) return;\n  r /= dx;\n  if (dx \u003c 0) {\n    if (r \u003e t1) return;\n    if (r \u003e t0) t0 = r;\n  } else if (dx \u003e 0) {\n    if (r \u003c t0) return;\n    if (r \u003c t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy \u0026\u0026 r \u003e 0) return;\n  r /= dy;\n  if (dy \u003c 0) {\n    if (r \u003c t0) return;\n    if (r \u003c t1) t1 = r;\n  } else if (dy \u003e 0) {\n    if (r \u003e t1) return;\n    if (r \u003e t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy \u0026\u0026 r \u003c 0) return;\n  r /= dy;\n  if (dy \u003c 0) {\n    if (r \u003e t1) return;\n    if (r \u003e t0) t0 = r;\n  } else if (dy \u003e 0) {\n    if (r \u003c t0) return;\n    if (r \u003c t1) t1 = r;\n  }\n\n  if (t0 \u003e 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 \u003c 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 \u003c= x \u0026\u0026 x \u003c= x1 \u0026\u0026 y0 \u003c= y \u0026\u0026 y \u003c= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) \u003c 0 ^ direction \u003e 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a \u003e 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) \u003c epsilon ? direction \u003e 0 ? 0 : 3\n        : abs(p[0] - x1) \u003c epsilon ? direction \u003e 0 ? 2 : 1\n        : abs(p[1] - y0) \u003c epsilon ? direction \u003e 0 ? 1 : 0\n        : direction \u003e 0 ? 3 : 2; // abs(p[1] - y1) \u003c epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i \u003c n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j \u003c m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 \u003c= y1) { if (b1 \u003e y1 \u0026\u0026 (b0 - a0) * (y1 - a1) \u003e (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 \u003c= y1 \u0026\u0026 (b0 - a0) * (y1 - a1) \u003c (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean \u0026\u0026 startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ \u0026\u0026 v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v \u0026\u0026 v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache \u0026\u0026 cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n","import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum = new Adder();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i \u003c n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i \u003c n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i \u003c n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry \u0026\u0026 containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i \u003c n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i \u003e 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab \u003e 0 \u0026\u0026\n        ao \u003c= ab \u0026\u0026\n        bo \u003c= ab \u0026\u0026\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) \u003c epsilon2 * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object \u0026\u0026 containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) \u003e epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) \u003e epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 \u003e X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 \u003e Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 \u003e x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 \u003e y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n","export default x =\u003e x;\n","import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n    areaRingSum = new Adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum = new Adder();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum = new Adder();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x \u003c x0) x0 = x;\n  if (x \u003e x1) x1 = x;\n  if (y \u003c y0) y0 = y;\n  if (y \u003e y1) y1 = y;\n}\n\nexport default boundsStream;\n","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n","import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum = new Adder();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n","// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n  constructor(digits) {\n    this._append = digits == null ? append : appendRound(digits);\n    this._radius = 4.5;\n    this._ = \"\";\n  }\n  pointRadius(_) {\n    this._radius = +_;\n    return this;\n  }\n  polygonStart() {\n    this._line = 0;\n  }\n  polygonEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line === 0) this._ += \"Z\";\n    this._point = NaN;\n  }\n  point(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._append`M${x},${y}`;\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._append`L${x},${y}`;\n        break;\n      }\n      default: {\n        this._append`M${x},${y}`;\n        if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n          const r = this._radius;\n          const s = this._;\n          this._ = \"\"; // stash the old string so we can cache the circle path fragment\n          this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n          cacheRadius = r;\n          cacheAppend = this._append;\n          cacheCircle = this._;\n          this._ = s;\n        }\n        this._ += cacheCircle;\n        break;\n      }\n    }\n  }\n  result() {\n    const result = this._;\n    this._ = \"\";\n    return result.length ? result : null;\n  }\n}\n\nfunction append(strings) {\n  let i = 1;\n  this._ += strings[0];\n  for (const j = strings.length; i \u003c j; ++i) {\n    this._ += arguments[i] + strings[i];\n  }\n}\n\nfunction appendRound(digits) {\n  const d = Math.floor(digits);\n  if (!(d \u003e= 0)) throw new RangeError(`invalid digits: ${digits}`);\n  if (d \u003e 15) return append;\n  if (d !== cacheDigits) {\n    const k = 10 ** d;\n    cacheDigits = d;\n    cacheAppend = function append(strings) {\n      let i = 1;\n      this._ += strings[0];\n      for (const j = strings.length; i \u003c j; ++i) {\n        this._ += Math.round(arguments[i] * k) / k + strings[i];\n      }\n    };\n  }\n  return cacheAppend;\n}\n","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  let digits = 3,\n      pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    if (!arguments.length) return projection;\n    projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n    return path;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  path.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) digits = null;\n    else {\n      const d = Math.floor(_);\n      if (!(d \u003e= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    if (context === null) contextStream = new PathString(digits);\n    return path;\n  };\n\n  return path.projection(projection).digits(digits).context(context);\n}\n","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent \u0026\u0026 projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 \u003e 4 * delta2 \u0026\u0026 depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) \u003c epsilon || abs(lambda0 - lambda1) \u003c epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 \u003e delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) \u003e 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 \u003c cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point \u0026\u0026 [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache \u0026\u0026 cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length \u003e 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx \u003c 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy \u003c 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert \u0026\u0026 invert;\n    return recenter();\n  };\n}\n","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) \u003c epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n \u003c 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i \u003c n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i \u003c n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i \u003c n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i \u003c n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i \u003c n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i \u003c n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y \u003e= 0.120 \u0026\u0026 y \u003c 0.234 \u0026\u0026 x \u003e= -0.425 \u0026\u0026 x \u003c -0.214 ? alaska\n        : y \u003e= 0.166 \u0026\u0026 y \u003c 0.234 \u0026\u0026 x \u003e= -0.214 \u0026\u0026 x \u003c -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache \u0026\u0026 cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n        if (k === Infinity) return [2, 0];\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z \u0026\u0026 y * sc / z)\n    ];\n  }\n}\n","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) \u0026\u0026 c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f \u003e 0) { if (y \u003c -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y \u003e halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n \u003c 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) \u003c epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n \u003c 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i \u003c iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) \u003c epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache \u0026\u0026 cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx \u003c 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy \u003c 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) \u003e epsilon \u0026\u0026 --i \u003e 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length \u003e 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x \u0026 y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x \u0026 y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children \u0026\u0026 children.length;\n  if (!i) sum = 1;\n  else while (--i \u003e= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], children, i, index = -1;\n  while (node = nodes.pop()) {\n    callback.call(that, node, ++index, this);\n    if (children = node.children) {\n      for (i = children.length - 1; i \u003e= 0; --i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  return this;\n}\n","export default function(callback, that) {\n  var node = this, nodes = [node], next = [], children, i, n, index = -1;\n  while (node = nodes.pop()) {\n    next.push(node);\n    if (children = node.children) {\n      for (i = 0, n = children.length; i \u003c n; ++i) {\n        nodes.push(children[i]);\n      }\n    }\n  }\n  while (node = next.pop()) {\n    callback.call(that, node, ++index, this);\n  }\n  return this;\n}\n","export default function(callback, that) {\n  let index = -1;\n  for (const node of this) {\n    if (callback.call(that, node, ++index, this)) {\n      return node;\n    }\n  }\n}\n","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children \u0026\u0026 children.length;\n    while (--i \u003e= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n","export default function() {\n  return Array.from(this);\n}\n","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n","export default function*() {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      yield node;\n      if (children = node.children) {\n        for (i = 0, n = children.length; i \u003c n; ++i) {\n          next.push(children[i]);\n        }\n      }\n    }\n  } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n  if (data instanceof Map) {\n    data = [undefined, data];\n    if (children === undefined) children = mapChildren;\n  } else if (children === undefined) {\n    children = objectChildren;\n  }\n\n  var root = new Node(data),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if ((childs = children(node.data)) \u0026\u0026 (n = (childs = Array.from(childs)).length)) {\n      node.children = childs;\n      for (i = n - 1; i \u003e= 0; --i) {\n        nodes.push(child = childs[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n  return d.children;\n}\n\nfunction mapChildren(d) {\n  return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n  if (node.data.value !== undefined) node.value = node.data.value;\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) \u0026\u0026 (node.height \u003c ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  find: node_find,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy,\n  [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n  let s = 1;\n  return () =\u003e (s = (a * s + c) % m) / m;\n}\n","export default function(x) {\n  return typeof x === \"object\" \u0026\u0026 \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n\nexport function shuffle(array, random) {\n  let m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n","import {shuffle} from \"../array.js\";\nimport lcg from \"../lcg.js\";\n\nexport default function(circles) {\n  return packEncloseRandom(circles, lcg());\n}\n\nexport function packEncloseRandom(circles, random) {\n  var i = 0, n = (circles = shuffle(Array.from(circles), random)).length, B = [], p, e;\n\n  while (i \u003c n) {\n    p = circles[i];\n    if (e \u0026\u0026 enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i \u003c B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        \u0026\u0026 enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i \u003c B.length - 1; ++i) {\n    for (j = i + 1; j \u003c B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          \u0026\u0026 enclosesNot(encloseBasis2(B[i], p), B[j])\n          \u0026\u0026 enclosesNot(encloseBasis2(B[j], p), B[i])\n          \u0026\u0026 enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr \u003c 0 || dr * dr \u003c dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + Math.max(a.r, b.r, 1) * 1e-9, dx = b.x - a.x, dy = b.y - a.y;\n  return dr \u003e 0 \u0026\u0026 dr * dr \u003e dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i \u003c B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(Math.abs(A) \u003e 1e-6 ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n","import array from \"../array.js\";\nimport lcg from \"../lcg.js\";\nimport {packEncloseRandom} from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 \u003e b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr \u003e 0 \u0026\u0026 dr * dr \u003e dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packSiblingsRandom(circles, random) {\n  if (!(n = (circles = array(circles)).length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n \u003e 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n \u003e 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i \u003c n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj \u003c= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) \u003c aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = packEncloseRandom(a, random);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i \u003c n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packSiblingsRandom(circles, lcg());\n  return circles;\n}\n","import {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\nimport lcg from \"../lcg.js\";\nimport {packSiblingsRandom} from \"./siblings.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    const random = lcg();\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildrenRandom(padding, 0.5, random))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildrenRandom(constantZero, 1, random))\n          .eachAfter(packChildrenRandom(padding, root.r / Math.min(dx, dy), random))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildrenRandom(padding, k, random) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i \u003c n; ++i) children[i].r += r;\n      e = packSiblingsRandom(children, random);\n      if (r) for (i = 0; i \u003c n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value \u0026\u0026 (x1 - x0) / parent.value;\n\n  while (++i \u003c n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 \u003c x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 \u003c y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n    ambiguous = {},\n    imputed = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId,\n      path;\n\n  function stratify(data) {\n    var nodes = Array.from(data),\n        currentId = id,\n        currentParentId = parentId,\n        n,\n        d,\n        i,\n        root,\n        parent,\n        node,\n        nodeId,\n        nodeKey,\n        nodeByKey = new Map;\n\n    if (path != null) {\n      const I = nodes.map((d, i) =\u003e normalize(path(d, i, data)));\n      const P = I.map(parentof);\n      const S = new Set(I).add(\"\");\n      for (const i of P) {\n        if (!S.has(i)) {\n          S.add(i);\n          I.push(i);\n          P.push(parentof(i));\n          nodes.push(imputed);\n        }\n      }\n      currentId = (_, i) =\u003e I[i];\n      currentParentId = (_, i) =\u003e P[i];\n    }\n\n    for (i = 0, n = nodes.length; i \u003c n; ++i) {\n      d = nodes[i], node = nodes[i] = new Node(d);\n      if ((nodeId = currentId(d, i, data)) != null \u0026\u0026 (nodeId += \"\")) {\n        nodeKey = node.id = nodeId;\n        nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n      }\n      if ((nodeId = currentParentId(d, i, data)) != null \u0026\u0026 (nodeId += \"\")) {\n        node.parent = nodeId;\n      }\n    }\n\n    for (i = 0; i \u003c n; ++i) {\n      node = nodes[i];\n      if (nodeId = node.parent) {\n        parent = nodeByKey.get(nodeId);\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      } else {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n\n    // When imputing internal nodes, only introduce roots if needed.\n    // Then replace the imputed marker data with null.\n    if (path != null) {\n      while (root.data === imputed \u0026\u0026 root.children.length === 1) {\n        root = root.children[0], --n;\n      }\n      for (let i = nodes.length - 1; i \u003e= 0; --i) {\n        node = nodes[i];\n        if (node.data !== imputed) break;\n        node.data = null;\n      }\n    }\n\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n \u003e 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = optional(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = optional(x), stratify) : parentId;\n  };\n\n  stratify.path = function(x) {\n    return arguments.length ? (path = optional(x), stratify) : path;\n  };\n\n  return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n  path = `${path}`;\n  let i = path.length;\n  if (slash(path, i - 1) \u0026\u0026 !slash(path, i - 2)) path = path.slice(0, -1);\n  return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n  let i = path.length;\n  if (i \u003c 2) return \"\";\n  while (--i \u003e 1) if (slash(path, i)) break;\n  return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n  if (path[i] === \"/\") {\n    let k = 0;\n    while (i \u003e 0 \u0026\u0026 path[--i] === \"\\\\\") ++k;\n    if ((k \u0026 1) === 0) return true;\n  }\n  return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i \u003e= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i \u003e= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x \u003c left.x) left = node;\n        if (node.x \u003e right.x) right = node;\n        if (node.depth \u003e bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim \u0026\u0026 vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift \u003e 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim \u0026\u0026 !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip \u0026\u0026 !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value \u0026\u0026 (y1 - y0) / parent.value;\n\n  while (++i \u003c n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 \u003c n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue \u0026\u0026 i1 \u003c n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 \u003c n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue \u003c minValue) minValue = nodeValue;\n      if (nodeValue \u003e maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio \u003e minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx \u003c dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) \u003e 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 \u003c x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 \u003c y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 \u003c x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 \u003c y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i \u003c n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i \u003e= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k \u003c hi) {\n      var mid = k + hi \u003e\u003e\u003e 1;\n      if (sums[mid] \u003c valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) \u003c (sums[k] - valueTarget) \u0026\u0026 i + 1 \u003c k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) \u003e (y1 - y0)) {\n      var xk = value ? (x0 * valueRight + x1 * valueLeft) / value : x1;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = value ? (y0 * valueRight + y1 * valueLeft) / value : y1;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth \u0026 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) \u0026\u0026 (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j \u003c m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i \u003c n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += (y1 - y0) * row.value / value : y1);\n        else treemapSlice(row, x0, y0, value ? x0 += (x1 - x0) * row.value / value : x1, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) \u003e 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i \u003c n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i \u003c n) {\n    a = b;\n    b = polygon[i];\n    k += c = a[0] * b[1] - b[0] * a[1];\n    x += (a[0] + b[0]) * c;\n    y += (a[1] + b[1]) * c;\n  }\n\n  return k *= 3, [x / k, y / k];\n}\n","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length \u003e= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  const n = points.length,\n      indexes = [0, 1];\n  let size = 2, i;\n\n  for (i = 2; i \u003c n; ++i) {\n    while (size \u003e 1 \u0026\u0026 cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) \u003c= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n  if ((n = points.length) \u003c 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i \u003c n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i \u003c n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i \u003e= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i \u003c lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n","export default function(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i \u003c n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 \u003e y) !== (y0 \u003e y)) \u0026\u0026 (x \u003c (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i \u003c n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.hypot(xa, ya);\n  }\n\n  return perimeter;\n}\n","export default Math.random;\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomInt(source) {\n  function randomInt(min, max) {\n    if (arguments.length \u003c 2) max = min, min = 0;\n    min = Math.floor(min);\n    max = Math.floor(max) - min;\n    return function() {\n      return Math.floor(source() * max + min);\n    };\n  }\n\n  randomInt.source = sourceRandomInt;\n\n  return randomInt;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r \u003e 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomLogNormal(source) {\n  var N = normal.source(source);\n\n  function randomLogNormal() {\n    var randomNormal = N.apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    if ((n = +n) \u003c= 0) return () =\u003e 0;\n    return function() {\n      for (var sum = 0, i = n; i \u003e 1; --i) sum += source();\n      return sum + i * source();\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport irwinHall from \"./irwinHall.js\";\n\nexport default (function sourceRandomBates(source) {\n  var I = irwinHall.source(source);\n\n  function randomBates(n) {\n    // use limiting distribution at n === 0\n    if ((n = +n) === 0) return source;\n    var randomIrwinHall = I(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log1p(-source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomPareto(source) {\n  function randomPareto(alpha) {\n    if ((alpha = +alpha) \u003c 0) throw new RangeError(\"invalid alpha\");\n    alpha = 1 / -alpha;\n    return function() {\n      return Math.pow(1 - source(), alpha);\n    };\n  }\n\n  randomPareto.source = sourceRandomPareto;\n\n  return randomPareto;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomBernoulli(source) {\n  function randomBernoulli(p) {\n    if ((p = +p) \u003c 0 || p \u003e 1) throw new RangeError(\"invalid p\");\n    return function() {\n      return Math.floor(source() + p);\n    };\n  }\n\n  randomBernoulli.source = sourceRandomBernoulli;\n\n  return randomBernoulli;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomGeometric(source) {\n  function randomGeometric(p) {\n    if ((p = +p) \u003c 0 || p \u003e 1) throw new RangeError(\"invalid p\");\n    if (p === 0) return () =\u003e Infinity;\n    if (p === 1) return () =\u003e 1;\n    p = Math.log1p(-p);\n    return function() {\n      return 1 + Math.floor(Math.log1p(-source()) / p);\n    };\n  }\n\n  randomGeometric.source = sourceRandomGeometric;\n\n  return randomGeometric;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport normal from \"./normal.js\";\n\nexport default (function sourceRandomGamma(source) {\n  var randomNormal = normal.source(source)();\n\n  function randomGamma(k, theta) {\n    if ((k = +k) \u003c 0) throw new RangeError(\"invalid k\");\n    // degenerate distribution if k === 0\n    if (k === 0) return () =\u003e 0;\n    theta = theta == null ? 1 : +theta;\n    // exponential distribution if k === 1\n    if (k === 1) return () =\u003e -Math.log1p(-source()) * theta;\n\n    var d = (k \u003c 1 ? k + 1 : k) - 1 / 3,\n        c = 1 / (3 * Math.sqrt(d)),\n        multiplier = k \u003c 1 ? () =\u003e Math.pow(source(), 1 / k) : () =\u003e 1;\n    return function() {\n      do {\n        do {\n          var x = randomNormal(),\n              v = 1 + c * x;\n        } while (v \u003c= 0);\n        v *= v * v;\n        var u = 1 - source();\n      } while (u \u003e= 1 - 0.0331 * x * x * x * x \u0026\u0026 Math.log(u) \u003e= 0.5 * x * x + d * (1 - v + Math.log(v)));\n      return d * v * multiplier() * theta;\n    };\n  }\n\n  randomGamma.source = sourceRandomGamma;\n\n  return randomGamma;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomBeta(source) {\n  var G = gamma.source(source);\n\n  function randomBeta(alpha, beta) {\n    var X = G(alpha),\n        Y = G(beta);\n    return function() {\n      var x = X();\n      return x === 0 ? 0 : x / (x + Y());\n    };\n  }\n\n  randomBeta.source = sourceRandomBeta;\n\n  return randomBeta;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport beta from \"./beta.js\";\nimport geometric from \"./geometric.js\";\n\nexport default (function sourceRandomBinomial(source) {\n  var G = geometric.source(source),\n      B = beta.source(source);\n\n  function randomBinomial(n, p) {\n    n = +n;\n    if ((p = +p) \u003e= 1) return () =\u003e n;\n    if (p \u003c= 0) return () =\u003e 0;\n    return function() {\n      var acc = 0, nn = n, pp = p;\n      while (nn * pp \u003e 16 \u0026\u0026 nn * (1 - pp) \u003e 16) {\n        var i = Math.floor((nn + 1) * pp),\n            y = B(i, nn - i + 1)();\n        if (y \u003c= pp) {\n          acc += i;\n          nn -= i;\n          pp = (pp - y) / (1 - y);\n        } else {\n          nn = i - 1;\n          pp /= y;\n        }\n      }\n      var sign = pp \u003c 0.5,\n          pFinal = sign ? pp : 1 - pp,\n          g = G(pFinal);\n      for (var s = g(), k = 0; s \u003c= nn; ++k) s += g();\n      return acc + (sign ? k : nn - k);\n    };\n  }\n\n  randomBinomial.source = sourceRandomBinomial;\n\n  return randomBinomial;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomWeibull(source) {\n  function randomWeibull(k, a, b) {\n    var outerFunc;\n    if ((k = +k) === 0) {\n      outerFunc = x =\u003e -Math.log(x);\n    } else {\n      k = 1 / k;\n      outerFunc = x =\u003e Math.pow(x, k);\n    }\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * outerFunc(-Math.log1p(-source()));\n    };\n  }\n\n  randomWeibull.source = sourceRandomWeibull;\n\n  return randomWeibull;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomCauchy(source) {\n  function randomCauchy(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      return a + b * Math.tan(Math.PI * source());\n    };\n  }\n\n  randomCauchy.source = sourceRandomCauchy;\n\n  return randomCauchy;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\n\nexport default (function sourceRandomLogistic(source) {\n  function randomLogistic(a, b) {\n    a = a == null ? 0 : +a;\n    b = b == null ? 1 : +b;\n    return function() {\n      var u = source();\n      return a + b * Math.log(u / (1 - u));\n    };\n  }\n\n  randomLogistic.source = sourceRandomLogistic;\n\n  return randomLogistic;\n})(defaultSource);\n","import defaultSource from \"./defaultSource.js\";\nimport binomial from \"./binomial.js\";\nimport gamma from \"./gamma.js\";\n\nexport default (function sourceRandomPoisson(source) {\n  var G = gamma.source(source),\n      B = binomial.source(source);\n\n  function randomPoisson(lambda) {\n    return function() {\n      var acc = 0, l = lambda;\n      while (l \u003e 16) {\n        var n = Math.floor(0.875 * l),\n            t = G(n)();\n        if (t \u003e l) return acc + B(n - 1, l / t)();\n        acc += n;\n        l -= t;\n      }\n      for (var s = -Math.log1p(-source()), k = 0; s \u003c= l; ++k) s -= Math.log1p(-source());\n      return acc + k;\n    };\n  }\n\n  randomPoisson.source = sourceRandomPoisson;\n\n  return randomPoisson;\n})(defaultSource);\n","// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst mul = 0x19660D;\nconst inc = 0x3C6EF35F;\nconst eps = 1 / 0x100000000;\n\nexport default function lcg(seed = Math.random()) {\n  let state = (0 \u003c= seed \u0026\u0026 seed \u003c 1 ? seed / eps : Math.abs(seed)) | 0;\n  return () =\u003e (state = mul * state + inc | 0, eps * (state \u003e\u003e\u003e 0));\n}\n","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: {\n      if (typeof domain === \"function\") this.interpolator(domain);\n      else this.range(domain);\n      break;\n    }\n    default: {\n      this.domain(domain);\n      if (typeof interpolator === \"function\") this.interpolator(interpolator);\n      else this.range(interpolator);\n      break;\n    }\n  }\n  return this;\n}\n","import {InternMap} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n  var index = new InternMap(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    let i = index.get(d);\n    if (i === undefined) {\n      if (unknown !== implicit) return unknown;\n      index.set(d, i = domain.push(d) - 1);\n    }\n    return range[i % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = new InternMap();\n    for (const value of _) {\n      if (index.has(value)) continue;\n      index.set(value, domain.push(value) - 1);\n    }\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      r0 = 0,\n      r1 = 1,\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = r1 \u003c r0,\n        start = reverse ? r1 : r0,\n        stop = reverse ? r0 : r1;\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n  };\n\n  scale.rangeRound = function(_) {\n    return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), [r0, r1])\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","export default function constants(x) {\n  return function() {\n    return x;\n  };\n}\n","export default function number(x) {\n  return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n  var t;\n  if (a \u003e b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 \u003c d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] \u003c domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i \u003c j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    var n = Math.min(domain.length, range.length);\n    if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n    piecewise = n \u003e 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = Array.from(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous() {\n  return transformer()(identity, identity);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null \u0026\u0026 !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null \u0026\u0026 !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null \u0026\u0026 !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain();\n    var i0 = 0;\n    var i1 = d.length - 1;\n    var start = d[i0];\n    var stop = d[i1];\n    var prestep;\n    var step;\n    var maxIter = 10;\n\n    if (stop \u003c start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n    \n    while (maxIter-- \u003e 0) {\n      step = tickIncrement(start, stop, count);\n      if (step === prestep) {\n        d[i0] = start\n        d[i1] = stop\n        return domain(d);\n      } else if (step \u003e 0) {\n        start = Math.floor(start / step) * step;\n        stop = Math.ceil(stop / step) * step;\n      } else if (step \u003c 0) {\n        start = Math.ceil(start * step) / step;\n        stop = Math.floor(stop * step) / step;\n      } else {\n        break;\n      }\n      prestep = step;\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous();\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = Array.from(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? Array.from(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n","export default function nice(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 \u003c x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n","import {ticks} from \"d3-array\";\nimport {format, formatSpecifier} from \"d3-format\";\nimport nice from \"./nice.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x \u003c 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : x =\u003e Math.pow(base, x);\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 \u0026\u0026 Math.log10\n      || base === 2 \u0026\u0026 Math.log2\n      || (base = Math.log(base), x =\u003e Math.log(x) / base);\n}\n\nfunction reflect(f) {\n  return (x, k) =\u003e -f(-x, k);\n}\n\nexport function loggish(transform) {\n  const scale = transform(transformLog, transformExp);\n  const domain = scale.domain;\n  let base = 10;\n  let logs;\n  let pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] \u003c 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = count =\u003e {\n    const d = domain();\n    let u = d[0];\n    let v = d[d.length - 1];\n    const r = v \u003c u;\n\n    if (r) ([u, v] = [v, u]);\n\n    let i = logs(u);\n    let j = logs(v);\n    let k;\n    let t;\n    const n = count == null ? 10 : +count;\n    let z = [];\n\n    if (!(base % 1) \u0026\u0026 j - i \u003c n) {\n      i = Math.floor(i), j = Math.ceil(j);\n      if (u \u003e 0) for (; i \u003c= j; ++i) {\n        for (k = 1; k \u003c base; ++k) {\n          t = i \u003c 0 ? k / pows(-i) : k * pows(i);\n          if (t \u003c u) continue;\n          if (t \u003e v) break;\n          z.push(t);\n        }\n      } else for (; i \u003c= j; ++i) {\n        for (k = base - 1; k \u003e= 1; --k) {\n          t = i \u003e 0 ? k / pows(-i) : k * pows(i);\n          if (t \u003c u) continue;\n          if (t \u003e v) break;\n          z.push(t);\n        }\n      }\n      if (z.length * 2 \u003c n) z = ticks(u, v, n);\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = (count, specifier) =\u003e {\n    if (count == null) count = 10;\n    if (specifier == null) specifier = base === 10 ? \"s\" : \",\";\n    if (typeof specifier !== \"function\") {\n      if (!(base % 1) \u0026\u0026 (specifier = formatSpecifier(specifier)).precision == null) specifier.trim = true;\n      specifier = format(specifier);\n    }\n    if (count === Infinity) return specifier;\n    const k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return d =\u003e {\n      let i = d / pows(Math.round(logs(d)));\n      if (i * base \u003c base - 0.5) i *= base;\n      return i \u003c= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = () =\u003e {\n    return domain(nice(domain(), {\n      floor: x =\u003e pows(Math.floor(logs(x))),\n      ceil: x =\u003e pows(Math.ceil(logs(x)))\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  const scale = loggish(transformer()).domain([1, 10]);\n  scale.copy = () =\u003e copy(scale, log()).base(scale.base());\n  initRange.apply(scale, arguments);\n  return scale;\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {linearish} from \"./linear.js\";\nimport {copy, identity, transformer} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x \u003c 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x \u003c 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x \u003c 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n","import continuous from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport number from \"./number.js\";\n\nfunction square(x) {\n  return Math.sign(x) * x * x;\n}\n\nfunction unsquare(x) {\n  return Math.sign(x) * Math.sqrt(Math.abs(x));\n}\n\nexport default function radial() {\n  var squared = continuous(),\n      range = [0, 1],\n      round = false,\n      unknown;\n\n  function scale(x) {\n    var y = unsquare(squared(x));\n    return isNaN(y) ? unknown : round ? Math.round(y) : y;\n  }\n\n  scale.invert = function(y) {\n    return squared.invert(square(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (squared.domain(_), scale) : squared.domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (squared.range((range = Array.from(_, number)).map(square)), scale) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return scale.range(_).round(true);\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, scale) : round;\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (squared.clamp(_), scale) : squared.clamp();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return radial(squared.domain(), range)\n        .round(round)\n        .clamp(squared.clamp())\n        .unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i \u003c n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i \u003c 0 ? [NaN, NaN] : [\n      i \u003e 0 ? thresholds[i - 1] : domain[0],\n      i \u003c thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null \u0026\u0026 !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {linearish} from \"./linear.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x != null \u0026\u0026 x \u003c= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i \u003c n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, x0 = +x0, x1 = +x1, rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = Array.from(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i \u003c 0 ? [NaN, NaN]\n        : i \u003c 1 ? [x0, domain[0]]\n        : i \u003e= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n","import {bisect} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x != null \u0026\u0026 x \u003c= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = Array.from(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n","const t0 = new Date, t1 = new Date;\n\nexport function timeInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = (date) =\u003e {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = (date) =\u003e {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = (date) =\u003e {\n    const d0 = interval(date), d1 = interval.ceil(date);\n    return date - d0 \u003c d1 - date ? d0 : d1;\n  };\n\n  interval.offset = (date, step) =\u003e {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = (start, stop, step) =\u003e {\n    const range = [];\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start \u003c stop) || !(step \u003e 0)) return range; // also handles Invalid Date\n    let previous;\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous \u003c start \u0026\u0026 start \u003c stop);\n    return range;\n  };\n\n  interval.filter = (test) =\u003e {\n    return timeInterval((date) =\u003e {\n      if (date \u003e= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, (date, step) =\u003e {\n      if (date \u003e= date) {\n        if (step \u003c 0) while (++step \u003c= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step \u003e= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = (start, end) =\u003e {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = (step) =\u003e {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step \u003e 0) ? null\n          : !(step \u003e 1) ? interval\n          : interval.filter(field\n              ? (d) =\u003e field(d) % step === 0\n              : (d) =\u003e interval.count(0, d) % step === 0);\n    };\n  }\n\n  return interval;\n}\n","import {timeInterval} from \"./interval.js\";\n\nexport const millisecond = timeInterval(() =\u003e {\n  // noop\n}, (date, step) =\u003e {\n  date.setTime(+date + step);\n}, (start, end) =\u003e {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = (k) =\u003e {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k \u003e 0)) return null;\n  if (!(k \u003e 1)) return millisecond;\n  return timeInterval((date) =\u003e {\n    date.setTime(Math.floor(date / k) * k);\n  }, (date, step) =\u003e {\n    date.setTime(+date + step * k);\n  }, (start, end) =\u003e {\n    return (end - start) / k;\n  });\n};\n\nexport const milliseconds = millisecond.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nexport const second = timeInterval((date) =\u003e {\n  date.setTime(date - date.getMilliseconds());\n}, (date, step) =\u003e {\n  date.setTime(+date + step * durationSecond);\n}, (start, end) =\u003e {\n  return (end - start) / durationSecond;\n}, (date) =\u003e {\n  return date.getUTCSeconds();\n});\n\nexport const seconds = second.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeMinute = timeInterval((date) =\u003e {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, (date, step) =\u003e {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) =\u003e {\n  return (end - start) / durationMinute;\n}, (date) =\u003e {\n  return date.getMinutes();\n});\n\nexport const timeMinutes = timeMinute.range;\n\nexport const utcMinute = timeInterval((date) =\u003e {\n  date.setUTCSeconds(0, 0);\n}, (date, step) =\u003e {\n  date.setTime(+date + step * durationMinute);\n}, (start, end) =\u003e {\n  return (end - start) / durationMinute;\n}, (date) =\u003e {\n  return date.getUTCMinutes();\n});\n\nexport const utcMinutes = utcMinute.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nexport const timeHour = timeInterval((date) =\u003e {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, (date, step) =\u003e {\n  date.setTime(+date + step * durationHour);\n}, (start, end) =\u003e {\n  return (end - start) / durationHour;\n}, (date) =\u003e {\n  return date.getHours();\n});\n\nexport const timeHours = timeHour.range;\n\nexport const utcHour = timeInterval((date) =\u003e {\n  date.setUTCMinutes(0, 0, 0);\n}, (date, step) =\u003e {\n  date.setTime(+date + step * durationHour);\n}, (start, end) =\u003e {\n  return (end - start) / durationHour;\n}, (date) =\u003e {\n  return date.getUTCHours();\n});\n\nexport const utcHours = utcHour.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nexport const timeDay = timeInterval(\n  date =\u003e date.setHours(0, 0, 0, 0),\n  (date, step) =\u003e date.setDate(date.getDate() + step),\n  (start, end) =\u003e (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n  date =\u003e date.getDate() - 1\n);\n\nexport const timeDays = timeDay.range;\n\nexport const utcDay = timeInterval((date) =\u003e {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) =\u003e {\n  return (end - start) / durationDay;\n}, (date) =\u003e {\n  return date.getUTCDate() - 1;\n});\n\nexport const utcDays = utcDay.range;\n\nexport const unixDay = timeInterval((date) =\u003e {\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setUTCDate(date.getUTCDate() + step);\n}, (start, end) =\u003e {\n  return (end - start) / durationDay;\n}, (date) =\u003e {\n  return Math.floor(date / durationDay);\n});\n\nexport const unixDays = unixDay.range;\n","import {timeInterval} from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction timeWeekday(i) {\n  return timeInterval((date) =\u003e {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) =\u003e {\n    date.setDate(date.getDate() + step * 7);\n  }, (start, end) =\u003e {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport const timeSunday = timeWeekday(0);\nexport const timeMonday = timeWeekday(1);\nexport const timeTuesday = timeWeekday(2);\nexport const timeWednesday = timeWeekday(3);\nexport const timeThursday = timeWeekday(4);\nexport const timeFriday = timeWeekday(5);\nexport const timeSaturday = timeWeekday(6);\n\nexport const timeSundays = timeSunday.range;\nexport const timeMondays = timeMonday.range;\nexport const timeTuesdays = timeTuesday.range;\nexport const timeWednesdays = timeWednesday.range;\nexport const timeThursdays = timeThursday.range;\nexport const timeFridays = timeFriday.range;\nexport const timeSaturdays = timeSaturday.range;\n\nfunction utcWeekday(i) {\n  return timeInterval((date) =\u003e {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) =\u003e {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, (start, end) =\u003e {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport const utcSunday = utcWeekday(0);\nexport const utcMonday = utcWeekday(1);\nexport const utcTuesday = utcWeekday(2);\nexport const utcWednesday = utcWeekday(3);\nexport const utcThursday = utcWeekday(4);\nexport const utcFriday = utcWeekday(5);\nexport const utcSaturday = utcWeekday(6);\n\nexport const utcSundays = utcSunday.range;\nexport const utcMondays = utcMonday.range;\nexport const utcTuesdays = utcTuesday.range;\nexport const utcWednesdays = utcWednesday.range;\nexport const utcThursdays = utcThursday.range;\nexport const utcFridays = utcFriday.range;\nexport const utcSaturdays = utcSaturday.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeMonth = timeInterval((date) =\u003e {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setMonth(date.getMonth() + step);\n}, (start, end) =\u003e {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, (date) =\u003e {\n  return date.getMonth();\n});\n\nexport const timeMonths = timeMonth.range;\n\nexport const utcMonth = timeInterval((date) =\u003e {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, (start, end) =\u003e {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, (date) =\u003e {\n  return date.getUTCMonth();\n});\n\nexport const utcMonths = utcMonth.range;\n","import {timeInterval} from \"./interval.js\";\n\nexport const timeYear = timeInterval((date) =\u003e {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setFullYear(date.getFullYear() + step);\n}, (start, end) =\u003e {\n  return end.getFullYear() - start.getFullYear();\n}, (date) =\u003e {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\ntimeYear.every = (k) =\u003e {\n  return !isFinite(k = Math.floor(k)) || !(k \u003e 0) ? null : timeInterval((date) =\u003e {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, (date, step) =\u003e {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport const timeYears = timeYear.range;\n\nexport const utcYear = timeInterval((date) =\u003e {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, (date, step) =\u003e {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, (start, end) =\u003e {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, (date) =\u003e {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = (k) =\u003e {\n  return !isFinite(k = Math.floor(k)) || !(k \u003e 0) ? null : timeInterval((date) =\u003e {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, (date, step) =\u003e {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport const utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport {millisecond} from \"./millisecond.js\";\nimport {second} from \"./second.js\";\nimport {timeMinute, utcMinute} from \"./minute.js\";\nimport {timeHour, utcHour} from \"./hour.js\";\nimport {timeDay, unixDay} from \"./day.js\";\nimport {timeSunday, utcSunday} from \"./week.js\";\nimport {timeMonth, utcMonth} from \"./month.js\";\nimport {timeYear, utcYear} from \"./year.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n  const tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function ticks(start, stop, count) {\n    const reverse = stop \u003c start;\n    if (reverse) [start, stop] = [stop, start];\n    const interval = count \u0026\u0026 typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n    const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n    return reverse ? ticks.reverse() : ticks;\n  }\n\n  function tickInterval(start, stop, count) {\n    const target = Math.abs(stop - start) / count;\n    const i = bisector(([,, step]) =\u003e step).right(tickIntervals, target);\n    if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n    if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n    const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] \u003c tickIntervals[i][2] / target ? i - 1 : i];\n    return t.every(step);\n  }\n\n  return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcSunday, unixDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(timeYear, timeMonth, timeSunday, timeDay, timeHour, timeMinute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 \u003c= d.y \u0026\u0026 d.y \u003c 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 \u003c= d.y \u0026\u0026 d.y \u003c 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i \u003c n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z \u0026\u0026 !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V \u003c 1 || d.V \u003e 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day \u003e 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day \u003e 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i \u003c n) {\n      if (j \u003e= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) \u003c 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() \u003e= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() \u003e= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value \u003c 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length \u003c width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$\u0026\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  return new Map(names.map((name, i) =\u003e [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] \u003e 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day \u003e= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day \u003e= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z \u003e 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day \u003e= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day \u003e= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n  var scale = continuous(),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  function tickFormat(date) {\n    return (second(date) \u003c date ? formatMillisecond\n        : minute(date) \u003c date ? formatSecond\n        : hour(date) \u003c date ? formatMinute\n        : day(date) \u003c date ? formatHour\n        : month(date) \u003c date ? (week(date) \u003c date ? formatDay : formatWeek)\n        : year(date) \u003c date ? formatMonth\n        : formatYear)(date);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval) {\n    var d = domain();\n    if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n    return interval ? domain(nice(d, interval)) : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n  };\n\n  return scale;\n}\n\nexport default function time() {\n  return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","import {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcTicks, utcTickInterval} from \"d3-time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {calendar} from \"./time.js\";\nimport {initRange} from \"./init.js\";\n\nexport default function utcTime() {\n  return initRange.apply(calendar(utcTicks, utcTickInterval, utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n","import {interpolate, interpolateRound} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return x == null || isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1;\n      return arguments.length ? ([r0, r1] = _, interpolator = interpolate(r0, r1), scale) : [interpolator(0), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n","import {ascending, bisect, quantile} from \"d3-array\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (x != null \u0026\u0026 !isNaN(x = +x)) return interpolator((bisect(domain, x, 1) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (let d of _) if (d != null \u0026\u0026 !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.range = function() {\n    return domain.map((d, i) =\u003e interpolator(i / (domain.length - 1)));\n  };\n\n  scale.quantiles = function(n) {\n    return Array.from({length: n + 1}, (_, i) =\u003e quantile(domain, i / n));\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n","import {interpolate, interpolateRound, piecewise} from \"d3-interpolate\";\nimport {identity} from \"./continuous.js\";\nimport {initInterpolator} from \"./init.js\";\nimport {linearish} from \"./linear.js\";\nimport {loggish} from \"./log.js\";\nimport {copy} from \"./sequential.js\";\nimport {symlogish} from \"./symlog.js\";\nimport {powish} from \"./pow.js\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      s = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (s * x \u003c s * t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? ([x0, x1, x2] = _, t0 = transform(x0 = +x0), t1 = transform(x1 = +x1), t2 = transform(x2 = +x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 \u003c t0 ? -1 : 1, scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  function range(interpolate) {\n    return function(_) {\n      var r0, r1, r2;\n      return arguments.length ? ([r0, r1, r2] = _, interpolator = piecewise(interpolate, [r0, r1, r2]), scale) : [interpolator(0), interpolator(0.5), interpolator(1)];\n    };\n  }\n\n  scale.range = range(interpolate);\n\n  scale.rangeRound = range(interpolateRound);\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), s = t1 \u003c t0 ? -1 : 1;\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n","export default function(specifier) {\n  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n  while (i \u003c n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n  return colors;\n}\n","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme =\u003e interpolateRgbBasis(scheme[scheme.length - 1]);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n      + \")\";\n}\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t \u003c 0 || t \u003e 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  c.h = 360 * t - 100;\n  c.s = 1.5 - 1.5 * ts;\n  c.l = 0.8 - 0.9 * ts;\n  return c + \"\";\n}\n","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n    pi_1_3 = Math.PI / 3,\n    pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n  var x;\n  t = (0.5 - t) * Math.PI;\n  c.r = 255 * (x = Math.sin(t)) * x;\n  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n  return c + \"\";\n}\n","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n      + \")\";\n}\n","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n","export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n  return x \u003e 1 ? 0 : x \u003c -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x \u003e= 1 ? halfPi : x \u003c= -1 ? -halfPi : Math.asin(x);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n  let digits = 3;\n\n  shape.digits = function(_) {\n    if (!arguments.length) return digits;\n    if (_ == null) {\n      digits = null;\n    } else {\n      const d = Math.floor(_);\n      if (!(d \u003e= 0)) throw new RangeError(`invalid digits: ${_}`);\n      digits = d;\n    }\n    return shape;\n  };\n\n  return () =\u003e new Path(digits);\n}\n","import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d \u0026\u0026 d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t \u003c epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy \u003c 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 \u003e dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null,\n      path = withPath(arc);\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 \u003e a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 \u003c r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 \u003e epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da \u003e tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 \u003e epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap \u003e epsilon) \u0026\u0026 (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp \u003e epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) \u003e epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) \u003e epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc \u003e epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle. If this\n        // intersection fails, it’s probably because the arc is too small, so\n        // disable the corner radius entirely.\n        if (da \u003c pi) {\n          if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n            var ax = x01 - oc[0],\n                ay = y01 - oc[1],\n                bx = x11 - oc[0],\n                by = y11 - oc[1],\n                kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n                lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n            rc0 = min(rc, (r0 - lc) / (kc - 1));\n            rc1 = min(rc, (r1 - lc) / (kc + 1));\n          } else {\n            rc0 = rc1 = 0;\n          }\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 \u003e epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 \u003e epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 \u003c rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 \u003e epsilon) || !(da0 \u003e epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 \u003e epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 \u003c rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n  return typeof x === \"object\" \u0026\u0026 \"length\" in x\n    ? x // Array, TypedArray, NodeList, array-like\n    : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n  var defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(line);\n\n  x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n  y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n  function line(data) {\n    var i,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i \u003c= n; ++i) {\n      if (!(i \u003c n \u0026\u0026 defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null \u0026\u0026 (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n  var x1 = null,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null,\n      path = withPath(area);\n\n  x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n  y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n  y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = (data = array(data)).length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i \u003c= n; ++i) {\n      if (!(i \u003c n \u0026\u0026 defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k \u003e= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null \u0026\u0026 (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n","export default function(a, b) {\n  return b \u003c a ? -1 : b \u003e a ? 1 : b \u003e= a ? 0 : NaN;\n}\n","export default function(d) {\n  return d;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = (data = array(data)).length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da \u003c 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i \u003c n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) \u003e 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i \u003c n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v \u003e 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n  constructor(context, x) {\n    this._context = context;\n    this._x = x;\n  }\n  areaStart() {\n    this._line = 0;\n  }\n  areaEnd() {\n    this._line = NaN;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  }\n  point(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: {\n        this._point = 1;\n        if (this._line) this._context.lineTo(x, y);\n        else this._context.moveTo(x, y);\n        break;\n      }\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n        else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n        break;\n      }\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nclass BumpRadial {\n  constructor(context) {\n    this._context = context;\n  }\n  lineStart() {\n    this._point = 0;\n  }\n  lineEnd() {}\n  point(x, y) {\n    x = +x, y = +y;\n    if (this._point === 0) {\n      this._point = 1;\n    } else {\n      const p0 = pointRadial(this._x0, this._y0);\n      const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n      const p2 = pointRadial(x, this._y0);\n      const p3 = pointRadial(x, y);\n      this._context.moveTo(...p0);\n      this._context.bezierCurveTo(...p1, ...p2, ...p3);\n    }\n    this._x0 = x, this._y0 = y;\n  }\n}\n\nexport function bumpX(context) {\n  return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n  return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n  return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nexport function link(curve) {\n  let source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null,\n      output = null,\n      path = withPath(link);\n\n  function link() {\n    let buffer;\n    const argv = slice.call(arguments);\n    const s = source.apply(this, argv);\n    const t = target.apply(this, argv);\n    if (context == null) output = curve(buffer = path());\n    output.lineStart();\n    argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n    output.lineEnd();\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n  };\n\n  return link;\n}\n\nexport function linkHorizontal() {\n  return link(bumpX);\n}\n\nexport function linkVertical() {\n  return link(bumpY);\n}\n\nexport function linkRadial() {\n  const l = link(bumpRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n","import {min, sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size + min(size / 28, 0.75)) * 0.59436;\n    const t = r / 2;\n    const u = t * sqrt3;\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n    context.moveTo(-u, -t);\n    context.lineTo(u, t);\n    context.moveTo(-u, t);\n    context.lineTo(u, -t);\n  }\n};\n","import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n  draw(context, size) {\n    const y = sqrt(size / tan30_2);\n    const x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.62625;\n    context.moveTo(0, -r);\n    context.lineTo(r, 0);\n    context.lineTo(0, r);\n    context.lineTo(-r, 0);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 7, 2)) * 0.87559;\n    context.moveTo(-r, 0);\n    context.lineTo(r, 0);\n    context.moveTo(0, r);\n    context.lineTo(0, -r);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const w = sqrt(size);\n    const x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size) * 0.4431;\n    context.moveTo(r, r);\n    context.lineTo(r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, r);\n    context.closePath();\n  }\n};\n","import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size * ka);\n    const x = kx * r;\n    const y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (let i = 1; i \u003c 5; ++i) {\n      const a = tau * i / 5;\n      const c = cos(a);\n      const s = sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const y = -sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n  draw(context, size) {\n    const s = sqrt(size) * 0.6824;\n    const t = s  / 2;\n    const u = (s * sqrt3) / 2; // cos(Math.PI / 6)\n    context.moveTo(0, -s);\n    context.lineTo(u, t);\n    context.lineTo(-u, t);\n    context.closePath();\n  }\n};\n","import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size / a);\n    const x0 = r / 2, y0 = r * k;\n    const x1 = x0, y1 = r * k + r;\n    const x2 = -x1, y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n","import {min, sqrt} from \"../math.js\";\n\nexport default {\n  draw(context, size) {\n    const r = sqrt(size - min(size / 6, 1.7)) * 0.6189;\n    context.moveTo(-r, -r);\n    context.lineTo(r, r);\n    context.moveTo(-r, r);\n    context.lineTo(r, -r);\n  }\n};\n","import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n  circle,\n  plus,\n  times,\n  triangle2,\n  asterisk,\n  square2,\n  diamond2\n];\n\nexport default function Symbol(type, size) {\n  let context = null,\n      path = withPath(symbol);\n\n  type = typeof type === \"function\" ? type : constant(type || circle);\n  size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n  function symbol() {\n    let buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n","export default function() {}\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // falls through\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j \u003e 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i \u003c= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a \u003e epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a \u003e epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // falls through\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n","function sign(x) {\n  return x \u003c 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 \u003c 0 \u0026\u0026 -0),\n      s1 = (y2 - that._y1) / (h1 || h0 \u003c 0 \u0026\u0026 -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 \u0026\u0026 y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 \u003c n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 \u0026\u0026 n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i \u003c n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i \u003c n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i \u003e= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i \u003c n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 \u003c this._t \u0026\u0026 this._t \u003c 1 \u0026\u0026 this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 \u0026\u0026 this._point === 1)) this._context.closePath();\n    if (this._line \u003e= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // falls through\n      default: {\n        if (this._t \u003c= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n","export default function(series, order) {\n  if (!((n = series.length) \u003e 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i \u003c n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j \u003c m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n \u003e= 0) o[n] = n;\n  return o;\n}\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nfunction stackSeries(key) {\n  const series = [];\n  series.key = key;\n  return series;\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var sz = Array.from(keys.apply(this, arguments), stackSeries),\n        i, n = sz.length, j = -1,\n        oz;\n\n    for (const d of data) {\n      for (i = 0, ++j; i \u003c n; ++i) {\n        (sz[i][j] = [0, +value(d, sz[i].key, j, data)]).data = d;\n      }\n    }\n\n    for (i = 0, oz = array(order(sz)); i \u003c n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(Array.from(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) \u003e 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j \u003c m; ++j) {\n    for (y = i = 0; i \u003c n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i \u003c n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n","export default function(series, order) {\n  if (!((n = series.length) \u003e 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j \u003c m; ++j) {\n    for (yp = yn = 0, i = 0; i \u003c n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) \u003e 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy \u003c 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) \u003e 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j \u003c m; ++j) {\n    for (var i = 0, y = 0; i \u003c n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) \u003e 0) || !((m = (s0 = series[order[0]]).length) \u003e 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j \u003c m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i \u003c n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k \u003c i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i \u003c n) if ((vi = +series[i][1]) \u003e vj) vj = vi, j = i;\n  return j;\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i \u003c n) if (v = +series[i][1]) s += v;\n  return s;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i \u003c n; ++i) {\n    j = order[i];\n    if (top \u003c bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n","export default x =\u003e () =\u003e x;\n","export default function ZoomEvent(type, {\n  sourceEvent,\n  target,\n  transform,\n  dispatch\n}) {\n  Object.defineProperties(this, {\n    type: {value: type, enumerable: true, configurable: true},\n    sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n    target: {value: target, enumerable: true, configurable: true},\n    transform: {value: transform, enumerable: true, configurable: true},\n    _: {value: dispatch}\n  });\n}\n","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 \u0026 y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n","export function nopropagation(event) {\n  event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n  return (!event.ctrlKey || event.type === 'wheel') \u0026\u0026 !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 \u003e dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 \u003e dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchfirst,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0,\n      tapDistance = 10;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled, {passive: false})\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point, event) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point, event);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n          .event(event)\n          .start()\n          .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n          .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p, event) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p, event);\n  };\n\n  zoom.scaleTo = function(selection, k, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p, event);\n  };\n\n  zoom.translateBy = function(selection, x, y, event) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    }, null, event);\n  };\n\n  zoom.translateTo = function(selection, x, y, p, event) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p, event);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x \u0026\u0026 y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point, event) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args).event(event),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean \u0026\u0026 that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.sourceEvent = null;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    event: function(event) {\n      if (event) this.sourceEvent = event;\n      return this;\n    },\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse \u0026\u0026 key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 \u0026\u0026 key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 \u0026\u0026 key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      var d = select(this.that).datum();\n      listeners.call(\n        type,\n        this.that,\n        new ZoomEvent(type, {\n          sourceEvent: this.sourceEvent,\n          target: zoom,\n          type,\n          transform: this.that.__zoom,\n          dispatch: listeners\n        }),\n        d\n      );\n    }\n  };\n\n  function wheeled(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, args).event(event),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = pointer(event);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent(event);\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned(event, ...args) {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var currentTarget = event.currentTarget,\n        g = gesture(this, args, true).event(event),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = pointer(event, currentTarget),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation(event);\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved(event) {\n      noevent(event);\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy \u003e clickDistance2;\n      }\n      g.event(event)\n       .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped(event) {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent(event);\n      g.event(event).end();\n    }\n  }\n\n  function dblclicked(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n    noevent(event);\n    if (duration \u003e 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n    else select(this).call(zoom.transform, t1, p0, event);\n  }\n\n  function touchstarted(event, ...args) {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, args, event.changedTouches.length === n).event(event),\n        started, i, t, p;\n\n    nopropagation(event);\n    for (i = 0; i \u003c n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 \u0026\u0026 g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps \u003c 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent(event);\n    for (i = 0; i \u003c n; ++i) {\n      t = touches[i], p = pointer(t, this);\n      if (g.touch0 \u0026\u0026 g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 \u0026\u0026 g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended(event, ...args) {\n    if (!this.__zooming) return;\n    var g = gesture(this, args).event(event),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation(event);\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i \u003c n; ++i) {\n      t = touches[i];\n      if (g.touch0 \u0026\u0026 g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 \u0026\u0026 g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 \u0026\u0026 !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        t = pointer(t, this);\n        if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) \u003c tapDistance) {\n          var p = select(this).on(\"dblclick.zoom\");\n          if (p) p.apply(this, arguments);\n        }\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  zoom.tapDistance = function(_) {\n    return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n  };\n\n  return zoom;\n}\n"],"version":3}
