semiotic 3.8.2 → 3.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +1 -1
- package/README.md +34 -33
- package/ai/schema.json +1 -1
- package/ai/surface-manifest.json +1 -1
- package/ai/system-prompt.md +1 -1
- package/dist/{chunk-chunk-C6EJ4IOD.module.min.js → chunk-chunk-2CCFBTQC.module.min.js} +1 -1
- package/dist/chunk-chunk-2RXP3FS3.module.min.js +1 -0
- package/dist/chunk-chunk-4TMZXLCR.module.min.js +1 -0
- package/dist/{chunk-chunk-H4PPRW6N.module.min.js → chunk-chunk-5APBQXZA.module.min.js} +1 -1
- package/dist/{chunk-chunk-NO4MCQVD.module.min.js → chunk-chunk-5RKXZQ2P.module.min.js} +1 -1
- package/dist/chunk-chunk-6HSGDMTA.module.min.js +2 -0
- package/dist/{chunk-chunk-7LHMKRKE.module.min.js → chunk-chunk-7FW6EGLP.module.min.js} +1 -1
- package/dist/{chunk-chunk-RH5TSQPH.module.min.js → chunk-chunk-7OEOSCBP.module.min.js} +1 -1
- package/dist/{chunk-chunk-FAKO3RGQ.module.min.js → chunk-chunk-A63CTACR.module.min.js} +1 -1
- package/dist/chunk-chunk-ANYDWOZF.module.min.js +1 -0
- package/dist/{chunk-chunk-ZLKRTF5N.module.min.js → chunk-chunk-AZJUDQRM.module.min.js} +1 -1
- package/dist/{chunk-chunk-W3DB2MN4.module.min.js → chunk-chunk-B6V35LMY.module.min.js} +1 -1
- package/dist/chunk-chunk-BOSVL645.module.min.js +2 -0
- package/dist/chunk-chunk-EMO5NUGE.module.min.js +1 -0
- package/dist/chunk-chunk-F25UA5HT.module.min.js +1 -0
- package/dist/chunk-chunk-FRIO6MCV.module.min.js +1 -0
- package/dist/{chunk-chunk-T27ZEV6A.module.min.js → chunk-chunk-GWSWSPXN.module.min.js} +1 -1
- package/dist/chunk-chunk-I6C3KR5H.module.min.js +2 -0
- package/dist/chunk-chunk-IP2UE74X.module.min.js +1 -0
- package/dist/chunk-chunk-J5RL6GXU.module.min.js +2 -0
- package/dist/chunk-chunk-JNCHKRIR.module.min.js +2 -0
- package/dist/{chunk-chunk-Z5KXAVQD.module.min.js → chunk-chunk-L3H6DQCR.module.min.js} +1 -1
- package/dist/{chunk-chunk-5WEFWNUW.module.min.js → chunk-chunk-M7VYYHCE.module.min.js} +1 -1
- package/dist/chunk-chunk-MC35ILYP.module.min.js +2 -0
- package/dist/{chunk-chunk-2VUEY5TH.module.min.js → chunk-chunk-N72SWNBV.module.min.js} +1 -1
- package/dist/chunk-chunk-OBQRFTIL.module.min.js +2 -0
- package/dist/chunk-chunk-OQTLSTGI.module.min.js +2 -0
- package/dist/{chunk-chunk-2UN3ANRN.module.min.js → chunk-chunk-SA3D43RA.module.min.js} +1 -1
- package/dist/chunk-chunk-SANERMIZ.module.min.js +2 -0
- package/dist/{chunk-chunk-DNY43POY.module.min.js → chunk-chunk-UHSZEB74.module.min.js} +1 -1
- package/dist/{chunk-chunk-CYIML3AV.module.min.js → chunk-chunk-XQYVEKEJ.module.min.js} +1 -1
- package/dist/{chunk-chunk-27HVVXS6.module.min.js → chunk-chunk-Y6AXCRVO.module.min.js} +1 -1
- package/dist/components/charts/custom/XYCustomChart.d.ts +3 -0
- package/dist/components/charts/realtime/RealtimeHistogram.d.ts +5 -6
- package/dist/components/charts/realtime/temporalHistogramConfig.d.ts +11 -0
- package/dist/components/charts/shared/areaSeriesData.d.ts +15 -0
- package/dist/components/charts/shared/chartMode.d.ts +67 -0
- package/dist/components/charts/shared/colorUtils.d.ts +8 -0
- package/dist/components/charts/shared/geoStyleDefaults.d.ts +3 -0
- package/dist/components/charts/shared/hooks.d.ts +13 -80
- package/dist/components/charts/shared/useChartSetup.d.ts +3 -0
- package/dist/components/charts/shared/useCustomChartSetup.d.ts +3 -0
- package/dist/components/charts/shared/useXYLineStyle.d.ts +3 -2
- package/dist/components/charts/shared/xyLineStyle.d.ts +21 -0
- package/dist/components/charts/xy/LineChart.d.ts +3 -0
- package/dist/components/legendLayout.d.ts +31 -0
- package/dist/components/server/serverChartConfigShared.d.ts +29 -0
- package/dist/components/server/serverChartConfigs.d.ts +2 -13
- package/dist/components/server/serverChartConfigsXY.d.ts +3 -0
- package/dist/components/server/serverGaugeOverlay.d.ts +28 -0
- package/dist/components/server/staticLegend.d.ts +7 -1
- package/dist/components/server/staticSVGChrome.d.ts +57 -0
- package/dist/components/stream/GeoPipelineStore.d.ts +2 -0
- package/dist/components/stream/GeoSVGOverlay.d.ts +2 -0
- package/dist/components/stream/SceneToSVG.d.ts +8 -6
- package/dist/components/stream/SceneToSVGGeo.d.ts +10 -0
- package/dist/components/stream/SceneToSVGNetwork.d.ts +12 -0
- package/dist/components/stream/canvasBackground.d.ts +7 -0
- package/dist/components/stream/networkTypes.d.ts +2 -4
- package/dist/components/stream/renderBackend.d.ts +14 -0
- package/dist/components/stream/sceneToSVGShared.d.ts +51 -0
- package/dist/components/types/legendTypes.d.ts +16 -3
- package/dist/geo.min.js +1 -1
- package/dist/geo.module.min.js +1 -1
- package/dist/network.min.js +1 -1
- package/dist/network.module.min.js +1 -1
- package/dist/ordinal.min.js +1 -1
- package/dist/ordinal.module.min.js +1 -1
- package/dist/physics.min.js +1 -1
- package/dist/physics.module.min.js +1 -1
- package/dist/realtime.min.js +1 -1
- package/dist/realtime.module.min.js +1 -1
- package/dist/semiotic-ai-core.min.js +1 -1
- package/dist/semiotic-ai-core.module.min.js +1 -1
- package/dist/semiotic-ai.min.js +1 -1
- package/dist/semiotic-ai.module.min.js +1 -1
- package/dist/semiotic-experimental.min.js +1 -1
- package/dist/semiotic-experimental.module.min.js +1 -1
- package/dist/semiotic-realtime-core.min.js +1 -1
- package/dist/semiotic-realtime-core.module.min.js +1 -1
- package/dist/semiotic-recipes-core.module.min.js +1 -1
- package/dist/semiotic-recipes.module.min.js +1 -1
- package/dist/semiotic-server-edge.min.js +1 -1
- package/dist/semiotic-server-edge.module.min.js +1 -1
- package/dist/semiotic-server-node.min.js +1 -1
- package/dist/semiotic-server-node.module.min.js +1 -1
- package/dist/semiotic-utils-core.module.min.js +1 -1
- package/dist/semiotic-utils.module.min.js +1 -1
- package/dist/semiotic.min.js +1 -1
- package/dist/semiotic.module.min.js +1 -1
- package/dist/server.min.js +1 -1
- package/dist/server.module.min.js +1 -1
- package/dist/xy.min.js +1 -1
- package/dist/xy.module.min.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-chunk-6F6GEAQU.module.min.js +0 -1
- package/dist/chunk-chunk-BHYTYMY2.module.min.js +0 -2
- package/dist/chunk-chunk-E7MIQX7D.module.min.js +0 -2
- package/dist/chunk-chunk-ES4DCG3L.module.min.js +0 -1
- package/dist/chunk-chunk-IFYPMWKY.module.min.js +0 -1
- package/dist/chunk-chunk-L6D3I3V7.module.min.js +0 -2
- package/dist/chunk-chunk-ODUZEEBH.module.min.js +0 -2
- package/dist/chunk-chunk-P6UBCMSQ.module.min.js +0 -2
- package/dist/chunk-chunk-STZFFTAN.module.min.js +0 -2
- package/dist/chunk-chunk-U3AGQ5EF.module.min.js +0 -2
- package/dist/chunk-chunk-WDIN4LRC.module.min.js +0 -1
- package/dist/chunk-chunk-XOYX77KF.module.min.js +0 -2
- package/dist/chunk-chunk-ZTNVDWAK.module.min.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,a=(e,t,i,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of o(t))s.call(e,l)||l===i||r(e,l,{get:()=>t[l],enumerable:!(a=n(t,l))||a.enumerable});return e},l=(e,n,o)=>(o=null!=e?t(i(e)):{},a(!n&&e&&e.__esModule?o:r(o,"default",{value:e,enumerable:!0}),e)),c={};((e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})})(c,{EXPERIMENTAL_GOFISH_ADAPTER_NAME:()=>u,IDID_SPEC_VERSION:()=>Rr,unstable_BUILTIN_INTENT_IDS:()=>Tr,unstable_BuiltInPhysicsEngineAdapter:()=>$i,unstable_DEFAULT_DATA_PITFALLS_ANNOTATION_PALETTE:()=>hr,unstable_DEFAULT_PHYSICS_CANVAS_THEME:()=>ko,unstable_PhysicsCustomChart:()=>Pd,unstable_PhysicsPipelineStore:()=>ws,unstable_PhysicsSedimentAccumulator:()=>Ni,unstable_StreamPhysicsFrame:()=>Oc,unstable_attachIDID:()=>an,unstable_attachIDIDAnnotations:()=>cn,unstable_buildDataPitfallsAnnotationBridge:()=>Br,unstable_buildDataPitfallsBridge:()=>Ir,unstable_buildDataPitfallsNotificationBridge:()=>jr,unstable_buildPhysicsNavigationTree:()=>Rd,unstable_buildPhysicsSettledEvidence:()=>$o,unstable_buildPhysicsSettledProjection:()=>Ld,unstable_buildPhysicsSettledScene:()=>Lo,unstable_collidersFromPhysicsAnnotations:()=>ri,unstable_collidersFromPlotBounds:()=>rs,unstable_collidersFromXScaleBins:()=>ns,unstable_createDefaultPhysicsEngineAdapter:()=>Mi,unstable_dataPitfallsFindingToAnnotation:()=>$r,unstable_dataPitfallsFindingToNotification:()=>Sr,unstable_evaluatePhysicsBodyBudget:()=>zi,unstable_fromFlintChart:()=>yo,unstable_fromGofishIR:()=>C,unstable_fromMermaid:()=>_n,unstable_fromObservablePlot:()=>Pn,unstable_fromVegaLiteResult:()=>Cn,unstable_gofishBobaIR:()=>R,unstable_gofishBottleIR:()=>L,unstable_gofishFlowerIR:()=>P,unstable_gofishIRExamples:()=>O,unstable_gofishPythonIR:()=>T,unstable_gofishTreemapIR:()=>I,unstable_physicsBodiesToXYSceneNodes:()=>Io,unstable_physicsBodyToXYSceneNode:()=>Po,unstable_physicsCanvasColorWithAlpha:()=>So,unstable_physicsObservationAnnouncement:()=>Td,unstable_readIDID:()=>ln,unstable_readIDIDAnnotations:()=>dn,unstable_renderPhysicsSettledSVG:()=>Jo,unstable_resolvePhysicsBodyAnnotations:()=>ni,unstable_resolvePhysicsCanvasTheme:()=>Ao,unstable_schedulePhysicsSpawns:()=>Yi,unstable_sedimentHeightfield:()=>Oi,unstable_summarizePhysicsAnnotations:()=>oi,unstable_toDataPitfallsAnnotations:()=>Mr,unstable_toDataPitfallsChain:()=>Lr,unstable_toDataPitfallsNotifications:()=>Ar,unstable_toVegaLite:()=>on,unstable_toVegaLiteResult:()=>nn,unstable_unwrapIDIDEnrichedVegaLiteSpec:()=>gn,unstable_validatePortableAnnotation:()=>Qr,unstable_validatePortableAudienceProfile:()=>Yr,unstable_validatePortableCapability:()=>Ur}),module.exports=(e=c,a(r({},"__esModule",{value:!0}),e));var d=require("react"),u="unstable-gofish-displaylist-adapter";function p(e){switch(e.kind){case"rect":case"image":return{x:e.x,y:e.y,w:e.w,h:e.h};case"ellipse":return{x:e.cx-e.rx,y:e.cy-e.ry,w:2*e.rx,h:2*e.ry};case"path":return function(e){const t=e.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi);if(!t||2>t.length)return null;let r=1/0,n=1/0,o=-1/0,i=-1/0;for(let e=0;t.length>e+1;e+=2){const s=parseFloat(t[e]),a=parseFloat(t[e+1]);Number.isFinite(s)&&(r=Math.min(r,s),o=Math.max(o,s)),Number.isFinite(a)&&(n=Math.min(n,a),i=Math.max(i,a))}return Number.isFinite(r)&&Number.isFinite(n)?{x:r,y:n,w:o-r,h:i-n}:null}(e.d);case"text":return function(e){const t=e.fontSize??12,r=Math.max(1,(e.text+"").length*t*.6),n=e.textAnchor??"start";return{x:"middle"===n?e.x-r/2:"end"===n?e.x-r:e.x,y:e.y-t,w:r,h:1.2*t}}(e);case"composite":case"mask":return e.bbox;case"group":return null}}var y={tx:0,ty:0,sx:1,sy:1};function h(e,t){return{x:e.x*t.sx+t.tx,y:e.y*t.sy+t.ty,w:e.w*t.sx,h:e.h*t.sy}}function f(e,t){const[r=0,n=0]=t.translate??[],[o=1,i=1]=t.scale??[];return{tx:e.tx+r*e.sx,ty:e.ty+n*e.sy,sx:e.sx*o,sy:e.sy*i}}function m(e){if(null!=e.datum)return e.datum;let t;if("group"===e.kind?t=e.children:"composite"===e.kind?t=[...e.source,...e.dest]:"mask"===e.kind&&(t=[...e.mask,...e.content]),t)for(const e of t){const t=m(e);if(null!=t)return t}}function b(e){return null==e?null:Array.isArray(e)?0===e.length?null:1===e.length?e[0]:{...e[0],_rows:e}:e}function g(e,t,r){const n=function(e){if(!e)return{};const t={};return void 0!==e.fill&&(t.fill=e.fill),void 0!==e.stroke&&(t.stroke=e.stroke),void 0!==e.strokeWidth&&(t.strokeWidth=e.strokeWidth),void 0!==e.strokeDasharray&&(t.strokeDasharray=e.strokeDasharray),void 0!==e.opacity&&(t.opacity=e.opacity),void 0!==e.fillOpacity&&(t.fillOpacity=e.fillOpacity),void 0!==e.filter&&(t.filter=e.filter),void 0!==e.mixBlendMode&&(t.style={mixBlendMode:e.mixBlendMode}),t}(e.style);switch(e.kind){case"rect":return(0,d.createElement)("rect",{key:t,x:e.x,y:e.y,width:e.w,height:e.h,...void 0!==e.rx?{rx:e.rx}:{},...void 0!==e.ry?{ry:e.ry}:{},...n});case"ellipse":return(0,d.createElement)("ellipse",{key:t,cx:e.cx,cy:e.cy,rx:e.rx,ry:e.ry,...n});case"path":return(0,d.createElement)("path",{key:t,d:e.d,...n});case"text":return(0,d.createElement)("text",{key:t,x:e.x,y:e.y,...void 0!==e.fontSize?{fontSize:e.fontSize}:{},...void 0!==e.fontFamily?{fontFamily:e.fontFamily}:{},...void 0!==e.textAnchor?{textAnchor:e.textAnchor}:{},...void 0!==e.dominantBaseline?{dominantBaseline:e.dominantBaseline}:{},...void 0!==e.rotate?{transform:`rotate(${e.rotate} ${e.x} ${e.y})`}:{},...n},e.text);case"image":return(0,d.createElement)("image",{key:t,x:e.x,y:e.y,width:e.w,height:e.h,href:e.href,...void 0!==e.preserveAspectRatio?{preserveAspectRatio:e.preserveAspectRatio}:{},...n});case"group":{const o=[];return e.transform.translate&&o.push(`translate(${e.transform.translate[0]} ${e.transform.translate[1]})`),e.transform.scale&&o.push(`scale(${e.transform.scale[0]} ${e.transform.scale[1]})`),(0,d.createElement)("g",{key:t,...o.length?{transform:o.join(" ")}:{},...n},e.children.map((e,n)=>g(e,`${t}-${n}`,r)))}case"composite":case"mask":return function(e,t,r){const n="gf-comp-"+r.compositeId++,o=n+"-source",i=n+"-destination";if("mask"===e.kind){const s=n+"-mask";return(0,d.createElement)(d.Fragment,{key:t},(0,d.createElement)("defs",null,(0,d.createElement)("g",{id:o},e.mask.map((e,t)=>g(e,`${s}-m-${t}`,r))),(0,d.createElement)("g",{id:i},e.content.map((e,t)=>g(e,`${s}-c-${t}`,r))),(0,d.createElement)("mask",{id:s,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},(0,d.createElement)("use",{href:"#"+o}))),(0,d.createElement)("use",{href:"#"+i,mask:`url(#${s})`}))}const{x:s,y:a,w:l,h:c}=e.bbox,u=`translate(${s} ${a})`,p=e.blendMode,y="atop"===e.operator||"in"===e.operator,h=n+"-desat",f=n+"-cov",m=e.source.map((e,t)=>g(e,`${n}-s-${t}`,r)),b=e.dest.map((e,t)=>g(e,`${n}-d-${t}`,r)),v=[];return p&&v.push((0,d.createElement)("filter",{key:"desat",id:h},(0,d.createElement)("feColorMatrix",{type:"saturate",values:"0"}))),y&&v.push((0,d.createElement)("mask",{key:"cov",id:f,maskUnits:"userSpaceOnUse",x:s,y:a,width:l,height:c,style:{maskType:"alpha"}},(0,d.createElement)("g",{transform:u},e.source.map((e,t)=>g(e,`${n}-m-${t}`,r))))),(0,d.createElement)(d.Fragment,{key:t},v.length?(0,d.createElement)("defs",{key:"defs"},v):null,(0,d.createElement)("g",{key:"g",...y?{mask:`url(#${f})`}:{}},(0,d.createElement)("g",{transform:u,style:{isolation:"isolate"}},(0,d.createElement)("g",p?{filter:`url(#${h})`}:null,m),(0,d.createElement)("g",p?{style:{mixBlendMode:p}}:null,b))))}(e,t,r)}}function v(e,t,r,n){for(const o of e){if("group"===o.kind){v(o.children,f(t,o.transform),r,n);continue}const e=o.role??"node",i=b(m(o));if("node"!==e||!i||"text"===o.kind)continue;const s=p(o);if(!s)continue;const a=h(s,t);a.w>0&&a.h>0&&(r.push({type:"rect",x:a.x,y:a.y,w:a.w,h:a.h,style:{fill:"rgba(0,0,0,0)",stroke:"none"},datum:i,id:o.id??"gofish-node-"+n.n}),n.n+=1)}}function x(e,t){for(const r of e){if("group"===r.kind){x(r.children,t);continue}if("node"!==(r.role??"node")||"text"===r.kind)continue;const e=b(m(r));e&&t.push(e)}}function k(e){return t=>{const r=t.config?.displayList??e,n=[];v(r.items,y,n,{n:0});const o={compositeId:0};return{sceneNodes:n,overlays:(0,d.createElement)("g",{className:"semiotic-gofish-displaylist","data-gofish-ir":r.ir},r.items.map((e,t)=>g(e,"gf-"+t,o)))}}}function C(e,t={}){const r=[];e&&"gofish-display-list"===e.ir||r.push(`Expected a "gofish-display-list" document (the output of GoFish's toDisplayList) but got ir="${e?.ir}". This adapter consumes the baked render IR, not the source-level Frontend IR. Attempting best-effort translation.`),0!==e?.irVersion&&r.push(`This adapter targets GoFish DisplayList IR v0; document declares irVersion=${e?.irVersion}. Newer fields are ignored.`);const n=t.displayList??e,o=Array.isArray(n?.items)?n.items:[];0===o.length&&r.push("Display list carried no items; the chart will render empty.");const i=[];x(o,i);const s=n?.viewport??{w:0,h:0};return{family:"network",networkLayout:k(n),layoutConfig:{displayList:n},nodes:i,edges:[],width:s.w,height:s.h,irVersion:n?.irVersion??0,warnings:r.length?r:void 0}}var w={irVersion:0,ir:"gofish-display-list",viewport:{w:725,h:608},items:[{kind:"rect",x:46,y:177.05109489051097,w:4,h:390.94890510948903,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"A",species:"Bass",count:23,x:5.26},{lake:"A",species:"Trout",count:31,x:5.26},{lake:"A",species:"Catfish",count:29,x:5.26},{lake:"A",species:"Perch",count:12,x:5.26},{lake:"A",species:"Salmon",count:8,x:5.26}],role:"node"},{kind:"rect",x:150.21159715157677,y:48,w:4,h:520,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"B",species:"Bass",count:25,x:30.87},{lake:"B",species:"Trout",count:34,x:30.87},{lake:"B",species:"Catfish",count:41,x:30.87},{lake:"B",species:"Perch",count:21,x:30.87},{lake:"B",species:"Salmon",count:16,x:30.87}],role:"node"},{kind:"rect",x:228.09562563580872,y:97.34306569343067,w:4,h:470.6569343065693,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"C",species:"Bass",count:15,x:50.01},{lake:"C",species:"Trout",count:25,x:50.01},{lake:"C",species:"Catfish",count:31,x:50.01},{lake:"C",species:"Perch",count:22,x:50.01},{lake:"C",species:"Salmon",count:31,x:50.01}],role:"node"},{kind:"rect",x:493.08036622583916,y:127.7080291970803,w:4,h:440.2919708029197,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"D",species:"Bass",count:12,x:115.13},{lake:"D",species:"Trout",count:17,x:115.13},{lake:"D",species:"Catfish",count:23,x:115.13},{lake:"D",species:"Perch",count:23,x:115.13},{lake:"D",species:"Salmon",count:41,x:115.13}],role:"node"},{kind:"rect",x:566,y:230.18978102189783,w:4,h:337.81021897810217,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"E",species:"Bass",count:7,x:133.05},{lake:"E",species:"Trout",count:9,x:133.05},{lake:"E",species:"Catfish",count:13,x:133.05},{lake:"E",species:"Perch",count:20,x:133.05},{lake:"E",species:"Salmon",count:40,x:133.05}],role:"node"},{kind:"rect",x:374.50457782299077,y:233.98540145985402,w:4,h:334.014598540146,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"F",species:"Bass",count:4,x:85.99},{lake:"F",species:"Trout",count:7,x:85.99},{lake:"F",species:"Catfish",count:9,x:85.99},{lake:"F",species:"Perch",count:21,x:85.99},{lake:"F",species:"Salmon",count:47,x:85.99}],role:"node"},{kind:"path",d:"M48,177.05109489051097 L51.33938470081845,157.33185276968038 Q62.585541795027574,147.83007294504642 78.5544659261578,151.23589371044534 L78.5544659261578,151.23589371044534 Q79.24615709420912,167.54931506587707 68,177.05109489051097 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M48,177.05109489051097 L28.23212580349808,180.08937561343197 Q15.395537702847022,167.0555157053688 19.932222868676277,148.55197408115367 L19.932222868676277,148.55197408115367 Q38.502796600167386,144.29799286161722 51.33938470081844,157.33185276968038 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M48,177.05109489051097 L54.872239108850245,195.83332930579792 Q46.05669091221945,210.74998921193776 27.648845679391155,211.4869848575027 L27.648845679391155,211.4869848575027 Q19.41657760686728,195.0060355195718 28.232125803498075,180.08937561343197 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M48,177.05109489051097 L65.6653119358892,186.42855479219708 Q73.1051493059896,194.96663366274248 74.27815052329349,207.20832959588688 L74.27815052329349,207.20832959588688 Q62.312076478950644,204.37140817634332 54.87223910885024,195.83332930579792 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M48,177.05109489051097 L68,177.05109489051097 Q78.2786737604877,179.61015642690683 86.81510630457642,186.7148168734962 L86.81510630457642,186.7148168734962 Q75.94398569637693,188.98761632859294 65.6653119358892,186.42855479219702 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M152.21159715157677,48 L160.44397423880116,29.77287824439236 Q171.53152518881467,22.61463788393587 185.8165831430777,26.304265015652845 L185.8165831430777,26.304265015652845 Q183.2991481015903,40.8417596395434 172.21159715157677,48 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M152.21159715157677,48 L134.08006108840306,39.55918250464856 Q128.5896756113119,24.768303125587636 138.2916438648223,10.500201327279456 L138.2916438648223,10.500201327279456 Q154.95358876170997,14.981998865331548 160.44397423880116,29.77287824439236 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M152.21159715157677,48 L149.69583253910324,67.84114231627365 Q133.7568401074522,76.6417934955033 117.19474012561054,67.33441811958761 L117.19474012561054,67.33441811958761 Q118.14106865675201,48.35983368387815 134.08006108840306,39.55918250464856 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M152.21159715157677,48 L167.06425994884756,61.393969084277046 Q171.3357758215148,72.90126238854208 166.1315504383313,85.49979867272054 L166.1315504383313,85.49979867272054 Q153.9673484117705,79.34843562053874 149.69583253910326,67.8411423162737 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M152.21159715157677,48 L172.21159715157677,48 Q182.78856757502288,52.06475728069893 189.5493329143521,62.348989097116544 L189.5493329143521,62.348989097116544 Q177.64123037229365,65.45872636497592 167.06425994884756,61.393969084277046 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L244.59148138039112,83.56372731191692 Q255.2031434952678,79.32490847658079 267.2417456186992,82.50508165863994 L267.2417456186992,82.50508165863994 Q260.7072877506854,93.10424685809448 250.09562563580872,97.34306569343067 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L221.28774260465605,79.38697490201582 Q223.73634923567542,65.7252387745541 237.15241628612105,57.97046474152933 L237.15241628612105,57.97046474152933 Q247.04008801141052,69.9019911844552 244.59148138039112,83.56372731191692 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L212.1395348443939,106.15094872458337 Q197.13404068352253,101.0219129902373 192.24565087293524,84.40554620746116 L192.24565087293524,84.40554620746116 Q206.28224844378468,74.25793916766975 221.28774260465602,79.38697490201582 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L230.09562563580872,117.34306569343067 Q223.20475072170726,128.39845190269688 208.9370652227302,131.2888359932207 L208.9370652227302,131.2888359932207 Q205.24865993029243,117.20633493384952 212.1395348443939,106.15094872458337 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L250.09562563580872,97.34306569343067 Q261.30882907140517,108.5562691290271 258.3798968832706,125.62733694089258 L258.3798968832706,125.62733694089258 Q241.30882907140514,128.5562691290271 230.09562563580872,117.34306569343067 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L511.00222753995206,115.604544893205 Q521.4708920183797,112.07724114106321 532.9864930731512,114.93596799164106 L532.9864930731512,114.93596799164106 Q525.5490307042668,124.18072544493856 515.0803662258392,127.7080291970803 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L495.08036622583916,107.7080291970803 Q500.4487867593998,96.88360352625733 512.8528344799953,91.87313876673278 L512.8528344799953,91.87313876673278 Q516.3706480735127,104.78011922238198 511.00222753995206,115.604544893205 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L476.1273028021831,121.3219985943607 Q468.1019971407863,110.14934771231418 471.7445830615394,95.22047428587183 L471.7445830615394,95.22047428587183 Q487.0550605644424,96.53537831503377 495.08036622583916,107.7080291970803 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L482.97688192196387,143.6298905111932 Q469.8265915055812,147.66765234861458 456.8422805189747,139.4489321212377 L456.8422805189747,139.4489321212377 Q462.97701238580044,125.35976043178209 476.1273028021831,121.3219985943607 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L515.0803662258392,127.7080291970803 Q524.4614595683939,146.62326636278448 512.8528344799954,163.5429196274278 L512.8528344799954,163.5429196274278 Q492.35797526451864,162.54512767689738 482.97688192196387,143.6298905111932 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M568,230.18978102189783 L585.6071292574618,220.70352784632678 Q595.8924011178875,218.10910772508834 606.7851153188756,220.40638540986583 L606.7851153188756,220.40638540986583 Q598.2852718604257,227.59536090065933 588,230.18978102189783 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M568,230.18978102189783 L576.5411287773276,212.10528160363612 Q584.1112349273089,204.12335319018302 595.5256468898348,201.16670807473855 L595.5256468898348,201.16670807473855 Q593.1772354074432,212.7215994328737 585.6071292574618,220.70352784632678 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M568,230.18978102189783 L558.8259633556381,212.4179760587573 Q558.6129628698615,200.35080064634843 567.2940607742748,190.1960108844179 L567.2940607742748,190.1960108844179 Q576.3281282915508,200.0381061912273 576.5411287773276,212.10528160363612 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M568,230.18978102189783 L549.0008039851402,236.4372245621737 Q535.3206483176143,230.84130803599493 530.9776373371512,215.04565137174967 L530.9776373371512,215.04565137174967 Q545.1458076881124,206.82205953257852 558.8259633556381,212.4179760587573 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M568,230.18978102189783 L588,230.18978102189783 Q592.244920932759,256.6883804021077 574.3270972337722,269.68620922236164 L574.3270972337722,269.68620922236164 Q553.2457249178992,262.93582394238365 549.0008039851402,236.4372245621737 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L395.6944372952807,228.3507503230254 Q405.79415081556374,226.89863074324114 416.0974354982281,228.29280792892263 L416.0974354982281,228.29280792892263 Q406.60429134327376,232.53328188006975 396.50457782299077,233.98540145985402 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L390.6467134467217,219.84326583612307 Q399.7811431049423,214.42355822457586 410.9051474312988,213.57460013741803 L410.9051474312988,213.57460013741803 Q404.8288669535013,222.9310427114782 395.6944372952807,228.3507503230254 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L379.35087458845646,214.18897262223538 Q384.2851746957395,204.33149675711883 394.40926622549927,198.21639066546555 L394.40926622549927,198.21639066546555 Q395.58101355400476,209.9857899710065 390.6467134467217,219.84326583612307 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L356.9616405035676,229.73409566879445 Q348.2002816724974,217.11533972951884 353.6916723455922,201.12857045503438 L353.6916723455922,201.12857045503438 Q370.5895157573863,201.5702166829597 379.35087458845646,214.18897262223538 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L396.50457782299077,233.98540145985402 Q393.069192835749,265.9391634085407 372.22877296038627,273.7562135307299 L372.22877296038627,273.7562135307299 Q353.5262555163258,261.6878576174812 356.9616405035676,229.7340956687945 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"rect",x:628,y:8,w:10,h:10,rx:0,ry:0,style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:16,text:"Bass",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:26,w:10,h:10,rx:0,ry:0,style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:34,text:"Trout",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:44,w:10,h:10,rx:0,ry:0,style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:52,text:"Catfish",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:62,w:10,h:10,rx:0,ry:0,style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:70,text:"Perch",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:80,w:10,h:10,rx:0,ry:0,style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:88,text:"Salmon",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]},S={irVersion:0,ir:"gofish-display-list",viewport:{w:1144.5,h:400},items:[{kind:"ellipse",cx:71,cy:73.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:260,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:140.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:252.4,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:205.889076455603,rx:31,ry:31,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:244.9,survived:!1},role:"node"},{kind:"ellipse",cx:71,cy:268.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:237.6,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:329.889076455603,rx:30,ry:30,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:230.4,survived:!0},role:"node"},{kind:"ellipse",cx:130,cy:71.389076455603,rx:28,ry:28,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:223.3,survived:!1},role:"node"},{kind:"ellipse",cx:185.5,cy:71.389076455603,rx:27.5,ry:27.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:216.3,survived:!1},role:"node"},{kind:"ellipse",cx:240,cy:71.389076455603,rx:27,ry:27,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:209.5,survived:!0},role:"node"},{kind:"ellipse",cx:292.5,cy:71.389076455603,rx:25.5,ry:25.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:202.8,survived:!0},role:"node"},{kind:"ellipse",cx:343,cy:71.389076455603,rx:25,ry:25,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:196.2,survived:!1},role:"node"},{kind:"ellipse",cx:129.5,cy:130.389076455603,rx:27.5,ry:27.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:189.7,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:184.389076455603,rx:26.5,ry:26.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:183.4,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:236.889076455603,rx:26,ry:26,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:177.2,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:287.389076455603,rx:24.5,ry:24.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:171.1,survived:!1},role:"node"},{kind:"ellipse",cx:129.5,cy:335.889076455603,rx:24,ry:24,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:165.2,survived:!0},role:"node"},{kind:"ellipse",cx:185,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:159.4,survived:!0},role:"node"},{kind:"ellipse",cx:240,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:153.7,survived:!1},role:"node"},{kind:"ellipse",cx:292.5,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:148.1,survived:!1},role:"node"},{kind:"ellipse",cx:343,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:142.7,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:172.389076455603,rx:22.5,ry:22.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:137.4,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:216.889076455603,rx:22,ry:22,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:132.2,survived:!1},role:"node"},{kind:"ellipse",cx:181.5,cy:259.889076455603,rx:21,ry:21,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:127.2,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:300.889076455603,rx:20,ry:20,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:122.3,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:340.389076455603,rx:19.5,ry:19.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:117.5,survived:!0},role:"node"},{kind:"ellipse",cx:227.5,cy:170.889076455603,rx:21,ry:21,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:112.8,survived:!1},role:"node"},{kind:"ellipse",cx:269.5,cy:170.889076455603,rx:20.5,ry:20.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:108.3,survived:!0},role:"node"},{kind:"ellipse",cx:310,cy:170.889076455603,rx:20,ry:20,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:103.9,survived:!0},role:"node"},{kind:"ellipse",cx:349,cy:170.889076455603,rx:19,ry:19,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:99.6,survived:!0},role:"node"},{kind:"ellipse",cx:227.5,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:95.4,survived:!1},role:"node"},{kind:"ellipse",cx:270,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:91.4,survived:!0},role:"node"},{kind:"ellipse",cx:310.5,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:87.5,survived:!0},role:"node"},{kind:"ellipse",cx:349,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:83.7,survived:!1},role:"node"},{kind:"ellipse",cx:224,cy:244.889076455603,rx:18,ry:18,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:80.1,survived:!1},role:"node"},{kind:"ellipse",cx:224,cy:279.889076455603,rx:17,ry:17,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:76.6,survived:!0},role:"node"},{kind:"ellipse",cx:224,cy:312.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:73.2,survived:!0},role:"node"},{kind:"ellipse",cx:224,cy:344.389076455603,rx:15.5,ry:15.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:69.9,survived:!1},role:"node"},{kind:"ellipse",cx:259,cy:242.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:66.8,survived:!0},role:"node"},{kind:"ellipse",cx:292,cy:242.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:63.8,survived:!0},role:"node"},{kind:"ellipse",cx:323.5,cy:242.889076455603,rx:15.5,ry:15.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:60.9,survived:!0},role:"node"},{kind:"ellipse",cx:353.5,cy:242.889076455603,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:58.2,survived:!1},role:"node"},{kind:"ellipse",cx:255,cy:276.889076455603,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:55.6,survived:!0},role:"node"},{kind:"ellipse",cx:255,cy:311.389076455603,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:53.1,survived:!0},role:"node"},{kind:"ellipse",cx:255,cy:343.889076455603,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:50.7,survived:!1},role:"node"},{kind:"ellipse",cx:281.5,cy:273.889076455603,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:48.5,survived:!1},role:"node"},{kind:"ellipse",cx:307.5,cy:273.889076455603,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:46.4,survived:!0},role:"node"},{kind:"ellipse",cx:332.5,cy:273.889076455603,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:44.4,survived:!0},role:"node"},{kind:"ellipse",cx:356.5,cy:273.889076455603,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:42.5,survived:!1},role:"node"},{kind:"ellipse",cx:281.5,cy:300.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:40.8,survived:!0},role:"node"},{kind:"ellipse",cx:281.5,cy:324.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:39.2,survived:!0},role:"node"},{kind:"ellipse",cx:281.5,cy:348.389076455603,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:37.7,survived:!0},role:"node"},{kind:"ellipse",cx:307,cy:300.889076455603,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:36.4,survived:!1},role:"node"},{kind:"ellipse",cx:307,cy:324.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:35.2,survived:!0},role:"node"},{kind:"ellipse",cx:307,cy:348.389076455603,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:34.1,survived:!0},role:"node"},{kind:"ellipse",cx:331.5,cy:299.389076455603,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:33.1,survived:!1},role:"node"},{kind:"ellipse",cx:356,cy:299.389076455603,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:32.3,survived:!1},role:"node"},{kind:"ellipse",cx:331,cy:319.889076455603,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:31.6,survived:!0},role:"node"},{kind:"ellipse",cx:355.5,cy:319.889076455603,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:31,survived:!0},role:"node"},{kind:"ellipse",cx:327,cy:344.889076455603,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.6,survived:!1},role:"node"},{kind:"ellipse",cx:343.5,cy:344.889076455603,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.3,survived:!1},role:"node"},{kind:"ellipse",cx:360,cy:344.889076455603,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.1,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:243.5,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:77,survived:!1},role:"node"},{kind:"ellipse",cx:393.5,cy:277.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:75.4,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:310.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:73.8,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:343.5,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:72.2,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:243.5,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:70.7,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:277.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:69.1,survived:!0},role:"node"},{kind:"ellipse",cx:428,cy:311,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:67.6,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:344,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:66.1,survived:!1},role:"node"},{kind:"ellipse",cx:459.5,cy:243.5,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:64.7,survived:!0},role:"node"},{kind:"ellipse",cx:459.5,cy:277.5,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:63.2,survived:!0},role:"node"},{kind:"ellipse",cx:459.5,cy:311,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:61.8,survived:!1},role:"node"},{kind:"ellipse",cx:459.5,cy:344,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:60.4,survived:!1},role:"node"},{kind:"ellipse",cx:488,cy:243.5,rx:13.5,ry:13.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:59,survived:!0},role:"node"},{kind:"ellipse",cx:488,cy:278,rx:13.5,ry:13.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:57.6,survived:!0},role:"node"},{kind:"ellipse",cx:488,cy:311.5,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:56.2,survived:!1},role:"node"},{kind:"ellipse",cx:488,cy:344,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:54.9,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:240,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:53.6,survived:!0},role:"node"},{kind:"ellipse",cx:517,cy:268,rx:14,ry:14,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:52.3,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:295,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:51,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:321,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:49.8,survived:!0},role:"node"},{kind:"ellipse",cx:517,cy:347,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:48.6,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:240,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:47.4,survived:!1},role:"node"},{kind:"ellipse",cx:546,cy:268,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:46.2,survived:!1},role:"node"},{kind:"ellipse",cx:546,cy:295,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:45,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:321,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:43.8,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:347,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:42.7,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:240,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:41.6,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:268,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:40.5,survived:!0},role:"node"},{kind:"ellipse",cx:571.5,cy:295,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:39.5,survived:!0},role:"node"},{kind:"ellipse",cx:571.5,cy:321.5,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:38.4,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:347.5,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:37.4,survived:!1},role:"node"},{kind:"ellipse",cx:596,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:36.4,survived:!0},role:"node"},{kind:"ellipse",cx:621,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:35.4,survived:!1},role:"node"},{kind:"ellipse",cx:645.5,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:34.4,survived:!1},role:"node"},{kind:"ellipse",cx:669,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:33.5,survived:!0},role:"node"},{kind:"ellipse",cx:692,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:32.6,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:261,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:31.7,survived:!1},role:"node"},{kind:"ellipse",cx:594.5,cy:284,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:30.8,survived:!1},role:"node"},{kind:"ellipse",cx:594.5,cy:306,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:29.9,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:328,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:29.1,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:349.5,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:28.3,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:259.5,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:27.4,survived:!1},role:"node"},{kind:"ellipse",cx:636,cy:259.5,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:26.7,survived:!0},role:"node"},{kind:"ellipse",cx:656,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:25.9,survived:!1},role:"node"},{kind:"ellipse",cx:675,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:25.2,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:24.4,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:279.5,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:23.7,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:298.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:23.1,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:317,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:22.4,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:334.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:21.8,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:351.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:21.1,survived:!0},role:"node"},{kind:"ellipse",cx:635.5,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:20.5,survived:!1},role:"node"},{kind:"ellipse",cx:655.5,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:20,survived:!1},role:"node"},{kind:"ellipse",cx:675,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:19.4,survived:!0},role:"node"},{kind:"ellipse",cx:694,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:18.9,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:296.5,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:18.3,survived:!1},role:"node"},{kind:"ellipse",cx:633,cy:315,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:17.9,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:333,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:17.4,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:351,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.9,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:295,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.5,survived:!1},role:"node"},{kind:"ellipse",cx:665,cy:295,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.1,survived:!0},role:"node"},{kind:"ellipse",cx:680.5,cy:295,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:15.7,survived:!0},role:"node"},{kind:"ellipse",cx:696,cy:295,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:15.3,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:310.5,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.9,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:325,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.6,survived:!0},role:"node"},{kind:"ellipse",cx:649,cy:339,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.3,survived:!0},role:"node"},{kind:"ellipse",cx:649,cy:353,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14,survived:!1},role:"node"},{kind:"ellipse",cx:665,cy:310,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.7,survived:!1},role:"node"},{kind:"ellipse",cx:680.5,cy:310,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.5,survived:!0},role:"node"},{kind:"ellipse",cx:696,cy:310,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.2,survived:!1},role:"node"},{kind:"ellipse",cx:664.5,cy:324,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13,survived:!1},role:"node"},{kind:"ellipse",cx:664.5,cy:338.5,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.8,survived:!0},role:"node"},{kind:"ellipse",cx:664.5,cy:353,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.7,survived:!0},role:"node"},{kind:"ellipse",cx:679.5,cy:323,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.5,survived:!1},role:"node"},{kind:"ellipse",cx:695.5,cy:323,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.4,survived:!1},role:"node"},{kind:"ellipse",cx:678,cy:337,rx:6.5,ry:6.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.3,survived:!0},role:"node"},{kind:"ellipse",cx:678,cy:352.5,rx:6.5,ry:6.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.2,survived:!0},role:"node"},{kind:"ellipse",cx:694,cy:334.5,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.1,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:345,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:355,rx:5,ry:5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12,survived:!0},role:"node"},{kind:"ellipse",cx:727.5,cy:171.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:70,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:206.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:69.2,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:241.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:68.4,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:275.9825665265031,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:67.5,survived:!0},role:"node"},{kind:"ellipse",cx:727.5,cy:309.9825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:66.7,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:343.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:65.9,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:171.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:65.1,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:206.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:64.4,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:241.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:63.6,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:275.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:62.8,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:309.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:62,survived:!0},role:"node"},{kind:"ellipse",cx:758.5,cy:343.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:61.2,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:169.4825665265031,rx:15.5,ry:15.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:60.5,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:199.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:59.7,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:229.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:59,survived:!0},role:"node"},{kind:"ellipse",cx:789,cy:259.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:58.2,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:288.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:57.5,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:317.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:56.7,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:345.9825665265031,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:56,survived:!0},role:"node"},{kind:"ellipse",cx:819.5,cy:169.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:55.3,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:199.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:54.5,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:229.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:53.8,survived:!0},role:"node"},{kind:"ellipse",cx:819.5,cy:259.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:53.1,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:288.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:52.4,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:317.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:51.7,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:345.9825665265031,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:51,survived:!0},role:"node"},{kind:"ellipse",cx:849.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:50.3,survived:!1},role:"node"},{kind:"ellipse",cx:879.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:49.6,survived:!1},role:"node"},{kind:"ellipse",cx:909.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:48.9,survived:!1},role:"node"},{kind:"ellipse",cx:939,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:48.2,survived:!0},role:"node"},{kind:"ellipse",cx:968,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:47.6,survived:!1},role:"node"},{kind:"ellipse",cx:997,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:46.9,survived:!1},role:"node"},{kind:"ellipse",cx:1025.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:46.2,survived:!0},role:"node"},{kind:"ellipse",cx:848,cy:193.4825665265031,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:45.6,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:220.4825665265031,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:44.9,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:246.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:44.3,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:272.4825665265031,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:43.6,survived:!0},role:"node"},{kind:"ellipse",cx:848,cy:297.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:43,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:322.9825665265031,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:42.4,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:347.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:41.7,survived:!1},role:"node"},{kind:"ellipse",cx:875,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:41.1,survived:!0},role:"node"},{kind:"ellipse",cx:901.5,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:40.5,survived:!1},role:"node"},{kind:"ellipse",cx:927.5,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:39.9,survived:!1},role:"node"},{kind:"ellipse",cx:953,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:39.3,survived:!1},role:"node"},{kind:"ellipse",cx:978,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:38.7,survived:!1},role:"node"},{kind:"ellipse",cx:1003,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:38.1,survived:!1},role:"node"},{kind:"ellipse",cx:1027.5,cy:192.4825665265031,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:37.5,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:218.4825665265031,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:36.9,survived:!0},role:"node"},{kind:"ellipse",cx:872.5,cy:244.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:36.3,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:270.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:35.8,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:296.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:35.2,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:322.4825665265031,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:34.6,survived:!0},role:"node"},{kind:"ellipse",cx:872.5,cy:347.4825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:34.1,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:216.9825665265031,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:33.5,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:239.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:33,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:262.4825665265031,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:32.4,survived:!0},role:"node"},{kind:"ellipse",cx:895,cy:284.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:31.9,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:306.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:31.4,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:328.4825665265031,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:30.8,survived:!0},role:"node"},{kind:"ellipse",cx:895,cy:349.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:30.3,survived:!1},role:"node"},{kind:"ellipse",cx:918,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:29.8,survived:!1},role:"node"},{kind:"ellipse",cx:941,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:29.3,survived:!1},role:"node"},{kind:"ellipse",cx:963.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:28.8,survived:!0},role:"node"},{kind:"ellipse",cx:985.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:28.3,survived:!1},role:"node"},{kind:"ellipse",cx:1007.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:27.8,survived:!1},role:"node"},{kind:"ellipse",cx:1029,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:27.3,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:236.9825665265031,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:26.8,survived:!0},role:"node"},{kind:"ellipse",cx:936.5,cy:236.9825665265031,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:26.3,survived:!1},role:"node"},{kind:"ellipse",cx:956,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:25.8,survived:!1},role:"node"},{kind:"ellipse",cx:975,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:25.3,survived:!1},role:"node"},{kind:"ellipse",cx:994,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24.9,survived:!1},role:"node"},{kind:"ellipse",cx:1012.5,cy:236.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24.4,survived:!1},role:"node"},{kind:"ellipse",cx:1030.5,cy:236.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:257.4825665265031,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:23.5,survived:!0},role:"node"},{kind:"ellipse",cx:916.5,cy:276.9825665265031,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:23.1,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:295.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:22.6,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:314.4825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:22.2,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:332.9825665265031,rx:9,ry:9,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:21.8,survived:!0},role:"node"},{kind:"ellipse",cx:916.5,cy:350.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:21.3,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:257.4825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.9,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:276.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.5,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:296.4825665265031,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.1,survived:!0},role:"node"},{kind:"ellipse",cx:935,cy:314.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:19.7,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:332.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:19.3,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:350.9825665265031,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.9,survived:!0},role:"node"},{kind:"ellipse",cx:952,cy:256.4825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.5,survived:!1},role:"node"},{kind:"ellipse",cx:968.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.1,survived:!1},role:"node"},{kind:"ellipse",cx:984.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17.7,survived:!1},role:"node"},{kind:"ellipse",cx:1000.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17.4,survived:!0},role:"node"},{kind:"ellipse",cx:1016.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17,survived:!1},role:"node"},{kind:"ellipse",cx:1032,cy:256.4825665265031,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:16.6,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:273.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:16.3,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:289.9825665265031,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.9,survived:!0},role:"node"},{kind:"ellipse",cx:951.5,cy:305.9825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.6,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:321.9825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.2,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:337.4825665265031,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.9,survived:!0},role:"node"},{kind:"ellipse",cx:951.5,cy:352.4825665265031,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.6,survived:!1},role:"node"},{kind:"ellipse",cx:967.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.2,survived:!1},role:"node"},{kind:"ellipse",cx:984,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.9,survived:!1},role:"node"},{kind:"ellipse",cx:1000.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.6,survived:!0},role:"node"},{kind:"ellipse",cx:1016.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.3,survived:!1},role:"node"},{kind:"ellipse",cx:1032,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13,survived:!1},role:"node"},{kind:"ellipse",cx:966.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.7,survived:!1},role:"node"},{kind:"ellipse",cx:980.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.4,survived:!0},role:"node"},{kind:"ellipse",cx:994,cy:285.9825665265031,rx:6.5,ry:6.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.1,survived:!1},role:"node"},{kind:"ellipse",cx:1007.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.8,survived:!1},role:"node"},{kind:"ellipse",cx:1020.5,cy:285.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.5,survived:!1},role:"node"},{kind:"ellipse",cx:1033,cy:285.9825665265031,rx:6.5,ry:6.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.2,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:299.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:313.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.7,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:327.4825665265031,rx:6,ry:6,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.4,survived:!0},role:"node"},{kind:"ellipse",cx:965.5,cy:340.4825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.2,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:353.4825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.9,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:299.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.7,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:313.9825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.5,survived:!0},role:"node"},{kind:"ellipse",cx:977,cy:327.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.2,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:340.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:353.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.8,survived:!1},role:"node"},{kind:"ellipse",cx:988.5,cy:298.9825665265031,rx:6,ry:6,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.5,survived:!0},role:"node"},{kind:"ellipse",cx:1000.5,cy:298.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.3,survived:!1},role:"node"},{kind:"ellipse",cx:1012,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.1,survived:!1},role:"node"},{kind:"ellipse",cx:1023,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.9,survived:!0},role:"node"},{kind:"ellipse",cx:1034,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.7,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:310.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.5,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:321.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.3,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:333.4825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.2,survived:!0},role:"node"},{kind:"ellipse",cx:988,cy:343.9825665265031,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:354.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.8,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:310.4825665265031,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.6,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.5,survived:!0},role:"node"},{kind:"ellipse",cx:1017,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.3,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.2,survived:!1},role:"node"},{kind:"ellipse",cx:1035,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6,survived:!0},role:"node"},{kind:"ellipse",cx:998.5,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.9,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:329.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.7,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:338.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.6,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:346.9825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.5,survived:!0},role:"node"},{kind:"ellipse",cx:998.5,cy:355.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.4,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.2,survived:!1},role:"node"},{kind:"ellipse",cx:1017,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.1,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5,survived:!0},role:"node"},{kind:"ellipse",cx:1035,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.9,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:329.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.8,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:338.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.7,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:346.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.7,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:355.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.6,survived:!1},role:"node"},{kind:"ellipse",cx:1017,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.5,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.4,survived:!0},role:"node"},{kind:"ellipse",cx:1035,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.4,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:337.4825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.3,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:346.4825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.3,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:355.4825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.2,survived:!0},role:"node"},{kind:"ellipse",cx:1025,cy:336.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.2,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:336.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!1},role:"node"},{kind:"ellipse",cx:1025,cy:343.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:343.4825665265031,rx:3.5,ry:3.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!0},role:"node"},{kind:"ellipse",cx:1025,cy:349.9825665265031,rx:3,ry:3,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"ellipse",cx:1025,cy:356.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:349.9825665265031,rx:3,ry:3,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!0},role:"node"},{kind:"ellipse",cx:1034.5,cy:356.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"rect",x:1059.5,y:42.889076455603,w:10,h:10,rx:0,ry:0,style:{fill:"#2b8cbe",stroke:"#2b8cbe",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:1074.5,y:50.889076455603,text:"true",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:1059.5,y:60.889076455603,w:10,h:10,rx:0,ry:0,style:{fill:"#ff8408",stroke:"#ff8408",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:1074.5,y:68.889076455603,text:"false",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]},A={irVersion:0,ir:"gofish-display-list",viewport:{w:928,h:440},items:[{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:40,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Planning",amount:64}],role:"node"}],dest:[{kind:"rect",x:0,y:129.60000000000002,w:160,h:230.4,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Planning",amount:64}],role:"node"}]},{kind:"text",x:40,y:397.4,text:"Planning",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Planning",amount:64}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:224,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Design",amount:82}],role:"node"}],dest:[{kind:"rect",x:0,y:64.80000000000001,w:160,h:295.2,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Design",amount:82}],role:"node"}]},{kind:"text",x:224,y:397.4,text:"Design",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Design",amount:82}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:408,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Build",amount:46}],role:"node"}],dest:[{kind:"rect",x:0,y:194.40000000000003,w:160,h:165.6,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Build",amount:46}],role:"node"}]},{kind:"text",x:408,y:397.4,text:"Build",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Build",amount:46}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:592,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Review",amount:71}],role:"node"}],dest:[{kind:"rect",x:0,y:104.40000000000003,w:160,h:255.6,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Review",amount:71}],role:"node"}]},{kind:"text",x:592,y:397.4,text:"Review",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Review",amount:71}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:776,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Ship",amount:55}],role:"node"}],dest:[{kind:"rect",x:0,y:162.00000000000003,w:160,h:198,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Ship",amount:55}],role:"node"}]},{kind:"text",x:776,y:397.4,text:"Ship",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Ship",amount:55}],style:{fill:"black",strokeWidth:0}}]},j={irVersion:0,ir:"gofish-display-list",viewport:{w:1080,h:540},items:[{kind:"rect",x:40,y:260,w:180,h:240,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:50.80000000000001,y:495.6,text:"Global Frame",fontSize:22,fontFamily:"Andale Mono, monospace",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:40,y:450.5,text:"c",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:425.8,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:461.8,text:"",fontSize:1,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:40,y:402.3,text:"d",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:377.6,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:413.6,text:"",fontSize:1,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:40,y:352,text:"x",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:325.2,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:361.2,text:"5",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:300,y:497.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:300,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:300,y:475.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:318.8,y:456.6,text:"12",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:364,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:364,y:475.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:396,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"rect",x:428,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:428,y:475.4,text:"2",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:453.4,y:456.6,text:"1",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:492,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:492,y:475.4,text:"3",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:517.4,y:456.6,text:"0",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:556,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:556,y:475.4,text:"4",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:588,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"rect",x:620,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:620,y:475.4,text:"5",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:652,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:744,y:497.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:744,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:744,y:475.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:769.4,y:456.6,text:"3",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:808,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:808,y:475.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:826.8,y:456.6,text:"10",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:872,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:872,y:475.4,text:"2",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:897.4,y:456.6,text:"7",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:936,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:936,y:475.4,text:"3",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:961.4,y:456.6,text:"8",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:1e3,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:1e3,y:475.4,text:"4",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:1032,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:300,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:300,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:300,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:325.4,y:338.6,text:"1",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:364,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:364,y:357.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:389.4,y:338.6,text:"4",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:488,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:488,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:488,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:513.4,y:338.6,text:"2",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:552,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:552,y:357.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:584,y:338.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:676,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:676,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:676,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:701.4,y:338.6,text:"3",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"ellipse",cx:95.2,cy:442.256623535435,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M95.2,442.256623535435 Q188.49277766649115,350.74940120192616 280,444.0421788684173",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M275.7165664491033,448.2436306431081 L288.4029035493816,452.6090459702107 L284.2834335508967,439.84072709372646 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:95.2,cy:395.1152555448267,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M95.2,395.1152555448267 Q210.4866869761144,464.6285685687123 280,349.34188159259793",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M285.1382344395092,352.44003375875144 L286.196304332307,339.0654127135796 L274.8617655604908,346.2437294264444 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:392.17861250585145,cy:422,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M392.17861250585145,422 Q415.3476277290524,387.2641493166031 380.6117770456555,364.09513409340207",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M383.9411501976934,359.1036138425677 L370.6287365439868,357.4363877893263 L377.28240389361764,369.0866543442364 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:620,cy:450,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M620,450 Q672,450 724,450",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M724,456 L736,450 L724,444 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:620,cy:440.329588579088,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M620,440.329588579088 Q549.381026799069,450.618973200931 539.091642177226,380",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M545.0289506548122,379.13491732072356 L537.3614768186732,368.1253830448278 L533.1543336996399,380.86508267927644 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:1e3,cy:447.7757417334632,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M1000,447.7757417334632 Q839.4630921779626,509.040852965706 760.5097174269315,356.4240870361933",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M765.8388285137876,353.66717299619364 L754.9958893469321,345.7658648624812 L755.1806063400754,359.18100107619307 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:616,cy:332,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M616,332 Q636,332 656,332",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M656,338 L668,332 L656,326 Z",role:"overlay",style:{fill:"#1A5683"}}]},$=[{key:"flower",label:"Flower meadow",source:"https://gofish.graphics/js/examples/flower-chart.html",blurb:"GoFish's real flower chart, verbatim: a meadow where each lake is a green stem (a bar whose height is the lake's total catch) topped by a polar fan of petals, one per species, sized by count. It is layer([stems, flowers]) — the flowers selectAll the stems and stack a polar petal fan on each. The composition's root is a combinator (no ChartBuilder.toDisplayList), so it is baked through GoFish's mark-resolution contract; see gofish-displaylist-findings.md.",doc:w},{key:"polarribbon",label:"Polar ribbon chart",source:"https://gofish.graphics/js/examples/polar-ribbon-chart.html",blurb:"GoFish's polar ribbon chart, verbatim: the catch stacked radially per lake under a clock() projection, then a smooth area ribbon drawn across the lakes for each species (selectAll the bars, group by species). The wrap, the open gap, and the bumped ribbons are all baked into absolute-pixel paths; the radial bars keep their datum (hit targets), the ribbons are area chrome. Root is a layer({ coord: clock() }) combinator, baked through GoFish's mark-resolution contract — see gofish-displaylist-findings.md.",doc:{irVersion:0,ir:"gofish-display-list",viewport:{w:756.7000339982667,h:648},items:[{kind:"path",d:"M337.2610735347595,258.07748685525206 L342.25899046182735,258.07748685525206 C342.35627349970906,256.1334477518769 342.4535565709103,254.18940798266829 342.5508396254517,252.24536854637637 C342.6481226799932,250.30132911008445 342.74540575119437,248.35728934087587 342.84268878907613,246.41325023750068 L336.6773752075107,246.41325023750068 C336.77465824539246,248.35728934087587 336.8719413165936,250.30132911008445 336.9692243711351,252.24536854637637 C337.06650742567655,254.18940798266829 337.16379049687777,256.1334477518769 337.2610735347595,258.07748685525206",datum:[{lake:"A",species:"Salmon",count:8}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M336.6773752075107,246.41325023750068 L342.84268878907613,246.41325023750068 C342.9886133542286,243.4971914159795 343.13453795270055,240.58113192862493 343.2804625345127,237.66507277418708 C343.4263871163249,234.74901361974923 343.57231171479685,231.83295413239466 343.71823627994934,228.91689531087349 L335.8018277166375,228.91689531087349 C335.94775228179,231.83295413239466 336.0936768802619,234.74901361974923 336.2396014620741,237.66507277418708 C336.38552604388633,240.58113192862493 336.5314506423582,243.4971914159795 336.6773752075107,246.41325023750068",datum:[{lake:"A",species:"Perch",count:12}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M335.8018277166375,228.91689531087349 L343.71823627994934,228.91689531087349 C343.858080654193,226.1223389541206 343.99792506175606,223.32778193153428 344.1377694526594,220.53322524186467 C344.2776138435628,217.73866855219507 344.41745823446615,214.94411186252546 344.55730262536946,212.1495551728558 C344.6971470162728,209.3549984831862 344.8369914071762,206.5604417935166 344.97683579807955,203.76588510384698 C345.1166801889829,200.97132841417738 345.256524596546,198.17677139159105 345.39636897078964,195.38221503483817 L334.1236950257972,195.38221503483817 C334.2635394000408,198.17677139159105 334.4033838076039,200.97132841417738 334.5432281985073,203.76588510384698 C334.68307258941064,206.5604417935166 334.822916980314,209.3549984831862 334.96276137121737,212.1495551728558 C335.10260576212073,214.94411186252546 335.2424501530241,217.73866855219507 335.38229454392746,220.53322524186467 C335.52213893483076,223.32778193153428 335.66198334239385,226.1223389541206 335.8018277166375,228.91689531087349",datum:[{lake:"A",species:"Bass",count:23}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M334.1236950257972,195.38221503483817 L345.39636897078964,195.38221503483817 C345.48453172230813,193.62042962861528 345.572694507146,191.85864355655906 345.66085727532425,190.0968578174195 C345.74902004350247,188.33507207827995 345.83718281168063,186.57328633914045 345.92534557985886,184.8115006000009 C346.0135083480371,183.04971486086134 346.10167111621524,181.28792912172185 346.18983388439347,179.5261433825823 C346.2779966525717,177.76435764344274 346.36615942074985,176.00257190430318 346.4543221889281,174.24078616516363 C346.5424849571063,172.47900042602413 346.63064772528446,170.71721468688457 346.7188104934627,168.95542894774508 C346.8069732616409,167.19364320860552 346.8951360298191,165.43185746946597 346.9832987979973,163.6700717303264 C347.0714615661755,161.90828599118686 347.15962433435374,160.14650025204736 347.2477871025319,158.3847145129078 C347.3359498707101,156.6229287737683 347.4241126555481,154.86114270171208 347.5122754070665,153.0993572954892 L332.0077885895203,153.0993572954892 C332.0959513410388,154.86114270171208 332.1841141258767,156.6229287737683 332.2722768940549,158.3847145129078 C332.36043966223315,160.14650025204736 332.4486024304113,161.90828599118686 332.53676519858953,163.6700717303264 C332.62492796676776,165.43185746946597 332.7130907349459,167.19364320860552 332.80125350312414,168.95542894774508 C332.88941627130237,170.71721468688457 332.9775790394806,172.47900042602413 333.06574180765875,174.24078616516363 C333.153904575837,176.00257190430318 333.2420673440152,177.76435764344274 333.33023011219336,179.5261433825823 C333.4183928803716,181.28792912172185 333.5065556485498,183.04971486086134 333.59471841672797,184.8115006000009 C333.6828811849062,186.57328633914045 333.7710439530844,188.33507207827995 333.8592067212626,190.0968578174195 C333.9473694894408,191.85864355655906 334.03553227427875,193.62042962861528 334.1236950257972,195.38221503483817",datum:[{lake:"A",species:"Catfish",count:29}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M332.0077885895203,153.0993572954892 L347.5122754070665,153.0993572954892 C347.60651834949385,151.21606942449813 347.7007613252406,149.3327808876736 347.79500428432766,147.44949268376587 C347.88924724341473,145.56620447985807 347.98349020250174,143.68291627595033 348.0777331615888,141.79962807204254 C348.1719761206758,139.91633986813474 348.2662190797629,138.03305166422695 348.36046203884996,136.14976346031915 C348.454704997937,134.26647525641135 348.54894795702404,132.38318705250356 348.64319091611105,130.49989884859582 C348.7374338751981,128.61661064468802 348.8316768342852,126.73332244078028 348.9259197933722,124.85003423687249 C349.02016275245927,122.96674603296469 349.1144057115463,121.0834578290569 349.20864867063335,119.2001696251491 C349.3028916297204,117.3168814212413 349.39713458880743,115.43359321733351 349.4913775478945,113.55030501342577 C349.5856205069815,111.66701680951797 349.6798634827283,109.78372827269351 349.77410642515565,107.90044040170244 L329.74595757143123,107.90044040170244 C329.8402005138586,109.78372827269351 329.9344434896053,111.66701680951797 330.0286864486924,113.55030501342577 C330.1229294077794,115.43359321733351 330.21717236686646,117.3168814212413 330.3114153259535,119.2001696251491 C330.40565828504054,121.0834578290569 330.4999012441276,122.96674603296469 330.5941442032146,124.85003423687249 C330.6883871623017,126.73332244078028 330.7826301213887,128.61661064468802 330.8768730804758,130.49989884859582 C330.97111603956284,132.38318705250356 331.06535899864986,134.26647525641135 331.1596019577369,136.14976346031915 C331.25384491682394,138.03305166422695 331.348087875911,139.91633986813474 331.4423308349981,141.79962807204254 C331.5365737940851,143.68291627595033 331.63081675317216,145.56620447985807 331.72505971225917,147.44949268376587 C331.81930267134624,149.3327808876736 331.913545647093,151.21606942449813 332.0077885895203,153.0993572954892",datum:[{lake:"A",species:"Trout",count:31}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M381.75770764344463,280.8820818527037 L384.25666610697857,285.21040487754874 C385.9888948753927,284.32263490802404 387.7211242370952,283.43486463443816 389.45335330215346,282.54709451288284 C391.1855823672118,281.6593243913276 392.91781143227007,280.77155426977225 394.6500404973284,279.883784148217 C396.3822695623867,278.99601402666167 398.11449862744496,278.1082439051064 399.8467276925033,277.2204737835511 C401.57895675756157,276.33270366199577 403.31118611926405,275.4449333884099 405.0434148876782,274.5571634188852 L401.3770597696467,268.2068500758644 C399.7421140391143,269.26311920971494 398.107167748613,270.31938870533764 396.47222173809615,271.37565802007424 C394.83727572757937,272.4319273348109 393.2023297170625,273.4881966495475 391.5673837065457,274.5444659642841 C389.93243769602884,275.6007352790207 388.297491685512,276.6570045937573 386.66254567499516,277.71327390849393 C385.0275996644783,278.7695432232305 383.39265337397705,279.82581271885323 381.75770764344463,280.8820818527037",datum:[{lake:"B",species:"Salmon",count:16}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M401.3770597696467,268.2068500758644 L405.0434148876782,274.5571634188852 C407.31696523892305,273.3919652863745 409.5905161834562,272.2267668498025 411.86406683134527,271.0615685652612 C414.1376174792343,269.8963702807199 416.41116812712335,268.73117199617855 418.68471877501236,267.56597371163724 C420.95826942290137,266.40077542709594 423.2318200707904,265.2355771425546 425.5053707186794,264.07037885801327 C427.7789213665684,262.90518057347197 430.0524723111016,261.7399821369 432.3260226623465,260.5747840043893 L427.1274594352868,251.5706083687628 C424.98159307646796,252.95696166346852 422.83572615768014,254.34331531994644 420.6898595188768,255.7296687955382 C418.54399288007346,257.11602227113 416.3981262412701,258.50237574672184 414.2522596024668,259.8887292223136 C412.10639296366344,261.2750826979054 409.9605263248601,262.66143617349724 407.81465968605676,264.04778964908905 C405.6687930472534,265.4341431246808 403.52292612846554,266.82049678115874 401.3770597696467,268.2068500758644",datum:[{lake:"B",species:"Perch",count:21}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M427.1274594352868,251.5706083687628 L432.3260226623465,260.5747840043893 C435.0326302798559,259.1876433414898 437.73923849065363,257.800502374529 440.44584640480724,256.41336155959885 C443.15245431896085,255.0262207446687 445.85906223311446,253.63907992973856 448.56567014726807,252.2519391148084 C451.2722780614217,250.86479829987826 453.9788859755753,249.47765748494805 456.68549388972883,248.0905166700179 C459.39210180388244,246.70337585508776 462.09871001468025,245.31623488812704 464.80531763218966,243.92909422522746 L457.78269713247755,231.76555871745137 C455.2280942710295,233.4159793408412 452.67349084961245,235.0664003260033 450.11888770817984,236.71682113027924 C447.56428456674735,238.36724193455518 445.00968142531474,240.01766273883118 442.4550782838822,241.66808354310712 C439.90047514244964,243.31850434738305 437.3458720010171,244.968925151659 434.79126885958453,246.619345955935 C432.236665718152,248.26976676021093 429.68206229673495,249.92018774537297 427.1274594352868,251.5706083687628",datum:[{lake:"B",species:"Bass",count:25}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M457.78269713247755,231.76555871745137 L464.80531763218966,243.92909422522746 C466.6458107171699,242.98583862310556 468.48630439543854,242.04258271692248 470.326797777063,241.09932696276996 C472.1672911586875,240.1560712086175 474.0077845403119,239.212815454465 475.8482779219363,238.26955970031247 C477.68877130356077,237.32630394615995 479.52926468518524,236.3830481920075 481.36975806680965,235.43979243785498 C483.2102514484341,234.49653668370246 485.05074483005853,233.55328092954994 486.891238211683,232.61002517539748 C488.7317315933075,231.66676942124496 490.57222497493194,230.72351366709245 492.4127183565564,229.78025791293993 C494.2532117381808,228.8370021587874 496.09370511980524,227.89374640463495 497.9341985014297,226.95049065048244 C499.7746918830542,226.00723489632992 501.6151852646786,225.06397914217746 503.455678646303,224.12072338802494 C505.29617202792747,223.17746763387242 507.13666570619614,222.23421172768934 508.9771587911764,221.29095612556745 L499.4738204006569,204.83069119166782 C497.7366905444672,205.95297715768942 495.9995601283086,207.0752634854831 494.26242999213446,208.1975496323908 C492.5252998559603,209.31983577929844 490.7881697197862,210.44212192620608 489.051039583612,211.56440807311373 C487.31390944743794,212.68669422002137 485.57677931126375,213.808980366929 483.8396491750897,214.93126651383665 C482.1025190389155,216.05355266074434 480.36538890274136,217.17583880765199 478.6282587665672,218.29812495455963 C476.89112863039304,219.42041110146727 475.15399849421897,220.5426972483749 473.4168683580448,221.66498339528255 C471.67973822187065,222.7872695421902 469.9426080856965,223.90955568909783 468.2054779495224,225.03184183600547 C466.46834781334826,226.1541279829131 464.73121767717413,227.2764141298208 462.994087541,228.39870027672845 C461.2569574048258,229.5209864236361 459.5198269886672,230.64327275142983 457.78269713247755,231.76555871745137",datum:[{lake:"B",species:"Trout",count:34}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M499.4738204006569,204.83069119166782 L508.9771587911764,221.29095612556745 C511.1965769841381,220.1535008093553 513.4159957703882,219.01604518908198 515.6354142599943,217.87858972083927 C517.8548327496002,216.74113425259657 520.0742512392062,215.6036787843538 522.2936697288121,214.4662233161111 C524.513088218418,213.3287678478684 526.732506708024,212.19131237962563 528.95192519763,211.05385691138292 C531.1713436872359,209.91640144314022 533.3907621768419,208.7789459748975 535.6101806664478,207.64149050665475 C537.8295991560537,206.50403503841204 540.0490176456597,205.36657957016934 542.2684361352657,204.22912410192657 C544.4878546248716,203.09166863368387 546.7072731144775,201.95421316544116 548.9266916040835,200.81675769719845 C551.1461100936895,199.67930222895575 553.3655285832954,198.54184676071299 555.5849470729013,197.40439129247028 C557.8043655625073,196.26693582422752 560.0237843487574,195.12948020395424 562.2432025417193,193.9920248877421 L549.7484102240496,172.35040976351706 C547.6536359280594,173.70375464213726 545.5588610721002,175.05709988252966 543.4640864961256,176.41044494203595 C541.3693119201508,177.76379000154225 539.2745373441761,179.1171350610485 537.1797627682014,180.47048012055478 C535.0849881922268,181.82382518006108 532.990213616252,183.17717023956732 530.8954390402773,184.5305152990736 C528.8006644643026,185.8838603585799 526.705889888328,187.2372054180862 524.6111153123533,188.59055047759244 C522.5163407363785,189.94389553709874 520.4215661604038,191.29724059660504 518.3267915844292,192.65058565611128 C516.2320170084545,194.00393071561757 514.1372424324798,195.35727577512387 512.042467856505,196.71062083463016 C509.9476932805304,198.06396589413646 507.8529187045557,199.4173109536427 505.75814412858097,200.770656013149 C503.6633695526063,202.12400107265523 501.5685946966471,203.47734631304763 499.4738204006569,204.83069119166782",datum:[{lake:"B",species:"Catfish",count:41}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M384.25666610697857,330.81959487245206 L381.75770764344463,335.1479178972971 C383.2904692483197,336.1381701989765 384.82323141316374,337.1284228624282 386.35599329802324,338.1186753449938 C387.8887551828828,339.10892782755934 389.42151706774234,340.0991803101249 390.95427895260184,341.0894327926905 C392.4870408374614,342.07968527525605 394.01980272232095,343.0699377578216 395.55256460718044,344.0601902403872 C397.08532649204,345.05044272295277 398.61808865688397,346.0406953864044 400.15085026175905,347.0309476880839 L403.74424308888445,340.80700873994914 C402.1202786370365,339.97472440302164 400.49631359190016,339.14243976203295 398.872348843408,338.3101552730749 C397.2483840949158,337.47787078411676 395.6244193464237,336.6455862951587 394.00045459793154,335.81330180620057 C392.37648984943934,334.9810173172425 390.7525251009472,334.14873282828444 389.12856035245505,333.3164483393263 C387.5045956039629,332.48416385036825 385.88063055882657,331.65187920937956 384.25666610697857,330.81959487245206",datum:[{lake:"C",species:"Bass",count:15}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M403.74424308888445,340.80700873994914 L400.15085026175905,347.0309476880839 C402.3989007462352,348.4833178149606 404.64695179068036,349.9356883036096 406.895002555141,351.3880586113724 C409.1430533196017,352.84042891913526 411.3911040840623,354.29279922689807 413.63915484852294,355.74516953466093 C415.8872056129836,357.1975398424238 418.13525637744425,358.64991015018666 420.3833071419049,360.10228045794946 C422.63135790636557,361.55465076571227 424.87940895081067,363.00702125436123 427.1274594352868,364.459391381238 L432.3260226623465,355.4552157456115 C429.9442079945355,354.23453198050356 427.5623927334361,353.01384791133444 425.180577768981,351.79316399419594 C422.7987628045258,350.5724800770574 420.41694784007063,349.3517961599189 418.03513287561543,348.1311122427803 C415.6533179111603,346.91042832564176 413.27150294670514,345.68974440850326 410.88968798224994,344.4690604913647 C408.5078730177948,343.2483765742262 406.12605775669545,342.0276925050571 403.74424308888445,340.80700873994914",datum:[{lake:"C",species:"Perch",count:22}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M432.3260226623465,355.4552157456115 L427.1274594352868,364.459391381238 C429.68206229673495,366.1098120046278 432.236665718152,367.76023298978987 434.79126885958453,369.41065379406587 C437.3458720010171,371.06107459834175 439.90047514244964,372.71149540261774 442.4550782838822,374.3619162068937 C445.00968142531474,376.0123370111696 447.56428456674735,377.6627578154456 450.11888770817984,379.31317861972155 C452.67349084961245,380.9635994239975 455.2280942710295,382.6140204091596 457.78269713247755,384.2644410325494 L464.80531763218966,372.10090552477334 C462.09871001468025,370.71376486187376 459.39210180388244,369.32662389491304 456.68549388972883,367.9394830799829 C453.9788859755753,366.55234226505274 451.2722780614217,365.1652014501226 448.56567014726807,363.77806063519245 C445.85906223311446,362.3909198202623 443.15245431896085,361.0037790053321 440.44584640480724,359.61663819040194 C437.73923849065363,358.2294973754718 435.0326302798559,356.842356408511 432.3260226623465,355.4552157456115",datum:[{lake:"C",species:"Trout",count:25}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M464.80531763218966,372.10090552477334 L457.78269713247755,384.2644410325494 C459.36655080018124,385.2877017503144 460.9504050278539,386.3109628298516 462.5342589755421,387.3342237285027 C464.1181129232303,388.3574846271538 465.70196687091845,389.38074552580485 467.2858208186067,390.40400642445593 C468.86967476629485,391.42726732310706 470.453528713983,392.45052822175813 472.03738266167124,393.47378912040926 C473.62123660935936,394.49705001906034 475.2050905570476,395.5203109177114 476.78894450473575,396.5435718163625 C478.3727984524239,397.56683271501356 479.95665240011215,398.5900936136647 481.5405063478003,399.61335451231577 C483.1243602954885,400.63661541096684 484.7082142431767,401.65987630961797 486.2920681908649,402.68313720826905 C487.87592213855305,403.7063981069201 489.4597760862413,404.7296590055712 491.0436300339294,405.7529199042223 C492.6274839816176,406.7761808028734 494.21133820929026,407.7994418824106 495.795191876994,408.8227026001756 L505.0796433947952,392.7415608509339 C503.4015467846641,391.8815336977078 501.7234495812447,391.02150624042054 500.0453526744695,390.16147893516387 C498.36725576769425,389.30145162990715 496.68915886091906,388.4414243246505 495.0110619541438,387.58139701939376 C493.3329650473686,386.7213697141371 491.65486814059335,385.8613424088804 489.9767712338181,385.0013151036237 C488.2986743270429,384.141287798367 486.62057742026764,383.2812604931103 484.9424805134924,382.4212331878536 C483.26438360671716,381.56120588259694 481.586286699942,380.7011785773402 479.90818979316674,379.84115127208355 C478.2300928863915,378.9811239668269 476.55199597961627,378.12109666157016 474.873899072841,377.26106935631344 C473.1958021660658,376.4010420510568 471.51770525929055,375.54101474580006 469.83960835251537,374.6809874405434 C468.1615114457401,373.82096013528667 466.4834142423207,372.9609326779994 464.80531763218966,372.10090552477334",datum:[{lake:"C",species:"Catfish",count:31}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M505.0796433947952,392.7415608509339 L495.795191876994,408.8227026001756 C497.37904554469776,409.8459633179406 498.9628997723704,410.86922439747775 500.5467537200586,411.8924852961289 C502.13060766774674,412.91574619477996 503.71446161543497,413.93900709343103 505.2983155631231,414.96226799208216 C506.8821695108113,415.98552889073324 508.4660234584995,417.0087897893843 510.04987740618765,418.0320506880354 C511.6337313538759,419.0553115866865 513.217585301564,420.0785724853376 514.8014392492522,421.1018333839887 C516.3852931969404,422.1250942826398 517.9691471446286,423.14835518129087 519.5530010923168,424.17161607994194 C521.136855040005,425.194876978593 522.7207089876931,426.21813787724415 524.3045629353813,427.2413987758952 C525.8884168830696,428.2646596745463 527.4722708307577,429.2879205731974 529.0561247784459,430.3111814718485 C530.6399787261341,431.3344423704996 532.2238329538068,432.35770345003675 533.8076866215105,433.3809641678018 L545.3539691574008,413.38221617709456 C543.6758725472697,412.52218902386846 541.9977753438503,411.6621615665812 540.319678437075,410.8021342613245 C538.6415815302998,409.9421069560678 536.9634846235247,409.0820796508111 535.2853877167494,408.2220523455544 C533.6072908099741,407.36202504029774 531.9291939031989,406.501997735041 530.2510969964237,405.64197042978435 C528.5730000896484,404.78194312452763 526.8949031828732,403.92191581927096 525.2168062760979,403.06188851401424 C523.5387093693228,402.2018612087576 521.8606124625476,401.34183390350086 520.1825155557723,400.4818065982442 C518.504418648997,399.62177929298747 516.8263217422218,398.7617519877308 515.1482248354466,397.9017246824741 C513.4701279286713,397.0416973772174 511.79203102189615,396.1816700719607 510.1139341151209,395.32164276670403 C508.4358372083457,394.4616154614473 506.7577400049263,393.60158800416 505.0796433947952,392.7415608509339",datum:[{lake:"C",species:"Salmon",count:31}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M342.25899046182735,357.9525128947487 L337.2610735347595,357.9525128947487 C337.115148969607,360.86857171626986 336.9692243711351,363.78463120362443 336.8232997893229,366.7006903580623 C336.6773752075107,369.6167495125002 336.53145060903876,372.53280899985475 336.3855260438863,375.44886782137587 L343.1345379527005,375.44886782137587 C342.988613387548,372.53280899985475 342.84268878907613,369.6167495125002 342.6967642072639,366.7006903580623 C342.5508396254517,363.78463120362443 342.4049150269798,360.86857171626986 342.25899046182735,357.9525128947487",datum:[{lake:"D",species:"Bass",count:12}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M343.1345379527005,375.44886782137587 L336.3855260438863,375.44886782137587 C336.2821628150957,377.5144093895193 336.17879955298565,379.5799516234962 336.07543630753537,381.6454935245563 C335.97207306208503,383.7110354256165 335.86870981663475,385.7765773266766 335.7653465711844,387.84211922773676 C335.6619833257341,389.9076611287969 335.55862008028384,391.9732030298571 335.4552568348335,394.03874493091723 C335.3518935893832,396.10428683197733 335.24853032727316,398.1698290659542 335.1451670984826,400.23537063409765 L344.3748968981042,400.23537063409765 C344.2715336693136,398.1698290659542 344.1681704072036,396.10428683197733 344.06480716175327,394.03874493091723 C343.961443916303,391.9732030298571 343.8580806708527,389.9076611287969 343.75471742540236,387.84211922773676 C343.6513541799521,385.7765773266766 343.54799093450174,383.7110354256165 343.44462768905146,381.6454935245563 C343.3412644436011,379.5799516234962 343.2379011814911,377.5144093895193 343.1345379527005,375.44886782137587",datum:[{lake:"D",species:"Trout",count:17}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M344.3748968981042,400.23537063409765 L335.1451670984826,400.23537063409765 C335.00532272423897,403.0299269908505 334.8654783166759,405.82448401343686 334.7256339257725,408.6190407031065 C334.58578953486915,411.4135973927761 334.4459451439658,414.20815408244573 334.3061007530624,417.00271077211534 C334.16625636215906,419.79726746178494 334.0264119712557,422.59182415145455 333.88656758035233,425.38638084112415 C333.746723189449,428.1809375307938 333.60687878188594,430.97549455338014 333.4670344076423,433.770050910133 L346.0530295889445,433.770050910133 C345.9131852147009,430.97549455338014 345.7733408071378,428.1809375307938 345.63349641623444,425.38638084112415 C345.4936520253311,422.59182415145455 345.3538076344277,419.79726746178494 345.21396324352435,417.00271077211534 C345.074118852621,414.20815408244573 344.9342744617176,411.4135973927761 344.79443007081426,408.6190407031065 C344.65458567991095,405.82448401343686 344.51474127234786,403.0299269908505 344.3748968981042,400.23537063409765",datum:[{lake:"D",species:"Catfish",count:23}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M346.0530295889445,433.770050910133 L333.4670344076423,433.770050910133 C333.32719003339867,436.5646072668859 333.1873456258356,439.35916428947223 333.0475012349322,442.15372097914184 C332.90765684402885,444.94827766881144 332.7678124531255,447.7428343584811 332.6279680622221,450.5373910481507 C332.48812367131876,453.3319477378203 332.3482792804154,456.12650442749 332.20843488951203,458.9210611171595 C332.0685904986087,461.7156178068292 331.92874609104564,464.5101748294155 331.788901716802,467.3047311861684 L347.73116227978477,467.3047311861684 C347.59131790554113,464.5101748294155 347.4514734979781,461.7156178068292 347.31162910707474,458.9210611171595 C347.1717847161714,456.12650442749 347.031940325268,453.3319477378203 346.89209593436465,450.5373910481507 C346.7522515434613,447.7428343584811 346.6124071525579,444.94827766881144 346.47256276165456,442.15372097914184 C346.3327183707512,439.35916428947223 346.19287396318816,436.5646072668859 346.0530295889445,433.770050910133",datum:[{lake:"D",species:"Perch",count:23}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M347.73116227978477,467.3047311861684 L331.788901716802,467.3047311861684 C331.6642578198304,469.79553138100067 331.53961388953945,472.2863322416664 331.4149699759082,474.7771327694154 C331.29032606227696,477.2679332971644 331.1656821486457,479.7587338249134 331.04103823501447,482.2495343526624 C330.9163943213832,484.7403348804114 330.791750407752,487.2311354081604 330.6671064941207,489.7219359359094 C330.5424625804894,492.2127364636584 330.4178186668582,494.7035369914074 330.29317475322694,497.1943375191564 C330.1685308395957,499.6851380469054 330.04388692596444,502.1759385746544 329.9192430123332,504.6667391024034 C329.7945990987019,507.1575396301524 329.66995518507065,509.64834015790143 329.5453112714394,512.1391406856504 C329.42066735780816,514.6299412133994 329.2960234441769,517.1207417411484 329.17137953054566,519.6115422688974 C329.04673561691436,522.1023427966464 328.9220916866234,524.5931436573121 328.79744778965187,527.0839438521444 L350.7226162069349,527.0839438521444 C350.5979723099633,524.5931436573121 350.47332837967235,522.1023427966464 350.3486844660411,519.6115422688974 C350.22404055240986,517.1207417411484 350.0993966387786,514.6299412133994 349.97475272514737,512.1391406856504 C349.8501088115161,509.64834015790143 349.7254648978849,507.1575396301524 349.6008209842536,504.6667391024034 C349.4761770706223,502.1759385746544 349.3515331569911,499.6851380469054 349.22688924335984,497.1943375191564 C349.1022453297286,494.7035369914074 348.97760141609734,492.2127364636584 348.8529575024661,489.7219359359094 C348.7283135888348,487.2311354081604 348.60366967520355,484.7403348804114 348.4790257615723,482.2495343526624 C348.35438184794106,479.7587338249134 348.2297379343098,477.2679332971644 348.10509402067856,474.7771327694154 C347.9804501070473,472.2863322416664 347.85580617675635,469.79553138100067 347.73116227978477,467.3047311861684",datum:[{lake:"D",species:"Salmon",count:41}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M297.7623563531422,335.1479178972971 L295.26339788960826,330.81959487245206 C293.7476977543264,331.59639357678236 292.23199702575624,332.37319258517385 290.71629659383024,333.1499914415347 C289.20059616190423,333.9267902978956 287.684895433334,334.7035893062871 286.16919529805216,335.4803880106174 L289.17888979792883,340.6933317996643 C290.60946727714656,339.76909633015583 292.04004531633325,338.8448604988752 293.4706230755355,337.92062484848066 C294.9012008347377,336.99638919808615 296.3317788739244,336.07215336680554 297.7623563531422,335.1479178972971",datum:[{lake:"E",species:"Bass",count:7}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M289.17888979792883,340.6933317996643 L286.16919529805216,335.4803880106174 C284.2204378965058,336.4791292453365 282.271679901671,337.4778707841168 280.3229222034804,338.47661217086653 C278.37416450528985,339.47535355761624 276.42540651045505,340.4740950963965 274.47664910890865,341.4728363311157 L278.14300422694015,347.8231496741364 C279.9823182087871,346.63484687594377 281.82163275060304,345.44654371597903 283.66094701243446,344.25824073690035 C285.5002612742659,343.06993775782166 287.33957581608183,341.8816345978569 289.17888979792883,340.6933317996643",datum:[{lake:"E",species:"Trout",count:9}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M278.14300422694015,347.8231496741364 L274.47664910890865,341.4728363311157 C271.6617771748331,342.9154626266124 268.84690464746916,344.35808922617036 266.0320324167494,345.8007156736977 C263.2171601860297,347.24334212122506 260.4022876586657,348.6859687207831 257.5874157245902,350.1285950162798 L262.202280624401,358.1217754928183 C264.85906761150636,356.4053380372574 267.51585515858073,354.68890021992434 270.1726424256706,352.97246258347735 C272.8294296927604,351.25602494703037 275.4862172398348,349.5395871296973 278.14300422694015,347.8231496741364",datum:[{lake:"E",species:"Catfish",count:13}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M262.202280624401,358.1217754928183 L257.5874157245902,350.1285950162798 C255.42212968991151,351.2383075161933 253.25684306194444,352.348020320168 251.09155673062156,353.4577329721121 C248.9262703992987,354.5674456240563 246.7609840679758,355.6771582760004 244.59569773665294,356.7868709279445 C242.43041140533006,357.89658357988867 240.26512507400716,359.0062962318327 238.09983874268428,360.1160088837769 C235.9345524113614,361.225721535721 233.76926578339436,362.3354343396957 231.60397974871566,363.44514683960927 L237.67809046664846,373.9658152138675 C239.72177269981003,372.6454787513328 241.76545549294053,371.3251419270259 243.80913800608658,370.0048052836052 C245.85282051923264,368.68446864018443 247.8965030323787,367.36413199676366 249.9401855455247,366.04379535334294 C251.98386805867077,364.72345870992217 254.0275505718168,363.4031220665014 256.07123308496284,362.0827854230806 C258.1149155981089,360.76244877965985 260.1585983912394,359.44211195535297 262.202280624401,358.1217754928183",datum:[{lake:"E",species:"Perch",count:20}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M237.67809046664846,373.9658152138675 L231.60397974871566,363.44514683960927 C229.43869371403696,364.55485933952275 227.27340708606988,365.6645721434975 225.108120754747,366.7742847954416 C222.94283442342413,367.8839974473857 220.77754809210126,368.99371009932986 218.61226176077838,370.10342275127397 C216.4469754294555,371.2131354032181 214.28168909813263,372.32284805516224 212.11640276680976,373.43256070710635 C209.95111643548685,374.54227335905045 207.78583010416398,375.65198601099456 205.6205437728411,376.76169866293867 C203.45525744151823,377.87141131488283 201.28997111019535,378.98112396682694 199.12468477887248,380.09083661877105 C196.9593984475496,381.20054927071516 194.79411211622673,382.31026192265927 192.62882578490385,383.41997457460343 C190.46353945358098,384.52968722654754 188.29825312225807,385.63939987849164 186.1329667909352,386.7491125304358 C183.96768045961232,387.8588251823799 181.80239383164528,388.96853798635465 179.63710779696657,390.07825048626813 L188.62971015114337,405.65389465596576 C190.67339238430495,404.3335581934311 192.71707517743545,403.01322136912427 194.7607576905815,401.6928847257035 C196.80444020372755,400.3725480822827 198.84812271687358,399.05221143886195 200.89180523001963,397.7318747954412 C202.93548774316568,396.41153815202046 204.9791702563117,395.0912015085997 207.02285276945776,393.7708648651789 C209.0665352826038,392.4505282217582 211.11021779574986,391.1301915783374 213.1539003088959,389.80985493491664 C215.19758282204194,388.48951829149587 217.241265335188,387.1691816480751 219.284947848334,385.8488450046543 C221.32863036148007,384.5285083612336 223.37231287462612,383.20817171781283 225.41599538777217,381.88783507439206 C227.45967790091822,380.5674984309713 229.50336041406428,379.24716178755057 231.54704292721033,377.9268251441298 C233.59072544035638,376.606488500709 235.63440823348688,375.28615167640214 237.67809046664846,373.9658152138675",datum:[{lake:"E",species:"Salmon",count:40}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M295.26339788960826,285.21040487754874 L297.7623563531422,280.8820818527037 L292.85751832159167,277.71327390849393 L290.06671069443337,282.54709451288284 L295.26339788960826,285.21040487754874",datum:[{lake:"F",species:"Bass",count:4}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M290.06671069443337,282.54709451288284 L292.85751832159167,277.71327390849393 C291.4269408423739,276.7890384389855 289.9963628031872,275.86480260770486 288.565785043985,274.9405669573103 C287.1352072847827,274.0163313069158 285.70462924559604,273.0920954756352 284.2740517663783,272.1678600061267 L280.97250810287727,277.8863013747175 C282.48820823815913,278.6631000790478 284.0039089667293,279.4398990874393 285.51960939865535,280.21669794380017 C287.03530983058135,280.9934968001611 288.5510105591515,281.77029580855253 290.06671069443337,282.54709451288284",datum:[{lake:"F",species:"Trout",count:7}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M280.97250810287727,277.8863013747175 L284.2740517663783,272.1678600061267 C282.4347377845313,270.97955720793414 280.59542324271536,269.79125404796935 278.75610898088394,268.60295106889066 C276.9167947190525,267.414648089812 275.0774801772366,266.2263449298472 273.2381661953896,265.0380421316546 L269.2799619137337,271.8938530542193 C271.22871931528016,272.89259428893837 273.1774773101149,273.8913358277187 275.1262350083055,274.8900772144684 C277.0749927064961,275.88881860121813 279.02375070133087,276.8875601399984 280.97250810287727,277.8863013747175",datum:[{lake:"F",species:"Catfish",count:9}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M269.2799619137337,271.8938530542193 L273.2381661953896,265.0380421316546 C271.09229983657076,263.6516888369489 268.94643291778294,262.26533518047097 266.8005662789796,260.8789817048792 C264.6546996401762,259.4926282292874 262.50883300137286,258.10627475369563 260.3629663625695,256.7199212781038 C258.2170997237662,255.333567802512 256.07123308496284,253.94721432692018 253.9253664461595,252.5608608513284 C251.77949980735616,251.1745073757366 249.63363288856834,249.78815371925873 247.48776652974945,248.40180042455302 L241.99735413906546,257.91147363972334 C244.2709044903103,259.0766717722341 246.54445543484348,260.241870208806 248.81800608273252,261.40706849334737 C251.09155673062156,262.5722667778887 253.36510737851057,263.73746506243 255.63865802639958,264.90266334697134 C257.91220867428865,266.06786163151264 260.18575932217766,267.233059916054 262.45930997006667,268.3982582005953 C264.7328606179557,269.5634564851366 267.0064115624889,270.7286549217086 269.2799619137337,271.8938530542193",datum:[{lake:"F",species:"Perch",count:21}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M241.99735413906546,257.91147363972334 L247.48776652974945,248.40180042455302 C245.0864398567873,246.8504050494197 242.68511262385624,245.29900931251422 240.28378567090965,243.74761375649484 C237.88245871796303,242.1962182004754 235.4811317650164,240.64482264445604 233.07980481206982,239.0934270884366 C230.67847785912323,237.54203153241724 228.2771509061766,235.9906359763978 225.87582395323,234.43924042037844 C223.4744970002834,232.88784486435907 221.0731700473368,231.33644930833964 218.67184309439017,229.78505375232027 C216.27051614144358,228.23365819630084 213.869189188497,226.68226264028146 211.46786223555037,225.13086708426204 C209.06653528260378,223.57947152824266 206.66520832965716,222.0280759722233 204.26388137671057,220.47668041620386 C201.86255442376395,218.9252848601845 199.46122747081736,217.37388930416512 197.05990051787074,215.8224937481457 C194.65857356492415,214.27109819212632 192.2572463319931,212.71970245522084 189.85591965903095,211.16830708008752 L180.93627959576028,226.6175768548992 C183.48049073842049,227.92148906890293 186.02470247436906,229.22540158696785 188.56891391367344,230.5293139530022 C191.11312535297782,231.8332263190365 193.6573367922822,233.1371386850709 196.20154823158657,234.4410510511052 C198.74575967089095,235.74496341713956 201.28997111019535,237.0488757831739 203.83418254949973,238.3527881492082 C206.3783939888041,239.65670051524256 208.92260542810848,240.96061288127692 211.46681686741286,242.26452524731127 C214.01102830671724,243.56843761334562 216.55523974602164,244.87234997937992 219.09945118532602,246.17626234541427 C221.6436626246304,247.48017471144863 224.18787406393477,248.78408707748298 226.73208550323915,250.08799944351733 C229.27629694254355,251.39191180955163 231.82050838184793,252.69582417558598 234.36471982115233,253.99973654162034 C236.9089312604567,255.3036489076547 239.4531429964053,256.60756142571967 241.99735413906546,257.91147363972334",datum:[{lake:"F",species:"Salmon",count:47}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M342.25899046182735,258.07748685525206 C346.84562661576706,258.9624403447242 351.5687425815439,259.4198605072056 356.0188999055372,260.73234751311617 C359.06908976036596,261.6319414507144 362.000085957821,263.1202740963629 364.7600319982934,264.71372968577845 C367.5199780387658,266.30718527519406 370.2744100179066,268.1013361177615 372.57857614837155,270.2930810496096 C375.9403018996237,273.4907868400699 378.69799736342424,277.3524151702119 381.75770764344463,280.8820818527037 C383.39265337397705,279.82581271885323 385.0275996644783,278.7695432232305 386.66254567499516,277.71327390849393 C388.297491685512,276.6570045937573 389.93243769602884,275.6007352790207 391.5673837065457,274.5444659642841 C393.2023297170625,273.4881966495475 394.83727572757937,272.4319273348109 396.47222173809615,271.37565802007424 C398.107167748613,270.31938870533764 399.7421140391143,269.26311920971494 401.3770597696467,268.2068500758644 C398.9210736451264,265.26577100947105 396.745509146981,262.0256080130898 394.0091007551183,259.3836121091164 C391.8571924772484,257.3059496985035 389.29339476765455,255.5668953241801 386.71210976044904,254.04787513210556 C384.5935559377208,252.801160404465 382.24117359338777,251.88264505531095 379.90958426531705,251.08640734997107 C377.84352236853294,250.3808472566991 375.69049032904627,249.81622967042023 373.5191560858847,249.54248173627002 C363.33485850363263,248.2585106329301 353.0681775563998,247.45632736993014 342.84268878907613,246.41325023750068 C342.74540575119437,248.35728934087587 342.6481226799932,250.30132911008445 342.5508396254517,252.24536854637637 C342.4535565709103,254.18940798266829 342.35627349970906,256.1334477518769 342.25899046182735,258.07748685525206",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M384.25666610697857,285.21040487754874 C385.3089125327623,286.28036538340854 386.17149762805064,287.63238941230804 387.4134060855097,288.4202871081122 C389.02698821956596,289.4439838530517 390.96852919686717,290.060882305688 392.82313788152453,290.6451881997798 C395.27450747543213,291.4175072955368 397.81636147923405,291.9295858317235 400.33134092120446,292.49016207765845 C403.4284892692153,293.1805008395019 406.5505353764948,293.76002563886743 409.65952125146816,294.3979332231151 C411.4062935780278,294.75633926285815 413.15429702483357,295.1090594923878 414.8986155258035,295.47910294963066 C416.75374215228584,295.8726534795969 418.60817036841496,296.2704860146006 420.45785663382503,296.68871518474236 C422.4044182264269,297.1288486574982 424.34906862307423,297.57911614571884 426.2873590998394,298.0541908783237 C428.3083515597817,298.54953585577306 430.3261840186434,299.06014697871086 432.3357054439473,299.5999743149052 C434.41377860312076,300.1582170307119 436.48730792577703,300.73643447177017 438.5501428532714,301.3484010343269 C440.6676240502519,301.9765791168886 442.7789552782955,302.62924915519125 444.87665381737185,303.32040825026047 C447.0155497187967,304.0251412365012 449.1463754675626,304.7588722800904 451.25992617477505,305.5360772782569 C453.4019054208138,306.3237361550037 455.5334743298766,307.1450231234016 457.64324367712555,308.0149998750004 C459.7696039125632,308.8918179844147 461.88266652399324,309.8071104426849 463.9683149228348,310.7764618612961 C466.0599374458785,311.7485898868243 468.1346738295704,312.76430243735945 470.1750564427814,313.8394382074186 C472.21235049123544,314.9129465246525 474.2282822969281,316.0354100485573 476.2013449078299,317.2223941231753 C478.16418145710054,318.4032262529766 480.1000695929123,319.63857785183706 481.9827539232987,320.94288682067645 C483.85038552895645,322.23676737963734 485.6841135101539,323.5907747102768 487.45229271596247,325.0169627065761 C489.2032512784378,326.4292607788623 490.9116943653195,327.90707209779356 492.54016722815027,329.45834502643294 C494.15212636612074,330.9938870854266 495.7110101855942,332.5996913174301 497.17358871836615,334.2774076694752 C498.62317474728434,335.9402203868224 500.11534966951615,337.6095082306569 501.27666091322067,339.47993223460986 C503.58176086638844,343.19255820571675 506.00356271551937,346.97215645767074 507.57282230898295,351.02655759465483 C509.166020286334,355.1428068868166 510.01671990654467,359.62674700947565 510.76403362566464,363.9918835220473 C511.15219660621267,366.25918352720976 511.07823548313945,368.6203049185839 510.9792524079869,370.9238671478573 C510.87642545550466,373.3168851817409 510.60773428110735,375.7289054746003 510.15860354276026,378.0816243115184 C509.68739317986604,380.5500046789192 509.04092581317144,383.0125287738364 508.21822910426306,385.387164760814 C507.34793909718314,387.8991742869749 506.12583850044655,390.29009579414264 505.0796433947952,392.7415608509339 C506.7577400049263,393.60158800416 508.4358372083457,394.4616154614473 510.1139341151209,395.32164276670403 C511.79203102189615,396.1816700719607 513.4701279286713,397.0416973772174 515.1482248354466,397.9017246824741 C516.8263217422218,398.7617519877308 518.504418648997,399.62177929298747 520.1825155557723,400.4818065982442 C521.8606124625476,401.34183390350086 523.5387093693228,402.2018612087576 525.2168062760979,403.06188851401424 C526.8949031828732,403.92191581927096 528.5730000896484,404.78194312452763 530.2510969964237,405.64197042978435 C531.9291939031989,406.501997735041 533.6072908099741,407.36202504029774 535.2853877167494,408.2220523455544 C536.9634846235247,409.0820796508111 538.6415815302998,409.9421069560678 540.319678437075,410.8021342613245 C541.9977753438503,411.6621615665812 543.6758725472697,412.52218902386846 545.3539691574008,413.38221617709456 C546.6647451867349,410.3379983022272 548.1835496489152,407.3669092212258 549.2862976408794,404.2495616340166 C550.3276701533493,401.30571579363414 551.1603649800069,398.2576699553795 551.7863306707031,395.19863589431964 C552.38164756583,392.2893795462725 552.7641532809776,389.308386254993 552.9501453983489,386.3446904066956 C553.1285724908171,383.5015396288813 553.0947927688819,380.6188957663501 552.8795883002218,377.77809601598454 C552.6711324702064,375.0263814556082 552.256441982182,372.2661072966967 551.6791645023224,369.56714747447 C551.1144759025426,366.9270447577559 550.3549186772543,364.3064798747473 549.4536900613036,361.7609083991621 C548.5640588287264,359.24809439241903 547.4955478073771,356.7785591643782 546.3065849567383,354.391991027485 C545.1238820258276,352.0179882326918 543.7814789837846,349.70559828630377 542.3386927166551,347.479195604103 C540.8951251723696,345.2515873118993 539.3125179136212,343.0981952421388 537.6475235224931,341.02995810427154 C535.9752303079216,338.95265445075194 534.1844619737079,336.95680907598035 532.3268298995563,335.04257322994255 C530.457433020741,333.1162140947333 528.4888506361918,331.2740263619532 526.466436663592,329.5081731605304 C524.4306603153376,327.730652716818 522.3130036444437,326.0365096798013 520.1522589369935,324.41245229453693 C517.9796758483623,322.77949695371103 515.7402312114195,321.2266176534279 513.4664532753475,319.7371349822594 C511.18536387733684,318.24286279506754 508.85013385916886,316.82371680357056 506.4876569347453,315.4611877194559 C504.1250757222981,314.098598488525 501.71894076360843,312.8052124627344 499.2912788647352,311.56178003712273 C496.87299279209043,310.3231498479159 494.41985590484023,309.1473217258374 491.94981302019124,308.0149998750004 C489.5004796152687,306.8921717040341 487.0233920362234,305.8256048492681 484.5331499960206,304.79632997171296 C482.07640995919576,303.780902250325 479.5976770902127,302.815266400176 477.10886678910845,301.88089207817126 C474.66745265682584,300.9643117049817 472.20871891323065,300.09123444899177 469.7424766958602,299.2434658861301 C467.33830398127145,298.41703365949695 464.9206135751963,297.6280247784474 462.49762199323067,296.85828970968674 C460.15185173454313,296.11308628231745 457.79568039058614,295.39939694922333 455.43619117390085,294.6986503977402 C453.1692531185473,294.0253906881889 450.8945031474214,293.3778097820576 448.6183401771141,292.7362709265835 C446.4499038772505,292.12509494308387 444.27585145362127,291.5336851254445 442.1023933633881,290.940505880819 C440.05126974289743,290.3807141069156 437.99644776671306,289.8344900984477 435.9445950449426,289.27735787099675 C434.02854210354855,288.7570988719826 432.1105332029534,288.2436474013163 430.1986763738945,287.7083322014237 C428.43406670346053,287.214245843019 426.65813045738776,286.75323097411933 424.91519554646413,286.1891531961048 C421.89722747810924,285.212427839669 418.8204520595463,284.33604224623525 415.9159674360591,283.0859227980726 C413.5965604508408,282.0876266607894 411.20501545038786,280.98256228912896 409.2435207203476,279.4439064397674 C407.58083126759425,278.1396424960665 406.44344994796245,276.18607750638716 405.0434148876782,274.5571634188852 C403.31118611926405,275.4449333884099 401.57895675756157,276.33270366199577 399.8467276925033,277.2204737835511 C398.11449862744496,278.1082439051064 396.3822695623867,278.99601402666167 394.6500404973284,279.883784148217 C392.91781143227007,280.77155426977225 391.1855823672118,281.6593243913276 389.45335330215346,282.54709451288284 C387.7211242370952,283.43486463443816 385.9888948753927,284.32263490802404 384.25666610697857,285.21040487754874",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M495.795191876994,408.8227026001756 C492.7342537403247,412.9825468716412 489.8974771037707,417.32916439669293 486.6123768743156,421.30223622001733 C483.71325527112094,424.8084970795084 480.5360992568376,428.12111755765176 477.24252637904465,431.2607006486221 C474.32598406108133,434.040881104721 471.19563473997744,436.62989243341985 467.98203128704694,439.06152686122493 C465.11370924250417,441.2318975170015 462.1604743935269,443.3636240111142 458.9967498866248,445.06671589936724 C453.5109934978117,448.01980084286885 447.8565519513892,450.8283665260666 442.0335885999013,453.0300573564888 C436.88226885965827,454.97779646320464 431.48685432275084,456.44634450015457 426.07390061143207,457.5150057107812 C415.1281202229984,459.67599424772317 404.04138331089933,461.33394794269145 392.957386300644,462.71900659919464 C377.9271372003502,464.5971897678205 362.8065699551049,465.7761563574698 347.73116227978477,467.3047311861684 C347.85580617675635,469.79553138100067 347.9804501070473,472.2863322416664 348.10509402067856,474.7771327694154 C348.2297379343098,477.2679332971644 348.35438184794106,479.7587338249134 348.4790257615723,482.2495343526624 C348.60366967520355,484.7403348804114 348.7283135888348,487.2311354081604 348.8529575024661,489.7219359359094 C348.97760141609734,492.2127364636584 349.1022453297286,494.7035369914074 349.22688924335984,497.1943375191564 C349.3515331569911,499.6851380469054 349.4761770706223,502.1759385746544 349.6008209842536,504.6667391024034 C349.7254648978849,507.1575396301524 349.8501088115161,509.64834015790143 349.97475272514737,512.1391406856504 C350.0993966387786,514.6299412133994 350.22404055240986,517.1207417411484 350.3486844660411,519.6115422688974 C350.47332837967235,522.1023427966464 350.5979723099633,524.5931436573121 350.7226162069349,527.0839438521444 C356.8046643348833,526.5682689411063 362.90758634335896,526.2316585525257 368.96876158720494,525.5369190345468 C374.3324890492578,524.9221218571611 379.70006933274044,524.1939262806609 384.9973243246313,523.1553337660506 C393.936755459526,521.4026474642229 402.8685707925057,519.4743881168347 411.67881996756154,517.1630825852329 C418.9813479872962,515.2473168592785 426.2037120031931,512.9525854677493 433.33565590900275,510.47411999338203 C439.76119630540785,508.2411411257737 446.140183592015,505.7966947321929 452.3512728742058,503.02874955930645 C458.6211356188488,500.2346122461533 464.85514788734713,497.2464911165855 470.7785119895042,493.7878725352631 C477.47083091958336,489.88026560708545 483.90231623574954,485.4554530579412 490.19832197091444,480.9300730308063 C493.8342077338016,478.31670742975314 497.2407878999385,475.3645527065347 500.57418648366024,472.37163565069875 C504.3104174849856,469.0170324709241 507.96252196663465,465.5399024227346 511.4072107260557,461.88751232397453 C515.2959713945187,457.7642745065965 519.0732206525428,453.5004777488417 522.5745347673123,449.04475190228436 C526.5400459510277,443.99829503011745 530.063302864369,438.60222647508454 533.8076866215105,433.3809641678018 C532.2238329538068,432.35770345003675 530.6399787261341,431.3344423704996 529.0561247784459,430.3111814718485 C527.4722708307577,429.2879205731974 525.8884168830696,428.2646596745463 524.3045629353813,427.2413987758952 C522.7207089876931,426.21813787724415 521.136855040005,425.194876978593 519.5530010923168,424.17161607994194 C517.9691471446286,423.14835518129087 516.3852931969404,422.1250942826398 514.8014392492522,421.1018333839887 C513.217585301564,420.0785724853376 511.6337313538759,419.0553115866865 510.04987740618765,418.0320506880354 C508.4660234584995,417.0087897893843 506.8821695108113,415.98552889073324 505.2983155631231,414.96226799208216 C503.71446161543497,413.93900709343103 502.13060766774674,412.91574619477996 500.5467537200586,411.8924852961289 C498.9628997723704,410.86922439747775 497.37904554469776,409.8459633179406 495.795191876994,408.8227026001756",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M331.788901716802,467.3047311861684 C327.38965463536704,466.7574415158507 322.9293005916095,466.5141094954065 318.5911594801468,465.66286205176175 C314.7589012040669,464.910880966527 310.95681984136945,463.80579771647444 307.27770355417414,462.4950455995296 C304.0093888789771,461.3306490311835 300.8135501922017,459.8648327392715 297.74886659296976,458.2374159958889 C294.9964220288721,456.7758052867223 292.34723212754864,455.0615912859315 289.8263190641852,453.2279632418821 C287.5264777528695,451.55513541351365 285.3495339491935,449.67729577628984 283.2866034689323,447.71804837863556 C281.3691237997089,445.8969414203898 279.4910165758475,443.9862981728125 277.8850886157313,441.88690017418185 C274.89700126811624,437.98063242549483 272.0678223354493,433.90311452205435 269.50455754573863,429.7010511366825 C267.0373184436194,425.6564065351611 265.00031194382984,421.3474336923895 262.7935769402417,417.1467762135021 C260.5310259476868,412.839869524305 258.5415093501169,408.38171087192234 256.09669955730953,404.1783586324291 C250.16968052558582,393.98805720537746 243.81762665669157,384.0366627354406 237.67809046664846,373.9658152138675 C235.63440823348688,375.28615167640214 233.59072544035638,376.606488500709 231.54704292721033,377.9268251441298 C229.50336041406428,379.24716178755057 227.45967790091822,380.5674984309713 225.41599538777217,381.88783507439206 C223.37231287462612,383.20817171781283 221.32863036148007,384.5285083612336 219.284947848334,385.8488450046543 C217.241265335188,387.1691816480751 215.19758282204194,388.48951829149587 213.1539003088959,389.80985493491664 C211.11021779574986,391.1301915783374 209.0665352826038,392.4505282217582 207.02285276945776,393.7708648651789 C204.9791702563117,395.0912015085997 202.93548774316568,396.41153815202046 200.89180523001963,397.7318747954412 C198.84812271687358,399.05221143886195 196.80444020372755,400.3725480822827 194.7607576905815,401.6928847257035 C192.71707517743545,403.01322136912427 190.67339238430495,404.3335581934311 188.62971015114337,405.65389465596576 C198.29272430601088,419.9043439569732 207.9828483197782,434.1365443149007 217.61875317697155,448.40524338665097 C221.39701192345848,454.0000305776624 225.0500651017175,459.68011563475136 228.87220096218414,465.2443534442509 C232.4913186260997,470.5130388279589 235.98944764343614,475.89115028521826 239.94251375011817,480.9040129662734 C244.0210998122121,486.0760468534837 248.41625252289055,491.04209013103593 252.96715746851203,495.79904314904746 C255.4292937852049,498.37265585298155 258.1866689809577,500.6856186724525 260.98163753706126,502.89571013211014 C264.0100572881627,505.2904006246209 267.15914567331464,507.5760556680574 270.4373223901271,509.61338900555245 C274.0535679917229,511.86082663846463 277.8039400601555,513.9572465604983 281.66490449228604,515.7500230433318 C285.98300007083105,517.7550609917313 290.43844823299935,519.563110752535 294.9745024221537,521.0068322992511 C300.0927031333566,522.635837672434 305.34176225368094,524.0184625613481 310.6276691933578,524.9682038030288 C316.6160773761804,526.0441664123125 322.7408552553168,526.3786972076597 328.79744778965187,527.0839438521444 C328.9220916866234,524.5931436573121 329.04673561691436,522.1023427966464 329.17137953054566,519.6115422688974 C329.2960234441769,517.1207417411484 329.42066735780816,514.6299412133994 329.5453112714394,512.1391406856504 C329.66995518507065,509.64834015790143 329.7945990987019,507.1575396301524 329.9192430123332,504.6667391024034 C330.04388692596444,502.1759385746544 330.1685308395957,499.6851380469054 330.29317475322694,497.1943375191564 C330.4178186668582,494.7035369914074 330.5424625804894,492.2127364636584 330.6671064941207,489.7219359359094 C330.791750407752,487.2311354081604 330.9163943213832,484.7403348804114 331.04103823501447,482.2495343526624 C331.1656821486457,479.7587338249134 331.29032606227696,477.2679332971644 331.4149699759082,474.7771327694154 C331.53961388953945,472.2863322416664 331.6642578198304,469.79553138100067 331.788901716802,467.3047311861684",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M231.60397974871566,363.44514683960927 C230.22930200806616,360.35801004738835 228.6962105522048,357.3314745024352 227.4799461199822,354.1837355494228 C226.40650736594256,351.4056349240604 225.38573513586695,348.57067665767875 224.73487018992887,345.66762810448495 C223.64602859213713,340.81107522841836 222.68810660146738,335.85651984318645 222.26082648879273,330.90493126164176 C221.91190568449213,326.861419244143 222.0866386001573,322.73392896422735 222.40626743900307,318.68232630735474 C222.68856355101275,315.1039518353469 223.2229912803495,311.50717035387316 224.0666013413591,308.0149998750004 C225.80152572093897,300.8331845061857 227.919899143919,293.7147221422008 230.1418707607714,286.66036876429234 C231.52447322589074,282.2708588821024 233.12590842829354,277.9377703600012 234.88032358727426,273.68341009470527 C237.07773622105822,268.3548053184782 239.6250107589048,263.16878548755204 241.99735413906546,257.91147363972334 C239.4531429964053,256.60756142571967 236.9089312604567,255.3036489076547 234.36471982115233,253.99973654162034 C231.82050838184793,252.69582417558598 229.27629694254355,251.39191180955163 226.73208550323915,250.08799944351733 C224.18787406393477,248.78408707748298 221.6436626246304,247.48017471144863 219.09945118532602,246.17626234541427 C216.55523974602164,244.87234997937992 214.01102830671724,243.56843761334562 211.46681686741286,242.26452524731127 C208.92260542810848,240.96061288127692 206.3783939888041,239.65670051524256 203.83418254949973,238.3527881492082 C201.28997111019535,237.0488757831739 198.74575967089095,235.74496341713956 196.20154823158657,234.4410510511052 C193.6573367922822,233.1371386850709 191.11312535297782,231.8332263190365 188.56891391367344,230.5293139530022 C186.02470247436906,229.22540158696785 183.48049073842049,227.92148906890293 180.93627959576028,226.6175768548992 C178.8531772257564,231.1244463269037 176.60625089730215,235.56304440722334 174.68697206619103,240.13818617864138 C172.9905733664706,244.1820303696269 171.37316328884947,248.28296027170643 170.08924700326568,252.4745347421097 C167.93151202882945,259.518846691647 165.92138112426198,266.64823118493274 164.36201828613096,273.845845438463 C163.0801763004202,279.76249544545135 162.23485228077354,285.7983035143918 161.56563253174033,291.81732752366565 C160.96849675417076,297.1880216599043 160.65185839219643,302.6117308762432 160.5629517063226,308.0149998750004 C160.47391198187617,313.42635424088064 160.5901543816072,318.86833003578477 161.03179330077953,324.261197617578 C161.5281330635442,330.3220190261278 162.20691365131808,336.41158568361305 163.37688775213363,342.3760668460295 C164.80333766059073,349.648051415767 166.73419947134067,356.85611077072747 168.8210653285975,363.97059481403977 C170.06428063173524,368.2089292550476 171.67589356108303,372.35222963642667 173.36713123331737,376.43452229898986 C175.2812410505394,381.05478152716944 177.5471157482729,385.5303413933906 179.63710779696657,390.07825048626813 C181.80239383164528,388.96853798635465 183.96768045961232,387.8588251823799 186.1329667909352,386.7491125304358 C188.29825312225807,385.63939987849164 190.46353945358098,384.52968722654754 192.62882578490385,383.41997457460343 C194.79411211622673,382.31026192265927 196.9593984475496,381.20054927071516 199.12468477887248,380.09083661877105 C201.28997111019535,378.98112396682694 203.45525744151823,377.87141131488283 205.6205437728411,376.76169866293867 C207.78583010416398,375.65198601099456 209.95111643548685,374.54227335905045 212.11640276680976,373.43256070710635 C214.28168909813263,372.32284805516224 216.4469754294555,371.2131354032181 218.61226176077838,370.10342275127397 C220.77754809210126,368.99371009932986 222.94283442342413,367.8839974473857 225.108120754747,366.7742847954416 C227.27340708606988,365.6645721434975 229.43869371403696,364.55485933952275 231.60397974871566,363.44514683960927",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M342.84268878907613,246.41325023750068 C353.0681775563998,247.45632736993014 363.33485850363263,248.2585106329301 373.5191560858847,249.54248173627002 C375.69049032904627,249.81622967042023 377.84352236853294,250.3808472566991 379.90958426531705,251.08640734997107 C382.24117359338777,251.88264505531095 384.5935559377208,252.801160404465 386.71210976044904,254.04787513210556 C389.29339476765455,255.5668953241801 391.8571924772484,257.3059496985035 394.0091007551183,259.3836121091164 C396.745509146981,262.0256080130898 398.9210736451264,265.26577100947105 401.3770597696467,268.2068500758644 C403.52292612846554,266.82049678115874 405.6687930472534,265.4341431246808 407.81465968605676,264.04778964908905 C409.9605263248601,262.66143617349724 412.10639296366344,261.2750826979054 414.2522596024668,259.8887292223136 C416.3981262412701,258.50237574672184 418.54399288007346,257.11602227113 420.6898595188768,255.7296687955382 C422.83572615768014,254.34331531994644 424.98159307646796,252.95696166346852 427.1274594352868,251.5706083687628 C425.38362552656076,249.26452648762415 423.791701580638,246.8246260712928 421.895957105954,244.65236192772272 C420.2212618324626,242.73338996573517 418.45559240967805,240.81128864144813 416.4161401907606,239.29690005209 C412.9859240676542,236.7498042644662 409.34706439275413,234.26153073865294 405.48695207988237,232.46790879677707 C402.2692124553944,230.9727687785761 398.6813990191583,230.09544741699688 395.1825843786814,229.43061417185947 C392.04006556130497,228.83348308663653 388.77410631084877,228.67925420640836 385.5629517063226,228.68201580569598 C379.30460541370326,228.68739799584 373.03901684924523,229.41987969290642 366.77408168724503,229.4550455401544 C359.09077837378743,229.49817286129888 351.4035177491387,229.0962787128555 343.71823627994934,228.91689531087349 C343.57231171479685,231.83295413239466 343.4263871163249,234.74901361974923 343.2804625345127,237.66507277418708 C343.13453795270055,240.58113192862493 342.9886133542286,243.4971914159795 342.84268878907613,246.41325023750068",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M405.0434148876782,274.5571634188852 C406.501573547975,278.109115150841 408.2063210274235,281.581299941505 409.4178912483363,285.21301953983436 C410.3719243975942,288.0727637179354 411.15116623728136,291.0444588854973 411.54022499819035,294.03155474817646 C412.1411255626928,298.64511899721936 412.55252415464014,303.36986468339296 412.3877692245708,308.0149998750004 C412.22414730997434,312.62819058977834 411.41568248951387,317.26061828091554 410.555094464193,321.80653246733266 C410.002995939213,324.722901790588 409.1516190860751,327.60678751557896 408.1497095736681,330.40185040401775 C406.88133529430553,333.9402796064511 405.21273178718354,337.33862293492626 403.74424308888445,340.80700873994914 C406.12605775669545,342.0276925050571 408.5078730177948,343.2483765742262 410.88968798224994,344.4690604913647 C413.27150294670514,345.68974440850326 415.6533179111603,346.91042832564176 418.03513287561543,348.1311122427803 C420.41694784007063,349.3517961599189 422.7987628045258,350.5724800770574 425.180577768981,351.79316399419594 C427.5623927334361,353.01384791133444 429.9442079945355,354.23453198050356 432.3260226623465,355.4552157456115 C434.42173753488146,350.42808948693954 436.8371679447498,345.5085739688216 438.6131676647356,340.373836046589 C440.0136198069432,336.32487441560244 441.1808989556756,332.1326401782409 441.8553782489266,327.904117085954 C442.9013865802436,321.34636145437804 443.7746305384394,314.64470561198493 443.7746305384394,308.0149998750004 C443.7746305384394,301.38529413801587 442.9013865802436,294.68363829562276 441.8553782489266,288.1258826640468 C441.1808989556756,283.8973595717599 440.0136198069432,279.70512533439836 438.6131676647356,275.6561637034118 C436.8371679447498,270.5214257811792 434.42173753488146,265.60191026306126 432.3260226623465,260.5747840043893 C430.0524723111016,261.7399821369 427.7789213665684,262.90518057347197 425.5053707186794,264.07037885801327 C423.2318200707904,265.2355771425546 420.95826942290137,266.40077542709594 418.68471877501236,267.56597371163724 C416.41116812712335,268.73117199617855 414.1376174792343,269.8963702807199 411.86406683134527,271.0615685652612 C409.5905161834562,272.2267668498025 407.31696523892305,273.3919652863745 405.0434148876782,274.5571634188852",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M400.15085026175905,347.0309476880839 C398.4418787874031,350.53934236109615 396.32005724472214,353.90211008007964 395.0239354007728,357.5561326061353 C393.7668697238977,361.1000481118234 393.1302223755697,364.8996063738523 392.49128769928575,368.6247617833153 C391.8049091023274,372.62652759491584 391.5757501269605,376.7056080451108 391.0479955810459,380.7368962693261 C390.4828498081382,385.05379986953903 390.1300542092252,389.4240747880753 389.2125867428189,393.6693372566 C388.2527855060092,398.11048456379814 386.9437819439935,402.52283817589654 385.416189471398,406.7961255964945 C384.62421524446336,409.0115944221868 383.4736157053108,411.1224581636732 382.25388664422854,413.1356059954708 C380.9880427949185,415.22486571875055 379.56672184450906,417.2671470432275 377.9594707402211,419.10334826172664 C376.25842768214096,421.0467019341137 374.3717393305652,422.8970652170373 372.3290041571242,424.47427066812924 C370.1156961871911,426.18317617899055 367.70508988920153,427.73872454400185 365.1913413100988,428.96168114758626 C362.4075404070061,430.31602013192366 359.43897271188666,431.45177047194994 356.4363557105377,432.2061574318946 C353.05953547150193,433.05456039279886 349.5141379665267,433.24875313369887 346.0530295889445,433.770050910133 C346.19287396318816,436.5646072668859 346.3327183707512,439.35916428947223 346.47256276165456,442.15372097914184 C346.6124071525579,444.94827766881144 346.7522515434613,447.7428343584811 346.89209593436465,450.5373910481507 C347.031940325268,453.3319477378203 347.1717847161714,456.12650442749 347.31162910707474,458.9210611171595 C347.4514734979781,461.7156178068292 347.59131790554113,464.5101748294155 347.73116227978477,467.3047311861684 C352.1216817294103,466.69244549428026 356.59811974291665,466.4480995640486 360.9027216190768,465.46787397238427 C364.71688910186515,464.59932801039196 368.4939313683009,463.30384535671044 372.08747035663043,461.7584165251984 C375.30495245436714,460.37471382575234 378.41908624813016,458.6205468597408 381.33578487727567,456.68047937951013 C383.99114977021367,454.9142403085766 386.49246707624815,452.8391363217407 388.80366092288097,450.639496871706 C390.9507782610796,448.59601444904547 392.91261460023594,446.31030155453914 394.7107184317702,443.9511137614245 C396.4145480617404,441.7156176826786 397.9247579908214,439.30424660971926 399.3094613073944,436.8554452561243 C400.642500380899,434.49801038287507 401.7949513609835,432.0230454899477 402.86394560200296,429.53240508089175 C403.9037790608695,427.1097061252157 404.79119896097905,424.6145114474442 405.63594440705253,422.11542716192827 C406.46219605025493,419.6710547098402 407.1720483279015,417.1851118200818 407.87693686983073,414.7020348680798 C408.56825028279695,412.2667783697288 409.1653920858058,409.8049561302697 409.8245502717389,407.36042681086934 C411.11359047737767,402.579940663816 412.19962308252593,397.73274421935594 413.72153204454617,393.0269884687186 C415.25313068540896,388.2912721468033 416.8741904326592,383.53423314966943 418.9850730803879,379.03601059321136 C421.34283289623943,374.01170078717587 424.4133308128764,369.318264160886 427.1274594352868,364.459391381238 C424.87940895081067,363.00702125436123 422.63135790636557,361.55465076571227 420.3833071419049,360.10228045794946 C418.13525637744425,358.64991015018666 415.8872056129836,357.1975398424238 413.63915484852294,355.74516953466093 C411.3911040840623,354.29279922689807 409.1430533196017,352.84042891913526 406.895002555141,351.3880586113724 C404.64695179068036,349.9356883036096 402.3989007462352,348.4833178149606 400.15085026175905,347.0309476880839",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M333.4670344076423,433.770050910133 C329.9957437932031,433.32458182401786 326.47140048192074,433.1323602456468 323.0531615724587,432.43364352450175 C320.0317282081762,431.8160371870378 317.03547954715845,430.9046147382856 314.14801758640874,429.82108173430606 C311.57878520924925,428.8569658036421 309.07264061099676,427.64066732925187 306.68307855873104,426.29069672057113 C304.53068871950217,425.07471531568274 302.36411840094695,423.7643002449482 300.52216191192497,422.1232256935988 C297.2666838056424,419.22278678283385 294.0732143560419,416.0977624981601 291.3907747728175,412.6661563342283 C288.9651564529579,409.56309789823155 287.0636906609173,406.007440107262 285.19798820267295,402.51923189381324 C283.40670201447824,399.17015596442957 281.9933853998663,395.6179804769663 280.4198088335004,392.15430390573096 C278.8307132779025,388.656467726021 277.5212074114054,385.0182990043593 275.7099718367814,381.6346936409775 C271.4486980083722,373.67412286672175 266.70484419581715,365.9594145865043 262.202280624401,358.1217754928183 C260.1585983912394,359.44211195535297 258.1149155981089,360.76244877965985 256.07123308496284,362.0827854230806 C254.0275505718168,363.4031220665014 251.98386805867077,364.72345870992217 249.9401855455247,366.04379535334294 C247.8965030323787,367.36413199676366 245.85282051923264,368.68446864018443 243.80913800608658,370.0048052836052 C241.76545549294053,371.3251419270259 239.72177269981003,372.6454787513328 237.67809046664846,373.9658152138675 C243.81762665669157,384.0366627354406 250.16968052558582,393.98805720537746 256.09669955730953,404.1783586324291 C258.5415093501169,408.38171087192234 260.5310259476868,412.839869524305 262.7935769402417,417.1467762135021 C265.00031194382984,421.3474336923895 267.0373184436194,425.6564065351611 269.50455754573863,429.7010511366825 C272.0678223354493,433.90311452205435 274.89700126811624,437.98063242549483 277.8850886157313,441.88690017418185 C279.4910165758475,443.9862981728125 281.3691237997089,445.8969414203898 283.2866034689323,447.71804837863556 C285.3495339491935,449.67729577628984 287.5264777528695,451.55513541351365 289.8263190641852,453.2279632418821 C292.34723212754864,455.0615912859315 294.9964220288721,456.7758052867223 297.74886659296976,458.2374159958889 C300.8135501922017,459.8648327392715 304.0093888789771,461.3306490311835 307.27770355417414,462.4950455995296 C310.95681984136945,463.80579771647444 314.7589012040669,464.910880966527 318.5911594801468,465.66286205176175 C322.9293005916095,466.5141094954065 327.38965463536704,466.7574415158507 331.788901716802,467.3047311861684 C331.92874609104564,464.5101748294155 332.0685904986087,461.7156178068292 332.20843488951203,458.9210611171595 C332.3482792804154,456.12650442749 332.48812367131876,453.3319477378203 332.6279680622221,450.5373910481507 C332.7678124531255,447.7428343584811 332.90765684402885,444.94827766881144 333.0475012349322,442.15372097914184 C333.1873456258356,439.35916428947223 333.32719003339867,436.5646072668859 333.4670344076423,433.770050910133",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M257.5874157245902,350.1285950162798 C255.90585532456623,345.60737411401914 253.74555961496168,341.20316899158615 252.54273417592202,336.564931372225 C251.59744190648803,332.91977221356865 251.25287165282583,329.0472438119585 251.14306259916924,325.27840468222723 C251.0531197626009,322.19140893269736 251.43932668722525,319.05065821789293 251.94347850524724,315.9974267344417 C252.38950870104523,313.29618994881736 253.10378987328903,310.6095862865121 253.9936086406292,308.0149998750004 C255.79237617325504,302.7700466677644 257.8456587662067,297.5912725896419 260.00923740514526,292.4788078781985 C262.9411098572416,285.5508903160482 266.1897205477511,278.75550435827995 269.2799619137337,271.8938530542193 C267.0064115624889,270.7286549217086 264.7328606179557,269.5634564851366 262.45930997006667,268.3982582005953 C260.18575932217766,267.233059916054 257.91220867428865,266.06786163151264 255.63865802639958,264.90266334697134 C253.36510737851057,263.73746506243 251.09155673062156,262.5722667778887 248.81800608273252,261.40706849334737 C246.54445543484348,260.241870208806 244.2709044903103,259.0766717722341 241.99735413906546,257.91147363972334 C239.6250107589048,263.16878548755204 237.07773622105822,268.3548053184782 234.88032358727426,273.68341009470527 C233.12590842829354,277.9377703600012 231.52447322589074,282.2708588821024 230.1418707607714,286.66036876429234 C227.919899143919,293.7147221422008 225.80152572093897,300.8331845061857 224.0666013413591,308.0149998750004 C223.2229912803495,311.50717035387316 222.68856355101275,315.1039518353469 222.40626743900307,318.68232630735474 C222.0866386001573,322.73392896422735 221.91190568449213,326.861419244143 222.26082648879273,330.90493126164176 C222.68810660146738,335.85651984318645 223.64602859213713,340.81107522841836 224.73487018992887,345.66762810448495 C225.38573513586695,348.57067665767875 226.40650736594256,351.4056349240604 227.4799461199822,354.1837355494228 C228.6962105522048,357.3314745024352 230.22930200806616,360.35801004738835 231.60397974871566,363.44514683960927 C233.76926578339436,362.3354343396957 235.9345524113614,361.225721535721 238.09983874268428,360.1160088837769 C240.26512507400716,359.0062962318327 242.43041140533006,357.89658357988867 244.59569773665294,356.7868709279445 C246.7609840679758,355.6771582760004 248.9262703992987,354.5674456240563 251.09155673062156,353.4577329721121 C253.25684306194444,352.348020320168 255.42212968991151,351.2383075161933 257.5874157245902,350.1285950162798",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M343.71823627994934,228.91689531087349 C351.4035177491387,229.0962787128555 359.09077837378743,229.49817286129888 366.77408168724503,229.4550455401544 C373.03901684924523,229.41987969290642 379.30460541370326,228.68739799584 385.5629517063226,228.68201580569598 C388.77410631084877,228.67925420640836 392.04006556130497,228.83348308663653 395.1825843786814,229.43061417185947 C398.6813990191583,230.09544741699688 402.2692124553944,230.9727687785761 405.48695207988237,232.46790879677707 C409.34706439275413,234.26153073865294 412.9859240676542,236.7498042644662 416.4161401907606,239.29690005209 C418.45559240967805,240.81128864144813 420.2212618324626,242.73338996573517 421.895957105954,244.65236192772272 C423.791701580638,246.8246260712928 425.38362552656076,249.26452648762415 427.1274594352868,251.5706083687628 C429.68206229673495,249.92018774537297 432.236665718152,248.26976676021093 434.79126885958453,246.619345955935 C437.3458720010171,244.968925151659 439.90047514244964,243.31850434738305 442.4550782838822,241.66808354310712 C445.00968142531474,240.01766273883118 447.56428456674735,238.36724193455518 450.11888770817984,236.71682113027924 C452.67349084961245,235.0664003260033 455.2280942710295,233.4159793408412 457.78269713247755,231.76555871745137 C455.4441479103719,228.63709020921618 453.29592744120225,225.34486066486784 450.76704886743977,222.38015239178804 C448.5344326865491,219.76276469639924 446.0650679983357,217.31035267958725 443.49821286851807,215.01927081204553 C441.2220038390075,212.98760912079268 438.7628246268252,211.1253210747999 436.23785638945526,209.4119217154044 C433.9776385119277,207.87817732760016 431.63862806493444,206.37703979168236 429.1426545238256,205.27783957044613 C424.78755035695804,203.35989797976686 420.2789160796812,201.58363108203366 415.684623265526,200.36049627965798 C411.59176453224103,199.270857860778 407.31546900532794,198.6851100440855 403.0811998815051,198.33951990667913 C394.7008588742476,197.65553806340984 386.2504805542775,197.70291639125162 377.840792872285,197.27178033763101 C367.022203584039,196.71714810063793 356.2111766051853,196.0120701163886 345.39636897078964,195.38221503483817 C345.256524596546,198.17677139159105 345.1166801889829,200.97132841417738 344.97683579807955,203.76588510384698 C344.8369914071762,206.5604417935166 344.6971470162728,209.3549984831862 344.55730262536946,212.1495551728558 C344.41745823446615,214.94411186252546 344.2776138435628,217.73866855219507 344.1377694526594,220.53322524186467 C343.99792506175606,223.32778193153428 343.858080654193,226.1223389541206 343.71823627994934,228.91689531087349",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M432.3260226623465,260.5747840043893 C433.35014450147594,263.2795955082284 434.68000291269055,265.9075715794475 435.3983885338325,268.68921945111504 C436.04046158643575,271.1753788168745 436.3567701053898,273.811076655514 436.40739868358196,276.3782057166704 C436.45366047781766,278.7239163932139 436.1764683664401,281.13142754622373 435.68905965111617,283.4277386642148 C435.2311108156533,285.5852565117274 434.4757933518027,287.7252945032148 433.57132603122176,289.7396926131812 C432.69904521895876,291.6824060530144 431.57719884009276,293.54882714016406 430.35881525258446,295.2990733136137 C429.16248167143925,297.01764396249365 427.85571819276595,298.7160675237088 426.32717452526117,300.1461430801699 C423.32522353135994,302.9547097108377 420.1295717542115,305.6417133137713 416.76733126836643,308.0149998750004 C413.545554572362,310.28913801833033 410.01200336794125,312.1335209340117 406.57512297971283,314.08841719384714 C403.46339170292583,315.8583687625543 400.19254614257216,317.356022798275 397.12149627332025,319.18954336062825 C394.4957307229544,320.7572141356025 391.72918580397595,322.26291224265026 389.4846767208596,324.2919912058297 C387.44090908186206,326.13959607992484 385.9993361032299,328.6437272437522 384.25666610697857,330.81959487245206 C385.88063055882657,331.65187920937956 387.5045956039629,332.48416385036825 389.12856035245505,333.3164483393263 C390.7525251009472,334.14873282828444 392.37648984943934,334.9810173172425 394.00045459793154,335.81330180620057 C395.6244193464237,336.6455862951587 397.2483840949158,337.47787078411676 398.872348843408,338.3101552730749 C400.49631359190016,339.14243976203295 402.1202786370365,339.97472440302164 403.74424308888445,340.80700873994914 C404.81896537369175,339.088201078967 405.75490892874404,337.2647024399603 406.96841047347095,335.65058490910826 C408.13750021766356,334.0955409460903 409.4118063071977,332.56141131302803 410.8920169556429,331.29952425833926 C414.040398286217,328.61551327081617 417.4547212426254,326.19260471802824 420.8541864105288,323.8128907824727 C422.73044656879534,322.4994599264925 424.7566308103271,321.405175633065 426.7191929341527,320.2200898837321 C428.79961117015284,318.96383716479636 430.90672787960847,317.75166091636845 432.9831274900061,316.4888753776667 C435.1556788093443,315.16761410675826 437.3372440034312,313.85758091561115 439.4660457233601,312.4679494549016 C441.6643386935416,311.0329557480557 443.8562866048836,309.5776239044921 445.9644115603372,308.0149998750004 C448.1180246815655,306.41865825172323 450.2482213424996,304.77002123722366 452.2512599534058,302.9910524965951 C454.28460793744125,301.18516494019764 456.27145441002494,299.2936604174188 458.0735713451622,297.26043098392233 C459.903663604085,295.1956385310548 461.6529186628551,293.0119660566302 463.14788753558594,290.6969868375031 C464.6801687172689,288.32422901079616 466.08084382051925,285.80545120199923 467.15532150840374,283.1972198464202 C468.27741173521537,280.47341185453797 469.1998463978183,277.5942590256126 469.73759127967423,274.7008687951193 C470.3135911166994,271.6016439443639 470.6135341201316,268.3680903825144 470.496555665047,265.21937460267407 C470.3679802330846,261.7585023315621 469.8953596666494,258.2180666969982 469.00092961853306,254.8721046422624 C467.99828032236366,251.12130657118269 466.2038548416392,247.576764052998 464.80531763218966,243.92909422522746 C462.09871001468025,245.31623488812704 459.39210180388244,246.70337585508776 456.68549388972883,248.0905166700179 C453.9788859755753,249.47765748494805 451.2722780614217,250.86479829987826 448.56567014726807,252.2519391148084 C445.85906223311446,253.63907992973856 443.15245431896085,255.0262207446687 440.44584640480724,256.41336155959885 C437.73923849065363,257.800502374529 435.0326302798559,259.1876433414898 432.3260226623465,260.5747840043893",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M381.75770764344463,335.1479178972971 C378.69799736342424,338.6775845797889 375.9403018996237,342.5392129099309 372.57857614837155,345.7369187003912 C370.2744100179066,347.9286636322393 367.5199780387658,349.72281447480674 364.7600319982934,351.31627006422235 C362.000085957821,352.9097256536379 359.06908976036596,354.3980582992864 356.0188999055372,355.29765223688463 C351.5687425815439,356.6101392427952 346.84562661576706,357.0675594052766 342.25899046182735,357.9525128947487 C342.4049150269798,360.86857171626986 342.5508396254517,363.78463120362443 342.6967642072639,366.7006903580623 C342.84268878907613,369.6167495125002 342.988613387548,372.53280899985475 343.1345379527005,375.44886782137587 C349.40234449541254,374.4695631318928 355.7672061278149,373.8958551158759 361.93795856884947,372.510953598556 C366.2603756758593,371.54087384455704 370.563618899918,370.15973995504436 374.61404659683353,368.3839240074193 C378.75180013378133,366.5698220734805 382.7590353667613,364.2654302577469 386.5025022704394,361.74119995386445 C388.93956002513437,360.09788502815513 391.1535926519183,358.0390832228753 393.1556205719529,355.881288318644 C395.7030419823582,353.13566580094846 397.8191072385195,349.9810609700931 400.15085026175905,347.0309476880839 C398.61808865688397,346.0406953864044 397.08532649204,345.05044272295277 395.55256460718044,344.0601902403872 C394.01980272232095,343.0699377578216 392.4870408374614,342.07968527525605 390.95427895260184,341.0894327926905 C389.42151706774234,340.0991803101249 387.8887551828828,339.10892782755934 386.35599329802324,338.1186753449938 C384.82323141316374,337.1284228624282 383.2904692483197,336.1381701989765 381.75770764344463,335.1479178972971",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M337.2610735347595,357.9525128947487 C332.67443738081977,357.0675594052766 327.95132141504286,356.6101392427952 323.50116409104965,355.29765223688463 C320.4509742362209,354.3980582992864 317.51997803876577,352.9097256536379 314.7600319982934,351.31627006422235 C312.000085957821,349.72281447480674 309.2456539786802,347.9286636322393 306.9414878482153,345.7369187003912 C303.5797620969631,342.5392129099309 300.8220666331626,338.6775845797889 297.7623563531422,335.1479178972971 C296.3317788739244,336.07215336680554 294.9012008347377,336.99638919808615 293.4706230755355,337.92062484848066 C292.04004531633325,338.8448604988752 290.60946727714656,339.76909633015583 289.17888979792883,340.6933317996643 C292.61440966051805,345.2312053267009 295.87060049951157,349.9192526536057 299.4854499893015,354.3069531780575 C302.08621237651874,357.4637558395787 304.7694702593626,360.6322484959764 307.8257254289503,363.32684135758313 C310.99948518540134,366.1250338872145 314.5216569961676,368.6755006750796 318.1754947674178,370.7853093517719 C320.55688125427287,372.1603758399608 323.2611825502517,373.0976291017459 325.9313982032661,373.7814668522267 C329.3311929757412,374.6521485916139 332.9008170928522,374.89306755082816 336.3855260438863,375.44886782137587 C336.53145060903876,372.53280899985475 336.6773752075107,369.6167495125002 336.8232997893229,366.7006903580623 C336.9692243711351,363.78463120362443 337.115148969607,360.86857171626986 337.2610735347595,357.9525128947487",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M295.26339788960826,330.81959487245206 C293.73647201568895,326.4049747004881 291.7710515137126,322.0859262078647 290.68261994097145,317.5757334114939 C289.93659621660765,314.4843945420475 289.7600319982934,311.20191105383157 289.7600319982934,308.0149998750004 C289.7600319982934,304.82808869616923 289.93659621660765,301.5456052079533 290.68261994097145,298.4542663385069 C291.7710515137126,293.9440735421361 293.73647201568895,289.6250250495127 295.26339788960826,285.21040487754874 L290.06671069443337,282.54709451288284 C288.1375644086868,287.43367431997893 285.9093767342464,292.2265103352701 284.27927146998877,297.20683486431113 C283.1307514754358,300.7158121226426 282.2171242034145,304.36344835138686 281.73083491800145,308.0149998750004 C281.2319936694172,311.76080422633805 281.12663397787287,315.6295961943379 281.32387986799677,319.39890248916464 C281.4523941310872,321.8547692275673 281.9975009009625,324.33200659648315 282.7081153776445,326.69051897468864 C283.6126060443143,329.69250177030074 285.0155021133757,332.5504319754631 286.16919529805216,335.4803880106174 C287.684895433334,334.7035893062871 289.20059616190423,333.9267902978956 290.71629659383024,333.1499914415347 C292.23199702575624,332.37319258517385 293.7476977543264,331.59639357678236 295.26339788960826,330.81959487245206",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M345.39636897078964,195.38221503483817 C348.55896739773874,195.382558132577 351.73104144069697,195.5527219798143 354.8841652516368,195.3832443281632 C357.8154120873408,195.2256923701965 360.7815297382695,195.0140850047169 363.64948091072114,194.40112620598472 C369.2743738430329,193.19893432492864 374.84799495054074,191.60261554931338 380.36269756592685,189.93779228879856 C383.2149630773656,189.0767271870542 385.96592524848944,187.8914036578941 388.75038529119587,186.8234611192073 C391.6267645154287,185.7202642035254 394.47501885281974,184.54393840851208 397.3452153667447,183.42437392569252 C400.3038172998536,182.27032554362535 403.2517042659147,181.08471035673182 406.23678063229755,180.00262252454718 C409.2999521455307,178.89222526312614 412.37286383166116,177.79099301742332 415.48995900559265,176.8469186448756 C418.67725000903727,175.88158406691048 421.89507695255986,174.96893876291142 425.149939164426,174.27439567300877 C428.4784608913324,173.56413464979687 431.8551530902404,172.95696699362577 435.24011082191026,172.63250630553193 C438.7226992137636,172.29868735843058 442.2618080827069,172.1282443574528 445.7525775349954,172.29955676742338 C449.392164356147,172.47817251336437 453.07812357712226,172.8892996184619 456.6311796422305,173.68229077326663 C460.40967405946606,174.52559653496604 464.1968517098352,175.67109603685032 467.74722898202685,177.2084475169358 C471.6093950004687,178.88080687189586 475.41287083883276,180.91124969405092 478.86880951413104,183.31142327840325 C482.70568947925653,185.97616325323224 486.39477219904,189.02891790313208 489.6256849032982,192.4031881944798 C493.2631091612153,196.2020072075536 496.1911087752302,200.68819045385453 499.4738204006569,204.83069119166782 C501.5685946966471,203.47734631304763 503.6633695526063,202.12400107265523 505.75814412858097,200.770656013149 C507.8529187045557,199.4173109536427 509.9476932805304,198.06396589413646 512.042467856505,196.71062083463016 C514.1372424324798,195.35727577512387 516.2320170084545,194.00393071561757 518.3267915844292,192.65058565611128 C520.4215661604038,191.29724059660504 522.5163407363785,189.94389553709874 524.6111153123533,188.59055047759244 C526.705889888328,187.2372054180862 528.8006644643026,185.8838603585799 530.8954390402773,184.5305152990736 C532.990213616252,183.17717023956732 535.0849881922268,181.82382518006108 537.1797627682014,180.47048012055478 C539.2745373441761,179.1171350610485 541.3693119201508,177.76379000154225 543.4640864961256,176.41044494203595 C545.5588610721002,175.05709988252966 547.6536359280594,173.70375464213726 549.7484102240496,172.35040976351706 C545.4526337599565,166.88830258118276 541.6075637824915,160.9961637882975 536.8610802135822,155.96408743048391 C532.6501323987985,151.49976966025963 527.8609045185797,147.44056410685585 522.8761160729706,143.86122737940343 C518.3992798831094,140.64662672543318 513.4814813238985,137.89212906398666 508.4762063071715,135.58227528621592 C503.89643477517785,133.46878451115356 499.01060462411704,131.84065276746674 494.1209764268088,130.5911937209042 C489.5494921370986,129.42303079081853 484.7983425895454,128.72901670587504 480.092868846116,128.32940935627153 C475.60536293340306,127.94831269270742 471.0427796103935,127.99456837708539 466.5420374583815,128.24908168140132 C462.1869559197273,128.49535799662476 457.82899937290154,129.09804387102452 453.52539777411744,129.83177821488948 C449.3274549737967,130.54749846349387 445.16524712408574,131.53985470476425 441.0374042610671,132.59744545880937 C437.00064353611833,133.6317001435616 433.0110859041544,134.86549995839243 429.03158701021516,136.10731453128153 C425.1428446680425,137.3208082498188 421.29445963898377,138.66457166345458 417.43268055273154,139.96337033308845 C413.66378587915267,141.23092999372784 409.9176672109035,142.56726364712586 406.1395657307219,143.8063895221013 C402.44657844533754,145.01760000050683 398.75357986820103,146.24056722493117 395.0194142560335,147.31437939323143 C391.33823979072156,148.3729532073139 387.6339398479396,149.38572854447455 383.8935454982835,150.20354746924954 C380.1327233999328,151.02583282133435 376.33217737744025,151.74016492879042 372.51576491201314,152.2346922238106 C368.54919690859106,152.74867653840346 364.5420392766035,153.09084389020688 360.54460409173595,153.22908229808866 C356.20754277495456,153.37906558076634 351.8563846353062,153.14259895970451 347.5122754070665,153.0993572954892 C347.4241126555481,154.86114270171208 347.3359498707101,156.6229287737683 347.2477871025319,158.3847145129078 C347.15962433435374,160.14650025204736 347.0714615661755,161.90828599118686 346.9832987979973,163.6700717303264 C346.8951360298191,165.43185746946597 346.8069732616409,167.19364320860552 346.7188104934627,168.95542894774508 C346.63064772528446,170.71721468688457 346.5424849571063,172.47900042602413 346.4543221889281,174.24078616516363 C346.36615942074985,176.00257190430318 346.2779966525717,177.76435764344274 346.18983388439347,179.5261433825823 C346.10167111621524,181.28792912172185 346.0135083480371,183.04971486086134 345.92534557985886,184.8115006000009 C345.83718281168063,186.57328633914045 345.74902004350247,188.33507207827995 345.66085727532425,190.0968578174195 C345.572694507146,191.85864355655906 345.48453172230813,193.62042962861528 345.39636897078964,195.38221503483817",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M508.9771587911764,221.29095612556745 C511.0193462214934,226.16563035999843 513.4286657982045,230.9191753034084 515.1037214685272,235.91497975119177 C516.5841389381975,240.3302814695703 517.6653601907517,244.93261429743671 518.4435782111552,249.5242746240532 C519.1357902384688,253.60848036086423 519.4550986874348,257.8000270530702 519.5150116116783,261.9425779414744 C519.5689450243801,265.67168830493677 519.2819988974145,269.4419311688918 518.7851172219915,273.13925837965286 C518.3303540407443,276.5231792760036 517.5741707328411,279.8949416928839 516.6600770416676,283.18632226280954 C515.8074475557569,286.25638843914373 514.830264050782,289.3370064434339 513.4849476907389,292.2235986184325 C510.97307142075226,297.6132323141641 508.17446789390993,302.9257768515505 505.0884991515781,308.0149998750004 C502.1242899430212,312.9034232551773 498.61293501404253,317.46165626468894 495.3344138380727,322.1565378293129 C492.01366165221054,326.911894705566 488.490287432968,331.53092211704984 485.290679066082,336.3657151976316 C481.82061657775625,341.60918007957645 478.4521487799982,346.9369331037461 475.3254012724374,352.3913117168928 C471.62369496870076,358.8486632127933 468.31201202197974,365.53104121621266 464.80531763218966,372.10090552477334 C466.4834142423207,372.9609326779994 468.1615114457401,373.82096013528667 469.83960835251537,374.6809874405434 C471.51770525929055,375.54101474580006 473.1958021660658,376.4010420510568 474.873899072841,377.26106935631344 C476.55199597961627,378.12109666157016 478.2300928863915,378.9811239668269 479.90818979316674,379.84115127208355 C481.586286699942,380.7011785773402 483.26438360671716,381.56120588259694 484.9424805134924,382.4212331878536 C486.62057742026764,383.2812604931103 488.2986743270429,384.141287798367 489.9767712338181,385.0013151036237 C491.65486814059335,385.8613424088804 493.3329650473686,386.7213697141371 495.0110619541438,387.58139701939376 C496.68915886091906,388.4414243246505 498.36725576769425,389.30145162990715 500.0453526744695,390.16147893516387 C501.7234495812447,391.02150624042054 503.4015467846641,391.8815336977078 505.0796433947952,392.7415608509339 C509.6968755713962,384.0495043403354 514.0710454930024,375.21847231121785 518.9313403937199,366.66539043600477 C523.0278455110863,359.456415592546 527.5022102099217,352.4552274667792 531.9500434490469,345.45539069491826 C534.017308059047,342.20200549446696 536.2763633787295,339.07174963764373 538.4766339410959,335.905724519068 C540.6277418558618,332.8104407810574 542.8358858572673,329.7548638209154 545.0041788804438,326.6714641251594 C547.15757667347,323.60924604444455 549.3422678678407,320.5678425422534 551.4417063897038,317.46887118965554 C553.5552894667346,314.34902112553374 555.6682679993846,311.2230889940541 557.6432436771256,308.0149998750004 C559.6579802413847,304.74232440744584 561.6337244633191,301.43206861434743 563.410843115704,298.0265774298308 C565.2503449185165,294.50154145939996 567.0041713356215,290.90771346846446 568.4931050427174,287.22341841015805 C570.0605878693555,283.3447573222667 571.4861243674375,279.37301526952416 572.5800927169056,275.3377089912374 C573.7536850015083,271.00869497862135 574.7209699850321,266.57665735826635 575.2957869449298,262.1304575374496 C575.9242163157969,257.2695665911506 576.2789457458696,252.3156013783618 576.1898317092,247.41643668989002 C576.0907947905995,241.9717481470301 575.6540360129541,236.46503677243527 574.7313340791195,231.09889784345455 C573.6937361397186,225.0645605443982 572.2618103312825,219.01773394592567 570.3089320894935,213.21500800577883 C568.0990998188157,206.64877629402156 564.9317789286742,200.39968561971511 562.2432025417193,193.9920248877421 C560.0237843487574,195.12948020395424 557.8043655625073,196.26693582422752 555.5849470729013,197.40439129247028 C553.3655285832954,198.54184676071299 551.1461100936895,199.67930222895575 548.9266916040835,200.81675769719845 C546.7072731144775,201.95421316544116 544.4878546248716,203.09166863368387 542.2684361352657,204.22912410192657 C540.0490176456597,205.36657957016934 537.8295991560537,206.50403503841204 535.6101806664478,207.64149050665475 C533.3907621768419,208.7789459748975 531.1713436872359,209.91640144314022 528.95192519763,211.05385691138292 C526.732506708024,212.19131237962563 524.513088218418,213.3287678478684 522.2936697288121,214.4662233161111 C520.0742512392062,215.6036787843538 517.8548327496002,216.74113425259657 515.6354142599943,217.87858972083927 C513.4159957703882,219.01604518908198 511.1965769841381,220.1535008093553 508.9771587911764,221.29095612556745",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M457.78269713247755,384.2644410325494 C455.3835694560932,387.3461771193201 453.2256678029834,390.6533612199639 450.58531348902955,393.50965008193776 C448.24620298496797,396.0400586882252 445.60014229079735,398.3558265809363 442.8443026784311,400.4245334373333 C440.37796310255766,402.275923325162 437.6761975910698,403.88782260163515 434.91877592431047,405.2699403146149 C432.4102899061693,406.5272826356063 429.7347408168967,407.5340120732054 427.0465796237294,408.34291353924687 C424.5516501853265,409.09366914330946 421.95327371270594,409.5992556958844 419.36950402959974,409.948911524927 C416.92360630540907,410.27990944710916 414.42122824397575,410.5124827683465 411.95757740183865,410.3848747929211 C407.2886305109126,410.14304066207364 402.58286888050054,409.64433224232687 397.9717108304102,408.8405852061084 C393.56188426582196,408.07193121658497 389.2479183944508,406.748399891424 384.89462355780284,405.6676717156956 C380.6684359884157,404.6184985828079 376.49458555147123,403.3239228846492 372.23326361230494,402.4508812802601 C367.92498778447526,401.568219961877 363.5630436757844,400.7486724769052 359.185830256815,400.4005629473789 C354.2769214377175,400.0101689281844 349.31187435102856,400.29043473480715 344.3748968981042,400.23537063409765 C344.51474127234786,403.0299269908505 344.65458567991095,405.82448401343686 344.79443007081426,408.6190407031065 C344.9342744617176,411.4135973927761 345.074118852621,414.20815408244573 345.21396324352435,417.00271077211534 C345.3538076344277,419.79726746178494 345.4936520253311,422.59182415145455 345.63349641623444,425.38638084112415 C345.7733408071378,428.1809375307938 345.9131852147009,430.97549455338014 346.0530295889445,433.770050910133 C352.7680616818576,433.76329065067074 359.50701025759844,433.3666216031955 366.1981268676833,433.7497701307394 C372.0710059953187,434.0860645224417 377.9375098201236,434.9556419541974 383.7450168021053,435.9283796678716 C389.38214451386085,436.8725794319072 394.93909701720673,438.29719363783204 400.532030948895,439.5005825638686 C403.36012800841314,440.1090826328393 406.173294263215,440.7895171835512 409.0081097757245,441.36404665289336 C411.88919728941346,441.94795402642916 414.7751562189011,442.5298306888758 417.6797400274905,442.97589309250236 C420.64830493330453,443.43178119367985 423.6343645262575,443.84459431095274 426.62755591893483,444.0698981673056 C429.71131274408947,444.3020190755982 432.82187837889313,444.4442522684433 435.91058468098635,444.34816738643894 C439.13195019412495,444.24795568129457 442.3802868898266,444.0050455685966 445.55777136463024,443.4810084058596 C448.92782475117724,442.92521238892795 452.3093833143293,442.17102469040515 455.55319826503813,441.108667847433 C459.061783033746,439.9595982812514 462.54665627251995,438.560707997751 465.81497052288046,436.8467291783983 C469.41833863499835,434.9570404430449 472.9441888109333,432.77872749813207 476.1682453524732,430.2976651833146 C479.77713583990135,427.52045514642595 483.24169929833863,424.4332855726381 486.31381160978447,421.07191212327984 C489.78401480651223,417.2749647115918 492.63473199195664,412.9057721776162 495.795191876994,408.8227026001756 C494.21133820929026,407.7994418824106 492.6274839816176,406.7761808028734 491.0436300339294,405.7529199042223 C489.4597760862413,404.7296590055712 487.87592213855305,403.7063981069201 486.2920681908649,402.68313720826905 C484.7082142431767,401.65987630961797 483.1243602954885,400.63661541096684 481.5405063478003,399.61335451231577 C479.95665240011215,398.5900936136647 478.3727984524239,397.56683271501356 476.78894450473575,396.5435718163625 C475.2050905570476,395.5203109177114 473.62123660935936,394.49705001906034 472.03738266167124,393.47378912040926 C470.453528713983,392.45052822175813 468.86967476629485,391.42726732310706 467.2858208186067,390.40400642445593 C465.70196687091845,389.38074552580485 464.1181129232303,388.3574846271538 462.5342589755421,387.3342237285027 C460.9504050278539,386.3109628298516 459.36655080018124,385.2877017503144 457.78269713247755,384.2644410325494",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M335.1451670984826,400.23537063409765 C332.59674183260694,399.92963647695206 330.0167368211909,399.78880742064456 327.49989030797536,399.31816804354526 C325.27767414456457,398.90262326342616 323.01935404686003,398.4219945964808 320.9279790686037,397.5768181624424 C317.41898697334966,396.1587475357162 313.87078926978927,394.5709166905174 310.6987890874443,392.52842686125155 C308.0747665981607,390.8387865907505 305.7177237719725,388.62940414215745 303.5399110537181,386.3804278631416 C301.5970188541777,384.37404851159044 299.8790814339724,382.10402385947447 298.3366743340598,379.76235996955063 C291.41344582504644,369.2515977964727 284.87422741784655,358.4695528241973 278.14300422694015,347.8231496741364 C275.4862172398348,349.5395871296973 272.8294296927604,351.25602494703037 270.1726424256706,352.97246258347735 C267.51585515858073,354.68890021992434 264.85906761150636,356.4053380372574 262.202280624401,358.1217754928183 C266.70484419581715,365.9594145865043 271.4486980083722,373.67412286672175 275.7099718367814,381.6346936409775 C277.5212074114054,385.0182990043593 278.8307132779025,388.656467726021 280.4198088335004,392.15430390573096 C281.9933853998663,395.6179804769663 283.40670201447824,399.17015596442957 285.19798820267295,402.51923189381324 C287.0636906609173,406.007440107262 288.9651564529579,409.56309789823155 291.3907747728175,412.6661563342283 C294.0732143560419,416.0977624981601 297.2666838056424,419.22278678283385 300.52216191192497,422.1232256935988 C302.36411840094695,423.7643002449482 304.53068871950217,425.07471531568274 306.68307855873104,426.29069672057113 C309.07264061099676,427.64066732925187 311.57878520924925,428.8569658036421 314.14801758640874,429.82108173430606 C317.03547954715845,430.9046147382856 320.0317282081762,431.8160371870378 323.0531615724587,432.43364352450175 C326.47140048192074,433.1323602456468 329.9957437932031,433.32458182401786 333.4670344076423,433.770050910133 C333.60687878188594,430.97549455338014 333.746723189449,428.1809375307938 333.88656758035233,425.38638084112415 C334.0264119712557,422.59182415145455 334.16625636215906,419.79726746178494 334.3061007530624,417.00271077211534 C334.4459451439658,414.20815408244573 334.58578953486915,411.4135973927761 334.7256339257725,408.6190407031065 C334.8654783166759,405.82448401343686 335.00532272423897,403.0299269908505 335.1451670984826,400.23537063409765",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M274.47664910890865,341.4728363311157 C273.0979776123658,337.8948650698314 271.3863856881263,334.40736501891 270.34063425972664,330.7389216141385 C269.51930672219726,327.85774592899725 268.91338001676746,324.81318006030517 268.87541221112133,321.82397906137743 C268.8171695305963,317.23853948059246 269.21678268898467,312.5353405771173 270.0520028012131,308.0149998750004 C270.85866691231354,303.64920867701875 272.2828688291466,299.35415063432816 273.801064881108,295.1655833610817 C275.92303726303464,289.3112511342339 278.5820271567302,283.64606172896816 280.97250810287727,277.8863013747175 C279.02375070133087,276.8875601399984 277.0749927064961,275.88881860121813 275.1262350083055,274.8900772144684 C273.1774773101149,273.8913358277187 271.22871931528016,272.89259428893837 269.2799619137337,271.8938530542193 C266.1897205477511,278.75550435827995 262.9411098572416,285.5508903160482 260.00923740514526,292.4788078781985 C257.8456587662067,297.5912725896419 255.79237617325504,302.7700466677644 253.9936086406292,308.0149998750004 C253.10378987328903,310.6095862865121 252.38950870104523,313.29618994881736 251.94347850524724,315.9974267344417 C251.43932668722525,319.05065821789293 251.0531197626009,322.19140893269736 251.14306259916924,325.27840468222723 C251.25287165282583,329.0472438119585 251.59744190648803,332.91977221356865 252.54273417592202,336.564931372225 C253.74555961496168,341.20316899158615 255.90585532456623,345.60737411401914 257.5874157245902,350.1285950162798 C260.4022876586657,348.6859687207831 263.2171601860297,347.24334212122506 266.0320324167494,345.8007156736977 C268.84690464746916,344.35808922617036 271.6617771748331,342.9154626266124 274.47664910890865,341.4728363311157",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M347.5122754070665,153.0993572954892 C351.8018369342646,153.5488240936553 356.12520077782114,153.78567583793148 360.38096098321597,154.44775779419842 C364.13700960075704,155.03209805222878 367.9218147835351,155.71071388339715 371.54770187587417,156.83862393838103 C377.61362418797296,158.7255593542751 383.70369596754745,160.81851213587038 389.45638919652947,163.4922942068323 C394.15386787345597,165.67562534672606 398.6132073360979,168.48671359324527 402.8982175935998,171.40996357094815 C406.68279143303624,173.99181395797552 410.33112914820236,176.85987120924187 413.6651414873445,180.00759530102312 C420.5265646035822,186.48563576695722 427.07871949126627,193.34540777984319 433.48452395973925,200.28725724409423 C437.4745860352889,204.6112122473736 441.2577555032914,209.14770215582786 444.8527411194125,213.80500870361436 C449.35714656087083,219.6404693136136 453.47271198954115,225.7787089833622 457.78269713247755,231.76555871745137 C459.5198269886672,230.64327275142983 461.2569574048258,229.5209864236361 462.994087541,228.39870027672845 C464.73121767717413,227.2764141298208 466.46834781334826,226.1541279829131 468.2054779495224,225.03184183600547 C469.9426080856965,223.90955568909783 471.67973822187065,222.7872695421902 473.4168683580448,221.66498339528255 C475.15399849421897,220.5426972483749 476.89112863039304,219.42041110146727 478.6282587665672,218.29812495455963 C480.36538890274136,217.17583880765199 482.1025190389155,216.05355266074434 483.8396491750897,214.93126651383665 C485.57677931126375,213.808980366929 487.31390944743794,212.68669422002137 489.051039583612,211.56440807311373 C490.7881697197862,210.44212192620608 492.5252998559603,209.31983577929844 494.26242999213446,208.1975496323908 C495.9995601283086,207.0752634854831 497.7366905444672,205.95297715768942 499.4738204006569,204.83069119166782 C493.5396410513108,196.8201800113456 487.9670605990374,188.5107238515168 481.67128175736093,180.79915684716633 C476.6805730606518,174.68614279732424 471.1654482069272,168.97309227137214 465.61435778550003,163.3569480290903 C461.0127424622827,158.7014058849868 456.16243355353845,154.26909922174855 451.21316452342757,149.98409768801037 C446.75357069989536,146.1230494690866 442.1561157877005,142.3875500498374 437.3877692245708,138.9187987711045 C432.5738974032854,135.41692997556538 427.6300372881253,132.02541781033585 422.4665093701823,129.0722374651943 C416.63243615426313,125.73555165131523 410.62561935032807,122.55309946749458 404.3949658229843,120.04920029404263 C396.76965092696935,116.98483159152192 388.8264419444978,114.55955370805236 380.89860410010607,112.36743383727651 C376.1648973453876,111.05852050641363 371.27524228178436,110.24431347333723 366.4103320256538,109.54610068912632 C360.90040972346753,108.75531566147919 355.3195146269407,108.44899379803041 349.77410642515565,107.90044040170244 C349.6798634827283,109.78372827269351 349.5856205069815,111.66701680951797 349.4913775478945,113.55030501342577 C349.39713458880743,115.43359321733351 349.3028916297204,117.3168814212413 349.20864867063335,119.2001696251491 C349.1144057115463,121.0834578290569 349.02016275245927,122.96674603296469 348.9259197933722,124.85003423687249 C348.8316768342852,126.73332244078028 348.7374338751981,128.61661064468802 348.64319091611105,130.49989884859582 C348.54894795702404,132.38318705250356 348.454704997937,134.26647525641135 348.36046203884996,136.14976346031915 C348.2662190797629,138.03305166422695 348.1719761206758,139.91633986813474 348.0777331615888,141.79962807204254 C347.98349020250174,143.68291627595033 347.88924724341473,145.56620447985807 347.79500428432766,147.44949268376587 C347.7007613252406,149.3327808876736 347.60651834949385,151.21606942449813 347.5122754070665,153.0993572954892",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M464.80531763218966,243.92909422522746 C466.31505021364137,247.531041343501 468.0953779289689,251.04360021509365 469.33451576310557,254.73493650231188 C470.42963671096084,257.99725291485794 471.2304595669088,261.3974580683331 471.8080939781654,264.79005232452033 C472.3218504155098,267.8074749441705 472.5608164120681,270.9041203510052 472.6086883089086,273.9649871298242 C472.6517764788098,276.7199886341524 472.61325961563574,279.5399292943665 472.0809741783904,282.2376571739619 C471.14163023613196,286.9984380712834 469.95590471916734,291.8245448703909 468.19380017039714,296.3405134605747 C466.6031819000109,300.4169924374038 464.29178204794204,304.2516426995608 462.02280572092116,308.0149998750004 C459.84312178993565,311.6302553821546 457.2597945083436,315.00334031664556 454.84781939637793,318.476351508356 C452.40309621085555,321.9965167628946 449.6800483615629,325.3374314599607 447.452710828457,328.99452921374746 C442.1727827835524,337.66371953904587 437.3682518856184,346.63498719104155 432.3260226623465,355.4552157456115 C435.0326302798559,356.842356408511 437.73923849065363,358.2294973754718 440.44584640480724,359.61663819040194 C443.15245431896085,361.0037790053321 445.85906223311446,362.3909198202623 448.56567014726807,363.77806063519245 C451.2722780614217,365.1652014501226 453.9788859755753,366.55234226505274 456.68549388972883,367.9394830799829 C459.39210180388244,369.32662389491304 462.09871001468025,370.71376486187376 464.80531763218966,372.10090552477334 C468.31201202197974,365.53104121621266 471.62369496870076,358.8486632127933 475.3254012724374,352.3913117168928 C478.4521487799982,346.9369331037461 481.82061657775625,341.60918007957645 485.290679066082,336.3657151976316 C488.490287432968,331.53092211704984 492.01366165221054,326.911894705566 495.3344138380727,322.1565378293129 C498.61293501404253,317.46165626468894 502.1242899430212,312.9034232551773 505.0884991515781,308.0149998750004 C508.17446789390993,302.9257768515505 510.97307142075226,297.6132323141641 513.4849476907389,292.2235986184325 C514.830264050782,289.3370064434339 515.8074475557569,286.25638843914373 516.6600770416676,283.18632226280954 C517.5741707328411,279.8949416928839 518.3303540407443,276.5231792760036 518.7851172219915,273.13925837965286 C519.2819988974145,269.4419311688918 519.5689450243801,265.67168830493677 519.5150116116783,261.9425779414744 C519.4550986874348,257.8000270530702 519.1357902384688,253.60848036086423 518.4435782111552,249.5242746240532 C517.6653601907517,244.93261429743671 516.5841389381975,240.3302814695703 515.1037214685272,235.91497975119177 C513.4286657982045,230.9191753034084 511.0193462214934,226.16563035999843 508.9771587911764,221.29095612556745 C507.13666570619614,222.23421172768934 505.29617202792747,223.17746763387242 503.455678646303,224.12072338802494 C501.6151852646786,225.06397914217746 499.7746918830542,226.00723489632992 497.9341985014297,226.95049065048244 C496.09370511980524,227.89374640463495 494.2532117381808,228.8370021587874 492.4127183565564,229.78025791293993 C490.57222497493194,230.72351366709245 488.7317315933075,231.66676942124496 486.891238211683,232.61002517539748 C485.05074483005853,233.55328092954994 483.2102514484341,234.49653668370246 481.36975806680965,235.43979243785498 C479.52926468518524,236.3830481920075 477.68877130356077,237.32630394615995 475.8482779219363,238.26955970031247 C474.0077845403119,239.212815454465 472.1672911586875,240.1560712086175 470.326797777063,241.09932696276996 C468.48630439543854,242.04258271692248 466.6458107171699,242.98583862310556 464.80531763218966,243.92909422522746",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M427.1274594352868,364.459391381238 C425.34900926800384,366.73876902234724 423.7511043323974,369.1876486339733 421.79210831829096,371.29752509297805 C420.05611026230065,373.16722845369816 418.08997573210564,374.8759470598343 416.0424772249966,376.39813084041253 C414.2087326398168,377.76140229364796 412.1986789016632,378.9443350793779 410.1483790414244,379.95389079441895 C408.2809181580353,380.8734176616849 406.32009781162924,381.75465451642305 404.28919499411313,382.18537858733356 C400.6215860928697,382.96322350577395 396.79835631975857,383.56133861525666 393.05284388514576,383.5795977624718 C389.58303921409606,383.59651285096834 386.07188143555646,382.9373930998552 382.6432436771255,382.29090129446865 C379.36496767510283,381.67276116989837 376.16437323767207,380.6388572784326 372.932102603785,379.7857019726012 C369.80655176295375,378.9607152726805 366.72361848290547,377.94903813559546 363.56977925297065,377.2564752772123 C360.4048812842359,376.56148399074664 357.19788534907383,375.90804233828675 353.9758910077763,375.6230395380548 C350.3861382489838,375.3055065196746 346.74832197110214,375.5069250549144 343.1345379527005,375.44886782137587 C343.2379011814911,377.5144093895193 343.3412644436011,379.5799516234962 343.44462768905146,381.6454935245563 C343.54799093450174,383.7110354256165 343.6513541799521,385.7765773266766 343.75471742540236,387.84211922773676 C343.8580806708527,389.9076611287969 343.961443916303,391.9732030298571 344.06480716175327,394.03874493091723 C344.1681704072036,396.10428683197733 344.2715336693136,398.1698290659542 344.3748968981042,400.23537063409765 C349.31187435102856,400.29043473480715 354.2769214377175,400.01016892818444 359.185830256815,400.40056294737894 C363.5630436757844,400.74867247690526 367.92498778447526,401.568219961877 372.23326361230494,402.4508812802601 C376.49458555147123,403.3239228846492 380.6684359884157,404.6184985828079 384.89462355780284,405.6676717156956 C389.2479183944508,406.748399891424 393.56188426582196,408.07193121658497 397.9717108304102,408.8405852061084 C402.58286888050054,409.64433224232687 407.2886305109126,410.14304066207364 411.95757740183865,410.3848747929211 C414.42122824397575,410.5124827683465 416.92360630540907,410.27990944710916 419.36950402959974,409.948911524927 C421.95327371270594,409.5992556958844 424.5516501853265,409.09366914330946 427.0465796237294,408.34291353924687 C429.7347408168967,407.5340120732054 432.4102899061693,406.5272826356063 434.91877592431047,405.2699403146149 C437.6761975910698,403.88782260163515 440.37796310255766,402.275923325162 442.8443026784311,400.4245334373333 C445.60014229079735,398.3558265809363 448.24620298496797,396.0400586882252 450.58531348902955,393.50965008193776 C453.2256678029834,390.6533612199639 455.3835694560932,387.3461771193201 457.78269713247755,384.2644410325494 C455.2280942710295,382.6140204091596 452.67349084961245,380.9635994239975 450.11888770817984,379.31317861972155 C447.56428456674735,377.6627578154456 445.00968142531474,376.0123370111696 442.4550782838822,374.3619162068937 C439.90047514244964,372.71149540261774 437.3458720010171,371.06107459834175 434.79126885958453,369.41065379406587 C432.236665718152,367.76023298978987 429.68206229673495,366.1098120046278 427.1274594352868,364.459391381238",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M336.3855260438863,375.44886782137587 C332.9008170928522,374.89306755082816 329.3311929757412,374.6521485916139 325.9313982032661,373.7814668522267 C323.2611825502517,373.0976291017459 320.55688125427287,372.1603758399608 318.1754947674178,370.7853093517719 C314.5216569961676,368.6755006750796 310.99948518540134,366.1250338872145 307.8257254289503,363.32684135758313 C304.7694702593626,360.6322484959764 302.08621237651874,357.4637558395787 299.4854499893015,354.3069531780575 C295.87060049951157,349.9192526536057 292.61440966051805,345.2312053267009 289.17888979792883,340.6933317996643 C287.33957581608183,341.8816345978569 285.5002612742659,343.06993775782166 283.66094701243446,344.25824073690035 C281.82163275060304,345.44654371597903 279.9823182087871,346.63484687594377 278.14300422694015,347.8231496741364 C284.87422741784655,358.4695528241973 291.41344582504644,369.2515977964727 298.3366743340598,379.76235996955063 C299.8790814339724,382.10402385947447 301.59701885417763,384.37404851159044 303.539911053718,386.3804278631416 C305.7177237719725,388.62940414215745 308.0747665981607,390.8387865907505 310.6987890874443,392.52842686125155 C313.87078926978927,394.5709166905174 317.41898697334966,396.1587475357162 320.9279790686037,397.5768181624424 C323.01935404686003,398.4219945964808 325.27767414456457,398.90262326342616 327.49989030797536,399.31816804354526 C330.0167368211909,399.7888074206446 332.59674183260694,399.9296364769521 335.1451670984826,400.23537063409765 C335.24853032727316,398.1698290659542 335.3518935893832,396.10428683197733 335.4552568348335,394.03874493091723 C335.55862008028384,391.9732030298571 335.6619833257341,389.9076611287969 335.7653465711844,387.84211922773676 C335.86870981663475,385.7765773266766 335.97207306208503,383.7110354256165 336.07543630753537,381.6454935245563 C336.17879955298565,379.5799516234962 336.2821628150957,377.5144093895193 336.3855260438863,375.44886782137587",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M286.16919529805216,335.4803880106174 C285.0155021133757,332.5504319754631 283.6126060443143,329.69250177030074 282.7081153776445,326.69051897468864 C281.9975009009625,324.33200659648315 281.4523941310872,321.8547692275673 281.32387986799677,319.39890248916464 C281.12663397787287,315.6295961943379 281.2319936694172,311.76080422633805 281.73083491800145,308.0149998750004 C282.2171242034145,304.36344835138686 283.1307514754358,300.7158121226426 284.27927146998877,297.20683486431113 C285.9093767342464,292.2265103352701 288.1375644086868,287.43367431997893 290.06671069443337,282.54709451288284 C288.5510105591515,281.77029580855253 287.03530983058135,280.9934968001611 285.51960939865535,280.21669794380017 C284.0039089667293,279.4398990874393 282.48820823815913,278.6631000790478 280.97250810287727,277.8863013747175 C278.5820271567302,283.64606172896816 275.92303726303464,289.3112511342339 273.801064881108,295.1655833610817 C272.2828688291466,299.35415063432816 270.85866691231354,303.64920867701875 270.0520028012131,308.0149998750004 C269.21678268898467,312.5353405771173 268.8171695305963,317.23853948059246 268.87541221112133,321.82397906137743 C268.91338001676746,324.81318006030517 269.51930672219726,327.85774592899725 270.34063425972664,330.7389216141385 C271.3863856881263,334.40736501891 273.0979776123658,337.8948650698314 274.47664910890865,341.4728363311157 C276.42540651045505,340.4740950963965 278.37416450528985,339.47535355761624 280.3229222034804,338.47661217086653 C282.271679901671,337.4778707841168 284.2204378965058,336.4791292453365 286.16919529805216,335.4803880106174",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"rect",x:659.7000339982667,y:8.389921756510489,w:10,h:10,rx:0,ry:0,style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:16.38992175651049,text:"Salmon",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:26.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:34.38992175651049,text:"Perch",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:44.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:52.38992175651049,text:"Bass",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:62.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:70.38992175651049,text:"Catfish",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:80.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:88.38992175651049,text:"Trout",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]}},{key:"treemap",label:"Fare circle treemap",source:"https://gofish.graphics/js/examples/titanic-fare-circle-treemap.html",blurb:"GoFish's titanic fare circle treemap, verbatim: faceted by passenger class (facet by pclass, dir x), then a squarify-circle treemap per facet sizing each passenger by fare (sort desc, so fares run large→small) and colouring by survival. Three blocks — big first-class circles, then a field of tiny third-class ones. Every circle is a data node carrying its passenger; the facet labels/legend are chrome.",doc:S},{key:"bottle",label:"Bottle fill pictorial",source:"https://gofish.graphics/js/examples/bottle-fill-chart.html",blurb:"GoFish's real bottle-fill technique: a fill rect sized by amount is color-composited *inside* the bottle silhouette via paint({ blendMode: 'color' }), so the liquid reads as rising within the bottle (not a bar behind a picture). Bakes to a composite item; the adapter harvests the composite's datum so each bottle keeps hit-testing and tooltips.",doc:A},{key:"python",label:"Python memory diagram",source:"https://gofish.graphics/js/examples/python-tutor-memory-diagram.html",blurb:"A Python Tutor runtime memory diagram: a Global Frame of variables (c, d → pointers; x = 5) whose arrows fan into a heap of tuples, with tuple cells pointing on to further tuples. NOTE: GoFish's own example is not a portable spec — it relies on ~250 lines of unpublished story helpers (globalFrame/heap/tuple/Arrow). This is a best-effort reconstruction from GoFish primitives only (rect/text/Arrow/ref + .name()). It is also vertically flipped vs the live example: a free-space Layer baked through toDisplayList orients y-down differently than .render() (GoFish issue #143/#16). See gofish-displaylist-findings.md §6.",doc:j}],M=[{name:"Classic",tapioca:95,tea:470,ice:60},{name:"Extra Boba",tapioca:240,tea:360,ice:45},{name:"Light Ice",tapioca:95,tea:500,ice:12},{name:"Mega",tapioca:150,tea:660,ice:120}],B="#111111",W=function(){const e=.62,t=710,r=1180/M.length,n=[];return M.forEach((o,i)=>{const s=r*(i+.5),a=o.tapioca*e,l=o.tea*e,c=o.ice*e,d=a+l+c+70,u=t-d,p=e=>(150+e/d*70)/2,y=(e,r,n)=>{const o=p(e),i=p(r);return{kind:"path",d:`M ${s-o} ${t-e} L ${s+o} ${t-e} L ${s+i} ${t-r} L ${s-i} ${t-r} Z`,style:{fill:n}}};n.push({...y(a,a+l,"#cda86a"),datum:[{name:o.name,component:"tea",volume:o.tea}],role:"node",id:o.name+"-tea"}),n.push({...y(a+l,a+l+c,"#dcebf1"),datum:[{name:o.name,component:"ice",volume:o.ice}],role:"node",id:o.name+"-ice"});const h=13,f=Math.max(1,Math.round(a/26));for(let e=0;f>e;e++){const r=t-(e*h*2+h),o=p(e*h*2+h)-6,i=Math.max(1,Math.floor(2*o/26)),a=i*h*2;for(let e=0;i>e;e++)n.push({kind:"ellipse",cx:s-a/2+h+e*h*2,cy:r,rx:h,ry:h,style:{fill:"#241a12"},role:"overlay"})}n.push({kind:"rect",x:s-p(0),y:t-a,w:2*p(0),h:a,style:{fill:"rgba(0,0,0,0)"},datum:[{name:o.name,component:"tapioca",volume:o.tapioca}],role:"node",id:o.name+"-tapioca"});const m=Math.max(1,Math.round(c/34));for(let e=0;m>e;e++){const r=t-(a+l)-40*e*.78-20,o=p(a+l+40*e)-10,i=Math.max(1,Math.floor(2*o/40)),c=40*i;for(let e=0;i>e;e++)n.push({kind:"rect",x:s-c/2+4+40*e,y:r-20,w:33,h:33,rx:6,ry:6,style:{fill:"#cfe6ee",stroke:"#bcd9e3",strokeWidth:1},role:"overlay"})}const b=p(0),g=p(d);n.push({kind:"path",d:`M ${s-b} 710 L ${s+b} 710 L ${s+g} ${u} L ${s-g} ${u} Z`,style:{fill:"none",stroke:B,strokeWidth:4},role:"overlay"}),n.push({kind:"rect",x:s-g-10,y:u-4,w:2*(g+10),h:8,style:{fill:B},role:"overlay"});const v=s+22,x=s-14,k=u-64;n.push({kind:"path",d:`M ${v-13} ${k} L ${v+13} ${k} L ${x+13} 686 L ${x-13} 686 Z`,style:{fill:"#5b86b8",opacity:.85},role:"overlay"}),n.push({kind:"text",x:s,y:750,text:o.name,fontSize:26,fontFamily:"system-ui, sans-serif",textAnchor:"middle",style:{fill:"#444444"},role:"overlay"})}),{irVersion:0,ir:"gofish-display-list",viewport:{w:1180,h:820},items:n}}(),P=w,I=S,L=A,R=W,T=j,F=$.map(e=>({key:e.key,label:e.label,doc:e.doc,blurb:e.blurb,source:e.source})),E={key:"boba",label:"Boba volume cups (hand-written)",doc:W,blurb:"A pictorial bubble-tea chart written by hand — no gofish-graphics, no GoFish layout solve. Trapezoid cup outlines, lid bars, tilted straws, packed tapioca pearls, tan tea, and ice cubes are all computed in plain arithmetic and emitted as path/ellipse/rect/text items, proving the render IR is an open format any host can produce and still get Semiotic's hit-testing, tooltips, SSR, and a11y. The three volume bands per drink are data nodes; the cup, straw, pearls, and labels are chrome.",source:"https://observablehq.com/@kristw/boba-science",handWritten:!0},N=F.findIndex(e=>"bottle"===e.key),O=[...F.slice(0,N+1),E,...F.slice(N+1)];function D(e,t){const r=e.length,n=t.length,o=Array(n+1);for(let e=0;n>=e;e++)o[e]=e;for(let i=1;r>=i;i++){let r=o[0];o[0]=i;for(let s=1;n>=s;s++){const n=o[s];o[s]=e[i-1]===t[s-1]?r:1+Math.min(r,o[s],o[s-1]),r=n}}return o[n]}function z(e,t,r=3){let n,o=r+1;for(const r of t){const t=D(e.toLowerCase(),r.toLowerCase());o>t&&(o=t,n=r)}return o>r?void 0:n}function q(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:[...e]}function _(e,t){if(0===t.length)return null;const r=e.toLowerCase();return t.find(e=>e.toLowerCase().includes(r)||r.includes(e.toLowerCase()))||(z(e,t,3)??null)}var H={BarChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},valueExtent:{type:"array"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]},regression:{type:["boolean","string","object"]}}},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},stackBy:{type:["string","function"]},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},normalize:{type:"boolean"},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]}}},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},groupBy:{type:["string","function"]},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]}}},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},symbolBy:{type:["string","function"]},symbolMap:{type:"object"},pointRadius:{type:"number"},pointOpacity:{type:"number"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},BoxPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}}},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},relative:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},ViolinPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},bins:{type:"number"},curve:{type:"string"},showIQR:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},RidgelinePlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},amplitude:{type:"number"},categoryPadding:{type:"number"}}},DotPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"},regression:{type:["boolean","string","object"]}}},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"},cornerRadius:{type:"number"}}},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"},cornerRadius:{type:"number"}}},GaugeChart:{required:["value"],dataShape:"none",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},value:{type:"number"},min:{type:"number"},max:{type:"number"},thresholds:{type:"array"},gradientFill:{type:"object"},arcWidth:{type:"number"},cornerRadius:{type:"number"},sweep:{type:"number"},fillZones:{type:"boolean"},showNeedle:{type:"boolean"},needleColor:{type:"string"},color:{type:"string"},valueFormat:{type:"function"},centerContent:{type:["object","string","number","function"]},showScaleLabels:{type:"boolean"},backgroundColor:{type:"string"}}},FunnelChart:{required:["data"],dataShape:"array",dataAccessors:["stepAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},stepAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},connectorOpacity:{type:"number"},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},SwimlaneChart:{required:["subcategoryAccessor"],dataShape:"array",dataAccessors:["categoryAccessor","subcategoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},subcategoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},barPadding:{type:"number"},roundedTop:{type:"number"},trackFill:{type:["string","object"]},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},LikertChart:{required:[],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},levels:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},levelAccessor:{type:["string","function"]},countAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},barPadding:{type:"number"}}},LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},fillArea:{type:"boolean"},areaOpacity:{type:"number"},forecast:{type:"object"},anomaly:{type:"object"},band:{type:["object","array"]}}},AreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},gradientFill:{type:["boolean","object"]},semanticGradient:{type:"array"},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},forecast:{type:"object"},anomaly:{type:"object"},band:{type:["object","array"]}}},DifferenceChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","seriesAAccessor","seriesBAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},seriesAAccessor:{type:["string","function"]},seriesBAccessor:{type:["string","function"]},seriesALabel:{type:"string"},seriesBLabel:{type:"string"},seriesAColor:{type:"string"},seriesBColor:{type:"string"},showLines:{type:"boolean"},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},areaOpacity:{type:"number"},gradientFill:{type:["boolean","object"]},xExtent:{type:"array"},yExtent:{type:"array"},pointIdAccessor:{type:["string","function"]},windowSize:{type:"number"}}},StackedAreaChart:{required:["data","areaBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},normalize:{type:"boolean"}}},Scatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},symbolBy:{type:["string","function"]},symbolMap:{type:"object"},pointRadius:{type:"number"},pointOpacity:{type:"number"},regression:{type:["boolean","string","object"]},forecast:{type:"object"},anomaly:{type:"object"}}},BubbleChart:{required:["data","sizeBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},sizeBy:{type:["string","function"]},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeRange:{type:"array"},bubbleOpacity:{type:"number"},bubbleStrokeWidth:{type:"number"},bubbleStrokeColor:{type:"string"},regression:{type:["boolean","string","object"]}}},Heatmap:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:"string",enum:["blues","reds","greens","viridis","custom"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},customColorScale:{type:["object","function"]},showValues:{type:"boolean"},valueFormat:{type:"function"},cellBorderColor:{type:"string"},cellBorderWidth:{type:"number"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},QuadrantChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},xCenter:{type:"number"},yCenter:{type:"number"},quadrants:{type:"object"},centerlineStyle:{type:"object"},showQuadrantLabels:{type:"boolean"},quadrantLabelSize:{type:"number"},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}}},MultiAxisLineChart:{required:["series"],dataShape:"array",dataAccessors:["xAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},curve:{type:"string"},lineWidth:{type:"number"}}},CandlestickChart:{required:["highAccessor","lowAccessor"],dataShape:"array",dataAccessors:["xAccessor","highAccessor","lowAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},highAccessor:{type:["string","function"]},lowAccessor:{type:["string","function"]},openAccessor:{type:["string","function"]},closeAccessor:{type:["string","function"]},candlestickStyle:{type:"object"},mode:{type:"string",enum:["primary","context","sparkline"]}}},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},orderAccessor:{type:["string","function"]},orderLabel:{type:"string"},pointRadius:{type:"number"},pointIdAccessor:{type:["string","function"]},regression:{type:["boolean","string","object"]},forecast:{type:"object"},anomaly:{type:"object"}}},ScatterplotMatrix:{required:["data","fields"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},fields:{type:"array"}}},MinimapChart:{required:["data"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"}}},ForceDirectedGraph:{required:["nodes","edges"],dataShape:"network",dataAccessors:["nodeIDAccessor","sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},nodes:{type:"array"},edges:{type:"array"},nodeIDAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},nodeLabel:{type:["string","function"]},nodeSize:{type:["number","string","function"]},nodeSizeRange:{type:"array"},edgeWidth:{type:["number","string","function"]},edgeColor:{type:"string"},edgeOpacity:{type:"number"},iterations:{type:"number"},forceStrength:{type:"number"},layoutExecution:{type:"string",enum:["auto","worker","sync"]},showLabels:{type:"boolean"}}},SankeyDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},edges:{type:"array"},nodes:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target","gradient"]},orientation:{type:"string",enum:["vertical","horizontal"]},nodeAlign:{type:"string",enum:["justify","left","right","center"]},nodePaddingRatio:{type:"number"},nodeWidth:{type:"number"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"},edgeSort:{type:"function"}}},ProcessSankey:{required:["domain"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},edges:{type:"array"},nodes:{type:"array"},domain:{type:"array"},axisTicks:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},startTimeAccessor:{type:["string","function"]},endTimeAccessor:{type:["string","function"]},xExtentAccessor:{type:["string","function"]},edgeIdAccessor:{type:["string","function"]},legendPosition:{type:"string",enum:["right","left","top","bottom"]},pairing:{type:"string",enum:["value","temporal"]},packing:{type:"string",enum:["off","reuse"]},laneOrder:{type:"string",enum:["insertion","crossing-min","inside-out","crossing-min+inside-out"]},ribbonLane:{type:"string",enum:["source","target","both"]},lifetimeMode:{type:"string",enum:["full","half"]},showLaneRails:{type:"boolean"},showQualityReadout:{type:"boolean"},edgeOpacity:{type:"number"},timeFormat:{type:"function"},valueFormat:{type:"function"},showParticles:{type:"boolean"},particleStyle:{type:"object"}}},ChordDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},edges:{type:"array"},nodes:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target"]},padAngle:{type:"number"},groupWidth:{type:"number"},sortGroups:{type:"function"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"}}},TreeDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},layout:{type:"string",enum:["tree","cluster","partition","treemap","circlepack"]},orientation:{type:"string",enum:["vertical","horizontal","radial"]},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},edgeStyle:{type:"string",enum:["line","curve"]},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},nodeSize:{type:"number"}}},Treemap:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},nodeStyle:{type:"function"}}},CirclePack:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},circleOpacity:{type:"number"}}},OrbitDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},orbitMode:{type:["string","array"]},orbitSize:{type:["number","function"]},speed:{type:"number"},eccentricity:{type:["number","function"]},showRings:{type:"boolean"},nodeRadius:{type:["number","function"]},showLabels:{type:"boolean"},animated:{type:"boolean"},revolution:{type:"function"},foregroundGraphics:{type:"object"}}},ChoroplethMap:{required:["areas"],dataShape:"array",dataAccessors:["valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},areas:{type:["array","string"]},valueAccessor:{type:["string","function"]},projection:{type:"string"}}},ProportionalSymbolMap:{required:["points"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},points:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},areas:{type:["array","string"]}}},FlowMap:{required:["flows"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},flows:{type:"array"},nodes:{type:"array"},valueAccessor:{type:["string","function"]},lineIdAccessor:{type:["string","function"]}}},DistanceCartogram:{required:["points"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},points:{type:"array"},center:{type:"array"},costAccessor:{type:["string","function"]}}},RealtimeLineChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},stroke:{type:"string"},strokeWidth:{type:"number"},strokeDasharray:{type:"string"},transition:{type:"object"}}},RealtimeHistogram:{required:["binSize"],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},binSize:{type:"number"},direction:{type:"string",enum:["up","down"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},brush:{type:["boolean","string","object"]},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},transition:{type:"object"}}},TemporalHistogram:{required:["data","binSize"],dataShape:"array",dataAccessors:["timeAccessor","valueAccessor","categoryAccessor"],props:{data:{type:"array"},binSize:{type:"number"},size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},direction:{type:"string",enum:["up","down"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},linkedHover:{type:["boolean","string","object"]},linkedBrush:{type:["string","object"]},brush:{type:["boolean","string","object"]},onBrush:{type:"function"}}},RealtimeSwarmChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},categoryAccessor:{type:["string","function"]},colors:{type:"object"},radius:{type:"number"},fill:{type:"string"},opacity:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},pointStyle:{type:"function"},yScaleType:{type:"string",enum:["linear","log","symlog"]},transition:{type:"object"}}},RealtimeWaterfallChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},positiveColor:{type:"string"},negativeColor:{type:"string"},connectorStroke:{type:"string"},connectorWidth:{type:"number"},gap:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},transition:{type:"object"}}},RealtimeHeatmap:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},heatmapXBins:{type:"number"},heatmapYBins:{type:"number"},aggregation:{type:"string",enum:["count","sum","mean"]}}},GaltonBoardChart:{required:[],dataShape:"array",dataAccessors:["valueAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},valueAccessor:{type:["string","function"]},valueExtent:{type:"array"},bins:{type:"number"},mode:{type:"string",enum:["sample","mechanical"]},pegRows:{type:"number"},mechanicalCount:{type:"number"},branchProbability:{type:"number"},referenceLines:{type:["object","array"]},showProjection:{type:"boolean"}}},EventDropChart:{required:["data"],dataShape:"array",dataAccessors:["timeAccessor","arrivalAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},timeAccessor:{type:["string","function"]},arrivalAccessor:{type:["string","function"]},windows:{type:"object"},watermark:{type:["object","function"]},timeExtent:{type:"array"},timeScale:{type:"number"}}},PhysicsPileChart:{required:[],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},mode:{type:"string",enum:["sample","mechanical"]},mechanicalCount:{type:"number"},mechanicalCategories:{type:"array"},unitValue:{type:"number"},showProjection:{type:"boolean"},sediment:{type:"boolean"}}},CollisionSwarmChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","groupAccessor","radiusAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},xAccessor:{type:["string","function"]},groupAccessor:{type:["string","function"]},radiusAccessor:{type:["string","function"]},pointRadius:{type:"number"},xExtent:{type:"array"},collisionIterations:{type:"number"},settle:{type:"boolean"},showProjection:{type:"boolean"}}},GauntletChart:{required:["negativeProperties"],dataShape:"array",dataAccessors:["idAccessor","positiveAccessor","negativeAccessor","metricsAccessor","startTimeAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},positiveProperties:{type:"array"},negativeProperties:{type:"array"},gates:{type:"array"},events:{type:["array","function"]},startTimeAccessor:{type:["string","function"]},onCapacityChange:{type:"function"},crashDetection:{type:"boolean"},showChrome:{type:"boolean"},showProjection:{type:"boolean"},showTethers:{type:"boolean"},coreForceMode:{type:"string",enum:["route","net"]},terminalBehavior:{type:"string",enum:["outcome","hold-last"]}}},ProcessFlowChart:{required:["stages"],dataShape:"array",dataAccessors:["idAccessor","stageAccessor","groupBy","workAccessor","radiusAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},stages:{type:"array"},stageAccessor:{type:["string","function"]},idAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},groupLabelAccessor:{type:["string","function"]},workAccessor:{type:["string","function"]},radiusAccessor:{type:["string","function"]},groupCompletion:{type:"string",enum:["allAbsorbed","none"]},groupAnchorAlong:{type:"number"},showProjection:{type:"boolean"},showChrome:{type:"boolean"},settle:{type:"boolean"}}},PhysicalFlowChart:{required:[],dataShape:"network",dataAccessors:["nodeIdAccessor","nodeXAccessor","nodeYAccessor","sourceAccessor","targetAccessor","throughputAccessor","pathAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},size:{type:"array"},nodes:{type:"array"},links:{type:"array"},edges:{type:"array"},data:{type:"array"},nodeIdAccessor:{type:["string","function"]},nodeXAccessor:{type:["string","function"]},nodeYAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},throughputAccessor:{type:["string","function"]},pathAccessor:{type:["string","function"]},coordinateMode:{type:"string",enum:["auto","normalized","pixels"]},particleRate:{type:"number"},maxParticles:{type:"number"},particleRadius:{type:"number"},flowSpeed:{type:"number"},pathConstraint:{type:"string",enum:["path","none"]},reducedMotion:{type:"boolean"},showStaticFlow:{type:"boolean"},showNodeLabels:{type:"boolean"},showSensors:{type:"boolean"},paused:{type:"boolean"},seed:{type:"number"}}},BigNumber:{required:[],dataShape:"none",dataAccessors:[],props:{width:{type:["number","string"]},height:{type:["number","string"]},className:{type:"string"},value:{type:"number"},label:{type:"string"},caption:{type:"string"},format:{type:["string","function"],enum:["number","currency","percent","compact","duration"]},locale:{type:"string"},currency:{type:"string"},precision:{type:"number"},prefix:{type:"string"},suffix:{type:"string"},unit:{type:"string"},comparison:{type:"object"},target:{type:"object"},delta:{type:"number"},deltaFormat:{type:["string","function"],enum:["number","currency","percent","compact","duration"]},showDeltaPercent:{type:"boolean"},direction:{type:"string",enum:["higher-is-better","lower-is-better","neutral"]},sentiment:{type:"string",enum:["auto","positive","negative","neutral"]},thresholds:{type:"array"},chartSlot:{type:["string","number","array","object","function"]},chartSize:{type:"number"},windowSize:{type:"number"},mode:{type:"string",enum:["tile","presentation","inline","thumbnail"]},align:{type:"string",enum:["start","center","end"]},padding:{type:["number","object"]},emphasis:{type:"string",enum:["primary","secondary"]},color:{type:"string"},background:{type:"string"},borderColor:{type:"string"},borderRadius:{type:["number","string"]},animate:{type:["boolean","object"]},stalenessThreshold:{type:"number"},staleLabel:{type:"string"},headerSlot:{type:["string","number","array","object","function"]},valueSlot:{type:["string","number","array","object","function"]},deltaSlot:{type:["string","number","array","object","function"]},trendSlot:{type:["string","number","array","object","function"]},footerSlot:{type:["string","number","array","object","function"]},onClick:{type:"function"},onObservation:{type:"function"}}}};function G(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}var V=["title","description","summary"];function U(e){return"string"==typeof e&&e.trim().length>0}function Y(e){let t=e.replace(/^#/,"");/^[a-f\d]{3}$/i.test(t)&&(t=t.split("").map(e=>e+e).join(""));const r=t.match(/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);if(!r)return null;const[n,o,i]=[parseInt(r[1],16)/255,parseInt(r[2],16)/255,parseInt(r[3],16)/255],s=e=>e>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92;return.2126*s(n)+.7152*s(o)+.0722*s(i)}function Q(e,t){const r=Y(e),n=Y(t);return null===r||null===n?null:(Math.max(r,n)+.05)/(Math.min(r,n)+.05)}var X=new Set(["label","callout","callout-circle","callout-rect","text","widget"]),Z=new Set(["label","callout","callout-circle","callout-rect"]);function K(e){return"string"==typeof e?.type?e.type:""}function J(e){return!!e&&"object"==typeof e&&X.has(K(e))}function ee(e){return Z.has(K(e))&&!function(e){return Array.isArray(e?.disable)&&e.disable.includes("connector")}(e)}var te=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),re=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),ne=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),oe=new Set(["LineChart","AreaChart","StackedAreaChart"]),ie=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]),se=new Set(["LineChart","AreaChart","StackedAreaChart","ConnectedScatterplot"]),ae=new Set(["PieChart","DonutChart"]),le={PieChart:"valueAccessor",DonutChart:"valueAccessor",FunnelChart:"valueAccessor"},ce=new Set(Object.keys(le)),de={StackedBarChart:"valueAccessor",StackedAreaChart:"yAccessor"},ue=new Set(["BigNumber"]),pe=new Set(["LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","ConnectedScatterplot","BubbleChart","QuadrantChart","MultiAxisLineChart","CandlestickChart","Heatmap","MinimapChart"]),ye=new Set(["StreamPhysicsFrame","GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","PhysicsCustomChart"]),he=new Set(["OrbitDiagram",...ye]),fe=new Set(["GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart"]),me=new Set(["GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart","PhysicsCustomChart"]),be=new Set(["RealtimeLineChart","RealtimeHistogram","RealtimeSwarmChart","RealtimeWaterfallChart","RealtimeHeatmap","ProcessSankey"]),ge=new Set(["MultiAxisLineChart"]),ve=new Set(["ChoroplethMap","ProportionalSymbolMap","FlowMap","DistanceCartogram"]),xe={Scatterplot:"pointRadius",BubbleChart:"pointRadius",ConnectedScatterplot:"pointRadius",QuadrantChart:"pointRadius",SwarmPlot:"pointRadius",DotPlot:"dotRadius"};function ke(e,t=new Set){if(null===e)return!0;const r=typeof e;if("string"===r||"boolean"===r)return!0;if("number"===r)return Number.isFinite(e);if("object"!==r)return!1;if(t.has(e))return!1;t.add(e);const n=Array.isArray(e)?e.every(e=>ke(e,t)):Object.entries(e).every(([,e])=>ke(e,t));return t.delete(e),n}var Ce=Symbol.for("semiotic.chartRecipeRegistry");function we(e){return function(){const e=globalThis;return e[Ce]||(e[Ce]={recipes:new Map,capabilities:new Map,layouts:new Map}),e[Ce]}().recipes.get(e)}function Se(e){return"string"==typeof e?we(e):e&&"object"==typeof e&&"string"==typeof e.id?e:void 0}var Ae=new Set(["#0072b2","#e69f00","#009e73","#cc79a7","#56b4e9","#d55e00","#f0e442","#000000"]),je="Chartability (POUR-CAF) — https://chartability.github.io/POUR-CAF/. Not a pass/fail cert; pair with manual screen-reader testing (NVDA+Firefox, JAWS+Chrome, VoiceOver+Safari).";function $e(e){return"primary"===e?.emphasis||"secondary"===e?.emphasis||null!=function(e){const t=e?.provenance?.confidence;return"number"==typeof t&&Number.isFinite(t)?t:null}(e)}function Me(e){const t=e.toLowerCase().replace(/[^a-z]/g,"");if(!t)return 0;if(3>=t.length)return 1;const r=t.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/,"").replace(/^y/,"").match(/[aeiouy]{1,2}/g);return r?r.length:1}function Be(e){return e.physics&&"object"==typeof e.physics?e.physics:{}}var We={pass:"✓",fail:"✗",warn:"⚠",manual:"○","not-applicable":"·"},Pe=["perceivable","operable","understandable","robust","compromising","assistive","flexible"];function Ie(e){let t=e>>>0;return function(){t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}require("d3-interpolate");var Le=80,Re=100;function Te(e,t={}){const r=[],n=e.tokenSemantics,o=e.countStrategy,i=t.maxRecommendedTokens??("fixed-denominator"!==o||function(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,t):0}(e.denominator)>Re?Le:Re);return n||r.push({code:"TOKEN_SEMANTICS_UNCLEAR",severity:"warning",message:"Every tokenized encoding should state what one token represents."}),o||r.push({code:"MISSING_COUNT_STRATEGY",severity:"warning",message:"Every tokenized encoding should state how token counts are produced."}),"icon"!==e.tokenType&&"glyph"!==e.tokenType||"icon-only"!==e.labelPolicy&&"token-only"!==e.labelPolicy||r.push({code:"ICON_ONLY_LABELS",severity:"warning",message:"Icons should supplement text labels, not replace them."}),null!=t.visibleTokens&&t.visibleTokens>i&&r.push({code:"TOO_MANY_VISIBLE_TOKENS",severity:"warning",message:`This encoding renders ${t.visibleTokens} visible tokens. Consider unitizing, sampling, or a hybrid bar/token view.`}),"decorative"!==n||"icon"!==e.tokenType&&"glyph"!==e.tokenType||r.push({code:"DECORATIVE_PICTOGRAPHS",severity:"warning",message:"Decorative pictographs can harm recall and speed when they do not clarify the data."}),"unitized-measure"===n&&o&&"unitized"!==o&&r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Unitized measures should use the unitized count strategy so each token has a stable value."}),"risk-case"===n&&o&&"fixed-denominator"!==o&&r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Risk cases are usually clearest as a fixed-denominator natural frequency."}),"possible-outcome"!==n&&"posterior-sample"!==n&&"hypothetical-case"!==n||!o||"quantile"===o||"sample"===o||"posterior-sample"===o||"random-sample"===o||r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Outcome/sample tokens should come from quantiles or samples, not from a unitized magnitude."}),"unitized-measure"===n&&"unitized"===o&&null==e.unitValue&&null==e.unit&&r.push({code:"MISSING_UNIT_VALUE",severity:"warning",message:"Unitized measures should set unitValue so each token has a declared value."}),"unitized-measure"!==n||"unitized"!==o||e.unitMeaning||r.push({code:"MISSING_UNIT_MEANING",severity:"info",message:"Add unitMeaning so readers know what one full token represents."}),r}var Fe=2e4;function Ee(e){return"primary"===e?.emphasis||!0===e?.defensive}function Ne(e,t,r={}){return"number"==typeof r.maxAnnotations&&Number.isFinite(r.maxAnnotations)?Math.max(0,Math.floor(r.maxAnnotations)):e>0&&t>0?Math.max(1,Math.round(e*t/(r.areaPerAnnotation&&r.areaPerAnnotation>0?r.areaPerAnnotation:Fe))):1/0}function Oe(e){let t;const r=e?.emphasis;t="primary"===r?100:"secondary"===r?10:50;const n=e?.provenance?.confidence;switch("number"==typeof n&&Number.isFinite(n)&&(t+=15*Math.max(0,Math.min(1,n))),e?.lifecycle?.freshness){case"fresh":t+=8;break;case"aging":t+=4;break;case"stale":t+=1;break;case"expired":t-=200}return t}var De=l(require("react")),ze=require("react"),qe=require("react/jsx-runtime");function _e(e){let t=null;const r=()=>(t||(t=(0,ze.createContext)(null)),t),n=He(e);return[function({children:t,initialState:n}){const o=(0,ze.useRef)(n),i=(0,ze.useMemo)(()=>He(e,o.current),[]),s=r();return(0,qe.jsx)(s.Provider,{value:i,children:t})},(e,t)=>{const o=r(),i=(0,ze.useContext)(o)??n,s=(0,ze.useRef)(e);s.current=e;const a=(0,ze.useRef)({hasValue:!1,value:void 0}),l=(0,ze.useCallback)(()=>{const e=s.current(i.getState()),r=a.current;return r.hasValue&&t&&t(r.value,e)?r.value:(a.current={hasValue:!0,value:e},e)},[i,t]),c=(0,ze.useCallback)(()=>s.current(i.getState()),[i]);return(0,ze.useSyncExternalStore)(i.subscribe,l,c)}]}function He(e,t){const r=new Set;let n={...e(function(e){const t=e(n);if(function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}(t)){n={...n,...t};for(const e of r)e()}}),...t??{}};return{getState:()=>n,subscribe:function(e){return r.add(e),()=>{r.delete(e)}}}}var[Ge,Ve]=_e(e=>({observations:[],maxObservations:100,version:0,pushObservation(t){e(e=>{const r=e.observations;return r.push(t),r.length>e.maxObservations&&r.shift(),{version:e.version+1}})},clearObservations(){e(()=>({observations:[],version:0}))}}));function Ue(e){const t=e.provenance,r=e.id??e.stableId??t?.stableId;return null==r||""===r?void 0:r+""}function Ye(e,t={}){const r=Ue(e);return{"data-semiotic-annotation-widget":"",...r?{"data-semiotic-annotation-id":r}:{},onClickCapture(n){const o=function(e){const t=e.nativeEvent;return"touch"===t.pointerType?"touch":0===t.detail?"keyboard":"pointer"}(n);t.onAnnotationActivate?.({annotation:e,annotationId:r,chartId:t.chartId,inputType:o}),r&&t.onObservation&&t.onObservation({type:"annotation-activate",annotationId:r,inputType:o,timestamp:Date.now(),chartType:t.chartType??"unknown",chartId:t.chartId})}}}var Qe=120,Xe=250,Ze=["xExtent","yExtent","rExtent"],Ke=8;function Je(e){const t=e instanceof Date?e.getTime():Number(e);return Number.isFinite(t)?t:null}function et(e,t,r){if("function"==typeof t)return t(e);const n="string"==typeof t?t:r;return e?.[n]}var tt=new Set(["category10","tableau10","set3","blues","reds","greens","oranges","purples","greys","viridis","plasma","inferno","magma","cividis","turbo"]),rt=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function nt(e){return"object"==typeof e&&null!==e&&("tokenType"in e||"tokenSemantics"in e||"countStrategy"in e||"unitValue"in e||"unit"in e)}function ot(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0?e:void 0}function it(e,t){const r=ot(e.visibleTokens);if(null!=r)return r;const n=ot(t.denominator);if("fixed-denominator"===t.countStrategy&&null!=n)return n;const o=ot(t.tokenCount),i=ot(t.maxTokens);return null!=o&&null!=i?Math.min(o,i):o??n??i}function st(e,t){const r=[],n=function(e,t){const r=[];null!=t&&"object"==typeof t||(t={});const n=H[e];if(!n)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(H).join(", ")}`]};for(const o of n.required)null==t[o]&&r.push(`"${o}" is required for ${e}.`);"array"!==n.dataShape||!Object.prototype.hasOwnProperty.call(n.props,"data")||n.required.includes("data")||function(e,t){return"mechanical"===t.mode&&("GaltonBoardChart"===e||"PhysicsPileChart"===e)}(e,t)||null!=t.data||r.push(`"data" is required for ${e}.`);for(const[e,o]of Object.entries(t)){if(null==o)continue;const t=n.props[e];if(t){if(!G(o,t.type)){const n=Array.isArray(t.type)?t.type.join(" | "):t.type;r.push(`"${e}" should be ${n}, got ${Array.isArray(o)?"array":typeof o}.`);continue}t.enum&&"string"==typeof o&&!t.enum.includes(o)&&r.push(`"${e}" value "${o}" is not valid. Expected one of: ${t.enum.join(", ")}.`)}}const o=Object.keys(n.props),i=new Set(o);for(const n of Object.keys(t))if(void 0!==t[n]&&!i.has(n)){const t=z(n,o),i=t?`Unknown prop "${n}" for ${e}. Did you mean "${t}"?`:`Unknown prop "${n}" for ${e}. Valid props: ${o.join(", ")}.`;r.push(i)}if("array"===n.dataShape){const o=t.data,i={};for(const e of n.dataAccessors){const r=t[e];"string"==typeof r&&(i[e]=r)}const s=function({componentName:e,data:t,accessors:r,requiredProps:n}){if(n)for(const[t,r]of Object.entries(n))if(null==r)return`${e}: ${t} is required. Provide a field name or function.`;if(null==t)return null;if(!Array.isArray(t)&&"object"==typeof t)return e+": data should be an array, but received an object. If this is hierarchical data, use TreeDiagram, Treemap, or CirclePack instead.";if(!Array.isArray(t)||0===t.length)return e+": No data provided. Pass a non-empty array to the data prop.";if(r){const n=q(t).find(e=>e&&"object"==typeof e);if(n){const t=Object.keys(n);for(const[o,i]of Object.entries(r))if(i&&"string"==typeof i&&!(i in n)){const r=_(i,t),n=r?` Try ${o}="${r}".`:"";return`${e}: ${o} "${i}" not found in data. Available fields: ${t.join(", ")}.${n}`}}}return null}({componentName:e,data:o,accessors:Object.keys(i).length>0?i:void 0});s&&r.push(s)}else if("object"===n.dataShape){const n=function({componentName:e,data:t,dataLabel:r="data"}){return null==t?`${e}: No ${r} provided. Pass a hierarchical object with children: { name: "root", children: [...] }.`:Array.isArray(t)?`${e}: ${r} should be a single root object, not an array. Expected: { name: "root", children: [...] }. If you have flat data, use LineChart, BarChart, or Scatterplot instead.`:null}({componentName:e,data:t.data});n&&r.push(n)}else if("network"===n.dataShape){const o=function({componentName:e,nodes:t,edges:r,nodesRequired:n=!1,edgesRequired:o=!0,accessors:i}){if(null==t&&null==r)return null;if(o&&(!r||!Array.isArray(r)||0===r.length))return e+': No edges provided. Pass a non-empty array: edges={[{ source: "A", target: "B", value: 10 }, ...]}.';if(n&&(!t||!Array.isArray(t)||0===t.length))return e+': No nodes provided. Pass a non-empty array: nodes={[{ id: "A" }, { id: "B" }, ...]}.';if(i&&t&&t.length>0){const r=q(t).find(e=>e&&"object"==typeof e);if(r){const t=Object.keys(r);for(const[n,o]of Object.entries(i))if(o&&"string"==typeof o&&!(o in r)){const r=_(o,t),i=r?` Try ${n}="${r}".`:"";return`${e}: ${n} "${o}" not found in node data. Available fields: ${t.join(", ")}.${i}`}}}return null}({componentName:e,nodes:t.nodes,edges:t.edges,nodesRequired:n.required.includes("nodes"),edgesRequired:n.required.includes("edges")});o&&r.push(o)}return{valid:0===r.length,errors:r}}(e,function(e){const t={...e};return delete t.tokenEncoding,delete t.visibleTokens,nt(t.encoding)&&delete t.encoding,t}(t));for(const e of n.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return H[e]?(function(e,t,r){const n=H[e];if(n){if("array"===n.dataShape){const e=t.data;e&&Array.isArray(e)&&0===e.length&&r.push({severity:"error",code:"EMPTY_DATA",message:"data is an empty array — chart will render blank.",fix:"Provide at least one data point: data={[{ x: 1, y: 2 }]}."})}"network"===n.dataShape&&t.edges&&Array.isArray(t.edges)&&0===t.edges.length&&r.push({severity:"error",code:"EMPTY_EDGES",message:"edges is an empty array — network chart will render blank.",fix:'Provide at least one edge: edges={[{ source: "A", target: "B" }]}.'})}}(e,t,r),function(e,t,r){const n=t.width,o=t.height;if(void 0===n||"number"==typeof n&&n>0||r.push({severity:"error",code:"BAD_WIDTH",message:`width=${JSON.stringify(n)} — chart needs a positive number.`,fix:"Set width={600} or use responsiveWidth={true}."}),void 0===o||"number"==typeof o&&o>0||r.push({severity:"error",code:"BAD_HEIGHT",message:`height=${JSON.stringify(o)} — chart needs a positive number.`,fix:"Set height={400} or use responsiveHeight={true}."}),t.size&&Array.isArray(t.size)){const[e,n]=t.size;(null!=e&&0>=e||null!=n&&0>=n)&&r.push({severity:"error",code:"BAD_SIZE",message:`size=[${e}, ${n}] — both dimensions must be positive.`,fix:"Set size={[600, 400]}."})}}(0,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=o[0];if(!i||"object"!=typeof i)return;const s=Object.keys(i);for(const e of n.dataAccessors){const n=t[e];"string"==typeof n&&(n in i||r.push({severity:"error",code:"ACCESSOR_MISSING",message:`${e}="${n}" not found in data. Available fields: ${s.join(", ")}.`,fix:`Change ${e} to one of: ${s.map(e=>`"${e}"`).join(", ")}.`}))}}(e,t,r),function(e,t,r){te.has(e)&&Array.isArray(t.data)&&r.push({severity:"error",code:"HIERARCHY_FLAT_ARRAY",message:e+" expects hierarchical data but received a flat array.",fix:'Pass a root object: data={{ name: "root", children: [...] }}. For flat data, use BarChart or LineChart.'})}(e,t,r),function(e,t,r){re.has(e)&&(t.edges||t.data||r.push({severity:"error",code:"NETWORK_NO_EDGES",message:e+" requires an edges prop.",fix:'Provide edges={[{ source: "A", target: "B", value: 10 }]}.'}))}(e,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=o[0];if(!i||"object"!=typeof i)return;const s=t.xAccessor;"string"==typeof s&&i[s]instanceof Date&&!t.xFormat&&r.push({severity:"warning",code:"DATE_NO_FORMAT",message:`xAccessor "${s}" contains Date objects but no xFormat is provided. Axis ticks may display "[object Object]".`,fix:"Add xFormat={d => d.toLocaleDateString()} or use timestamps (d.getTime()) instead of Date objects."})}(e,t,r),function(e,t,r){t.linkedHover&&!t.selection&&r.push({severity:"warning",code:"LINKED_HOVER_NO_SELECTION",message:"linkedHover is set but selection is not — this chart emits hover events but won't highlight from others.",fix:`Add selection={{ name: "${"object"==typeof t.linkedHover&&t.linkedHover.name||"hl"}" }} to receive cross-highlights.`})}(0,t,r),function(e,t,r){if(!ne.has(e))return;const n=t.rExtent||t.yExtent||t.valueExtent;n&&Array.isArray(n)&&n.length>=1&&null!=n[0]&&0!==n[0]&&r.push({severity:"warning",code:"NON_ZERO_BASELINE",message:`${e} has a non-zero baseline (${n[0]}). Bar and area charts should start at zero to avoid exaggerating differences.`,fix:`Remove the custom extent minimum or set it to 0: rExtent={[0, ${n[1]??"auto"}]}. For trend-focused charts, use LineChart instead.`})}(e,t,r),function(e,t,r){if(!oe.has(e))return;if(t.gapStrategy)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=t.yAccessor||"y";"string"==typeof o&&n.some(e=>{const t=e[o];return null==t||Number.isNaN(t)})&&r.push({severity:"warning",code:"DATA_GAPS",message:`Data contains null/undefined/NaN values in "${o}". Default behavior breaks the line at gaps.`,fix:'Set gapStrategy="break" (default), "interpolate", or "zero" to control gap handling.'})}(e,t,r),function(e,t,r){const n=t.width??600,o=t.height??400,i=t.margin;if(!i||"object"!=typeof i)return;const s=(i.left||0)+(i.right||0),a=(i.top||0)+(i.bottom||0);n>s||r.push({severity:"error",code:"MARGIN_OVERFLOW_H",message:`Horizontal margins (${s}px) >= width (${n}px) — no drawing area left.`,fix:"Reduce margin.left/right or increase width."}),o>a||r.push({severity:"error",code:"MARGIN_OVERFLOW_V",message:`Vertical margins (${a}px) >= height (${o}px) — no drawing area left.`,fix:"Reduce margin.top/bottom or increase height."})}(0,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=[];t.xAccessor&&"string"==typeof t.xAccessor&&i.push({prop:"xAccessor",name:t.xAccessor}),t.yAccessor&&"string"==typeof t.yAccessor&&i.push({prop:"yAccessor",name:t.yAccessor}),t.valueAccessor&&"string"==typeof t.valueAccessor&&i.push({prop:"valueAccessor",name:t.valueAccessor});const s=Math.min(o.length,5);for(const e of i){let t=!0;for(let r=0;s>r;r++){const n=o[r]?.[e.name];if("number"==typeof n&&Number.isFinite(n)){t=!1;break}}t&&r.push({severity:"error",code:"DEGENERATE_EXTENT",message:`${e.prop}="${e.name}" produces NaN or non-finite values for all sampled data points — chart extents will be invalid.`,fix:`Ensure data[].${e.name} contains finite numbers, or use a function accessor to transform values.`})}}(e,t,r),function(e,t,r){if(!ie.has(e))return;const n=t.barPadding;"number"==typeof n&&10>n&&r.push({severity:"warning",code:"BAR_PADDING_INVISIBLE",message:`barPadding=${n} is very small — bars may appear to have no spacing between them.`,fix:"Increase barPadding to at least 10 for visible gaps, e.g. barPadding={12}."})}(e,t,r),function(e,t,r){if("bottom"!==t.legendPosition)return;const n=t.margin;if(!n||"object"!=typeof n)return;const o=n.bottom;"number"==typeof o&&70>o&&r.push({severity:"warning",code:"BOTTOM_MARGIN_WITH_LEGEND",message:`legendPosition="bottom" with margin.bottom=${o}px — legend may overlap axis labels.`,fix:"Increase margin.bottom to at least 70, e.g. margin={{ ...margin, bottom: 80 }}."})}(0,t,r),function(e,t,r){if(!t.showLegend)return;if("right"!==(t.legendPosition??"right"))return;const n=t.margin;if(!n||"object"!=typeof n)return;const o=n.right;"number"==typeof o&&100>o&&r.push({severity:"warning",code:"LEGEND_MARGIN_TIGHT",message:`showLegend is true with legendPosition="right" but margin.right=${o}px — legend may be clipped or overlap the chart.`,fix:"Increase margin.right to at least 100, e.g. margin={{ ...margin, right: 120 }}."})}(0,t,r),function(e,t,r){if("Heatmap"!==e)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=n[0];if(o&&"object"==typeof o)for(const e of["xAccessor","yAccessor"]){const n=t[e];if("string"!=typeof n)continue;const i=o[n];"string"==typeof i&&r.push({severity:"warning",code:"HEATMAP_STRING_ACCESSOR",message:`${e}="${n}" resolves to string values (e.g. "${i}"). Heatmap will use categorical axis handling which may produce unexpected cell layout.`,fix:"If you intend categorical axes this is fine. Otherwise, convert values to numbers before passing data."})}}(e,t,r),function(e,t,r){const n=t.colorScheme;if(!n||!Array.isArray(n))return;const o="string"==typeof t.background?t.background:"#ffffff";if(!o.startsWith("#"))return;const i=[];for(const e of n){if("string"!=typeof e||!e.startsWith("#"))continue;const t=Q(e,o);null!==t&&3>t&&i.push(`${e} (${t.toFixed(1)}:1)`)}i.length>0&&r.push({severity:"warning",code:"LOW_COLOR_CONTRAST",message:`${i.length} color(s) in colorScheme have < 3:1 contrast against background "${o}": ${i.join(", ")}. Data marks may be hard to see.`,fix:'Use darker colors on light backgrounds or lighter colors on dark backgrounds. Import COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for an accessible preset.'})}(0,t,r),function(e,t,r){const n=t.colorScheme;if(!n||!Array.isArray(n)||2>n.length)return;const o=n.filter(e=>"string"==typeof e&&e.startsWith("#"));if(2>o.length)return;const i=[];for(let e=0;o.length-1>e;e++){const t=Q(o[e],o[e+1]);null!==t&&1.5>t&&i.push(`${o[e]} / ${o[e+1]} (${t.toFixed(1)}:1)`)}i.length>0&&r.push({severity:"warning",code:"LOW_ADJACENT_CONTRAST",message:`${i.length} adjacent color pair(s) in colorScheme have very similar luminance: ${i.join("; ")}. Categories may be hard to distinguish.`,fix:'Alternate light and dark colors in the scheme, or use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for a pre-tested palette.'})}(0,t,r),function(e,t,r){const n=t.colorScheme;if("string"!=typeof n)return;const o=H[e];o?.props?.colorScheme?.enum||tt.has(n)||r.push({severity:"warning",code:"UNKNOWN_COLOR_SCHEME",message:`colorScheme "${n}" is not a recognized named scheme — the chart will fall back to the default palette.`,fix:`Use a known scheme name (${[...tt].join(", ")}) or pass an explicit color array, e.g. colorScheme={["#1f77b4", "#ff7f0e"]}.`})}(e,t,r),function(e,t,r){const n=H[e]?.props,o=e=>!!n?.[e]&&"string"==typeof t[e]&&t[e].trim().length>0,i=o("title"),s=o("description"),a=o("summary");i||s||a||r.push({severity:"warning",code:"MISSING_DESCRIPTION",message:"No title, description, or summary provided. Screen readers will fall back to a generic chart-type label.",fix:'Add a title="..." prop for a brief label, or description="..." for a detailed aria-label, or summary="..." for a screen-reader-only note describing the chart\'s purpose.'})}(e,t,r),function(e,t,r){const n=[];for(const e of rt)"function"==typeof t[e]&&n.push(e);n.length>0&&r.push({severity:"warning",code:"FUNCTION_ACCESSOR",message:`Function accessor${n.length>1?"s":""} detected: ${n.join(", ")}. If defined inline (e.g. \`xAccessor={d => d.value}\`), every parent re-render creates a new reference; closures over changing values can force unnecessary scene rebuilds on resize/rotation.`,fix:'Use string accessors when possible (e.g. xAccessor="value"), or memoize with useCallback / define outside the component.'})}(0,t,r),function(e,t,r){const n=t.hoverRadius;"number"==typeof n&&n>0&&24>n&&!1!==t.enableHover&&(!1!==t.hoverAnnotation||t.tooltip||t.customHoverBehavior||t.customClickBehavior||t.onClick)&&r.push({severity:"warning",code:"TOUCH_TARGET_SMALL",message:`hoverRadius=${n}px is below the ~24px radius needed for reliable 48px touch targets on mobile screens.`,fix:"Use hoverRadius={24} or larger for touch-heavy views. Semiotic floors touch pointer hit testing to 24px, but explicit desktop-only radii should be documented."})}(0,t,r),function(e,t,r){!0===t.responsiveWidth&&!0===t.responsiveHeight&&r.push({severity:"warning",code:"RESPONSIVE_BOTH_AXES",message:"responsiveWidth and responsiveHeight are both true. On mobile this can create resize feedback loops when the parent height depends on chart content.",fix:"Prefer responsiveWidth={true} with a fixed parent height or size={[width, fixedHeight]}; use a ResizeObserver outside the chart if the height must follow aspect ratio."})}(0,t,r),function(e,t,r){if(!0!==t.showParticles)return;const n=t.particleStyle&&"object"==typeof t.particleStyle?t.particleStyle:{},o="number"==typeof n.maxPerLine?n.maxPerLine:void 0,i="number"==typeof n.spawnRate?n.spawnRate:void 0;("number"==typeof o&&o>20||"number"==typeof i&&i>.08)&&r.push({severity:"warning",code:"GEO_PARTICLE_MOBILE_COST",message:"Animated geo particles run a continuous canvas loop that can drain battery and trigger thermal throttling on mobile GPUs.",fix:"Set particleStyle={{ maxPerLine: 12, spawnRate: 0.06 }} for mobile-heavy views, or disable showParticles when reduced-motion or low-power modes are active."})}(0,t,r),function(e,t,r){const n=[];nt(t.tokenEncoding)&&n.push({source:"tokenEncoding",encoding:t.tokenEncoding}),nt(t.encoding)&&n.push({source:"encoding",encoding:t.encoding});for(const{source:e,encoding:o}of n){const n=it(t,o);for(const t of Te(o,{visibleTokens:n}))r.push({severity:"warning",code:"TOKEN_"+t.code,message:t.message,fix:"MISSING_UNIT_VALUE"===t.code?`Set ${e}.unitValue to the value represented by one full token.`:"MISSING_UNIT_MEANING"===t.code?`Set ${e}.unitMeaning so readers know what one full token represents.`:"MISSING_COUNT_STRATEGY"===t.code?`Set ${e}.countStrategy to actual, unitized, fixed-denominator, quantile, sample, posterior-sample, or random-sample.`:"TOKEN_SEMANTICS_UNCLEAR"===t.code?`Set ${e}.tokenSemantics to observed-unit, unitized-measure, risk-case, possible-outcome, posterior-sample, hypothetical-case, topic-anchor, or decorative.`:`Adjust ${e} so its semantics, strategy, labels, and visible token count match the task.`})}}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(n)for(const e of n){if(!e||"object"!=typeof e)continue;const t=K(e);if(!J(e)||"widget"===t)continue;const n=Math.hypot("number"==typeof e.dx?e.dx:0,"number"==typeof e.dy?e.dy:0),o="string"==typeof e.label?e.label:"string"==typeof e.title?e.title:t,i=ee(e);!i&&n>Qe?r.push({severity:"warning",code:"ANNOTATION_FAR_NO_CONNECTOR",message:`Annotation "${o}" sits ~${Math.round(n)}px from its anchor with no connector — a reader can't tell what it refers to.`,fix:'Add a connector (connector: { end: "arrow" }, the label/callout default) or place the note adjacent to its target (smaller dx/dy).'}):i&&n>Xe&&r.push({severity:"warning",code:"ANNOTATION_LONG_CONNECTOR",message:`Annotation "${o}" uses a very long connector (~${Math.round(n)}px); prefer placing the note adjacent to its target when space allows.`,fix:"Reduce dx/dy so the note sits near its target, or keep the long connector only if proximity is genuinely infeasible."})}}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(!n)return;const o=n.filter(J).length;if(0===o)return;const i="number"==typeof t.width?t.width:600,s="number"==typeof t.height?t.height:400,a=Ne(i,s);Number.isFinite(a)&&o>a&&r.push({severity:"warning",code:"ANNOTATION_DENSITY",message:`${o} note annotations on a ${i}×${s} chart exceed the ~${a} notes the plot area carries comfortably — the chart may read as cluttered.`,fix:'Mark the essential notes emphasis: "primary" and let density management shed the rest (autoPlaceAnnotations: { density: true }), enable progressive disclosure to reveal secondary notes on hover, or give the chart more room.'})}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(n)for(const e of n)e&&"object"==typeof e&&"widget"===K(e)&&null!=e.content&&!Ue(e)&&r.push({severity:"warning",code:"ANNOTATION_INTERACTIVE_ID",message:"An interactive widget annotation has no stable id, so its activation cannot be normalized or replayed reliably.",fix:"Add id, stableId, or provenance.stableId to the widget annotation. Do not identify interactive annotations by array index."})}(0,t,r),function(e,t,r){for(const e of Ze){const n=t[e];if(!Array.isArray(n)||2>n.length)continue;const[o,i]=n;"number"==typeof o&&"number"==typeof i&&o>i&&r.push({severity:"warning",code:"INVERTED_AXIS",message:`${e}=[${o}, ${i}] is descending — the axis renders inverted, so "up" reads as less. Inverted axes are a classic misleading-design pattern unless the inversion is the point.`,fix:`Order the extent ascending (${e}={[${i}, ${o}]}). If the inversion is deliberate (e.g. rank #1 at top), say so in the title or an annotation so readers aren't misled.`})}}(0,t,r),function(e,t,r){if("MultiAxisLineChart"!==e)return;const n=t.series;if(!Array.isArray(n)||2!==n.length)return;const o=n.filter(e=>!e||"object"!=typeof e||"string"!=typeof e.label||0===e.label.trim().length);o.length>0&&r.push({severity:"warning",code:"DUAL_AXIS_UNLABELED",message:`Dual-axis chart with ${o.length} unlabeled series. Two y-scales invite false equivalence between the lines; without per-series labels a reader can't tell which scale is whose.`,fix:'Give every series a label: series={[{ yAccessor: "a", label: "Revenue ($)" }, { yAccessor: "b", label: "Users" }]} — and consider whether two separate charts read more honestly.'})}(e,t,r),function(e,t,r){if(!oe.has(e))return;const n=t.xExtent;if(!Array.isArray(n)||2>n.length)return;const[o,i]=n;if("number"!=typeof o||"number"!=typeof i||o>=i)return;const s=t.data;if(!s||!Array.isArray(s)||4>s.length)return;const a=t.xAccessor??"x";if("string"!=typeof a)return;let l=1/0,c=-1/0;for(const e of s){const t=e?.[a];"number"==typeof t&&Number.isFinite(t)&&(l>t&&(l=t),t>c&&(c=t))}if(!Number.isFinite(l)||!Number.isFinite(c)||l>=c)return;const d=c-l,u=Math.max(0,Math.min(i,c)-Math.max(o,l))/d;.7>u&&r.push({severity:"warning",code:"CHERRY_PICKED_WINDOW",message:`xExtent=[${o}, ${i}] shows only ~${Math.round(100*u)}% of the data's x range [${l}, ${c}] — a trend cropped to a favorable window is a classic misleading-design pattern.`,fix:'Widen xExtent to cover the data, filter the data itself so the chart shows what it has, or annotate the visible window ("Q4 only") so the cropping is explicit.'})}(e,t,r),function(e,t,r){const n=le[e],o=de[e];if(!n&&!o)return;if(o&&!t.normalize)return;const i=n??o,s=t[i],a="string"==typeof s?s:"yAccessor"===i?"y":"value",l=t.data;if(!l||!Array.isArray(l)||0===l.length)return;const c=l.filter(e=>{const t=e?.[a];return"number"==typeof t&&0>t});c.length>0&&r.push({severity:n?"error":"warning",code:"PART_TO_WHOLE_NEGATIVE",message:`${c.length} negative value(s) in "${a}" — a part-to-whole encoding cannot represent negative parts${n?"; slice angles/areas for negatives are meaningless":"; normalized shares distort when parts are negative"}.`,fix:n?"Filter or transform negative values first, or switch to a BarChart/WaterfallChart, which encode signed values honestly.":"Drop normalize for signed data, or use a diverging BarChart so negative contributions read as negative."})}(e,t,r),function(e,t,r){se.has(e)&&"basis"===t.curve&&r.push({severity:"warning",code:"NON_PASSING_CURVE",message:'curve="basis" draws a B-spline that does NOT pass through your data points — rendered values differ from actual values everywhere except the endpoints.',fix:'Use curve="monotoneX" or curve="catmullRom" (both interpolate through every point), or keep "basis" only for deliberately schematic, clearly-labeled smoothing.'})}(e,t,r),function(e,t,r){if("LineChart"!==e&&"AreaChart"!==e)return;if("sparkline"===t.mode)return;if(t.responsiveWidth||t.responsiveHeight)return;const n="number"==typeof t.width?t.width:600,o="number"==typeof t.height?t.height:400;if(0>=n||0>=o)return;const i=n/o;if(i>8||.25>i){const e=i>8?"flattens":"exaggerates";r.push({severity:"warning",code:"EXTREME_ASPECT_RATIO",message:`${n}×${o} (${i.toFixed(1)}:1) is an extreme aspect ratio that ${e} the slopes a reader perceives — aspect-ratio distortion is a documented misleading-design pattern.`,fix:i>8?'Use a more balanced aspect (e.g. width/height between 1 and 3), or set mode="sparkline" if this is genuinely a sparkline strip.':"Use a more balanced aspect (e.g. width/height between 1 and 3); very tall trend charts overstate every change."})}}(e,t,r),function(e,t,r){if(!ae.has(e))return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=t.categoryAccessor,i="string"==typeof o?o:"category",s=new Set;for(const e of n){const t=e?.[i];null!=t&&s.add(t)}s.size>Ke&&r.push({severity:"warning",code:"PIE_TOO_MANY_SLICES",message:`${s.size} slices — angle judgments degrade rapidly past ~${Ke} categories (Cleveland & McGill), and thin slices become unreadable and unlabelable.`,fix:`Use a BarChart or DotPlot for ${s.size} categories, or group the long tail into an "Other" slice before charting.`})}(e,t,r),function(e,t,r){if(me.has(e)){if("GaltonBoardChart"===e){const e=t.bins;"number"==typeof e&&2>e&&r.push({severity:"error",code:"PHYSICS_BAD_BINS",message:`bins=${e} leaves no meaningful settled projection for a Galton board.`,fix:"Use at least two bins; 8-24 bins is a practical range for physics distributions."});const n=Je(t.branchProbability);null!=t.branchProbability&&(null==n||0>n||n>1)&&r.push({severity:"error",code:"PHYSICS_BAD_BRANCH_PROBABILITY",message:`branchProbability=${t.branchProbability+""} must be between 0 and 1.`,fix:"Use branchProbability={0.5} for a balanced Galton board, or bias it within the [0, 1] range."});const o=Je(t.mechanicalCount);null==t.mechanicalCount||null!=o&&o>0||r.push({severity:"error",code:"PHYSICS_BAD_MECHANICAL_COUNT",message:`mechanicalCount=${t.mechanicalCount+""} cannot generate a mechanical Galton board.`,fix:"Use a positive mechanicalCount, for example 96."})}if("EventDropChart"===e){const e=t.windows,n=e&&"object"==typeof e?Je(e.size):null;null==n||n>0||r.push({severity:"error",code:"PHYSICS_BAD_WINDOW_SIZE",message:`windows.size=${n} cannot form event-time barriers.`,fix:"Set windows={{ size: positiveNumber }} so each event can settle into a real time window."}),"number"!=typeof t.timeScale||t.timeScale>0||r.push({severity:"error",code:"PHYSICS_BAD_TIME_SCALE",message:`timeScale=${t.timeScale} prevents arrival replay from advancing.`,fix:"Use a positive timeScale, or omit it for the default pace."});const o=Array.isArray(t.data)?t.data:[];if(o.length>0){const e=t.timeAccessor||"time",n=t.arrivalAccessor||"arrivalTime";o.some(t=>{const r=Je(et(t,e,"time")),o=Je(et(t,n,"arrivalTime"));return null!=r&&null!=o&&r!==o})||r.push({severity:"warning",code:"PHYSICS_EVENTDROP_NO_ARRIVAL_SPREAD",message:"EventDropChart data does not show distinct arrival times, so the physics replay collapses to event order.",fix:"Provide an arrivalAccessor field with event-arrival times when demonstrating lateness, watermarks, or out-of-order streams."})}}if("PhysicsPileChart"===e){const e=Je(t.mechanicalCount);null==t.mechanicalCount||null!=e&&e>0||r.push({severity:"error",code:"PHYSICS_BAD_MECHANICAL_COUNT",message:`mechanicalCount=${t.mechanicalCount+""} cannot generate a mechanical pile chart.`,fix:"Use a positive mechanicalCount, for example 80."}),"mechanical"===t.mode&&Array.isArray(t.mechanicalCategories)&&0===t.mechanicalCategories.length&&r.push({severity:"error",code:"PHYSICS_EMPTY_MECHANICAL_CATEGORIES",message:"mechanicalCategories=[] leaves no containers for the generated unit pile.",fix:"Provide at least one category label, or omit mechanicalCategories for the default set."});const n=Je(t.unitValue??1)??1;if(0>=n)return void r.push({severity:"error",code:"PHYSICS_BAD_UNIT_VALUE",message:`unitValue=${t.unitValue} cannot unitize values into physical bodies.`,fix:"Set unitValue to a positive number represented by one body."});const o=t.valueAccessor||"value",i=(Array.isArray(t.data)?t.data:[]).reduce((e,t)=>{const r=Je(et(t,o,"value"))??0;return e+Math.max(0,Math.round(r/n))},0);i>1500&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`PhysicsPileChart would create about ${i} live bodies; motion may dominate the chart and stress the frame budget.`,fix:"Increase unitValue, cap visible units, or aggregate before rendering so the settled projection remains readable."})}if("CollisionSwarmChart"===e){if((Je(t.pointRadius??5)??5)>0||r.push({severity:"error",code:"PHYSICS_BAD_POINT_RADIUS",message:`pointRadius=${t.pointRadius} cannot produce collision bodies.`,fix:"Use a positive pointRadius, for example 5."}),(Je(t.collisionIterations??6)??6)>0||r.push({severity:"error",code:"PHYSICS_BAD_COLLISION_ITERATIONS",message:`collisionIterations=${t.collisionIterations} disables collision relaxation.`,fix:"Use at least one collision iteration; 4-8 is a practical range for swarms."}),null!=t.xExtent){const e=Array.isArray(t.xExtent)?t.xExtent:[],n=Je(e[0]),o=Je(e[1]);(2>e.length||null==n||null==o)&&r.push({severity:"error",code:"PHYSICS_BAD_X_EXTENT",message:"xExtent must be a numeric [min, max] pair for CollisionSwarmChart.",fix:"Pass xExtent={[min, max]} or omit it so the chart infers the domain from data."})}const e=Array.isArray(t.data)?t.data:[];e.length>1200&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`CollisionSwarmChart would create ${e.length} live bodies; collision relaxation may dominate the frame budget.`,fix:"Sample, aggregate, reduce point radius, or move to a static SwarmPlot when every row does not need a physical body."});const n=t.groupAccessor;if(e.length>0&&n){const t=new Set;for(const r of e){const e=et(r,n,"group");null!=e&&t.add(e)}t.size>12&&r.push({severity:"warning",code:"PHYSICS_TOO_MANY_SWARM_LANES",message:`CollisionSwarmChart has ${t.size} group lanes, which leaves little vertical room for collision separation.`,fix:"Facet or filter groups, or use an ordinary SwarmPlot/BoxPlot for dense grouped comparison."})}}if("GaltonBoardChart"!==e&&"PhysicsPileChart"!==e&&"CollisionSwarmChart"!==e&&"ProcessFlowChart"!==e&&"EventDropChart"!==e||(null!=t.massBy||null!=t.massAccessor||t.frameProps&&"object"==typeof t.frameProps&&null!=t.frameProps.bodyMassBy)&&r.push({severity:"warning",code:"PHYSICS_DATA_IN_DYNAMICS",message:e+" appears to map a data field to mass/dynamics. Mass is not a readable quantitative channel.",fix:"Encode quantities in spawn position, bin, size, color, or glyph — keep mass/friction/restitution as process texture. Use showProjection for the truth layer."}),"PhysicsPileChart"!==e&&"GaltonBoardChart"!==e&&"CollisionSwarmChart"!==e&&"ProcessFlowChart"!==e||!1!==t.showProjection||r.push({severity:"warning",code:"PHYSICS_NO_PROJECTION",message:e+" has showProjection={false}. Without a settled projection, motion is easy to over-read as data.",fix:"Keep showProjection enabled (default) so the chart collapses to a legible static reading, or document why the process alone is the claim."}),"ProcessFlowChart"===e){const e=Array.isArray(t.stages)?t.stages:[];if(0===e.length)r.push({severity:"error",code:"PROCESS_FLOW_MISSING_STAGES",message:"ProcessFlowChart requires a non-empty stages array.",fix:'Provide stages={[{ id: "coding", force: 12 }, { id: "merged", absorb: true }]}.'});else{e.some(e=>!e||null==e.id||""===(e.id+"").trim())&&r.push({severity:"error",code:"PROCESS_FLOW_BAD_STAGE",message:"Every ProcessFlowChart stage needs a stable id.",fix:'Use stages like { id: "review", label: "Review", capacity: { unitsPerSecond: 4 } }.'});const n=e.filter(e=>e?.absorb).length;t.groupBy&&0===n&&r.push({severity:"warning",code:"PROCESS_FLOW_GROUP_NO_ABSORB",message:"groupBy is set but no stage has absorb: true, so all-members completion cannot resolve.",fix:'Mark a terminal stage with absorb: true (e.g. merged), or set groupCompletion="none".'})}}if("GauntletChart"===e&&(Array.isArray(t.negativeProperties)||r.push({severity:"warning",code:"GAUNTLET_MISSING_NEGATIVE_PROPERTIES",message:"GauntletChart usually needs negativeProperties for drag/cost bodies (empty array is ok if intentional).",fix:'Provide negativeProperties={[{ id: "cost", label: "Cost", load: 1 }]} or explicitly pass [].'})),"PhysicsPileChart"===e||"GaltonBoardChart"===e||"CollisionSwarmChart"===e||"ProcessFlowChart"===e||"EventDropChart"===e){const n=Array.isArray(t.data)?t.data:[],o=Je(t.mechanicalCount)??0,i=n.length>0?n.length*("PhysicsPileChart"===e?Math.max(1,(Je(t.unitValue),1)):1):o;i>2500&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`${e} may spawn ~${Math.round(i)} live bodies, which can overwhelm the simulation loop.`,fix:"Lower mechanicalCount / unitize with a larger unitValue, enable sediment/windowSize, or sample the data before spawn."})}}}(e,t,r),{ok:r.every(e=>"warning"===e.severity),diagnoses:r}):{ok:0===r.length,diagnoses:r}}var at=["BarChart","StackedBarChart","GroupedBarChart","SwarmPlot","BoxPlot","Histogram","ViolinPlot","RidgelinePlot","DotPlot","PieChart","DonutChart","GaugeChart","FunnelChart","SwimlaneChart","LikertChart","LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","BubbleChart","Heatmap","QuadrantChart","MultiAxisLineChart","CandlestickChart","ConnectedScatterplot","ScatterplotMatrix","MinimapChart","ForceDirectedGraph","SankeyDiagram","ProcessSankey","ChordDiagram","TreeDiagram","Treemap","CirclePack","OrbitDiagram","ChoroplethMap","ProportionalSymbolMap","FlowMap","DistanceCartogram","RealtimeLineChart","RealtimeHistogram","TemporalHistogram","RealtimeSwarmChart","RealtimeWaterfallChart","RealtimeHeatmap","GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","GauntletChart","ProcessFlowChart","PhysicalFlowChart","BigNumber"],lt=new Set(at);function ct(e){return"string"==typeof e?e:e.id??e.name}function dt(e){return e.layoutConfig&&"object"==typeof e.layoutConfig?e.layoutConfig:{}}function ut(e){return Array.isArray(e.data)?e.data:Array.isArray(e.nodes)?e.nodes:Array.isArray(e.points)?e.points:Array.isArray(e.areas)?e.areas:[]}function pt(e,t,r){return r??Se(t.recipe)??Se(t.recipeId)??we(e)}function yt(e,t,r=[]){const n=e.accessor?t[e.accessor]:void 0;if("string"==typeof n&&n)return n;if(e.field)return e.field;const o=r.find(e=>e&&"object"==typeof e);if(!o)return;const i=Object.entries(o).filter(([e,t])=>!e.startsWith("_")&&null!=t);return"quantitative"===e.semanticType?i.find(([,e])=>"number"==typeof e)?.[0]:"identifier"===e.semanticType?["id","key","name"].find(e=>e in o):i.find(([,e])=>"string"==typeof e)?.[0]}function ht(e,t){return e.dataRoles.find(e=>e.role===t)}function ft(e,t){return e.dataRoles.find(e=>t.includes(e.semanticType))}function mt(e,t,r,n,o,i={}){const s={...i};if(t)for(const[e,r]of Object.entries(t))s[e]=r;for(const e of r.dataRoles){const r=yt(e,n,o),i=t&&r?t[r]:r;void 0!==i&&(s[e.role]=i)}return e.replace(/\{([^}]+)\}/g,(e,t)=>{const r=s[t];return null==r?`{${t}}`:r+""})}var bt="1",gt=new Set(["tooltip","onObservation","xFormat","yFormat","valueFormat","svgAnnotationRules","tooltipContent","onHover","tickFormatTime","tickFormatValue","edgeSort","sortGroups","centerContent","frameProps","controls","oFormat","rFormat","oSort","pieceStyle","summaryStyle","nodeStyle","edgeStyle","customHoverBehavior","customClickBehavior","customDoubleClickBehavior","onBrush","onTopologyChange","backgroundGraphics","foregroundGraphics","legend","recipe","layout"]),vt=new Set(["data","nodes","edges","points","areas","lines","flows"]);function xt(e,t){return!!vt.has(e)&&("areas"!==e||"string"!=typeof t)}var kt="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function Ct(e,t){if("function"==typeof e)return t=>+e(t);const r=e||t;return e=>+e[r]}function wt(e,t){if("function"==typeof e)return e;const r=e||t;return e=>e[r]}var St=new Set(["LineChart","AreaChart","StackedAreaChart","DifferenceChart","Scatterplot","BubbleChart","ConnectedScatterplot","QuadrantChart","MultiAxisLineChart","MinimapChart"]),At=new Set(["BarChart","StackedBarChart","GroupedBarChart","DotPlot"]),jt=new Set(["PieChart","DonutChart","FunnelChart"]),$t=new Set(["Histogram","BoxPlot","ViolinPlot","RidgelinePlot","SwarmPlot"]);function Mt(e,t){return At.has(e)||jt.has(e)||"SwimlaneChart"===e||"GaugeChart"===e?{measure:t.valueAccessor,measureFallback:"value",dimension:t.categoryAccessor??t.stepAccessor,dimensionFallback:"category"}:{measure:t.yAccessor??t.valueAccessor,measureFallback:"y",dimension:t.xAccessor,dimensionFallback:"x"}}function Bt(e){for(const t of["lineBy","areaBy","stackBy","groupBy","colorBy"]){const r=e[t];if("string"==typeof r&&r)return r}}function Wt(e,t){return null==e?"—":e instanceof Date?e.toISOString().slice(0,10):"number"==typeof e?t(e):e+""}function Pt(e,t={}){const r=!0===t.showRetractedAnnotations,n=!0===t.showSupersededAnnotations,o=new Set;for(const t of e){const e=t?.lifecycle?.supersedes;e&&"retracted"!==t?.lifecycle?.status&&o.add(e)}return e.filter(e=>{if("retracted"===e?.lifecycle?.status&&!r)return!1;const t=e?.provenance?.stableId;return!(t&&o.has(t)&&!n)})}var It={LineChart:"line chart",AreaChart:"area chart",StackedAreaChart:"stacked area chart",DifferenceChart:"difference chart",Scatterplot:"scatter plot",BubbleChart:"bubble chart",ConnectedScatterplot:"connected scatter plot",QuadrantChart:"quadrant chart",MultiAxisLineChart:"dual-axis line chart",CandlestickChart:"candlestick chart",Heatmap:"heatmap",MinimapChart:"line chart",BarChart:"bar chart",StackedBarChart:"stacked bar chart",GroupedBarChart:"grouped bar chart",DotPlot:"dot plot",Histogram:"histogram",BoxPlot:"box plot",ViolinPlot:"violin plot",RidgelinePlot:"ridgeline plot",SwarmPlot:"swarm plot",PieChart:"pie chart",DonutChart:"donut chart",FunnelChart:"funnel chart",GaugeChart:"gauge",LikertChart:"Likert chart",SwimlaneChart:"swimlane chart",ForceDirectedGraph:"network graph",SankeyDiagram:"Sankey diagram",ProcessSankey:"temporal Sankey diagram",ChordDiagram:"chord diagram",TreeDiagram:"tree diagram",Treemap:"treemap",CirclePack:"circle-packing chart",OrbitDiagram:"orbit diagram",ChoroplethMap:"choropleth map",ProportionalSymbolMap:"proportional-symbol map",FlowMap:"flow map",DistanceCartogram:"distance cartogram",BigNumber:"single value",StreamPhysicsFrame:"physics stream frame",EventDropChart:"event-drop physics chart",GaltonBoardChart:"Galton board chart",PhysicsPileChart:"physics pile chart",CollisionSwarmChart:"collision swarm chart",PhysicalFlowChart:"physical flow chart",ProcessFlowChart:"process flow physics chart",PhysicsCustomChart:"custom physics chart"},Lt=new Set(["ForceDirectedGraph","SankeyDiagram","ProcessSankey","ChordDiagram"]),Rt=new Set(["StreamPhysicsFrame","EventDropChart","GaltonBoardChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart","PhysicsCustomChart"]);function Tt(e){return It[e]||e.replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase()+" chart"}function Ft(e){const t="number"==typeof e?e:"string"==typeof e?Number(e):NaN;return Number.isFinite(t)?t:void 0}var Et=new Set(["Scatterplot","BubbleChart","ConnectedScatterplot","QuadrantChart","ScatterplotMatrix"]),Nt={"outlier-detection":"alerting","change-detection":"alerting",trend:"tracking","composition-over-time":"apportioning","compare-series":"comparing","compare-categories":"comparing",rank:"ranking","part-to-whole":"apportioning",distribution:"characterizing",correlation:"relating",flow:"tracing",hierarchy:"nesting",geo:"locating"},Ot={"time-series":"tracking",categorical:"comparing",distribution:"characterizing",relationship:"relating",flow:"tracing",network:"tracing",hierarchy:"nesting",geo:"locating",realtime:"tracking",value:"presenting",custom:"presenting"},Dt=["trend","compare-series","compare-categories","rank","part-to-whole","distribution","correlation","flow","hierarchy","geo","composition-over-time","change-detection","outlier-detection"],zt={alerting:"alerting",tracking:"trend",comparing:"comparison",ranking:"ranking",apportioning:"composition",characterizing:"distribution",relating:"correlation",tracing:"flow",nesting:"hierarchy",locating:"locator",presenting:"single-value"};function qt(e,t){const r=function(e){if(e){if("fits"in e||"buildProps"in e){const t=e,r={};for(const[e,n]of Object.entries(t.intentScores))"number"==typeof n&&Number.isFinite(n)&&(r[e]=n);return{family:t.family,intentScores:Object.keys(r).length?r:void 0}}return e}}(t);if(r?.act)return r.act;if(r?.intentScores){const e=function(e){let t,r=0;for(const[n,o]of Object.entries(e))if("number"==typeof o&&o>0)if(o>r)t=n,r=o;else if(o===r&&void 0!==t){const e=Dt.indexOf(n),r=Dt.indexOf(t);-1===e||-1!==r&&e>=r||(t=n)}return t}(r.intentScores);if(e&&Nt[e]&&(r.intentScores[e]??0)>=3)return Nt[e]}return r?.family?Ot[r.family]:function(e){return jt.has(e)||"StackedAreaChart"===e?"apportioning":Et.has(e)?"relating":At.has(e)?"comparing":$t.has(e)?"characterizing":St.has(e)?"tracking":Lt.has(e)?"tracing":"BigNumber"===e?"presenting":void 0}(e)}var _t=new Set(["y-threshold","x-threshold","band","x-band","callout","label"]),Ht=new Set(["system","agent","watcher"]),Gt=new Set(["ai","agent","system","computed","dbt","great-expectations"]),Vt=new Set(["rule","statistical-test","llm-inference","computed"]);function Ut(e){const t=e.annotations;return!!Array.isArray(t)&&t.some(e=>{if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t.type||!_t.has(t.type))return!1;const r=t.provenance;return!(!r||"object"!=typeof r)&&(Ht.has(r.authorKind)||Gt.has(r.source)||Vt.has(r.basis))})}function Yt(e="en"){let t,r;try{t=new Intl.NumberFormat(e,{notation:"compact",maximumFractionDigits:1}),r=new Intl.NumberFormat(e,{maximumFractionDigits:2})}catch{t=new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}),r=new Intl.NumberFormat("en",{maximumFractionDigits:2})}return e=>Number.isFinite(e)?1e4>Math.abs(e)?r.format(e):t.format(e):e+""}var Qt={"y-threshold":"a threshold line","x-threshold":"a threshold line",band:"a highlighted band","x-band":"a highlighted band",label:"a label",callout:"a callout","callout-circle":"a callout","callout-rect":"a callout",text:"a text note",bracket:"a bracket",enclose:"an enclosure","rect-enclose":"an enclosure",highlight:"a highlight",widget:"a widget",trend:"a trend line",envelope:"an envelope","anomaly-band":"an anomaly band",forecast:"a forecast","category-highlight":"a category highlight"};function Xt(e){const t=Qt["string"==typeof e.type?e.type:"annotation"]||"an annotation",r=function(e){const t=e.provenance&&"object"==typeof e.provenance?e.provenance:null,r=t?.authorKind??t?.source??t?.basis;return"watcher"===r?"a watcher-flagged ":"agent"===r||"ai"===r||"llm-inference"===r?"an AI-suggested ":""}(e),n=r?r+t.replace(/^an? /,""):t,o="string"==typeof e.label?e.label:"string"==typeof e.title?e.title:void 0;return o?`${n} labeled "${o}"`:n}function Zt(e){const t=Array.isArray(e.annotations)?e.annotations:null;if(!t||0===t.length)return;const r=Pt(t.filter(e=>!!e&&"object"==typeof e));if(0===r.length)return;const n=r.map(Xt),o=n.slice(0,5),i=n.length-o.length,s=function(e){return e.length>1?2===e.length?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`:e[0]??""}(o)+(i>0?`, and ${i} more`:""),a=r.length;return`The author has marked ${1===a?"one feature":a+" features"} on this chart: ${s}.`}function Kt(e,t,r={}){const n=void 0!==r.levels,o=new Set(r.levels??["l1","l2","l3"]);n||!r.capability&&!Ut(t)||o.add("l4");const i=pt(e,t,r.recipe);if(i){const e=["l1","l2","l3","l4"].filter(e=>o.has(e));n||e.includes("l4")||e.push("l4");const s=function(e,t,r={}){const n=ut(t),o=dt(t),i=r.locale??"en",s="function"==typeof e.description?e.description({data:n,config:o,locale:i}):void 0,a=s?.levels??function(e,t,r,n){const o=ft(e,["nominal","ordinal"]),i=ft(e,["quantitative"]),s=o?yt(o,r,t):void 0,a=i?yt(i,r,t):void 0,l=o?.role??s??"category",c=i?.role??a??"value",d=e.encodings??[],u=d.length?d.slice(0,3).map(e=>e.meaning.replace(/\.$/,"")).join("; "):`${l} and ${c} are mapped through the recipe's declared visual semantics`,{number:p,percent:y}=function(e){try{return{number:new Intl.NumberFormat(e,{maximumFractionDigits:2}),percent:new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:1})}}catch{return{number:new Intl.NumberFormat("en",{maximumFractionDigits:2}),percent:new Intl.NumberFormat("en",{style:"percent",maximumFractionDigits:1})}}}(n),h=new Map;if(s&&a)for(const e of t){const t=(e[s]??"Uncategorized")+"",r=Number(e[a]);Number.isFinite(r)&&h.set(t,(h.get(t)??0)+r)}const f=[...h].sort((e,t)=>t[1]-e[1]),m=f.reduce((e,[,t])=>e+t,0),b=f[0],g=f[1],v=m>0?((b?.[1]??0)+(g?.[1]??0))/m:0,x=e.intents.map(e=>({id:ct(e),strength:"string"==typeof e?void 0:e.strength})).sort((e,t)=>"primary"===e.strength?-1:"primary"===t.strength?1:0)[0]?.id,k=e.audience?.primary??e.audienceFit?.find(e=>"strong"===e.fit)?.audience;return{l1:`A ${e.name.toLowerCase()} encodes ${l} and ${c}. ${C=u,C?C.charAt(0).toUpperCase()+C.slice(1):C}.`,l2:f.length>0?`${f.length} categories total ${p.format(m)}. ${b[0]} accounts for ${p.format(b[1])}${m>0?` (${y.format(b[1]/m)})`:""}${g?`, followed by ${g[0]} at ${p.format(g[1])}`:""}.`:`${t.length} data ${1===t.length?"item is":"items are"} represented.`,l3:2>f.length?b?b[0]+" is the only represented category.":"No quantitative pattern can be derived from the available data.":.5>v?`The total is distributed across ${f.length} categories without the first two forming a majority.`:`Most of the total is concentrated in ${b[0]} and ${g[0]}, which together account for ${y.format(v)}.`,l4:`The chart is intended for ${x??"explanation"}${k?` with a ${k} audience`:""}: ${e.designContract.whyCustom}`};var C}(e,n,o,i),l=r.levels??["l1","l2","l3","l4"],c={};for(const e of l)a[e]&&(c[e]=a[e]);const d=["l1","l2","l3","l4"].map(e=>c[e]).filter(e=>!!e).join(" "),u=r.includeCaveats?[...e.reception?.risks??[],...e.caveats??[],...(e.designContract.misuse??[]).map(e=>"Misuse: "+e)]:void 0;return{text:d,levels:c,...u?.length?{caveats:u}:{}}}(i,t,{levels:e,locale:r.locale,audience:r.audience,includeCaveats:r.includeCaveats}),a=Zt(t);return{...s,text:a?`${a} ${s.text}`.trim():s.text,...a?{annotations:a}:{}}}const s=Yt(r.locale??"en"),a=Tt(e),l=Array.isArray(t.data)?t.data:null,c=Bt(t),d=Rt.has(e)?function(e,t){const r=e.physics&&"object"==typeof e.physics?e.physics:null,n=e.settledProjection&&"object"==typeof e.settledProjection?e.settledProjection:null,o=[e.settledProjectionRows,e.projectionRows,n?.rows,r?.settledProjectionRows,r?.projectionRows,r?.settledProjection&&"object"==typeof r.settledProjection?r.settledProjection.rows:void 0].find(e=>Array.isArray(e));return Array.isArray(o)?o.map((e,r)=>{if(!e||"object"!=typeof e)return null;const n=e,o=Ft(n.count??n.value??n.total??n.bodies??n.events);if(null==o)return null;const i=n.label??n.id??n.name??"container "+(r+1),s=Ft(n.secondary??n.secondaryCount),a=Ft(n.observed??n.observedCount);return{label:Wt(i,t),count:o,...null!=s?{secondary:s}:{},..."string"==typeof n.secondaryLabel&&n.secondaryLabel?{secondaryLabel:n.secondaryLabel}:{},...null!=a?{observed:a}:{}}}).filter(e=>null!=e):null}(t,s):null,{measure:u,measureFallback:p,dimension:y,dimensionFallback:h}=Mt(e,t),f="string"==typeof u&&u?u:p,m="string"==typeof y&&y?y:h,b={};if(Rt.has(e)&&function(e,t,r,n,o,i){const s=function(e){return"EventDropChart"===e?"time window":"GaltonBoardChart"===e?"bin":"CollisionSwarmChart"===e?"group lane":"PhysicalFlowChart"===e?"flow node":"container"}(e),a=function(e){return"EventDropChart"===e?"event":"GaltonBoardChart"===e?"sample":"CollisionSwarmChart"===e?"point":"PhysicalFlowChart"===e?"packet":"body"}(e);if(o.has("l1")&&(n.l1=function(e,t){return"EventDropChart"===e?"An event-drop physics chart that collapses moving events into a settled projection by event-time window.":"GaltonBoardChart"===e?"A Galton board chart that collapses falling samples into a settled histogram projection.":"PhysicsPileChart"===e?"A physics pile chart that collapses moving bodies into a settled bar-style projection by container.":"CollisionSwarmChart"===e?"A collision swarm chart that separates overlapping points while preserving their quantitative axis position.":"PhysicalFlowChart"===e?"A physical flow chart that keeps authored routes visible while packet bodies show throughput and proximity events.":`A ${t} whose accessible reading is the settled projection rather than individual trajectories.`}(e,t)),!o.has("l2")&&!o.has("l3"))return;if(!r||0===r.length)return void(o.has("l2")&&(n.l2="No settled projection is loaded yet."));const l=r.reduce((e,t)=>e+t.count,0),c=r.filter(e=>e.count>0).sort((e,t)=>t.count-e.count),d=c[0]??r.slice().sort((e,t)=>t.count-e.count)[0];if(!d)return;const u=r.reduce((e,t)=>e+(t.secondary??0),0),p=r.find(e=>e.secondaryLabel)?.secondaryLabel??"secondary";if(o.has("l2"))if(0===c.length)n.l2=`The settled projection contains ${i(l)} ${er(l,a)} across ${r.length} ${er(r.length,s)}; no ${er(2,s)} are non-empty yet.`;else{const e=u>0?` ${i(u)} ${er(u,a)} ${1===u?"is":"are"} marked ${p}.`:"";n.l2=`The settled projection contains ${i(l)} ${er(l,a)} across ${r.length} ${er(r.length,s)}; ${c.length} ${er(c.length,s)} ${1===c.length?"is":"are"} non-empty. The largest ${s} is ${d.label} with ${i(d.count)} ${er(d.count,a)}.${e}`}if(o.has("l3")&&l>0&&c.length>0){const e=c.find(e=>e!==d),t=function(e,t){if(0>=t)return"0%";const r=e/t*100;return(10>r?Math.round(10*r)/10:Math.round(r))+"%"}(d.count,l);n.l3=e?`The settled projection is most concentrated in ${d.label}, which holds ${i(d.count)} ${er(d.count,a)} (${t}); ${e.label} follows with ${i(e.count)} ${er(e.count,a)}.`:`The settled projection is concentrated in ${d.label}, which holds all ${i(d.count)} ${er(d.count,a)}.`}}(e,a,d,b,o,s),o.has("l1")&&!Rt.has(e))if(St.has(e)||At.has(e))b.l1=`A ${a} of ${f} by ${m}`+(c?`, split by ${c}.`:".");else if(jt.has(e))b.l1=`A ${a} showing ${f} across ${m} categories.`;else if($t.has(e))b.l1=`A ${a} of the distribution of ${f}`+(c?` by ${c}.`:".");else if(Lt.has(e)){const e=Array.isArray(t.nodes)?t.nodes.length:void 0,r=Array.isArray(t.edges)?t.edges.length:void 0,n=[null!=e?`${e} ${er(e,"node")}`:null,null!=r?`${r} ${er(r,"edge")}`:null].filter(Boolean);b.l1=`A ${a}${n.length?" with "+n.join(" and "):""}.`}else if("BigNumber"===e){const e="string"==typeof t.label?t.label:f;b.l1=`A single value${e?" for "+e:""}.`}else b.l1=`A ${a}.`;const g=St.has(e)||At.has(e)||jt.has(e)||$t.has(e);let v=null;if((o.has("l2")||o.has("l3")||o.has("l4"))&&g&&l&&l.length>0&&(v=function(e,t,r,n){let o=0,i=0,s=1/0,a=-1/0,l=null,c=null,d=0,u=0,p=null,y=null,h=NaN,f=NaN;for(const r of e){const e=t(r);Number.isFinite(e)&&(0===o&&(h=e,p=r),f=e,y=r,s>e&&(s=e,l=r,d=o),e>a&&(a=e,c=r,u=o),o++,i+=e)}return 0===o?null:{count:o,min:s,max:a,mean:i/o,minLabel:Wt(null!=l?r(l):null,n),maxLabel:Wt(null!=c?r(c):null,n),first:h,last:f,firstLabel:Wt(null!=p?r(p):null,n),lastLabel:Wt(null!=y?r(y):null,n),minIndex:d,maxIndex:u}}(l,Ct(u,p),wt(y,h),s)),o.has("l2")&&g&&(l&&0!==l.length?v&&(b.l2=jt.has(e)?`${v.count} segments totaling ${s(function(e){return e.mean*e.count}(v))}. Largest is ${v.maxLabel} at ${s(v.max)}; smallest is ${v.minLabel} at ${s(v.min)}.`:`${f} ranges from ${s(v.min)} (${v.minLabel}) to ${s(v.max)} (${v.maxLabel}), with a mean of ${s(v.mean)} across ${v.count} points.`):b.l2="No data is loaded yet."),o.has("l3")&&v&&!c&&St.has(e)?b.l3=function(e,t,r){const{first:n,last:o,min:i,max:s,maxLabel:a,minLabel:l,firstLabel:c,lastLabel:d,minIndex:u,maxIndex:p,count:y}=e,h=s-i,f=o-n;if(0===h)return`${Jt(t)} is constant at ${r(n)} across the series.`;if(.04>h/(Math.abs(e.mean)||1))return`${Jt(t)} ends roughly where it started (${r(n)} at ${c} to ${r(o)} at ${d}), ranging between ${r(i)} and ${r(s)}.`;const m=p>0&&y-1>p,b=u>0&&y-1>u,g=(s-Math.max(n,o))/h,v=(Math.min(n,o)-i)/h;return m&&g>.15?`Overall ${t} climbs to a peak of ${r(s)} (${a}), then falls to ${r(o)} (${d}).`:b&&v>.15?`Overall ${t} drops to a low of ${r(i)} (${l}), then recovers to ${r(o)} (${d}).`:.05>Math.abs(f)/h?`${Jt(t)} ends roughly where it started (${r(n)} at ${c} to ${r(o)} at ${d}), ranging between ${r(i)} and ${r(s)}.`:f>0?p===y-1?`Overall ${t} rises from ${r(n)} (${c}) to a peak of ${r(o)} (${d}).`:`Overall ${t} rises from ${r(n)} (${c}) to ${r(o)} (${d}), after peaking at ${r(s)} (${a}).`:u===y-1?`Overall ${t} falls from ${r(n)} (${c}) to a low of ${r(o)} (${d}).`:`Overall ${t} falls from ${r(n)} (${c}) to ${r(o)} (${d}), after dipping to ${r(i)} (${l}).`}(v,f,s):o.has("l3")&&v&&!c&&At.has(e)&&(b.l3=`The highest ${m} is ${v.maxLabel} and the lowest is ${v.minLabel}.`),o.has("l4")){const n=Ut(t)?"alerting":qt(e,r.capability);n&&(b.l4=function(e,t,r,n,o,i,s,a){const l=zt[e],c=/^[aeiou]/i.test(l)?"an":"a";let d,u;switch(e){case"locating":d="This is a map",u="read values by location";break;case"presenting":d="This is a single-value display",u=`read ${"string"==typeof r.label&&r.label?r.label:o} as the headline number`;break;case"tracing":d=`This is ${c} ${l} chart`,u="follow the movement between states";break;case"nesting":d=`This is ${c} ${l} chart`,u="read it for nested structure and how children sum into their parents";break;case"relating":d=`This is ${c} ${l} chart`,u=`read it for whether ${i} and ${o} move together`;break;default:d=`This is ${c} ${l} chart`,u=function(e,t,r,n,o,i){if(!t)switch(e){case"alerting":return"watch for points that break from the rest";case"tracking":return"read it for the overall direction of "+r;case"comparing":return`compare ${r} across ${n}`;case"ranking":return"read it top to bottom by "+r;case"apportioning":return`read each ${n}'s share of the whole`;case"characterizing":return"read it for the spread and shape of "+r;default:return"read the highlighted features"}switch(e){case"alerting":return function(e,t,r){if(At.has(r)||jt.has(r))return`${e.maxLabel} stands out at ${t(e.max)} — check it first`;const{first:n,last:o,min:i,max:s,minLabel:a,maxLabel:l,lastLabel:c,minIndex:d,maxIndex:u,count:p}=e,y=s-i;if(y>0){const e=u>0&&p-1>u,r=d>0&&p-1>d,h=(s-Math.max(n,o))/y,f=(Math.min(n,o)-i)/y;if(e&&h>.15)return`the peak of ${t(s)} at ${l} is the point to investigate`;if(r&&f>.15)return`the dip to ${t(i)} at ${a} is the point to investigate`;if(o>=s)return`the climb to ${t(o)} at ${c} warrants a closer look`;if(i>=o)return`the drop to ${t(o)} at ${c} warrants a closer look`}return`the extremes — ${l} (${t(s)}) and ${a} (${t(i)}) — are the points to check`}(t,o,i);case"tracking":return`read it for the trajectory of ${r}, which ${function(e){const t=e.max-e.min,r=e.last-e.first;return 0===t||.05>Math.abs(r)/t?"holds roughly steady":r>0?"rises":"falls"}(t)} from ${o(t.first)} (${t.firstLabel}) to ${o(t.last)} (${t.lastLabel})`;case"comparing":return`compare ${r} across ${n}; ${t.maxLabel} leads at ${o(t.max)}`;case"ranking":return`read it top to bottom by ${r}; ${t.maxLabel} ranks highest at ${o(t.max)}`;case"apportioning":{const e=t.mean*t.count,r=e>0?Math.round(t.max/e*100):null;return`read each ${n}'s share of the ${o(e)} total; ${t.maxLabel} is the largest at ${o(t.max)}${null!=r?` (${r}%)`:""}`}case"characterizing":return`read it for the spread of ${r}, from ${o(t.min)} to ${o(t.max)}`;default:return"read the highlighted features"}}(e,n,o,i,s,t)}return`${d}; ${u}.${function(e,t){if(!t)return"";const r=t.familiarity?.[e];return"number"!=typeof r||r>2?"":` This ${Tt(e)} may be unfamiliar${t.name?` to ${t.name.toLowerCase()} readers`:""} — lean on this description.`}(t,a)}`}(n,e,t,c?null:v,f,m,s,r.audience))}const x=["l1","l2","l3","l4"].filter(e=>o.has(e)&&b[e]).map(e=>b[e]).join(" "),k=Zt(t);return{text:k?`${k} ${x}`.trim():x,levels:b,...k?{annotations:k}:{}}}function Jt(e){return e.length?e[0].toUpperCase()+e.slice(1):e}function er(e,t){return 1!==e&&"body"===t?"bodies":1===e?t:t+"s"}function tr(e){return((e??"unknown")+"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function rr(e,t,r={}){const n=r.locale??"en",o=Math.max(1,r.maxLeaves??200),i=Yt(n),s=pt(e,t,r.recipe);if(s)return function(e,t,r={}){const n=ut(t),o=dt(t),i=Math.max(1,r.maxLeaves??200);if("function"==typeof e.navigation)return e.navigation({data:n,config:o,locale:r.locale??"en"});const s=(a=e.navigation)&&"object"==typeof a?e.navigation:void 0;var a;const l=(s?.groupByRole?ht(e,s.groupByRole):void 0)??(s?.groupBy?.[0]?ht(e,s.groupBy[0])??e.dataRoles.find(e=>e.field===s.groupBy?.[0]):void 0)??ft(e,["nominal","ordinal"]),c=l?yt(l,o,n):void 0,d=(s?.idRole?ht(e,s.idRole):void 0)??ft(e,["identifier"]),u=d?yt(d,o,n):void 0,p={id:"root",role:"chart",label:s?.summaryTemplate?mt(s.summaryTemplate,void 0,e,o,n,{count:n.length}):`${e.name}: ${n.length} ${1===n.length?"item":"items"} represented.`,level:1,children:[]};let y=0;const h=(t,r,i)=>{const a=u?t[u]:void 0,l=s?.itemLabelTemplate?mt(s.itemLabelTemplate,t,e,o,n,{count:n.length}):function(e,t,r,n){const o=ft(t,["nominal","ordinal"]),i=t.dataRoles.filter(e=>"quantitative"===e.semanticType),s=o?yt(o,r,n):void 0,a=[];s&&null!=e[s]&&a.push(e[s]+"");for(const t of i){const o=yt(t,r,n);o&&null!=e[o]&&a.push(`${t.role}: ${e[o]+""}`)}return a.length>0?a.join(", "):"Data item"}(t,e,o,n);return{id:"datum-"+tr(a??r),role:"datum",label:l,level:i,datum:t}};if(c){const e=new Map;for(const t of n){const r=(t[c]??"Uncategorized")+"",n=e.get(r);n?n.push(t):e.set(r,[t])}p.children=[...e].map(([e,t],r)=>{const n=t.slice(0,Math.max(0,i-y));y+=n.length;const o=n.map((e,t)=>h(e,1e5*r+t,3));return t.length>n.length&&o.push({id:"more-"+tr(e),role:"datum",label:`…and ${t.length-n.length} more items`,level:3}),{id:"group-"+tr(e),role:"series",label:`${e}: ${t.length} ${1===t.length?"item":"items"}.`,level:2,children:o}})}else{const e=n.slice(0,i);p.children=e.map((e,t)=>h(e,t,2)),n.length>e.length&&p.children.push({id:"more",role:"datum",label:`…and ${n.length-e.length} more items`,level:2})}return p}(s,t,{maxLeaves:o,locale:n});const a={id:"root",role:"chart",label:Kt(e,t,{locale:n}).text||"Chart.",level:1,children:[]},l=function(e,t){const r=Array.isArray(e.annotations)?e.annotations:null;if(!r)return null;const n=Pt(r.filter(e=>!!e&&"object"==typeof e));if(0===n.length)return null;let o=0;const i=n.slice(0,t).map(e=>{const t=e.lifecycle?.status,r=t&&"accepted"!==t?` (${t})`:"";return{id:"annotation-"+o++,role:"annotation",level:3,label:`${n=Xt(e),n?n.charAt(0).toUpperCase()+n.slice(1):n}${r}.`,datum:e};var n});n.length>t&&i.push({id:"annotation-"+o++,role:"annotation",level:3,label:`…and ${n.length-t} more annotations.`});const s=n.length;return{id:"annotations",role:"annotation",level:2,label:`Annotations: ${1===s?"one marked feature":s+" marked features"}.`,children:i}}(t,o),c=Array.isArray(t.data)?t.data:null,d=St.has(e)||At.has(e)||jt.has(e)||$t.has(e);if(!c||0===c.length||!d)return l&&(a.children=[l]),a;const{measure:u,measureFallback:p,dimension:y,dimensionFallback:h}=Mt(e,t),f=Ct(u,p),m=wt(y,h),b="string"==typeof u&&u?u:p,g="string"==typeof y&&y?y:h,v=Bt(t);let x=0;const k=e=>`${e}-${x++}`,C=(e,t)=>{const r=e.slice(0,o).map(e=>((e,t)=>{const r=f(e),n=Wt(m(e),i);return{id:k("datum"),role:"datum",level:t,label:`${n}: ${Number.isFinite(r)?i(r):"—"}`,value:Number.isFinite(r)?r:void 0,datum:e}})(e,t));return e.length>o&&r.push({id:k("more"),role:"datum",level:t,label:`…and ${e.length-o} more points`}),r},w=[];if(St.has(e)||At.has(e)){let t=1/0,r=-1/0,n=1/0,o=-1/0;const s=[];let a=!0;for(const e of c){const i=f(e);Number.isFinite(i)&&(t>i&&(t=i),i>r&&(r=i));const l=m(e);s.push(l),"number"==typeof l&&Number.isFinite(l)?(n>l&&(n=l),l>o&&(o=l)):a=!1}const l=new Set,d=[];for(const e of s){const t=e+"";l.has(t)||(l.add(t),d.push(e))}const u=a?`${i(n)} to ${i(o)}`:`${Wt(d[0],i)} to ${Wt(d[d.length-1],i)} (${At.has(e)?d.length+" categories":c.length+" points"})`;w.push({id:k("axis"),role:"axis",level:2,label:`${At.has(e)?"Category axis":"X axis"}: ${g}, ${u}.`}),t>r||w.push({id:k("axis"),role:"axis",level:2,label:`Value axis: ${b}, ${i(t)} to ${i(r)}.`})}if(v){const r=wt(v,v),o=new Map;for(const e of c){const t=(r(e)??"—")+"",n=o.get(t);n?n.push(e):o.set(t,[e])}const i=[];for(const[r,s]of o){const o=Kt(e,{...t,data:s},{levels:["l2","l3"],locale:n}).text;i.push({id:k("series"),role:"series",level:2,label:`Series ${r}: ${o}`,children:C(s,3)})}a.children=[...w,...i]}else a.children=[...w,...C(c,2)];return l&&a.children.push(l),a}var nr=new Set(["StreamPhysicsFrame","EventDropChart","GaltonBoardChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","PhysicsCustomChart"]);function or(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function ir(e){return or(e)?e:void 0}function sr(e){const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:void 0}function ar(e){const t=sr(e);return null==t?void 0:Math.max(0,Math.floor(t))}function lr(...e){return e.map(ir).find(Boolean)}function cr(...e){return e.find(Array.isArray)}function dr(e){const t={};for(const[r,n]of Object.entries(e))void 0!==n&&(t[r]=n);return t}function ur(e,t){return 1!==e&&"body"===t?"bodies":1===e?t:t+"s"}function pr(e){return Number.isInteger(e)?e+"":Math.round(1e3*e)/1e3+""}function yr(e,t,r){const n=e?.filter(e=>!0===ir(e)?.sensor).length,o=ir(t?.observation),i=ir(o?.sensors),s=cr(r?.activeSensors);return Math.max(n??0,i?Object.keys(i).length:0,s?.length??0)||void 0}var hr={info:"#2563eb",warning:"#d97706",error:"#dc2626"},fr=240;function mr(e){if("string"==typeof e)return e;try{return JSON.stringify(e,null,2)??e+""}catch{return e+""}}function br(e,t){return null==t?e.findings:e.findings.slice(0,Math.max(0,t))}function gr(...e){for(const t of e){const e=t?.trim();if(e)return e}return"Review this finding."}function vr(e){return gr(e.remediation,e.explanation,e.evidence,e.condition)}function xr(e){return gr(e.name,e.ruleId)}function kr(e,t){return e.domain?`${t} · ${e.domain}`:t}function Cr(e,t){return t[e]??t.info??hr.info}function wr(e,t){return`${function(e){return gr(e.ruleId,e.name)}(e)}:${t}`}function Sr(e,t={},r=0,n={kind:"image",findings:[e]}){const o=t.sourcePrefix??"datapitfalls";return{id:wr(e,r),level:(i=e.severity,"error"===i?"error":"warning"===i?"warning":"info"===i?"info":"neutral"),title:xr(e),message:t.message?t.message(e,r,n):vr(e),source:kr(e,o),...void 0===t.dismissible?{}:{dismissible:t.dismissible}};var i}function Ar(e,t={}){return br(e,t.max).map((r,n)=>Sr(r,t,n,e))}function jr(e,t={}){return{notifications:Ar(e,t),meta:{count:e.findings.length,kind:e.kind}}}function $r(e,t={},r=0,n={kind:"image",findings:[e]}){const o={...hr,...t.palette},i=t.anchorFor?.(e,r,n);return{...i??{},type:t.type??"label",title:xr(e),label:vr(e),wrap:t.wrap??fr,color:Cr(e.severity,o),className:(s=e.severity,"pitfall-"+(s+"").toLowerCase().replace(/[^a-z0-9_-]/g,"-")),emphasis:"error"===e.severity?"primary":"secondary",provenance:{author:"datapitfalls",authorKind:"watcher",source:"computed",basis:"llm-inference",stableId:e.ruleId},dataPitfall:{ruleId:e.ruleId,domain:e.domain,severity:e.severity,evidence:e.evidence??""}};var s}function Mr(e,t={}){return br(e,t.max).map((r,n)=>$r(r,t,n,e))}function Br(e,t={}){return{annotations:Mr(e,t),meta:{count:e.findings.length,kind:e.kind}}}function Wr(e,t,r){return{role:e,artifact:{kind:"text",content:t,...r?{filename:r}:{}}}}function Pr(e,t,r,n){return{role:e,artifact:{kind:"code",content:t,language:r,...n?{filename:n}:{}}}}function Ir(e,t,r={}){const n=[],o=!1!==r.includeConfig,i=!1!==r.includeJSX,s=!1!==r.includeGrounding,a=!1!==r.includeDiagnostics,l=!1!==r.includeAccessibility,c=r.filenamePrefix??e,d=function(e,t,r){const n=we(e)??Se(t.recipe)??Se(t.recipeId);if(n)return function(e,t,r){const n=function(e,t,r){const n={};for(const[o,i]of Object.entries(e))if(null!=i&&!gt.has(o)&&"recipeId"!==o&&(t||!xt(o,i)))if("function"==typeof i||i?.$$typeof){if(r)throw Error(`Portable recipe prop "${o}" is not JSON-safe.`)}else if(ke(i))n[o]=kt(i);else if(r)throw Error(`Portable recipe prop "${o}" is not JSON-safe.`);return n}(t,!1!==r?.includeData,"portable"===e.portability),o=e.intents.map(ct).filter(e=>!!e),i={name:e.name,intents:o,...e.audience?.primary?{audience:[e.audience.primary]}:{},frameFamily:e.frameFamily};if("portable"===e.portability){if(!ke(n))throw Error(`Portable recipe "${e.id}" contains non-JSON-safe props or layoutConfig.`);return{component:"ChartRecipe",recipeId:e.id,portable:!0,props:n,manifest:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}return{component:"ChartRecipe",recipeId:e.id,portable:!1,reason:"Recipe contains or may depend on non-serializable local layout callbacks.",warnings:["This config is inspectable but cannot be rendered remotely by CLI or MCP."],props:n,manifest:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}(n,t,r);if(!function(e){return lt.has(e)}(e))throw Error(`Unknown component "${e}". Known components: ${at.join(", ")}`);const o=!1!==r?.includeData,i={};for(const[e,r]of Object.entries(t))null!=r&&(gt.has(e)||!o&&xt(e,r)||"function"!=typeof r&&(r?.$$typeof||(i[e]=kt(r))));return{component:e,props:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}(e,t,r.config);r.context?.trim()&&n.push(Wr("Analysis context",r.context.trim(),c+".context.md")),o&&n.push(Pr("Semiotic chart config",mr(d),"json",c+".semiotic-config.json")),i&&n.push(Pr("Semiotic chart JSX",function(e){const{props:t}=e,r=["<"+("LocalChartRecipe"===e.component?"ChartRecipe":e.component)];e.recipeId&&r.push(` recipeId="${e.recipeId}"`);for(const[e,n]of Object.entries(t))if("string"==typeof n)r.push(` ${e}="${n}"`);else if("boolean"==typeof n&&!0===n)r.push(" "+e);else if("boolean"==typeof n&&!1===n)r.push(` ${e}={false}`);else if("number"==typeof n)r.push(` ${e}={${n}}`);else{const t=JSON.stringify(n);r.push(80>t.length?` ${e}={${t}}`:` ${e}={${JSON.stringify(n,null,2)}}`)}return r.push("/>"),r.join("\n")}(d),"jsx",c+".semiotic.jsx"));var u;const p=(y=(u=r.rendered?.image,null==u?[]:Array.isArray(u)?u:[u])).length>0?{role:"Rendered chart image",artifact:{kind:"image",images:y}}:null;var y;let h,f,m;return p&&n.push(p),r.rendered?.svg?.trim()&&n.push(Pr("Rendered chart SVG",r.rendered.svg.trim(),"svg",c+".rendered.svg")),null!=r.rendered?.evidence&&n.push(Wr("Semiotic render evidence",[e+": Semiotic render evidence","\n```json",mr(r.rendered.evidence),"```"].join("\n"),c+".render-evidence.md")),s&&(h=function(e,t,r={}){const{capability:n,audience:o,locale:i}=r,s=r.levels??["l1","l2","l3"],a=!1!==r.includeStructure,l=qt(e,n),c=Kt(e,t,{levels:l?[...s,"l4"]:s,locale:i,capability:n,audience:o}),{l4:d,...u}=c.levels,p=["l1","l2","l3"].map(e=>c.levels[e]).filter(Boolean).join(" "),y={levels:u,text:c.annotations?`${c.annotations} ${p}`.trim():p,...c.annotations?{annotations:c.annotations}:{}};let h;if(l&&d){const e=(f=n)?"fits"in f||"buildProps"in f?{family:f.family}:{family:f.family,intentScores:f.intentScores}:{};h={act:l,sentence:d,family:e.family,intentScores:e.intentScores}}var f;const m=a?rr(e,t,{maxLeaves:r.maxLeaves,locale:i}):void 0,b=function(e,t,r){if(!1===r)return;const n=or(r)?r:void 0,o=ir(t.physics),i=lr(n?.snapshot,o?.snapshot,t.physicsSnapshot,function(e){const t=ir(e);return!!t&&(or(t.world)||"simulationState"in t||"liveBodyOrder"in t)}(t.snapshot)?t.snapshot:void 0),s=lr(n?.evidence,o?.evidence,t.physicsEvidence,t.settledEvidence),a=lr(n?.config,o?.config,i?.config,t.config),l=lr(ir(i?.world),ir(o?.world)),c=lr(ir(a?.kernel),ir(l?.options)),d=cr(l?.bodies),u=cr(l?.colliders,a?.colliders),p=cr(i?.queue,o?.queue),y=cr(i?.liveBodyOrder),h=cr(l?.springs),f=cr(i?.activeSensorPairs),m=function(e){if(!e||0===e.length)return;const t=e.map((e,t)=>{const r=ir(e);if(!r)return;const n=sr(r.count??r.value??r.total??r.bodies??r.events);if(null==n)return;const o=(r.label??r.id??r.name??"container "+(t+1))+"",i=null==r.id?void 0:r.id+"",s=sr(r.secondary??r.secondaryCount),a=sr(r.observed??r.observedCount);return dr({id:i,label:o,count:n,secondary:s,secondaryLabel:"string"==typeof r.secondaryLabel?r.secondaryLabel:void 0,observed:a})}).filter(e=>null!=e);if(0===t.length)return;const r=t.reduce((e,t)=>e+t.count,0),n=t.filter(e=>e.count>0).length,o=t.slice().sort((e,t)=>t.count-e.count)[0];return{rows:t,totalCount:r,populatedCount:n,...o?{leader:o}:{}}}(function(e,t,r,n){const o=ir(e.settledProjection),i=ir(t?.settledProjection);return cr(r?.projectionRows,r?.aggregates,e.settledProjectionRows,e.projectionRows,o?.rows,t?.settledProjectionRows,t?.projectionRows,i?.rows,n?.binCounts)}(t,o,n,s)),b=function(e,t){const r=e?.map((e,t)=>{const r=ir(e);if(!r)return;const n=sr(r.count)??0,o=sr(r.total),i={label:(r.label??r.id??"sediment "+(t+1))+"",count:n};return null!=r.id&&(i.id=r.id+""),null!=o&&(i.total=o),i}).filter(e=>null!=e),n=ar(t?.bins)??r?.length??0,o=sr(t?.count)??r?.reduce((e,t)=>e+t.count,0)??0,i=sr(t?.total)??r?.reduce((e,t)=>e+(t.total??0),0),s=r?.slice().sort((e,t)=>t.count-e.count)[0];if(0!==n||0!==o||i)return{bins:n,count:o,...null!=i&&i>0?{total:i}:{},...s?{leader:s}:{}}}(cr(n?.sediment,o?.sediment,i?.sediment),lr(n?.sedimentTotals,o?.sedimentTotals)),g=y?.length??d?.length??ar(s?.bodyCount),v=function(e){if(e)return e.filter(e=>!0===ir(e)?.sleeping).length}(d)??ar(s?.sleepingCount),x=p?.length,k="string"==typeof i?.simulationState?i.simulationState:void 0,C="boolean"==typeof s?.settled?s.settled:k?"settled"===k:null!=g||null!=v||null!=x?null!=g&&v===g&&0===(x??0):void 0,w=ir(c?.gravity),S=sr(w?.x),A=sr(w?.y),j=dr({state:k,settled:C,elapsedSeconds:sr(i?.elapsedSeconds),paused:"boolean"==typeof i?.paused?i.paused:void 0,visible:"boolean"==typeof i?.visible?i.visible:void 0,seed:sr(c?.seed),gravity:null!=S&&null!=A?{x:S,y:A}:void 0,fixedDt:sr(a?.fixedDt??c?.fixedDt),timeScale:sr(a?.timeScale),maxSubsteps:ar(a?.maxSubsteps),liveBodies:g,sleepingBodies:v,queued:x,bodyLimit:sr(a?.bodyLimit),eviction:"string"==typeof a?.eviction?a.eviction:void 0}),$=dr({colliders:u?.length,sensors:yr(u,a,l),springs:h?.length,activeSensorPairs:f?.length}),M=Object.keys($).length>0,B=nr.has(e);if(!(Object.keys(j).length>0||M||m||b)||!B&&null==r)return;const W={simulation:j,...M?{geometry:$}:{},...m?{aggregates:m}:{},...b?{sediment:b}:{}},P=function(e){const t=[],r=e.simulation,n=[r.state??(r.settled?"settled":void 0),null!=r.liveBodies?`${r.liveBodies} live ${ur(r.liveBodies,"body")}`:void 0,null!=r.sleepingBodies?r.sleepingBodies+" sleeping":void 0,null!=r.queued?r.queued+" queued":void 0,null!=r.seed?"seed "+pr(r.seed):void 0,r.gravity?`gravity (${pr(r.gravity.x)}, ${pr(r.gravity.y)})`:void 0,null!=r.fixedDt?`fixed step ${pr(r.fixedDt)}s`:void 0,null!=r.timeScale?pr(r.timeScale)+"x time":void 0].filter(Boolean);n.length>0&&t.push(`Physics simulation: ${n.join("; ")}.`);const o=e.geometry;if(o){const e=[null!=o.colliders?`${o.colliders} ${ur(o.colliders,"collider")}`:void 0,null!=o.sensors?`${o.sensors} ${ur(o.sensors,"sensor")}`:void 0,null!=o.springs?`${o.springs} ${ur(o.springs,"spring")}`:void 0,null!=o.activeSensorPairs?`${o.activeSensorPairs} active sensor ${ur(o.activeSensorPairs,"pair")}`:void 0].filter(Boolean);e.length>0&&t.push(`Physics geometry: ${e.join("; ")}.`)}const i=e.aggregates;if(i){const e=i.leader,r=e?` Largest is ${e.label} with ${pr(e.count)}.`:"";t.push(`Physics aggregates: ${pr(i.totalCount)} settled ${ur(i.totalCount,"body")} across ${i.rows.length} ${ur(i.rows.length,"container")}; ${i.populatedCount} populated.${r}`)}const s=e.sediment;if(s){const e=null!=s.total?", value total "+pr(s.total):"",r=s.leader?`; largest sediment bin is ${s.leader.label} with ${pr(s.leader.count)}`:"";t.push(`Physics sediment: ${s.count} retained ${ur(s.count,"body")} in ${s.bins} ${ur(s.bins,"bin")}${e}${r}.`)}return t.join(" ")}(W);return{...W,text:P}}(e,t,r.physics),g=[y.text,h?.sentence,b?.text].filter(Boolean).join(" ");return{component:e,description:y,intent:h,structure:m,physics:b,text:g}}(e,t,r.grounding),n.push(Wr("Semiotic reader grounding",function(e){return[e.component+": Semiotic reader grounding","",e.text,"\nStructured grounding JSON:\n```json",mr(e),"```"].join("\n")}(h),c+".reader-grounding.md"))),a&&(f=st(e,t),n.push(Wr("Semiotic config diagnostics",function(e,t){const r=t.diagnoses.filter(e=>"error"===e.severity).length,n=t.diagnoses.filter(e=>"warning"===e.severity).length,o=[e+": Semiotic diagnoseConfig report","ok: "+t.ok,"errors: "+r,"warnings: "+n];if(0===t.diagnoses.length)return o.push("","No Semiotic config issues detected."),o.join("\n");o.push("");for(const e of t.diagnoses)o.push(`[${e.severity}] ${e.code}: ${e.message}`),e.fix&&o.push("Fix: "+e.fix);return o.join("\n")}(e,f),c+".diagnose-config.md"))),l&&(m=function(e,t,r={}){const n=[],o=we(e),i=ye.has(e),s=!!H[e]||!!o||i,a=!0===r.inChartContainer,l=!0===r.describe,c=!0===r.navigable,d=ue.has(e),u=te.has(e),{hasTitle:p,hasDescription:y,hasSummary:h,unsupportedFinding:f}=function(e,t){const r=H[e]?.props,n=e=>!!r?.[e],o=V.filter(e=>U(t[e])&&!n(e));return{hasTitle:n("title")&&U(t.title),hasDescription:n("description")&&U(t.description),hasSummary:n("summary")&&U(t.summary),unsupportedFinding:o.length>0?{id:"understandable.unsupported-description-prop",principle:"understandable",heuristic:"Descriptive text is connected to the rendered chart",critical:!0,status:"warn",message:`Useful ${o.join(" and ")} text was supplied, but ${1===o.length?"that prop is":"those props are"} not supported by ${e}'s declared chart API and cannot be credited as rendered accessibility text.`,fix:"Use the component's declared title, description, and summary props when available; for richer generated description or navigation, use ChartContainer with chartConfig plus describe and/or navigable."}:void 0}}(e,t),m=!1!==t.accessibleTable&&!d,b=p||y||h,g=function(e){return!1!==e.tooltip||null!=e.onClick||null!=e.brush||null!=e.onBrush||null!=e.selection||null!=e.linkedHover||null!=e.linkedBrush}(t),v=function(e){const t=Be(e),r=e.controls&&"object"==typeof e.controls?e.controls:{};return!0===e.pauseControl||!0===t.pauseControl||!0===r.pause||"function"==typeof r.pause}(t),x=i,k=function(e){const t=Be(e);return!0===e.settledProjection||!0===t.settledProjection}(t)||fe.has(e)&&m,C=function(e){const t=Be(e);return!0===e.reducedMotionSettle||"settle"===e.reducedMotion||!0===t.reducedMotionSettle||"settle"===t.reducedMotion}(t)||x,w=Array.isArray(t.annotations)?t.annotations.filter(e=>!!e&&"object"==typeof e):[],S=s?"pass":"manual",A=s?"":` (unrecognized component "${e}" — verify manually that the built-in applies)`;if(f&&n.push(f),n.push(function(e){const t={id:"perceivable.low-contrast",principle:"perceivable",heuristic:"Low contrast",critical:!0},r=e.colorScheme,n="string"==typeof e.background?e.background:null;if(n&&!n.startsWith("#"))return{...t,status:"manual",message:`Background "${n}" isn't a hex literal (theme/CSS variable) — contrast can't be verified statically.`,fix:'Pass a hex `background` (e.g. "#ffffff"/"#000000"), or verify contrast manually once the theme resolves.'};const o=n??"#ffffff";if(!Array.isArray(r))return{...t,status:"manual",message:"Mark colors come from the theme/CSS variables — contrast can't be verified statically.",fix:"Confirm geometries/large text have ≥ 3:1 and regular text ≥ 4.5:1 contrast against the background."};const i=[];let s=0;for(const e of r){if("string"!=typeof e||!e.startsWith("#"))continue;const t=Q(e,o);null!=t&&(s++,3>t&&i.push(`${e} (${t.toFixed(1)}:1)`))}return 0===s?{...t,status:"manual",message:"colorScheme has no parseable hex colors to check.",fix:"Verify contrast manually for non-hex colors."}:i.length>0?{...t,status:"fail",message:`${i.length} color(s) fall below 3:1 contrast vs ${o}: ${i.join(", ")}.`,fix:"Darken (light background) or lighten (dark background) those colors, or use COLOR_BLIND_SAFE_CATEGORICAL."}:{...t,status:"pass",message:`All ${s} checked colorScheme color(s) meet ≥ 3:1 contrast vs ${o}.`}}(t)),n.push({id:"perceivable.content-only-visual",principle:"perceivable",heuristic:"Content is only visual",critical:!0,...d?{status:"pass",message:"BigNumber renders its value as real text with an ARIA label — available without vision."}:m?{status:"pass",message:"A screen-reader data table + live region expose the data non-visually (accessibleTable is on)."}:y&&h?{status:"manual",message:"accessibleTable is off; a description + summary are present. Verify they convey everything the chart shows.",fix:"Re-enable accessibleTable, or confirm via screen reader that the text alternative is complete."}:{status:"fail",message:"accessibleTable is disabled and there's no full text alternative — the data is only available visually.",fix:"Remove accessibleTable={false}, or provide a complete description/summary plus a data table."}}),n.push({id:"perceivable.small-text",principle:"perceivable",heuristic:"Small text size",critical:!0,status:"pass",message:"Semiotic's default tick and axis-label fonts are 12px, meeting Chartability's 9pt/12px floor.",fix:"If a theme or override lowers --semiotic-tick-font-size below 12px, raise it back for low-vision audiences."}),n.push({id:"perceivable.seizure-risk",principle:"perceivable",heuristic:"Visual presents seizure risk",critical:!0,...null!=t.pulse||he.has(e)?{status:"manual",message:"Pulse/continuous animation is in use. Confirm nothing flashes more than 3×/sec, especially saturated red.",fix:"Avoid red flashes and rapid (>3 Hz) flicker; reduced-motion is auto-honored, but verify the default presentation."}:{status:"manual",message:"No flashing detected statically. Confirm no element flashes more than 3×/sec.",fix:"Manual check — most static charts pass trivially."}}),null!=t.colorBy){n.push({id:"perceivable.color-alone",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,...!0===t.directLabel||!0===t.showLabels?{status:"pass",message:"Categories are encoded by color (colorBy) and also directly labeled, so color isn't the only channel."}:{status:"warn",message:"Categories are encoded by color (colorBy) with no redundant channel — Semiotic does not yet ship texture/pattern fills.",fix:"Add direct labels (directLabel on LineChart/AreaChart, showLabels on network/hierarchy), keep categories ≤ ~7, and use a CVD-safe palette."}});const e=Array.isArray(t.colorScheme)?t.colorScheme:null,r=e?e.filter(e=>"string"==typeof e&&e.startsWith("#")).map(e=>e.toLowerCase()):[],o=r.length>0&&r.every(e=>Ae.has(e));n.push({id:"perceivable.cvd-safe",principle:"perceivable",heuristic:"Not CVD-friendly",critical:!1,...o?{status:"pass",message:"colorScheme uses Semiotic's Wong colorblind-safe palette."}:{status:"manual",message:"Color encodes meaning; statically we can't confirm the palette is colorblind-safe.",fix:'Use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic", or test your scheme with Viz Palette / Chroma.'}}),n.push({id:"flexible.textures-adjustable",principle:"flexible",heuristic:"Contrast and textures cannot be adjusted",critical:!1,status:"warn",message:"There's no per-category texture/pattern channel to toggle as an alternative to color.",fix:"Until texture fills land, ensure the encoding survives color removal: direct labels + a CVD-safe palette. Contrast itself is themeable via CSS variables."})}{const e=w.filter(J);if(e.length>0){const r=t.autoPlaceAnnotations,o="object"==typeof r&&null!==r&&!0===r.redundantCues,i=e.filter(e=>{if("string"!=typeof e.color)return!1;const t=K(e),r=o&&"text"===t;return!(ee(e)||r)});n.push({id:"perceivable.annotation-association",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,...0===i.length?{status:"pass",message:"No annotation relies on color alone to indicate its target — wherever color is used, a connector, enclosure, or reference-line cue is present too."}:{status:"warn",message:`${i.length} of ${e.length} annotation(s) carry a color but no connector, enclosure, or reference-line cue, so a color-blind or non-visual reader can't tie them to their target (the correspondence problem).`,fix:"Add a connector (the label/callout default), place the note adjacent to its target, enclose the target, or enable autoPlaceAnnotations: { redundantCues: true } to give colored text notes a leader line — don't rely on color matching alone."}})}}n.push({id:"operable.single-input-modality",principle:"operable",heuristic:"Interaction modality only has one input type",critical:!0,...s?{status:"pass",message:"Built-in keyboard navigation (arrows/Home/End/PageUp-Down/Enter) mirrors mouse hover."}:{status:"manual",message:`Can't confirm keyboard support for "${e}".`,fix:"Verify Tab + arrow-key operation."}});{const e=[];null==t.brush&&null==t.onBrush||e.push("brushing"),!0===t.zoomable&&e.push("zoom/pan"),"isolate"!==t.legendInteraction&&"highlight"!==t.legendInteraction||e.push("legend filtering"),e.length>0&&n.push({id:"operable.complex-action-alternatives",principle:"operable",heuristic:"Complex actions have no alternatives",critical:!1,status:"warn",message:`Mouse-driven ${e.join(", ")} ${e.length>1?"have":"has"} no built-in keyboard/standard-UI equivalent.`,fix:"Pair the complex interaction with a standard control (range inputs for a brush, buttons for zoom, a checkbox list for legend filtering) operable by keyboard and screen reader."})}{const r=xe[e];if(r&&g){const e=t[r];"number"==typeof e&&e>0&&24>2*e&&n.push({id:"operable.target-size",principle:"operable",heuristic:"Target pointer interaction size is too small",critical:!1,status:"warn",message:`${r}=${e} gives a ~${2*e}px hit target, below the 24×24px minimum for pointer interaction.`,fix:"Increase the radius, or rely on the chart's hoverRadius / keyboard navigation as the alternative for precise selection."})}}n.push({id:"operable.tab-stops",principle:"operable",heuristic:"Inappropriate tab stops",critical:!1,status:S,message:`The chart takes a single tab stop and navigates data with arrow keys${A} — the recommended pattern for dense charts (no per-datum tab stops to wade through).`}),n.push({id:"operable.interaction-cues",principle:"operable",heuristic:"No interaction cues or instructions",critical:!0,...g?h||y?{status:"manual",message:"Chart is interactive and has descriptive text. Confirm that text explains how to interact (keyboard + pointer).",fix:'State the interaction model in summary, e.g. "Use arrow keys to move between points."'}:{status:"warn",message:"Chart is interactive but nothing explains how to use it.",fix:"Describe the interaction in a summary or nearby text (keyboard navigation, what hover/click reveals)."}:{status:"not-applicable",message:"No interactive behavior detected."}}),n.push({id:"operable.controls-override-at",principle:"operable",heuristic:"Controls override AT controls",critical:!0,status:S,message:`Keyboard handlers fire only while the chart has focus, so they don't hijack page/app screen-reader shortcuts${A}.`}),n.push({id:"operable.focus-indicator",principle:"operable",heuristic:"Keyboard focus indicator missing, obscured, or low contrast",critical:!1,status:S,message:`A shape-adaptive focus ring (var(--semiotic-focus)) marks the focused element${A}.`,fix:s?"Ensure --semiotic-focus keeps ≥ 3:1 contrast against your background.":void 0}),n.push({id:"understandable.title-summary-caption",principle:"understandable",heuristic:"No title, summary, or caption",critical:!0,...b?{status:"pass",message:`Provided: ${[p&&"title",y&&"description",h&&"summary"].filter(Boolean).join(", ")}.`}:a?{status:"manual",message:"No title/description/summary on the chart. If the wrapping ChartContainer supplies a title/subtitle, this is covered at that layer — verify it does.",fix:"Give the ChartContainer a title (and optionally enable describe), or set title/description/summary on the chart."}:{status:"fail",message:"No title, description, or summary — the screen reader falls back to a generic label.",fix:"Add title/description/summary on the chart, or wrap it in a ChartContainer (the opt-in layer for title/caption/description chrome)."}}),n.push({id:"understandable.explain-purpose",principle:"understandable",heuristic:"No explanation for purpose or for how to read",critical:!0,...y||h?{status:"pass",message:"A description/summary is available to explain purpose and how to read the chart."}:l?{status:"manual",message:"ChartContainer's describe option explains how to read the chart (type, stats, trend). Confirm the domain purpose — why this chart exists — is also conveyed (title/subtitle).",fix:"Give the ChartContainer a title/subtitle stating the purpose; describe() covers the how-to-read half."}:p?{status:"warn",message:"Only a title is set — a label, not an explanation of purpose or how to read the chart.",fix:"Add a summary, or enable ChartContainer's describe option for an auto-generated how-to-read description."}:{status:"fail",message:"Nothing explains the chart's purpose or how to read it.",fix:"Add a summary/description, or wrap in a ChartContainer with a title and the describe option (the opt-in full-accessibility layer)."}});{const e=[t.description,t.summary].filter(U).join(". "),r=e?function(e){const t=e.split(/[.!?]+/).map(e=>e.trim()).filter(Boolean),r=e.trim().split(/\s+/).filter(Boolean);if(0===r.length||0===t.length)return null;let n=0;for(const e of r)n+=Me(e);return r.length/t.length*.39+n/r.length*11.8-15.59}(e):null;n.push({id:"understandable.reading-level",principle:"understandable",heuristic:"Reading level inappropriate",critical:!0,...null==r?{status:"not-applicable",message:"No description/summary text to grade."}:r>9?{status:"warn",message:`Description/summary reads at ~grade ${r.toFixed(0)}; Chartability targets grade 9 or lower.`,fix:"Shorten sentences and prefer common words."}:{status:"pass",message:`Description/summary reads at ~grade ${Math.max(0,Math.round(r))} (≤ 9).`}})}if(pe.has(e)){const e=U(t.xLabel),r=U(t.yLabel);n.push({id:"understandable.axis-labels",principle:"understandable",heuristic:"Axis labels are unclear or missing",critical:!1,...e&&r?{status:"pass",message:"Both axes are labeled (xLabel, yLabel)."}:{status:"warn",message:`Missing axis label: ${[!e&&"xLabel",!r&&"yLabel"].filter(Boolean).join(", ")}. Ticks alone may not name the variable.`,fix:"Set xLabel and yLabel to name each axis's variable and units."}})}if(ge.has(e)&&n.push({id:"understandable.information-complexity",principle:"understandable",heuristic:"Information complexity is inappropriate",critical:!1,status:"warn",message:"Dual-axis chart: two y-scales are hard to read accurately and notoriously easy to misinterpret (the crossover point is arbitrary).",fix:"Confirm the second axis is necessary; consider two aligned charts (small multiples) or indexing both series to a common baseline. Label each axis and its series unambiguously."}),w.length>1){const e=w.filter($e).length;n.push({id:"understandable.annotation-hierarchy",principle:"understandable",heuristic:"Information complexity is inappropriate",critical:!1,...e===w.length?{status:"pass",message:`All ${w.length} annotation(s) declare hierarchy through emphasis or provenance confidence, so the renderer can resolve reading order and visual priority.`}:0===e?{status:"warn",message:w.length+" annotations are present with no emphasis or provenance confidence; readers may not know which note is primary.",fix:'Mark the main annotation with emphasis="primary", set supporting notes to emphasis="secondary", or provide provenance.confidence so Semiotic can infer order.'}:{status:"warn",message:`${w.length-e} of ${w.length} annotation(s) have no emphasis or provenance confidence; readers may not know which note is primary among the unordered notes.`,fix:"Set emphasis on each annotation (primary/secondary), or provide provenance.confidence on all annotations so Semiotic can infer order."}})}(null!=t.forecast||null!=t.anomaly||null!=t.band||null!=t.regression)&&n.push({id:"understandable.uncertainty",principle:"understandable",heuristic:"Statistical uncertainty isn't clearly communicated",critical:!1,status:"manual",message:"The chart shows a forecast/regression/band/anomaly overlay. Confirm the uncertainty it represents is explained in text, not just drawn.",fix:"State the confidence interval / method in the summary, and label the band so it isn't mistaken for data."}),null!=t.animate&&!1!==t.animate&&n.push({id:"understandable.changes-followable",principle:"understandable",heuristic:"Changes are not easy to follow",critical:!1,status:S,message:`Transitions animate with object constancy and data changes are mirrored to the live region${A}.`,fix:s?"Keep transition durations in the 250ms–2s range so changes are followable but not slow.":void 0}),n.push({id:"robust.conforms-to-standards",principle:"robust",heuristic:"Does not conform to standards",critical:!1,status:"manual",message:"WCAG 2.1 / Section 508 conformance can't be settled from config alone.",fix:"Run an automated checker (axe) on the rendered output and test with real assistive tech."}),n.push({id:"robust.semantically-valid",principle:"robust",heuristic:"Semantically invalid",critical:!1,status:"manual",message:"Whether interactive elements expose correct roles/names is a render-time, screen-reader question.",fix:"Verify with a screen reader that buttons read as buttons, the chart as an image/group, etc."}),n.push({id:"robust.fragile-technology-support",principle:"robust",heuristic:"Fragile technology support",critical:!1,status:S,message:`Charts render on canvas with an SVG overlay and render to SVG in SSR, so access isn't tied to one rendering path${A}.`,fix:s?"Still test across NVDA+Firefox, JAWS+Chrome, and VoiceOver+Safari — AT support varies.":void 0}),n.push({id:"compromising.table",principle:"compromising",heuristic:"No table",critical:!0,...d?{status:"not-applicable",message:"Single-value display — a table isn't meaningful."}:m?{status:"pass",message:"A human-readable data table is provided (accessibleTable)."}:{status:"fail",message:"accessibleTable is disabled — no human-readable table of the underlying data.",fix:"Remove accessibleTable={false} (unless title/summary/annotations already convey all the data)."}}),d||n.push({id:"compromising.table-static",principle:"compromising",heuristic:"Table/data is static",critical:!1,...a?{status:"manual",message:"Rendered in a ChartContainer. If a data-download action is enabled, the data is exportable.",fix:"Enable the ChartContainer data-download action so users can save the underlying data (keep it opt-in)."}:{status:"warn",message:"The data table is read-only — not downloadable, sortable, or filterable.",fix:"Wrap the chart in a ChartContainer and enable its data-download action (opt-in, so deployments can withhold it where export isn't allowed)."}}),n.push({id:"compromising.shareable-state",principle:"compromising",heuristic:"State is not easy to share and reproduce",critical:!1,status:s?"pass":"manual",message:`Chart state serializes via toConfig/toURL/copyConfig${s?"":A}.`,fix:s?"Expose it to users via the ChartContainer copyConfig action or a shareable URL.":void 0}),n.push({id:"compromising.navigable-structure",principle:"compromising",heuristic:"Information cannot be navigated according to narrative or structure",critical:!1,...c?{status:"pass",message:"ChartContainer's navigable option mounts a structured tree (chart → axes/series → data points) that screen readers can traverse."}:u?{status:"warn",message:"Hierarchical chart: built-in keyboard navigation is largely flat — it doesn't descend the tree structure.",fix:"Enable ChartContainer's navigable option for a structured navigation tree, or lean on the data table and a summary that conveys the hierarchy."}:{status:S,message:`Keyboard navigation steps through points and switches series/groups${A}.`,fix:s?"For deeper structure (axis → series → datum), enable ChartContainer's navigable option.":void 0}});{const r=Array.isArray(t.data)?t.data:null,o=Array.isArray(t.nodes)?t.nodes:null,i={id:"assistive.data-density",principle:"assistive",heuristic:"Data density is inappropriate",critical:!0};let s;s=ce.has(e)&&r&&r.length>7?{...i,status:"warn",message:r.length+" slices in a part-to-whole chart. Chartability suggests ≤ 5 categories; many thin slices are hard to perceive and to describe.",fix:'Group small slices into an "Other" category, or switch to a ranked bar chart.'}:o&&o.length>200?{...i,status:"warn",message:o.length+" nodes. A network this size is hard to navigate non-visually node by node.",fix:"Provide a summary of structure (clusters, hubs, components) and consider filtering or aggregating the graph."}:r&&r.length>5e3?{...i,status:"warn",message:r.length+" data points. Canvas renders this fine, but the non-visual table/navigation become unwieldy.",fix:"Aggregate or bin for the accessible representation, or expose summary statistics rather than every row."}:r?{...i,status:"pass",message:r.length+" data points — a reasonable density for non-visual consumption."}:o?{...i,status:"pass",message:o.length+" nodes — a reasonable density for non-visual consumption."}:{...i,status:"manual",message:"Data not provided inline (push mode); verify density at runtime."},n.push(s)}{const e=Array.isArray(t.data)?t.data:null,r=["valueFormat","yFormat","xFormat","tickFormat","format"].some(e=>"function"==typeof t[e]||"string"==typeof t[e]);let o=!1;if(e&&!r)for(const t of e.slice(0,50))if(t&&"object"==typeof t){for(const e of Object.values(t))if("number"==typeof e&&Number.isFinite(e)&&Math.abs(e)>=1e5){o=!0;break}if(o)break}o&&n.push({id:"assistive.human-readable-numbers",principle:"assistive",heuristic:"Data in text is not human-readable",critical:!1,status:"warn",message:'Data includes large numbers (≥ 100,000) and no value/tick formatter — screen readers will read every digit (e.g. "six hundred fifty thousand…").',fix:'Pass valueFormat / yFormat (e.g. a compact formatter so 6,500,000 reads as "6.5M"); the formatter flows to ticks, tooltips, and the data table.'})}n.push({id:"assistive.features-described",principle:"assistive",heuristic:"Visually apparent features and relationships are not described",critical:!1,...l?{status:"pass",message:"ChartContainer's describe option auto-generates an L1–L3 description (chart type, statistics, and trend) via describeChart()."}:h?{status:"manual",message:"A summary is present. Confirm it describes trends, extrema, clusters, and outliers — not just what the chart is.",fix:"Cover the L2/L3 content blind readers value most: direction of trend, peak/trough, notable outliers."}:{status:"warn",message:"No text describes the visually apparent trends, extrema, or outliers.",fix:"Enable ChartContainer's describe option (auto-generates via describeChart()), or write a summary covering the key trend and notable points."}}),n.push({id:"assistive.skippable-navigation",principle:"assistive",heuristic:"Navigation and interaction is tedious",critical:!0,...d?{status:"not-applicable",message:"Single value — nothing to skip."}:m?{status:"pass",message:'A "Skip to data table" link lets screen-reader users bypass point-by-point navigation.'}:{status:"warn",message:"accessibleTable is off, removing the skip-to-table affordance.",fix:"Keep accessibleTable enabled so users can skip past dense point navigation."}}),n.push({id:"flexible.user-style-respected",principle:"flexible",heuristic:"User style change not respected",critical:!0,status:S,message:`Styling flows through CSS custom properties and honors forced-colors mode, so user/user-agent style changes cascade in${A}.`,fix:s?"Avoid hardcoding colors via frameProps style fns that bypass theme variables.":void 0}),n.push({id:"flexible.reduced-motion",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...he.has(e)||be.has(e)?v?{status:"pass",message:e+" animates continuously and declares an in-chart pause/stop control."}:{status:"warn",message:e+" animates continuously. prefers-reduced-motion is auto-honored, but there's no in-chart pause/stop control for users who don't set that preference.",fix:"Offer a pause/stop control for looping/streaming motion (Chartability requires it for animation > 2s)."}:{status:S,message:`prefers-reduced-motion is auto-detected; transitions fast-forward and looping animation stops${A}.`}}),i&&(n.push({id:"flexible.sim-pause-control",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...v?{status:"pass",message:"Physics simulation exposes a pause/stop control for users who need to stop motion."}:{status:"warn",message:"Physics simulation has no declared pause/stop control.",fix:"Provide a visible pause control and set physics.pauseControl=true (or pauseControl=true) so the contract is auditable."}}),n.push({id:"flexible.settled-projection",principle:"flexible",heuristic:"User style change not respected",critical:!1,...k?{status:"pass",message:"A settled-projection table is declared, so non-visual readers get aggregate chart semantics instead of trajectories."}:{status:"warn",message:"Physics chart does not declare a settled projection for its accessible table.",fix:"Provide aggregate rows from the settled projection and set physics.settledProjection=true."}}),n.push({id:"flexible.reduced-motion-settle",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...C?{status:"pass",message:"Reduced-motion mode settles the simulation to a static chart state instead of freezing bodies mid-flight."}:{status:"warn",message:"Physics chart does not declare reduced-motion synchronous settle behavior.",fix:"In reduced motion, run the world to its settled projection and paint once; set physics.reducedMotionSettle=true."}}));{const r=!0===t.responsiveWidth||!0===t.responsiveHeight,o=ve.has(e)&&!0===t.zoomable;n.push({id:"flexible.zoom-reflow",principle:"flexible",heuristic:"Zoom and reflow are not supported",critical:!1,...r?{status:"pass",message:`Chart reflows to its container (${[!0===t.responsiveWidth&&"responsiveWidth",!0===t.responsiveHeight&&"responsiveHeight"].filter(Boolean).join(", ")}), so page zoom doesn't clip it.`}:o?{status:"pass",message:"Geo chart is zoomable/pannable."}:{status:"manual",message:"Fixed width/height — verify the chart survives browser zoom and reflow without clipping or loss of function.",fix:"Use responsiveWidth/responsiveHeight so the chart reflows to its container."}})}if(o){const e=o.encodings?.some(e=>"color"===e.channel&&(!e.redundantWith||0===e.redundantWith.length));e&&n.push({id:"perceivable.recipe-color-alone",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,status:"warn",message:o.name+" declares a color encoding without a redundant cue.",fix:"Add shape, label, position, texture, or a textual category summary to the recipe encoding."}),"required"!==o.accessibility.description||U(t.description)||n.push({id:"understandable.recipe-description",principle:"understandable",heuristic:"Features are not described",critical:!1,status:"fail",message:o.name+" requires a recipe-aware description, but none is attached.",fix:"Call describeChart with recipeId/recipe metadata and attach the returned text as description."}),o.accessibility.fallbackTable&&!1===t.accessibleTable&&n.push({id:"compromising.recipe-fallback",principle:"compromising",heuristic:"No data table is provided",critical:!0,status:"fail",message:o.name+" requires a fallback table, but accessibleTable is disabled.",fix:"Enable accessibleTable and preserve recipe-declared table fields on scene nodes."})}const j=n.filter(e=>"not-applicable"!==e.status).filter(e=>e.critical),$={criticalsPassed:j.filter(e=>"pass"===e.status).length,criticalsEvaluated:j.length,fails:n.filter(e=>"fail"===e.status).length,warnings:n.filter(e=>"warn"===e.status).length,manual:n.filter(e=>"manual"===e.status).length,passes:n.filter(e=>"pass"===e.status).length};return{component:e,ok:!j.some(e=>"fail"===e.status),summary:$,findings:n,reference:je}}(e,t,r.accessibility),n.push(Wr("Semiotic accessibility audit",function(e){const t=[],r=e.summary,n=e.ok?`${r.criticalsPassed}/${r.criticalsEvaluated} critical heuristics pass`:`${r.fails} blocking failure(s) — ${r.criticalsPassed}/${r.criticalsEvaluated} critical heuristics pass`;t.push(`${e.ok?"✓":"✗"} ${e.component}: accessibility audit (Chartability POUR-CAF)`),t.push(` ${n} · ${r.warnings} warning(s) · ${r.manual} to verify manually`);for(const r of Pe){const n=e.findings.filter(e=>e.principle===r&&"not-applicable"!==e.status);if(0!==n.length){t.push(""),t.push(" "+r.toUpperCase());for(const e of n)t.push(` ${We[e.status]} ${e.id}${e.critical?" [critical]":""}: ${e.message}`),!e.fix||"fail"!==e.status&&"warn"!==e.status&&"manual"!==e.status||t.push(" → "+e.fix)}}return t.push(""),t.push(" Ref: "+e.reference),t.join("\n")}(m),c+".accessibility.md"))),r.narrative?.trim()&&n.push(Wr("Author narrative",r.narrative.trim(),c+".narrative.md")),r.additionalStages?.length&&n.push(...r.additionalStages),0===n.length&&n.push(Pr("Semiotic chart config",mr(d),"json",c+".semiotic-config.json")),{input:{kind:"chain",stages:n},config:d,...h?{grounding:h}:{},...f?{diagnosis:f}:{},...m?{accessibility:m}:{}}}function Lr(e,t,r={}){return Ir(e,t,r).input}var Rr="0.1",Tr=["trend","compare-series","compare-categories","rank","part-to-whole","distribution","correlation","flow","hierarchy","geo","outlier-detection","composition-over-time","change-detection"],Fr=new Set(["fresh","aging","stale","expired"]),Er=new Set(["proposed","accepted","disputed","retracted"]),Nr=new Set(["fixed","latest","sticky","semantic"]),Or=new Set(["visual","screen-reader","sonified","agent"]);function Dr(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function zr(e,t,r){("number"!=typeof r||!Number.isInteger(r)||1>r||r>5)&&e.push(t+" must be an integer in [1, 5]")}function qr(e,t,r){void 0!==r&&"string"!=typeof r&&e.push(t+" must be a string")}function _r(e,t,r,n,o){void 0!==r&&("number"!=typeof r||!Number.isFinite(r)||void 0!==n&&n>r||void 0!==o&&r>o)&&e.push(`${t} must be a finite number${void 0!==n&&void 0!==o?` in [${n}, ${o}]`:void 0!==n?" >= "+n:""}`)}function Hr(e,t,r){void 0!==r&&"boolean"!=typeof r&&e.push(t+" must be a boolean")}function Gr(e,t,r,n){for(const o of Object.keys(r))n.includes(o)||e.push(`${t}.${o} is not allowed`)}function Vr(e,t){void 0!==t&&t!==Rr&&e.push("specVersion must be the string "+Rr)}function Ur(e){const t=[];if(!Dr(e))return{valid:!1,errors:["capability must be an object"]};Vr(t,e.specVersion),"string"==typeof e.component&&0!==e.component.length||t.push("component is required and must be a non-empty string"),qr(t,"family",e.family),qr(t,"importPath",e.importPath);const r=e.rubric;if(Dr(r)?(Gr(t,"rubric",r,["familiarity","accuracy","precision"]),zr(t,"rubric.familiarity",r.familiarity),zr(t,"rubric.accuracy",r.accuracy),zr(t,"rubric.precision",r.precision)):t.push("rubric is required and must be an object"),void 0!==e.intentScores)if(Dr(e.intentScores))for(const[r,n]of Object.entries(e.intentScores))_r(t,"intentScores."+r,n,0,5);else t.push("intentScores must be an object");if(void 0!==e.variants&&(Array.isArray(e.variants)?e.variants.forEach((e,r)=>{if(Dr(e)){if("string"!=typeof e.key&&t.push(`variants[${r}].key is required`),"string"!=typeof e.label&&t.push(`variants[${r}].label is required`),qr(t,`variants[${r}].description`,e.description),void 0!==e.intentDeltas)if(Dr(e.intentDeltas))for(const[n,o]of Object.entries(e.intentDeltas))_r(t,`variants[${r}].intentDeltas.${n}`,o);else t.push(`variants[${r}].intentDeltas must be an object`);if(void 0!==e.rubricDeltas)if(Dr(e.rubricDeltas)){Gr(t,`variants[${r}].rubricDeltas`,e.rubricDeltas,["familiarity","accuracy","precision"]);for(const n of["familiarity","accuracy","precision"])_r(t,`variants[${r}].rubricDeltas.${n}`,e.rubricDeltas[n])}else t.push(`variants[${r}].rubricDeltas must be an object`);for(const n of["caveats","tags"]){const o=e[n];void 0!==o&&(Array.isArray(o)&&!o.some(e=>"string"!=typeof e)||t.push(`variants[${r}].${n} must be an array of strings`))}void 0===e.props||Dr(e.props)||t.push(`variants[${r}].props must be an object`)}else t.push(`variants[${r}] must be an object`)}):t.push("variants must be an array")),void 0!==e.mobile)if(Dr(e.mobile)){const r=e.mobile;qr(t,"mobile.strategy",r.strategy),Hr(t,"mobile.responsive",r.responsive),Hr(t,"mobile.supportsResponsiveLayout",r.supportsResponsiveLayout);for(const e of["minViewportWidth","maxMarks","maxAnnotations","minimumHitTarget"])_r(t,"mobile."+e,r[e],0);void 0!==r.breakpoints&&(Array.isArray(r.breakpoints)?r.breakpoints.forEach((e,r)=>{_r(t,`mobile.breakpoints[${r}]`,e)}):t.push("mobile.breakpoints must be an array")),void 0!==r.summary&&"boolean"!=typeof r.summary&&"string"!=typeof r.summary&&t.push("mobile.summary must be a boolean or string"),void 0!==r.interaction&&(Dr(r.interaction)?(qr(t,"mobile.interaction.primary",r.interaction.primary),qr(t,"mobile.interaction.hoverFallback",r.interaction.hoverFallback),_r(t,"mobile.interaction.targetSize",r.interaction.targetSize,0),void 0===r.interaction.alternatives||Array.isArray(r.interaction.alternatives)&&!r.interaction.alternatives.some(e=>"string"!=typeof e)||t.push("mobile.interaction.alternatives must be an array of strings")):t.push("mobile.interaction must be an object")),void 0!==r.labels&&(Dr(r.labels)?(qr(t,"mobile.labels.strategy",r.labels.strategy),_r(t,"mobile.labels.minFontSize",r.labels.minFontSize,0)):t.push("mobile.labels must be an object")),void 0!==r.custom&&(Dr(r.custom)?(Hr(t,"mobile.custom.dataBearingSceneNodes",r.custom.dataBearingSceneNodes),Hr(t,"mobile.custom.stableIds",r.custom.stableIds),qr(t,"mobile.custom.navigationGranularity",r.custom.navigationGranularity)):t.push("mobile.custom must be an object"))}else t.push("mobile must be an object");for(const r of["caveats","tags"]){const n=e[r];void 0===n||Array.isArray(n)&&!n.some(e=>"string"!=typeof e)||t.push(r+" must be an array of strings")}return{valid:0===t.length,errors:t}}function Yr(e){const t=[];if(!Dr(e))return{valid:!1,errors:["audience profile must be an object"]};if(Vr(t,e.specVersion),qr(t,"name",e.name),void 0!==e.familiarity)if(Dr(e.familiarity))for(const[r,n]of Object.entries(e.familiarity))("number"!=typeof n||!Number.isInteger(n)||1>n||n>5)&&t.push(`familiarity.${r} must be an integer in [1, 5]`);else t.push("familiarity must be an object");if(void 0!==e.targets)if(Dr(e.targets))for(const[r,n]of Object.entries(e.targets))!Dr(n)||"increase"!==n.direction&&"decrease"!==n.direction?t.push(`targets.${r}.direction must be "increase" or "decrease"`):(Gr(t,"targets."+r,n,["direction","weight","reason"]),void 0===n.weight||"number"==typeof n.weight&&Number.isInteger(n.weight)&&n.weight>=1&&3>=n.weight||t.push(`targets.${r}.weight must be an integer in [1, 3]`),qr(t,`targets.${r}.reason`,n.reason));else t.push("targets must be an object");return void 0===e.exposureLevel||"number"==typeof e.exposureLevel&&Number.isInteger(e.exposureLevel)&&[0,1,2].includes(e.exposureLevel)||t.push("exposureLevel must be 0, 1, or 2"),void 0===e.receptionModality||Or.has(e.receptionModality)||t.push("receptionModality must be one of "+[...Or].join(", ")),{valid:0===t.length,errors:t}}function Qr(e){const t=[];if(!Dr(e))return{valid:!1,errors:["annotation must be an object"]};const r=e.provenance;if(void 0!==r)if(Dr(r)){for(const e of["author","authorKind","source","basis","dataVersion","stableId"])qr(t,"provenance."+e,r[e]);_r(t,"provenance.confidence",r.confidence,0,1),void 0===r.createdAt||"string"==typeof r.createdAt&&function(e){return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(e)&&!Number.isNaN(Date.parse(e))}(r.createdAt)||t.push("provenance.createdAt must be an ISO 8601 date-time string")}else t.push("provenance must be an object");const n=e.lifecycle;return void 0!==n&&(Dr(n)?(void 0===n.freshness||Fr.has(n.freshness)||t.push("lifecycle.freshness must be one of "+[...Fr].join(", ")),void 0===n.status||Er.has(n.status)||t.push("lifecycle.status must be one of "+[...Er].join(", ")),void 0===n.anchor||Nr.has(n.anchor)||t.push("lifecycle.anchor must be one of "+[...Nr].join(", ")),qr(t,"lifecycle.supersedes",n.supersedes),void 0===n.ttlHint||"string"==typeof n.ttlHint||"number"==typeof n.ttlHint&&Number.isFinite(n.ttlHint)||t.push("lifecycle.ttlHint must be an ISO 8601 duration string or a number of milliseconds")):t.push("lifecycle must be an object")),{valid:0===t.length,errors:t}}var Xr={linear:"linear",monotoneX:"monotone-x",monotoneY:"monotone-y",step:"step",stepAfter:"step-after",stepBefore:"step-before",basis:"basis",cardinal:"cardinal",catmullRom:"catmull-rom"};function Zr(e){return{field:e,type:"quantitative"}}function Kr(e){return{field:e,type:"nominal"}}function Jr(e){return"time"===e.xScaleType?"temporal":"quantitative"}function en(e,t){return"string"==typeof t&&(e.axis={title:t}),e}var tn={BarChart:["categoryAccessor","valueAccessor"],StackedBarChart:["categoryAccessor","valueAccessor","stackBy"],GroupedBarChart:["categoryAccessor","valueAccessor","groupBy"],LineChart:["xAccessor","yAccessor"],AreaChart:["xAccessor","yAccessor"],StackedAreaChart:["xAccessor","yAccessor","areaBy"],Scatterplot:["xAccessor","yAccessor"],BubbleChart:["xAccessor","yAccessor","sizeBy"],Heatmap:["xAccessor","yAccessor","valueAccessor"],PieChart:["valueAccessor","categoryAccessor"],DonutChart:["valueAccessor","categoryAccessor"],DotPlot:["categoryAccessor","valueAccessor"],Histogram:["valueAccessor"]},rn={LineChart:["lineBy","colorBy"],AreaChart:["colorBy"],StackedAreaChart:["colorBy"],Scatterplot:["colorBy"],BubbleChart:["colorBy"],Heatmap:["colorBy"],Histogram:["categoryAccessor"]};function nn(e,t={}){const r=[],n={adapter:"semiotic/vega-lite",direction:"export",sourceFormat:"semiotic-chart-config",targetFormat:"vega-lite",..."string"==typeof e.version?{specVersion:e.version}:{}},o=e.props||{},i=function(e,t){const r=[];for(const n of tn[e]||[])"string"==typeof t[n]&&0!==t[n].length||r.push({code:"UNSERIALIZABLE_ACCESSOR",severity:"error",path:"/props/"+n,message:`${e} requires a string ${n} for Vega-Lite export.`});for(const n of rn[e]||[])void 0===t[n]||"string"==typeof t[n]&&0!==t[n].length||r.push({code:"UNSERIALIZABLE_ACCESSOR",severity:"error",path:"/props/"+n,message:`${e} can export ${n} only as a non-empty string field name.`});return r}(e.component,o);if(i.length>0)return{status:"refused",diagnostics:i,lossReport:i.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),provenance:n};const s={};let a;const l=e.component;switch(l){case"BarChart":case"StackedBarChart":case"GroupedBarChart":{a="bar";const e="horizontal"===o.orientation,t=en(Kr(o.categoryAccessor),o.categoryLabel),n=en(Zr(o.valueAccessor),o.valueLabel);e?(s.y=t,s.x=n):(s.x=t,s.y=n),"StackedBarChart"===l&&o.stackBy?s.color=Kr(o.stackBy):"GroupedBarChart"===l&&o.groupBy&&(s.color=Kr(o.groupBy),r.push({code:"GROUPED_BAR_APPROXIMATION",path:"/props/groupBy",message:"GroupedBarChart maps groupBy to color; Vega-Lite needs xOffset for an exact grouped layout."}));break}case"LineChart":a=o.curve||o.showPoints?{type:"line"}:"line","object"==typeof a&&(o.curve&&Xr[o.curve]&&(a.interpolate=Xr[o.curve]),o.showPoints&&(a.point=!0)),s.x=en({field:o.xAccessor,type:Jr(o)},o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),o.lineBy?s.color=Kr(o.lineBy):o.colorBy&&(s.color=Kr(o.colorBy));break;case"AreaChart":case"StackedAreaChart":a=o.curve?{type:"area"}:"area","object"==typeof a&&o.curve&&Xr[o.curve]&&(a.interpolate=Xr[o.curve]),"object"==typeof a&&void 0!==o.areaOpacity&&(a.opacity=o.areaOpacity),s.x=en({field:o.xAccessor,type:Jr(o)},o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),"StackedAreaChart"===l&&o.areaBy&&(s.color=Kr(o.areaBy));break;case"Scatterplot":case"BubbleChart":a="point",s.x=en(Zr(o.xAccessor),o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),o.colorBy&&(s.color=Kr(o.colorBy)),"BubbleChart"===l&&o.sizeBy&&(s.size=Zr(o.sizeBy),Array.isArray(o.sizeRange)&&(s.size.scale={range:o.sizeRange}));break;case"Heatmap":a="rect",s.x=en(Kr(o.xAccessor),o.xLabel),s.y=en(Kr(o.yAccessor),o.yLabel),o.valueAccessor&&(s.color=Zr(o.valueAccessor));break;case"PieChart":case"DonutChart":a="DonutChart"===l?{type:"arc",innerRadius:o.innerRadius??60}:"arc",o.valueAccessor&&(s.theta=Zr(o.valueAccessor)),o.categoryAccessor&&(s.color=Kr(o.categoryAccessor));break;case"DotPlot":{a="tick";const e="horizontal"===o.orientation,t=en(Kr(o.categoryAccessor),o.categoryLabel),r=en(Zr(o.valueAccessor),o.valueLabel);e?(s.y=t,s.x=r):(s.x=t,s.y=r);break}case"Histogram":a="bar",o.valueAccessor&&(s.x=en(Zr(o.valueAccessor),o.valueLabel),s.x.bin=!o.bins||{maxbins:o.bins},s.y={aggregate:"count",type:"quantitative"}),o.categoryAccessor&&(s.color=Kr(o.categoryAccessor));break;default:{const e=`Component "${l}" has no supported Vega-Lite single-view equivalent.`;return{status:"refused",diagnostics:[{code:"UNSUPPORTED_COMPONENT",severity:"error",path:"/component",message:e}],lossReport:[{code:"UNSUPPORTED_COMPONENT",path:"/component",message:e}],provenance:n}}}o.colorScheme&&s.color&&(s.color.scale={...s.color.scale||{},scheme:o.colorScheme});const c={mark:a};return Array.isArray(o.data)&&(c.data={values:o.data}),Object.keys(s).length>0&&(c.encoding=s),"string"==typeof o.title&&(c.title=o.title),"number"==typeof o.width&&(c.width=o.width),"number"==typeof o.height&&(c.height=o.height),r.length>0&&!t.allowLossy?{status:"refused",diagnostics:r.map(({code:e,message:t,path:r})=>({code:e,severity:"error",message:t,path:r})),lossReport:r,provenance:n}:{status:r.length>0?"lossy":"success",spec:c,artifact:c,diagnostics:r.map(({code:e,message:t,path:r})=>({code:e,severity:"warning",message:t,path:r})),lossReport:r,provenance:n}}function on(e,t){return nn(e,t).spec}var sn="annotation-layer";function an(e,t){const r={...ln(e),specVersion:Rr};return void 0!==t.capability&&(r.capability=t.capability),void 0!==t.audience&&(r.audience=t.audience),{...e,usermeta:{...e.usermeta,idid:r}}}function ln(e){const t=e.usermeta;return t?.idid}function cn(e,t){const r={...ln(e),specVersion:Rr,annotations:[...t]},n=t.map(pn).filter(e=>null!==e).map(e=>({...e,usermeta:{idid:{role:sn}}}));if(0===n.length)return{...e,usermeta:{...e.usermeta,idid:r}};const o=Array.isArray(e.layer)?e.layer:[un(e)],{mark:i,encoding:s,data:a,transform:l,usermeta:c,...d}=e;return{...d,usermeta:{...e.usermeta,idid:r},layer:[...o,...n]}}function dn(e){const t=ln(e)?.annotations;return Array.isArray(t)?t:[]}function un(e){const{mark:t,encoding:r,data:n,transform:o}=e,i={};return t&&(i.mark=t),r&&(i.encoding=r),n&&(i.data=n),o&&(i.transform=o),i}function pn(e){const t=e;switch(t.type){case"y-threshold":return{mark:"rule",encoding:{y:{datum:t.value}}};case"x-threshold":return{mark:"rule",encoding:{x:{datum:t.value}}};case"callout":case"label":case"text":return"string"==typeof t.label?{mark:{type:"text",text:t.label}}:null;default:return null}}function yn(e){let t=1/0,r=-1/0;for(const n of e)t>n&&(t=n),n>r&&(r=n);return[t,r]}function hn(e){if(!e)return{type:"",markProps:{}};if("string"==typeof e)return{type:e,markProps:{}};const{type:t,...r}=e;return{type:t,markProps:r}}function fn(e){return"nominal"===e||"ordinal"===e}function mn(e){return"quantitative"===e||"temporal"===e}function bn(e){return e.usermeta?.idid}function gn(e){if(!bn(e)||!Array.isArray(e.layer))return e;const t=e.layer.filter(e=>!function(e){return"annotation-layer"===e.usermeta?.idid?.role}(e));if(1!==t.length)return e;const{layer:r,...n}=e,{usermeta:o,...i}=t[0];return{...n,...i}}var vn={category10:"category10",category20:"category20",category20b:"category20",category20c:"category20",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3",tableau10:"category10",tableau20:"category20"},xn={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",monotone:"monotoneX",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},kn={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function Cn(e,t={}){const r=function(e){const t=e,r=gn(e),n=r,o=[];if(Array.isArray(t.layer)&&r===e&&o.push({code:"UNSUPPORTED_COMPOSITION",severity:"error",path:"/layer",message:"Only the single base view in an IDID-enriched annotation layer can be imported."}),void 0===n.mark)o.push({code:"MISSING_MARK",severity:"error",path:"/mark",message:"A Vega-Lite spec needs a supported single-view mark."});else{const{type:e}=hn(n.mark);new Set(["bar","line","area","point","circle","square","rect","arc","tick"]).has(e)||o.push({code:"UNSUPPORTED_MARK",severity:"error",path:"/mark",message:`Vega-Lite mark "${e||"(missing)"}" has no supported Semiotic translation.`})}Array.isArray(n.transform)&&n.transform.length>0&&o.push({code:"UNSUPPORTED_TRANSFORM",severity:"error",path:"/transform",message:"Vega-Lite transforms must be materialized before strict import."});for(const e of["hconcat","vconcat","concat","facet","repeat","params","selection"])void 0!==n[e]&&o.push({code:"UNSUPPORTED_COMPOSITION",severity:"error",path:"/"+e,message:`Vega-Lite "${e}" is not part of the supported single-view import subset.`});return"string"==typeof n.data?.url&&o.push({code:"UNSUPPORTED_DATA_URL",severity:"error",path:"/data/url",message:"Strict import accepts inline data.values only; load URL data before importing."}),o}(e),n=r.filter(e=>"error"===e.severity),o=bn(e),i={adapter:"semiotic/vega-lite",direction:"import",sourceFormat:"vega-lite",targetFormat:"semiotic-chart-config",..."string"==typeof o?.specVersion?{specVersion:o.specVersion}:{},...o?{metadata:{idid:o}}:{}};if(n.length>0&&"lossy"!==t.mode)return{status:"refused",diagnostics:r,lossReport:n.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),provenance:i};const s=function(e){e=gn(e);const t=[],{type:r,markProps:n}=hn(e.mark),o=e.encoding||{},i=o.x,s=o.y,a=o.color,l=o.size,c=o.theta,d=o.opacity;let u;e.data?.values?u=e.data.values:e.data?.url&&t.push("data.url is not supported — only inline data.values can be translated. Provide data manually."),e.transform&&e.transform.length>0&&t.push("Vega-Lite transforms are not supported. Pre-transform your data before passing to fromVegaLite()."),e.layer&&t.push('Layered specs ("layer") are not supported. Only single-mark specs can be translated.'),(e.hconcat||e.vconcat||e.concat)&&t.push('Concatenated views ("hconcat"/"vconcat"/"concat") are not supported. Translate each sub-spec individually.'),(e.facet||o.facet||o.row||o.column)&&t.push("Faceted views are not supported. Use Semiotic's LinkedCharts or render multiple charts manually."),e.repeat&&t.push('Repeated views ("repeat") are not supported. Translate each field combination individually.'),(e.params||e.selection)&&t.push("Selections/params are not supported. Use Semiotic's LinkedCharts and selection props for interactivity.");const p={};e.width&&(p.width=e.width),e.height&&(p.height=e.height);const y=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if(y&&(p.title=y),a?.field&&(p.colorBy=a.field,a.scale?.scheme)){const e=vn[a.scale.scheme];e&&(p.colorScheme=e)}void 0!==d?.value&&(p.pointOpacity=d.value);const h=i?.aggregate,f=s?.aggregate;if(u&&(h||f)){const e=f?s:i,t=f?i:s,r=kn[e.aggregate];if(r&&t?.field&&e.field)u=function(e,t){const{groupBy:r,value:n,agg:o="sum"}=t,i=new Map;for(const t of e){const e=t[r]+"";i.has(e)||i.set(e,[]),i.get(e).push(Number(t[n]))}const s=[];for(const[e,t]of i){let n;switch(o){case"count":n=t.length;break;case"mean":n=t.reduce((e,t)=>e+t,0)/t.length;break;case"min":n=yn(t)[0];break;case"max":n=yn(t)[1];break;default:n=t.reduce((e,t)=>e+t,0)}s.push({[r]:e,value:n})}return s}(u,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&t?.field&&u){const e=new Map;for(const r of u){const n=r[t.field]+"";e.set(n,(e.get(n)||0)+1)}u=Array.from(e,([e,r])=>({[t.field]:e,value:r}))}}if(i?.bin||s?.bin){const e="Histogram";u&&(p.data=u),i?.bin?(p.valueAccessor=i.field,s?.field&&(p.categoryAccessor=s.field),i.axis?.title&&(p.valueLabel=i.axis.title)):s?.bin&&(p.valueAccessor=s.field,i?.field&&(p.categoryAccessor=i.field),s.axis?.title&&(p.valueLabel=s.axis.title));const r=i?.bin||s?.bin,n="object"==typeof r?r.maxbins:void 0;return n&&(p.bins=n),Sn(e,p,t)}let m;switch(r){case"bar":m=function(e,t,r,n,o,i,s){let a;return r?.field&&!1!==e?.stack&&!1!==t?.stack&&null!==e?.stack&&null!==t?.stack?(a="StackedBarChart",n.stackBy=r.field):a="BarChart",fn(e?.type)&&mn(t?.type)?(n.categoryAccessor=e.field,n.valueAccessor=s?"value":t.field,e?.axis?.title&&(n.categoryLabel=e.axis.title),t?.axis?.title&&(n.valueLabel=t.axis.title)):mn(e?.type)&&fn(t?.type)?(n.categoryAccessor=t.field,n.valueAccessor=i?"value":e.field,n.orientation="horizontal",t?.axis?.title&&(n.categoryLabel=t.axis.title),e?.axis?.title&&(n.valueLabel=e.axis.title)):(e?.field&&(n.categoryAccessor=e.field),t?.field&&(n.valueAccessor=s?"value":t.field),e?.axis?.title&&(n.categoryLabel=e.axis.title),t?.axis?.title&&(n.valueLabel=t.axis.title)),o&&(n.data=o),a}(i,s,a,p,u,h,f);break;case"line":if(m="LineChart",wn(i,s,p,h,f),a?.field&&(p.lineBy=a.field),n.interpolate){const e=xn[n.interpolate];e&&(p.curve=e)}!0===n.point&&(p.showPoints=!0),u&&(p.data=u);break;case"area":if(a?.field?(m="StackedAreaChart",p.areaBy=a.field):m="AreaChart",wn(i,s,p,h,f),n.interpolate){const e=xn[n.interpolate];e&&(p.curve=e)}void 0!==n.opacity&&(p.areaOpacity=n.opacity),u&&(p.data=u);break;case"point":case"circle":case"square":l?.field?(m="BubbleChart",p.sizeBy=l.field,l.scale?.range&&(p.sizeRange=l.scale.range)):m="Scatterplot",wn(i,s,p,h,f),u&&(p.data=u);break;case"rect":m="Heatmap",i?.field&&(p.xAccessor=i.field),s?.field&&(p.yAccessor=s.field),a?.field&&(p.valueAccessor=a.field,delete p.colorBy),i?.axis?.title&&(p.xLabel=i.axis.title),s?.axis?.title&&(p.yLabel=s.axis.title),u&&(p.data=u);break;case"arc":n.innerRadius&&n.innerRadius>0?(m="DonutChart",p.innerRadius=n.innerRadius):m="PieChart",c?.field?p.valueAccessor=c.field:s?.field&&(p.valueAccessor=f?"value":s.field),a?.field&&(p.categoryAccessor=a.field),i?.field&&!c?.field&&(p.categoryAccessor=i.field),u&&(p.data=u);break;case"tick":m="DotPlot",fn(i?.type)?(p.categoryAccessor=i.field,s?.field&&(p.valueAccessor=f?"value":s.field),i?.axis?.title&&(p.categoryLabel=i.axis.title),s?.axis?.title&&(p.valueLabel=s.axis.title)):fn(s?.type)?(p.categoryAccessor=s.field,i?.field&&(p.valueAccessor=h?"value":i.field),p.orientation="horizontal",s?.axis?.title&&(p.categoryLabel=s.axis.title),i?.axis?.title&&(p.valueLabel=i.axis.title)):(i?.field&&(p.categoryAccessor=i.field),s?.field&&(p.valueAccessor=f?"value":s.field)),u&&(p.data=u);break;default:t.push(`Unsupported mark type "${r}". Defaulting to Scatterplot.`),m="Scatterplot",wn(i,s,p,h,f),u&&(p.data=u)}return Sn(m,p,t)}(e),a=(s.warnings||[]).map(e=>({code:"LEGACY_TRANSLATION_WARNING",severity:"warning",message:e})),l=n.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),c="lossy"===t.mode?r.map(e=>"error"===e.severity?{...e,severity:"warning"}:e):r;return{status:l.length>0?"lossy":"success",config:s,diagnostics:[...c,...a],lossReport:l,provenance:i}}function wn(e,t,r,n,o){e?.field&&(r.xAccessor=n?"value":e.field),t?.field&&(r.yAccessor=o?"value":t.field),e?.axis?.title&&(r.xLabel=e.axis.title),t?.axis?.title&&(r.yLabel=t.axis.title)}function Sn(e,t,r){const n={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){n.warnings=r;for(const e of r)console.warn("[semiotic/fromVegaLite] "+e)}return n}var An={category10:"category10",tableau10:"category10",observable10:"category10",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3"},jn={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom",natural:"natural"},$n=new Set(["frame","gridx","gridy","gridfx","gridfy","axisx","axisy","axisfx","axisfy","rulex","ruley","tip","crosshair","pointer","hexgrid","text"]);function Mn(e){return"string"==typeof e?e:void 0}function Bn(e,t){if(!Array.isArray(e)||!t)return!1;for(const r of e){const e=r?.[t];if(null!=e)return!("number"==typeof e||e instanceof Date)&&"string"==typeof e&&Number.isNaN(Date.parse(e))}return!1}function Wn(e,t,r){(function(e){return"function"==typeof e})(t)&&e.push(`The "${r}" channel is a function accessor, which can't be serialized to a config. Pass a field name (string) instead, or pre-derive the field on your data.`)}function Pn(e){const t=[];(e.facet||e.fx||e.fy)&&t.push('Faceted plots ("facet"/"fx"/"fy") are not supported. Use Semiotic\'s LinkedCharts or render multiple charts.');const r=(Array.isArray(e.marks)?e.marks:[]).filter(e=>e&&!$n.has(e.type.toLowerCase()));if(0===r.length)return t.push("No translatable data mark found in the Plot spec. Defaulting to an empty Scatterplot."),Fn("Scatterplot",{},t);r.length>1&&t.push(`Multiple data marks (${r.map(e=>e.type).join(", ")}); only the first is translated. Layered multi-mark plots aren't supported.`);const n=r[0],o=n.options||{},i=n.data||e.data,s={};"number"==typeof e.width&&(s.width=e.width),"number"==typeof e.height&&(s.height=e.height),"string"==typeof e.title&&(s.title=e.title),e.x?.label&&(s.xLabel=e.x.label),e.y?.label&&(s.yLabel=e.y.label);const a=e.color?.scheme?An[e.color.scheme]:void 0;Wn(t,o.x,"x"),Wn(t,o.y,"y"),Wn(t,o.fill,"fill"),Wn(t,o.stroke,"stroke"),Wn(t,o.r,"r");const l=Mn(o.x),c=Mn(o.y),d=Mn(o.fill),u=Mn(o.stroke),p=d||u,y=n.type.toLowerCase();let h;switch(y){case"line":case"liney":case"linex":{h="LineChart",l&&(s.xAccessor=l),c?s.yAccessor=c:t.push(n.type+" has no explicit y field; provide options.y."),Bn(i,l)&&t.push(`The x field "${l}" looks categorical; LineChart uses a continuous x scale, so a categorical x won't position (the line won't draw). Use a numeric/time x, or a bar chart for categories.`),"liney"!==y||l||t.push("lineY without an explicit x plots against the row index, which Semiotic doesn't infer. Provide options.x.");const e=u||d;e&&(s.lineBy=e),Rn(o,s),Tn(s,i,{colorScheme:a});break}case"bary":case"bar":h=p?"StackedBarChart":"BarChart",l&&(s.categoryAccessor=l),c&&(s.valueAccessor=c),p&&(s.stackBy=p),Tn(s,i,{colorScheme:a});break;case"barx":h=p?"StackedBarChart":"BarChart",s.orientation="horizontal",c&&(s.categoryAccessor=c),l&&(s.valueAccessor=l),p&&(s.stackBy=p),Tn(s,i,{colorScheme:a});break;case"dot":case"doty":case"dotx":case"circle":{const e=o.r;"string"==typeof e?(h="BubbleChart",s.sizeBy=e):(h="Scatterplot","number"==typeof e&&(s.pointRadius=e)),l&&(s.xAccessor=l),c&&(s.yAccessor=c),Tn(s,i,{colorBy:p,colorScheme:a});break}case"area":case"areay":case"areax":h=d&&d!==c?"StackedAreaChart":"AreaChart",l&&(s.xAccessor=l),c&&(s.yAccessor=c),Bn(i,l)&&t.push(`The x field "${l}" looks categorical; ${h} uses a continuous x scale, so a categorical x won't position. Use a numeric/time x.`),"StackedAreaChart"===h&&d&&(s.areaBy=d),Rn(o,s),Tn(s,i,{colorBy:"StackedAreaChart"===h?void 0:p,colorScheme:a});break;case"recty":case"rectx":case"rect":{h="Histogram";const e="rectx"===y?l:c||l;e&&(s.valueAccessor=e),p&&(s.categoryAccessor=p),Tn(s,i,{colorScheme:a});break}case"cell":case"celly":case"cellx":h="Heatmap",l&&(s.xAccessor=l),c&&(s.yAccessor=c),p&&(s.valueAccessor=p),Tn(s,i);break;case"tick":case"tickx":case"ticky":h="DotPlot","tickx"===y?(c&&(s.categoryAccessor=c),l&&(s.valueAccessor=l),s.orientation="horizontal"):(l&&(s.categoryAccessor=l),c&&(s.valueAccessor=c)),Tn(s,i,{colorBy:p,colorScheme:a});break;default:t.push(`Plot mark "${n.type}" has no faithful Semiotic equivalent in this adapter. Defaulting to a Scatterplot of x/y; verify the result or file for support.`),h="Scatterplot",l&&(s.xAccessor=l),c&&(s.yAccessor=c),Tn(s,i,{colorBy:p,colorScheme:a})}if(In.has(h)){const t=Ln(e.x?.type),r=Ln(e.y?.type);t&&(s.xScaleType=t),r&&(s.yScaleType=r)}return Fn(h,s,t)}var In=new Set(["LineChart","AreaChart","StackedAreaChart","Scatterplot","BubbleChart"]);function Ln(e){return"time"===e||"utc"===e?"time":"log"===e?"log":void 0}function Rn(e,t){e.curve&&jn[e.curve]&&(t.curve=jn[e.curve])}function Tn(e,t,r={}){Array.isArray(t)&&(e.data=t),r.colorBy&&(e.colorBy=r.colorBy),r.colorScheme&&(e.colorScheme=r.colorScheme)}function Fn(e,t,r){const n={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){n.warnings=r;for(const e of r)console.warn("[semiotic/fromObservablePlot] "+e)}return n}var En=new Set(["sequencediagram","classdiagram","statediagram","statediagram-v2","erdiagram","gantt","pie","journey","gitgraph","mindmap","timeline","quadrantchart","requirementdiagram","c4context","sankey-beta","block-beta","xychart-beta"]),Nn=new Set(["TD","TB","BT","LR","RL"]),On=/(<-->|-\.->|-\.-|-->|--x|--o|---|==>|===)/,Dn=[["((","))","circle"],["([","])","stadium"],["[[","]]","subroutine"],["[(",")]","cylinder"],["{{","}}","hexagon"],["[","]","rect"],["(",")","round"],["{","}","diamond"],[">","]","flag"]];function zn(e){const t=e.trim();return t.length>=2&&('"'===t[0]&&t.endsWith('"')||"'"===t[0]&&t.endsWith("'"))?t.slice(1,-1):t}function qn(e){const t=e.trim();if(!t)return null;const r=t.match(/^([A-Za-z0-9_][\w-]*)/);if(!r)return null;const n=r[1],o=t.slice(n.length).trim();if(!o)return{id:n};for(const[e,t,r]of Dn)if(o.startsWith(e)&&o.endsWith(t)&&o.length>=e.length+t.length)return{id:n,label:zn(o.slice(e.length,o.length-t.length)),shape:r};return{id:n}}function _n(e){const t=[],r=()=>({kind:"flowchart",direction:"TD",nodes:[],edges:[],...t.length?{warnings:t}:{}});if("string"!=typeof e||!e.trim())return t.push("Empty Mermaid input."),r();const n=e.split("\n").map(e=>e.replace(/%%.*$/,"").trim()).filter(e=>e.length>0);if(0===n.length)return t.push("No content after stripping comments."),r();const o=n[0],i=o.split(/\s+/)[0].toLowerCase();if("graph"!==i&&"flowchart"!==i&&(En.has(i)?t.push(`Mermaid "${o.split(/\s+/)[0]}" diagrams aren't supported — only graph/flowchart compile to a Semiotic graph. Other diagram types are declined rather than mistranslated.`):t.push(`Expected a "graph" or "flowchart" header; got "${o}". Treating remaining lines as flowchart edges.`),En.has(i)))return r();let s="TD";const a=o.split(/\s+/)[1]?.toUpperCase();a&&Nn.has(a)&&(s=a);const l="graph"===i||"flowchart"===i?1:0,c=new Map,d=[];let u=0;const p=e=>{const t=c.get(e.id);t?e.label&&t.label===t.id&&(t.label=e.label,e.shape&&(t.shape=e.shape)):c.set(e.id,{id:e.id,label:e.label??e.id,shape:e.shape??"rect",layer:0,row:u++})},y=e=>e.replace(/--\s+([^->|]+?)\s+-->/g,"--\x3e|$1|").replace(/-\.\s+([^->|]+?)\s+\.->/g,"-.->|$1|").replace(/==\s+([^=>|]+?)\s+==>/g,"==>|$1|");for(let e=l;n.length>e;e++){const r=y(n[e]);if(/^(subgraph|end|classDef|class|style|click|linkStyle|direction)\b/.test(r)){/^subgraph\b/.test(r)&&t.push("`subgraph` grouping is flattened; nodes are kept, the grouping is dropped.");continue}if(!On.test(r)){const e=qn(r);e&&p(e);continue}const o=r.split(On);let i=null;for(let e=0;o.length>e;e+=2){let r,n=o[e].trim();const s=n.match(/^\|([^|]*)\|\s*(.*)$/);s&&(r=zn(s[1]),n=s[2].trim()),n.includes("&")&&(t.push('Multiple nodes joined with "&" — only the first is linked in this alpha.'),n=n.split("&")[0].trim());const a=qn(n);a?(p(a),i&&d.push({source:i.id,target:a.id,...r?{label:r}:{}}),i=a):i=null}}return 0===c.size?(t.push("No nodes found."),r()):(function(e,t,r){const n=new Map,o=new Map;for(const t of e.keys())n.set(t,[]),o.set(t,0);for(const r of t)r.source!==r.target&&e.has(r.source)&&e.has(r.target)&&(n.get(r.source).push(r.target),o.set(r.target,(o.get(r.target)||0)+1));const i=[];for(const[e,t]of o)0===t&&i.push(e);let s=0;for(;i.length>0;){const t=i.shift();s++;const r=e.get(t).layer;for(const s of n.get(t)){const t=e.get(s);r+1>t.layer&&(t.layer=r+1);const n=(o.get(s)||0)-1;o.set(s,n),0===n&&i.push(s)}}e.size>s&&r.push("Graph contains a cycle; layering is best-effort (not a strict DAG).");const a=new Map;for(const t of e.values()){const e=a.get(t.layer)||[];e.push(t),a.set(t.layer,e)}for(const e of a.values())e.sort((e,t)=>e.row-t.row),e.forEach((e,t)=>{e.row=t})}(c,d,t),{kind:"flowchart",direction:s,nodes:[...c.values()],edges:d,...t.length?{warnings:t}:{}})}var Hn=/^\d{4}-\d{1,2}$/;function Gn(e,t){if(!e||!t)return{data:e,failed:!1};let r=!1,n=!1;const o=e.map(e=>{const o=e[t];if("string"!=typeof o)return e;const i=function(e){const t=e.trim();if(!t||!Number.isNaN(Number(t)))return NaN;const r=Hn.test(t)?t+"-01":t;if(r===t&&10>t.length)return NaN;const n=Date.parse(r);return Number.isFinite(n)?n:NaN}(o);return r=!0,Number.isFinite(i)?{...e,[t]:i}:(n=!0,{...e,[t]:NaN})});return{data:r?o:e,failed:n}}var Vn={linear:"linear",monotone:"monotoneX","monotone-x":"monotoneX","monotone-y":"monotoneY",step:"step","step-before":"stepBefore","step-after":"stepAfter",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},Un={category10:"category10",tableau10:"category10",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3"},Yn=new Set(["blues","reds","greens","viridis","custom"]),Qn={theta:"size",value:"size"},Xn={bar:["x","y","color"],groupedBar:["x","y","group","color"],stackedBar:["x","y","color","group"],line:["x","y","color","detail","strokeDash","order"],area:["x","y","color"],scatter:["x","y","color","size","shape"],heatmap:["x","y","color"],pie:["size","color","angle","value","theta","y"],histogram:["x","y","color"],boxplot:["x","y","color"]};function Zn(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Kn(e,t){const r=e[t]?.field;return"string"==typeof r&&r.length>0?r:void 0}function Jn(e){return"nominal"===e?.type||"ordinal"===e?.type}function eo(e){return"quantitative"===e?.type||"temporal"===e?.type}function to(e,t,r){if("temporal"===e?.type)return!0;const n=function(e,t){if(!e||!t)return;const r=t[e];return"string"==typeof r?r:"string"==typeof r?.semanticType?r.semanticType:void 0}(t,r);return!!n&&/date|time|year|month|quarter|week/i.test(n)}function ro(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function no(e){return"string"==typeof e&&e.length>0?e:void 0}function oo(e){return"boolean"==typeof e?e:void 0}function io(e,t,r){r.push(`Temporal ${t} field "${e||"unknown"}" contains unparseable date strings; those rows will be skipped by the time scale. Prefer Date objects, ISO date strings, or epoch timestamps.`)}function so(e,t,r){if(!t)return;const n=t.toLowerCase(),o=Un[n];o?e.colorScheme=o:r.push(`Flint color scheme "${t}" is not mapped to a Semiotic categorical colorScheme.`)}function ao(e,t,r,n){r&&("xy"===n?(t.x&&r[t.x]&&(e.xLabel=r[t.x]),t.y&&r[t.y]&&(e.yLabel=r[t.y])):(t.category&&r[t.category]&&(e.categoryLabel=r[t.category]),t.value&&r[t.value]&&(e.valueLabel=r[t.value])))}function lo(e){const t=e.x,r=e.y,n=Kn(e,"x"),o=Kn(e,"y");return Jn(t)&&!Jn(r)?{category:n,value:o,valueEncoding:r}:Jn(r)&&!Jn(t)||eo(t)&&!eo(r)&&o?{category:o,value:n,valueEncoding:t,orientation:"horizontal"}:{category:n,value:o,valueEncoding:r}}function co(e,t,r,n,o){const i=function(e){return"count"===e||"sum"===e||"mean"===e?e:"average"===e?"mean":void 0}(n);if(!i)return{data:e,valueAccessor:r};if(!e)return o.push(`aggregate: "${n}" requires inline data.values; leaving the requested value accessor unchanged.`),{data:e,valueAccessor:r||"value"};if("count"!==i&&!r)return o.push(`aggregate: "${n}" requires an encoded value field; leaving data unaggregated.`),{data:e,valueAccessor:r};const s=new Map,a=t.filter(e=>!!e);for(const t of e){const e={};for(const r of a)e[r]=t[r];const n=JSON.stringify(e);let o=s.get(n);if(o||(o={keys:e,values:[],count:0},s.set(n,o)),o.count+=1,r){const e=Number(t[r]);Number.isFinite(e)&&o.values.push(e)}}const l=[];for(const e of s.values()){let t=e.count;"sum"===i?t=e.values.reduce((e,t)=>e+t,0):"mean"===i&&(t=e.values.length>0?e.values.reduce((e,t)=>e+t,0)/e.values.length:0),l.push({...e.keys,value:t})}return{data:l,valueAccessor:"value"}}function uo(e,t){t&&(e.data=t)}function po(e,t,r){const n=no(t?.interpolate);if(!n)return;const o=Vn[n];o?e.curve=o:r.push(`Flint interpolate "${n}" is not mapped to a Semiotic curve.`)}function yo(e){const t=[],r=e.chart_spec,n=r?.chartType,o=function(e){const t=((e||"")+"").toLowerCase().replace(/[^a-z0-9]/g,"");return"barchart"===t||"bar"===t?"bar":"groupedbarchart"===t||"groupedbar"===t||"clusteredbar"===t?"groupedBar":"stackedbarchart"===t||"stackedbar"===t?"stackedBar":"linechart"===t||"line"===t?"line":"areachart"===t||"area"===t||"streamgraph"===t?"area":"scatterplot"===t||"scatter"===t||"scatterchart"===t||"pointchart"===t?"scatter":"heatmap"===t||"heatmapchart"===t?"heatmap":"piechart"===t||"pie"===t||"donutchart"===t||"donut"===t?"pie":"histogram"===t||"histogramchart"===t?"histogram":"boxplot"===t||"boxplotchart"===t||"boxandwhisker"===t||"boxandwhiskerplot"===t?"boxplot":void 0}(n),i=r?.chartProperties,s=Array.isArray(e.data?.values)?e.data.values:void 0,a="string"==typeof e.data?.url?e.data.url:void 0,l=function(e,t){const r={};if(!e||"object"!=typeof e)return r;for(const[n,o]of Object.entries(e)){const e=Qn[n]||n;let i=o;if(Array.isArray(i)){if(0===i.length)continue;t.push(`Static-series array encoding on "${n}" is not supported; using the first field and preserving the full encoding in flint.unmappedEncodings.`),i=i[0]}"string"==typeof i?r[e]={field:i}:Zn(i)?r[e]=i:null!=i&&t.push(`Encoding "${n}" is not an object, string, or array and was ignored.`)}return r}(r?.encodings,t),c={};a&&t.push("data.url is preserved in flint.dataUrl but not fetched; resolve it to data.values before rendering."),o||t.push(`Unsupported Flint chartType "${n}". Defaulting to Scatterplot.`),function(e,t,r,n){const o=t||r;if(!o)return;let i=o.width,s=o.height;t&&r&&(t.width>r.width&&(i=r.width,n.push("chart_spec.canvasSize.width is smaller than baseSize.width; clamped Semiotic width to the canvas ceiling.")),t.height>r.height&&(s=r.height,n.push("chart_spec.canvasSize.height is smaller than baseSize.height; clamped Semiotic height to the canvas ceiling."))),Number.isFinite(i)&&(e.width=i),Number.isFinite(s)&&(e.height=s)}(c,r?.baseSize,r?.canvasSize,t),function(e,t){const r=no(t?.title);r&&(e.title=r)}(c,i);const d=o||"scatter";let u;switch(d){case"bar":case"groupedBar":case"stackedBar":u=function(e,t,r,n,o,i,s){const a={...n},l=lo(t),c="groupedBar"===e?Kn(t,"group")||Kn(t,"color"):Kn(t,"color")||Kn(t,"group"),d=co(r,[l.category,c],l.value,l.valueEncoding?.aggregate,s);uo(a,d.data),l.category&&(a.categoryAccessor=l.category),d.valueAccessor&&(a.valueAccessor=d.valueAccessor),l.orientation&&(a.orientation=l.orientation),ao(a,{category:l.category,value:l.value},i,"ordinal");const u=ro(o?.cornerRadius);void 0!==u&&(a.roundedTop=u);const p=no(o?.stackMode);if("normalize"===p?a.normalize=!0:p&&"stacked"!==p&&s.push(`Flint stackMode "${p}" is not supported by Semiotic ${e}; leaving default stacking behavior.`),so(a,t.color?.scheme,s),"groupedBar"===e)return c&&(a.groupBy=c,a.colorBy=c,a.showLegend=!0),{component:"GroupedBarChart",props:a,supportedProperties:["cornerRadius"]};if("stackedBar"===e)return c?(a.stackBy=c,a.colorBy=c,a.showLegend=!0,{component:"StackedBarChart",props:a,supportedProperties:["cornerRadius","stackMode"]}):(s.push("Stacked Bar Chart has no color/group series field; emitted a BarChart instead."),{component:"BarChart",props:a,supportedProperties:["cornerRadius","stackMode"]});const y=Kn(t,"color");return y&&(a.colorBy=y),{component:"BarChart",props:a,supportedProperties:["cornerRadius"]}}(d,l,s,c,i,e.field_display_names,t);break;case"line":case"area":case"scatter":u=function(e,t,r,n,o,i,s,a){const l={...n},c=Kn(t,"x"),d=Kn(t,"y"),u=Kn(t,"color"),p=Kn(t,"detail"),y=Kn(t,"size"),h=Kn(t,"shape"),f=co(r,[c,u||p],d,t.y?.aggregate,a),m=to(t.x,c,i),b=to(t.y,d,i);let g=f.data;if(m){const e=Gn(g,c);g=e.data,e.failed&&io(c,"x",a)}if(b){const e=Gn(g,f.valueAccessor);g=e.data,e.failed&&io(f.valueAccessor,"y",a)}if(uo(l,g),c&&(l.xAccessor=c),f.valueAccessor&&(l.yAccessor=f.valueAccessor),m&&(l.xScaleType="time"),b&&(l.yScaleType="time"),ao(l,{x:c,y:d},s,"xy"),"line"===e){(u||p)&&(l.lineBy=u||p,l.colorBy=u||p),po(l,o,a);const e=oo(o?.showPoints);return void 0!==e&&(l.showPoints=e),{component:"LineChart",props:l,supportedProperties:["interpolate","showPoints"]}}if("area"===e){po(l,o,a);const e=ro(o?.opacity);void 0!==e&&(l.areaOpacity=e);const t=no(o?.stackMode);return"normalize"===t?l.normalize=!0:t&&"stacked"!==t&&a.push(`Flint area stackMode "${t}" is not supported by Semiotic; leaving default stacking behavior.`),u?(l.areaBy=u,l.colorBy=u,{component:"StackedAreaChart",props:l,supportedProperties:["interpolate","opacity","stackMode"]}):{component:"AreaChart",props:l,supportedProperties:["interpolate","opacity"]}}if(u&&(l.colorBy=u),y){l.sizeBy=y,h&&a.push("Flint shape encoding is not mapped for BubbleChart; Semiotic only maps shape onto Scatterplot in this adapter.");const e=ro(o?.opacity);return void 0!==e&&(l.bubbleOpacity=e),so(l,t.color?.scheme,a),{component:"BubbleChart",props:l,supportedProperties:["opacity"]}}h&&(l.symbolBy=h);const v=ro(o?.opacity);return void 0!==v&&(l.pointOpacity=v),so(l,t.color?.scheme,a),{component:"Scatterplot",props:l,supportedProperties:["opacity"]}}(d,l,s,c,i,e.semantic_types,e.field_display_names,t);break;case"heatmap":u=function(e,t,r,n,o,i){const s={...r},a=Kn(e,"x"),l=Kn(e,"y"),c=Kn(e,"color");uo(s,t),a&&(s.xAccessor=a),l&&(s.yAccessor=l),c&&(s.valueAccessor=c);const d=oo(n?.showTextLabels);return void 0!==d&&(s.showValues=d),ao(s,{x:a,y:l},o,"xy"),function(e,t,r){if(!t)return;const n=t.toLowerCase();Yn.has(n)?e.colorScheme=n:r.push(`Flint heatmap color scheme "${t}" is not available in Semiotic's Heatmap colorScheme enum.`)}(s,e.color?.scheme||no(n?.colorScheme),i),{component:"Heatmap",props:s,supportedProperties:["showTextLabels","colorScheme"]}}(l,s,c,i,e.field_display_names,t);break;case"pie":u=function(e,t,r,n,o,i){const s={...n},a=Kn(t,"color"),l=co(r,[a],Kn(t,"size")||Kn(t,"angle")||Kn(t,"y"),t.size?.aggregate||t.angle?.aggregate||t.y?.aggregate,i);uo(s,l.data),a&&(s.categoryAccessor=a),l.valueAccessor&&(s.valueAccessor=l.valueAccessor);const c=ro(o?.innerRadius),d=/donut/i.test(e)||void 0!==c&&c>0;d&&void 0!==c&&(s.innerRadius=c);const u=ro(o?.cornerRadius);return void 0!==u&&(s.cornerRadius=u),null!=o?.sortSlices&&i.push("Flint sortSlices is not mapped; preserve or sort slice order before calling unstable_fromFlintChart()."),so(s,t.color?.scheme,i),{component:d?"DonutChart":"PieChart",props:s,supportedProperties:["innerRadius","cornerRadius","sortSlices"]}}(n,l,s,c,i,t);break;case"histogram":u=function(e,t,r,n){const o={...r},i=Kn(e,"x")||Kn(e,"y"),s=Kn(e,"color");uo(o,t),i&&(o.valueAccessor=i),s&&(o.categoryAccessor=s,o.colorBy=s);const a=ro(n?.binCount);return void 0!==a&&a>0&&(o.bins=a),{component:"Histogram",props:o,supportedProperties:["binCount"]}}(l,s,c,i);break;case"boxplot":u=function(e,t,r,n,o,i){const s={...r},a=lo(e);uo(s,t),a.category&&(s.categoryAccessor=a.category),a.value&&(s.valueAccessor=a.value),a.orientation&&(s.orientation=a.orientation);const l=Kn(e,"color");l&&(s.colorBy=l);const c=oo(n?.showOutliers);void 0!==c&&(s.showOutliers=c);const d=no(n?.whiskerMethod);return d&&"iqr"!==d&&i.push(`Flint whiskerMethod "${d}" is not mapped; Semiotic BoxPlot keeps its default whisker calculation.`),ao(s,{category:a.category,value:a.value},o,"ordinal"),{component:"BoxPlot",props:s,supportedProperties:["showOutliers","whiskerMethod"]}}(l,s,c,i,e.field_display_names,t)}!function(e,t,r,n){if(!t)return;const o=new Set([...r,"title"]),i=Object.keys(t).filter(e=>!o.has(e));i.length>0&&n.push(`Flint chartProperties not mapped for ${e}: ${i.join(", ")}.`)}(d,i,u.supportedProperties,t);const p=function(e,t,r){if(!t)return;const n=new Set(Xn[e]),o={};for(const[e,r]of Object.entries(t))n.has(Qn[e]||e)&&!Array.isArray(r)||(o[e]=r);if(0===Object.keys(o).length)return;const i=Object.keys(o),s=i.filter(e=>"column"===e||"row"===e);s.length>0&&r.push(`Flint facet channel(s) ${s.join(", ")} are not supported by this adapter; render multiple Semiotic charts instead.`);const a=i.filter(e=>"column"!==e&&"row"!==e&&!n.has(Qn[e]||e));return a.length>0&&r.push(`Flint encoding channel(s) not mapped for ${e}: ${a.join(", ")}.`),o}(d,r?.encodings,t),y={component:u.component,props:u.props,version:"1",createdAt:(new Date).toISOString(),flint:{chartType:n||"",...e.semantic_types?{semanticTypes:e.semantic_types}:{},...e.field_display_names?{fieldDisplayNames:e.field_display_names}:{},...i?{chartProperties:i}:{},...r?.baseSize?{baseSize:r.baseSize}:{},...r?.canvasSize?{canvasSize:r.canvasSize}:{},...a?{dataUrl:a}:{},...e.options?{options:e.options}:{},...p?{unmappedEncodings:p}:{}}};if(t.length>0){y.warnings=t;for(const e of t)console.warn("[semiotic/fromFlintChart] "+e)}return y}var ho=/^var\(\s*(--[^,)]+)(?:\s*,\s*([^)]+))?\s*\)$/,fo=new WeakMap,mo=0,bo=!1,go=null,vo=null;function xo(e,t){if(!t)return t;const r=ho.exec(t);if(!r)return t;const n=e.canvas;if(!n)return r[2]?.trim()||t;!function(){if(bo)return;if("undefined"==typeof window||"undefined"==typeof document)return;bo=!0;const e=()=>{mo++};if("undefined"!=typeof MutationObserver&&document.documentElement&&new MutationObserver(e).observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme","data-semiotic-theme"]}),"function"==typeof window.matchMedia)try{go=window.matchMedia("(prefers-color-scheme: dark)"),vo=e,"function"==typeof go.addEventListener?go.addEventListener("change",vo):"function"==typeof go.addListener&&go.addListener(vo)}catch{}}();let o=fo.get(n);o&&o.version===mo||(o={version:mo,map:new Map},fo.set(n,o));const i=o.map.get(t);if(void 0!==i)return i;const s=getComputedStyle(n).getPropertyValue(r[1]).trim()||r[2]?.trim()||t;return o.map.set(t,s),s}var ko={annotationBackground:"rgba(248, 250, 252, 0.94)",annotationStroke:"#334155",annotationText:"#0f172a",background:"#f8fafc",border:"#334155",closedWindowFill:"rgba(220, 38, 38, 0.08)",closedWindowStroke:"rgba(220, 38, 38, 0.55)",danger:"#dc2626",focus:"#f97316",grid:"#cbd5e1",gutterFill:"rgba(71, 85, 105, 0.14)",lateFill:"#f97316",openWindowFill:"rgba(14, 165, 233, 0.07)",openWindowStroke:"rgba(14, 165, 233, 0.3)",primary:"#0ea5e9",selectedFill:"#f97316",selectedStroke:"#7c2d12",success:"#22c55e",text:"#0f172a",textSecondary:"#475569",warning:"#f97316"},Co={background:{names:["--semiotic-bg","--surface-1","--surface-0"],fallback:ko.background},border:{names:["--semiotic-border","--surface-3"],fallback:ko.border},danger:{names:["--semiotic-danger","--viz-4"],fallback:ko.danger},focus:{names:["--semiotic-focus","--accent","--viz-9"],fallback:ko.focus},grid:{names:["--semiotic-grid","--surface-3"],fallback:ko.grid},primary:{names:["--semiotic-primary","--accent","--viz-5"],fallback:ko.primary},success:{names:["--semiotic-success","--viz-2"],fallback:ko.success},text:{names:["--semiotic-text","--text-primary"],fallback:ko.text},textSecondary:{names:["--semiotic-text-secondary","--text-secondary"],fallback:ko.textSecondary},warning:{names:["--semiotic-warning","--viz-9","--viz-3"],fallback:ko.warning}};function wo(e,t){const r=e.canvas;if("function"!=typeof getComputedStyle||!r)return t.fallback;const n=getComputedStyle(r);for(const r of t.names){const t=n.getPropertyValue(r).trim();if(t)return xo(e,t)??t}return t.fallback}function So(e,t){const r=Math.max(0,Math.min(1,t)),n=e.trim(),o=n.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i);if(o){const[,e,t,n]=o;return So(`#${e}${e}${t}${t}${n}${n}`,r)}const i=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(i){const[,e,t,n]=i;return`rgba(${parseInt(e,16)}, ${parseInt(t,16)}, ${parseInt(n,16)}, ${r})`}const s=n.match(/^rgb\s*\(\s*([^)]+?)\s*\)$/i);if(s)return`rgba(${s[1]}, ${r})`;const a=n.match(/^rgba\s*\(\s*([^,]+,\s*[^,]+,\s*[^,]+),\s*[^)]+\)$/i);return a?`rgba(${a[1]}, ${r})`:n}function Ao(e){const t=wo(e,Co.primary),r=wo(e,Co.danger),n=wo(e,Co.warning),o=wo(e,Co.success),i=wo(e,Co.border),s=wo(e,Co.background),a=wo(e,Co.text),l=wo(e,Co.textSecondary),c=wo(e,Co.focus),d=wo(e,Co.grid);return{annotationBackground:So(s,.94),annotationStroke:i,annotationText:a,background:s,border:i,closedWindowFill:So(r,.08),closedWindowStroke:So(r,.55),danger:r,focus:c,grid:d,gutterFill:So(l,.14),lateFill:n,openWindowFill:So(t,.07),openWindowStroke:So(t,.3),primary:t,selectedFill:n,selectedStroke:c,success:o,text:a,textSecondary:l,warning:n}}function jo(e=[]){return e.map(e=>({id:e.id,label:e.label,count:e.count,...null!=e.secondary?{secondary:e.secondary}:{},...e.secondaryLabel?{secondaryLabel:e.secondaryLabel}:{},...null!=e.observed?{observed:e.observed}:{}}))}function $o(e,t={}){const r=t.bodies??function(e){return e.world.bodies.map(e=>({id:e.id,x:e.x,y:e.y,prevX:e.prevX,prevY:e.prevY,vx:e.vx,vy:e.vy,angle:e.angle,mass:e.mass,shape:{...e.shape},sleeping:e.sleeping,datum:e.datum}))}(e),n=r.filter(e=>e.sleeping).length;return{bodyCount:r.length,sleepingCount:n,settled:"settled"===e.simulationState&&0===e.queue.length&&n===r.length,stepsRun:Math.max(0,Math.floor(t.stepsRun??0)),seed:e.world.options.seed,binCounts:jo(t.projectionRows)}}var Mo={fill:"#4e79a7",stroke:"#172033",strokeWidth:1,opacity:.85};function Bo(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if(null!=e&&""!==e)return e+""}return e.id}function Wo(e,t){const r="function"==typeof t?t(e):t;return{...Mo,...r??{}}}function Po(e,t={}){const r=function(e){return e.datum&&"object"==typeof e.datum?e.datum:null}(e),n={label:t.getBodyLabel?.(e)??Bo(e)},o={style:Wo(e,t.bodyStyle),datum:r,accessibleDatum:r,accessibility:n,_transitionKey:e.id};return"aabb"===e.shape.type?{type:"rect",x:e.x-e.shape.width/2,y:e.y-e.shape.height/2,w:e.shape.width,h:e.shape.height,...o}:{type:"point",x:e.x,y:e.y,r:e.shape.radius,pointId:e.id,...o}}function Io(e,t={}){return e.map(e=>Po(e,t))}function Lo(e,t={}){const r=e.settle(t.maxSteps),n=e.readBodies(),o=e.snapshot();return{snapshot:o,bodies:n,sceneNodes:Io(n,t),evidence:$o(o,{bodies:n,projectionRows:t.projectionRows,stepsRun:r}),stepsRun:r}}var Ro=l(require("react-dom/server")),To=l(require("react")),Fo=(require("d3-shape"),require("d3-shape")),Eo={circle:Fo.symbolCircle,square:Fo.symbolSquare,triangle:Fo.symbolTriangle,diamond:Fo.symbolDiamond,star:Fo.symbolStar,cross:Fo.symbolCross,wye:Fo.symbolWye};var No=null;var Oo=require("react/jsx-runtime");function Do(e){return"object"==typeof e&&null!==e&&"hatch"===e.type}function zo(e){return["hatch",e.background??"transparent",e.stroke??"#000",e.lineWidth??1.5,e.spacing??6,e.angle??45,e.lineOpacity??1].join("|")}var qo=new Map;function _o(e,t){const{background:r="transparent",stroke:n="#000",lineWidth:o=1.5,spacing:i=6,angle:s=45,lineOpacity:a=1}=e,l=Math.max(8,Math.ceil(2*i));return(0,Oo.jsxs)("pattern",{id:t,width:l,height:l,patternUnits:"userSpaceOnUse",patternTransform:0!==s?`rotate(${s})`:void 0,children:[r&&"transparent"!==r&&(0,Oo.jsx)("rect",{width:l,height:l,fill:r}),(0,Oo.jsx)("line",{x1:0,y1:0,x2:0,y2:l,stroke:n,strokeWidth:o,strokeOpacity:a}),(0,Oo.jsx)("line",{x1:i,y1:0,x2:i,y2:l,stroke:n,strokeWidth:o,strokeOpacity:a})]},t)}function Ho(e,t,r="#4e79a7"){if(Do(e)){const r=function(e,t){let r=2166136261;const n=zo(t);for(let e=0;n.length>e;e++)r^=n.charCodeAt(e),r=Math.imul(r,16777619);return`${e}-hatch-${(r>>>0).toString(36)}`}(t,e);return{fill:`url(#${r})`,def:_o(e,r)}}return e&&"string"==typeof e?{fill:e}:{fill:r}}var Go=[40,40],Vo=[.5,.5];function Uo(e,t,r,n){if("none"!==e)return"color"===e||null==e?t??n:"accent"===e?r:e}var Yo=require("react/jsx-runtime");function Qo(e,t="#4e79a7"){return Do(e)?e.background&&"transparent"!==e.background?e.background:t:e&&"string"==typeof e?e:t}function Xo(e,t,r){switch(e.type){case"line":{const r=e;if(0===r.path.length)return null;const n="M"+r.path.map(([e,t])=>`${e},${t}`).join("L");return(0,Yo.jsx)("path",{d:n,fill:"none",stroke:r.style.stroke||"#4e79a7",strokeWidth:r.style.strokeWidth||2,strokeDasharray:r.style.strokeDasharray,opacity:r.style.opacity},"line-"+t)}case"area":{const n=e;if(0===n.topPath.length)return null;const o=`M${n.topPath.map(([e,t])=>`${e},${t}`).join("L")}L${[...n.bottomPath].reverse().map(([e,t])=>`${e},${t}`).join("L")}Z`,i=`${r?r+"-":""}area-${t}-hatch`,s=Do(n.style.fill)?_o(n.style.fill,i):void 0,a=s?`url(#${i})`:Qo(n.style.fill);if(n.clipRect){const e=`${r?r+"-":""}area-clip-${t}`;return(0,Yo.jsxs)("g",{children:[(0,Yo.jsxs)("defs",{children:[s,(0,Yo.jsx)("clipPath",{id:e,children:(0,Yo.jsx)("rect",{x:n.clipRect.x,y:n.clipRect.y,width:n.clipRect.width,height:n.clipRect.height})})]}),(0,Yo.jsx)("path",{d:o,fill:a,fillOpacity:n.style.fillOpacity??n.style.opacity??.7,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth,clipPath:`url(#${e})`})]},"area-"+t)}return(0,Yo.jsxs)(To.Fragment,{children:[s&&(0,Yo.jsx)("defs",{children:s}),(0,Yo.jsx)("path",{d:o,fill:a,fillOpacity:n.style.fillOpacity??n.style.opacity??.7,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth})]},"area-"+t)}case"point":{const n=e,o=`${r?r+"-":""}point-${t}-hatch`,i=Do(n.style.fill)?_o(n.style.fill,o):void 0;return(0,Yo.jsxs)(To.Fragment,{children:[i&&(0,Yo.jsx)("defs",{children:i}),(0,Yo.jsx)("circle",{cx:n.x,cy:n.y,r:n.r,fill:i?`url(#${o})`:Qo(n.style.fill),opacity:n.style.opacity??.8,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth})]},"point-"+t)}case"symbol":return function(e,t){const r=function(e,t,r){if(r)return r;const n=e??"circle";return"chevron"===n?function(e){const t=1.5*function(e){return Math.sqrt(Math.max(1,e)/Math.PI)}(e),r=.92*t;return`M0,${-t}L${r},${(.78*t).toFixed(3)}L0,${(.28*t).toFixed(3)}L${-r},${(.78*t).toFixed(3)}Z`}(t):(0,Fo.symbol)(Eo[n]??Fo.symbolCircle,Math.max(1,t))()??""}(e.symbolType,e.size,e.path);return(0,Yo.jsx)("path",{d:r,transform:e.rotation?`translate(${e.x},${e.y}) rotate(${180*e.rotation/Math.PI})`:`translate(${e.x},${e.y})`,fill:e.style.fill?Qo(e.style.fill):"none",opacity:e.style.opacity,stroke:e.style.stroke,strokeWidth:e.style.strokeWidth},"symbol-"+t)}(e,t);case"glyph":return function(e,t,r,n){const o=e.glyph;if(!o?.parts?.length||0>=e.size)return null;const i=function(e,t){const[r,n]=e.viewBox??Go,[o,i]=e.anchor??Vo,s=n>0?n:1,a=Math.max(0,t)/s,l=(r>0?r:s)*a,c=s*a;return{width:l,height:c,scale:a,offsetX:-o*l,offsetY:-i*c}}(o,e.size);if(0>=i.scale)return null;const s=`translate(${t},${r})${e.rotation?` rotate(${180*e.rotation/Math.PI})`:""} translate(${i.offsetX},${i.offsetY}) scale(${i.scale})`,a=e.color??("string"==typeof e.style.fill?e.style.fill:void 0),l=function(e,t,r=0,n="horizontal"){const[o,i]=e.viewBox??Go,s=Math.min(1,Math.max(0,r)),a=Math.min(1,Math.max(0,t));return a>s?s>0||1>a?"vertical"===n?{x:0,y:i*(1-a),width:o,height:i*(a-s)}:{x:o*s,y:0,width:o*(a-s),height:i}:null:{x:0,y:0,width:0,height:0}}(o,e.fraction??1,e.fractionStart??0,e.fractionDirection??"horizontal"),c=l?function(e){const t=e.replace(/[^A-Za-z0-9_-]/g,"_");return!t||/^\d/.test(t)?"s_"+t:t}(n+"-clip"):void 0,d=(e.style.opacity??1)*(e._decayOpacity??1)*(e.style.fillOpacity??1),u=t=>o.parts.map((r,n)=>{const o=t?"none"===r.fill?void 0:t:Uo(r.fill,a,e.accent),i=t?r.stroke&&"none"!==r.stroke?t:void 0:Uo(r.stroke??"none",a,e.accent);return o||i?(0,Yo.jsx)("path",{d:r.d,fill:o??"none",stroke:i,strokeWidth:i?r.strokeWidth??1:void 0,strokeLinecap:r.strokeLinecap,strokeLinejoin:r.strokeLinejoin,opacity:r.opacity},n):null});return(0,Yo.jsxs)("g",{transform:s,opacity:1===d?void 0:d,children:[l&&c&&(0,Yo.jsx)("clipPath",{id:c,children:(0,Yo.jsx)("rect",{x:l.x,y:l.y,width:l.width,height:l.height})}),l&&e.ghostColor?(0,Yo.jsx)("g",{children:u(e.ghostColor)}):null,l&&c?(0,Yo.jsx)("g",{clipPath:`url(#${c})`,children:u()}):u()]},n)}(e,e.x,e.y,`${r??""}glyph-${e.pointId??t}`);case"rect":{const n=e,o=`${r?r+"-":""}xyrect-${t}-hatch`,i=Do(n.style.fill)?_o(n.style.fill,o):void 0;return(0,Yo.jsxs)(To.Fragment,{children:[i&&(0,Yo.jsx)("defs",{children:i}),(0,Yo.jsx)("rect",{x:n.x,y:n.y,width:n.w,height:n.h,fill:i?`url(#${o})`:Qo(n.style.fill),opacity:n.style.opacity,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth})]},"rect-"+t)}case"heatcell":{const r=e;if(r.showValues&&null!=r.value&&r.w>=20&&r.h>=20){const e=r.valueFormat?r.valueFormat(r.value):Number.isInteger(r.value)?r.value+"":100>Math.abs(r.value)?1>Math.abs(r.value)?r.value.toPrecision(3):r.value.toFixed(1):r.value.toFixed(0),[n,o,i]=function(e){if(e.startsWith("#")){let t=e.slice(1);if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6===t.length)return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}const t=e.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return t?[+t[1],+t[2],+t[3]]:[128,128,128]}(r.fill),s=.299*n+.587*o+.114*i>128?"#000":"#fff",a=Math.max(10,Math.min(16,.3*Math.min(r.w,r.h)));return(0,Yo.jsxs)("g",{children:[(0,Yo.jsx)("rect",{x:r.x,y:r.y,width:r.w,height:r.h,fill:r.fill}),(0,Yo.jsx)("text",{x:r.x+r.w/2,y:r.y+r.h/2,textAnchor:"middle",dominantBaseline:"middle",fill:s,fontSize:a+"px",children:e})]},"heatcell-"+t)}return(0,Yo.jsx)("rect",{x:r.x,y:r.y,width:r.w,height:r.h,fill:r.fill},"heatcell-"+t)}case"candlestick":{const r=e,n=Math.min(r.openY,r.closeY),o=Math.max(Math.abs(r.openY-r.closeY),1),i=r.isUp?r.upColor:r.downColor;return(0,Yo.jsxs)("g",{children:[(0,Yo.jsx)("line",{x1:r.x,y1:r.highY,x2:r.x,y2:r.lowY,stroke:r.wickColor,strokeWidth:r.wickWidth}),(0,Yo.jsx)("rect",{x:r.x-r.bodyWidth/2,y:n,width:r.bodyWidth,height:o,fill:i,stroke:i,strokeWidth:1})]},"candle-"+t)}default:return null}}var Zo="undefined"==typeof window||"undefined"==typeof document,Ko=require("react/jsx-runtime");function Jo(e,t={}){const{width:r=640,height:n=360,title:o,description:i,background:s,className:a,idPrefix:l="physics",...c}=t,d=Lo(e,c),u=function(e){const t=e.replace(/[^A-Za-z0-9_-]/g,"_");return!t||/^\d/.test(t)?"physics-"+t:t}(l),p=o?u+"-title":void 0,y=i?u+"-desc":void 0,h=[p,y].filter(Boolean).join(" ")||void 0;return{svg:Ro.renderToStaticMarkup((0,Ko.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:a??"stream-physics-frame",width:r,height:n,viewBox:`0 0 ${r} ${n}`,role:"img","aria-labelledby":h,children:[o&&(0,Ko.jsx)("title",{id:p,children:o}),i&&(0,Ko.jsx)("desc",{id:y,children:i}),s&&"transparent"!==s?(0,Ko.jsx)("rect",{x:0,y:0,width:r,height:n,fill:s}):null,(0,Ko.jsx)("g",{id:u+"-data-area",children:d.sceneNodes.map((e,t)=>Xo(e,t,u))})]})),scene:d,evidence:d.evidence}}function ei(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function ti(e,t){const r="sensor"===e.physics?t.sensorThickness:t.barrierThickness;return Math.max(0,ei(e.thickness)??ei(r)??ei(t.thickness)??4)}function ri(e=[],t={}){const r=t.idPrefix?t.idPrefix+"-":"",n=[];for(const o of e){if("barrier"!==o.physics&&"sensor"!==o.physics)continue;const e=o.axis??t.defaultAxis??"x",i=ti(o,t),s=o.colliderId??`${r}${o.id}`;let a;if("x"===e){const e=ei(o.x),r=ei(o.y1)??ei(t.plotBounds?.y)??ei(o.y),n=ei(o.y2)??(t.plotBounds?t.plotBounds.y+t.plotBounds.height:void 0)??ei(o.y);if(null==e||null==r||null==n)continue;a={type:"segment",x1:e,y1:r,x2:e,y2:n,thickness:i}}else{const e=ei(o.y),r=ei(o.x1)??ei(t.plotBounds?.x)??ei(o.x),n=ei(o.x2)??(t.plotBounds?t.plotBounds.x+t.plotBounds.width:void 0)??ei(o.x);if(null==e||null==r||null==n)continue;a={type:"segment",x1:r,y1:e,x2:n,y2:e,thickness:i}}n.push({id:s,shape:a,sensor:"sensor"===o.physics,..."barrier"!==o.physics||null==o.restitution&&null==t.barrierRestitution?{}:{restitution:ei(o.restitution)??ei(t.barrierRestitution)},..."barrier"!==o.physics||null==o.friction&&null==t.barrierFriction?{}:{friction:ei(o.friction)??ei(t.barrierFriction)}})}return n}function ni(e,t){if(0===e.length||0===t.length)return[];const r=new Map(t.map(e=>[e.id,e]));return e.flatMap(e=>{const t=r.get(e.bodyId);if(!t)return[];const n=e.dx??18,o=e.dy??-24;return[{...e,anchorX:t.x,anchorY:t.y,labelX:t.x+n,labelY:t.y+o,body:t}]})}function oi(e=[],t=[]){return{bodyCount:t.length,barrierCount:e.filter(e=>"barrier"===e.physics).length,sensorCount:e.filter(e=>"sensor"===e.physics).length,staticCount:e.length,totalCount:e.length+t.length}}var ii={seed:1,gravity:{x:0,y:980},fixedDt:1/120,cellSize:64,collisionIterations:6,velocityDamping:.995,sleepSpeed:8,sleepAfter:.35,restitution:.1,friction:.35,maxVelocity:1600,contactWakeSpeed:200},si=1e-9,ai=.005;function li(e){return"circle"===e.type?{type:"circle",radius:e.radius}:{type:"aabb",width:e.width,height:e.height}}function ci(e){return"aabb"===e.type?{type:"aabb",x:e.x,y:e.y,width:e.width,height:e.height}:{type:"segment",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,thickness:e.thickness}}function di(e,t,r){return Math.max(t,Math.min(r,e))}function ui(e){return 0>e?-1:1}function pi(e){if("circle"===e.shape.type){const t=e.shape.radius;return{minX:e.x-t,minY:e.y-t,maxX:e.x+t,maxY:e.y+t}}const t=e.shape.width/2,r=e.shape.height/2;return{minX:e.x-t,minY:e.y-r,maxX:e.x+t,maxY:e.y+r}}function yi(e){const t=e.shape;if("aabb"===t.type){const e=t.width/2,r=t.height/2;return{minX:t.x-e,minY:t.y-r,maxX:t.x+e,maxY:t.y+r}}const r=(t.thickness??0)/2;return{minX:Math.min(t.x1,t.x2)-r,minY:Math.min(t.y1,t.y2)-r,maxX:Math.max(t.x1,t.x2)+r,maxY:Math.max(t.y1,t.y2)+r}}function hi(e,t){return!(e.minX>t.maxX||t.minX>e.maxX||e.minY>t.maxY||t.minY>e.maxY)}function fi(e,t,r,n,o,i,s,a){const l=o-e,c=(r+s)/2-Math.abs(l);if(0>=c)return null;const d=i-t,u=(n+a)/2-Math.abs(d);return u>0?u>c?{nx:ui(l),ny:0,penetration:c}:{nx:0,ny:ui(d),penetration:u}:null}function mi(e,t,r,n,o,i,s){const a=i/2,l=s/2;let c=e-di(e,n-a,n+a),d=t-di(t,o-l,o+l);const u=c*c+d*d;if(u>r*r)return null;if(si>=u){const i=Math.abs(e-(n-a)),s=Math.abs(e-(n+a)),u=Math.abs(t-(o-l)),p=Math.abs(t-(o+l)),y=Math.min(i,s,u,p);return y===i?(c=-1,d=0,{nx:c,ny:d,penetration:r+i}):y===s?(c=1,d=0,{nx:c,ny:d,penetration:r+s}):y===u?(c=0,d=-1,{nx:c,ny:d,penetration:r+u}):(c=0,d=1,{nx:c,ny:d,penetration:r+p})}const p=Math.sqrt(u);return{nx:c/p,ny:d/p,penetration:r-p}}function bi(e,t){if("circle"===e.shape.type&&"circle"===t.shape.type)return function(e,t,r,n,o,i){const s=n-e,a=o-t,l=r+i,c=s*s+a*a;if(c>=l*l)return null;if(si>=c)return{nx:1,ny:0,penetration:l};const d=Math.sqrt(c);return{nx:s/d,ny:a/d,penetration:l-d}}(e.x,e.y,e.shape.radius,t.x,t.y,t.shape.radius);if("aabb"===e.shape.type&&"aabb"===t.shape.type)return fi(e.x,e.y,e.shape.width,e.shape.height,t.x,t.y,t.shape.width,t.shape.height);if("circle"===e.shape.type&&"aabb"===t.shape.type){const r=mi(e.x,e.y,e.shape.radius,t.x,t.y,t.shape.width,t.shape.height);return r?{nx:-r.nx,ny:-r.ny,penetration:r.penetration}:null}return"aabb"===e.shape.type&&"circle"===t.shape.type?mi(t.x,t.y,t.shape.radius,e.x,e.y,e.shape.width,e.shape.height):null}function gi(e,t){const r=t.shape;return"aabb"===r.type?"circle"===e.shape.type?mi(e.x,e.y,e.shape.radius,r.x,r.y,r.width,r.height):fi(r.x,r.y,r.width,r.height,e.x,e.y,e.shape.width,e.shape.height):function(e,t,r,n,o,i,s,a=0){const l=i-n,c=s-o,d=l*l+c*c,u=d>si?di(((e-n)*l+(t-o)*c)/d,0,1):0,p=r+a/2,y=e-(n+l*u),h=t-(o+c*u),f=y*y+h*h;if(f>=p*p)return null;if(si>=f){const e=Math.sqrt(d);return e>si?{nx:-c/e,ny:l/e,penetration:p}:{nx:1,ny:0,penetration:p}}const m=Math.sqrt(f);return{nx:y/m,ny:h/m,penetration:p-m}}(e.x,e.y,"circle"===e.shape.type?e.shape.radius:Math.sqrt(e.shape.width*e.shape.width+e.shape.height*e.shape.height)/2,r.x1,r.y1,r.x2,r.y2,r.thickness??0)}function vi(e,t){return`${e}\0${t}`}function xi(e){const t=e.indexOf("\0");return{sensorId:e.slice(0,t),bodyId:e.slice(t+1)}}function ki(e){return{id:e.id,x:e.x,y:e.y,prevX:e.prevX,prevY:e.prevY,vx:e.vx,vy:e.vy,angle:e.angle,mass:e.mass,bodyCollisions:e.bodyCollisions,shape:li(e.shape),sleeping:e.sleeping,datum:e.datum,index:e.index,sleepTime:e.sleepTime,restitution:e.restitution,friction:e.friction}}function Ci(e){return e&&"function"!=typeof e?{property:e.property,equals:e.equals,notEquals:e.notEquals,oneOf:e.oneOf?.slice(),notOneOf:e.notOneOf?.slice()}:e}function wi(e){return{id:e.id,shape:ci(e.shape),sensor:e.sensor,restitution:e.restitution,friction:e.friction,bodyFilter:Ci(e.bodyFilter),index:e.index}}function Si(e,t){return!!t?.some(t=>Object.is(e,t))}function Ai(e,t){const r=e.bodyFilter;if(!r)return!0;if("function"==typeof r)return r(t);const n=function(e,t){if(!t)return;let r=e;for(const e of t.split(".")){if(null==r||"object"!=typeof r)return;r=r[e]}return r}(t,r.property);return!("equals"in r&&!Object.is(n,r.equals)||"notEquals"in r&&Object.is(n,r.notEquals)||r.oneOf&&!Si(n,r.oneOf)||r.notOneOf&&Si(n,r.notOneOf))}var ji=class{constructor(e={}){this.capabilities={determinism:"strict",sensors:!0,joints:!1,ccd:!1,maxBodiesHint:5e3,worker:!1},this.bodies=new Map,this.colliders=new Map,this.springs=new Map,this.activeSensors=new Set,this.supportedThisStep=new Set,this.lastEvents=[],this.nextBodyIndex=0,this.nextColliderIndex=0,this.nextSpringIndex=0,this.options={...ii,...e},this.random=Ie(this.options.seed)}init(e={}){this.options={...ii,...e},this.random=Ie(this.options.seed),this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors.clear(),this.lastEvents=[],this.nextBodyIndex=0,this.nextColliderIndex=0,this.nextSpringIndex=0}spawn(e){const t={id:e.id,x:e.x,y:e.y,prevX:e.x,prevY:e.y,vx:e.vx??0,vy:e.vy??0,angle:e.angle??0,mass:Math.max(si,e.mass??1),bodyCollisions:e.bodyCollisions??!0,shape:li(e.shape),sleeping:!1,datum:e.datum,restitution:e.restitution,friction:e.friction,index:this.nextBodyIndex,sleepTime:0};this.nextBodyIndex+=1,this.bodies.set(e.id,t)}remove(e){for(const t of e){this.bodies.delete(t);for(const e of Array.from(this.activeSensors))xi(e).bodyId===t&&this.activeSensors.delete(e)}}setColliders(e){this.colliders.clear(),this.activeSensors.clear(),this.nextColliderIndex=0;for(const t of e)this.colliders.set(t.id,{...t,shape:ci(t.shape),bodyFilter:Ci(t.bodyFilter),index:this.nextColliderIndex}),this.nextColliderIndex+=1}setConstraint(e){const t=e.id??"spring-"+this.nextSpringIndex;return this.springs.set(t,{id:t,bodyId:e.bodyId,target:e.target,restLength:e.restLength??0,stiffness:e.stiffness??40,damping:e.damping??3}),this.nextSpringIndex+=1,t}removeConstraint(e){this.springs.delete(e)}applyImpulse(e,t,r){const n=this.bodies.get(e);n&&(n.vx+=t/n.mass,n.vy+=r/n.mass,this.wake(n))}step(e=this.options.fixedDt){const t=Math.max(0,e);if(this.lastEvents=[],0===t)return;const r=this.sortedBodies();for(const e of r)e.prevX=e.x,e.prevY=e.y;this.applySprings(t);const n=this.options.maxVelocity;for(const e of r)if(!e.sleeping){if(e.vx+=this.options.gravity.x*t,e.vy+=this.options.gravity.y*t,e.vx*=this.options.velocityDamping,e.vy*=this.options.velocityDamping,n>0){const t=Math.sqrt(e.vx*e.vx+e.vy*e.vy);if(t>n){const r=n/t;e.vx*=r,e.vy*=r}}e.x+=e.vx*t,e.y+=e.vy*t}this.supportedThisStep.clear();const o=this.bodyPairKeys(r),i=this.sortedColliders().filter(e=>!e.sensor);for(let e=0;this.options.collisionIterations>e;e+=1)this.resolveBodyPairs(r,o,0===e),this.resolveColliders(r,i,0===e);this.updateSensors(r),this.updateSleeping(r,t)}settle(e=1200,t=this.options.fixedDt){let r=0;for(;e>r&&!this.allSleeping();)this.step(t),r+=1;return r}readState(e=[]){e.length=0;for(const t of this.sortedBodies())e.push({id:t.id,x:t.x,y:t.y,prevX:t.prevX,prevY:t.prevY,vx:t.vx,vy:t.vy,angle:t.angle,mass:t.mass,shape:li(t.shape),sleeping:t.sleeping,datum:t.datum});return e}events(){return this.lastEvents.slice()}activeSensorPairs(){return Array.from(this.activeSensors).sort().map(xi)}allSleeping(){for(const e of this.bodies.values())if(!e.sleeping)return!1;return!0}snapshot(){return{options:{...this.options,gravity:{...this.options.gravity}},bodies:this.sortedBodies().map(ki),colliders:this.sortedColliders().map(wi),springs:Array.from(this.springs.values()).map(e=>({...e,target:{...e.target}})),activeSensors:Array.from(this.activeSensors).sort()}}restore(e){this.options={...e.options,gravity:{...e.options.gravity}},this.random=Ie(this.options.seed),this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors=new Set(e.activeSensors),this.lastEvents=[],this.nextBodyIndex=0;for(const t of e.bodies){const e=ki(t);this.bodies.set(e.id,e),this.nextBodyIndex=Math.max(this.nextBodyIndex,e.index+1)}this.nextColliderIndex=0;for(const t of e.colliders){const e=wi(t);this.colliders.set(e.id,e),this.nextColliderIndex=Math.max(this.nextColliderIndex,e.index+1)}this.nextSpringIndex=0;for(const t of e.springs){this.springs.set(t.id,{...t,target:{...t.target}});const e=/^spring-(\d+)$/.exec(t.id);e&&(this.nextSpringIndex=Math.max(this.nextSpringIndex,Number(e[1])+1))}}dispose(){this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors.clear(),this.lastEvents=[]}sortedBodies(){return Array.from(this.bodies.values()).sort((e,t)=>e.index-t.index)}sortedColliders(){return Array.from(this.colliders.values()).sort((e,t)=>e.index-t.index)}applySprings(e){for(const t of Array.from(this.springs.values()).sort((e,t)=>e.id.localeCompare(t.id))){const r=this.bodies.get(t.bodyId);if(!r||r.sleeping)continue;const n="point"===t.target.type?t.target:this.bodies.get(t.target.bodyId);if(!n)continue;const o=n.x-r.x,i=n.y-r.y,s=Math.sqrt(o*o+i*i);if(si>=s)continue;const a=o/s,l=i/s,c=(s-t.restLength)*t.stiffness+((("vx"in n?n.vx:0)-r.vx)*a+(("vy"in n?n.vy:0)-r.vy)*l)*t.damping;r.vx+=c*a*e/r.mass,r.vy+=c*l*e/r.mass}}resolveBodyPairs(e,t,r){for(const n of t){const[t,o]=n.split(":").map(Number),i=e[t],s=e[o];if(!i||!s)continue;const a=bi(i,s);a&&(this.resolveDynamicCollision(i,s,a),r&&this.lastEvents.push({type:"contact",bodyId:i.id,otherId:s.id,sensor:!1}))}}bodyPairKeys(e){const t=Math.max(1,this.options.cellSize),r=new Map;for(let n=0;e.length>n;n+=1){if(!1===e[n].bodyCollisions)continue;const o=pi(e[n]),i=Math.floor(o.minX/t),s=Math.floor(o.maxX/t),a=Math.floor(o.minY/t),l=Math.floor(o.maxY/t);for(let e=i;s>=e;e+=1)for(let t=a;l>=t;t+=1){const o=`${e}:${t}`,i=r.get(o);i?i.push(n):r.set(o,[n])}}const n=new Set;for(const t of Array.from(r.keys()).sort()){const o=r.get(t)??[];o.sort((e,t)=>e-t);for(let t=0;o.length>t;t+=1)for(let r=t+1;o.length>r;r+=1){const i=o[t],s=o[r];!1!==e[i].bodyCollisions&&!1!==e[s].bodyCollisions&&hi(pi(e[i]),pi(e[s]))&&n.add(`${i}:${s}`)}}return Array.from(n).sort((e,t)=>{const[r,n]=e.split(":").map(Number),[o,i]=t.split(":").map(Number);return r===o?n-i:r-o})}resolveDynamicCollision(e,t,r){e.sleeping&&this.supportedThisStep.add(t.id),t.sleeping&&this.supportedThisStep.add(e.id);const n=e.sleeping?0:1/e.mass,o=t.sleeping?0:1/t.mass,i=n+o;if(si>=i)return;const s=Math.max(0,r.penetration-ai)/i;e.x-=r.nx*s*n,e.y-=r.ny*s*n,t.x+=r.nx*s*o,t.y+=r.ny*s*o;const a=(t.vx-e.vx)*r.nx+(t.vy-e.vy)*r.ny;if(a>0)return;const l=Math.abs(a),c=-(1+Math.min(e.restitution??this.options.restitution,t.restitution??this.options.restitution))*a/i,d=c*r.nx,u=c*r.ny;e.vx-=d*n,e.vy-=u*n,t.vx+=d*o,t.vy+=u*o,this.applyFriction(e,t,r,c,n,o),l>this.options.contactWakeSpeed&&(this.wake(e),this.wake(t))}applyFriction(e,t,r,n,o,i){const s=-r.ny,a=r.nx,l=(t.vx-e.vx)*s+(t.vy-e.vy)*a,c=o+i;if(si>=Math.abs(l)||si>=c)return;const d=Math.max(0,Math.min(1,Math.max(e.friction??this.options.friction,t.friction??this.options.friction))),u=di(-l/c,-n*d,n*d),p=u*s,y=u*a;e.vx-=p*o,e.vy-=y*o,t.vx+=p*i,t.vy+=y*i}resolveColliders(e,t,r){for(const n of e)for(const e of t){if(!Ai(e,n))continue;if(!hi(pi(n),yi(e)))continue;const t=gi(n,e);t&&(this.resolveStaticCollision(n,e,t),this.supportedThisStep.add(n.id),r&&this.lastEvents.push({type:"contact",bodyId:n.id,otherId:e.id,sensor:!1}))}}resolveStaticCollision(e,t,r){e.x+=r.nx*Math.max(0,r.penetration-ai),e.y+=r.ny*Math.max(0,r.penetration-ai);const n=e.vx*r.nx+e.vy*r.ny;if(0>n){const o=Math.min(e.restitution??this.options.restitution,t.restitution??this.options.restitution);e.vx-=(1+o)*n*r.nx,e.vy-=(1+o)*n*r.ny;const i=-r.ny,s=r.nx,a=e.vx*i+e.vy*s,l=Math.max(0,Math.min(1,Math.max(e.friction??this.options.friction,t.friction??this.options.friction)));e.vx-=a*i*l,e.vy-=a*s*l}}updateSensors(e){const t=new Set,r=this.sortedColliders().filter(e=>e.sensor);for(const n of e){const e=pi(n);for(const o of r){if(!Ai(o,n))continue;if(!hi(e,yi(o)))continue;if(!gi(n,o))continue;const r=vi(o.id,n.id);t.add(r),this.activeSensors.has(r)||this.lastEvents.push({type:"sensor-enter",bodyId:n.id,sensorId:o.id})}}for(const e of Array.from(this.activeSensors).sort()){if(t.has(e))continue;const{sensorId:r,bodyId:n}=xi(e);this.lastEvents.push({type:"sensor-exit",bodyId:n,sensorId:r})}this.activeSensors=t}updateSleeping(e,t){const r=Math.hypot(this.options.gravity.x,this.options.gravity.y)>1;for(const n of e)Math.sqrt(n.vx*n.vx+n.vy*n.vy)>=this.options.sleepSpeed||Math.sqrt((n.x-n.prevX)*(n.x-n.prevX)+(n.y-n.prevY)*(n.y-n.prevY))>=this.options.sleepSpeed*t||r&&!this.supportedThisStep.has(n.id)?n.sleeping?this.wake(n):n.sleepTime=0:(n.sleepTime+=t,n.sleeping||this.options.sleepAfter>n.sleepTime||(n.sleeping=!0,n.vx=0,n.vy=0,this.lastEvents.push({type:"sleep",bodyId:n.id})))}wake(e){e.sleeping&&this.lastEvents.push({type:"wake",bodyId:e.id}),e.sleeping=!1,e.sleepTime=0}nextRandom(){return this.random()}},$i=class{constructor(e={}){this.id="builtin",this.capabilities={...(new ji).capabilities,engine:"builtin"},this.world=new ji(e)}init(e={}){this.world.init(e)}spawn(e){this.world.spawn(e)}remove(e){this.world.remove(e)}setColliders(e){this.world.setColliders(e)}setConstraint(e){return this.world.setConstraint(e)}removeConstraint(e){this.world.removeConstraint(e)}applyImpulse(e,t,r){this.world.applyImpulse(e,t,r)}step(e){this.world.step(e)}settle(e,t){return this.world.settle(e,t)}readState(e){return this.world.readState(e)}events(){return this.world.events()}activeSensorPairs(){return this.world.activeSensorPairs()}allSleeping(){return this.world.allSleeping()}snapshot(){return this.world.snapshot()}restore(e){this.world.restore(e)}nextRandom(){return this.world.nextRandom()}dispose(){this.world.dispose()}};function Mi(e={}){return new $i(e)}function Bi(e,t={}){return e?"function"==typeof e?e(t):(e.init(t),e):Mi(t)}var Wi=["binId","targetBin","category","windowIndex","lane","group"];function Pi(e,t){if(!Number.isFinite(t))return;e.count+=1,e.total+=t,e.min=Math.min(e.min,t),e.max=Math.max(e.max,t);const r=t-e.mean;e.mean+=r/e.count,e.m2+=r*(t-e.mean)}function Ii(e){return{count:e.count,total:e.total,mean:e.count>0?e.mean:0,min:e.count>0?e.min:0,max:e.count>0?e.max:0,variance:e.count>1?e.m2/(e.count-1):0}}function Li(e){return{count:e.count,total:e.total,mean:e.mean,m2:e.variance*Math.max(0,e.count-1),min:e.count>0?e.min:1/0,max:e.count>0?e.max:-1/0}}function Ri(e,t){if(null!=e[t])return e[t];const r=e.datum;return r&&"object"==typeof r?r[t]:void 0}function Ti(e,t,r){return"function"==typeof e?e(t,r):"string"==typeof e?Ri(t,e):void 0}function Fi(e){if(null==e)return;const t=e+"";return t.trim()?t:void 0}function Ei(e){const t=Ii(e.value);return{id:e.id,label:e.label,count:t.count,total:t.total,bodyIds:e.bodyIds.slice(),lastBodyId:e.lastBodyId,lastDatum:e.lastDatum,x:Ii(e.x),y:Ii(e.y),value:t}}var Ni=class{constructor(e=!1){this.bins=new Map,this.nextIndex=0,this.config=e}updateConfig(e){void 0!==e&&(this.config=e,!1===e&&this.clear())}isEnabled(){return!1!==this.config}add(e){if(!1===this.config)return null;const t=this.nextIndex;this.nextIndex+=1;const r=Fi(Ti(this.config.binAccessor,e,t))??function(e){for(const t of Wi){const r=Fi(Ri(e,t));if(r)return r}return"sediment"}(e),n=Fi(Ti(this.config.labelAccessor,e,t))??r,o=function(e,t,r){if("number"==typeof e)return e;const n="function"==typeof e?e(t,r):"string"==typeof e?Ri(t,e):1,o="number"==typeof n?n:Number(n);return Number.isFinite(o)?o:1}(this.config.valueAccessor,e,t),i=Math.max(0,Math.floor(this.config.retainBodyIds??12));let s=this.bins.get(r);return s||(s={id:r,label:n,bodyIds:[],x:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0},y:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0},value:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0}},this.bins.set(r,s)),s.label=n,s.lastBodyId=e.id,s.lastDatum=e.datum,Pi(s.x,e.x),Pi(s.y,e.y),Pi(s.value,o),i>0&&(s.bodyIds.push(e.id),s.bodyIds.length>i&&(s.bodyIds=s.bodyIds.slice(s.bodyIds.length-i))),Ei(s)}clear(){this.bins.clear(),this.nextIndex=0}snapshot(){return Array.from(this.bins.values()).map(Ei)}restore(e=[]){this.bins.clear();for(const t of e)this.bins.set(t.id,{id:t.id,label:t.label,bodyIds:t.bodyIds.slice(),lastBodyId:t.lastBodyId,lastDatum:t.lastDatum,x:Li(t.x),y:Li(t.y),value:Li(t.value)});this.nextIndex=e.reduce((e,t)=>e+t.count,0)}totals(){const e=this.snapshot();return{bins:e.length,count:e.reduce((e,t)=>e+t.count,0),total:e.reduce((e,t)=>e+t.total,0)}}};function Oi(e,t={}){const{baselineY:r=0,binWidth:n=24,gap:o=2,maxHeight:i=80,value:s="count",x:a}=t,l=Math.max(1,...e.map(e=>e[s]));return e.map((e,t)=>{const c=Math.max(0,e[s]/l*i),d=a?.(e,t)??t*(n+o);return{binId:e.id,label:e.label,index:t,count:e.count,total:e.total,x:d,y:r-c,width:n,height:c,meanX:e.x.mean,meanY:e.y.mean}})}function Di(e){const t=Number(e);if(Number.isFinite(t)&&t>0)return Math.floor(t)}function zi(e){const t=Math.max(0,Math.floor(e.liveBodies)),r=Math.max(0,Math.floor(e.queuedBodies??0)),n=t+r,o=Di(e.bodyLimit),i=Di(e.engineMaxBodiesHint),s=function(e,t,r){if(!1===r)return;const n=Di(r?.warnAt);return null!=n?n:null!=e?Math.max(1,Math.floor(.8*e)):null!=t?Math.max(1,Math.floor(.8*t)):void 0}(o,i,e.options),a=null==o?0:Math.max(0,t-o),l=a>0?"overflow":null==s||s>n?"ok":"warning";return{action:"overflow"!==l?"continue":e.sedimentEnabled?"sediment":e.evictionEnabled?"evict":"retain",bodyLimit:o,engineMaxBodiesHint:i,liveBodies:t,overflow:a,projectedBodies:n,queuedBodies:r,state:l,warnAt:s}}var qi={bodyLimit:1/0,eviction:"oldest",fixedDt:1/120,maxDeltaSeconds:.1,maxSubsteps:8,settleStepLimit:1200,timeScale:1},_i={chartId:"physics",chartType:"physics",sensors:{},onObservation:void 0,onSimulationStateChange:void 0};function Hi(e={},t=_i){return{chartId:e.chartId??t.chartId,chartType:e.chartType??t.chartType,sensors:e.sensors??t.sensors,onObservation:e.onObservation??t.onObservation,onSimulationStateChange:e.onSimulationStateChange??t.onSimulationStateChange}}function Gi(e){return{...e,shape:{...e.shape},datum:e.datum,springs:e.springs?.map(e=>({...e,target:{...e.target}}))}}function Vi(e){if(e instanceof Date){const t=e.getTime();return Number.isFinite(t)?t:void 0}const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:void 0}function Ui(e,t){if(null!=e[t])return e[t];const r=e.datum;return r&&"object"==typeof r?r[t]:void 0}function Yi(e,t={}){const r=Vi(t.startAt)??0,n=t.pacing??"immediate";if("arrival"===n){const n=e.map((e,r)=>function(e,t,r){return"function"==typeof r?Vi(r(e,t)):"string"==typeof r?Vi(Ui(e,r)):Vi(e.spawnAt)??Vi(Ui(e,"arrivalTime"))??Vi(Ui(e,"timestamp"))??Vi(Ui(e,"time"))??Vi(Ui(e,"eventTime"))}(e,r,t.timeAccessor)),o=n.filter(e=>null!=e),i=o.length>0?Math.min(...o):0,s=Vi(t.timeScale)??1,a=s>0?s:1;return e.map((e,t)=>{const o=n[t],s=null==o?0:Math.max(0,o-i);return{...Gi(e),spawnAt:r+s/a}})}if("object"==typeof n){const t=Vi(n.ratePerSec);if(t&&t>0)return e.map((e,n)=>({...Gi(e),spawnAt:r+n/t}))}return e.map(e=>({...Gi(e),spawnAt:r}))}function Qi(e){return{...Gi(e),sequence:e.sequence,spawnAt:e.spawnAt}}function Xi(e){return e.map(e=>({...e,shape:{...e.shape},bodyFilter:e.bodyFilter&&"function"!=typeof e.bodyFilter?{...e.bodyFilter,oneOf:e.bodyFilter.oneOf?.slice(),notOneOf:e.bodyFilter.notOneOf?.slice()}:e.bodyFilter}))}function Zi(e){return!1!==e&&{...e}}function Ki(e,t){return e.spawnAt===t.spawnAt?e.sequence-t.sequence:e.spawnAt-t.spawnAt}function Ji(e){return{...e,gravity:{...e.gravity}}}function es(e,t,r,n){if("circle"===e.shape.type){const o=e.x-t,i=e.y-r,s=e.shape.radius+n,a=o*o+i*i;return a>s*s?null:a}const o=Math.max(Math.abs(t-e.x)-e.shape.width/2,0),i=Math.max(Math.abs(r-e.y)-e.shape.height/2,0),s=o*o+i*i;return s>n*n?null:s}function ts(e){const t=e.indexOf("\0");return{sensorId:e.slice(0,t),bodyId:e.slice(t+1)}}function rs(e,t={}){const{idPrefix:r="plot",includeFloor:n=!0,includeCeiling:o=!1,includeLeftWall:i=!0,includeRightWall:s=!0,wallThickness:a=20,floorThickness:l=a}=t,c=[],d=e.x+e.width/2,u=e.y+e.height/2;return n&&c.push({id:r+"-floor",shape:{type:"aabb",x:d,y:e.y+e.height+l/2,width:e.width+2*a,height:l}}),o&&c.push({id:r+"-ceiling",shape:{type:"aabb",x:d,y:e.y-l/2,width:e.width+2*a,height:l}}),i&&c.push({id:r+"-left-wall",shape:{type:"aabb",x:e.x-a/2,y:u,width:a,height:e.height+2*l}}),s&&c.push({id:r+"-right-wall",shape:{type:"aabb",x:e.x+e.width+a/2,y:u,width:a,height:e.height+2*l}}),c}function ns(e){const{idPrefix:t="bin",count:r,domainStart:n,domainStep:o,xScale:i,yTop:s,yBottom:a,wallThickness:l=4,includeBoundaryWalls:c=!0,includeInteriorWalls:d=!0,closedBefore:u,lidY:p=s,lidThickness:y=Math.max(2,l)}=e,h=[],f=s+(a-s)/2,m=Math.abs(a-s),b=c?r:r-1;if(d||c)for(let e=c?0:1;b>=e;e+=1){if(!d&&e>0&&r>e)continue;const s=i(n+e*o);h.push({id:`${t}-wall-${e}`,shape:{type:"aabb",x:s,y:f,width:l,height:m}})}if(null!=u)for(let e=0;r>e;e+=1){const r=n+e*o,s=r+o;if(s>=u)continue;const a=i(r),c=i(s);h.push({id:`${t}-lid-${e}`,shape:{type:"segment",x1:Math.min(a,c)+l/2,y1:p,x2:Math.max(a,c)-l/2,y2:p,thickness:y}})}return h}var os={data:"data",domain:"domain",layout:"layout","scene-geometry":"sceneGeometry","scene-style":"sceneStyle","data-paint":"dataPaint","interaction-paint":"interactionPaint",overlay:"overlay",accessibility:"accessibility",evidence:"evidence"};function is(e,t){const r={...e};for(const e of t)r[os[e]]++;return r}function ss(e,t,r){const n=new Set(t);return{changeSet:{...e,...e.keys?{keys:[...e.keys]}:{}},changed:n,revisions:is(r,n)}}var as=class{constructor(){this.revisions={data:0,domain:0,layout:0,sceneGeometry:0,sceneStyle:0,dataPaint:0,interactionPaint:0,overlay:0,accessibility:0,evidence:0},this.latest=ss({kind:"initialize"},[],this.revisions),this.listeners=new Set}get last(){return this.latest}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}record(e,t){const r=ss(e,t,this.revisions);this.revisions=r.revisions,this.latest=r;for(const e of[...this.listeners])e();return r}},ls=require("d3-quadtree"),cs=class{constructor(){this.maxSearchRadius=0,this.revision=-1,this.tree=null}hitTest(e,t,r,n,o,i=0){const s=this.ensure(e,t);if(!s)return null;let a=null,l=1/0;const c=Math.max(0,i)+this.maxSearchRadius,d=n-c,u=n+c,p=o-c,y=o+c;return s.visit((e,t,s,c,h)=>{if(d>c||t>u||p>h||s>y)return!0;if(e.length)return!1;let f=e;for(;f;){const e=f.data;if(e){const t=es(e,n,o,Math.max(0,i));null!=t&&(l>t||t===l&&r.indexOf(e.id)>r.indexOf(a?.id??""))&&(a=e,l=t)}f=f.next}return!1}),a}ensure(e,t){if(this.tree&&this.revision===t)return this.tree;const r=e.readState();return 0===r.length?(this.tree=null,this.maxSearchRadius=0,this.revision=t,null):(this.maxSearchRadius=r.reduce((e,t)=>Math.max(e,function(e){return"circle"===e.shape.type?e.shape.radius:Math.hypot(e.shape.width,e.shape.height)/2}(t)),0),this.tree=(0,ls.quadtree)().x(e=>e.x).y(e=>e.y).addAll(r),this.revision=t,this.tree)}},ds=["data","scene-geometry","data-paint","accessibility","evidence"],us=["scene-geometry","data-paint","accessibility","evidence"],ps=["overlay","accessibility","evidence"],ys=(e,t)=>({retainedData:e,invalidations:t}),hs=["layout","scene-geometry","data-paint","overlay","accessibility","evidence"],fs=["scene-geometry","data-paint","accessibility","evidence"],ms=[],bs={engine:ys("rebuild",["scene-geometry","data-paint","accessibility","evidence"]),kernel:ys("preserve",fs),colliders:ys("preserve",fs),sediment:ys("preserve",fs),bodyBudget:ys("preserve",hs),bodyLimit:ys("preserve",hs),eviction:ys("preserve",hs),fixedDt:ys("preserve",ms),maxDeltaSeconds:ys("preserve",ms),maxSubsteps:ys("preserve",ms),settleStepLimit:ys("preserve",ms),timeScale:ys("preserve",ms),observation:ys("preserve",ms)},gs=ys("preserve",hs);function vs(e){let t="preserve";const r=new Set;for(const n of e){const e=bs[n]??gs;"rebuild"===e.retainedData&&(t="rebuild");for(const t of e.invalidations)r.add(t)}return{retainedData:t,invalidations:r}}var xs=["seed","fixedDt","cellSize","collisionIterations","velocityDamping","sleepSpeed","sleepAfter","restitution","friction","maxVelocity","contactWakeSpeed"];function ks(e,t){return e===t||!(!e||!t)&&e.gravity?.x===t.gravity?.x&&e.gravity?.y===t.gravity?.y&&xs.every(r=>e[r]===t[r])}function Cs(e,t,r,n){return e||!t?"paused":r||!n?"running":"settled"}var ws=class{constructor(e={}){this.activeSensorPairs=new Set,this.accumulator=0,this.bodyBudgetObservationKey="ok",this.bodySpatialIndex=new cs,this.elapsedSeconds=0,this.liveBodyOrder=[],this.nextSequence=0,this.paused=!1,this.queue=[],this.revision=0,this.updateResults=new as,this.simulationState="settled",this.visible=!0;const{bodyBudget:t,colliders:r,engine:n,kernel:o,observation:i,sediment:s,...a}=e;this.config={...qi,...a},this.configInput={...e},this.bodyBudget=t??{},this.engineInput=n,this.observation=Hi(i),this.sediment=new Ni(s??!1),this.world=Bi(n,{fixedDt:this.config.fixedDt,...o}),r&&this.world.setColliders(Xi(r))}updateConfig(e){const t=function(e,t){return Object.keys(e).filter(r=>"kernel"===r?!ks(e.kernel,t.kernel):e[r]!==t[r])}(e,this.configInput),{colliders:r,bodyBudget:n,engine:o,kernel:i,observation:s,sediment:a,...l}=e;if(this.config={...this.config,...l},void 0!==n&&(this.bodyBudget=n,!1===n&&(this.bodyBudgetObservationKey="ok")),o&&o!==this.engineInput){const e=this.world.snapshot();this.world.dispose(),this.engineInput=o,this.world=Bi(o,e.options),this.world.restore(e),this.revision+=1}if(i&&!ks(i,this.configInput.kernel)){const e=this.world.snapshot(),t={...e.options,...i,gravity:{...e.options.gravity,...i.gravity}};this.world.restore({...e,options:t}),this.revision+=1}s&&(this.observation=Hi(s,this.observation)),this.sediment.updateConfig(a),r&&(this.world.setColliders(Xi(r)),this.revision+=1),this.configInput={...this.configInput,...e};const c=vs(t);this.updateResults.record({kind:"config",keys:t},c.invalidations)}updateConfigWithResult(e){return this.updateConfig(e),this.updateResults.last}setColliders(e){this.world.setColliders(Xi(e)),this.revision+=1,this.updateResults.record({kind:"config",keys:["colliders"]},vs(["colliders"]).invalidations)}enqueue(e,t){const r=Array.isArray(e)?e:[e],n=t?Yi(r,{...t,startAt:t.startAt??this.elapsedSeconds}):r;for(const e of n)this.queue.push({...Gi(e),sequence:this.nextSequence,spawnAt:e.spawnAt??this.elapsedSeconds}),this.nextSequence+=1;this.queue.sort(Ki),n.length>0&&(this.revision+=1),this.updateResults.record({kind:"enqueue",count:n.length},n.length?ds:[])}enqueueWithResult(e,t){return this.enqueue(e,t),this.updateResults.last}spawnNow(e){this.spawnOne(Gi(e)),this.nextSequence+=1,this.observeBodyBudget(),this.evictOverflow(),this.revision+=1,this.updateResults.record({kind:"enqueue",count:1},ds)}clear(){const e=this.world.snapshot().options;this.world.init({...e,fixedDt:this.config.fixedDt}),this.activeSensorPairs.clear(),this.liveBodyOrder=[],this.queue=[],this.accumulator=0,this.elapsedSeconds=0,this.nextSequence=0,this.sediment.clear(),this.bodyBudgetObservationKey="ok",this.revision+=1,this.syncSimulationState(),this.updateResults.record({kind:"clear"},ds)}tick(e){const t=this.revision,r=[],n=[],o=[],i=[],s=[];if(this.paused||!this.visible){const e=this.result(0,r,n,o,i,s,!1);return this.updateResults.record({kind:"tick",count:0},[]),e}const a=Math.max(0,Math.min(e,this.config.maxDeltaSeconds))*this.config.timeScale;this.elapsedSeconds+=a,this.spawnDue(r,s);const l=this.observeBodyBudget(s),c=this.evictOverflow(s);n.push(...c.evicted),o.push(...c.sedimented),this.syncSimulationState(s),this.accumulator+=a;let d=0;for(;this.accumulator>=this.config.fixedDt&&this.config.maxSubsteps>d;){this.world.step(this.config.fixedDt);const e=this.world.events();i.push(...e),this.observeKernelEvents(e,s),this.observeSensorTransitions(s),this.accumulator-=this.config.fixedDt,d+=1}d===this.config.maxSubsteps&&(this.accumulator=Math.min(this.accumulator,this.config.fixedDt)),(d>0||r.length>0||n.length>0||o.length>0||i.length>0)&&(this.revision+=1);const u=this.result(d,r,n,o,i,s,void 0,l);return this.updateResults.record({kind:"tick",count:d},this.revision!==t?r.length||n.length||o.length?ds:us:[]),u}settle(e=this.config.settleStepLimit){const t=this.revision;this.spawnDue([],[]);const r=this.world.settle(e,this.config.fixedDt);return r>0&&(this.revision+=1),this.syncSimulationState(),this.updateResults.record({kind:"settle",count:r},this.revision!==t?us:[]),r}settleWithObservations(e=this.config.settleStepLimit){const t=this.revision,r=[],n=[],o=[],i=[],s=[];if(this.paused||!this.visible){const e=this.result(0,r,n,o,i,s,!1);return this.updateResults.record({kind:"settle",count:0},[]),e}this.spawnDue(r,s);const a=this.observeBodyBudget(s),l=this.evictOverflow(s);n.push(...l.evicted),o.push(...l.sedimented),this.syncSimulationState(s);let c=0;for(;e>c&&!this.world.allSleeping();){this.world.step(this.config.fixedDt);const e=this.world.events();i.push(...e),this.observeKernelEvents(e,s),this.observeSensorTransitions(s),c+=1}(c>0||r.length>0||n.length>0||o.length>0||i.length>0)&&(this.revision+=1);const d=this.result(c,r,n,o,i,s,void 0,a);return this.updateResults.record({kind:"settle",count:c},this.revision!==t?r.length||n.length||o.length?ds:us:[]),d}readBodies(e=[]){return this.world.readState(e)}readSediment(){return this.sediment.snapshot()}bodyBudgetStatus(){return this.evaluateBodyBudget()}sedimentTotals(){return this.sediment.totals()}sedimentHeightfield(e={}){return Oi(this.readSediment(),e)}hitTest(e,t,r=0){return this.bodySpatialIndex.hitTest(this.world,this.revision,this.liveBodyOrder,e,t,r)}events(){return this.world.events()}allSleeping(){return this.world.allSleeping()}hasPendingWork(){return this.queue.length>0||!this.world.allSleeping()}queueSize(){return this.queue.length}liveBodyCount(){return this.liveBodyOrder.length}elapsed(){return this.elapsedSeconds}recordObservation(e){const{timestamp:t,chartType:r,chartId:n,...o}=e,i={...o,timestamp:t??this.elapsedSeconds,chartType:r??this.observation.chartType,chartId:n??this.observation.chartId};return this.emitObservation(i),this.updateResults.record({kind:"update",count:1},["evidence"]),i}getLastUpdateResult(){return this.updateResults.last}getUpdateSnapshot(){return this.updateResults.last}subscribeUpdateResult(e){return this.updateResults.subscribe(e)}version(){return this.revision}setPaused(e){const t=this.paused!==e;this.paused=e,this.syncSimulationState(),this.updateResults.record({kind:"pause"},t?ps:[])}setVisible(e){const t=this.visible!==e;this.visible=e,this.syncSimulationState(),this.updateResults.record({kind:"visibility"},t?ps:[])}remove(e){const t=new Set(e),r=new Set(this.liveBodyOrder),n=new Set(this.queue.map(e=>e.id));this.queue=this.queue.filter(e=>!t.has(e.id)),this.liveBodyOrder=this.liveBodyOrder.filter(e=>!t.has(e)),this.world.remove(e),this.removeActiveSensorPairsForBodies(t);const o=e.filter(e=>r.has(e)||n.has(e));return o.length>0&&(this.revision+=1,this.syncSimulationState()),this.updateResults.record({kind:"remove",keys:o,count:o.length},o.length?ds:[]),o}setConstraint(e){const t=this.world.setConstraint(e);return this.revision+=1,this.updateResults.record({kind:"constraint",keys:[t]},us),t}removeConstraint(e){this.world.removeConstraint(e),this.revision+=1,this.updateResults.record({kind:"constraint",keys:[e]},us)}applyImpulse(e,t,r){this.world.applyImpulse(e,t,r),this.revision+=1,this.updateResults.record({kind:"impulse",keys:[e]},us)}nextRandom(){return this.world.nextRandom()}controls(){return e=this,{applyImpulse:(t,r,n)=>e.applyImpulse(t,r,n),clear:()=>e.clear(),hitTest:(t,r,n)=>e.hitTest(t,r,n),pause:()=>e.setPaused(!0),push:(t,r)=>e.enqueue(t,r),pushMany:(t,r)=>e.enqueue(t,r),bodyBudgetStatus:()=>e.bodyBudgetStatus(),readBodies:t=>e.readBodies(t),readSediment:()=>e.readSediment(),recordObservation:t=>e.recordObservation(t),remove:t=>e.remove(t),restore:t=>e.restore(t),resume:()=>e.setPaused(!1),settle:t=>e.settle(t),settleWithObservations:t=>e.settleWithObservations(t),snapshot:()=>e.snapshot(),sedimentHeightfield:t=>e.sedimentHeightfield(t),sedimentTotals:()=>e.sedimentTotals(),step:t=>e.tick(t)};var e}snapshot(){const e=this.world.snapshot();return{accumulator:this.accumulator,activeSensorPairs:Array.from(this.activeSensorPairs).sort(),bodyBudget:Zi(this.bodyBudget),config:{...this.config,kernel:Ji(e.options)},elapsedSeconds:this.elapsedSeconds,paused:this.paused,queue:this.queue.map(Qi),revision:this.revision,sediment:this.readSediment(),simulationState:this.simulationState,liveBodyOrder:this.liveBodyOrder.slice(),visible:this.visible,world:e}}restore(e){this.config={bodyLimit:e.config.bodyLimit,eviction:e.config.eviction,fixedDt:e.config.fixedDt,maxDeltaSeconds:e.config.maxDeltaSeconds,maxSubsteps:e.config.maxSubsteps,settleStepLimit:e.config.settleStepLimit,timeScale:e.config.timeScale},this.configInput={...e.config,bodyBudget:Zi(e.bodyBudget??{}),kernel:Ji(e.world.options)},this.bodyBudget=Zi(e.bodyBudget??{}),this.bodyBudgetObservationKey="ok",this.activeSensorPairs=new Set(e.activeSensorPairs),this.accumulator=e.accumulator,this.elapsedSeconds=e.elapsedSeconds,this.paused=e.paused,this.queue=e.queue.map(Qi).sort(Ki),this.revision=e.revision,this.sediment.restore(e.sediment??[]),this.simulationState=e.simulationState??Cs(e.paused,e.visible,e.queue.length>0,e.world.bodies.every(e=>e.sleeping)),this.liveBodyOrder=e.liveBodyOrder.slice(),this.visible=e.visible,this.nextSequence=this.queue.reduce((e,t)=>Math.max(e,t.sequence),-1)+1,this.world.restore(e.world),this.updateResults.record({kind:"restore"},ds)}spawnDue(e,t){for(;this.queue.length>0&&this.elapsedSeconds>=this.queue[0].spawnAt;){const r=this.queue.shift();if(!r)return;this.spawnOne(r,t),e.push(r.id)}}spawnOne(e,t){this.liveBodyOrder=this.liveBodyOrder.filter(t=>t!==e.id),this.removeActiveSensorPairsForBodies(new Set([e.id])),this.world.spawn(e),this.liveBodyOrder.push(e.id);for(const t of e.springs??[])this.world.setConstraint({...t,bodyId:e.id});const r=this.world.readState().find(t=>t.id===e.id);this.emitObservation({type:"physics-spawn",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,bodyId:e.id,datum:r?.datum??e.datum,x:r?.x??e.x,y:r?.y??e.y},t)}result(e,t,r,n,o,i,s,a=this.evaluateBodyBudget()){this.syncSimulationState(i);const l=this.world.allSleeping();return{budget:a,elapsedSeconds:this.elapsedSeconds,evicted:r,events:o,observations:i,queueSize:this.queue.length,revision:this.revision,shouldContinue:s??(this.queue.length>0||!l),sleeping:l,sedimented:n,spawned:t,steps:e}}observeKernelEvents(e,t){!function(e,t,r){if(0===t.length)return;const n=new Map(e.readState().map(e=>[e.id,e]));for(const e of t){if("sleep"!==e.type)continue;const t=n.get(e.bodyId);r.emit({type:"physics-settle",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,bodyId:e.bodyId,datum:t?.datum,x:t?.x,y:t?.y})}}(this.world,e,this.observationContext(t))}observeSensorTransitions(e){this.activeSensorPairs=function(e,t,r){const n=new Set(e.activeSensorPairs().map(e=>`${e.sensorId}\0${e.bodyId}`));if(0===n.size&&0===t.size)return n;const o=new Map(e.readState().map(e=>[e.id,e])),i=(e,t)=>{const{sensorId:n,bodyId:i}=ts(t),s=r.observation.sensors[n],a=o.get(i);r.emit({type:"enter"===e?s?.enterType??"physics-bin-enter":s?.exitType??"physics-bin-exit",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,bodyId:i,datum:a?.datum,x:a?.x,y:a?.y,sensorId:n,binId:s?.binId??n})};for(const e of Array.from(n).sort())t.has(e)||i("enter",e);for(const e of Array.from(t).sort())n.has(e)||i("exit",e);return n}(this.world,this.activeSensorPairs,this.observationContext(e))}removeActiveSensorPairsForBodies(e){!function(e,t){for(const r of e)t.has(ts(r).bodyId)&&e.delete(r)}(this.activeSensorPairs,e)}observationContext(e){return{elapsedSeconds:this.elapsedSeconds,observation:this.observation,emit:t=>this.emitObservation(t,e)}}emitObservation(e,t){t?.push(e),this.observation.onObservation?.(e)}evaluateBodyBudget(){return zi({bodyLimit:this.config.bodyLimit,engineMaxBodiesHint:this.world.capabilities.maxBodiesHint,evictionEnabled:!1!==this.config.eviction,liveBodies:this.liveBodyOrder.length,queuedBodies:this.queue.length,sedimentEnabled:this.sediment.isEnabled(),options:this.bodyBudget})}observeBodyBudget(e){const t=this.evaluateBodyBudget();if("ok"===t.state||!1===this.bodyBudget)return this.bodyBudgetObservationKey="ok",t;const r=`${t.state}:${t.action}`;return r===this.bodyBudgetObservationKey||(this.bodyBudgetObservationKey=r,this.emitObservation({type:"overflow"===t.state?"physics-budget-overflow":"physics-budget-warning",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,budgetAction:t.action,bodyLimit:t.bodyLimit,engineMaxBodiesHint:t.engineMaxBodiesHint,liveBodies:t.liveBodies,overflow:t.overflow,projectedBodies:t.projectedBodies,queuedBodies:t.queuedBodies,warnAt:t.warnAt},e)),t}syncSimulationState(e){const t=Cs(this.paused,this.visible,this.queue.length>0,this.world.allSleeping());if(t===this.simulationState)return;const r=this.simulationState;this.simulationState=t,function(e,t,r){r.observation.onSimulationStateChange?.(t,e),"running"!==t&&"settled"!==t||r.emit({type:"running"===t?"sim-active":"sim-idle",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,simulationState:t,previousSimulationState:e})}(r,t,this.observationContext(e))}evictOverflow(e){if(!1===this.config.eviction)return{evicted:[],sedimented:[]};const t=Math.max(0,Math.floor(this.config.bodyLimit));if(!Number.isFinite(t))return{evicted:[],sedimented:[]};const r=this.liveBodyOrder.length-t;if(0>=r)return{evicted:[],sedimented:[]};const n=("sleeping-first"===this.config.eviction?this.sleepingFirstEvictionOrder():this.liveBodyOrder.slice()).slice(0,r);if(0===n.length)return{evicted:[],sedimented:[]};const o=this.absorbSediment(n,e);this.world.remove(n);const i=new Set(n);return this.liveBodyOrder=this.liveBodyOrder.filter(e=>!i.has(e)),this.removeActiveSensorPairsForBodies(i),{evicted:n,sedimented:o}}absorbSediment(e,t){const r=new Map(this.world.readState().map(e=>[e.id,e])),n=[];for(const o of e){const e=r.get(o);if(!e)continue;const i=this.sediment.add(e);i&&(n.push(o),this.emitObservation({type:"physics-sediment",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,bodyId:o,datum:e.datum,x:e.x,y:e.y,binId:i.id,count:i.count,total:i.total},t))}return n}sleepingFirstEvictionOrder(){const e=new Map(this.world.readState().map(e=>[e.id,e.sleeping])),t=[],r=[];for(const n of this.liveBodyOrder)e.get(n)?t.push(n):r.push(n);return[...t,...r]}},Ss=l(require("react")),As=require("react"),js=l(require("react")),$s=require("react");function Ms(e){if(!e.accessibility)return e;let t=e;if(e.accessibility.colorBlindSafe&&(t={...t,colors:{...t.colors,categorical:Bs}}),e.accessibility.highContrast){const e="dark"===t.mode;t={...t,colors:{...t.colors,text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"}}}return t}var Bs=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],Ws={mode:"light",colors:{primary:"#00a2ce",secondary:"#6c757d",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",diverging:"RdBu",background:"transparent",surface:"#ffffff",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc",selection:"#00a2ce",selectionOpacity:.15,success:"#2ca02c",danger:"#d62728",warning:"#f0ad4e",error:"#b4181b",info:"#00a2ce"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:12}},Ps={mode:"dark",colors:{primary:"#4fc3f7",secondary:"#90a4ae",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",diverging:"RdBu",background:"#1a1a2e",surface:"#252540",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555",selection:"#4fc3f7",selectionOpacity:.15,success:"#81c784",danger:"#ef5350",warning:"#ffb74d",error:"#d84848",info:"#4fc3f7"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:12}},Is={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:Bs,sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1,success:"#006400",danger:"#cc0000",warning:"#b15a00",error:"#8b0000",info:"#0000cc"},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};function Ls(e,t){if("light"===t)return Ws;if("dark"===t)return Ps;if("high-contrast"===t)return Is;if("string"==typeof t)return void 0!==console&&console.warn(`[ThemeStore] Unknown theme preset "${t}". Keeping current theme.`),e;if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?Ps:Ws;return Ms({...e,...t,colors:{...e.colors,...t.colors||{}},typography:{...e.typography,...t.typography||{}}})}return Ms({...e,...t,colors:{...e.colors,...t.colors||{}},typography:{...e.typography,...t.typography||{}}})}var[Rs,Ts]=_e(e=>({theme:Ws,setTheme(t){e(e=>({theme:Ls(e.theme,t)}))}})),Fs=require("react");var Es=require("react"),Ns=()=>"undefined"!=typeof performance?performance.now():Date.now();function Os(e,t){const r=e();return Number.isFinite(r)?r:t}var Ds=class{constructor(e={}){this.randomSource=Math.random,this.subscribers=new Set,this.now=()=>this.advance(),this.random=()=>this.randomSource(),this.clock=e.clock??Ns,this.lastWallTime=Os(this.clock,0),this.logicalTime=this.lastWallTime,this.pausedValue=!0===e.paused,this.visibleValue=!1!==e.visible,this.setRandomSource(e.random,e.seed)}get isActive(){return!this.pausedValue&&this.visibleValue}get paused(){return this.pausedValue}get seed(){return this.seedValue}get visible(){return this.visibleValue}configure(e){this.setClock(e.clock),this.setRandomSource(e.random,e.seed)}setPaused(e){this.pausedValue!==e&&(this.advance(),this.pausedValue=e,this.emit())}setVisible(e){this.visibleValue!==e&&(this.advance(),this.visibleValue=e,this.emit())}snapshot(){return{now:this.now(),paused:this.pausedValue,seed:this.seedValue,visible:this.visibleValue}}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}advance(){const e=Os(this.clock,this.lastWallTime),t=Math.max(0,e-this.lastWallTime);return this.lastWallTime=e,this.isActive&&(this.logicalTime+=t),this.logicalTime}emit(){for(const e of this.subscribers)e()}setClock(e){const t=e??Ns;t!==this.clock&&(this.advance(),this.clock=t,this.lastWallTime=Os(t,this.lastWallTime))}setRandomSource(e,t){const r=function(e){return"number"==typeof e&&Number.isFinite(e)?Math.trunc(e):void 0}(t);e===this.randomInput&&r===this.seedValue||(this.randomInput=e,this.seedValue=r,this.randomSource=e??(void 0===r?Math.random:function(e){let t=e>>>0;return()=>{t+=1831565813;let e=t;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296}}(r)))}},zs="undefined"==typeof window?$s.useEffect:$s.useLayoutEffect,qs={requestAnimationFrame:e=>("undefined"==typeof window?globalThis:window).requestAnimationFrame(e),cancelAnimationFrame:e=>("undefined"==typeof window?globalThis:window).cancelAnimationFrame(e)};function _s(e,t,r){return"function"==typeof e?e({size:t,margin:r}):e}function Hs(e){const t=function(){const[e,t]=(0,Fs.useState)(()=>!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return(0,Fs.useEffect)(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return t(e.matches),function(e,t){if("function"==typeof e.addEventListener)return e.addEventListener("change",t),()=>e.removeEventListener("change",t);const r=e;return r.addListener(t),()=>r.removeListener(t)}(e,e=>t(e.matches))},[]),e}(),r=(0,$s.useRef)(t);r.current=t;const[n,o]=function(e,t,r){const n=(0,Es.useRef)(null),[o,i]=(0,Es.useState)(null);return(0,Es.useEffect)(()=>{if(!t&&!r)return;const e=n.current;if(!e)return;const o=new ResizeObserver(e=>{for(const t of e){const{width:e,height:r}=t.contentRect;i(t=>t&&t.w===e&&t.h===r?t:{w:e,h:r})}});return o.observe(e),()=>o.disconnect()},[t,r]),[n,[t&&o?o.w:e[0],r&&o?o.h:e[1]]]}(e.sizeProp,e.responsiveWidth,e.responsiveHeight),i=!!e.title,s=!!e.legend&&"top"===e.legendPosition,a=(0,$s.useMemo)(()=>function(e,t,r=!1){const n=r?t?58:34:t?36:0;return n>e.top?{...e,top:n}:e}({...e.marginDefault,...e.userMargin},i,s),[e.marginDefault,e.userMargin,i,s]),l=o[0]-a.left-a.right,c=o[1]-a.top-a.bottom,d=_s(e.foregroundGraphics,o,a),u=_s(e.backgroundGraphics,o,a),p=Ts(e=>e.theme),{transition:y,introEnabled:h}=function(e,t){if(!1===e)return{transition:void 0,introEnabled:!1};const r="undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return{transition:e?!0===e?{duration:300}:{duration:e.duration??300,easing:"linear"===e.easing?"linear":"ease-out"}:t,introEnabled:!(r||!e||!0!==e&&!1===e.intro)}}(e.animate,e.transitionProp),f="semiotic-table-"+js.useId(),m=(0,$s.useRef)(null);if(!m.current){const t=!e.suspendWhenHidden||"undefined"==typeof document||!document.hidden;m.current=new Ds({clock:e.clock,random:e.random,seed:e.seed,paused:e.paused,visible:t})}const b=m.current;b.configure({clock:e.clock,random:e.random,seed:e.seed});const g=(0,$s.useRef)(null),v=(0,$s.useRef)(e.frameScheduler??qs);v.current=e.frameScheduler??qs;const x=(0,$s.useRef)(null),k=(0,$s.useRef)(!1),C=(0,$s.useRef)(()=>{}),w=(0,$s.useCallback)(()=>{if(null!==g.current||k.current)return;const e=v.current;let t=!1,r=!1;const n=e.requestAnimationFrame(()=>{t=!0;const e=!r;e&&(k.current=!0),g.current=null,x.current=null;try{C.current()}finally{e&&(k.current=!1)}});r=!0,t||(g.current=n,x.current=e)},[]),S=(0,$s.useCallback)(()=>{null!==g.current&&((x.current??v.current).cancelAnimationFrame(g.current),g.current=null,x.current=null)},[]);zs(()=>{b.setPaused(!0===e.paused)},[b,e.paused]),(0,$s.useEffect)(()=>{if(!e.suspendWhenHidden||"undefined"==typeof document)return void b.setVisible(!0);const t=()=>b.setVisible(!document.hidden);return t(),document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[b,e.suspendWhenHidden]),(0,$s.useEffect)(()=>()=>{S()},[S]);const A=(0,$s.useRef)(()=>{}),j=(0,$s.useRef)(()=>{}),$=(0,$s.useRef)(null),M=(0,$s.useRef)(null),B=(0,$s.useRef)(null),W=(0,$s.useCallback)(()=>{const e=$.current;$.current=null,e&&A.current(e)},[]),P=(0,$s.useCallback)(e=>{if($.current={clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType},null===M.current){const e=v.current;let t=!1;const r=e.requestAnimationFrame(()=>{t=!0,M.current=null,B.current=null,W()});t||(M.current=r,B.current=e)}},[W]),I=(0,$s.useCallback)(()=>{$.current=null,null!==M.current&&((B.current??v.current).cancelAnimationFrame(M.current),M.current=null,B.current=null),j.current()},[]);(0,$s.useEffect)(()=>()=>{$.current=null,null!==M.current&&((B.current??v.current).cancelAnimationFrame(M.current),M.current=null,B.current=null)},[]);const L=e.themeDirtyRef;return zs(()=>{L&&(mo++,L.current=!0,w())},[p,w,L]),{reducedMotion:t,reducedMotionRef:r,responsiveRef:n,size:o,margin:a,adjustedWidth:l,adjustedHeight:c,resolvedForeground:d,resolvedBackground:u,currentTheme:p,transition:y,introEnabled:h,tableId:f,frameRuntime:b,rafRef:g,renderFnRef:C,scheduleRender:w,cancelRender:S,hoverHandlerRef:A,hoverLeaveRef:j,onPointerMove:P,onPointerLeave:I}}var Gs=require("react"),Vs="undefined"!=typeof window?Gs.useLayoutEffect:Gs.useEffect,Us=()=>()=>{},Ys=()=>!1,Qs=()=>!0,Xs=require("react"),Zs=require("react/jsx-runtime");function Ks({children:e,size:t,margin:r,overflowVisible:n=!1}){return e?(0,Zs.jsx)("svg",{style:{position:"absolute",left:0,top:0,width:t[0],height:t[1],pointerEvents:"none",overflow:n?"visible":void 0},children:(0,Zs.jsx)("g",{transform:`translate(${r.left},${r.top})`,children:e})}):null}var Js=l(require("react")),ea=require("react/jsx-runtime"),ta={background:"var(--semiotic-tooltip-bg, rgba(0, 0, 0, 0.85))",color:"var(--semiotic-tooltip-text, white)",padding:"8px 12px",borderRadius:"var(--semiotic-tooltip-radius, 6px)",fontSize:"var(--semiotic-tooltip-font-size, 14px)",fontFamily:"var(--semiotic-font-family, inherit)",lineHeight:"1.5",boxShadow:"var(--semiotic-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15))",pointerEvents:"none",maxWidth:"300px",wordWrap:"break-word"};function ra(e,t){return"function"==typeof t?t(e):e[t]}function na(e,t){if(t)return t(e);if(null==e)return"";if("number"==typeof e){if(!Number.isFinite(e))return e+"";const t=Number.isInteger(e)?e:parseFloat(e.toPrecision(6));return Math.abs(t)>9999?t.toLocaleString():t+""}return e instanceof Date?e.toLocaleDateString():"object"==typeof e&&null!==e?void 0!==e.id?e.id+"":void 0!==e.name?e.name+"":JSON.stringify(e):e+""}function oa(e={}){const{fields:t,title:r,format:n,style:o={},className:i=""}=e;return e=>{if(!e||"object"!=typeof e)return null;let s;const a=[];if(r){const t=ra(e,r);s=na(t,n)}if(t&&t.length>0)t.forEach(t=>{let r,o,i;"string"==typeof t?(r=t,o=t,i=n):(r=t.label,o=t.accessor||t.key||"",i=t.format||n);const s=ra(e,o);a.push({label:r,value:na(s,i)})});else if(!r){const t=["value","y","name","id","label"];for(const r of t)if(void 0!==e[r]){s=na(e[r],n);break}if(!s){const t=Object.keys(e).filter(e=>!e.startsWith("_"));t.length>0&&(s=na(e[t[0]],n))}}const l={...ta,...o};return(0,ea.jsxs)("div",{className:("semiotic-tooltip "+i).trim(),style:l,children:[s&&(0,ea.jsx)("div",{style:{fontWeight:a.length>0?"bold":"normal"},children:s}),a.map((e,t)=>(0,ea.jsxs)("div",{style:{marginTop:0===t&&s?"4px":0},children:[e.label&&(0,ea.jsxs)("span",{children:[e.label,": "]}),e.value]},t))]})}}function ia(e){if(!0!==e){if("function"==typeof e){const t=e;return e=>{let r=Array.isArray(n=!0===e?.__semioticHoverData||e&&void 0!==e.data&&"number"==typeof e.x&&"number"==typeof e.y&&e&&("node"===e.type||"edge"===e.type||void 0!==e.nodeOrEdge||void 0!==e.allSeries||void 0!==e.stats||void 0!==e.__chartType)?e.data??{}:e)?n[0]:n;var n;if(!r)return null;if(("node"===e?.nodeOrEdge&&"number"==typeof r?.x0&&"number"==typeof r?.x1||"edge"===e?.nodeOrEdge&&"number"==typeof r?.sankeyWidth)&&r.data&&"object"==typeof r.data&&(r=r.data),!r)return null;const o=t(r);return null==o?null:(0,ea.jsx)("div",{className:"semiotic-tooltip",style:ta,children:o})}}return!1!==e&&void 0!==e&&("object"==typeof e&&null!==e&&("fields"in e||"title"in e)?oa(e):oa())}}var sa=require("react/jsx-runtime");function aa({x:e,y:t,containerWidth:r,containerHeight:n,margin:o,children:i,className:s="stream-frame-tooltip",zIndex:a=1}){const l=Number.isFinite(e)&&Number.isFinite(t),c=Js.useRef(null),[d,u]=Js.useState(null);Js.useLayoutEffect(()=>{const e=c.current;if(!e)return;const t=()=>{const t=e.getBoundingClientRect();Number.isFinite(t.width)&&Number.isFinite(t.height)&&u(e=>e&&.5>Math.abs(e.width-t.width)&&.5>Math.abs(e.height-t.height)?e:{width:t.width,height:t.height})};if(t(),"undefined"==typeof ResizeObserver)return;const r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[s,r,n,l]);let p;p=d?`translate(${d.width+12>r-e?"calc(-100% - 12px)":"12px"}, ${d.height+12>n-t?"calc(-100% - 4px)":"4px"})`:`translate(${e>.7*r?"calc(-100% - 12px)":"12px"}, ${.3*n>t?"4px":"calc(-100% - 4px)"})`;const y=function(e){if(!Js.isValidElement(e))return!1;const t=e.type;if("string"!=typeof t&&t&&!0===t.ownsChrome)return!0;const r=e.props;if(!0===r["data-semiotic-tooltip-chrome"])return!0;if("true"===r["data-semiotic-tooltip-chrome"])return!0;const n=r.style;if(n&&"object"==typeof n){if(null!=n.background&&""!==n.background&&"transparent"!==n.background)return!0;if(null!=n.backgroundColor&&""!==n.backgroundColor&&"transparent"!==n.backgroundColor)return!0}return!1}(i),h=y?null:ta;return l?(0,sa.jsx)("div",{ref:c,className:y?s:(s+" semiotic-tooltip").trim(),style:{...h||{},position:"absolute",left:o.left+e,top:o.top+t,transform:p,pointerEvents:"none",zIndex:a,width:"max-content"},children:i}):null}var la=l(require("react")),ca=require("d3-scale"),da=l(require("react")),ua=require("react/jsx-runtime"),pa={fill:(e,t)=>(0,ua.jsx)("rect",{style:e,width:t,height:t}),line:(e,t)=>(0,ua.jsx)("line",{style:e,x1:0,y1:0,x2:t,y2:t})};function ya(e,t,r,n,o){let i;return i="function"==typeof r?r(e):(0,pa[r])(n(e,t),o),i}function ha({swatchSize:e}){return(0,ua.jsx)("path",{d:`M${.25*e},${.55*e} L${.45*e},${.75*e} L${.8*e},${.3*e}`,fill:"none",stroke:"white",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})}function fa(e,t,r){return r&&r.size>0?r.has(e.label)?1:.3:null!=t?e.label===t?1:.3:1}var ma=(e,t,r,n,o,i,s,a,l,c,d)=>{const{type:u="fill",styleFn:p,items:y}=e,h=[];let f=0;const m=!(!t&&!r),b="isolate"===c||void 0===c&&null!=o,{swatchSize:g,labelGap:v,rowHeight:x}=d;return y.forEach((e,c)=>{const d=ya(e,c,u,p,g),k=fa(e,n,o),C=o&&o.size>0&&o.has(e.label);h.push((0,ua.jsxs)("g",{transform:`translate(0,${f})`,onClick:t?()=>t(e):void 0,onMouseEnter:r?()=>r(e):void 0,onMouseLeave:r?()=>r(null):void 0,tabIndex:m?a===i&&c===s?0:-1:void 0,role:m?"option":void 0,"aria-selected":m&&b?C||!1:void 0,"aria-current":m&&!b&&null!=n&&e.label===n||void 0,"aria-label":e.label,onKeyDown:m?r=>{if("Enter"!==r.key&&" "!==r.key||(r.preventDefault(),t&&t(e)),"ArrowDown"===r.key||"ArrowUp"===r.key){r.preventDefault();const e=(c+("ArrowDown"===r.key?1:-1)+y.length)%y.length;l(a,e);const t=r.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:m?t=>{l(a,c),r&&r(e);const n=t.currentTarget.querySelector(".semiotic-legend-focus-ring");n&&n.setAttribute("visibility","visible")}:void 0,onBlur:m?e=>{r&&r(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:m?"pointer":"default",opacity:k,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[m&&(0,ua.jsx)("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:g+v+2+7*e.label.length,height:g+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),d,C&&(0,ua.jsx)(ha,{swatchSize:g}),(0,ua.jsx)("text",{y:g/2,x:g+v,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+c)),f+=x}),h};function ba({config:e,orientation:t="vertical",width:r=100}){const{colorFn:n,domain:o,label:i,format:s}=e,a=s||(e=>Math.round(100*e)/100+""),l="grad-legend-"+da.useId();if("horizontal"===t){const e=12,t=Math.min(r,200),s=Math.max(0,(r-t)/2),c=[];for(let e=0;64>=e;e++){const t=e/64;c.push((0,ua.jsx)("stop",{offset:100*t+"%",stopColor:n(o[0]+t*(o[1]-o[0]))},e))}return(0,ua.jsxs)("g",{"aria-label":i||"Gradient legend",children:[(0,ua.jsx)("defs",{children:(0,ua.jsx)("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:c})}),i&&(0,ua.jsx)("text",{x:s+t/2,y:-4,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),(0,ua.jsx)("rect",{x:s,y:0,width:t,height:e,fill:`url(#${l})`,rx:2}),(0,ua.jsx)("text",{x:s,y:e+12,textAnchor:"start",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[0])}),(0,ua.jsx)("text",{x:s+t,y:e+12,textAnchor:"end",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[1])})]})}const c=[];for(let e=0;64>=e;e++){const t=e/64;c.push((0,ua.jsx)("stop",{offset:100*t+"%",stopColor:n(o[1]-t*(o[1]-o[0]))},e))}return(0,ua.jsxs)("g",{"aria-label":i||"Gradient legend",children:[i&&(0,ua.jsx)("text",{x:7,y:-6,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),(0,ua.jsx)("defs",{children:(0,ua.jsx)("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:c})}),(0,ua.jsx)("rect",{x:0,y:0,width:14,height:100,fill:`url(#${l})`,rx:2}),(0,ua.jsx)("text",{x:19,y:10,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[1])}),(0,ua.jsx)("text",{x:19,y:100,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[0])})]})}function ga(e){const{legendGroups:t,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,legendInteraction:s,title:a="Legend",width:l=100,height:c=20,orientation:d="vertical",legendLayout:u}=e,p=function(e){const t=Math.max(1,e?.swatchSize??16),r=Math.max(t,e?.rowHeight??22);return{swatchSize:t,labelGap:Math.max(0,e?.labelGap??6),itemGap:Math.max(0,e?.itemGap??10),rowHeight:r,align:"left"===e?.align?"start":"right"===e?.align?"end":e?.align??"start",maxWidth:e?.maxWidth}}(u),[y,h]=da.useState(0),[f,m]=da.useState(0),b=da.useCallback((e,t)=>{h(e),m(t)},[]),g="vertical"===d?(({legendGroups:e,width:t,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:s,focusedItemIndex:a,onFocusedIndexChange:l,legendInteraction:c,metrics:d})=>{let u=24;const p=[];return e.forEach((e,y)=>{u+=5,p.push((0,ua.jsx)("line",{stroke:"gray",x1:0,y1:u,x2:t,y2:u},"legend-top-line legend-symbol-"+y)),u+=8,e.label&&(u+=16,p.push((0,ua.jsx)("text",{y:u,className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label},"legend-text-"+y)),u+=8),p.push((0,ua.jsx)("g",{className:"legend-item",transform:`translate(0,${u})`,children:ma(e,r,n,o,i,s,a,y,l,c,d)},"legend-group-"+y)),u+=e.items.length*d.rowHeight+8}),p})({legendGroups:t||[],width:l,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:y,focusedItemIndex:f,onFocusedIndexChange:b,legendInteraction:s,metrics:p}):(({legendGroups:e,height:t,width:r,customClickBehavior:n,customHoverBehavior:o,highlightedCategory:i,isolatedCategories:s,focusedGroupIndex:a,focusedItemIndex:l,onFocusedIndexChange:c,legendInteraction:d,metrics:u})=>{let p=0;const y=[];e.forEach((e,t)=>{let h=0;e.label&&(h+=16);const f=((e,t,r,n,o,i,s,a,l,c,d,u)=>{const{type:p="fill",styleFn:y,items:h}=e,f=[],{swatchSize:m,labelGap:b,itemGap:g,rowHeight:v,align:x}=d,k=!(!t&&!r),C="isolate"===c||void 0===c&&null!=o,w=h.map(e=>m+b+7*e.label.length),S=[];let A=0,j=0;w.forEach((e,t)=>{const r=0===j?e:j+g+e;u&&u>0&&j>0&&r>u?(S.push({start:A,end:t,width:j}),A=t,j=e):j=r}),h.length>0&&S.push({start:A,end:h.length,width:j}),S.forEach((e,c)=>{let d="center"===x?Math.max(0,((u??e.width)-e.width)/2):"end"===x?Math.max(0,(u??e.width)-e.width):0;for(let u=e.start;e.end>u;u++){const e=h[u],x=ya(e,u,p,y,m),S=fa(e,n,o),A=o&&o.size>0&&o.has(e.label);f.push((0,ua.jsxs)("g",{transform:`translate(${d},${c*v})`,onClick:t?()=>t(e):void 0,onMouseEnter:r?()=>r(e):void 0,onMouseLeave:r?()=>r(null):void 0,tabIndex:k?a===i&&u===s?0:-1:void 0,role:k?"option":void 0,"aria-selected":k&&C?A||!1:void 0,"aria-current":k&&!C&&null!=n&&e.label===n||void 0,"aria-label":e.label,onKeyDown:k?r=>{if("Enter"!==r.key&&" "!==r.key||(r.preventDefault(),t&&t(e)),"ArrowRight"===r.key||"ArrowLeft"===r.key){r.preventDefault();const e=(u+("ArrowRight"===r.key?1:-1)+h.length)%h.length;l(a,e);const t=r.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:k?t=>{l(a,u),r&&r(e);const n=t.currentTarget.querySelector(".semiotic-legend-focus-ring");n&&n.setAttribute("visibility","visible")}:void 0,onBlur:k?e=>{r&&r(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:k?"pointer":"default",opacity:S,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[k&&(0,ua.jsx)("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:m+b+2+7*e.label.length,height:m+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),x,A&&(0,ua.jsx)(ha,{swatchSize:m}),(0,ua.jsx)("text",{y:m/2,x:m+b,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+u)),d+=w[u]+g}});const $=Math.max(0,...S.map(e=>e.width)),M=S.length;return{items:f,offset:$,totalRows:M,totalHeight:M*v}})(e,n,o,i,s,a,l,t,c,d,u,u.maxWidth??r);h+=f.offset+5,y.push({label:e.label,...f,offset:h,totalRows:f.totalRows,totalHeight:f.totalHeight}),p+=h+12});const h=u.maxWidth??r;let f=p>h?0:"center"===u.align?Math.max(0,(h-p)/2):"end"===u.align?Math.max(0,h-p):0;const m=[];return y.forEach((r,n)=>{const o=e[n];o.label&&(m.push((0,ua.jsx)("text",{transform:`translate(${f},0) rotate(90)`,textAnchor:"start",className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:o.label},"legend-text-"+n)),f+=16),m.push((0,ua.jsx)("g",{className:"legend-item",transform:`translate(${f},0)`,children:r.items},"legend-group-"+n)),f+=r.offset+5,e[n+1]&&m.push((0,ua.jsx)("line",{stroke:"gray",x1:f,y1:-8,x2:f,y2:(r.totalHeight||t)+0+8},"legend-top-line legend-symbol-"+n)),f+=12}),(0,ua.jsx)("g",{children:m})})({legendGroups:t||[],title:a,height:c,width:l,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:y,focusedItemIndex:f,onFocusedIndexChange:b,legendInteraction:s,metrics:p}),v=!(!r&&!n);return(0,ua.jsxs)("g",{role:v?"listbox":void 0,"aria-multiselectable":!(!v||"isolate"!==s&&(void 0!==s||null==i))||void 0,"aria-label":"Chart legend",style:{fontFamily:"var(--semiotic-font-family, sans-serif)"},children:[void 0!==a&&""!==a&&"vertical"===d&&(0,ua.jsx)("text",{className:"legend-title",y:16,x:l/2,textAnchor:"middle",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:a}),g]})}function va(e){return"object"==typeof e&&null!==e&&"legendGroups"in e}var xa=require("react/jsx-runtime");function ka(e){const{legend:t,totalWidth:r,totalHeight:n,margin:o,legendPosition:i="right",legendLayout:s,title:a,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u,legendInteraction:p}=e;if(!t)return null;const y="top"===i||"bottom"===i,h=!!a,f=Math.max(0,r-o.left-o.right),m=Math.max(1,y?s?.maxWidth??f:100);let b,g;return"left"===i?(b=Math.max(4,o.left-m-10),g=o.top):"top"===i?(b=o.left,g=h?32:8):"bottom"===i?(b=o.left,g=n-o.bottom+38):(b=r-o.right+10,g=o.top),(0,xa.jsx)("g",{transform:`translate(${b}, ${g})`,children:(v=t,"object"==typeof v&&null!==v&&"gradient"in v?(0,xa.jsx)(ba,{config:t.gradient,orientation:y?"horizontal":"vertical",width:m}):va(t)?(0,xa.jsx)(ga,{legendGroups:t.legendGroups,title:"",width:m,orientation:y?"horizontal":"vertical",legendLayout:s,customHoverBehavior:l,customClickBehavior:c,highlightedCategory:d,isolatedCategories:u,legendInteraction:p}):t)});var v}var Ca=require("react/jsx-runtime"),wa={secondary:0,primary:3},Sa=".annotation-deferred{opacity:0;pointer-events:none;transition:opacity .12s ease}.stream-xy-frame:hover .annotation-deferred,.stream-ordinal-frame:hover .annotation-deferred,.stream-network-frame:hover .annotation-deferred,.stream-geo-frame:hover .annotation-deferred,.stream-xy-frame:focus-within .annotation-deferred,.stream-ordinal-frame:focus-within .annotation-deferred,.stream-network-frame:focus-within .annotation-deferred,.stream-geo-frame:focus-within .annotation-deferred{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){.annotation-deferred{transition:none}}";function Aa(e){return!0===e?._annotationDeferred}function ja(e){return"blended"===e?.cohesion||"layer"===e?.cohesion?e.cohesion:null}function $a(e){const t=e?.provenance?.confidence;return"number"==typeof t&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):null}function Ma(e){return Math.max(.72,.95-.06*e)}var Ba=l(require("react")),Wa=require("react/jsx-runtime");function Pa(e,t=120,r=8){if(!e)return[];const n=Math.max(1,Math.floor(t/r)),o=e.split(/\s+/),i=[];let s="";for(const e of o)s&&s.length+1+e.length>n?(i.push(s),s=e):s=s?`${s} ${e}`:e;return s&&i.push(s),i}function Ia(e,t,r,n){return"curly"===e?n?`M0,0 C${.6*r},0 ${.4*r},${t/2} ${r},${t/2} C${.4*r},${t/2} ${.6*r},${t} 0,${t}`:`M0,0 C0,${.6*r} ${t/2},${.4*r} ${t/2},${r} C${t/2},${.4*r} ${t},${.6*r} ${t},0`:n?`M0,0 L${r},0 L${r},${t} L0,${t}`:`M0,0 L0,${r} L${t},${r} L${t},0`}function La(e,t,r,n){if(!e)return(0,Wa.jsx)("g",{className:"annotation-note"});const{label:o,title:i,orientation:s,align:a,wrap:l=120,noWrap:c}=e;if(!o&&!i)return(0,Wa.jsx)("g",{className:"annotation-note"});let d=s;d||(d=Math.abs(t)>Math.abs(r)?"leftRight":"topBottom");let u=a;u&&"dynamic"!==u||(u="topBottom"===d?0>t?"right":"left":0>r?"bottom":"top");let p="start";"topBottom"===d?"right"===u?p="end":"middle"===u&&(p="middle"):p=0>t?"end":"start";const y=16,h=i?c?[i]:Pa(i,l):[],f=o?c?[o]:Pa(o,l):[],m="leftRight"===d?"end"===p?-4:4:0;let b=0;const g=[],v=n||"var(--semiotic-annotation-color, var(--semiotic-text, #333))";e.useHTML||e.html?g.push((0,Wa.jsx)("foreignObject",{className:"annotation-note-html",x:"end"===p?m-l:"middle"===p?m-l/2:m,y:-16,width:l,height:Math.max(y,(h.length+f.length)*y+(i&&o?2:0))+y,style:{overflow:"visible"},children:(0,Wa.jsxs)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{color:v,fontSize:"12px",lineHeight:"16px",overflow:"visible",textAlign:"end"===p?"right":"middle"===p?"center":"left",whiteSpace:c?"nowrap":"normal",wordBreak:"break-word"},children:[i&&(0,Wa.jsx)("div",{className:"annotation-note-title",style:{fontWeight:"bold"},children:i}),o&&(0,Wa.jsx)("div",{className:"annotation-note-label",children:o})]})},"annotation-note-html")):(h.length>0&&(g.push((0,Wa.jsx)("text",{className:"annotation-note-title",fill:v,textAnchor:p,fontWeight:"bold",children:h.map((e,t)=>(0,Wa.jsx)("tspan",{x:m,dy:0===t?0:y,children:e},t))},"annotation-note-title")),b=h.length*y),f.length>0&&g.push((0,Wa.jsx)("text",{className:"annotation-note-label",fill:v,textAnchor:p,y:b,children:f.map((e,t)=>(0,Wa.jsx)("tspan",{x:m,dy:0===t?0:y,children:e},t))},"annotation-note-label")));let x=null;if((i||o)&&(0!==t||0!==r))if("topBottom"===d){const e=Math.min(l,120);let t=0,r=e;"end"===p?(t=-e,r=0):"middle"===p&&(t=-e/2,r=e/2),x=(0,Wa.jsx)("line",{className:"note-line",x1:t,x2:r,y1:0,y2:0,stroke:n||"var(--semiotic-text-secondary, currentColor)"})}else{const e=(h.length+f.length)*y+(f.length>0?y:0);let t=0,r=e;"bottom"===u?(t=-e,r=0):"middle"===u&&(t=-e/2,r=e/2),x=(0,Wa.jsx)("line",{className:"note-line",x1:0,x2:0,y1:t,y2:r,stroke:n||"var(--semiotic-text-secondary, currentColor)"})}const k=Math.max(0,h.length+f.length-1)*y;let C=0;return"topBottom"===d?C=0>r?-(k+2):18:"leftRight"===d&&(C="middle"===u?-(k+y+(f.length>0&&h.length>0?2:0))/2+8:"bottom"===u||0>r?-(k+2):18),(0,Wa.jsxs)("g",{className:"annotation-note",transform:`translate(${t},${r})`,children:[(0,Wa.jsx)("g",{className:"annotation-note-content",transform:0!==C?`translate(0,${C})`:void 0,children:g}),x]})}function Ra(e,t,r,n,o){const i=[];switch(e){case"callout-circle":{const e=(t?.radius||0)+(t?.radiusPadding||0);e>0&&i.push((0,Wa.jsx)("circle",{r:e,fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"subject-circle"));break}case"callout-rect":{const e=t?.width||0,n=t?.height||0;(e>0||n>0)&&i.push((0,Wa.jsx)("rect",{width:e,height:n,fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"subject-rect"));break}case"callout-custom":t?.custom&&i.push(...Array.isArray(t.custom)?t.custom:[t.custom]);break;case"xy-threshold":{const e=n||0,s=o||0;if(void 0!==t?.x){const n=(t.x||0)-e;i.push((0,Wa.jsx)("line",{x1:n,y1:(t.y1||0)-s,x2:n,y2:(t.y2||0)-s,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else if(void 0!==t?.y){const n=(t.y||0)-s;i.push((0,Wa.jsx)("line",{x1:(t.x1||0)-e,y1:n,x2:(t.x2||0)-e,y2:n,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else void 0!==t?.x1||void 0!==t?.x2?i.push((0,Wa.jsx)("line",{x1:(t.x1||0)-e,y1:0,x2:(t.x2||0)-e,y2:0,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line")):void 0===t?.y1&&void 0===t?.y2||i.push((0,Wa.jsx)("line",{x1:0,y1:(t.y1||0)-s,x2:0,y2:(t.y2||0)-s,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"));break}case"bracket":{const e=t?.type||"curly",n=t?.width??t?.height;void 0!==n&&i.push((0,Wa.jsx)("path",{d:Ia(e,n,t?.depth||30,void 0===t?.width),fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"bracket-path"));break}}return(0,Wa.jsx)("g",{className:"annotation-subject",children:i})}function Ta(e,t,r,n,o,i){const s=[];let a=0,l=0;if("callout-circle"!==o&&"label"!==o||!i?.radius){if("callout-rect"===o&&i){const r=i.width||0,n=i.height||0;if(r>0||n>0){const o=r/2,i=n/2,s=e-o,c=t-i;if(0!==s||0!==c){const e=Math.abs(s),t=Math.abs(c),d=r/2,u=n/2,p=e*u>t*d?d/e:u/t;a=o+s*p,l=i+c*p}}}else if("bracket"===o&&i){const e=i.width,t=i.height,r=i.depth||30;void 0!==e?(a=e/2,l=r):void 0!==t&&(a=r,l=t/2)}}else{const r=(i.radius||0)+(i.radiusPadding||0);if(r>0&&(0!==e||0!==t)){const n=Math.atan2(t,e);a=Math.cos(n)*r,l=Math.sin(n)*r}}const c=Math.sqrt((e-a)**2+(t-l)**2);if(c>.5){const o=n||"var(--semiotic-text-secondary, currentColor)",i="curve"===r?.type;let d=Math.atan2(t-l,e-a);if(i){const n=(a+e)/2,i=(l+t)/2,u=-(t-l)/c,p=(e-a)/c,y=(r?.curve??.25)*c,h=n+u*y,f=i+p*y;s.push((0,Wa.jsx)("path",{className:"connector-curve",d:`M${a},${l}Q${h},${f} ${e},${t}`,fill:"none",stroke:o},"connector-line")),d=Math.atan2(f-l,h-a)}else s.push((0,Wa.jsx)("line",{x1:a,y1:l,x2:e,y2:t,stroke:o},"connector-line"));if("arrow"===r?.end){const e=10,t=16/180*Math.PI;s.push((0,Wa.jsx)("path",{d:`M${a},${l}L${a+e*Math.cos(d+t)},${l+e*Math.sin(d+t)}L${a+e*Math.cos(d-t)},${l+e*Math.sin(d-t)}Z`,fill:o,stroke:"none"},"connector-arrow"))}}return(0,Wa.jsx)("g",{className:"annotation-connector",children:s})}function Fa(e){const{x:t=0,y:r=0,dx:n,dy:o,nx:i,ny:s,note:a,connector:l,subject:c,type:d,color:u,className:p,disable:y,opacity:h,strokeDasharray:f,events:m={},"data-testid":b}=e,g=Array.isArray(t)?t[0]??0:t,v=Array.isArray(r)?r[0]??0:r,x=new Set(Array.isArray(y)?y:[]);let k=n||0,C=o||0;null!=i&&(k=i-g),null!=s&&(C=s-v);const w="string"==typeof d?d:"label";if("bracket"===w&&c&&0===k&&0===C)if(void 0!==c.width){k=c.width/2;const e=c.depth||30;C=e+(0>e?-5:5)}else if(void 0!==c.height){const e=c.depth||30;k=e+(0>e?-5:5),C=c.height/2}return(0,Wa.jsxs)("g",{className:("annotation "+(p||"")).trim(),transform:`translate(${g},${v})`,"data-testid":b,...null!=h&&{opacity:h},...f&&{strokeDasharray:f},...m,children:[!x.has("connector")&&Ta(k,C,l,u,w,c),!x.has("subject")&&Ra(w,c,u,g,v),!x.has("note")&&La(a,k,C,u)]})}function Ea(e){const{noteData:t}=e,{screenCoordinates:r}=t,n="string"==typeof t.type?t.type:"label",o=t.eventListeners||t.events||{};if(t.coordinates&&r){const e=t.nx||r[0][0]+(t.dx??0),o=t.ny||r[0][1]+(t.dy??0),i=r.map((r,i)=>{const s=Object.assign({},t,{note:0===i?t.note:{label:""},x:r[0],y:r[1],nx:e,ny:o});return(0,Wa.jsx)(Fa,{"data-testid":"semiotic-annotation",...s,type:n},"multi-annotation-"+i)});return(0,Wa.jsx)("g",{children:i})}const i=t.note||{title:"none",label:t.label},s=`${i.label}-${i.title}-${t.i}`;return(0,Wa.jsx)(Fa,{"data-testid":"semiotic-annotation",events:o,...t,type:n},s)}var Na=require("d3-hierarchy"),Oa=require("d3-shape");function Da(e){return Math.round(100*e)/100}function za(e,t=2){const r=[],n=[],o=t+1;for(let t=0;o>t;t++){let i=0;for(const[r,n]of e)null!==n&&(i+=r**t*n);r.push(i);const s=[];for(let r=0;o>r;r++){let n=0;for(const[o,i]of e)null!==i&&(n+=o**(t+r));s.push(n)}n.push(s)}n.push(r);const i=function(e,t){const r=e,n=e.length-1,o=[t];for(let e=0;n>e;e++){let t=e;for(let o=e+1;n>o;o++)Math.abs(r[e][o])>Math.abs(r[e][t])&&(t=o);for(let o=e;n+1>o;o++){const n=r[o][e];r[o][e]=r[o][t],r[o][t]=n}for(let t=e+1;n>t;t++)for(let o=n;o>=e;o--)r[o][t]-=r[o][e]*r[e][t]/r[e][e]}for(let e=n-1;e>=0;e--){let t=0;for(let i=e+1;n>i;i++)t+=r[i][e]*o[i];o[e]=(r[n][e]-t)/r[e][e]}return o}(n,o).map(Da);return{points:e.map(([e])=>[Da(e),Da(i.reduce((t,r,n)=>t+r*e**n,0))]),equation:[...i].reverse()}}function qa(e,t){const r=t.scales?.x??t.scales?.time;return r?null!=e.x?r(e.x):t.xAccessor&&null!=e[t.xAccessor]?r(e[t.xAccessor]):null:null}function _a(e,t){const r=t.scales?.y??t.scales?.value;return r?null!=e.y?r(e.y):t.yAccessor&&null!=e[t.yAccessor]?r(e[t.yAccessor]):null:null}function Ha(e){return null==e?null:e+""}function Ga(e,t,r){return t.stickyPositionCache?.set(e,r),r}function Va(e,t,r){const n=e.anchor||e.lifecycle?.anchor||"fixed";if("latest"===n){if(null!=e.pointId&&r.pointNodes&&r.pointNodes.length>0)for(let n=r.pointNodes.length-1;n>=0;n--){const o=r.pointNodes[n];if(o.pointId===e.pointId)return Ga(t,r,{x:o.x,y:o.y})}const n=function(e){const t=e.data;if(!t||0===t.length)return null;const r=t[t.length-1],n=e.scales?.x??e.scales?.time,o=e.scales?.y??e.scales?.value;if(!n||!o)return null;const i=r[e.xAccessor||"x"],s=r[e.yAccessor||"y"];return null==i||null==s?null:{x:n(i),y:o(s)}}(r);return n?Ga(t,r,n):null}if("semantic"===n){const n=function(e,t,r){const n=function(e){return Ha(e.provenance?.stableId??e.stableId)}(e);if(!n)return null;const o=r.pointNodes?.find(e=>Ha(e.pointId)===n);if(o)return Ga(t,r,{x:o.x,y:o.y});const i=r.data?.find(e=>function(e){return Ha(e.stableId??e.id??e.provenance?.stableId)}(e)===n);if(!i)return null;const s=qa(i,r),a=_a(i,r);return null==s||null==a?null:Ga(t,r,{x:s,y:a})}(e,t,r);if(n)return n}let o=null,i=null;if(null!=e.pointId&&r.pointNodes){const t=r.pointNodes.find(t=>t.pointId===e.pointId);t&&(o=t.x,i=t.y)}if(null!=o&&null!=i||(o=qa(e,r),i=_a(e,r)),null!=o&&null!=i)return Ga(t,r,{x:o,y:i});if("sticky"===n){const e=r.stickyPositionCache?.get(t);if(e)return e}return null}function Ua(e,t,r,n=50){return!(-n>e||e>(r.width||0)+n||-n>t||t>(r.height||0)+n)}var Ya=require("react/jsx-runtime"),Qa="var(--semiotic-bg, #ffffff)";function Xa(e){const{x:t,y:r,text:n,fill:o,fontSize:i=12,fontWeight:s,fontFamily:a,textAnchor:l="start",dominantBaseline:c,background:d,className:u}=e,p=function(e){return void 0===e||!0===e||"halo"===e?{type:"halo"}:!1===e||"none"===e?null:"box"===e?{type:"box"}:{type:e.type??"halo",...e}}(d),y=e=>(0,Ya.jsx)("text",{x:t,y:r,textAnchor:l,dominantBaseline:c,fill:o,fontSize:i,fontWeight:s,fontFamily:a,className:u,...e?{stroke:e.stroke,strokeWidth:e.strokeWidth,paintOrder:"stroke"}:{},children:n});if(!p)return y();if("halo"===p.type)return y({stroke:p.fill??Qa,strokeWidth:p.haloWidth??3});const h=p.padding??{x:6,y:3},f="number"==typeof h?h:h.x,m="number"==typeof h?h:h.y,b=function(e,t){return(e+"").length*t*.6}(n,i),g=i+2*m;let v,x;return v="middle"===l?t-b/2-f:"end"===l?t-b-f:t-f,x="middle"===c||"central"===c?r-g/2:"hanging"===c||"text-before-edge"===c?r-m:r-.8*i-m,(0,Ya.jsxs)("g",{className:u,children:[(0,Ya.jsx)("rect",{x:v,y:x,width:b+2*f,height:g,rx:p.radius??3,ry:p.radius??3,fill:p.fill??Qa,fillOpacity:p.opacity??.85,stroke:p.stroke,strokeWidth:p.strokeWidth}),y()]})}var Za=require("react/jsx-runtime"),Ka={linear:Oa.curveLinear,monotoneX:Oa.curveMonotoneX,monotoneY:Oa.curveMonotoneY,step:Oa.curveStep,stepAfter:Oa.curveStepAfter,stepBefore:Oa.curveStepBefore,basis:Oa.curveBasis,cardinal:Oa.curveCardinal,catmullRom:Oa.curveCatmullRom};var Ja=32,el=6,tl=4,rl=8,nl=72;var ol={ai:"AI",agent:"agent",watcher:"watcher",system:"system",import:"imported",computed:"computed",user:"you"};function il(e){if(!sl(e))return e;const t=("string"==typeof e.mobileText?e.mobileText:void 0)??("string"==typeof e.shortText?e.shortText:void 0);return!t||"string"!=typeof e.label&&null!=e.label?e:{...e,label:t}}function sl(e){return J(e)}function al(e,t){if(!e)return[];const r=Math.max(1,Math.floor(t/7)),n=e.split(/\s+/).filter(Boolean),o=[];let i="";for(const e of n)i&&i.length+e.length+1>r?(o.push(i),i=e):i=i?`${i} ${e}`:e;return i&&o.push(i),o}function ll(e,t,r,n,o){const i=e+r,s=t+n;return Math.abs(r)>Math.abs(n)?{x:0>r?i-o.width-4:i+4,y:0>n?s-o.height:s,width:o.width,height:o.height}:{x:0>r?i-o.width:i,y:0>n?s-o.height-4:s+4,width:o.width,height:o.height}}function cl(e,t){return{x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}}function dl(e,t){return Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y))}function ul(e,t,r,n,o,i,s,a){const l=cl(e,s);let c=.4*Math.hypot(t.dx,t.dy)+80*function(e,t,r,n){const o=Math.max(0,n-e.x),i=Math.max(0,n-e.y);return(o+Math.max(0,e.x+e.width-(t-n)))*e.height+(i+Math.max(0,e.y+e.height-(r-n)))*e.width}(l,o,i,a);for(const e of r)c+=12*dl(l,e);for(const e of n)c+=4*dl(l,e);return c}function pl(e){const{annotations:t,context:r,defaultOffset:n=Ja,notePadding:o=el,markPadding:i=tl,edgePadding:s=rl,preserveManualOffsets:a=!0,routeLongConnectors:l=!0,connectorThreshold:c=nl,density:d,progressiveDisclosure:u=!1,redundantCues:p=!1,responsive:y,mobile:h,cohesion:f,audience:m}=e,b=r.width||0,g=r.height||0,v="object"==typeof h?h:{},x=v.breakpoint??480,k=!!h&&x>=b,C=k&&!1!==v.preferShortText?t.map(il):t,w=k&&!d?{maxAnnotations:v.maxAnnotations??("callout-list"===v.strategy?1:2),minVisible:v.minVisible??1}:d,S=u||k&&(!1!==v.progressiveDisclosure||"callout-list"===v.strategy),A=k&&!y?v.responsive??{minWidth:x}:y,j=k&&!f?v.cohesion:f;if(0===C.length||0>=b||0>=g)return C.slice();const $=[],M=function(e,t){return(e.pointNodes||[]).map(e=>{const r=Math.max(1,e.r||1)+t;return{x:e.x-r,y:e.y-r,width:2*r,height:2*r}})}(r,i);let B=!1;const W=C.map((e,t)=>{if(!sl(e))return e;const i=function(e,t,r){if("widget"===e.type&&"number"==typeof e.px&&"number"==typeof e.py)return{x:e.px,y:e.py};const n=e.pointId??e.nodeId;if(null!=n&&r.pointNodes){const e=r.pointNodes.find(e=>e.pointId===n);if(e)return{x:e.x,y:e.y}}const o=e.coordinates,i=r.scales?.geoProjection;if(Array.isArray(o)&&o.length>=2&&i){const e=o[0],t=o[1];if("number"==typeof e&&"number"==typeof t){const r=i([e,t]);if(r&&"number"==typeof r[0]&&"number"==typeof r[1])return{x:r[0],y:r[1]}}}return r.scales||"number"!=typeof e.x||"number"!=typeof e.y?Va(e,t,r):{x:e.x,y:e.y}}(e,t,r);if(!i)return e;const d=function(e){if("widget"===e.type)return{width:"number"==typeof e.width?e.width:32,height:"number"==typeof e.height?e.height:32};const t="number"==typeof e.wrap?e.wrap:120,r=[...al("string"==typeof e.title?e.title:void 0,t),...al("string"==typeof e.label?e.label:void 0,t)],n=r.reduce((e,t)=>Math.max(e,t.length),0);return{width:Math.max(24,Math.min(t,7*n)+10),height:Math.max(18,16*r.length+6)}}(e);if(a&&("number"==typeof(u=e).dx||"number"==typeof u.dy)){const t=function(e){return"text"===e.type||"widget"===e.type?{dx:0,dy:0}:{dx:30,dy:-30}}(e);return $.push(cl(ll(i.x,i.y,"number"==typeof e.dx?e.dx:t.dx,"number"==typeof e.dy?e.dy:t.dy,d),o)),e}var u;let p=null,y=1/0;for(const e of function(e){const t=1.6*e;return[{dx:e,dy:-e},{dx:-e,dy:-e},{dx:e,dy:e},{dx:-e,dy:e},{dx:e,dy:0},{dx:-e,dy:0},{dx:0,dy:-e},{dx:0,dy:e},{dx:t,dy:-t},{dx:-t,dy:-t},{dx:t,dy:t},{dx:-t,dy:t}]}(n)){const t=ul(ll(i.x,i.y,e.dx,e.dy,d),e,$,M,b,g,o,s);y>t&&(p=e,y=t)}if(!p)return e;const h=cl(ll(i.x,i.y,p.dx,p.dy,d),o);$.push(h);const f=Math.hypot(p.dx,p.dy),m=l&&f>=c&&"text"!==e.type&&"widget"!==e.type?{...e.connector||{end:"arrow"},type:"curve"}:e.connector;return B=!0,{...e,dx:p.dx,dy:p.dy,...m?{connector:m}:{}}}),P=B?W:C.slice();let I=P;if(p){let e=!1;const t=P.map(t=>{const r=function(e){return"text"!==e.type||"string"!=typeof e.color||8>Math.hypot("number"==typeof e.dx?e.dx:0,"number"==typeof e.dy?e.dy:0)?e:{...e,_redundantConnector:!0}}(t);return r!==t&&(e=!0),r});I=e?t:P}{let e=!1;const t=I.map(t=>{if(!0!==t?.defensive)return t;const r=function(e){const t=e?.provenance;if(!t||"object"!=typeof t)return e;const r="string"==typeof t.source?ol[t.source]??t.source:null,n="number"==typeof t.confidence&&Number.isFinite(t.confidence)?Math.round(100*Math.max(0,Math.min(1,t.confidence)))+"%":null;if(!r&&!n)return e;if(null!=e.label&&"string"!=typeof e.label)return e;const o=[r,n].filter(Boolean).join(" · "),i="string"==typeof e.label?e.label:"";return i.includes(`(${o})`)?e:{...e,label:i?`${i} (${o})`:`(${o})`}}(t);return r!==t&&(e=!0),r});I=e?t:I}const L=new Set;if(w){const e="object"==typeof w?w:{},t=function(e){if(!e)return 1;const t=function(e){const t=e?.familiarity;if(!t)return 3;const r=Object.values(t).filter(e=>"number"==typeof e&&Number.isFinite(e));return 0===r.length?3:r.reduce((e,t)=>e+t,0)/r.length}(e);return t>2?4>t?1:.6:1.5}(m),r=1===t?e:{...e,maxAnnotations:Math.max(0,Math.round((e.maxAnnotations??Ne(b,g,e))*t))},{deferred:n}=function(e){const{annotations:t,width:r,height:n}=e,o=Math.max(0,e.minVisible??1),i=Ne(r,n,e),s=t.map((e,t)=>{return{annotation:e,index:t,note:(r=e,J(r))};var r}),a=s.filter(e=>e.note);if(0===a.length||i>=a.length)return{visible:t.slice(),deferred:[],budget:i};const l=a.filter(e=>Ee(e.annotation)),c=a.filter(e=>!Ee(e.annotation)).sort((e,t)=>Oe(t.annotation)-Oe(e.annotation)||e.index-t.index),d=Math.min(c.length,Math.max(Math.max(0,i-l.length),Math.max(0,o-l.length))),u=new Set([...l.map(e=>e.index),...c.slice(0,d).map(e=>e.index)]),p=[],y=[];for(const{annotation:e,index:t,note:r}of s)!r||u.has(t)?p.push(e):y.push(e);return{visible:p,deferred:y,budget:i}}({annotations:I,width:b,height:g,...r});for(const e of n)L.add(e)}if(A&&("object"==typeof A&&"number"==typeof A.minWidth?A.minWidth:480)>=b)for(const e of I)sl(e)&&"secondary"===e.emphasis&&L.add(e);if(L.size>0)for(const e of I)!0===e?.defensive&&L.delete(e);let R;return R=0===L.size?I:S?I.map(e=>L.has(e)?{...e,_annotationDeferred:!0}:e):I.filter(e=>!L.has(e)),j?function(e,t){let r=!1;const n=e.map(e=>sl(e)?"blended"===e.cohesion||"layer"===e.cohesion?e:(r=!0,{...e,cohesion:t}):e);return r?n:e}(R,j):R}var yl=require("react/jsx-runtime");function hl(e){return"circle"===e.shape.type?e.shape.radius:Math.max(e.shape.width,e.shape.height)/2}function fl(e){const{width:t,height:r,totalWidth:n,totalHeight:o,margin:i,title:s,legend:a,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u,legendPosition:p="right",legendLayout:y,pointNodes:h=[],annotations:f,onAnnotationActivate:m,onObservation:b,chartId:g,chartType:v,autoPlaceAnnotations:x,svgAnnotationRules:k,children:C}=e,w=function(e){const t=Ve(e=>e.pushObservation),r=De.useCallback(r=>{e.onObservation?.(r),t?.(r)},[e,t]);return De.useMemo(()=>({...e,onObservation:r}),[r,e])}({onAnnotationActivate:m,onObservation:b,chartId:g,chartType:v}),S=la.useMemo(()=>function(e){return e?.length?e.map(e=>null!=e.pointId||null==e.bodyId?e:{...e,pointId:e.bodyId+""}):e}(f),[f]),A=la.useMemo(()=>function(e){const{width:t,height:r,pointNodes:n=[],data:o}=e;return{scales:{x:(0,ca.scaleLinear)().domain([0,Math.max(1,t)]).range([0,Math.max(1,t)]),y:(0,ca.scaleLinear)().domain([0,Math.max(1,r)]).range([0,Math.max(1,r)])},width:t,height:r,frameType:"network",pointNodes:n,data:o,xAccessor:"x",yAccessor:"y"}}({width:t,height:r,pointNodes:h}),[r,h,t]),j=la.useMemo(()=>S&&x?pl({annotations:S,context:A,..."object"==typeof x?x:{}}):S,[A,x,S]),$=la.useMemo(()=>function(e,t={}){return function(e,r,n){switch(e.type){case"label":case"callout":case"callout-circle":case"callout-rect":{const t=Va(e,r,n);if(!t)return null;const{x:o,y:i}=t;if(!Ua(o,i,n))return null;const s="callout"===e.type?"callout-circle":e.type,a="callout-circle"===s?{radius:e.radius??12,radiusPadding:e.radiusPadding}:"callout-rect"===s?{width:e.width,height:e.height}:void 0;return(0,Za.jsx)(Ea,{noteData:{x:o,y:i,dx:e.dx??30,dy:e.dy??-30,note:{label:e.label,title:e.title,wrap:e.wrap||120},type:s,...a?{subject:a}:{},connector:e.connector||{end:"arrow"},color:e.color,disable:e.disable,opacity:e.opacity,strokeDasharray:e.strokeDasharray,className:e.className}},"ann-"+r)}case"x-threshold":{const t=qa(null!=e.value?{...e,x:e.value}:e,n);if(null==t)return null;const o=e.color||"#f97316",i=e.labelPosition||"top";let s;s="bottom"===i?(n.height||0)-4:"center"===i?(n.height||0)/2:16;const a=t>.6*(n.width||0),l=a?t-4:t+4,c=a?"end":"start";return(0,Za.jsxs)("g",{opacity:e.opacity,children:[(0,Za.jsx)("line",{x1:t,y1:0,x2:t,y2:n.height||0,stroke:o,strokeWidth:e.strokeWidth||1.5,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,Za.jsx)(Xa,{x:l,y:s,text:e.label,textAnchor:c,fill:o,fontSize:12,fontWeight:"bold",background:e.labelBackground??"halo"})]},"ann-"+r)}case"y-threshold":{const t=_a(null!=e.value?{...e,y:e.value}:e,n);if(null==t)return null;const o=e.color||"#f97316",i=e.labelPosition||"right";let a,l;"left"===i?(a=4,l="start"):"center"===i?(a=(n.width||0)/2,l="middle"):(a=(n.width||0)-4,l="end");const c=20>(s=t)?Math.min((n.height||0)-4,s+16):s-4;return(0,Za.jsxs)("g",{opacity:e.opacity,children:[(0,Za.jsx)("line",{x1:0,y1:t,x2:n.width||0,y2:t,stroke:o,strokeWidth:e.strokeWidth||1.5,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,Za.jsx)(Xa,{x:a,y:c,text:e.label,textAnchor:l,fill:o,fontSize:12,fontWeight:"bold",background:e.labelBackground??"halo"})]},"ann-"+r)}case"enclose":{const t=(e.coordinates||[]).map(e=>({x:qa({...e,type:"point"},n),y:_a({...e,type:"point"},n),r:1})).filter(e=>null!=e.x&&null!=e.y);if(2>t.length)return null;const o=(0,Na.packEnclose)(t),i=e.padding||10;return(0,Za.jsxs)("g",{children:[(0,Za.jsx)("circle",{cx:o.x,cy:o.y,r:o.r+i,fill:e.fill||"none",fillOpacity:e.fillOpacity||.1,stroke:e.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),e.label&&(0,Za.jsx)(Xa,{x:o.x,y:o.y-o.r-i-4,textAnchor:"middle",fill:e.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:e.label,background:e.labelBackground??"none"})]},"ann-"+r)}case"rect-enclose":{const t=(e.coordinates||[]).map(e=>({x:qa({...e,type:"point"},n),y:_a({...e,type:"point"},n)})).filter(e=>null!=e.x&&null!=e.y);if(2>t.length)return null;const o=e.padding||10,i=t.map(e=>e.x),s=t.map(e=>e.y),[a,l]=yn(i),[c,d]=yn(s),u=a-o,p=l+o,y=c-o;return(0,Za.jsxs)("g",{children:[(0,Za.jsx)("rect",{x:u,y:y,width:p-u,height:d+o-y,fill:e.fill||"none",fillOpacity:e.fillOpacity||.1,stroke:e.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),e.label&&(0,Za.jsx)(Xa,{x:(u+p)/2,y:y-4,textAnchor:"middle",fill:e.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:e.label,background:e.labelBackground??"none"})]},"ann-"+r)}case"highlight":{const t=n.data||[],o="function"==typeof e.filter?t.filter(e.filter):e.field&&null!=e.value?t.filter(t=>t[e.field]===e.value):[],i={stroke:e.color||"#f97316",strokeWidth:2,fill:"none"};return(0,Za.jsx)("g",{children:o.map((t,r)=>{const o=qa(t,n),s=_a(t,n);if(null==o||null==s)return null;const a="function"==typeof e.r?e.r(t):e.r||6,l="function"==typeof e.style?e.style(t):e.style||i;return(0,Za.jsx)("circle",{cx:o,cy:s,r:a,...l},"hl-"+r)})},"ann-"+r)}case"bracket":{const t=qa(e,n),o=_a(e,n);return(0,Za.jsx)(Ea,{noteData:{x:t??0,y:o??0,dx:e.dx||0,dy:e.dy||0,note:{label:e.label,title:e.title,wrap:e.wrap||120},type:"bracket",subject:{type:e.bracketType||"curly",width:e.width,height:e.height,depth:e.depth||30},color:e.color}},"ann-"+r)}case"trend":{const t=n.data||[];if(2>t.length)return null;const o=n.xAccessor||"x",i=n.yAccessor||"y",s="ordinal"===n.frameType,a="horizontal"===n.projection,l=s?o:null,c=s?i:null;let d;const u=[],p=new Map;if(s&&l&&c){for(const e of t){const t=e[l];if(null==t)continue;const r=t+"";p.has(r)||(p.set(r,u.length),u.push(r))}d=t.map(e=>{const t=e[l],r=e[c];if(null==t||null==r)return null;const n=p.get(t+"");return null!=n?[n,+r]:null}).filter(e=>null!==e)}else d=t.map(e=>[e[o],e[i]]).filter(e=>null!=e[0]&&null!=e[1]);if(2>d.length)return null;const y=n.scales?.x??n.scales?.time,h=n.scales?.y??n.scales?.value;if(!y||!h)return null;const f=e=>t=>{const r=Math.max(0,Math.floor(t)),n=Math.min(u.length-1,r+1),o=t-r,i=e(u[r]);return i+(e(u[n])-i)*o},m=y,b=h;let g;if(s)if(a){const e=f(b);g=(t,r)=>[m(r),e(t)]}else{const e=f(m);g=(t,r)=>[e(t),b(r)]}else g=(e,t)=>[m(e),b(t)];const v=e.method||"linear";let x;if("loess"===v)x=function(e,t=.3){const r=e.length;if(2>r)return e.slice();const n=e.slice().sort((e,t)=>e[0]-t[0]),o=n.map(e=>e[0]),i=n.map(e=>e[1]),s=Math.max(2,Math.ceil(t*r)),a=[];for(let e=0;r>e;e++){const t=o[e],n=o.map(e=>Math.abs(e-t)),l=n.slice().sort((e,t)=>e-t)[Math.min(s-1,r-1)]||1,c=[];for(let e=0;r>e;e++){const t=0===l?0:n[e]/l;c[e]=1>t?Math.pow(1-Math.pow(t,3),3):0}let d=0,u=0,p=0,y=0,h=0;for(let e=0;r>e;e++){const t=c[e];0!==t&&(d+=t,u+=t*o[e],p+=t*i[e],y+=t*o[e]*o[e],h+=t*o[e]*i[e])}if(0===d){a.push([t,i[e]]);continue}const f=d*y-u*u;if(1e-12>Math.abs(f))a.push([t,p/d]);else{const e=(d*h-u*p)/f;a.push([t,(p-e*u)/d+e*t])}}return a}(d,e.bandwidth??.3);else{const t="polynomial"===v?za(d,e.order||2):function(e){const t=[0,0,0,0];let r=0;for(const[n,o]of e)null!==o&&(r++,t[0]+=n,t[1]+=o,t[2]+=n*n,t[3]+=n*o);const n=r*t[2]-t[0]*t[0],o=0===n?0:Da((r*t[3]-t[0]*t[1])/n),i=Da(t[1]/r-o*t[0]/r);return{points:e.map(([e])=>[Da(e),Da(o*e+i)]),equation:[o,i]}}(d);x=t.points}const k=x.map(([e,t])=>{const[r,n]=g(e,t);return`${r},${n}`}).join(" "),C=e.color||"#6366f1",w=x[x.length-1],[S,A]=g(w[0],w[1]);return(0,Za.jsxs)("g",{children:[(0,Za.jsx)("polyline",{points:k,fill:"none",stroke:C,strokeWidth:e.strokeWidth||2,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,Za.jsx)("text",{x:S+4,y:A-4,fill:C,fontSize:11,children:e.label})]},"ann-"+r)}case"band":{const t=n.scales?.y??n.scales?.value,s=t?.(e.y0)??0,a=t?.(e.y1)??(n.height||0),l=Ho(e.fill,"ann-"+r,"var(--semiotic-primary, #6366f1)");return(0,Za.jsxs)("g",{opacity:e.opacity,children:[l.def&&(0,Za.jsx)("defs",{children:l.def}),(0,Za.jsx)("rect",{x:0,y:Math.min(s,a),width:n.width||0,height:Math.abs(a-s),fill:l.fill,fillOpacity:e.fillOpacity||.1}),e.label&&(0,Za.jsx)(Xa,{x:(n.width||0)-4,y:(o=s,i=a,Math.max(Math.min(o,i),0)+16),textAnchor:"end",fill:e.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:e.label,background:e.labelBackground??"halo"})]},"ann-"+r)}case"x-band":{const t=n.scales?.x??n.scales?.time,o=null!=e.x0&&t?t(e.x0):null,i=null!=e.x1&&t?t(e.x1):null;if(null==o||null==i)return null;const s=Ho(e.fill||e.color,"ann-"+r,"var(--semiotic-primary, #6366f1)");return(0,Za.jsxs)("g",{opacity:e.opacity,children:[s.def&&(0,Za.jsx)("defs",{children:s.def}),(0,Za.jsx)("rect",{x:Math.min(o,i),y:0,width:Math.abs(i-o),height:n.height||0,fill:s.fill,fillOpacity:e.fillOpacity??.1}),e.label&&(0,Za.jsx)(Xa,{x:Math.min(o,i)+4,y:16,textAnchor:"start",fill:e.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:e.label,background:e.labelBackground??"halo"})]},"ann-"+r)}case"envelope":{const t=n.data||[];if(2>t.length)return null;const o=n.xAccessor||"x",i=n.scales?.x??n.scales?.time,s=n.scales?.y??n.scales?.value;if(!i||!s)return null;const a=e.upperAccessor||"upperBounds",l=e.lowerAccessor||"lowerBounds",c=e.filter,d=t.filter(e=>null!=e[a]&&null!=e[l]&&!(c&&!c(e))).sort((e,t)=>e[o]-t[o]);if(2>d.length)return null;const u=Ka[n.curve||"linear"]||Oa.curveLinear,p=(0,Oa.area)().x(e=>i(e[o])).y0(e=>s(e[l])).y1(e=>s(e[a])).curve(u)(d);if(!p)return null;const y=e.fill||"#6366f1";return(0,Za.jsxs)("g",{children:[(0,Za.jsx)("path",{d:p,fill:y,fillOpacity:e.fillOpacity??.15,stroke:"none"}),e.label&&d.length>0&&(0,Za.jsx)("text",{x:i(d[d.length-1][o])+4,y:s(d[d.length-1][a])-4,fill:y,fontSize:11,children:e.label})]},"ann-"+r)}case"anomaly-band":{const t=n.data||[];if(2>t.length)return null;const o=n.yAccessor||"y",i=n.scales?.x??n.scales?.time,s=n.scales?.y??n.scales?.value;if(!i||!s)return null;const a=t.map(e=>e[o]).filter(e=>null!=e&&isFinite(e));if(2>a.length)return null;const l=a.reduce((e,t)=>e+t,0)/a.length,c=a.reduce((e,t)=>e+(t-l)**2,0)/a.length,d=Math.sqrt(c),u=e.threshold??2,p=l-u*d,y=!1!==e.showBand,h=e.fill||"#6366f1",f=e.fillOpacity??.1,m=e.anomalyColor||"#ef4444",b=e.anomalyRadius??6,g=s(l+u*d),v=s(p),x=t.filter(e=>{const t=e[o];return null!=t&&Math.abs(t-l)>u*d});return(0,Za.jsxs)("g",{children:[y&&(0,Za.jsx)("rect",{x:0,y:Math.min(g,v),width:n.width||0,height:Math.abs(v-g),fill:h,fillOpacity:f}),x.map((e,t)=>{const r=qa(e,n),o=_a(e,n);return null==r||null==o?null:(0,Za.jsx)("circle",{cx:r,cy:o,r:b,fill:m,fillOpacity:.7,stroke:m,strokeWidth:1.5},"anomaly-"+t)}),e.label&&(0,Za.jsx)("text",{x:(n.width||0)-4,y:Math.min(g,v)-4,textAnchor:"end",fill:h,fontSize:11,children:e.label})]},"ann-"+r)}case"forecast":{const t=n.data||[];if(3>t.length)return null;const o=n.xAccessor||"x",i=n.yAccessor||"y",s=n.scales?.x??n.scales?.time,a=n.scales?.y??n.scales?.value;if(!s||!a)return null;const l=t.map(e=>[e[o],e[i]]).filter(e=>null!=e[0]&&null!=e[1]&&isFinite(e[0])&&isFinite(e[1])).sort((e,t)=>e[0]-t[0]);if(3>l.length)return null;let c;if("polynomial"===(e.method||"linear")){const t=za(l,e.order||2).equation;c=e=>t.reduce((t,r,n)=>t+r*Math.pow(e,n),0)}else{const e=l.length;let t=0,r=0,n=0,o=0;for(const[e,i]of l)t+=e,r+=i,n+=e*e,o+=e*i;const i=e*n-t*t;if(1e-12>Math.abs(i))return null;const s=(e*o-t*r)/i,a=(r-s*t)/e;c=e=>a+s*e}const d=l.length,u=l.map(([e,t])=>t-c(e)),p=u.reduce((e,t)=>e+t*t,0),y=Math.sqrt(p/Math.max(d-2,1)),h=l.reduce((e,t)=>e+t[0],0)/d,f=l.reduce((e,t)=>e+(t[0]-h)**2,0),m=e.confidence??.95,b=.99>m?.95>m?.9>m?1:1.645:1.96:2.576,g=e.steps??5,v=l[d-1][0],x=(v-l[0][0])/Math.max(d-1,1),k=[];for(let e=1;g>=e;e++)k.push(v+e*x);const C=[];for(const e of k){const t=c(e),r=y*Math.sqrt(1+1/d+(f>0?(e-h)**2/f:0))*b;C.push({x:e,yCenter:t,yUpper:t+r,yLower:t-r})}const w=`M${C.map(e=>`${s(e.x)},${a(e.yUpper)}`).join(" L")} L${C.slice().reverse().map(e=>`${s(e.x)},${a(e.yLower)}`).join(" L")} Z`,S=C.map(e=>`${s(e.x)},${a(e.yCenter)}`).join(" "),A=`${s(v)},${a(c(v))}`,j=e.strokeColor||"#6366f1";return(0,Za.jsxs)("g",{children:[(0,Za.jsx)("path",{d:w,fill:e.fill||"#6366f1",fillOpacity:e.fillOpacity??.15,stroke:"none"}),(0,Za.jsx)("polyline",{points:`${A} ${S}`,fill:"none",stroke:j,strokeWidth:e.strokeWidth??2,strokeDasharray:e.strokeDasharray??"6,3"}),e.label&&C.length>0&&(0,Za.jsx)("text",{x:s(C[C.length-1].x)+4,y:a(C[C.length-1].yCenter)-4,fill:j,fontSize:11,children:e.label})]},"ann-"+r)}case"widget":{let o,i;if(null!=e.px&&null!=e.py)o=e.px,i=e.py;else{const t=Va(e,r,n);if(!t)return null;o=t.x,i=t.y}if(!Ua(o,i,n))return null;const s=e.dx??0,a=e.dy??0,l=e.width??32,c=e.height??32,d=e.content??(0,Za.jsx)("span",{style:{fontSize:18,cursor:"default"},title:e.label||"Info",children:"ℹ️"});return(0,Za.jsx)("foreignObject",{x:o+s-l/2,y:i+a-c/2,width:l,height:c,style:{overflow:"visible",pointerEvents:"auto"},children:(0,Za.jsx)("div",{...Ye(e,t),style:{width:l,height:c,display:"flex",alignItems:"center",justifyContent:"center"},children:d})},"ann-"+r)}case"text":{const t=Va(e,r,n);if(!t)return null;const{x:o,y:i}=t,s=o+(e.dx||0),a=i+(e.dy||0),l=e.color||"var(--semiotic-text, #333)",c=(0,Za.jsx)("text",{x:s,y:a,fill:l,fontSize:e.fontSize||11,opacity:e.opacity,strokeDasharray:e.strokeDasharray,dominantBaseline:"middle",style:{fontFamily:"inherit"},children:e.label});return!0!==e._redundantConnector?Ba.cloneElement(c,{key:"ann-text-"+r}):(0,Za.jsxs)("g",{opacity:e.opacity,strokeDasharray:e.strokeDasharray,children:[(0,Za.jsx)("line",{x1:o,y1:i,x2:s,y2:a,stroke:l,strokeWidth:1,strokeOpacity:.5,style:{pointerEvents:"none"}}),Ba.cloneElement(c,{opacity:void 0,strokeDasharray:void 0})]},"ann-text-"+r)}case"category-highlight":{const t=e.category;if(null==t)return null;const o=e=>"function"==typeof e&&"function"==typeof e.bandwidth,i=n.scales?.o,s=n.scales?.x,a=n.scales?.y,l=o(i)?i:o(s)?s:o(a)?a:null;if(!l)return null;const c=l(t+"");if(null==c)return null;const d=l.bandwidth(),u=e.color||"var(--semiotic-primary, #4589ff)",p=e.opacity??.15,y=e.label;return(0,Za.jsxs)("g",(n.projection?"vertical"===n.projection:l===s)?{children:[(0,Za.jsx)("rect",{x:c,y:0,width:d,height:n.height||0,fill:u,fillOpacity:p}),y&&(0,Za.jsx)(Xa,{x:c+d/2,y:16,textAnchor:"middle",fill:u,fontSize:12,fontWeight:"bold",text:y,background:e.labelBackground??"none"})]}:{children:[(0,Za.jsx)("rect",{x:0,y:c,width:n.width||0,height:d,fill:u,fillOpacity:p}),y&&(0,Za.jsx)(Xa,{x:12,y:c+d/2,dominantBaseline:"middle",fill:u,fontSize:12,fontWeight:"bold",text:y,background:e.labelBackground??"none"})]},"ann-"+r)}default:return null}var o,i,s}}(0,w),[w]),M=j?function(e,t,r,n){const o=[];return e.forEach((e,i)=>{let s;if(r){const o=r(e,i,n);s=null!=o?o:t(e,i,n)}else s=t(e,i,n);s&&o.push({node:s,annotation:e})}),function(e){const t=e.map((e,t)=>{return{p:e,i:t,emphasis:(r=e.annotation,"primary"===r?.emphasis||"secondary"===r?.emphasis?r.emphasis:null),confidence:$a(e.annotation),readingOrder:null,rank:1};var r}),r=t.some(e=>null!=e.emphasis||null!=e.confidence),n=e.some(e=>Aa(e.annotation)),o=e.some(e=>null!=ja(e.annotation)),i=e.some(e=>"layer"===ja(e.annotation));if(!r&&!n&&!o)return e.map(e=>e.node);const s=t.filter(e=>null==e.emphasis&&null!=e.confidence).slice().sort((e,t)=>(t.confidence??0)-(e.confidence??0)||e.i-t.i);s.forEach((e,t)=>{e.readingOrder=t,e.rank=2-t/Math.max(1,s.length)});for(const e of t)e.emphasis&&(e.rank=wa[e.emphasis]);const a=t.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>{const{p:t,i:r,emphasis:n,readingOrder:o}=e,i=Aa(t.annotation);let s=t.node;if("primary"===n||"secondary"===n||null!=o){const e=null==n&&null!=o;s=(0,Ca.jsx)("g",{className:e?"annotation-emphasis annotation-emphasis--inferred":"annotation-emphasis annotation-emphasis--"+n,..."secondary"===n?{opacity:.6,fontSize:"0.88em"}:{},...e?{opacity:Ma(o),"data-annotation-reading-order":o}:{},children:t.node},"annotation-emphasis-"+r)}const a=ja(t.annotation);return a&&(s=(0,Ca.jsx)("g",{className:"annotation-cohesion--"+a,children:s},"annotation-cohesion-"+r)),i&&(s=(0,Ca.jsx)("g",{className:"annotation-deferred","data-annotation-disclosure":"deferred",children:s},"annotation-deferred-"+r)),s});return n&&a.unshift((0,Ca.jsx)("style",{children:Sa},"annotation-disclosure-style")),i&&a.unshift((0,Ca.jsx)("style",{children:".annotation-cohesion--layer text,.annotation-cohesion--layer tspan{fill:var(--semiotic-annotation-color,var(--semiotic-text-secondary,#666));font-style:italic}"},"annotation-cohesion-style")),a}(o)}(j,$,k,A):null,B=!0===j?.some(e=>"widget"===e.type&&!0===e._annotationDeferred);return(0,yl.jsxs)(yl.Fragment,{children:[B?(0,yl.jsx)("style",{children:Sa},"physics-annotation-disclosure-style"):null,(0,yl.jsxs)("svg",{className:"stream-physics-frame__overlay","data-testid":"stream-physics-overlay",role:"presentation",width:n,height:o,style:{position:"absolute",top:0,left:0,pointerEvents:"none",overflow:"visible"},children:[(0,yl.jsxs)("g",{transform:`translate(${i.left},${i.top})`,children:[M,C]}),s&&"string"==typeof s?(0,yl.jsx)("text",{x:n/2,y:16,textAnchor:"middle",fontWeight:600,fill:"var(--semiotic-text, #333)",className:"semiotic-chart-title",style:{fontSize:"var(--semiotic-title-font-size, 14px)"},children:s}):s?(0,yl.jsx)("foreignObject",{x:0,y:0,width:n,height:Math.max(i.top,28),children:s}):null,a?ka({legend:a,totalWidth:n,totalHeight:o,margin:i,legendPosition:p,legendLayout:y,title:s,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u}):null]})]})}var ml=2500;function bl(e){return"function"==typeof e}function gl(e){return void 0===e||!1===e||!bl(e.binAccessor)&&!bl(e.labelAccessor)&&!bl(e.valueAccessor)}function vl(e){if(void 0!==e){if(!1===e)return!1;if(!gl(e))throw new TypeError("Physics worker sediment config only supports string or numeric accessors");return{binAccessor:"string"==typeof e.binAccessor?e.binAccessor:void 0,labelAccessor:"string"==typeof e.labelAccessor?e.labelAccessor:void 0,valueAccessor:"string"==typeof e.valueAccessor||"number"==typeof e.valueAccessor?e.valueAccessor:void 0,retainBodyIds:e.retainBodyIds}}}function xl(e){if(e)return{chartId:e.chartId,chartType:e.chartType,sensors:e.sensors}}function kl(e){return function(e){return!bl(e?.timeAccessor)}(e)}function Cl(e={}){if(e.engine)throw new TypeError("Physics workers use the built-in kernel adapter");const{engine:t,observation:r,sediment:n,...o}=e;return{...o,observation:xl(r),sediment:vl(n)}}var wl={};function Sl(){if("undefined"!=typeof DOMException)return new DOMException("Physics worker request aborted","AbortError");const e=Error("Physics worker request aborted");return e.name="AbortError",e}var Al=class{constructor(e=function(){const e="string"==typeof wl.url&&wl.url?new URL("./physicsWorker.js",wl.url):function(e){if("undefined"!=typeof __filename){const t=__filename.replace(/\\/g,"/"),r=t.startsWith("/")?t:"/"+t;return new URL("./"+e,"file:"+r)}throw Error("Cannot resolve module worker asset: "+e)}("physicsWorker.js");return new Worker(e,{type:"module",name:"semiotic-physics"})}()){this.nextRequestId=1,this.pending=new Map,this.worker=e,this.worker.onmessage=e=>{const t=e.data,r=this.pending.get(t.requestId);r&&(this.pending.delete(t.requestId),r.cleanup(),t.ok?r.resolve(t.payload):r.reject(function(e){const t=Error(e.error.message);return t.name=e.error.name??"Error",e.error.stack&&(t.stack=e.error.stack),t}(t)))},this.worker.onerror=e=>{this.rejectAll(Error(e.message||"Physics worker failed")),this.worker.terminate()}}request(e,t){if(t?.aborted)return Promise.reject(Sl());const r=this.nextRequestId;this.nextRequestId+=1;const n={command:e,requestId:r};return new Promise((e,o)=>{const i=()=>{this.pending.delete(r),t?.removeEventListener("abort",i),o(Sl())},s=()=>t?.removeEventListener("abort",i);this.pending.set(r,{cleanup:s,reject:o,resolve:e}),t?.addEventListener("abort",i,{once:!0});try{this.worker.postMessage(n)}catch(e){this.pending.delete(r),s(),o(e)}})}async init(e,t,r,n){if(!kl(r))throw new TypeError("Physics worker spawn pacing only supports string time accessors");const o=await this.request({type:"init",config:Cl(e),initialSpawns:t,initialSpawnPacing:r},n);if("frame"!==o.type)throw Error("Physics worker returned a non-frame init response");return o.frame}async restore(e,t){const r=await this.request({type:"restore",snapshot:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame restore response");return r.frame}async initFromSnapshot(e,t,r){const n=await this.request({type:"init",config:Cl(e),snapshot:t},r);if("frame"!==n.type)throw Error("Physics worker returned a non-frame init response");return n.frame}async enqueue(e,t,r){if(!kl(t))throw new TypeError("Physics worker spawn pacing only supports string time accessors");const n=await this.request({type:"enqueue",spawns:e,pacing:t},r);if("frame"!==n.type)throw Error("Physics worker returned a non-frame enqueue response");return n.frame}async tick(e,t){const r=await this.request({type:"tick",deltaSeconds:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame tick response");return r.frame}async settle(e,t){const r=await this.request({type:"settle",maxSteps:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame settle response");return r.frame}async snapshot(e){const t=await this.request({type:"snapshot"},e);if("snapshot"!==t.type)throw Error("Physics worker returned a non-snapshot response");return t.snapshot}async remove(e,t){const r=await this.request({type:"remove",ids:e},t);if("removed"!==r.type)throw Error("Physics worker returned a non-remove response");return{frame:r.frame,removed:r.removed}}terminate(){this.rejectAll(Error("Physics worker terminated")),this.worker.terminate()}rejectAll(e){for(const[t,r]of this.pending)this.pending.delete(t),r.cleanup(),r.reject(e)}};function jl(e,t,r){const n=new ws(e);return t?.length&&n.enqueue(t,r),n}function $l(){return"undefined"!=typeof performance?performance.now():Date.now()}function Ml(e,t){return e||t?{x:(e?.x??0)+(t?.x??0),y:(e?.y??0)+(t?.y??0)}:null}var Bl=require("react");function Wl(){return"undefined"==typeof document||!document.hidden}var Pl=require("react/jsx-runtime"),Il="var(--semiotic-focus, #005fcc)";function Ll({active:e,hoverPoint:t,margin:r,size:n,shape:o="circle",width:i,height:s,pathData:a}){if(!e||!t)return null;const l=t.x+r.left,c=t.y+r.top;let d;if("geoarea"!==o&&"path"!==o||!a)if("rect"===o&&null!=i&&null!=s){const e=Math.max(i,4),t=Math.max(s,4);d=(0,Pl.jsx)("rect",{x:l-e/2-3,y:c-t/2-3,width:e+6,height:t+6,rx:3,fill:"none",stroke:Il,strokeWidth:2,strokeDasharray:"4,2"})}else d=(0,Pl.jsx)("circle","wedge"===o?{cx:l,cy:c,r:12,fill:"none",stroke:Il,strokeWidth:2.5,strokeDasharray:"6,3"}:{cx:l,cy:c,r:8,fill:"none",stroke:Il,strokeWidth:2,strokeDasharray:"4,2"});else d=(0,Pl.jsx)("g",{transform:`translate(${r.left},${r.top})`,children:(0,Pl.jsx)("path",{d:a,fill:"none",stroke:Il,strokeWidth:2.5,strokeDasharray:"6,3"})});return(0,Pl.jsx)("svg",{style:{position:"absolute",left:0,top:0,width:n[0],height:n[1],pointerEvents:"none",zIndex:2},"aria-hidden":"true",children:d})}var Rl=require("react"),Tl={sceneGeometry:0,layout:0,domain:0};function Fl(e){const{domain:t,layout:r,sceneGeometry:n}=e.revisions;return{domain:t,layout:r,sceneGeometry:n}}function El(e,t){return{sceneGeometry:Math.max(e.sceneGeometry,t.sceneGeometry),layout:Math.max(e.layout,t.layout),domain:Math.max(e.domain,t.domain)}}var Nl="production"!==process.env.NODE_ENV,Ol={revisions:Tl,signature:"",sawSignals:!1,wasUnconsumed:!1,warnUnconsumed:!1},Dl=class{constructor(e="scene host"){this.hostName=e,this.lastConsumed=Tl,this.lastObserved=Tl,this.lastDuplicateWarning="",this.lastUnconsumedWarning=""}observeUpdateResult(e){Nl&&(this.lastObserved=El(this.lastObserved,Fl(e)))}beforeCompute(e,t){if(!Nl)return Ol;const r=El(Fl(e),this.lastObserved),n=function(e){return`${e.sceneGeometry}|${e.layout}|${e.domain}`}(r),o=!((i=r).sceneGeometry===(s=this.lastConsumed).sceneGeometry&&i.layout===s.layout&&i.domain===s.domain);var i,s;return{revisions:r,signature:n,sawSignals:e.changed.has("scene-geometry")||e.changed.has("layout")||e.changed.has("domain"),wasUnconsumed:o,warnUnconsumed:!t&&o&&this.lastUnconsumedWarning!==n}}afterCompute(e,t,r){if(Nl){if(t&&e.wasUnconsumed&&(this.lastConsumed=e.revisions),e.warnUnconsumed&&!t)return console.warn(`[semiotic] ${this.hostName} observed scene-affecting revisions without a scene rebuild: ${e.signature}.`),void(this.lastUnconsumedWarning=e.signature);t&&e.sawSignals&&!e.wasUnconsumed&&!r&&this.lastDuplicateWarning!==e.signature?(console.warn(`[semiotic] ${this.hostName} performed scene rebuild with unchanged scene revisions: ${e.signature}.`),this.lastDuplicateWarning=e.signature):t&&!e.sawSignals&&(this.lastDuplicateWarning="")}}},zl=(0,Rl.memo)(function({store:e,diagnostics:t}){return(0,Rl.useEffect)(()=>{const r=()=>t.observeUpdateResult(e.getUpdateSnapshot());return r(),e.subscribeUpdateResult(r)},[t,e]),null}),ql=(l(require("react")),l(require("react"))),_l=(require("react/jsx-runtime"),ql.createContext(null)),Hl=require("react/jsx-runtime"),Gl={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap",border:0};function Vl({hoverPoint:e}){let t="";if(e){const r=e.data||e;t="object"==typeof r?"Data point: "+Object.entries(r).filter(([,e])=>"object"!=typeof e&&"function"!=typeof e).map(([e,t])=>`${e}: ${t}`).join(", "):"Data point: "+r}return(0,Hl.jsx)("div",{"aria-live":"polite","aria-atomic":"true",style:Gl,children:t})}var Ul=require("react/jsx-runtime");function Yl({summary:e}){return e?(0,Ul.jsx)("div",{role:"note",style:Gl,children:e}):null}function Ql({tableId:e}){return(0,Ul.jsx)("a",{href:"#"+e,style:Gl,onClick:t=>{t.preventDefault();const r=document.getElementById(e);r&&requestAnimationFrame(()=>r.focus())},onFocus:e=>{Object.assign(e.currentTarget.style,{position:"absolute",width:"auto",height:"auto",overflow:"visible",clip:"auto",whiteSpace:"normal",padding:"4px 8px",background:"var(--semiotic-bg, #fff)",color:"var(--semiotic-text, #000)",border:"2px solid var(--semiotic-focus, #005fcc)",borderRadius:"4px",zIndex:"10",fontSize:"12px",top:"4px",left:"4px"})},onBlur:e=>{const t=e.currentTarget;t.removeAttribute("style"),Object.assign(t.style,Gl)},children:"Skip to data table"})}function Xl(e,t,r){if(null==t)return r;if(Do(t)){const n=function(e,t){const r="undefined"!=typeof window&&window.devicePixelRatio||1,n=`${zo(e)}@${r}`,o=qo.get(n);if(void 0!==o)return o;const i=function(e={},t){const{background:r="transparent",stroke:n="#000",lineWidth:o=1.5,spacing:i=6,angle:s=45}=e,a=Math.max(8,Math.ceil(2*i));let l;try{l=function(e){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(e,e):(No||(No=document.createElement("canvas")),No.width=e,No.height=e,No)}(a)}catch{return null}const c=l.getContext("2d");if(!c)return null;r&&"transparent"!==r?(c.fillStyle=r,c.fillRect(0,0,a,a)):c.clearRect(0,0,a,a),c.strokeStyle=n,c.lineWidth=o,c.lineCap="square";const d=s*Math.PI/180;if(45===s||-45===s){const e=s>0?1:-1;for(let t=-a;2*a>=t;t+=i)c.beginPath(),c.moveTo(t,0),c.lineTo(t+e*a,a),c.stroke()}else{c.save(),c.translate(a/2,a/2),c.rotate(d);const e=2*a;for(let t=-e;e>=t;t+=i)c.beginPath(),c.moveTo(-e,t),c.lineTo(e,t),c.stroke();c.restore()}return(t||c).createPattern(l,"repeat")}({background:e.background,stroke:e.stroke,lineWidth:e.lineWidth,spacing:e.spacing,angle:e.angle},t);return qo.set(n,i),i}(t,e);return n||t.background&&xo(e,t.background)||r}return"string"!=typeof t?t:xo(e,t)||r}function Zl(e,t,r){const n=function(e,t){if(null==t)return;const r=Xl(e,t,"");return""===r?void 0:r}(e,r.fill)??"#4e79a7",o=r.stroke,i=r.strokeWidth??0,s=r.opacity??1,a=r.fillOpacity??1,l=function(e,t){const r=t.mark;if(r)return r;const n=e.datum,o=n?.__physicsMark??n?.mark;return"circle"===o||"halo"===o||"faceted"===o||"pill"===o||"diamond"===o||"square"===o?o:"circle"===e.shape.type?"circle":"square"}(t,r),c="circle"===t.shape.type?r.r??t.shape.radius:Math.max(t.shape.width,t.shape.height)/2;if(e.save(),e.globalAlpha*=s,e.beginPath(),"pill"===l||"square"===l||"aabb"===t.shape.type){const r="pill"===l?2.4*c:"aabb"===t.shape.type?t.shape.width:1.7*c,n="pill"===l?1.35*c:"aabb"===t.shape.type?t.shape.height:1.7*c,o=t.x-r/2,i=t.y-n/2,s="pill"===l?n/2:Math.min(4,r/4);e.moveTo(o+s,i),e.arcTo(o+r,i,o+r,i+n,s),e.arcTo(o+r,i+n,o,i+n,s),e.arcTo(o,i+n,o,i,s),e.arcTo(o,i,o+r,i,s),e.closePath()}else if("diamond"===l)e.moveTo(t.x,t.y-c),e.lineTo(t.x+c,t.y),e.lineTo(t.x,t.y+c),e.lineTo(t.x-c,t.y),e.closePath();else if("faceted"===l){const r=6;for(let n=0;r>n;n+=1){const o=2*Math.PI*n/r-Math.PI/2,i=t.x+Math.cos(o)*c,s=t.y+Math.sin(o)*c;0===n?e.moveTo(i,s):e.lineTo(i,s)}e.closePath()}else e.arc(t.x,t.y,c,0,2*Math.PI);n&&(e.save(),e.globalAlpha*=a,e.fillStyle=n,e.fill(),e.restore()),"halo"===l&&(e.beginPath(),e.arc(t.x,t.y,1.35*c,0,2*Math.PI),e.strokeStyle=o??n,e.lineWidth=Math.max(1.5,i||1.5),e.globalAlpha*=.55,e.stroke(),e.globalAlpha/=.55),o&&i>0&&(e.strokeStyle=o,e.lineWidth=i,r.strokeDasharray&&e.setLineDash(r.strokeDasharray.split(/[,\s]+/).map(e=>Number(e)).filter(e=>Number.isFinite(e))),e.stroke()),e.restore()}function Kl(e){return"circle"===e.shape.type?e.shape.radius:Math.max(e.shape.width,e.shape.height)/2}function Jl(e){return e.sensorId??"stream-region-"+e.id}function ec(e){const t=Jl(e),r={bodyFilter:e.bodyFilter,friction:e.friction,restitution:e.restitution};if("boundary"===e.collider&&"aabb"===e.shape.type){const n=e.colliderThickness??8,o=e.shape.x-e.shape.width/2,i=e.shape.x+e.shape.width/2,s=e.shape.y-e.shape.height/2,a=e.shape.y+e.shape.height/2;return[{...r,id:t+"-top",shape:{type:"segment",x1:o,y1:s,x2:i,y2:s,thickness:n}},{...r,id:t+"-right",shape:{type:"segment",x1:i,y1:s,x2:i,y2:a,thickness:n}},{...r,id:t+"-bottom",shape:{type:"segment",x1:i,y1:a,x2:o,y2:a,thickness:n}},{...r,id:t+"-left",shape:{type:"segment",x1:o,y1:a,x2:o,y2:s,thickness:n}}]}return e.collider?[{...r,id:t+"-collider",shape:e.shape}]:[]}function tc(e){if(e)return{activeRegionIds:Array.from(e.activeRegionIds),regionIds:Array.from(e.regionIds),charges:{...e.charges},attributes:{...e.attributes},energy:e.energy}}function rc(e,t){const r="function"==typeof e?e(t):e;if(!r)return null;const n=Number(r.x??0),o=Number(r.y??0);return Number.isFinite(n)||Number.isFinite(o)?{x:Number.isFinite(n)?n:0,y:Number.isFinite(o)?o:0}:null}function nc(e){if(!1===e.semanticItem)return null;const t=e.shape,r=e.semanticItem??{},n="aabb"===t.type?{id:e.id,label:e.label??e.id,description:e.description,group:e.kind??"region",x:t.x,y:t.y,width:t.width,height:t.height}:{id:e.id,label:e.label??e.id,description:e.description,group:e.kind??"region",x:(t.x1+t.x2)/2,y:(t.y1+t.y2)/2,pathData:`M ${t.x1} ${t.y1} L ${t.x2} ${t.y2}`};return{...n,...r,id:r.id??n.id}}function oc(e){return e.some(e=>null!=e.force||null!=e.damping||null!=e.impulseOnEnter||null!=e.impulseOnExit)}function ic(e,t){const r="function"==typeof e?e(t):e;if(!r)return null;const n=Number(r.x??0),o=Number(r.y??0);return Number.isFinite(n)||Number.isFinite(o)?{x:Number.isFinite(n)?n:0,y:Number.isFinite(o)?o:0}:null}require("d3-shape");var sc=[];function ac(e){const t=e.store.controls(),r=e.store.snapshot(),n=Math.max(0,e.result.steps*(r.config.fixedDt||1/60)),o=function(e,t,r,n){const o=Number.isFinite(n)?Math.max(0,n):0;if(0>=o||!oc(t))return!1;const i=new Map(t.map(e=>[e.id,e])),s=e.readBodies();let a=!1;for(const t of s){const n=r.get(t.id);if(!n||!n.activeRegionIds.size)continue;const s=tc(n);if(s)for(const r of n.activeRegionIds){const n=i.get(r);if(!n)continue;const l=rc(n.force,{body:t,region:n,regionState:s}),c=Number(n.damping??0),d=(l?.x??0)*o-(Number.isFinite(c)?t.vx*c*o:0),u=(l?.y??0)*o-(Number.isFinite(c)?t.vy*c*o:0);(d||u)&&(e.applyImpulse(t.id,d,u),a=!0)}}return a}(t,e.regionEffects,e.regionState,n),i=function(e,t,r,n,o,i){const s=Number.isFinite(i)?Math.max(0,i):0;if(0>=s||!t)return!1;const a=new Map(r.map(e=>[e.id,e])),l=e.readBodies();let c=!1;for(let r=0;l.length>r;r+=1){const i=l[r],d=n.get(i.id),u=tc(d);let p=sc;if(d&&d.activeRegionIds.size>0){const e=[];for(const t of d.activeRegionIds){const r=a.get(t);r&&e.push(r)}p=e}const y=ic(t,{body:i,bodies:l,index:r,regionState:u,regions:p,simulationState:o});if(!y)continue;const h=(y.x??0)*s,f=(y.y??0)*s;(h||f)&&(e.applyImpulse(i.id,h,f),c=!0)}return c}(t,e.bodyForces,e.regionEffects,e.regionState,r.simulationState,n);return e.composed&&e.composed.onTick(e.result,t,{dt:n,elapsed:e.result.elapsedSeconds,getRegionState:t=>tc(e.regionState.get(t))}),e.onTick?.(e.result,t),{regionEffectsApplied:o,bodyForcesApplied:i,snapshot:r}}function lc(e,t,r,n,o,i,s,a,l,c){const d=function(e,t){return!!t?.isActive&&(t.predicate?.(e)??!0)}(e,o),u={selected:d,simulationState:t,regionState:i,regions:s},p="function"==typeof r?r(e,u):r,y=s.reduce((t,r)=>r.bodyStyle?{...t,..."function"==typeof r.bodyStyle?r.bodyStyle(e,u):r.bodyStyle}:t,{}),h=d?"function"==typeof n?n(e,u):n:void 0;return{fill:c?.color??a,stroke:c?.stroke??l,strokeWidth:c?.strokeWidth??1,opacity:c?.opacity??.9,...p,...y,...h}}var cc=require("react"),dc=l(require("react")),uc=require("react/jsx-runtime"),pc={border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:1},yc="semiotic-accessible-data-table",hc=yc+" semiotic-accessible-data-table-hidden",fc=yc+" semiotic-accessible-data-table-visible",mc={position:"absolute",top:0,left:0,right:0,zIndex:"var(--semiotic-data-table-z-index, var(--semiotic-overlay-z-index, 20))",padding:"14px 16px 12px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontFamily:"var(--semiotic-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)",fontSize:13,lineHeight:1.5,color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",borderRadius:"var(--semiotic-border-radius, 0px) var(--semiotic-border-radius, 0px) 0 0"},bc={marginBottom:8,paddingRight:28,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:12,letterSpacing:"0.01em"},gc={position:"absolute",top:10,right:10,width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",cursor:"pointer",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:13,lineHeight:1,padding:0,borderRadius:"var(--semiotic-border-radius, 4px)"},vc={width:"100%",borderCollapse:"collapse",fontSize:12,marginTop:4,fontVariantNumeric:"tabular-nums"},xc={textAlign:"left",padding:"5px 10px",borderBottom:"2px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontWeight:600,fontSize:11,textTransform:"uppercase",letterSpacing:"0.04em",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))"},kc={padding:"4px 10px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))"},Cc={textAlign:"left",fontSize:11,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",marginBottom:4,fontStyle:"italic"},wc={marginTop:8,padding:"4px 10px",fontSize:12,cursor:"pointer",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",borderRadius:"var(--semiotic-border-radius, 4px)",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",fontFamily:"inherit"};function Sc(e){return null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e+"":null}function Ac(e){return{__semioticHoverData:!0,body:e,data:e.datum??e,id:e.id,type:"body",x:e.x,y:e.y}}function jc(e){if("circle"===e.shape.type){const t=Math.max(4,2*e.shape.radius);return{height:t,shape:"circle",width:t}}return{height:e.shape.height,shape:"rect",width:e.shape.width}}function $c(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if("string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e+""}return e.id}function Mc(e){const t=Bc(e.datum??e);return t.length?t.map(([e,t])=>`${e}: ${t}`).join(", "):"Physics body "+e.id}function Bc(e){return e&&"object"==typeof e?Object.entries(e).map(([e,t])=>{if(e.startsWith("_"))return null;const r=Sc(t);return null==r?null:[e,r]}).filter(e=>null!=e).slice(0,8):[]}function Wc({hover:e}){const t=Bc(e.data);return(0,uc.jsxs)("div",{className:"semiotic-tooltip",style:ta,children:[(0,uc.jsx)("div",{style:{fontWeight:700,marginBottom:t.length?4:0},children:e.id}),t.map(([e,t])=>(0,uc.jsxs)("div",{children:[(0,uc.jsxs)("span",{style:{opacity:.72},children:[e,": "]}),(0,uc.jsx)("span",{children:t})]},e))]})}function Pc(e){return e.datum&&"object"==typeof e.datum?Object.entries(e.datum).map(([e,t])=>{const r=Sc(t);return null==r?null:`${e}: ${r}`}).filter(e=>null!=e).slice(0,8).join(", "):""}function Ic(e){const t=[`${e.length} semantic item${1===e.length?"":"s"}.`],r=new Map;for(const t of e)t.group&&r.set(t.group,(r.get(t.group)??0)+1);return r.size&&t.push(Array.from(r).map(([e,t])=>`${e}: ${t}`).join(", ")),t.join(" ")}function Lc(e){const{chartTitle:t,items:r,tableId:n}=e,[o,i]=dc.useState(!1),[s,a]=dc.useState(5),l=ql.useContext(_l),c=l?.visible??!1,d=o||c,u=dc.useRef(null),p="Data summary for "+(t??"physics chart");dc.useEffect(()=>{d||a(5)},[d]);const y=dc.useCallback(e=>{e.target===e.currentTarget&&(o||c||i(!0))},[o,c]),h=dc.useCallback(e=>{c||u.current?.contains(e.relatedTarget)||i(!1)},[c]);if(!r.length)return(0,uc.jsx)("span",{id:n,tabIndex:-1,style:pc});if(!d)return(0,uc.jsx)("div",{id:n,className:hc,role:"region","aria-label":p,tabIndex:-1,style:pc,onFocus:y,children:(0,uc.jsxs)("button",{type:"button",onClick:()=>i(!0),children:["View data summary (",r.length," semantic items)"]})});const f=Math.min(s,r.length),m=r.slice(0,f),b=r.length-f;return(0,uc.jsxs)("div",{ref:u,id:n,className:fc,role:"region","aria-label":p,tabIndex:-1,onBlur:h,style:mc,children:[(0,uc.jsx)("button",{type:"button",className:"semiotic-accessible-data-table-close","aria-label":"Close data summary",onClick:()=>{c&&l&&l.setVisible(!1),i(!1)},style:gc,children:"×"}),(0,uc.jsx)("div",{className:"semiotic-accessible-data-table-summary",role:"note",style:bc,children:Ic(r)}),(0,uc.jsxs)("table",{className:"semiotic-accessible-data-table-table",role:"table","aria-label":"Semantic items for "+(t??"physics chart"),style:vc,children:[(0,uc.jsx)("caption",{className:"semiotic-accessible-data-table-caption",style:Cc,children:b>0?`First ${f} of ${r.length} semantic items`:`All ${r.length} semantic items`}),(0,uc.jsx)("thead",{children:(0,uc.jsxs)("tr",{children:[(0,uc.jsx)("th",{scope:"col",style:xc,children:"Item"}),(0,uc.jsx)("th",{scope:"col",style:xc,children:"Description"}),(0,uc.jsx)("th",{scope:"col",style:xc,children:"Group"}),(0,uc.jsx)("th",{scope:"col",style:xc,children:"Position"}),(0,uc.jsx)("th",{scope:"col",style:xc,children:"Data"})]})}),(0,uc.jsx)("tbody",{children:m.map((e,t)=>(0,uc.jsxs)("tr",{children:[(0,uc.jsx)("th",{scope:"row",style:kc,children:e.label}),(0,uc.jsx)("td",{style:kc,children:e.description??e.label}),(0,uc.jsx)("td",{style:kc,children:e.group??""}),(0,uc.jsxs)("td",{style:kc,children:[Math.round(e.x),", ",Math.round(e.y)]}),(0,uc.jsx)("td",{style:kc,children:Pc(e)})]},e.id??`${e.label}-${t}`))})]}),b>0?(0,uc.jsxs)("button",{type:"button",className:"semiotic-accessible-data-table-show-more",onClick:()=>a(e=>e+25),style:wc,children:["Show ",Math.min(25,b)," more"," ",1===b?"row":"rows"," (",b," remaining)"]}):null]})}Wc.ownsChrome=!0;var Rc=require("react/jsx-runtime"),Tc=[640,360],Fc={top:0,right:0,bottom:0,left:0},Ec=new Set(["ArrowRight","ArrowLeft","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"]),Nc="StreamPhysicsFrame",Oc=(0,As.memo)((0,As.forwardRef)(function(e,t){const{accessibleTable:r=!0,annotations:n,onAnnotationActivate:o,autoPlaceAnnotations:i,background:s,backgroundGraphics:a,bodySemanticItemLimit:l=200,bodySemanticItems:c=!1,bodySemanticUpdateMs:d=200,bodyForces:u,bodyStyle:p,chartId:y,className:h,frameScheduler:f,clock:m,random:b,seed:g,color:v,config:x,controllers:k,continuous:C=!1,description:w,emphasis:S,chartMode:A,enableHover:j=!0,foregroundGraphics:$,hoverRadius:M=16,initialSpawns:B,initialSpawnPacing:W,legend:P,legendClickBehavior:I,legendHighlightedCategory:L,legendHoverBehavior:R,legendIsolatedCategories:T,legendLayout:F,legendPosition:E,margin:N,onClick:O,onObservation:D,onRegionEvent:z,onSimulationExecutionChange:q,onBodyHover:_,onBodyPointerDown:H,onSemanticItemActivate:G,onSemanticItemFocus:V,onTick:U,opacity:Y,paused:Q=!1,regionEffects:X=[],responsiveHeight:Z,responsiveWidth:K,selectedBodyStyle:J={stroke:"#111827",strokeWidth:2,opacity:1},selection:ee,semanticItems:te=[],simulationExecution:re="auto",size:ne=Tc,stroke:oe,strokeWidth:ie,summary:se,suspendWhenHidden:ae=!0,svgAnnotationRules:le,title:ce,tooltipContent:de,workerBodyThreshold:ue=ml,renderBody:pe,beforePaint:ye,afterPaint:he}=e,fe=Ss.useMemo(()=>({color:v,stroke:oe,strokeWidth:ie,opacity:Y}),[v,Y,oe,ie]),me=(0,As.useRef)(D);me.current=D;const be=(0,As.useRef)(y);be.current=y;const ge=(0,As.useRef)(new Map),ve=(0,As.useRef)(X);ve.current=X;const xe=(0,As.useRef)(u);xe.current=u;const ke=(0,As.useRef)(U);ke.current=U;const Ce=Ss.useMemo(()=>function(e){if(!e?.length)return null;const t=e.slice(),r=t.some(e=>!1!==e.continuous);return{controllers:t,continuous:r,onTick:(e,r,n)=>{const o={result:e,controls:r,dt:n.dt,elapsed:n.elapsed,getRegionState:n.getRegionState};for(const e of t)e.tick(o)},bodyForce:e=>{let r=null;for(const n of t)n.bodyForce&&(r=Ml(r,n.bodyForce(e)));return r}}}(k),[k]),we=(0,As.useRef)(Ce);we.current=Ce;const Se=C||!!Ce?.continuous,Ae=(0,As.useRef)(Se);Ae.current=Se;const je=Ss.useMemo(()=>{if(!u&&!Ce?.bodyForce)return u;if(!Ce?.bodyForce)return u;if(!u)return Ce.bodyForce;const e=Ce.bodyForce;return t=>{const r="function"==typeof u?u(t):u,n="function"==typeof e?e(t):e;return r||n?{x:(r?.x??0)+(n?.x??0),y:(r?.y??0)+(n?.y??0)}:null}},[u,Ce]);xe.current=je;const $e=Ss.useMemo(()=>new Map(X.map(e=>[Jl(e),e])),[X]),Me=Ss.useMemo(()=>new Map(X.map(e=>[e.id,e])),[X]),Be=Ss.useMemo(()=>X.map(nc).filter(e=>null!=e),[X]),[We,Pe]=Ss.useState([]),Ie=Ss.useMemo(()=>We.length||Be.length?[...te,...We,...Be]:te,[We,Be,te]),Le=Ss.useMemo(()=>oc(X),[X]),Re=!!je,Te=(0,As.useRef)(null),Fe=(0,As.useRef)(m??$l);Fe.current=m??$l;const Ee=(0,As.useCallback)((e,t,r)=>{const n=Te.current;if(!n||!r)return!1;const o=n.readBodies().find(t=>t.id===e),i=tc(ge.current.get(e));if(!o||!i)return!1;const s=rc(r,{body:o,region:t,regionState:i});return!(!s||!s.x&&!s.y||(n.applyImpulse(e,s.x??0,s.y??0),0))},[]),Ne=(0,As.useCallback)((e,t,r)=>{if(!r.bodyId)return;const n=tc(ge.current.get(r.bodyId));if(!n)return;const o={bodyId:r.bodyId,datum:r.datum,observation:r,region:t,regionState:n,type:e};"region-enter"===e?t.onEnter?.(o):t.onExit?.(o),z?.(o)},[z]),Oe=(0,As.useCallback)(e=>{const t=e.sensorId?$e.get(e.sensorId):void 0;if(!t||!e.bodyId)return;const r=function(e,t){let r=e.get(t);return r||(r={activeRegionIds:new Set,attributes:{},charges:{},energy:0,regionIds:new Set},e.set(t,r)),r}(ge.current,e.bodyId),n=Te.current?.readBodies().find(t=>t.id===e.bodyId),o=tc(r),i=n&&o?{body:n,region:t,regionState:o}:null;if("physics-proximity-enter"===e.type){if(r.activeRegionIds.add(t.id),r.regionIds.add(t.id),r.energy+=t.energyDelta??0,i){!function(e,t,r){const n="function"==typeof e.attributes?e.attributes(t):e.attributes;n&&(r.attributes={...r.attributes,...n})}(t,i,r);const e=function(e,t){return void 0!==e.charge?"function"==typeof e.charge?e.charge(t):e.charge:"charge-gate"===e.kind?1:void 0}(t,i);void 0!==e&&(r.charges[t.id]=e)}Ee(e.bodyId,t,t.impulseOnEnter),Ne("region-enter",t,e)}else"physics-proximity-exit"===e.type&&(r.activeRegionIds.delete(t.id),Ee(e.bodyId,t,t.impulseOnExit),Ne("region-exit",t,e))},[Ee,Ne,$e]),De=Ss.useMemo(()=>{if(!n?.length)return[];const e=n.filter(e=>"barrier"===e.physics||"sensor"===e.physics);return e.length?ri(e,{idPrefix:y?y+"-ann":"physics-ann",plotBounds:{x:0,y:0,width:ne?.[0]??Tc[0],height:ne?.[1]??Tc[1]}}):[]},[n,y,ne]),ze=Ss.useMemo(()=>{const e=void 0===g||void 0!==x?.kernel?.seed?x:{...x,kernel:{...x?.kernel,seed:g}},t=X.flatMap(e=>[{id:Jl(e),sensor:!0,shape:e.shape,bodyFilter:e.bodyFilter,friction:e.friction,restitution:e.restitution},...ec(e)]),r=Object.fromEntries(X.map(e=>[Jl(e),{binId:e.binId??e.id,enterType:"physics-proximity-enter",exitType:"physics-proximity-exit"}])),n=e?.observation,o=X.length>0;return o||t.length>0||De.length>0||null!=y||n?{...e,colliders:[...e?.colliders??[],...t,...De],observation:{...n,chartId:y??n?.chartId,chartType:n?.chartType??Nc,sensors:{...n?.sensors??{},...r},onObservation:e=>{o&&Oe(e),n?.onObservation?.(e)}}}:e},[De,y,x,Oe,X,g]);if(!Te.current){const e=jl(ze,B,W);e.setPaused(Q),ae&&e.setVisible(Wl()),Te.current=e}const qe=(0,As.useRef)(-1),_e=(0,As.useRef)(null),He=(0,As.useRef)(!0),Ge=(0,Rl.useRef)(new Dl("StreamPhysicsFrame")),Ve=(0,As.useRef)(""),Ue=(0,As.useId)().replace(/:/g,""),Ye=(0,As.useRef)(!1),Qe=(0,As.useRef)(!1),Xe=(0,As.useRef)(0),Ze=(0,As.useRef)(!1),Ke=(0,As.useRef)(null),Je=(0,As.useRef)(!1),et=Hs({sizeProp:ne,responsiveWidth:K,responsiveHeight:Z,userMargin:N,marginDefault:Fc,foregroundGraphics:$,backgroundGraphics:a,frameScheduler:f,clock:m,random:b,seed:g,paused:Q,suspendWhenHidden:ae}),{margin:tt,rafRef:rt,reducedMotionRef:nt,renderFnRef:ot,cancelRender:it,resolvedBackground:st,resolvedForeground:at,responsiveRef:lt,scheduleRender:ct,size:dt,frameRuntime:ut}=et,pt=(0,As.useRef)(ut.now);pt.current=ut.now;const yt=function(){const[e,t]=(0,Gs.useState)(!1);return Vs(()=>{t(!0)},[]),e}(),ht=function(){const e=(0,Gs.useSyncExternalStore)(Us,Ys,Qs);return(0,Gs.useRef)(e).current}(),[ft,mt]=Ss.useState(null),[bt,gt]=Ss.useState(null),vt=(0,As.useRef)(null),xt=(0,As.useRef)(0),kt=(0,As.useRef)(new Map),Ct=Ue+"-physics-live",wt=(0,As.useCallback)((e,t,r=!1)=>{if(!c)return void Pe(e=>e.length?[]:e);const n=pt.current();if(!r&&d>0&&d>n-xt.current)return;xt.current=n;const o=function(e,t,r,n){if(!r)return[];const o=Math.max(0,Math.floor(n));if(!o)return[];const i=[];for(let n=0;e.length>n&&o>i.length;n+=1){const o=e[n],s="function"==typeof r?r(o,{index:n,simulationState:t}):void 0;if(!1===s)continue;const a=jc(o);i.push({datum:o.datum??o,description:Mc(o),group:"body",label:$c(o),...a,...s??{},bodyId:s?.bodyId??o.id,id:s?.id??"body:"+o.id,x:s?.x??o.x,y:s?.y??o.y})}return i}(e,t,c,l);Pe(e=>function(e,t){if(e.length!==t.length)return!0;for(let r=0;e.length>r;r+=1){const n=e[r],o=t[r];if(n.id!==o.id||n.label!==o.label||n.description!==o.description||n.group!==o.group||n.bodyId!==o.bodyId||Math.round(n.x)!==Math.round(o.x)||Math.round(n.y)!==Math.round(o.y))return!0}return!1}(e,o)?o:e)},[l,c,d]),St=(0,As.useCallback)(e=>{if(!Ie.length)return;const t=Math.max(0,Math.min(e,Ie.length-1));qe.current=t;const r=Ie[t];if(vt.current=r.bodyId??null,mt(r),V?.(r),r.bodyId&&Te.current){const e=Te.current.readBodies().find(e=>e.id===r.bodyId);if(e){const t=Ac(e);gt(t),_?.(e,t)}}},[Ie,_,V]),At=(0,As.useCallback)(()=>{qe.current=-1,vt.current=null,mt(null),V?.(null)},[V]),jt=function({onObservationRef:e,chartIdRef:t,wallClockRef:r}){return(0,cc.useCallback)((n,o)=>{const i=e.current;if(!i)return;const s={timestamp:r.current(),chartType:"StreamPhysicsFrame",chartId:t.current};i("hover"===n||"click"===n?{...s,type:n,datum:o?.datum??{},x:o?.x??0,y:o?.y??0}:"focus"===n?{...s,type:n,datum:o?.datum??{},inputType:"touch"===o?.inputType?"pointer":o?.inputType??"keyboard"}:"activate"===n?{...s,type:n,datum:o?.datum??{},inputType:o?.inputType??"keyboard"}:{...s,type:n})},[t,e,r])}({onObservationRef:me,chartIdRef:be,wallClockRef:Fe}),$t=(0,As.useCallback)(()=>{gt(e=>e?(_?.(null,null),jt("hover-end"),null):e)},[jt,_]),Mt=(0,As.useCallback)(e=>{if(!j||!Te.current)return;const t=e.currentTarget.getBoundingClientRect(),r=Te.current.hitTest(e.clientX-t.left,e.clientY-t.top,M);if(!r)return void $t();const n=Ac(r);gt(e=>e&&e.id===n.id&&e.x===n.x&&e.y===n.y?e:(_?.(r,n),jt("hover",{datum:r.datum,x:r.x,y:r.y}),n))},[$t,jt,j,M,_]),Bt=(0,As.useCallback)(e=>{At();const t=Te.current,r=e.currentTarget.getBoundingClientRect(),n=e.clientX-r.left,o=e.clientY-r.top,i=t?t.hitTest(n,o,Math.max(16,M)):null;H?.(i,e),i?(jt("click",{datum:i.datum,x:i.x,y:i.y}),jt("activate",{datum:i.datum,inputType:"touch"===e.pointerType?"touch":"pointer"}),O?.(i.datum??null,{x:i.x,y:i.y,body:i})):(jt("click-end"),O?.(null,{x:n,y:o,body:null}),$t())},[$t,At,jt,M,H,O]);(0,As.useEffect)(()=>{if(!Ie.length)return void At();const e=qe.current;if(Ie.length>e){if(e>=0){const t=Ie[e];if(vt.current=t.bodyId??null,mt(e=>null!=e&&e.id===t.id&&Math.round(e.x)===Math.round(t.x)&&Math.round(e.y)===Math.round(t.y)?e:t),t.bodyId&&Te.current){const e=Te.current.readBodies().find(e=>e.id===t.bodyId);if(e){const t=Ac(e);gt(e=>e?.id===t.id&&Math.round(e.x)===Math.round(t.x)&&Math.round(e.y)===Math.round(t.y)?e:t)}}}}else St(Ie.length-1)},[Ie,At,St]),(0,As.useEffect)(()=>{j||$t()},[$t,j]);const Wt=(0,As.useCallback)(e=>{if(function(e){const t=e.target;return t instanceof Element&&t!==e.currentTarget&&null!=t.closest("button, a[href], input, select, textarea, summary, [contenteditable='true'], [role='button'], [role='link'], [role='checkbox'], [role='radio'], [role='switch']")}(e))return;if(!Ie.length)return;if("Escape"===e.key)return e.preventDefault(),void At();if(("Enter"===e.key||" "===e.key)&&qe.current>=0){e.preventDefault();const t=Ie[qe.current];return jt("activate",{datum:t.datum??{id:t.id,label:t.label},inputType:"keyboard"}),void G?.(t)}if(!Ec.has(e.key))return;e.preventDefault();const t=qe.current;if(0>t){St(0);const e=Ie[0];return void jt("focus",{datum:e.datum??{id:e.id,label:e.label},inputType:"keyboard"})}const r=Math.max(1,Math.floor(.1*Ie.length));let n=t;if("Home"===e.key?n=0:"End"===e.key?n=Ie.length-1:"PageDown"===e.key?n=Math.min(Ie.length-1,t+r):"PageUp"===e.key?n=Math.max(0,t-r):"ArrowRight"===e.key||"ArrowDown"===e.key?n=Math.min(Ie.length-1,t+1):"ArrowLeft"!==e.key&&"ArrowUp"!==e.key||(n=Math.max(0,t-1)),St(n),n!==t){const e=Ie[n];jt("focus",{datum:e.datum??{id:e.id,label:e.label},inputType:"keyboard"})}},[At,jt,St,G,Ie]),[Pt,It]=Ss.useState([]),Lt=(0,As.useRef)(0),Rt=!!n?.length&&n.some(e=>null!=e.pointId||null!=e.bodyId||"latest"===e.anchor),{canvasRef:Tt}=function(e,t){return function(e){const{cancelRender:t,dirtyRef:r,frameRuntime:n,manageFrameRuntime:o,scheduleRender:i}=e,s=(0,Xs.useRef)(null),a=(0,Xs.useRef)(null),l=(0,Xs.useRef)(!1);return function(e){const{hydrated:t,wasHydratingFromSSR:r,storeRef:n,dirtyRef:o,renderFnRef:i,cancelRender:s,cleanup:a}=e;Vs(()=>{t&&r&&n.current?.cancelIntroAnimation?.(),o.current=!0,s?.(),i.current()},[t,r]);const l=(0,Gs.useRef)(a);l.current=a,(0,Gs.useEffect)(()=>()=>l.current?.(),[])}({hydrated:e.hydrated,wasHydratingFromSSR:e.wasHydratingFromSSR,storeRef:e.storeRef,dirtyRef:e.dirtyRef,renderFnRef:e.renderFnRef,cancelRender:e.cancelRender,cleanup:e.cleanup}),(0,Xs.useEffect)(()=>{if(!1!==o)return n.subscribe(()=>{n.isActive?(r.current=!0,i()):t()})},[t,r,n,o,i]),(0,Xs.useEffect)(()=>{!l.current&&(l.current=!0,e.skipInitialCanvasPaintInvalidation)||(e.dirtyRef.current=!0,e.scheduleRender())},e.canvasPaintDependencies),{canvasRef:s,interactionCanvasRef:a}}({...t,renderFnRef:e.renderFnRef,scheduleRender:e.scheduleRender,cancelRender:e.cancelRender,frameRuntime:e.frameRuntime})}(et,{hydrated:yt,wasHydratingFromSSR:ht,storeRef:Te,dirtyRef:He,manageFrameRuntime:!1,skipInitialCanvasPaintInvalidation:!0,canvasPaintDependencies:[s,a,ct]}),Ft=(0,As.useCallback)(()=>{const e=Tt.current,t=Te.current;if(!e||!t)return;const r=Ge.current.beforeCompute(t.getLastUpdateResult(),!1),n=function(){if("undefined"==typeof window)return 1;const e=window.devicePixelRatio||1,t=function(){if("undefined"==typeof window)return!1;const e="function"==typeof window.matchMedia&&window.matchMedia("(pointer: coarse)").matches,t=768>Math.min(window.innerWidth||1/0,window.innerHeight||1/0);return e||t}()?2:3;return Math.max(1,Math.min(e,t))}(),o=function(e,t,r,n){const o=e.getContext("2d");if(!o)return null;const i=Math.round(t[0]*n),s=Math.round(t[1]*n),a=i/t[0],l=s/t[1],c=t[0]+"px",d=t[1]+"px";return e.style.width!==c&&(e.style.width=c),e.style.height!==d&&(e.style.height=d),e.width===i&&e.height===s||(e.width=i,e.height=s),o.setTransform(a,0,0,l,0,0),o.translate(r.left,r.top),o}(e,dt,tt,n);if(!o)return void Ge.current.afterCompute(r,!1,!1);const i=Ao(o);o.clearRect(-tt.left,-tt.top,dt[0],dt[1]),a||"transparent"===s||(o.fillStyle=s??i.background,o.fillRect(-tt.left,-tt.top,dt[0],dt[1]));const l=t.snapshot(),c=t.readBodies();if(wt(c,l.simulationState),Rt){const e=pt.current();if(e-Lt.current>=100){Lt.current=e;const t=function(e){return e.map(e=>({pointId:e.id,x:e.x,y:e.y,r:Math.max(1,hl(e))}))}(c);It(e=>e.length===t.length&&e.every((e,r)=>e.pointId===t[r].pointId&&Math.round(e.x)===Math.round(t[r].x)&&Math.round(e.y)===Math.round(t[r].y))?e:t)}}ye&&(o.save(),ye(o,c),o.restore());for(const e of c){const t=ge.current.get(e.id),r=t?Array.from(t.activeRegionIds).map(e=>Me.get(e)).filter(e=>null!=e):[],n=lc(e,l.simulationState,p,J,ee,tc(t),r,i.primary,i.text,fe);pe?(o.save(),pe(o,e,n),o.restore()):Zl(o,e,n)}he&&(o.save(),he(o,c),o.restore()),function(e,t,r){let n=!1;for(const[o,i]of t){const s=Math.min(1,Math.max(0,(r-i.startedAt)/i.durationMs));if(s>=1){t.delete(o);continue}n=!0;const a=1-Math.pow(1-s,3),{body:l}=i,c=i.radius+28*a,d=1-s;e.save(),e.globalAlpha*=d,e.strokeStyle=i.color,e.fillStyle=i.color,e.lineWidth=2.4*d+.4,e.beginPath(),e.arc(l.x,l.y,c,0,2*Math.PI),e.stroke(),e.globalAlpha*=.18,e.beginPath(),e.arc(l.x,l.y,.52*c,0,2*Math.PI),e.fill(),e.restore(),e.save(),e.globalAlpha*=d,e.strokeStyle=i.color,e.lineWidth=1.8;for(let t=0;8>t;t+=1){const r=t*(Math.PI/4)+1.4*s,n=i.radius+5+12*a,o=i.radius+12+34*a;e.beginPath(),e.moveTo(l.x+Math.cos(r)*n,l.y+Math.sin(r)*n),e.lineTo(l.x+Math.cos(r)*o,l.y+Math.sin(r)*o),e.stroke()}e.restore()}}(o,kt.current,pt.current()),Ge.current.afterCompute(r,!0,!1),He.current=!1},[Tt,Ge,dt,tt,a,s,wt,Rt,ye,he,p,J,ee,fe,pe,Me]),Et=(0,As.useCallback)((e,t)=>{const r=Te.current,n=`${re}:${e}:${t??""}`;Ve.current!==n&&(Ve.current=n,q?.({execution:e,liveBodies:r?.liveBodyCount()??0,queuedBodies:r?.queueSize()??0,reason:t,requested:re}))},[q,re]),Nt=(0,As.useCallback)((e,t=!0)=>{Xe.current+=1,Ye.current=!1,Ze.current=!1,Je.current=!1,Ke.current?.terminate(),Ke.current=null,t&&Et("sync",e)},[Et]),Ot=(0,As.useCallback)(()=>yt?"undefined"==typeof window||"undefined"==typeof Worker?"worker unavailable":Le?"runtime region effects require sync":Re?"body forces require sync":Ce?"physics controllers require sync":function(e){return!e||!e.engine&&gl(e.sediment)&&(!(t=e.colliders)||t.every(e=>{const t=e.bodyFilter;return!t||"function"!=typeof t}));var t}(ze??{})?kl(W)?Qe.current?"worker fallback":null:"spawn pacing is not worker-cloneable":"config is not worker-cloneable":"hydrating",[ze,Ce,Re,Le,yt,W]),Dt=(0,As.useCallback)(()=>{const e=Te.current,t=Ot();if(!e||t)return{reason:t,useWorker:!1};const r=e.liveBodyCount(),n=e.queueSize(),o=function(e,t,r=0,n=ml){return"sync"!==e&&("worker"===e||t+r>=n)}(re,r,n,ue);return{reason:o?"worker"===re?"forced worker":"body threshold":"below threshold",useWorker:o}},[re,ue,Ot]),zt=(0,As.useCallback)(e=>{const t=Te.current;return t&&e.snapshot?(t.restore(e.snapshot),He.current=!0,t):t},[]),qt=(0,As.useCallback)((e,t=!0)=>{const r=zt(e);if(!r)return;t&&U?.(e.result,r.controls()),Ft();const n=r.snapshot();!e.result.shouldContinue&&kt.current.size<=0||n.paused||!n.visible||nt.current||ct()},[zt,U,Ft,nt,ct]),_t=(0,As.useCallback)(e=>{Qe.current=!0,Nt("worker failed: "+((e instanceof Error?e.message:e+"")||"unknown error"))},[Nt]),Ht=(0,As.useCallback)(()=>{const e=Te.current;if(!e)return!1;const t=Dt();if(!t.useWorker)return Ye.current||Je.current?Nt(t.reason??"sync fallback"):Et("sync",t.reason??"sync"),!1;if(Ye.current||Je.current)return!0;const r=Ke.current??new Al;Ke.current=r,Je.current=!0;const n=Xe.current+1;return Xe.current=n,r.initFromSnapshot(ze??{},e.snapshot()).then(e=>{if(Xe.current!==n)return;Je.current=!1,Ye.current=!0,Qe.current=!1,zt(e),Et("worker",t.reason??"worker"),Ft();const r=Te.current?.snapshot();e.result.shouldContinue&&r&&!r.paused&&r.visible&&!nt.current&&(_e.current=null,ct())}).catch(e=>{Xe.current===n&&_t(e)}),!0},[zt,ze,_t,Ft,nt,Et,ct,Nt,Dt]),Gt=(0,As.useCallback)(e=>"frame"===e.type||"removed"===e.type?e.frame:null,[]),Vt=(0,As.useCallback)((e,t=!0)=>{const r=Ke.current;if(!r||!Ye.current)return;const n=Xe.current;r.request(e).then(e=>{if(Xe.current!==n)return;const r=Gt(e);r&&qt(r,t)}).catch(_t)},[qt,Gt,_t]),Ut=(0,As.useCallback)(()=>{const e=Te.current;if(!e)return;const t=Ht(),r=e.snapshot(),n=Se||Re||Le||!!Ce;r.paused||!r.visible||!e.hasPendingWork()&&!n||nt.current?ot.current():t&&Je.current||(_e.current=null,ct())},[Ce,Se,Re,Le,nt,ot,ct,Ht]),Yt=(0,As.useCallback)(()=>{it(),rt.current=null;const e=Te.current;if(!e)return;if(Ye.current&&Ke.current){if(Ze.current)return;let t=0;if(!nt.current){const e=pt.current();t=null!==_e.current?(e-_e.current)/1e3:0,_e.current=e}const r=Ke.current,n=Xe.current;return Ze.current=!0,void(nt.current?r.settle():r.tick(t)).then(e=>{Ze.current=!1,Xe.current===n&&qt(e)}).catch(r=>{if(Ze.current=!1,Xe.current!==n)return;_t(r);const o=nt.current?e.settleWithObservations():e.tick(t);ac({store:e,result:o,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:we.current,onTick:ke.current}),Ft()})}let t;if(nt.current)t=e.settleWithObservations();else{const r=pt.current(),n=null!==_e.current?(r-_e.current)/1e3:0;_e.current=r,t=e.tick(n)}const r=we.current,{regionEffectsApplied:n,bodyForcesApplied:o,snapshot:i}=ac({store:e,result:t,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:r,onTick:ke.current});Ft(),(Ae.current||t.shouldContinue||n||o||r||kt.current.size>0)&&!i.paused&&i.visible&&!nt.current&&ct()},[qt,_t,Ft,it,ct,nt,rt]);ot.current=Yt,(0,As.useEffect)(()=>{Qe.current=!1,(Ye.current||Je.current)&&Nt("config changed",!1),Te.current?.updateConfig(ze??{}),Ut()},[ze,Nt]),(0,As.useEffect)(()=>{Qe.current=!1,Ut()},[yt,re,ue]),function({cancelRender:e,frameRuntime:t,lastFrameTimeRef:r,paused:n,postWorkerCommand:o,requestRender:i,storeRef:s,suspendWhenHidden:a}){const l=(0,Bl.useRef)(o);l.current=o;const c=(0,Bl.useRef)(i);c.current=i,(0,Bl.useEffect)(()=>{const o=s.current;o&&(t.setPaused(n),o.setPaused(n),n&&(r.current=null,e()),l.current({type:"setPaused",paused:n},!1),c.current())},[e,t,n]),(0,Bl.useEffect)(()=>{if(!a){const e=s.current;return t.setVisible(!0),void(e&&!e.snapshot().visible&&(e.setVisible(!0),l.current({type:"setVisible",visible:!0},!1),c.current()))}if("undefined"==typeof document)return;const n=()=>{const n=s.current;if(!n)return;const o=Wl();t.setVisible(o),n.setVisible(o),o||(r.current=null,e()),l.current({type:"setVisible",visible:o},!1),c.current()};return n(),document.addEventListener("visibilitychange",n),()=>document.removeEventListener("visibilitychange",n)},[e,t,a])}({cancelRender:it,frameRuntime:ut,lastFrameTimeRef:_e,paused:Q,postWorkerCommand:Vt,requestRender:Ut,storeRef:Te,suspendWhenHidden:ae}),(0,As.useEffect)(()=>()=>Nt("unmount",!1),[Nt]),(0,As.useEffect)(()=>{Ft()},[Ft]),(0,As.useImperativeHandle)(t,()=>({...Te.current.controls(),applyImpulse:(e,t,r)=>{Te.current.applyImpulse(e,t,r),Vt({type:"applyImpulse",id:e,ix:t,iy:r}),Ut()},clear:()=>{Te.current.clear(),ge.current.clear(),kt.current.clear(),Vt({type:"clear"}),Ut()},clearRegionState:e=>{e?ge.current.delete(e):ge.current.clear(),Ut()},getData:()=>Te.current.readBodies(),getRegionState:e=>e?tc(ge.current.get(e)):function(e){const t={};return e.forEach((e,r)=>{const n=tc(e);n&&(t[r]=n)}),t}(ge.current),getStore:()=>Te.current,pause:()=>{ut.setPaused(!0),_e.current=null,it(),Te.current.setPaused(!0),Vt({type:"setPaused",paused:!0},!1),Ut()},push:(e,t)=>{Te.current.enqueue(e,t),kl(t)?Vt({type:"enqueue",spawns:[e],pacing:t}):(Ye.current||Je.current)&&Nt("spawn pacing is not worker-cloneable"),Ut()},pushMany:(e,t)=>{Te.current.enqueue(e,t),kl(t)?Vt({type:"enqueue",spawns:e,pacing:t}):(Ye.current||Je.current)&&Nt("spawn pacing is not worker-cloneable"),Ut()},popBodies:(e,t={})=>{const r=Te.current,n=new Map(r.readBodies().map(e=>[e.id,e])),o=r.remove(e),i=pt.current();for(const e of o){const r=n.get(e);r&&(ge.current.delete(e),kt.current.set(e,{body:r,color:t.color??"#f59e0b",durationMs:Math.max(120,t.durationMs??520),radius:t.radius??Kl(r),startedAt:i}),vt.current===e&&(vt.current=null,mt(null)),gt(t=>t?.id===e?null:t))}return o.length&&(Vt({type:"remove",ids:o}),Ut()),o},remove:e=>{const t=Te.current.remove(e);for(const t of e)ge.current.delete(t);return Vt({type:"remove",ids:e}),Ut(),t},restore:e=>{Te.current.restore(e),ge.current.clear(),kt.current.clear(),Vt({type:"restore",snapshot:e},!1),Ut()},resume:()=>{ut.setPaused(!1),_e.current=null,Te.current.setPaused(!1),Vt({type:"setPaused",paused:!1},!1),Ut()},settle:e=>{const t=Te.current.settle(e);return Vt({type:"settle",maxSteps:e}),Ut(),t},settleWithObservations:e=>{const t=Te.current.settleWithObservations(e);return Vt({type:"settle",maxSteps:e}),Ut(),t},step:e=>{const t=Te.current,r=t.tick(e);return ac({store:t,result:r,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:we.current,onTick:ke.current}),Vt({type:"tick",deltaSeconds:e}),Ft(),r}}),[it,ut,Ft,Vt,Ut,Nt]);const Qt=Zo||!yt&&ht,Xt=["stream-physics-frame",A?"stream-physics-frame--mode-"+A:null,S?"stream-physics-frame--emphasis-"+S:null,h].filter(Boolean).join(" "),Zt=w??("string"==typeof ce?ce:void 0)??"Physics chart",Kt=Ue+"-physics-table",Jt=Math.max(1,dt[0]-tt.left-tt.right),er=Math.max(1,dt[1]-tt.top-tt.bottom),tr=j&&bt?de?de(bt):(0,Rc.jsx)(Wc,{hover:bt}):null,rr=tr&&bt?(0,Rc.jsx)(aa,{x:bt.x-tt.left,y:bt.y-tt.top,containerWidth:Math.max(1,dt[0]-tt.left-tt.right),containerHeight:Math.max(1,dt[1]-tt.top-tt.bottom),margin:tt,className:"stream-physics-tooltip",children:tr}):null;if(Qt){const e=Te.current??jl(ze,B,W),t="string"==typeof ce?ce:void 0,{svg:r}=Jo(e,{width:dt[0],height:dt[1],title:t,description:w,background:"transparent"===s?void 0:s,className:"stream-physics-frame__svg",idPrefix:"physics-"+Ue});return(0,Rc.jsxs)("div",{ref:lt,className:Xt,"data-semiotic-mode":A,role:"img","aria-label":Zt,style:{width:dt[0],height:dt[1]},children:[(0,Rc.jsx)(Yl,{summary:se}),(0,Rc.jsx)("div",{dangerouslySetInnerHTML:{__html:r}})]})}return(0,Rc.jsxs)("div",{ref:lt,className:Xt,"data-semiotic-mode":A,role:"group","aria-label":Zt,"aria-describedby":ft?Ct:void 0,tabIndex:0,style:{position:"relative",width:dt[0],height:dt[1]},onKeyDown:Wt,children:["production"!==process.env.NODE_ENV&&Te.current&&(0,Rc.jsx)(zl,{store:Te.current,diagnostics:Ge.current}),r?(0,Rc.jsx)(Ql,{tableId:Kt}):null,r?(0,Rc.jsx)(Lc,{chartTitle:"string"==typeof ce?ce:Zt,items:Ie,tableId:Kt}):null,(0,Rc.jsx)(Yl,{summary:se}),(0,Rc.jsx)(Vl,{hoverPoint:bt}),(0,Rc.jsx)("div",{id:Ct,"aria-live":"polite","aria-atomic":"true",style:pc,children:ft?ft.description??ft.label:""}),(0,Rc.jsxs)("div",{role:"img","aria-label":Zt,style:{position:"relative",width:"100%",height:"100%"},children:[(0,Rc.jsx)(Ks,{size:dt,margin:tt,children:st}),(0,Rc.jsx)("canvas",{ref:Tt,width:dt[0],height:dt[1],"aria-hidden":"true",onPointerDown:Bt,onPointerMove:j?Mt:void 0,onPointerLeave:j?$t:void 0}),at,(0,Rc.jsx)(fl,{width:Jt,height:er,totalWidth:dt[0],totalHeight:dt[1],margin:tt,title:ce,legend:P,legendPosition:E,legendLayout:F,legendHoverBehavior:R,legendClickBehavior:I,legendHighlightedCategory:L,legendIsolatedCategories:T,pointNodes:Pt,annotations:n,onAnnotationActivate:o,onObservation:D,chartId:y,chartType:Nc,autoPlaceAnnotations:i,svgAnnotationRules:le}),(0,Rc.jsx)(Ll,{active:null!=ft,hoverPoint:ft?{x:ft.x,y:ft.y}:null,margin:tt,size:dt,shape:ft?.shape,width:ft?.width,height:ft?.height,pathData:ft?.pathData}),rr]})]})}));Oc.displayName="StreamPhysicsFrame";var Dc=Oc,zc=require("react"),qc=Object.freeze([]),_c=require("react");function Hc(e,t){if(!t?.length)return[e];const r=t.filter(t=>{if(t.id===e||t.id.startsWith(e+"-"))return!0;const r=t.datum;return!(!r||"object"!=typeof r||null==r.id)&&r.id+""===e}).map(e=>e.id);return r.length?r:[e]}function Gc(e,t,r){if("function"==typeof r)return r(e,t)+"";if("string"==typeof r){const t=e[r];if(null!=t)return t+""}return null!=e&&"object"==typeof e&&"id"in e&&null!=e.id?e.id+"":"physics-row-"+t}function Vc(e,t){const r=e?.getData().find(e=>e.id===t),n=r?.datum;if(n&&"object"==typeof n)return n}var Uc=require("react"),Yc=l(require("react")),Qc=require("react/jsx-runtime");function Xc({componentName:e,message:t,diagnosticHint:r,width:n,height:o}){return(0,Qc.jsx)("div",{role:"alert",style:{width:n,height:Math.max(o,120),display:"flex",alignItems:"center",justifyContent:"center",border:"1px dashed rgba(128, 128, 128, 0.4)",borderRadius:8,background:"rgba(128, 128, 128, 0.04)",padding:24,boxSizing:"border-box"},children:(0,Qc.jsxs)("div",{style:{textAlign:"center",maxWidth:400},children:[(0,Qc.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"rgba(128, 128, 128, 0.7)",marginBottom:6,fontFamily:"monospace"},children:e}),(0,Qc.jsx)("div",{style:{fontSize:14,color:"rgba(128, 128, 128, 0.9)",lineHeight:1.5},children:t}),r&&(0,Qc.jsx)("div",{"data-testid":"semiotic-diagnostic-hint",style:{marginTop:10,padding:"8px 12px",background:"rgba(128, 128, 128, 0.06)",borderRadius:4,fontSize:12,color:"rgba(128, 128, 128, 0.8)",fontFamily:"monospace",textAlign:"left",whiteSpace:"pre-wrap",lineHeight:1.6},children:r})]})})}var Zc=require("react/jsx-runtime"),Kc=class extends Yc.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError?.(e,t)}render(){if(this.state.error){const{fallback:e}=this.props,t=this.state.error;return"function"==typeof e?e(t):void 0!==e?e:(0,Zc.jsx)(Xc,{componentName:"ChartErrorBoundary",message:t.message||"An unexpected error occurred while rendering this chart.",width:600,height:400})}return this.props.children}},Jc=require("react/jsx-runtime");function ed({componentName:e,width:t,height:r,children:n}){return(0,Jc.jsx)(Kc,{fallback:n=>(0,Jc.jsx)(Xc,{componentName:e,message:n.message,width:t,height:r}),children:n})}"undefined"!=typeof process&&process;var td={display:"flex",alignItems:"center",justifyContent:"center",color:"var(--semiotic-text-secondary, #666)",fontSize:13,fontFamily:"inherit",border:"1px dashed var(--semiotic-border, #ddd)",borderRadius:4,boxSizing:"border-box"},rd={background:"var(--semiotic-border, #e0e0e0)",borderRadius:2};function nd(e){return[parseInt(e.slice(1,3),16),parseInt(e.slice(3,5),16),parseInt(e.slice(5,7),16)]}function od(e,t,r){const n=e=>e.toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`}function id(e){const t=e.map(nd),r=t.length-1;return e=>{if(0>=e){const[e,r,n]=t[0];return od(e,r,n)}if(e>=1){const[e,n,o]=t[r];return od(e,n,o)}const n=e*r,o=Math.floor(n),i=n-o,[s,a,l]=t[o],[c,d,u]=t[o+1];return od(Math.round(s+(c-s)*i),Math.round(a+(d-a)*i),Math.round(l+(u-l)*i))}}require("react"),require("d3-scale");var sd=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],ad=id(["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]),ld=id(["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]),cd=id(["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]),dd=id(["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]),ud=id(["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]),pd=id(["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]),yd={blues:ad,reds:ld,greens:cd,viridis:id(["#440154","#482878","#3e4989","#31688e","#26828e","#1f9e89","#35b779","#6ece58","#b5de2b","#fde725"]),oranges:dd,purples:ud,greys:pd,plasma:id(["#0d0887","#41049d","#6a00a8","#8f0da4","#b12a90","#cb4679","#e16462","#f1844b","#fca636","#fcce25","#f0f921"]),inferno:id(["#000004","#160b39","#420a68","#6a176e","#932667","#bc3754","#dd513a","#f3771a","#fca50a","#f6d746","#fcffa4"]),magma:id(["#000004","#140e36","#3b0f70","#641a80","#8c2981","#b73779","#de4968","#f7705c","#fe9f6d","#fecf92","#fcfdbf"]),cividis:id(["#00224e","#123570","#3b496c","#575d6d","#707173","#8a8678","#a59c74","#c3b369","#e1cc55","#fee838","#ffea46"]),turbo:id(["#23171b","#4a58dd","#3f9ee9","#46c7af","#7eed5a","#cdf134","#fbb91f","#f56918","#c52f06","#7a0403"])},hd=(id(["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]),id(["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]),id(["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]),id(["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]),id(["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]),id(["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]),id(["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]),{category10:sd,tableau10:["#4e79a7","#f28e2c","#e15759","#76b7b2","#59a14f","#edc949","#af7aa1","#ff9da7","#9c755f","#bab0ab"],set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],...yd});function fd(e,t){if(null==t||!Object.prototype.hasOwnProperty.call(e,t))return;const r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function md(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}var bd={enabled:!0,tapToSelect:!0,tapToLockTooltip:!0,clearSelection:"backgroundTap",targetSize:44,snap:"nearestDatum",brushHandleSize:44,standardControls:!1,enabled:!1,tapToSelect:!1,tapToLockTooltip:!1};function gd(e,t={}){const r=t.mobileSemantics?.interaction,n="number"==typeof r?.targetSize?r.targetSize:"number"==typeof t.mobileSemantics?.minimumHitTarget?t.mobileSemantics.minimumHitTarget:void 0,o="mobile"===t.mode||"number"==typeof t.width&&480>=t.width,i=!!r||void 0!==n,s=e&&"object"==typeof e?e:void 0;if(!1===e||!1===s?.enabled||void 0===e&&!o&&!i)return bd;const a=s??{};return{enabled:!0,tapToSelect:a.tapToSelect??!0,tapToLockTooltip:a.tapToLockTooltip??!0,clearSelection:a.clearSelection??"backgroundTap",targetSize:a.targetSize??n??44,snap:a.snap??"nearestDatum",brushHandleSize:a.brushHandleSize??44,standardControls:a.standardControls??!1}}var vd={primary:{width:600,height:400,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:void 0,showLabels:void 0,marginDefaults:{top:50,bottom:60,left:70,right:40}},context:{width:400,height:250,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:10,bottom:10,left:10,right:10}},sparkline:{width:120,height:24,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:2,bottom:2,left:0,right:0}},mobile:{width:390,height:300,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:!1,showLabels:!0,marginDefaults:{top:28,bottom:42,left:44,right:16}}};function xd(e,t,r){if(!1!==t)return e;const n={...e};return"horizontal"===r?n.left=Math.min(n.left,15):n.bottom=Math.min(n.bottom,15),n}var kd=require("react/jsx-runtime"),Cd=new Set(["sample","mechanical"]);function wd(e,t,r){const n=r?.hasSimulationMode?function(e){const t=e=>"string"==typeof e&&Cd.has(e);return e.simulationMode?{chartMode:t(e.mode)?void 0:e.mode,simulationMode:e.simulationMode}:t(e.mode)?{chartMode:void 0,simulationMode:e.mode}:{chartMode:e.mode,simulationMode:"sample"}}({mode:e.mode,simulationMode:e.simulationMode}):{chartMode:"sample"===e.mode||"mechanical"===e.mode?void 0:e.mode,simulationMode:"sample"},o=function(e,t,r){const n=vd[e||"primary"],o=e&&"primary"!==e||!r?.width?n.width:r.width,i=e&&"primary"!==e||!r?.height?n.height:r.height,s=function(e,t,r=e.responsiveRules){if(!Array.isArray(r)||0===r.length)return{props:e,matches:[]};const n=r.map((e,t)=>({rule:e,index:t})).filter(e=>function(e,t){const{when:r}=e,n=t.width,o=t.height,i=function(e){if("number"==typeof e.height&&e.height>0)return e.width/e.height}(t),s=function(e){if("number"==typeof e.height&&e.height>0)return e.height>e.width?"portrait":"landscape"}(t);return!("number"==typeof r.minWidth&&r.minWidth>n||"number"==typeof r.maxWidth&&n>r.maxWidth||"number"==typeof r.minHeight&&("number"!=typeof o||r.minHeight>o)||"number"==typeof r.maxHeight&&("number"!=typeof o||o>r.maxHeight)||"number"==typeof r.minAspectRatio&&("number"!=typeof i||r.minAspectRatio>i)||"number"==typeof r.maxAspectRatio&&("number"!=typeof i||i>r.maxAspectRatio)||r.orientation&&s!==r.orientation)}(e.rule,t)).sort((e,t)=>("number"==typeof e.rule.priority?e.rule.priority:e.index)-("number"==typeof t.rule.priority?t.rule.priority:t.index));return{props:n.reduce((e,t)=>function(e,t){const r={...e,...t};for(const n of["margin","frameProps","mobileSemantics","style"])md(e[n])&&md(t[n])&&(r[n]={...e[n],...t[n]});return"string"==typeof e.className&&"string"==typeof t.className&&(r.className=`${e.className} ${t.className}`),r}(e,t.rule.transform),e),matches:n}}({...t,mode:e},{width:t.width??o,height:t.height??i}).props,a=s.mode||e,l=vd[a||"primary"],c="context"===a||"sparkline"===a,d=a&&"primary"!==a||!r?.width?l.width:r.width;return{width:s.width??d,height:s.height??(a&&"primary"!==a||!r?.height?l.height:r.height),showAxes:s.showAxes??l.showAxes,showGrid:s.showGrid??l.showGrid,enableHover:s.enableHover??(!!s.linkedHover||l.enableHover),showLegend:s.showLegend??l.showLegend,showLabels:s.showLabels??l.showLabels,title:c?void 0:s.title,description:s.description,summary:s.summary,accessibleTable:s.accessibleTable,xLabel:c?void 0:s.xLabel,yLabel:c?void 0:s.yLabel,categoryLabel:c?void 0:s.categoryLabel,valueLabel:c?void 0:s.valueLabel,marginDefaults:xd(l.marginDefaults,s.showCategoryTicks,s.orientation),compactMode:c,mobileInteraction:gd(s.mobileInteraction,{mode:a,width:s.width??d,mobileSemantics:s.mobileSemantics}),mobileSemantics:s.mobileSemantics}}(n.chartMode,{width:e.width,height:e.height,enableHover:e.enableHover,title:e.title,description:e.description,summary:e.summary,accessibleTable:e.accessibleTable,mobileInteraction:e.mobileInteraction,mobileSemantics:e.mobileSemantics,responsiveRules:e.responsiveRules},{width:t[0],height:t[1]}),i=e.size?.[0],s=e.size?.[1],a=t[0],l=t[1],c=(0,Uc.useMemo)(()=>{return e=[a,l],(null!=i&&null!=s?[i,s]:void 0)??[o.width??e[0],o.height??e[1]];var e},[l,a,o.height,o.width,s,i]),d=o.compactMode?"sparkline"===n.chartMode?{top:2,right:2,bottom:2,left:2}:{top:8,right:8,bottom:8,left:8}:{top:0,right:0,bottom:0,left:0};const u=e.showProjection??!o.compactMode,p=e.showChrome??!o.compactMode,y=Ad(e.tooltip,void 0),h=void 0!==y.enableHover?y.enableHover:o.enableHover,f=o.compactMode?o.title:o.title??e.title,m=[e.className,n.chartMode&&"primary"!==n.chartMode?"semiotic-physics--"+n.chartMode:null].filter(Boolean).join(" ")||void 0;return{chartMode:n.chartMode,simulationMode:n.simulationMode,resolved:o,chartSize:c,margin:d,showProjection:u,showChrome:p,enableHover:h,title:f,description:o.description??e.description,summary:o.summary??e.summary,accessibleTable:o.accessibleTable??e.accessibleTable,className:m,compactMode:o.compactMode,mobileInteraction:o.mobileInteraction,mobileSemantics:o.mobileSemantics}}function Sd(e,t){return e?t?r=>(0,kd.jsxs)(kd.Fragment,{children:["function"==typeof e?e(r):e,"function"==typeof t?t(r):t]}):e:t}function Ad(e,t){return!1===e?{enableHover:!1}:{enableHover:t?.enableHover,tooltipContent:ia(e)||t?.tooltipContent}}var jd=require("d3-scale");function $d(e,t){const r=t&&"object"==typeof t&&!Array.isArray(t)?t:void 0;return 0===e.length?e=>r&&fd(r,e)||"#4e79a7":t=>{if(r){const e=fd(r,t);if(e)return e}let n=0;for(let e=0;t.length>e;e++)n=31*n+t.charCodeAt(e)|0;return e[Math.abs(n)%e.length]??"#4e79a7"}}function Md(e,t){const r=t.config??{},n=(t.sensors??[]).map(e=>({...e,sensor:!0})),o=[...t.colliders??[],...n],i=[...e.colliders??[],...r.colliders??[],...o];return{...e,...r,observation:{...e.observation,...r.observation},...i.length>0&&{colliders:i}}}function Bd(e){const t=function(e,t,r){const n=e?.observation;return{...e,observation:{...n,chartId:t??n?.chartId??"physics-custom",chartType:n?.chartType??"PhysicsCustomChart",onObservation:r??n?.onObservation}}}(e.config,e.chartId,e.onObservation),r=function(e,t,r){if(e&&"object"==typeof e&&!Array.isArray(e)){const t=Object.values(e).filter(e=>"string"==typeof e&&e.length>0);if(t.length>0)return t}if(Array.isArray(e)&&e.length>0)return e;if("string"==typeof e){const t=hd[e];if(Array.isArray(t)&&t.length>0)return t}return t&&t.length>0?t:r}(e.colorScheme,e.themeCategorical,sd),n=function(e){const[t,r]=e;return{width:t,height:r,plot:{x:32,y:24,width:Math.max(80,t-64),height:Math.max(80,r-58)}}}(e.size),o={data:e.data,scales:{x:(0,jd.scaleLinear)().domain(e.xExtent??[0,1]).range([n.plot.x,n.plot.x+n.plot.width]),y:(0,jd.scaleLinear)().domain(e.yExtent??[0,1]).range([n.plot.y+n.plot.height,n.plot.y])},dimensions:n,theme:{semantic:e.semantic,categorical:[...r]},resolveColor:$d(r,e.colorScheme),config:e.layoutConfig??{},world:new ws(t)},i=e.skipLayout?{}:e.layout(o)??{},s=function(e,t){if(!t?.length)return e;const r=new Map;for(const e of t){const{bodyId:t,...n}=e,o=r.get(t)??[];o.push(n),r.set(t,o)}return e.map(e=>{const t=r.get(e.id);return t?.length?{...e,springs:[...e.springs??[],...t]}:e})}([...i.initialSpawns??i.bodies??[]],i.constraints);return{config:Md(t,i),context:o,initialSpawnPacing:i.initialSpawnPacing,initialSpawns:s,result:i}}var Wd=require("react/jsx-runtime"),Pd=(0,zc.forwardRef)(function(e,t){const{chartId:r,color:n,colorBy:o,colorScheme:i,config:s,controllers:a,data:l,emptyContent:c,frameProps:d={},layout:u,layoutConfig:p,loading:y,loadingContent:h,onObservation:f,opacity:m,paused:b,spawnDatum:g,stroke:v,strokeWidth:x,title:k,xExtent:C,yExtent:w}=e,S=wd(e,[700,380]),{chartSize:A,className:j,title:$,chartMode:M,margin:B,enableHover:W,description:P,summary:I,accessibleTable:L}=S,R=(0,zc.useRef)(null),T=(0,zc.useRef)(null),F=(0,zc.useRef)(""),E=function(e){const[t,r]=e.size,n=function(e,t,r,n){if(!e)return null;if(!1===n)return null;if(null!=n)return(0,Jc.jsx)("div",{style:{width:t,height:r,display:"flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},children:n});const o=Math.min(5,Math.floor(r/40)),i=Math.max(8,Math.floor(r/(3*o))),s=Math.max(6,Math.floor(r/(2.5*o))),a=Math.floor((r-(o*(i+s)-s))/2);return(0,Jc.jsx)("div",{style:{width:t,height:r,position:"relative",overflow:"hidden",border:"1px solid var(--semiotic-border, #e0e0e0)",borderRadius:4,boxSizing:"border-box"},children:Array.from({length:o},(e,r)=>(0,Jc.jsx)("div",{className:"semiotic-loading-bar",style:{...rd,position:"absolute",top:a+r*(i+s),left:Math.floor(.1*t),width:30+(37*r+13)%50+"%",height:i,opacity:.5+r%2*.2}},r))})}(e.loading,t,r,e.loadingContent);return n||function(e,t,r,n){return!1===n||null==e||Array.isArray(e)&&e.length>0?null:Array.isArray(e)?(0,Jc.jsx)("div",{style:{...td,width:t,height:r},children:n||"No data available"}):null}(e.data,t,r,e.emptyContent)}({data:l,emptyContent:c,loading:y,loadingContent:h,size:A}),N=null!=E,O=(0,zc.useMemo)(()=>function(e){if(!e)return qc;let t=!1;for(let r=0;e.length>r;r++){const n=e[r];if(null==n||"object"!=typeof n){t=!0;break}}if(!t)return e;const r=[];for(const t of e)null!=t&&"object"==typeof t&&r.push(t);return r}(l??[]),[l]),D=Ts(e=>e.theme),z=(0,zc.useMemo)(()=>function(e){if(!e?.colors)return;const t=e.colors;return{primary:t.primary,secondary:t.secondary||t.primary,surface:t.surface||t.background,success:t.success,danger:t.danger,warning:t.warning,error:t.error,info:t.info,text:t.text,textSecondary:t.textSecondary,border:t.border,grid:t.grid}}(D)??{},[D]),q=D?.colors?.categorical??Ws.colors.categorical,_=(0,zc.useMemo)(()=>[A[0],A[1],O.length,O.map((e,t)=>(e.id??t)+"").join("|"),C?.join(",")??"",w?.join(",")??""].join("::"),[A,O,C,w]),H=(0,zc.useMemo)(()=>Bd({chartId:r,colorScheme:i,config:s,data:O,layout:u,layoutConfig:p,onObservation:f,semantic:z,skipLayout:N,size:A,themeCategorical:q,xExtent:C,yExtent:w}),[r,A,i,s,u,p,f,O,z,N,q,C,w]);F.current===_&&null!=T.current||(F.current=_,T.current=H.initialSpawns);const G=T.current,V=(0,zc.useMemo)(()=>{const e=[...H.result.controllers??[],...a??[],...d.controllers??[]];return e.length?e:void 0},[d.controllers,a,H.result.controllers]),U=(0,zc.useMemo)(()=>{const e=[...H.result.regionEffects??[],...d.regionEffects??[]];return e.length?e:void 0},[d.regionEffects,H.result.regionEffects]),Y=(0,zc.useCallback)(e=>{const t=e.datum,r=t&&o?function(e,t,r){return"function"==typeof r?r(e,0):e[r]}(t,0,o)+"":e.id;return{fill:n??H.context.resolveColor(r,t),stroke:v??"#111827",strokeWidth:x??1,opacity:m??.9}},[n,o,m,H.context,v,x]);!function(e,t){const{frameRef:r,spawnDatum:n,seedRows:o,idAccessor:i,bodyIdsForSeed:s,seedSpawns:a}=t,l=(0,_c.useRef)(new Map),c=(0,_c.useRef)(new Map),d=(0,_c.useRef)(""),u=o?o.map((e,t)=>Gc(e,t,i)).join("\0"):"";if(u!==d.current&&(d.current=u,o))for(let e=0;o.length>e;e+=1){const t=o[e],r=Gc(t,e,i);l.current.set(r,t),c.current.set(r,s?.(t,r,e)??Hc(r,a))}(0,_c.useImperativeHandle)(e,()=>{const e=l.current,t=c.current;function o(e,t){const r=n(e,t);return{datumId:r.datumId||Gc(e,t,i),spawns:r.spawns.map(e=>({...e,spawnAt:void 0}))}}function s(n){const o=[];for(const{datum:r,result:i}of n)e.set(i.datumId,r),t.set(i.datumId,i.spawns.map(e=>e.id)),o.push(...i.spawns);if(!o.length)return;const i=r.current;i?(i.pushMany(o),i.step(0)):"production"!==process.env.NODE_ENV&&console.warn("[semiotic/physics] push() called before the physics frame mounted (loading/empty early-return). Omit data for push mode and ensure the chart is mounted.")}function a(n){const o=e.get(n);if(o)return o;const i=t.get(n)??[n];for(const o of i){const i=Vc(r.current,o);if(i)return e.set(n,i),t.has(n)||t.set(n,[o]),i}}return{push:t=>{s([{datum:t,result:o(t,e.size)}])},pushMany:t=>{const r=e.size;s(t.map((e,t)=>({datum:e,result:o(e,r+t)})))},remove:n=>{const o=Array.isArray(n)?n:[n],i=[],s=[];for(const r of o){const n=a(r);n&&i.push(n),e.delete(r),s.push(...t.get(r)??[r]),t.delete(r)}return s.length&&r.current?.remove(s),i},update:(n,i)=>{const l=Array.isArray(n)?n:[n],c=[];for(const n of l){const l=a(n);if(!l)continue;c.push(l);const d=t.get(n)??[n];r.current?.remove(d),e.delete(n),t.delete(n);const u=i(l);s([{datum:u,result:o(u,e.size)}])}return c},clear:()=>{e.clear(),t.clear(),d.current="",r.current?.clear()},getData:()=>{const t=r.current;if(!t)return Array.from(e.values());const n=t.getData().map(e=>e.datum).filter(e=>!!e&&"object"==typeof e);return n.length?n:Array.from(e.values())},getScales:()=>null,getCustomLayout:()=>r.current?.snapshot()??null,popBodies:(e,t)=>r.current?.popBodies(e,t)??[]}},[r,i,n])}(t,{frameRef:R,spawnDatum:(0,zc.useCallback)((e,t)=>{const n=e;if(g)return function(e,t,r){return Array.isArray(r)?{datumId:(e.id??r[0]?.id??"physics-custom-"+t)+"",spawns:r}:"spawns"in r?r:{datumId:(e.id??r.id??"physics-custom-"+t)+"",spawns:[r]}}(e,t,g(n,t,H.context));const o=Bd({chartId:r,colorScheme:i,config:s,data:[n],layout:u,layoutConfig:p,onObservation:f,semantic:z,size:A,themeCategorical:q,xExtent:C,yExtent:w}),a=o.initialSpawns.length?o.initialSpawns:[{id:(e.id??"physics-custom-"+t)+"",x:o.context.dimensions.plot.x+o.context.dimensions.plot.width/2,y:o.context.dimensions.plot.y+12,mass:1,shape:{type:"circle",radius:5},datum:e}];return{datumId:(e.id??a[0].id)+"",spawns:a}},[r,A,i,s,g,u,p,f,H.context,z,q,C,w]),seedRows:O,seedSpawns:G});const Q=(0,zc.useCallback)((e,t)=>{d.onBodyPointerDown?.(e,t)},[d]);if(E)return E;const X=Ad(e.tooltip,d),Z=function(e,t,r,n){return{accessibleTable:n?.accessibleTable??e.accessibleTable??t?.accessibleTable,annotations:e.annotations??t?.annotations,autoPlaceAnnotations:e.autoPlaceAnnotations??t?.autoPlaceAnnotations,background:e.background??t?.background,chartId:e.chartId??t?.chartId,chartMode:n?.chartMode??t?.chartMode,className:n?.className??e.className??t?.className,color:e.color??t?.color,description:n?.description??e.description??t?.description,emphasis:e.emphasis??t?.emphasis,enableHover:n?.enableHover??t?.enableHover,hoverRadius:e.hoverRadius??t?.hoverRadius,legend:e.legend??t?.legend,legendLayout:e.legendLayout??t?.legendLayout,legendPosition:e.legendPosition??t?.legendPosition,margin:n?.margin??t?.margin,onClick:null!=e.onClick?(t,r)=>{t&&e.onClick?.(t,{x:r.x,y:r.y})}:t?.onClick,onObservation:e.onObservation??t?.onObservation,onAnnotationActivate:t?.onAnnotationActivate,opacity:e.opacity??t?.opacity,semanticItems:t?.semanticItems??r,stroke:e.stroke??t?.stroke,strokeWidth:e.strokeWidth??t?.strokeWidth,summary:n?.summary??e.summary??t?.summary,svgAnnotationRules:e.svgAnnotationRules??t?.svgAnnotationRules,title:n?.title??e.title??t?.title}}(e,d,H.result.semanticItems,{chartMode:M,className:j,title:$??k,description:P,summary:I,accessibleTable:L,enableHover:W,margin:B});return K=A,J=(0,Wd.jsx)(Dc,{...d,...X,...Z,ref:R,backgroundGraphics:Sd(d.backgroundGraphics,H.result.backgroundOverlays),bodyForces:H.result.bodyForces??d.bodyForces,bodyStyle:H.result.bodyStyle??d.bodyStyle??Y,config:H.config,controllers:V,foregroundGraphics:Sd(d.foregroundGraphics,H.result.overlays),initialSpawnPacing:H.initialSpawnPacing,initialSpawns:G,onBodyPointerDown:Q,paused:b,regionEffects:U,responsiveHeight:e.responsiveHeight,responsiveWidth:e.responsiveWidth,selectedBodyStyle:H.result.selectedBodyStyle??d.selectedBodyStyle,size:A}),(0,kd.jsx)(ed,{componentName:"PhysicsCustomChart",width:K[0],height:K[1],children:J});var K,J});function Id(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if(null!=e&&""!==e)return e+""}return e.id}function Ld(e,t={}){const r=t.bodies??[],n=Math.max(0,t.recentBodyLimit??6),o=new Map;for(const e of r){const r=t.getContainerId?.(e);if(!r)continue;const n=o.get(r);n?n.push(e):o.set(r,[e])}const i=e.map(e=>{const r=o.get(e.id)??[],i=Math.max(0,Math.floor(e.count??r.length)),s=r.slice(Math.max(0,r.length-n)).map(e=>({id:e.id,label:t.getBodyLabel?.(e)??Id(e),datum:e.datum}));return{id:e.id,label:e.label,count:i,share:0,secondary:e.secondary,secondaryLabel:e.secondaryLabel,observed:e.observed,bodyIds:r.map(e=>e.id),recentBodies:s,metadata:e.metadata}}),s=i.reduce((e,t)=>e+t.count,0);return i.map(e=>({...e,share:s>0?e.count/s:0}))}function Rd(e,t={}){const r=t.chartType??"Physics chart",n=t.chartId??"physics",o=e.reduce((e,t)=>e+t.count,0),i=e.filter(e=>e.count>0).length,s=t.projectionLabel??"settled projection",a=Math.max(0,t.maxBodiesPerContainer??6);let l=0;return{id:n,role:"chart",level:1,label:t.title??`${r}: ${o} bodies across ${e.length} containers; ${i} containers currently non-empty.`,children:e.map(e=>{const t=e.recentBodies.slice(0,a).map(t=>{return{id:`${e.id}-body-${l++}`,role:"datum",level:3,label:t.label,datum:(r=t.datum,r&&"object"==typeof r?r:null)};var r}),r=Math.max(0,e.bodyIds.length-t.length);r>0&&t.push({id:`${e.id}-more-${l++}`,role:"datum",level:3,label:`…and ${r} more recent bodies`});const n=[e.count+" bodies"];var o;return n.push(Number.isFinite(o=e.share)&&o>0?.01>o?"<1%":Math.round(100*o)+"%":"0%"),null!=e.secondary&&e.secondary>0&&n.push(`${e.secondary} ${e.secondaryLabel??"secondary"}`),null!=e.observed&&n.push(e.observed+" observed"),{id:e.id,role:"series",level:2,label:`${e.label}: ${n.join(", ")} in the ${s}.`,value:e.count,datum:e.metadata??null,children:t}})}}function Td(e,t={}){const r=t.getDatumLabel?.(e.datum,e)??function(e,t){if(e&&"object"==typeof e){const t=e.label??e.name??e.id;if(null!=t&&""!==t)return t+""}return t}(e.datum,e.bodyId);return"physics-bin-enter"===e.type?`${r??"A body"} entered ${e.binId??e.sensorId??"a bin"}.`:"physics-bin-exit"===e.type?`${r??"A body"} exited ${e.binId??e.sensorId??"a bin"}.`:"physics-proximity-enter"===e.type?`${r??"A body"} entered proximity sensor ${e.binId??e.sensorId??"a sensor"}.`:"physics-proximity-exit"===e.type?`${r??"A body"} exited proximity sensor ${e.binId??e.sensorId??"a sensor"}.`:"physics-settle"===e.type?(r??"A body")+" settled.":"physics-late"===e.type?`${r??"A body"} arrived late for ${e.binId??e.sensorId??"a closed window"}.`:"physics-barrier-cross"===e.type?`${n=e.barrierId??"Barrier",0===n.length?n:n.charAt(0).toUpperCase()+n.slice(1)} crossed ${function(e){return e.binId?e.binId:"number"==typeof e.barrierValue?""+Math.round(e.barrierValue):"a threshold"}(e)}.`:"sim-active"===e.type?"Simulation running.":"sim-idle"===e.type?"Simulation settled.":null;var n}Pd.displayName="PhysicsCustomChart";
|
|
1
|
+
var e,t=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,i=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,a=(e,t,i,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let l of o(t))s.call(e,l)||l===i||r(e,l,{get:()=>t[l],enumerable:!(a=n(t,l))||a.enumerable});return e},l=(e,n,o)=>(o=null!=e?t(i(e)):{},a(!n&&e&&e.__esModule?o:r(o,"default",{value:e,enumerable:!0}),e)),c={};((e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})})(c,{EXPERIMENTAL_GOFISH_ADAPTER_NAME:()=>u,IDID_SPEC_VERSION:()=>Rr,unstable_BUILTIN_INTENT_IDS:()=>Tr,unstable_BuiltInPhysicsEngineAdapter:()=>Ti,unstable_DEFAULT_DATA_PITFALLS_ANNOTATION_PALETTE:()=>hr,unstable_DEFAULT_PHYSICS_CANVAS_THEME:()=>ko,unstable_PhysicsCustomChart:()=>Od,unstable_PhysicsPipelineStore:()=>Ps,unstable_PhysicsSedimentAccumulator:()=>Vi,unstable_StreamPhysicsFrame:()=>Vc,unstable_attachIDID:()=>an,unstable_attachIDIDAnnotations:()=>cn,unstable_buildDataPitfallsAnnotationBridge:()=>Br,unstable_buildDataPitfallsBridge:()=>Ir,unstable_buildDataPitfallsNotificationBridge:()=>jr,unstable_buildPhysicsNavigationTree:()=>qd,unstable_buildPhysicsSettledEvidence:()=>$o,unstable_buildPhysicsSettledProjection:()=>zd,unstable_buildPhysicsSettledScene:()=>Lo,unstable_collidersFromPhysicsAnnotations:()=>di,unstable_collidersFromPlotBounds:()=>ds,unstable_collidersFromXScaleBins:()=>us,unstable_createDefaultPhysicsEngineAdapter:()=>Fi,unstable_dataPitfallsFindingToAnnotation:()=>$r,unstable_dataPitfallsFindingToNotification:()=>Sr,unstable_evaluatePhysicsBodyBudget:()=>Qi,unstable_fromFlintChart:()=>yo,unstable_fromGofishIR:()=>C,unstable_fromMermaid:()=>_n,unstable_fromObservablePlot:()=>Pn,unstable_fromVegaLiteResult:()=>Cn,unstable_gofishBobaIR:()=>R,unstable_gofishBottleIR:()=>L,unstable_gofishFlowerIR:()=>P,unstable_gofishIRExamples:()=>O,unstable_gofishPythonIR:()=>T,unstable_gofishTreemapIR:()=>I,unstable_physicsBodiesToXYSceneNodes:()=>Io,unstable_physicsBodyToXYSceneNode:()=>Po,unstable_physicsCanvasColorWithAlpha:()=>So,unstable_physicsObservationAnnouncement:()=>_d,unstable_readIDID:()=>ln,unstable_readIDIDAnnotations:()=>dn,unstable_renderPhysicsSettledSVG:()=>ai,unstable_resolvePhysicsBodyAnnotations:()=>ui,unstable_resolvePhysicsCanvasTheme:()=>Ao,unstable_schedulePhysicsSpawns:()=>rs,unstable_sedimentHeightfield:()=>Ui,unstable_summarizePhysicsAnnotations:()=>pi,unstable_toDataPitfallsAnnotations:()=>Mr,unstable_toDataPitfallsChain:()=>Lr,unstable_toDataPitfallsNotifications:()=>Ar,unstable_toVegaLite:()=>on,unstable_toVegaLiteResult:()=>nn,unstable_unwrapIDIDEnrichedVegaLiteSpec:()=>gn,unstable_validatePortableAnnotation:()=>Qr,unstable_validatePortableAudienceProfile:()=>Yr,unstable_validatePortableCapability:()=>Ur}),module.exports=(e=c,a(r({},"__esModule",{value:!0}),e));var d=require("react"),u="unstable-gofish-displaylist-adapter";function p(e){switch(e.kind){case"rect":case"image":return{x:e.x,y:e.y,w:e.w,h:e.h};case"ellipse":return{x:e.cx-e.rx,y:e.cy-e.ry,w:2*e.rx,h:2*e.ry};case"path":return function(e){const t=e.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi);if(!t||2>t.length)return null;let r=1/0,n=1/0,o=-1/0,i=-1/0;for(let e=0;t.length>e+1;e+=2){const s=parseFloat(t[e]),a=parseFloat(t[e+1]);Number.isFinite(s)&&(r=Math.min(r,s),o=Math.max(o,s)),Number.isFinite(a)&&(n=Math.min(n,a),i=Math.max(i,a))}return Number.isFinite(r)&&Number.isFinite(n)?{x:r,y:n,w:o-r,h:i-n}:null}(e.d);case"text":return function(e){const t=e.fontSize??12,r=Math.max(1,(e.text+"").length*t*.6),n=e.textAnchor??"start";return{x:"middle"===n?e.x-r/2:"end"===n?e.x-r:e.x,y:e.y-t,w:r,h:1.2*t}}(e);case"composite":case"mask":return e.bbox;case"group":return null}}var y={tx:0,ty:0,sx:1,sy:1};function h(e,t){return{x:e.x*t.sx+t.tx,y:e.y*t.sy+t.ty,w:e.w*t.sx,h:e.h*t.sy}}function f(e,t){const[r=0,n=0]=t.translate??[],[o=1,i=1]=t.scale??[];return{tx:e.tx+r*e.sx,ty:e.ty+n*e.sy,sx:e.sx*o,sy:e.sy*i}}function m(e){if(null!=e.datum)return e.datum;let t;if("group"===e.kind?t=e.children:"composite"===e.kind?t=[...e.source,...e.dest]:"mask"===e.kind&&(t=[...e.mask,...e.content]),t)for(const e of t){const t=m(e);if(null!=t)return t}}function b(e){return null==e?null:Array.isArray(e)?0===e.length?null:1===e.length?e[0]:{...e[0],_rows:e}:e}function g(e,t,r){const n=function(e){if(!e)return{};const t={};return void 0!==e.fill&&(t.fill=e.fill),void 0!==e.stroke&&(t.stroke=e.stroke),void 0!==e.strokeWidth&&(t.strokeWidth=e.strokeWidth),void 0!==e.strokeDasharray&&(t.strokeDasharray=e.strokeDasharray),void 0!==e.opacity&&(t.opacity=e.opacity),void 0!==e.fillOpacity&&(t.fillOpacity=e.fillOpacity),void 0!==e.filter&&(t.filter=e.filter),void 0!==e.mixBlendMode&&(t.style={mixBlendMode:e.mixBlendMode}),t}(e.style);switch(e.kind){case"rect":return(0,d.createElement)("rect",{key:t,x:e.x,y:e.y,width:e.w,height:e.h,...void 0!==e.rx?{rx:e.rx}:{},...void 0!==e.ry?{ry:e.ry}:{},...n});case"ellipse":return(0,d.createElement)("ellipse",{key:t,cx:e.cx,cy:e.cy,rx:e.rx,ry:e.ry,...n});case"path":return(0,d.createElement)("path",{key:t,d:e.d,...n});case"text":return(0,d.createElement)("text",{key:t,x:e.x,y:e.y,...void 0!==e.fontSize?{fontSize:e.fontSize}:{},...void 0!==e.fontFamily?{fontFamily:e.fontFamily}:{},...void 0!==e.textAnchor?{textAnchor:e.textAnchor}:{},...void 0!==e.dominantBaseline?{dominantBaseline:e.dominantBaseline}:{},...void 0!==e.rotate?{transform:`rotate(${e.rotate} ${e.x} ${e.y})`}:{},...n},e.text);case"image":return(0,d.createElement)("image",{key:t,x:e.x,y:e.y,width:e.w,height:e.h,href:e.href,...void 0!==e.preserveAspectRatio?{preserveAspectRatio:e.preserveAspectRatio}:{},...n});case"group":{const o=[];return e.transform.translate&&o.push(`translate(${e.transform.translate[0]} ${e.transform.translate[1]})`),e.transform.scale&&o.push(`scale(${e.transform.scale[0]} ${e.transform.scale[1]})`),(0,d.createElement)("g",{key:t,...o.length?{transform:o.join(" ")}:{},...n},e.children.map((e,n)=>g(e,`${t}-${n}`,r)))}case"composite":case"mask":return function(e,t,r){const n="gf-comp-"+r.compositeId++,o=n+"-source",i=n+"-destination";if("mask"===e.kind){const s=n+"-mask";return(0,d.createElement)(d.Fragment,{key:t},(0,d.createElement)("defs",null,(0,d.createElement)("g",{id:o},e.mask.map((e,t)=>g(e,`${s}-m-${t}`,r))),(0,d.createElement)("g",{id:i},e.content.map((e,t)=>g(e,`${s}-c-${t}`,r))),(0,d.createElement)("mask",{id:s,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},(0,d.createElement)("use",{href:"#"+o}))),(0,d.createElement)("use",{href:"#"+i,mask:`url(#${s})`}))}const{x:s,y:a,w:l,h:c}=e.bbox,u=`translate(${s} ${a})`,p=e.blendMode,y="atop"===e.operator||"in"===e.operator,h=n+"-desat",f=n+"-cov",m=e.source.map((e,t)=>g(e,`${n}-s-${t}`,r)),b=e.dest.map((e,t)=>g(e,`${n}-d-${t}`,r)),v=[];return p&&v.push((0,d.createElement)("filter",{key:"desat",id:h},(0,d.createElement)("feColorMatrix",{type:"saturate",values:"0"}))),y&&v.push((0,d.createElement)("mask",{key:"cov",id:f,maskUnits:"userSpaceOnUse",x:s,y:a,width:l,height:c,style:{maskType:"alpha"}},(0,d.createElement)("g",{transform:u},e.source.map((e,t)=>g(e,`${n}-m-${t}`,r))))),(0,d.createElement)(d.Fragment,{key:t},v.length?(0,d.createElement)("defs",{key:"defs"},v):null,(0,d.createElement)("g",{key:"g",...y?{mask:`url(#${f})`}:{}},(0,d.createElement)("g",{transform:u,style:{isolation:"isolate"}},(0,d.createElement)("g",p?{filter:`url(#${h})`}:null,m),(0,d.createElement)("g",p?{style:{mixBlendMode:p}}:null,b))))}(e,t,r)}}function v(e,t,r,n){for(const o of e){if("group"===o.kind){v(o.children,f(t,o.transform),r,n);continue}const e=o.role??"node",i=b(m(o));if("node"!==e||!i||"text"===o.kind)continue;const s=p(o);if(!s)continue;const a=h(s,t);a.w>0&&a.h>0&&(r.push({type:"rect",x:a.x,y:a.y,w:a.w,h:a.h,style:{fill:"rgba(0,0,0,0)",stroke:"none"},datum:i,id:o.id??"gofish-node-"+n.n}),n.n+=1)}}function x(e,t){for(const r of e){if("group"===r.kind){x(r.children,t);continue}if("node"!==(r.role??"node")||"text"===r.kind)continue;const e=b(m(r));e&&t.push(e)}}function k(e){return t=>{const r=t.config?.displayList??e,n=[];v(r.items,y,n,{n:0});const o={compositeId:0};return{sceneNodes:n,overlays:(0,d.createElement)("g",{className:"semiotic-gofish-displaylist","data-gofish-ir":r.ir},r.items.map((e,t)=>g(e,"gf-"+t,o)))}}}function C(e,t={}){const r=[];e&&"gofish-display-list"===e.ir||r.push(`Expected a "gofish-display-list" document (the output of GoFish's toDisplayList) but got ir="${e?.ir}". This adapter consumes the baked render IR, not the source-level Frontend IR. Attempting best-effort translation.`),0!==e?.irVersion&&r.push(`This adapter targets GoFish DisplayList IR v0; document declares irVersion=${e?.irVersion}. Newer fields are ignored.`);const n=t.displayList??e,o=Array.isArray(n?.items)?n.items:[];0===o.length&&r.push("Display list carried no items; the chart will render empty.");const i=[];x(o,i);const s=n?.viewport??{w:0,h:0};return{family:"network",networkLayout:k(n),layoutConfig:{displayList:n},nodes:i,edges:[],width:s.w,height:s.h,irVersion:n?.irVersion??0,warnings:r.length?r:void 0}}var w={irVersion:0,ir:"gofish-display-list",viewport:{w:725,h:608},items:[{kind:"rect",x:46,y:177.05109489051097,w:4,h:390.94890510948903,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"A",species:"Bass",count:23,x:5.26},{lake:"A",species:"Trout",count:31,x:5.26},{lake:"A",species:"Catfish",count:29,x:5.26},{lake:"A",species:"Perch",count:12,x:5.26},{lake:"A",species:"Salmon",count:8,x:5.26}],role:"node"},{kind:"rect",x:150.21159715157677,y:48,w:4,h:520,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"B",species:"Bass",count:25,x:30.87},{lake:"B",species:"Trout",count:34,x:30.87},{lake:"B",species:"Catfish",count:41,x:30.87},{lake:"B",species:"Perch",count:21,x:30.87},{lake:"B",species:"Salmon",count:16,x:30.87}],role:"node"},{kind:"rect",x:228.09562563580872,y:97.34306569343067,w:4,h:470.6569343065693,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"C",species:"Bass",count:15,x:50.01},{lake:"C",species:"Trout",count:25,x:50.01},{lake:"C",species:"Catfish",count:31,x:50.01},{lake:"C",species:"Perch",count:22,x:50.01},{lake:"C",species:"Salmon",count:31,x:50.01}],role:"node"},{kind:"rect",x:493.08036622583916,y:127.7080291970803,w:4,h:440.2919708029197,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"D",species:"Bass",count:12,x:115.13},{lake:"D",species:"Trout",count:17,x:115.13},{lake:"D",species:"Catfish",count:23,x:115.13},{lake:"D",species:"Perch",count:23,x:115.13},{lake:"D",species:"Salmon",count:41,x:115.13}],role:"node"},{kind:"rect",x:566,y:230.18978102189783,w:4,h:337.81021897810217,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"E",species:"Bass",count:7,x:133.05},{lake:"E",species:"Trout",count:9,x:133.05},{lake:"E",species:"Catfish",count:13,x:133.05},{lake:"E",species:"Perch",count:20,x:133.05},{lake:"E",species:"Salmon",count:40,x:133.05}],role:"node"},{kind:"rect",x:374.50457782299077,y:233.98540145985402,w:4,h:334.014598540146,rx:0,ry:0,style:{fill:"rgb(0, 142, 91)",stroke:"rgb(0, 142, 91)",strokeWidth:0,opacity:1},datum:[{lake:"F",species:"Bass",count:4,x:85.99},{lake:"F",species:"Trout",count:7,x:85.99},{lake:"F",species:"Catfish",count:9,x:85.99},{lake:"F",species:"Perch",count:21,x:85.99},{lake:"F",species:"Salmon",count:47,x:85.99}],role:"node"},{kind:"path",d:"M48,177.05109489051097 L51.33938470081845,157.33185276968038 Q62.585541795027574,147.83007294504642 78.5544659261578,151.23589371044534 L78.5544659261578,151.23589371044534 Q79.24615709420912,167.54931506587707 68,177.05109489051097 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M48,177.05109489051097 L28.23212580349808,180.08937561343197 Q15.395537702847022,167.0555157053688 19.932222868676277,148.55197408115367 L19.932222868676277,148.55197408115367 Q38.502796600167386,144.29799286161722 51.33938470081844,157.33185276968038 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M48,177.05109489051097 L54.872239108850245,195.83332930579792 Q46.05669091221945,210.74998921193776 27.648845679391155,211.4869848575027 L27.648845679391155,211.4869848575027 Q19.41657760686728,195.0060355195718 28.232125803498075,180.08937561343197 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M48,177.05109489051097 L65.6653119358892,186.42855479219708 Q73.1051493059896,194.96663366274248 74.27815052329349,207.20832959588688 L74.27815052329349,207.20832959588688 Q62.312076478950644,204.37140817634332 54.87223910885024,195.83332930579792 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M48,177.05109489051097 L68,177.05109489051097 Q78.2786737604877,179.61015642690683 86.81510630457642,186.7148168734962 L86.81510630457642,186.7148168734962 Q75.94398569637693,188.98761632859294 65.6653119358892,186.42855479219702 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M152.21159715157677,48 L160.44397423880116,29.77287824439236 Q171.53152518881467,22.61463788393587 185.8165831430777,26.304265015652845 L185.8165831430777,26.304265015652845 Q183.2991481015903,40.8417596395434 172.21159715157677,48 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M152.21159715157677,48 L134.08006108840306,39.55918250464856 Q128.5896756113119,24.768303125587636 138.2916438648223,10.500201327279456 L138.2916438648223,10.500201327279456 Q154.95358876170997,14.981998865331548 160.44397423880116,29.77287824439236 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M152.21159715157677,48 L149.69583253910324,67.84114231627365 Q133.7568401074522,76.6417934955033 117.19474012561054,67.33441811958761 L117.19474012561054,67.33441811958761 Q118.14106865675201,48.35983368387815 134.08006108840306,39.55918250464856 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M152.21159715157677,48 L167.06425994884756,61.393969084277046 Q171.3357758215148,72.90126238854208 166.1315504383313,85.49979867272054 L166.1315504383313,85.49979867272054 Q153.9673484117705,79.34843562053874 149.69583253910326,67.8411423162737 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M152.21159715157677,48 L172.21159715157677,48 Q182.78856757502288,52.06475728069893 189.5493329143521,62.348989097116544 L189.5493329143521,62.348989097116544 Q177.64123037229365,65.45872636497592 167.06425994884756,61.393969084277046 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L244.59148138039112,83.56372731191692 Q255.2031434952678,79.32490847658079 267.2417456186992,82.50508165863994 L267.2417456186992,82.50508165863994 Q260.7072877506854,93.10424685809448 250.09562563580872,97.34306569343067 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L221.28774260465605,79.38697490201582 Q223.73634923567542,65.7252387745541 237.15241628612105,57.97046474152933 L237.15241628612105,57.97046474152933 Q247.04008801141052,69.9019911844552 244.59148138039112,83.56372731191692 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L212.1395348443939,106.15094872458337 Q197.13404068352253,101.0219129902373 192.24565087293524,84.40554620746116 L192.24565087293524,84.40554620746116 Q206.28224844378468,74.25793916766975 221.28774260465602,79.38697490201582 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L230.09562563580872,117.34306569343067 Q223.20475072170726,128.39845190269688 208.9370652227302,131.2888359932207 L208.9370652227302,131.2888359932207 Q205.24865993029243,117.20633493384952 212.1395348443939,106.15094872458337 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M230.09562563580872,97.34306569343067 L250.09562563580872,97.34306569343067 Q261.30882907140517,108.5562691290271 258.3798968832706,125.62733694089258 L258.3798968832706,125.62733694089258 Q241.30882907140514,128.5562691290271 230.09562563580872,117.34306569343067 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L511.00222753995206,115.604544893205 Q521.4708920183797,112.07724114106321 532.9864930731512,114.93596799164106 L532.9864930731512,114.93596799164106 Q525.5490307042668,124.18072544493856 515.0803662258392,127.7080291970803 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L495.08036622583916,107.7080291970803 Q500.4487867593998,96.88360352625733 512.8528344799953,91.87313876673278 L512.8528344799953,91.87313876673278 Q516.3706480735127,104.78011922238198 511.00222753995206,115.604544893205 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L476.1273028021831,121.3219985943607 Q468.1019971407863,110.14934771231418 471.7445830615394,95.22047428587183 L471.7445830615394,95.22047428587183 Q487.0550605644424,96.53537831503377 495.08036622583916,107.7080291970803 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L482.97688192196387,143.6298905111932 Q469.8265915055812,147.66765234861458 456.8422805189747,139.4489321212377 L456.8422805189747,139.4489321212377 Q462.97701238580044,125.35976043178209 476.1273028021831,121.3219985943607 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M495.08036622583916,127.7080291970803 L515.0803662258392,127.7080291970803 Q524.4614595683939,146.62326636278448 512.8528344799954,163.5429196274278 L512.8528344799954,163.5429196274278 Q492.35797526451864,162.54512767689738 482.97688192196387,143.6298905111932 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M568,230.18978102189783 L585.6071292574618,220.70352784632678 Q595.8924011178875,218.10910772508834 606.7851153188756,220.40638540986583 L606.7851153188756,220.40638540986583 Q598.2852718604257,227.59536090065933 588,230.18978102189783 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M568,230.18978102189783 L576.5411287773276,212.10528160363612 Q584.1112349273089,204.12335319018302 595.5256468898348,201.16670807473855 L595.5256468898348,201.16670807473855 Q593.1772354074432,212.7215994328737 585.6071292574618,220.70352784632678 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M568,230.18978102189783 L558.8259633556381,212.4179760587573 Q558.6129628698615,200.35080064634843 567.2940607742748,190.1960108844179 L567.2940607742748,190.1960108844179 Q576.3281282915508,200.0381061912273 576.5411287773276,212.10528160363612 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M568,230.18978102189783 L549.0008039851402,236.4372245621737 Q535.3206483176143,230.84130803599493 530.9776373371512,215.04565137174967 L530.9776373371512,215.04565137174967 Q545.1458076881124,206.82205953257852 558.8259633556381,212.4179760587573 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M568,230.18978102189783 L588,230.18978102189783 Q592.244920932759,256.6883804021077 574.3270972337722,269.68620922236164 L574.3270972337722,269.68620922236164 Q553.2457249178992,262.93582394238365 549.0008039851402,236.4372245621737 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L395.6944372952807,228.3507503230254 Q405.79415081556374,226.89863074324114 416.0974354982281,228.29280792892263 L416.0974354982281,228.29280792892263 Q406.60429134327376,232.53328188006975 396.50457782299077,233.98540145985402 Z",role:"node",style:{fill:"#81c4e4"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L390.6467134467217,219.84326583612307 Q399.7811431049423,214.42355822457586 410.9051474312988,213.57460013741803 L410.9051474312988,213.57460013741803 Q404.8288669535013,222.9310427114782 395.6944372952807,228.3507503230254 Z",role:"node",style:{fill:"#f7e180"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L379.35087458845646,214.18897262223538 Q384.2851746957395,204.33149675711883 394.40926622549927,198.21639066546555 L394.40926622549927,198.21639066546555 Q395.58101355400476,209.9857899710065 390.6467134467217,219.84326583612307 Z",role:"node",style:{fill:"#cdb7e4"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L356.9616405035676,229.73409566879445 Q348.2002816724974,217.11533972951884 353.6916723455922,201.12857045503438 L353.6916723455922,201.12857045503438 Q370.5895157573863,201.5702166829597 379.35087458845646,214.18897262223538 Z",role:"node",style:{fill:"#ffbd96"}},{kind:"path",d:"M376.50457782299077,233.98540145985402 L396.50457782299077,233.98540145985402 Q393.069192835749,265.9391634085407 372.22877296038627,273.7562135307299 L372.22877296038627,273.7562135307299 Q353.5262555163258,261.6878576174812 356.9616405035676,229.7340956687945 Z",role:"node",style:{fill:"#7dd7af"}},{kind:"rect",x:628,y:8,w:10,h:10,rx:0,ry:0,style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:16,text:"Bass",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:26,w:10,h:10,rx:0,ry:0,style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:34,text:"Trout",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:44,w:10,h:10,rx:0,ry:0,style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:52,text:"Catfish",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:62,w:10,h:10,rx:0,ry:0,style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:70,text:"Perch",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:628,y:80,w:10,h:10,rx:0,ry:0,style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:643,y:88,text:"Salmon",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]},S={irVersion:0,ir:"gofish-display-list",viewport:{w:1144.5,h:400},items:[{kind:"ellipse",cx:71,cy:73.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:260,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:140.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:252.4,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:205.889076455603,rx:31,ry:31,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:244.9,survived:!1},role:"node"},{kind:"ellipse",cx:71,cy:268.889076455603,rx:31,ry:31,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:237.6,survived:!0},role:"node"},{kind:"ellipse",cx:71,cy:329.889076455603,rx:30,ry:30,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:230.4,survived:!0},role:"node"},{kind:"ellipse",cx:130,cy:71.389076455603,rx:28,ry:28,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:223.3,survived:!1},role:"node"},{kind:"ellipse",cx:185.5,cy:71.389076455603,rx:27.5,ry:27.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:216.3,survived:!1},role:"node"},{kind:"ellipse",cx:240,cy:71.389076455603,rx:27,ry:27,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:209.5,survived:!0},role:"node"},{kind:"ellipse",cx:292.5,cy:71.389076455603,rx:25.5,ry:25.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:202.8,survived:!0},role:"node"},{kind:"ellipse",cx:343,cy:71.389076455603,rx:25,ry:25,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:196.2,survived:!1},role:"node"},{kind:"ellipse",cx:129.5,cy:130.389076455603,rx:27.5,ry:27.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:189.7,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:184.389076455603,rx:26.5,ry:26.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:183.4,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:236.889076455603,rx:26,ry:26,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:177.2,survived:!0},role:"node"},{kind:"ellipse",cx:129.5,cy:287.389076455603,rx:24.5,ry:24.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:171.1,survived:!1},role:"node"},{kind:"ellipse",cx:129.5,cy:335.889076455603,rx:24,ry:24,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:165.2,survived:!0},role:"node"},{kind:"ellipse",cx:185,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:159.4,survived:!0},role:"node"},{kind:"ellipse",cx:240,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:153.7,survived:!1},role:"node"},{kind:"ellipse",cx:292.5,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:148.1,survived:!1},role:"node"},{kind:"ellipse",cx:343,cy:126.389076455603,rx:23.5,ry:23.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:142.7,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:172.389076455603,rx:22.5,ry:22.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:137.4,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:216.889076455603,rx:22,ry:22,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:132.2,survived:!1},role:"node"},{kind:"ellipse",cx:181.5,cy:259.889076455603,rx:21,ry:21,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:127.2,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:300.889076455603,rx:20,ry:20,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:122.3,survived:!0},role:"node"},{kind:"ellipse",cx:181.5,cy:340.389076455603,rx:19.5,ry:19.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:117.5,survived:!0},role:"node"},{kind:"ellipse",cx:227.5,cy:170.889076455603,rx:21,ry:21,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:112.8,survived:!1},role:"node"},{kind:"ellipse",cx:269.5,cy:170.889076455603,rx:20.5,ry:20.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:108.3,survived:!0},role:"node"},{kind:"ellipse",cx:310,cy:170.889076455603,rx:20,ry:20,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:103.9,survived:!0},role:"node"},{kind:"ellipse",cx:349,cy:170.889076455603,rx:19,ry:19,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:99.6,survived:!0},role:"node"},{kind:"ellipse",cx:227.5,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:95.4,survived:!1},role:"node"},{kind:"ellipse",cx:270,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:91.4,survived:!0},role:"node"},{kind:"ellipse",cx:310.5,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:87.5,survived:!0},role:"node"},{kind:"ellipse",cx:349,cy:209.389076455603,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:83.7,survived:!1},role:"node"},{kind:"ellipse",cx:224,cy:244.889076455603,rx:18,ry:18,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:80.1,survived:!1},role:"node"},{kind:"ellipse",cx:224,cy:279.889076455603,rx:17,ry:17,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:76.6,survived:!0},role:"node"},{kind:"ellipse",cx:224,cy:312.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:73.2,survived:!0},role:"node"},{kind:"ellipse",cx:224,cy:344.389076455603,rx:15.5,ry:15.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:69.9,survived:!1},role:"node"},{kind:"ellipse",cx:259,cy:242.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:66.8,survived:!0},role:"node"},{kind:"ellipse",cx:292,cy:242.889076455603,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:63.8,survived:!0},role:"node"},{kind:"ellipse",cx:323.5,cy:242.889076455603,rx:15.5,ry:15.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:60.9,survived:!0},role:"node"},{kind:"ellipse",cx:353.5,cy:242.889076455603,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:58.2,survived:!1},role:"node"},{kind:"ellipse",cx:255,cy:276.889076455603,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:55.6,survived:!0},role:"node"},{kind:"ellipse",cx:255,cy:311.389076455603,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:53.1,survived:!0},role:"node"},{kind:"ellipse",cx:255,cy:343.889076455603,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:50.7,survived:!1},role:"node"},{kind:"ellipse",cx:281.5,cy:273.889076455603,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:48.5,survived:!1},role:"node"},{kind:"ellipse",cx:307.5,cy:273.889076455603,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:46.4,survived:!0},role:"node"},{kind:"ellipse",cx:332.5,cy:273.889076455603,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:44.4,survived:!0},role:"node"},{kind:"ellipse",cx:356.5,cy:273.889076455603,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:42.5,survived:!1},role:"node"},{kind:"ellipse",cx:281.5,cy:300.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:40.8,survived:!0},role:"node"},{kind:"ellipse",cx:281.5,cy:324.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:39.2,survived:!0},role:"node"},{kind:"ellipse",cx:281.5,cy:348.389076455603,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:37.7,survived:!0},role:"node"},{kind:"ellipse",cx:307,cy:300.889076455603,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:36.4,survived:!1},role:"node"},{kind:"ellipse",cx:307,cy:324.889076455603,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:35.2,survived:!0},role:"node"},{kind:"ellipse",cx:307,cy:348.389076455603,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:34.1,survived:!0},role:"node"},{kind:"ellipse",cx:331.5,cy:299.389076455603,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:33.1,survived:!1},role:"node"},{kind:"ellipse",cx:356,cy:299.389076455603,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:32.3,survived:!1},role:"node"},{kind:"ellipse",cx:331,cy:319.889076455603,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:31.6,survived:!0},role:"node"},{kind:"ellipse",cx:355.5,cy:319.889076455603,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:31,survived:!0},role:"node"},{kind:"ellipse",cx:327,cy:344.889076455603,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.6,survived:!1},role:"node"},{kind:"ellipse",cx:343.5,cy:344.889076455603,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.3,survived:!1},role:"node"},{kind:"ellipse",cx:360,cy:344.889076455603,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:1,fare:30.1,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:243.5,rx:17.5,ry:17.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:77,survived:!1},role:"node"},{kind:"ellipse",cx:393.5,cy:277.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:75.4,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:310.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:73.8,survived:!0},role:"node"},{kind:"ellipse",cx:393.5,cy:343.5,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:72.2,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:243.5,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:70.7,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:277.5,rx:16.5,ry:16.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:69.1,survived:!0},role:"node"},{kind:"ellipse",cx:428,cy:311,rx:16.5,ry:16.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:67.6,survived:!1},role:"node"},{kind:"ellipse",cx:428,cy:344,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:66.1,survived:!1},role:"node"},{kind:"ellipse",cx:459.5,cy:243.5,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:64.7,survived:!0},role:"node"},{kind:"ellipse",cx:459.5,cy:277.5,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:63.2,survived:!0},role:"node"},{kind:"ellipse",cx:459.5,cy:311,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:61.8,survived:!1},role:"node"},{kind:"ellipse",cx:459.5,cy:344,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:60.4,survived:!1},role:"node"},{kind:"ellipse",cx:488,cy:243.5,rx:13.5,ry:13.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:59,survived:!0},role:"node"},{kind:"ellipse",cx:488,cy:278,rx:13.5,ry:13.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:57.6,survived:!0},role:"node"},{kind:"ellipse",cx:488,cy:311.5,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:56.2,survived:!1},role:"node"},{kind:"ellipse",cx:488,cy:344,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:54.9,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:240,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:53.6,survived:!0},role:"node"},{kind:"ellipse",cx:517,cy:268,rx:14,ry:14,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:52.3,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:295,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:51,survived:!1},role:"node"},{kind:"ellipse",cx:517,cy:321,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:49.8,survived:!0},role:"node"},{kind:"ellipse",cx:517,cy:347,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:48.6,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:240,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:47.4,survived:!1},role:"node"},{kind:"ellipse",cx:546,cy:268,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:46.2,survived:!1},role:"node"},{kind:"ellipse",cx:546,cy:295,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:45,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:321,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:43.8,survived:!0},role:"node"},{kind:"ellipse",cx:546,cy:347,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:42.7,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:240,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:41.6,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:268,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:40.5,survived:!0},role:"node"},{kind:"ellipse",cx:571.5,cy:295,rx:12,ry:12,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:39.5,survived:!0},role:"node"},{kind:"ellipse",cx:571.5,cy:321.5,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:38.4,survived:!1},role:"node"},{kind:"ellipse",cx:571.5,cy:347.5,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:37.4,survived:!1},role:"node"},{kind:"ellipse",cx:596,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:36.4,survived:!0},role:"node"},{kind:"ellipse",cx:621,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:35.4,survived:!1},role:"node"},{kind:"ellipse",cx:645.5,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:34.4,survived:!1},role:"node"},{kind:"ellipse",cx:669,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:33.5,survived:!0},role:"node"},{kind:"ellipse",cx:692,cy:237.5,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:32.6,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:261,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:31.7,survived:!1},role:"node"},{kind:"ellipse",cx:594.5,cy:284,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:30.8,survived:!1},role:"node"},{kind:"ellipse",cx:594.5,cy:306,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:29.9,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:328,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:29.1,survived:!0},role:"node"},{kind:"ellipse",cx:594.5,cy:349.5,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:28.3,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:259.5,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:27.4,survived:!1},role:"node"},{kind:"ellipse",cx:636,cy:259.5,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:26.7,survived:!0},role:"node"},{kind:"ellipse",cx:656,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:25.9,survived:!1},role:"node"},{kind:"ellipse",cx:675,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:25.2,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:259.5,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:24.4,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:279.5,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:23.7,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:298.5,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:23.1,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:317,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:22.4,survived:!1},role:"node"},{kind:"ellipse",cx:615.5,cy:334.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:21.8,survived:!0},role:"node"},{kind:"ellipse",cx:615.5,cy:351.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:21.1,survived:!0},role:"node"},{kind:"ellipse",cx:635.5,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:20.5,survived:!1},role:"node"},{kind:"ellipse",cx:655.5,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:20,survived:!1},role:"node"},{kind:"ellipse",cx:675,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:19.4,survived:!0},role:"node"},{kind:"ellipse",cx:694,cy:278.5,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:18.9,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:296.5,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:18.3,survived:!1},role:"node"},{kind:"ellipse",cx:633,cy:315,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:17.9,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:333,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:17.4,survived:!0},role:"node"},{kind:"ellipse",cx:633,cy:351,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.9,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:295,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.5,survived:!1},role:"node"},{kind:"ellipse",cx:665,cy:295,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:16.1,survived:!0},role:"node"},{kind:"ellipse",cx:680.5,cy:295,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:15.7,survived:!0},role:"node"},{kind:"ellipse",cx:696,cy:295,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:15.3,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:310.5,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.9,survived:!1},role:"node"},{kind:"ellipse",cx:649,cy:325,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.6,survived:!0},role:"node"},{kind:"ellipse",cx:649,cy:339,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14.3,survived:!0},role:"node"},{kind:"ellipse",cx:649,cy:353,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:14,survived:!1},role:"node"},{kind:"ellipse",cx:665,cy:310,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.7,survived:!1},role:"node"},{kind:"ellipse",cx:680.5,cy:310,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.5,survived:!0},role:"node"},{kind:"ellipse",cx:696,cy:310,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13.2,survived:!1},role:"node"},{kind:"ellipse",cx:664.5,cy:324,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:13,survived:!1},role:"node"},{kind:"ellipse",cx:664.5,cy:338.5,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.8,survived:!0},role:"node"},{kind:"ellipse",cx:664.5,cy:353,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.7,survived:!0},role:"node"},{kind:"ellipse",cx:679.5,cy:323,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.5,survived:!1},role:"node"},{kind:"ellipse",cx:695.5,cy:323,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.4,survived:!1},role:"node"},{kind:"ellipse",cx:678,cy:337,rx:6.5,ry:6.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.3,survived:!0},role:"node"},{kind:"ellipse",cx:678,cy:352.5,rx:6.5,ry:6.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.2,survived:!0},role:"node"},{kind:"ellipse",cx:694,cy:334.5,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12.1,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:345,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12,survived:!1},role:"node"},{kind:"ellipse",cx:694,cy:355,rx:5,ry:5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:2,fare:12,survived:!0},role:"node"},{kind:"ellipse",cx:727.5,cy:171.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:70,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:206.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:69.2,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:241.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:68.4,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:275.9825665265031,rx:16,ry:16,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:67.5,survived:!0},role:"node"},{kind:"ellipse",cx:727.5,cy:309.9825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:66.7,survived:!1},role:"node"},{kind:"ellipse",cx:727.5,cy:343.4825665265031,rx:16,ry:16,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:65.9,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:171.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:65.1,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:206.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:64.4,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:241.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:63.6,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:275.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:62.8,survived:!1},role:"node"},{kind:"ellipse",cx:758.5,cy:309.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:62,survived:!0},role:"node"},{kind:"ellipse",cx:758.5,cy:343.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:61.2,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:169.4825665265031,rx:15.5,ry:15.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:60.5,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:199.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:59.7,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:229.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:59,survived:!0},role:"node"},{kind:"ellipse",cx:789,cy:259.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:58.2,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:288.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:57.5,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:317.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:56.7,survived:!1},role:"node"},{kind:"ellipse",cx:789,cy:345.9825665265031,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:56,survived:!0},role:"node"},{kind:"ellipse",cx:819.5,cy:169.4825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:55.3,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:199.9825665265031,rx:15,ry:15,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:54.5,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:229.9825665265031,rx:15,ry:15,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:53.8,survived:!0},role:"node"},{kind:"ellipse",cx:819.5,cy:259.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:53.1,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:288.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:52.4,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:317.4825665265031,rx:14.5,ry:14.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:51.7,survived:!1},role:"node"},{kind:"ellipse",cx:819.5,cy:345.9825665265031,rx:14,ry:14,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:51,survived:!0},role:"node"},{kind:"ellipse",cx:849.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:50.3,survived:!1},role:"node"},{kind:"ellipse",cx:879.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:49.6,survived:!1},role:"node"},{kind:"ellipse",cx:909.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:48.9,survived:!1},role:"node"},{kind:"ellipse",cx:939,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:48.2,survived:!0},role:"node"},{kind:"ellipse",cx:968,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:47.6,survived:!1},role:"node"},{kind:"ellipse",cx:997,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:46.9,survived:!1},role:"node"},{kind:"ellipse",cx:1025.5,cy:166.9825665265031,rx:13,ry:13,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:46.2,survived:!0},role:"node"},{kind:"ellipse",cx:848,cy:193.4825665265031,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:45.6,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:220.4825665265031,rx:13.5,ry:13.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:44.9,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:246.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:44.3,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:272.4825665265031,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:43.6,survived:!0},role:"node"},{kind:"ellipse",cx:848,cy:297.9825665265031,rx:13,ry:13,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:43,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:322.9825665265031,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:42.4,survived:!1},role:"node"},{kind:"ellipse",cx:848,cy:347.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:41.7,survived:!1},role:"node"},{kind:"ellipse",cx:875,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:41.1,survived:!0},role:"node"},{kind:"ellipse",cx:901.5,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:40.5,survived:!1},role:"node"},{kind:"ellipse",cx:927.5,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:39.9,survived:!1},role:"node"},{kind:"ellipse",cx:953,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:39.3,survived:!1},role:"node"},{kind:"ellipse",cx:978,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:38.7,survived:!1},role:"node"},{kind:"ellipse",cx:1003,cy:192.4825665265031,rx:12.5,ry:12.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:38.1,survived:!1},role:"node"},{kind:"ellipse",cx:1027.5,cy:192.4825665265031,rx:12,ry:12,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:37.5,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:218.4825665265031,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:36.9,survived:!0},role:"node"},{kind:"ellipse",cx:872.5,cy:244.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:36.3,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:270.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:35.8,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:296.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:35.2,survived:!1},role:"node"},{kind:"ellipse",cx:872.5,cy:322.4825665265031,rx:11,ry:11,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:34.6,survived:!0},role:"node"},{kind:"ellipse",cx:872.5,cy:347.4825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:34.1,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:216.9825665265031,rx:11.5,ry:11.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:33.5,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:239.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:33,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:262.4825665265031,rx:11.5,ry:11.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:32.4,survived:!0},role:"node"},{kind:"ellipse",cx:895,cy:284.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:31.9,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:306.9825665265031,rx:11,ry:11,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:31.4,survived:!1},role:"node"},{kind:"ellipse",cx:895,cy:328.4825665265031,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:30.8,survived:!0},role:"node"},{kind:"ellipse",cx:895,cy:349.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:30.3,survived:!1},role:"node"},{kind:"ellipse",cx:918,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:29.8,survived:!1},role:"node"},{kind:"ellipse",cx:941,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:29.3,survived:!1},role:"node"},{kind:"ellipse",cx:963.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:28.8,survived:!0},role:"node"},{kind:"ellipse",cx:985.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:28.3,survived:!1},role:"node"},{kind:"ellipse",cx:1007.5,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:27.8,survived:!1},role:"node"},{kind:"ellipse",cx:1029,cy:215.4825665265031,rx:10.5,ry:10.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:27.3,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:236.9825665265031,rx:10,ry:10,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:26.8,survived:!0},role:"node"},{kind:"ellipse",cx:936.5,cy:236.9825665265031,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:26.3,survived:!1},role:"node"},{kind:"ellipse",cx:956,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:25.8,survived:!1},role:"node"},{kind:"ellipse",cx:975,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:25.3,survived:!1},role:"node"},{kind:"ellipse",cx:994,cy:236.9825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24.9,survived:!1},role:"node"},{kind:"ellipse",cx:1012.5,cy:236.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24.4,survived:!1},role:"node"},{kind:"ellipse",cx:1030.5,cy:236.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:24,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:257.4825665265031,rx:9.5,ry:9.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:23.5,survived:!0},role:"node"},{kind:"ellipse",cx:916.5,cy:276.9825665265031,rx:10,ry:10,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:23.1,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:295.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:22.6,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:314.4825665265031,rx:9.5,ry:9.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:22.2,survived:!1},role:"node"},{kind:"ellipse",cx:916.5,cy:332.9825665265031,rx:9,ry:9,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:21.8,survived:!0},role:"node"},{kind:"ellipse",cx:916.5,cy:350.9825665265031,rx:9,ry:9,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:21.3,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:257.4825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.9,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:276.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.5,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:296.4825665265031,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:20.1,survived:!0},role:"node"},{kind:"ellipse",cx:935,cy:314.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:19.7,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:332.9825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:19.3,survived:!1},role:"node"},{kind:"ellipse",cx:935,cy:350.9825665265031,rx:8.5,ry:8.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.9,survived:!0},role:"node"},{kind:"ellipse",cx:952,cy:256.4825665265031,rx:8.5,ry:8.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.5,survived:!1},role:"node"},{kind:"ellipse",cx:968.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:18.1,survived:!1},role:"node"},{kind:"ellipse",cx:984.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17.7,survived:!1},role:"node"},{kind:"ellipse",cx:1000.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17.4,survived:!0},role:"node"},{kind:"ellipse",cx:1016.5,cy:256.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:17,survived:!1},role:"node"},{kind:"ellipse",cx:1032,cy:256.4825665265031,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:16.6,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:273.4825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:16.3,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:289.9825665265031,rx:8,ry:8,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.9,survived:!0},role:"node"},{kind:"ellipse",cx:951.5,cy:305.9825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.6,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:321.9825665265031,rx:8,ry:8,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:15.2,survived:!1},role:"node"},{kind:"ellipse",cx:951.5,cy:337.4825665265031,rx:7.5,ry:7.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.9,survived:!0},role:"node"},{kind:"ellipse",cx:951.5,cy:352.4825665265031,rx:7.5,ry:7.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.6,survived:!1},role:"node"},{kind:"ellipse",cx:967.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:14.2,survived:!1},role:"node"},{kind:"ellipse",cx:984,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.9,survived:!1},role:"node"},{kind:"ellipse",cx:1000.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.6,survived:!0},role:"node"},{kind:"ellipse",cx:1016.5,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13.3,survived:!1},role:"node"},{kind:"ellipse",cx:1032,cy:271.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:13,survived:!1},role:"node"},{kind:"ellipse",cx:966.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.7,survived:!1},role:"node"},{kind:"ellipse",cx:980.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.4,survived:!0},role:"node"},{kind:"ellipse",cx:994,cy:285.9825665265031,rx:6.5,ry:6.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:12.1,survived:!1},role:"node"},{kind:"ellipse",cx:1007.5,cy:285.9825665265031,rx:7,ry:7,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.8,survived:!1},role:"node"},{kind:"ellipse",cx:1020.5,cy:285.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.5,survived:!1},role:"node"},{kind:"ellipse",cx:1033,cy:285.9825665265031,rx:6.5,ry:6.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11.2,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:299.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:11,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:313.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.7,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:327.4825665265031,rx:6,ry:6,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.4,survived:!0},role:"node"},{kind:"ellipse",cx:965.5,cy:340.4825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:10.2,survived:!1},role:"node"},{kind:"ellipse",cx:965.5,cy:353.4825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.9,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:299.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.7,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:313.9825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.5,survived:!0},role:"node"},{kind:"ellipse",cx:977,cy:327.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9.2,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:340.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:9,survived:!1},role:"node"},{kind:"ellipse",cx:977,cy:353.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.8,survived:!1},role:"node"},{kind:"ellipse",cx:988.5,cy:298.9825665265031,rx:6,ry:6,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.5,survived:!0},role:"node"},{kind:"ellipse",cx:1000.5,cy:298.9825665265031,rx:6,ry:6,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.3,survived:!1},role:"node"},{kind:"ellipse",cx:1012,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:8.1,survived:!1},role:"node"},{kind:"ellipse",cx:1023,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.9,survived:!0},role:"node"},{kind:"ellipse",cx:1034,cy:298.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.7,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:310.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.5,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:321.9825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.3,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:333.4825665265031,rx:5.5,ry:5.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7.2,survived:!0},role:"node"},{kind:"ellipse",cx:988,cy:343.9825665265031,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:7,survived:!1},role:"node"},{kind:"ellipse",cx:988,cy:354.4825665265031,rx:5.5,ry:5.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.8,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:310.4825665265031,rx:5,ry:5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.6,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.5,survived:!0},role:"node"},{kind:"ellipse",cx:1017,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.3,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6.2,survived:!1},role:"node"},{kind:"ellipse",cx:1035,cy:310.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:6,survived:!0},role:"node"},{kind:"ellipse",cx:998.5,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.9,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:329.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.7,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:338.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.6,survived:!1},role:"node"},{kind:"ellipse",cx:998.5,cy:346.9825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.5,survived:!0},role:"node"},{kind:"ellipse",cx:998.5,cy:355.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.4,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.2,survived:!1},role:"node"},{kind:"ellipse",cx:1017,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5.1,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:5,survived:!0},role:"node"},{kind:"ellipse",cx:1035,cy:320.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.9,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:329.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.8,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:338.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.7,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:346.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.7,survived:!1},role:"node"},{kind:"ellipse",cx:1008,cy:355.4825665265031,rx:4.5,ry:4.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.6,survived:!1},role:"node"},{kind:"ellipse",cx:1017,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.5,survived:!1},role:"node"},{kind:"ellipse",cx:1026,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.4,survived:!0},role:"node"},{kind:"ellipse",cx:1035,cy:328.9825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.4,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:337.4825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.3,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:346.4825665265031,rx:4,ry:4,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.3,survived:!1},role:"node"},{kind:"ellipse",cx:1016.5,cy:355.4825665265031,rx:4,ry:4,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.2,survived:!0},role:"node"},{kind:"ellipse",cx:1025,cy:336.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.2,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:336.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!1},role:"node"},{kind:"ellipse",cx:1025,cy:343.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:343.4825665265031,rx:3.5,ry:3.5,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4.1,survived:!0},role:"node"},{kind:"ellipse",cx:1025,cy:349.9825665265031,rx:3,ry:3,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"ellipse",cx:1025,cy:356.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"ellipse",cx:1034.5,cy:349.9825665265031,rx:3,ry:3,style:{fill:"#2b8cbe",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!0},role:"node"},{kind:"ellipse",cx:1034.5,cy:356.4825665265031,rx:3.5,ry:3.5,style:{fill:"#ff8408",stroke:"#ccc",strokeWidth:1},datum:{pclass:3,fare:4,survived:!1},role:"node"},{kind:"rect",x:1059.5,y:42.889076455603,w:10,h:10,rx:0,ry:0,style:{fill:"#2b8cbe",stroke:"#2b8cbe",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:1074.5,y:50.889076455603,text:"true",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:1059.5,y:60.889076455603,w:10,h:10,rx:0,ry:0,style:{fill:"#ff8408",stroke:"#ff8408",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:1074.5,y:68.889076455603,text:"false",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]},A={irVersion:0,ir:"gofish-display-list",viewport:{w:928,h:440},items:[{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:40,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Planning",amount:64}],role:"node"}],dest:[{kind:"rect",x:0,y:129.60000000000002,w:160,h:230.4,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Planning",amount:64}],role:"node"}]},{kind:"text",x:40,y:397.4,text:"Planning",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Planning",amount:64}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:224,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Design",amount:82}],role:"node"}],dest:[{kind:"rect",x:0,y:64.80000000000001,w:160,h:295.2,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Design",amount:82}],role:"node"}]},{kind:"text",x:224,y:397.4,text:"Design",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Design",amount:82}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:408,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Build",amount:46}],role:"node"}],dest:[{kind:"rect",x:0,y:194.40000000000003,w:160,h:165.6,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Build",amount:46}],role:"node"}]},{kind:"text",x:408,y:397.4,text:"Build",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Build",amount:46}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:592,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Review",amount:71}],role:"node"}],dest:[{kind:"rect",x:0,y:104.40000000000003,w:160,h:255.6,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Review",amount:71}],role:"node"}]},{kind:"text",x:592,y:397.4,text:"Review",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Review",amount:71}],style:{fill:"black",strokeWidth:0}},{kind:"composite",operator:"atop",blendMode:"color",bbox:{x:776,y:37.39999999999998,w:144,h:360},source:[{kind:"image",x:0,y:0,w:144,h:360,href:"data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%20100%22%3E%3Cpath%20d%3D%22M15%204%20h10%20v14%20q8%206%208%2018%20v52%20q0%208%20-8%208%20h-10%20q-8%200%20-8%20-8%20v-52%20q0%20-12%208%20-18%20z%22%20fill%3D%22%23cfd8dd%22%20stroke%3D%22%236b7e88%22%20stroke-width%3D%222%22%2F%3E%3C%2Fsvg%3E",preserveAspectRatio:"xMidYMid meet",datum:[{stage:"Ship",amount:55}],role:"node"}],dest:[{kind:"rect",x:0,y:162.00000000000003,w:160,h:198,rx:0,ry:0,style:{fill:"#3aa757",stroke:"#3aa757",strokeWidth:0,opacity:1},datum:[{stage:"Ship",amount:55}],role:"node"}]},{kind:"text",x:776,y:397.4,text:"Ship",fontSize:13,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",datum:[{stage:"Ship",amount:55}],style:{fill:"black",strokeWidth:0}}]},j={irVersion:0,ir:"gofish-display-list",viewport:{w:1080,h:540},items:[{kind:"rect",x:40,y:260,w:180,h:240,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:50.80000000000001,y:495.6,text:"Global Frame",fontSize:22,fontFamily:"Andale Mono, monospace",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:40,y:450.5,text:"c",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:425.8,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:461.8,text:"",fontSize:1,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:40,y:402.3,text:"d",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:377.6,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:413.6,text:"",fontSize:1,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:40,y:352,text:"x",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:59.2,y:325.2,w:36,h:36,rx:0,ry:0,style:{fill:"#e2ebf6",stroke:"#e2ebf6",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:59.2,y:361.2,text:"5",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:300,y:497.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:300,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:300,y:475.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:318.8,y:456.6,text:"12",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:364,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:364,y:475.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:396,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"rect",x:428,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:428,y:475.4,text:"2",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:453.4,y:456.6,text:"1",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:492,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:492,y:475.4,text:"3",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:517.4,y:456.6,text:"0",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:556,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:556,y:475.4,text:"4",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:588,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"rect",x:620,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:620,y:475.4,text:"5",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:652,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:744,y:497.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:744,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:744,y:475.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:769.4,y:456.6,text:"3",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:808,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:808,y:475.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:826.8,y:456.6,text:"10",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:872,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:872,y:475.4,text:"2",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:897.4,y:456.6,text:"7",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:936,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:936,y:475.4,text:"3",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:961.4,y:456.6,text:"8",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:1e3,y:422,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:1e3,y:475.4,text:"4",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:1032,y:456.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:300,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:300,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:300,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:325.4,y:338.6,text:"1",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:364,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:364,y:357.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:389.4,y:338.6,text:"4",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"text",x:488,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:488,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:488,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:513.4,y:338.6,text:"2",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"rect",x:552,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:552,y:357.4,text:"1",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:584,y:338.6,text:"",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"none",strokeWidth:0}},{kind:"text",x:676,y:379.2,text:"tuple",fontSize:14,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"grey",strokeWidth:0}},{kind:"rect",x:676,y:304,w:64,h:56,rx:0,ry:0,style:{fill:"#ffffc6",stroke:"gray",strokeWidth:1,opacity:1},role:"node"},{kind:"text",x:676,y:357.4,text:"0",fontSize:13,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"text",x:701.4,y:338.6,text:"3",fontSize:22,fontFamily:"verdana, arial, helvetica, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"black",strokeWidth:0}},{kind:"ellipse",cx:95.2,cy:442.256623535435,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M95.2,442.256623535435 Q188.49277766649115,350.74940120192616 280,444.0421788684173",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M275.7165664491033,448.2436306431081 L288.4029035493816,452.6090459702107 L284.2834335508967,439.84072709372646 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:95.2,cy:395.1152555448267,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M95.2,395.1152555448267 Q210.4866869761144,464.6285685687123 280,349.34188159259793",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M285.1382344395092,352.44003375875144 L286.196304332307,339.0654127135796 L274.8617655604908,346.2437294264444 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:392.17861250585145,cy:422,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M392.17861250585145,422 Q415.3476277290524,387.2641493166031 380.6117770456555,364.09513409340207",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M383.9411501976934,359.1036138425677 L370.6287365439868,357.4363877893263 L377.28240389361764,369.0866543442364 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:620,cy:450,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M620,450 Q672,450 724,450",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M724,456 L736,450 L724,444 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:620,cy:440.329588579088,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M620,440.329588579088 Q549.381026799069,450.618973200931 539.091642177226,380",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M545.0289506548122,379.13491732072356 L537.3614768186732,368.1253830448278 L533.1543336996399,380.86508267927644 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:1e3,cy:447.7757417334632,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M1000,447.7757417334632 Q839.4630921779626,509.040852965706 760.5097174269315,356.4240870361933",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M765.8388285137876,353.66717299619364 L754.9958893469321,345.7658648624812 L755.1806063400754,359.18100107619307 Z",role:"overlay",style:{fill:"#1A5683"}},{kind:"ellipse",cx:616,cy:332,rx:4,ry:4,role:"overlay",style:{fill:"#1A5683"}},{kind:"path",d:"M616,332 Q636,332 656,332",role:"overlay",style:{fill:"none",stroke:"#1A5683",strokeWidth:3}},{kind:"path",d:"M656,338 L668,332 L656,326 Z",role:"overlay",style:{fill:"#1A5683"}}]},$=[{key:"flower",label:"Flower meadow",source:"https://gofish.graphics/js/examples/flower-chart.html",blurb:"GoFish's real flower chart, verbatim: a meadow where each lake is a green stem (a bar whose height is the lake's total catch) topped by a polar fan of petals, one per species, sized by count. It is layer([stems, flowers]) — the flowers selectAll the stems and stack a polar petal fan on each. The composition's root is a combinator (no ChartBuilder.toDisplayList), so it is baked through GoFish's mark-resolution contract; see gofish-displaylist-findings.md.",doc:w},{key:"polarribbon",label:"Polar ribbon chart",source:"https://gofish.graphics/js/examples/polar-ribbon-chart.html",blurb:"GoFish's polar ribbon chart, verbatim: the catch stacked radially per lake under a clock() projection, then a smooth area ribbon drawn across the lakes for each species (selectAll the bars, group by species). The wrap, the open gap, and the bumped ribbons are all baked into absolute-pixel paths; the radial bars keep their datum (hit targets), the ribbons are area chrome. Root is a layer({ coord: clock() }) combinator, baked through GoFish's mark-resolution contract — see gofish-displaylist-findings.md.",doc:{irVersion:0,ir:"gofish-display-list",viewport:{w:756.7000339982667,h:648},items:[{kind:"path",d:"M337.2610735347595,258.07748685525206 L342.25899046182735,258.07748685525206 C342.35627349970906,256.1334477518769 342.4535565709103,254.18940798266829 342.5508396254517,252.24536854637637 C342.6481226799932,250.30132911008445 342.74540575119437,248.35728934087587 342.84268878907613,246.41325023750068 L336.6773752075107,246.41325023750068 C336.77465824539246,248.35728934087587 336.8719413165936,250.30132911008445 336.9692243711351,252.24536854637637 C337.06650742567655,254.18940798266829 337.16379049687777,256.1334477518769 337.2610735347595,258.07748685525206",datum:[{lake:"A",species:"Salmon",count:8}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M336.6773752075107,246.41325023750068 L342.84268878907613,246.41325023750068 C342.9886133542286,243.4971914159795 343.13453795270055,240.58113192862493 343.2804625345127,237.66507277418708 C343.4263871163249,234.74901361974923 343.57231171479685,231.83295413239466 343.71823627994934,228.91689531087349 L335.8018277166375,228.91689531087349 C335.94775228179,231.83295413239466 336.0936768802619,234.74901361974923 336.2396014620741,237.66507277418708 C336.38552604388633,240.58113192862493 336.5314506423582,243.4971914159795 336.6773752075107,246.41325023750068",datum:[{lake:"A",species:"Perch",count:12}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M335.8018277166375,228.91689531087349 L343.71823627994934,228.91689531087349 C343.858080654193,226.1223389541206 343.99792506175606,223.32778193153428 344.1377694526594,220.53322524186467 C344.2776138435628,217.73866855219507 344.41745823446615,214.94411186252546 344.55730262536946,212.1495551728558 C344.6971470162728,209.3549984831862 344.8369914071762,206.5604417935166 344.97683579807955,203.76588510384698 C345.1166801889829,200.97132841417738 345.256524596546,198.17677139159105 345.39636897078964,195.38221503483817 L334.1236950257972,195.38221503483817 C334.2635394000408,198.17677139159105 334.4033838076039,200.97132841417738 334.5432281985073,203.76588510384698 C334.68307258941064,206.5604417935166 334.822916980314,209.3549984831862 334.96276137121737,212.1495551728558 C335.10260576212073,214.94411186252546 335.2424501530241,217.73866855219507 335.38229454392746,220.53322524186467 C335.52213893483076,223.32778193153428 335.66198334239385,226.1223389541206 335.8018277166375,228.91689531087349",datum:[{lake:"A",species:"Bass",count:23}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M334.1236950257972,195.38221503483817 L345.39636897078964,195.38221503483817 C345.48453172230813,193.62042962861528 345.572694507146,191.85864355655906 345.66085727532425,190.0968578174195 C345.74902004350247,188.33507207827995 345.83718281168063,186.57328633914045 345.92534557985886,184.8115006000009 C346.0135083480371,183.04971486086134 346.10167111621524,181.28792912172185 346.18983388439347,179.5261433825823 C346.2779966525717,177.76435764344274 346.36615942074985,176.00257190430318 346.4543221889281,174.24078616516363 C346.5424849571063,172.47900042602413 346.63064772528446,170.71721468688457 346.7188104934627,168.95542894774508 C346.8069732616409,167.19364320860552 346.8951360298191,165.43185746946597 346.9832987979973,163.6700717303264 C347.0714615661755,161.90828599118686 347.15962433435374,160.14650025204736 347.2477871025319,158.3847145129078 C347.3359498707101,156.6229287737683 347.4241126555481,154.86114270171208 347.5122754070665,153.0993572954892 L332.0077885895203,153.0993572954892 C332.0959513410388,154.86114270171208 332.1841141258767,156.6229287737683 332.2722768940549,158.3847145129078 C332.36043966223315,160.14650025204736 332.4486024304113,161.90828599118686 332.53676519858953,163.6700717303264 C332.62492796676776,165.43185746946597 332.7130907349459,167.19364320860552 332.80125350312414,168.95542894774508 C332.88941627130237,170.71721468688457 332.9775790394806,172.47900042602413 333.06574180765875,174.24078616516363 C333.153904575837,176.00257190430318 333.2420673440152,177.76435764344274 333.33023011219336,179.5261433825823 C333.4183928803716,181.28792912172185 333.5065556485498,183.04971486086134 333.59471841672797,184.8115006000009 C333.6828811849062,186.57328633914045 333.7710439530844,188.33507207827995 333.8592067212626,190.0968578174195 C333.9473694894408,191.85864355655906 334.03553227427875,193.62042962861528 334.1236950257972,195.38221503483817",datum:[{lake:"A",species:"Catfish",count:29}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M332.0077885895203,153.0993572954892 L347.5122754070665,153.0993572954892 C347.60651834949385,151.21606942449813 347.7007613252406,149.3327808876736 347.79500428432766,147.44949268376587 C347.88924724341473,145.56620447985807 347.98349020250174,143.68291627595033 348.0777331615888,141.79962807204254 C348.1719761206758,139.91633986813474 348.2662190797629,138.03305166422695 348.36046203884996,136.14976346031915 C348.454704997937,134.26647525641135 348.54894795702404,132.38318705250356 348.64319091611105,130.49989884859582 C348.7374338751981,128.61661064468802 348.8316768342852,126.73332244078028 348.9259197933722,124.85003423687249 C349.02016275245927,122.96674603296469 349.1144057115463,121.0834578290569 349.20864867063335,119.2001696251491 C349.3028916297204,117.3168814212413 349.39713458880743,115.43359321733351 349.4913775478945,113.55030501342577 C349.5856205069815,111.66701680951797 349.6798634827283,109.78372827269351 349.77410642515565,107.90044040170244 L329.74595757143123,107.90044040170244 C329.8402005138586,109.78372827269351 329.9344434896053,111.66701680951797 330.0286864486924,113.55030501342577 C330.1229294077794,115.43359321733351 330.21717236686646,117.3168814212413 330.3114153259535,119.2001696251491 C330.40565828504054,121.0834578290569 330.4999012441276,122.96674603296469 330.5941442032146,124.85003423687249 C330.6883871623017,126.73332244078028 330.7826301213887,128.61661064468802 330.8768730804758,130.49989884859582 C330.97111603956284,132.38318705250356 331.06535899864986,134.26647525641135 331.1596019577369,136.14976346031915 C331.25384491682394,138.03305166422695 331.348087875911,139.91633986813474 331.4423308349981,141.79962807204254 C331.5365737940851,143.68291627595033 331.63081675317216,145.56620447985807 331.72505971225917,147.44949268376587 C331.81930267134624,149.3327808876736 331.913545647093,151.21606942449813 332.0077885895203,153.0993572954892",datum:[{lake:"A",species:"Trout",count:31}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M381.75770764344463,280.8820818527037 L384.25666610697857,285.21040487754874 C385.9888948753927,284.32263490802404 387.7211242370952,283.43486463443816 389.45335330215346,282.54709451288284 C391.1855823672118,281.6593243913276 392.91781143227007,280.77155426977225 394.6500404973284,279.883784148217 C396.3822695623867,278.99601402666167 398.11449862744496,278.1082439051064 399.8467276925033,277.2204737835511 C401.57895675756157,276.33270366199577 403.31118611926405,275.4449333884099 405.0434148876782,274.5571634188852 L401.3770597696467,268.2068500758644 C399.7421140391143,269.26311920971494 398.107167748613,270.31938870533764 396.47222173809615,271.37565802007424 C394.83727572757937,272.4319273348109 393.2023297170625,273.4881966495475 391.5673837065457,274.5444659642841 C389.93243769602884,275.6007352790207 388.297491685512,276.6570045937573 386.66254567499516,277.71327390849393 C385.0275996644783,278.7695432232305 383.39265337397705,279.82581271885323 381.75770764344463,280.8820818527037",datum:[{lake:"B",species:"Salmon",count:16}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M401.3770597696467,268.2068500758644 L405.0434148876782,274.5571634188852 C407.31696523892305,273.3919652863745 409.5905161834562,272.2267668498025 411.86406683134527,271.0615685652612 C414.1376174792343,269.8963702807199 416.41116812712335,268.73117199617855 418.68471877501236,267.56597371163724 C420.95826942290137,266.40077542709594 423.2318200707904,265.2355771425546 425.5053707186794,264.07037885801327 C427.7789213665684,262.90518057347197 430.0524723111016,261.7399821369 432.3260226623465,260.5747840043893 L427.1274594352868,251.5706083687628 C424.98159307646796,252.95696166346852 422.83572615768014,254.34331531994644 420.6898595188768,255.7296687955382 C418.54399288007346,257.11602227113 416.3981262412701,258.50237574672184 414.2522596024668,259.8887292223136 C412.10639296366344,261.2750826979054 409.9605263248601,262.66143617349724 407.81465968605676,264.04778964908905 C405.6687930472534,265.4341431246808 403.52292612846554,266.82049678115874 401.3770597696467,268.2068500758644",datum:[{lake:"B",species:"Perch",count:21}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M427.1274594352868,251.5706083687628 L432.3260226623465,260.5747840043893 C435.0326302798559,259.1876433414898 437.73923849065363,257.800502374529 440.44584640480724,256.41336155959885 C443.15245431896085,255.0262207446687 445.85906223311446,253.63907992973856 448.56567014726807,252.2519391148084 C451.2722780614217,250.86479829987826 453.9788859755753,249.47765748494805 456.68549388972883,248.0905166700179 C459.39210180388244,246.70337585508776 462.09871001468025,245.31623488812704 464.80531763218966,243.92909422522746 L457.78269713247755,231.76555871745137 C455.2280942710295,233.4159793408412 452.67349084961245,235.0664003260033 450.11888770817984,236.71682113027924 C447.56428456674735,238.36724193455518 445.00968142531474,240.01766273883118 442.4550782838822,241.66808354310712 C439.90047514244964,243.31850434738305 437.3458720010171,244.968925151659 434.79126885958453,246.619345955935 C432.236665718152,248.26976676021093 429.68206229673495,249.92018774537297 427.1274594352868,251.5706083687628",datum:[{lake:"B",species:"Bass",count:25}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M457.78269713247755,231.76555871745137 L464.80531763218966,243.92909422522746 C466.6458107171699,242.98583862310556 468.48630439543854,242.04258271692248 470.326797777063,241.09932696276996 C472.1672911586875,240.1560712086175 474.0077845403119,239.212815454465 475.8482779219363,238.26955970031247 C477.68877130356077,237.32630394615995 479.52926468518524,236.3830481920075 481.36975806680965,235.43979243785498 C483.2102514484341,234.49653668370246 485.05074483005853,233.55328092954994 486.891238211683,232.61002517539748 C488.7317315933075,231.66676942124496 490.57222497493194,230.72351366709245 492.4127183565564,229.78025791293993 C494.2532117381808,228.8370021587874 496.09370511980524,227.89374640463495 497.9341985014297,226.95049065048244 C499.7746918830542,226.00723489632992 501.6151852646786,225.06397914217746 503.455678646303,224.12072338802494 C505.29617202792747,223.17746763387242 507.13666570619614,222.23421172768934 508.9771587911764,221.29095612556745 L499.4738204006569,204.83069119166782 C497.7366905444672,205.95297715768942 495.9995601283086,207.0752634854831 494.26242999213446,208.1975496323908 C492.5252998559603,209.31983577929844 490.7881697197862,210.44212192620608 489.051039583612,211.56440807311373 C487.31390944743794,212.68669422002137 485.57677931126375,213.808980366929 483.8396491750897,214.93126651383665 C482.1025190389155,216.05355266074434 480.36538890274136,217.17583880765199 478.6282587665672,218.29812495455963 C476.89112863039304,219.42041110146727 475.15399849421897,220.5426972483749 473.4168683580448,221.66498339528255 C471.67973822187065,222.7872695421902 469.9426080856965,223.90955568909783 468.2054779495224,225.03184183600547 C466.46834781334826,226.1541279829131 464.73121767717413,227.2764141298208 462.994087541,228.39870027672845 C461.2569574048258,229.5209864236361 459.5198269886672,230.64327275142983 457.78269713247755,231.76555871745137",datum:[{lake:"B",species:"Trout",count:34}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M499.4738204006569,204.83069119166782 L508.9771587911764,221.29095612556745 C511.1965769841381,220.1535008093553 513.4159957703882,219.01604518908198 515.6354142599943,217.87858972083927 C517.8548327496002,216.74113425259657 520.0742512392062,215.6036787843538 522.2936697288121,214.4662233161111 C524.513088218418,213.3287678478684 526.732506708024,212.19131237962563 528.95192519763,211.05385691138292 C531.1713436872359,209.91640144314022 533.3907621768419,208.7789459748975 535.6101806664478,207.64149050665475 C537.8295991560537,206.50403503841204 540.0490176456597,205.36657957016934 542.2684361352657,204.22912410192657 C544.4878546248716,203.09166863368387 546.7072731144775,201.95421316544116 548.9266916040835,200.81675769719845 C551.1461100936895,199.67930222895575 553.3655285832954,198.54184676071299 555.5849470729013,197.40439129247028 C557.8043655625073,196.26693582422752 560.0237843487574,195.12948020395424 562.2432025417193,193.9920248877421 L549.7484102240496,172.35040976351706 C547.6536359280594,173.70375464213726 545.5588610721002,175.05709988252966 543.4640864961256,176.41044494203595 C541.3693119201508,177.76379000154225 539.2745373441761,179.1171350610485 537.1797627682014,180.47048012055478 C535.0849881922268,181.82382518006108 532.990213616252,183.17717023956732 530.8954390402773,184.5305152990736 C528.8006644643026,185.8838603585799 526.705889888328,187.2372054180862 524.6111153123533,188.59055047759244 C522.5163407363785,189.94389553709874 520.4215661604038,191.29724059660504 518.3267915844292,192.65058565611128 C516.2320170084545,194.00393071561757 514.1372424324798,195.35727577512387 512.042467856505,196.71062083463016 C509.9476932805304,198.06396589413646 507.8529187045557,199.4173109536427 505.75814412858097,200.770656013149 C503.6633695526063,202.12400107265523 501.5685946966471,203.47734631304763 499.4738204006569,204.83069119166782",datum:[{lake:"B",species:"Catfish",count:41}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M384.25666610697857,330.81959487245206 L381.75770764344463,335.1479178972971 C383.2904692483197,336.1381701989765 384.82323141316374,337.1284228624282 386.35599329802324,338.1186753449938 C387.8887551828828,339.10892782755934 389.42151706774234,340.0991803101249 390.95427895260184,341.0894327926905 C392.4870408374614,342.07968527525605 394.01980272232095,343.0699377578216 395.55256460718044,344.0601902403872 C397.08532649204,345.05044272295277 398.61808865688397,346.0406953864044 400.15085026175905,347.0309476880839 L403.74424308888445,340.80700873994914 C402.1202786370365,339.97472440302164 400.49631359190016,339.14243976203295 398.872348843408,338.3101552730749 C397.2483840949158,337.47787078411676 395.6244193464237,336.6455862951587 394.00045459793154,335.81330180620057 C392.37648984943934,334.9810173172425 390.7525251009472,334.14873282828444 389.12856035245505,333.3164483393263 C387.5045956039629,332.48416385036825 385.88063055882657,331.65187920937956 384.25666610697857,330.81959487245206",datum:[{lake:"C",species:"Bass",count:15}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M403.74424308888445,340.80700873994914 L400.15085026175905,347.0309476880839 C402.3989007462352,348.4833178149606 404.64695179068036,349.9356883036096 406.895002555141,351.3880586113724 C409.1430533196017,352.84042891913526 411.3911040840623,354.29279922689807 413.63915484852294,355.74516953466093 C415.8872056129836,357.1975398424238 418.13525637744425,358.64991015018666 420.3833071419049,360.10228045794946 C422.63135790636557,361.55465076571227 424.87940895081067,363.00702125436123 427.1274594352868,364.459391381238 L432.3260226623465,355.4552157456115 C429.9442079945355,354.23453198050356 427.5623927334361,353.01384791133444 425.180577768981,351.79316399419594 C422.7987628045258,350.5724800770574 420.41694784007063,349.3517961599189 418.03513287561543,348.1311122427803 C415.6533179111603,346.91042832564176 413.27150294670514,345.68974440850326 410.88968798224994,344.4690604913647 C408.5078730177948,343.2483765742262 406.12605775669545,342.0276925050571 403.74424308888445,340.80700873994914",datum:[{lake:"C",species:"Perch",count:22}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M432.3260226623465,355.4552157456115 L427.1274594352868,364.459391381238 C429.68206229673495,366.1098120046278 432.236665718152,367.76023298978987 434.79126885958453,369.41065379406587 C437.3458720010171,371.06107459834175 439.90047514244964,372.71149540261774 442.4550782838822,374.3619162068937 C445.00968142531474,376.0123370111696 447.56428456674735,377.6627578154456 450.11888770817984,379.31317861972155 C452.67349084961245,380.9635994239975 455.2280942710295,382.6140204091596 457.78269713247755,384.2644410325494 L464.80531763218966,372.10090552477334 C462.09871001468025,370.71376486187376 459.39210180388244,369.32662389491304 456.68549388972883,367.9394830799829 C453.9788859755753,366.55234226505274 451.2722780614217,365.1652014501226 448.56567014726807,363.77806063519245 C445.85906223311446,362.3909198202623 443.15245431896085,361.0037790053321 440.44584640480724,359.61663819040194 C437.73923849065363,358.2294973754718 435.0326302798559,356.842356408511 432.3260226623465,355.4552157456115",datum:[{lake:"C",species:"Trout",count:25}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M464.80531763218966,372.10090552477334 L457.78269713247755,384.2644410325494 C459.36655080018124,385.2877017503144 460.9504050278539,386.3109628298516 462.5342589755421,387.3342237285027 C464.1181129232303,388.3574846271538 465.70196687091845,389.38074552580485 467.2858208186067,390.40400642445593 C468.86967476629485,391.42726732310706 470.453528713983,392.45052822175813 472.03738266167124,393.47378912040926 C473.62123660935936,394.49705001906034 475.2050905570476,395.5203109177114 476.78894450473575,396.5435718163625 C478.3727984524239,397.56683271501356 479.95665240011215,398.5900936136647 481.5405063478003,399.61335451231577 C483.1243602954885,400.63661541096684 484.7082142431767,401.65987630961797 486.2920681908649,402.68313720826905 C487.87592213855305,403.7063981069201 489.4597760862413,404.7296590055712 491.0436300339294,405.7529199042223 C492.6274839816176,406.7761808028734 494.21133820929026,407.7994418824106 495.795191876994,408.8227026001756 L505.0796433947952,392.7415608509339 C503.4015467846641,391.8815336977078 501.7234495812447,391.02150624042054 500.0453526744695,390.16147893516387 C498.36725576769425,389.30145162990715 496.68915886091906,388.4414243246505 495.0110619541438,387.58139701939376 C493.3329650473686,386.7213697141371 491.65486814059335,385.8613424088804 489.9767712338181,385.0013151036237 C488.2986743270429,384.141287798367 486.62057742026764,383.2812604931103 484.9424805134924,382.4212331878536 C483.26438360671716,381.56120588259694 481.586286699942,380.7011785773402 479.90818979316674,379.84115127208355 C478.2300928863915,378.9811239668269 476.55199597961627,378.12109666157016 474.873899072841,377.26106935631344 C473.1958021660658,376.4010420510568 471.51770525929055,375.54101474580006 469.83960835251537,374.6809874405434 C468.1615114457401,373.82096013528667 466.4834142423207,372.9609326779994 464.80531763218966,372.10090552477334",datum:[{lake:"C",species:"Catfish",count:31}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M505.0796433947952,392.7415608509339 L495.795191876994,408.8227026001756 C497.37904554469776,409.8459633179406 498.9628997723704,410.86922439747775 500.5467537200586,411.8924852961289 C502.13060766774674,412.91574619477996 503.71446161543497,413.93900709343103 505.2983155631231,414.96226799208216 C506.8821695108113,415.98552889073324 508.4660234584995,417.0087897893843 510.04987740618765,418.0320506880354 C511.6337313538759,419.0553115866865 513.217585301564,420.0785724853376 514.8014392492522,421.1018333839887 C516.3852931969404,422.1250942826398 517.9691471446286,423.14835518129087 519.5530010923168,424.17161607994194 C521.136855040005,425.194876978593 522.7207089876931,426.21813787724415 524.3045629353813,427.2413987758952 C525.8884168830696,428.2646596745463 527.4722708307577,429.2879205731974 529.0561247784459,430.3111814718485 C530.6399787261341,431.3344423704996 532.2238329538068,432.35770345003675 533.8076866215105,433.3809641678018 L545.3539691574008,413.38221617709456 C543.6758725472697,412.52218902386846 541.9977753438503,411.6621615665812 540.319678437075,410.8021342613245 C538.6415815302998,409.9421069560678 536.9634846235247,409.0820796508111 535.2853877167494,408.2220523455544 C533.6072908099741,407.36202504029774 531.9291939031989,406.501997735041 530.2510969964237,405.64197042978435 C528.5730000896484,404.78194312452763 526.8949031828732,403.92191581927096 525.2168062760979,403.06188851401424 C523.5387093693228,402.2018612087576 521.8606124625476,401.34183390350086 520.1825155557723,400.4818065982442 C518.504418648997,399.62177929298747 516.8263217422218,398.7617519877308 515.1482248354466,397.9017246824741 C513.4701279286713,397.0416973772174 511.79203102189615,396.1816700719607 510.1139341151209,395.32164276670403 C508.4358372083457,394.4616154614473 506.7577400049263,393.60158800416 505.0796433947952,392.7415608509339",datum:[{lake:"C",species:"Salmon",count:31}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M342.25899046182735,357.9525128947487 L337.2610735347595,357.9525128947487 C337.115148969607,360.86857171626986 336.9692243711351,363.78463120362443 336.8232997893229,366.7006903580623 C336.6773752075107,369.6167495125002 336.53145060903876,372.53280899985475 336.3855260438863,375.44886782137587 L343.1345379527005,375.44886782137587 C342.988613387548,372.53280899985475 342.84268878907613,369.6167495125002 342.6967642072639,366.7006903580623 C342.5508396254517,363.78463120362443 342.4049150269798,360.86857171626986 342.25899046182735,357.9525128947487",datum:[{lake:"D",species:"Bass",count:12}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M343.1345379527005,375.44886782137587 L336.3855260438863,375.44886782137587 C336.2821628150957,377.5144093895193 336.17879955298565,379.5799516234962 336.07543630753537,381.6454935245563 C335.97207306208503,383.7110354256165 335.86870981663475,385.7765773266766 335.7653465711844,387.84211922773676 C335.6619833257341,389.9076611287969 335.55862008028384,391.9732030298571 335.4552568348335,394.03874493091723 C335.3518935893832,396.10428683197733 335.24853032727316,398.1698290659542 335.1451670984826,400.23537063409765 L344.3748968981042,400.23537063409765 C344.2715336693136,398.1698290659542 344.1681704072036,396.10428683197733 344.06480716175327,394.03874493091723 C343.961443916303,391.9732030298571 343.8580806708527,389.9076611287969 343.75471742540236,387.84211922773676 C343.6513541799521,385.7765773266766 343.54799093450174,383.7110354256165 343.44462768905146,381.6454935245563 C343.3412644436011,379.5799516234962 343.2379011814911,377.5144093895193 343.1345379527005,375.44886782137587",datum:[{lake:"D",species:"Trout",count:17}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M344.3748968981042,400.23537063409765 L335.1451670984826,400.23537063409765 C335.00532272423897,403.0299269908505 334.8654783166759,405.82448401343686 334.7256339257725,408.6190407031065 C334.58578953486915,411.4135973927761 334.4459451439658,414.20815408244573 334.3061007530624,417.00271077211534 C334.16625636215906,419.79726746178494 334.0264119712557,422.59182415145455 333.88656758035233,425.38638084112415 C333.746723189449,428.1809375307938 333.60687878188594,430.97549455338014 333.4670344076423,433.770050910133 L346.0530295889445,433.770050910133 C345.9131852147009,430.97549455338014 345.7733408071378,428.1809375307938 345.63349641623444,425.38638084112415 C345.4936520253311,422.59182415145455 345.3538076344277,419.79726746178494 345.21396324352435,417.00271077211534 C345.074118852621,414.20815408244573 344.9342744617176,411.4135973927761 344.79443007081426,408.6190407031065 C344.65458567991095,405.82448401343686 344.51474127234786,403.0299269908505 344.3748968981042,400.23537063409765",datum:[{lake:"D",species:"Catfish",count:23}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M346.0530295889445,433.770050910133 L333.4670344076423,433.770050910133 C333.32719003339867,436.5646072668859 333.1873456258356,439.35916428947223 333.0475012349322,442.15372097914184 C332.90765684402885,444.94827766881144 332.7678124531255,447.7428343584811 332.6279680622221,450.5373910481507 C332.48812367131876,453.3319477378203 332.3482792804154,456.12650442749 332.20843488951203,458.9210611171595 C332.0685904986087,461.7156178068292 331.92874609104564,464.5101748294155 331.788901716802,467.3047311861684 L347.73116227978477,467.3047311861684 C347.59131790554113,464.5101748294155 347.4514734979781,461.7156178068292 347.31162910707474,458.9210611171595 C347.1717847161714,456.12650442749 347.031940325268,453.3319477378203 346.89209593436465,450.5373910481507 C346.7522515434613,447.7428343584811 346.6124071525579,444.94827766881144 346.47256276165456,442.15372097914184 C346.3327183707512,439.35916428947223 346.19287396318816,436.5646072668859 346.0530295889445,433.770050910133",datum:[{lake:"D",species:"Perch",count:23}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M347.73116227978477,467.3047311861684 L331.788901716802,467.3047311861684 C331.6642578198304,469.79553138100067 331.53961388953945,472.2863322416664 331.4149699759082,474.7771327694154 C331.29032606227696,477.2679332971644 331.1656821486457,479.7587338249134 331.04103823501447,482.2495343526624 C330.9163943213832,484.7403348804114 330.791750407752,487.2311354081604 330.6671064941207,489.7219359359094 C330.5424625804894,492.2127364636584 330.4178186668582,494.7035369914074 330.29317475322694,497.1943375191564 C330.1685308395957,499.6851380469054 330.04388692596444,502.1759385746544 329.9192430123332,504.6667391024034 C329.7945990987019,507.1575396301524 329.66995518507065,509.64834015790143 329.5453112714394,512.1391406856504 C329.42066735780816,514.6299412133994 329.2960234441769,517.1207417411484 329.17137953054566,519.6115422688974 C329.04673561691436,522.1023427966464 328.9220916866234,524.5931436573121 328.79744778965187,527.0839438521444 L350.7226162069349,527.0839438521444 C350.5979723099633,524.5931436573121 350.47332837967235,522.1023427966464 350.3486844660411,519.6115422688974 C350.22404055240986,517.1207417411484 350.0993966387786,514.6299412133994 349.97475272514737,512.1391406856504 C349.8501088115161,509.64834015790143 349.7254648978849,507.1575396301524 349.6008209842536,504.6667391024034 C349.4761770706223,502.1759385746544 349.3515331569911,499.6851380469054 349.22688924335984,497.1943375191564 C349.1022453297286,494.7035369914074 348.97760141609734,492.2127364636584 348.8529575024661,489.7219359359094 C348.7283135888348,487.2311354081604 348.60366967520355,484.7403348804114 348.4790257615723,482.2495343526624 C348.35438184794106,479.7587338249134 348.2297379343098,477.2679332971644 348.10509402067856,474.7771327694154 C347.9804501070473,472.2863322416664 347.85580617675635,469.79553138100067 347.73116227978477,467.3047311861684",datum:[{lake:"D",species:"Salmon",count:41}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M297.7623563531422,335.1479178972971 L295.26339788960826,330.81959487245206 C293.7476977543264,331.59639357678236 292.23199702575624,332.37319258517385 290.71629659383024,333.1499914415347 C289.20059616190423,333.9267902978956 287.684895433334,334.7035893062871 286.16919529805216,335.4803880106174 L289.17888979792883,340.6933317996643 C290.60946727714656,339.76909633015583 292.04004531633325,338.8448604988752 293.4706230755355,337.92062484848066 C294.9012008347377,336.99638919808615 296.3317788739244,336.07215336680554 297.7623563531422,335.1479178972971",datum:[{lake:"E",species:"Bass",count:7}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M289.17888979792883,340.6933317996643 L286.16919529805216,335.4803880106174 C284.2204378965058,336.4791292453365 282.271679901671,337.4778707841168 280.3229222034804,338.47661217086653 C278.37416450528985,339.47535355761624 276.42540651045505,340.4740950963965 274.47664910890865,341.4728363311157 L278.14300422694015,347.8231496741364 C279.9823182087871,346.63484687594377 281.82163275060304,345.44654371597903 283.66094701243446,344.25824073690035 C285.5002612742659,343.06993775782166 287.33957581608183,341.8816345978569 289.17888979792883,340.6933317996643",datum:[{lake:"E",species:"Trout",count:9}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M278.14300422694015,347.8231496741364 L274.47664910890865,341.4728363311157 C271.6617771748331,342.9154626266124 268.84690464746916,344.35808922617036 266.0320324167494,345.8007156736977 C263.2171601860297,347.24334212122506 260.4022876586657,348.6859687207831 257.5874157245902,350.1285950162798 L262.202280624401,358.1217754928183 C264.85906761150636,356.4053380372574 267.51585515858073,354.68890021992434 270.1726424256706,352.97246258347735 C272.8294296927604,351.25602494703037 275.4862172398348,349.5395871296973 278.14300422694015,347.8231496741364",datum:[{lake:"E",species:"Catfish",count:13}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M262.202280624401,358.1217754928183 L257.5874157245902,350.1285950162798 C255.42212968991151,351.2383075161933 253.25684306194444,352.348020320168 251.09155673062156,353.4577329721121 C248.9262703992987,354.5674456240563 246.7609840679758,355.6771582760004 244.59569773665294,356.7868709279445 C242.43041140533006,357.89658357988867 240.26512507400716,359.0062962318327 238.09983874268428,360.1160088837769 C235.9345524113614,361.225721535721 233.76926578339436,362.3354343396957 231.60397974871566,363.44514683960927 L237.67809046664846,373.9658152138675 C239.72177269981003,372.6454787513328 241.76545549294053,371.3251419270259 243.80913800608658,370.0048052836052 C245.85282051923264,368.68446864018443 247.8965030323787,367.36413199676366 249.9401855455247,366.04379535334294 C251.98386805867077,364.72345870992217 254.0275505718168,363.4031220665014 256.07123308496284,362.0827854230806 C258.1149155981089,360.76244877965985 260.1585983912394,359.44211195535297 262.202280624401,358.1217754928183",datum:[{lake:"E",species:"Perch",count:20}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M237.67809046664846,373.9658152138675 L231.60397974871566,363.44514683960927 C229.43869371403696,364.55485933952275 227.27340708606988,365.6645721434975 225.108120754747,366.7742847954416 C222.94283442342413,367.8839974473857 220.77754809210126,368.99371009932986 218.61226176077838,370.10342275127397 C216.4469754294555,371.2131354032181 214.28168909813263,372.32284805516224 212.11640276680976,373.43256070710635 C209.95111643548685,374.54227335905045 207.78583010416398,375.65198601099456 205.6205437728411,376.76169866293867 C203.45525744151823,377.87141131488283 201.28997111019535,378.98112396682694 199.12468477887248,380.09083661877105 C196.9593984475496,381.20054927071516 194.79411211622673,382.31026192265927 192.62882578490385,383.41997457460343 C190.46353945358098,384.52968722654754 188.29825312225807,385.63939987849164 186.1329667909352,386.7491125304358 C183.96768045961232,387.8588251823799 181.80239383164528,388.96853798635465 179.63710779696657,390.07825048626813 L188.62971015114337,405.65389465596576 C190.67339238430495,404.3335581934311 192.71707517743545,403.01322136912427 194.7607576905815,401.6928847257035 C196.80444020372755,400.3725480822827 198.84812271687358,399.05221143886195 200.89180523001963,397.7318747954412 C202.93548774316568,396.41153815202046 204.9791702563117,395.0912015085997 207.02285276945776,393.7708648651789 C209.0665352826038,392.4505282217582 211.11021779574986,391.1301915783374 213.1539003088959,389.80985493491664 C215.19758282204194,388.48951829149587 217.241265335188,387.1691816480751 219.284947848334,385.8488450046543 C221.32863036148007,384.5285083612336 223.37231287462612,383.20817171781283 225.41599538777217,381.88783507439206 C227.45967790091822,380.5674984309713 229.50336041406428,379.24716178755057 231.54704292721033,377.9268251441298 C233.59072544035638,376.606488500709 235.63440823348688,375.28615167640214 237.67809046664846,373.9658152138675",datum:[{lake:"E",species:"Salmon",count:40}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M295.26339788960826,285.21040487754874 L297.7623563531422,280.8820818527037 L292.85751832159167,277.71327390849393 L290.06671069443337,282.54709451288284 L295.26339788960826,285.21040487754874",datum:[{lake:"F",species:"Bass",count:4}],role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1}},{kind:"path",d:"M290.06671069443337,282.54709451288284 L292.85751832159167,277.71327390849393 C291.4269408423739,276.7890384389855 289.9963628031872,275.86480260770486 288.565785043985,274.9405669573103 C287.1352072847827,274.0163313069158 285.70462924559604,273.0920954756352 284.2740517663783,272.1678600061267 L280.97250810287727,277.8863013747175 C282.48820823815913,278.6631000790478 284.0039089667293,279.4398990874393 285.51960939865535,280.21669794380017 C287.03530983058135,280.9934968001611 288.5510105591515,281.77029580855253 290.06671069443337,282.54709451288284",datum:[{lake:"F",species:"Trout",count:7}],role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1}},{kind:"path",d:"M280.97250810287727,277.8863013747175 L284.2740517663783,272.1678600061267 C282.4347377845313,270.97955720793414 280.59542324271536,269.79125404796935 278.75610898088394,268.60295106889066 C276.9167947190525,267.414648089812 275.0774801772366,266.2263449298472 273.2381661953896,265.0380421316546 L269.2799619137337,271.8938530542193 C271.22871931528016,272.89259428893837 273.1774773101149,273.8913358277187 275.1262350083055,274.8900772144684 C277.0749927064961,275.88881860121813 279.02375070133087,276.8875601399984 280.97250810287727,277.8863013747175",datum:[{lake:"F",species:"Catfish",count:9}],role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1}},{kind:"path",d:"M269.2799619137337,271.8938530542193 L273.2381661953896,265.0380421316546 C271.09229983657076,263.6516888369489 268.94643291778294,262.26533518047097 266.8005662789796,260.8789817048792 C264.6546996401762,259.4926282292874 262.50883300137286,258.10627475369563 260.3629663625695,256.7199212781038 C258.2170997237662,255.333567802512 256.07123308496284,253.94721432692018 253.9253664461595,252.5608608513284 C251.77949980735616,251.1745073757366 249.63363288856834,249.78815371925873 247.48776652974945,248.40180042455302 L241.99735413906546,257.91147363972334 C244.2709044903103,259.0766717722341 246.54445543484348,260.241870208806 248.81800608273252,261.40706849334737 C251.09155673062156,262.5722667778887 253.36510737851057,263.73746506243 255.63865802639958,264.90266334697134 C257.91220867428865,266.06786163151264 260.18575932217766,267.233059916054 262.45930997006667,268.3982582005953 C264.7328606179557,269.5634564851366 267.0064115624889,270.7286549217086 269.2799619137337,271.8938530542193",datum:[{lake:"F",species:"Perch",count:21}],role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1}},{kind:"path",d:"M241.99735413906546,257.91147363972334 L247.48776652974945,248.40180042455302 C245.0864398567873,246.8504050494197 242.68511262385624,245.29900931251422 240.28378567090965,243.74761375649484 C237.88245871796303,242.1962182004754 235.4811317650164,240.64482264445604 233.07980481206982,239.0934270884366 C230.67847785912323,237.54203153241724 228.2771509061766,235.9906359763978 225.87582395323,234.43924042037844 C223.4744970002834,232.88784486435907 221.0731700473368,231.33644930833964 218.67184309439017,229.78505375232027 C216.27051614144358,228.23365819630084 213.869189188497,226.68226264028146 211.46786223555037,225.13086708426204 C209.06653528260378,223.57947152824266 206.66520832965716,222.0280759722233 204.26388137671057,220.47668041620386 C201.86255442376395,218.9252848601845 199.46122747081736,217.37388930416512 197.05990051787074,215.8224937481457 C194.65857356492415,214.27109819212632 192.2572463319931,212.71970245522084 189.85591965903095,211.16830708008752 L180.93627959576028,226.6175768548992 C183.48049073842049,227.92148906890293 186.02470247436906,229.22540158696785 188.56891391367344,230.5293139530022 C191.11312535297782,231.8332263190365 193.6573367922822,233.1371386850709 196.20154823158657,234.4410510511052 C198.74575967089095,235.74496341713956 201.28997111019535,237.0488757831739 203.83418254949973,238.3527881492082 C206.3783939888041,239.65670051524256 208.92260542810848,240.96061288127692 211.46681686741286,242.26452524731127 C214.01102830671724,243.56843761334562 216.55523974602164,244.87234997937992 219.09945118532602,246.17626234541427 C221.6436626246304,247.48017471144863 224.18787406393477,248.78408707748298 226.73208550323915,250.08799944351733 C229.27629694254355,251.39191180955163 231.82050838184793,252.69582417558598 234.36471982115233,253.99973654162034 C236.9089312604567,255.3036489076547 239.4531429964053,256.60756142571967 241.99735413906546,257.91147363972334",datum:[{lake:"F",species:"Salmon",count:47}],role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1}},{kind:"path",d:"M342.25899046182735,258.07748685525206 C346.84562661576706,258.9624403447242 351.5687425815439,259.4198605072056 356.0188999055372,260.73234751311617 C359.06908976036596,261.6319414507144 362.000085957821,263.1202740963629 364.7600319982934,264.71372968577845 C367.5199780387658,266.30718527519406 370.2744100179066,268.1013361177615 372.57857614837155,270.2930810496096 C375.9403018996237,273.4907868400699 378.69799736342424,277.3524151702119 381.75770764344463,280.8820818527037 C383.39265337397705,279.82581271885323 385.0275996644783,278.7695432232305 386.66254567499516,277.71327390849393 C388.297491685512,276.6570045937573 389.93243769602884,275.6007352790207 391.5673837065457,274.5444659642841 C393.2023297170625,273.4881966495475 394.83727572757937,272.4319273348109 396.47222173809615,271.37565802007424 C398.107167748613,270.31938870533764 399.7421140391143,269.26311920971494 401.3770597696467,268.2068500758644 C398.9210736451264,265.26577100947105 396.745509146981,262.0256080130898 394.0091007551183,259.3836121091164 C391.8571924772484,257.3059496985035 389.29339476765455,255.5668953241801 386.71210976044904,254.04787513210556 C384.5935559377208,252.801160404465 382.24117359338777,251.88264505531095 379.90958426531705,251.08640734997107 C377.84352236853294,250.3808472566991 375.69049032904627,249.81622967042023 373.5191560858847,249.54248173627002 C363.33485850363263,248.2585106329301 353.0681775563998,247.45632736993014 342.84268878907613,246.41325023750068 C342.74540575119437,248.35728934087587 342.6481226799932,250.30132911008445 342.5508396254517,252.24536854637637 C342.4535565709103,254.18940798266829 342.35627349970906,256.1334477518769 342.25899046182735,258.07748685525206",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M384.25666610697857,285.21040487754874 C385.3089125327623,286.28036538340854 386.17149762805064,287.63238941230804 387.4134060855097,288.4202871081122 C389.02698821956596,289.4439838530517 390.96852919686717,290.060882305688 392.82313788152453,290.6451881997798 C395.27450747543213,291.4175072955368 397.81636147923405,291.9295858317235 400.33134092120446,292.49016207765845 C403.4284892692153,293.1805008395019 406.5505353764948,293.76002563886743 409.65952125146816,294.3979332231151 C411.4062935780278,294.75633926285815 413.15429702483357,295.1090594923878 414.8986155258035,295.47910294963066 C416.75374215228584,295.8726534795969 418.60817036841496,296.2704860146006 420.45785663382503,296.68871518474236 C422.4044182264269,297.1288486574982 424.34906862307423,297.57911614571884 426.2873590998394,298.0541908783237 C428.3083515597817,298.54953585577306 430.3261840186434,299.06014697871086 432.3357054439473,299.5999743149052 C434.41377860312076,300.1582170307119 436.48730792577703,300.73643447177017 438.5501428532714,301.3484010343269 C440.6676240502519,301.9765791168886 442.7789552782955,302.62924915519125 444.87665381737185,303.32040825026047 C447.0155497187967,304.0251412365012 449.1463754675626,304.7588722800904 451.25992617477505,305.5360772782569 C453.4019054208138,306.3237361550037 455.5334743298766,307.1450231234016 457.64324367712555,308.0149998750004 C459.7696039125632,308.8918179844147 461.88266652399324,309.8071104426849 463.9683149228348,310.7764618612961 C466.0599374458785,311.7485898868243 468.1346738295704,312.76430243735945 470.1750564427814,313.8394382074186 C472.21235049123544,314.9129465246525 474.2282822969281,316.0354100485573 476.2013449078299,317.2223941231753 C478.16418145710054,318.4032262529766 480.1000695929123,319.63857785183706 481.9827539232987,320.94288682067645 C483.85038552895645,322.23676737963734 485.6841135101539,323.5907747102768 487.45229271596247,325.0169627065761 C489.2032512784378,326.4292607788623 490.9116943653195,327.90707209779356 492.54016722815027,329.45834502643294 C494.15212636612074,330.9938870854266 495.7110101855942,332.5996913174301 497.17358871836615,334.2774076694752 C498.62317474728434,335.9402203868224 500.11534966951615,337.6095082306569 501.27666091322067,339.47993223460986 C503.58176086638844,343.19255820571675 506.00356271551937,346.97215645767074 507.57282230898295,351.02655759465483 C509.166020286334,355.1428068868166 510.01671990654467,359.62674700947565 510.76403362566464,363.9918835220473 C511.15219660621267,366.25918352720976 511.07823548313945,368.6203049185839 510.9792524079869,370.9238671478573 C510.87642545550466,373.3168851817409 510.60773428110735,375.7289054746003 510.15860354276026,378.0816243115184 C509.68739317986604,380.5500046789192 509.04092581317144,383.0125287738364 508.21822910426306,385.387164760814 C507.34793909718314,387.8991742869749 506.12583850044655,390.29009579414264 505.0796433947952,392.7415608509339 C506.7577400049263,393.60158800416 508.4358372083457,394.4616154614473 510.1139341151209,395.32164276670403 C511.79203102189615,396.1816700719607 513.4701279286713,397.0416973772174 515.1482248354466,397.9017246824741 C516.8263217422218,398.7617519877308 518.504418648997,399.62177929298747 520.1825155557723,400.4818065982442 C521.8606124625476,401.34183390350086 523.5387093693228,402.2018612087576 525.2168062760979,403.06188851401424 C526.8949031828732,403.92191581927096 528.5730000896484,404.78194312452763 530.2510969964237,405.64197042978435 C531.9291939031989,406.501997735041 533.6072908099741,407.36202504029774 535.2853877167494,408.2220523455544 C536.9634846235247,409.0820796508111 538.6415815302998,409.9421069560678 540.319678437075,410.8021342613245 C541.9977753438503,411.6621615665812 543.6758725472697,412.52218902386846 545.3539691574008,413.38221617709456 C546.6647451867349,410.3379983022272 548.1835496489152,407.3669092212258 549.2862976408794,404.2495616340166 C550.3276701533493,401.30571579363414 551.1603649800069,398.2576699553795 551.7863306707031,395.19863589431964 C552.38164756583,392.2893795462725 552.7641532809776,389.308386254993 552.9501453983489,386.3446904066956 C553.1285724908171,383.5015396288813 553.0947927688819,380.6188957663501 552.8795883002218,377.77809601598454 C552.6711324702064,375.0263814556082 552.256441982182,372.2661072966967 551.6791645023224,369.56714747447 C551.1144759025426,366.9270447577559 550.3549186772543,364.3064798747473 549.4536900613036,361.7609083991621 C548.5640588287264,359.24809439241903 547.4955478073771,356.7785591643782 546.3065849567383,354.391991027485 C545.1238820258276,352.0179882326918 543.7814789837846,349.70559828630377 542.3386927166551,347.479195604103 C540.8951251723696,345.2515873118993 539.3125179136212,343.0981952421388 537.6475235224931,341.02995810427154 C535.9752303079216,338.95265445075194 534.1844619737079,336.95680907598035 532.3268298995563,335.04257322994255 C530.457433020741,333.1162140947333 528.4888506361918,331.2740263619532 526.466436663592,329.5081731605304 C524.4306603153376,327.730652716818 522.3130036444437,326.0365096798013 520.1522589369935,324.41245229453693 C517.9796758483623,322.77949695371103 515.7402312114195,321.2266176534279 513.4664532753475,319.7371349822594 C511.18536387733684,318.24286279506754 508.85013385916886,316.82371680357056 506.4876569347453,315.4611877194559 C504.1250757222981,314.098598488525 501.71894076360843,312.8052124627344 499.2912788647352,311.56178003712273 C496.87299279209043,310.3231498479159 494.41985590484023,309.1473217258374 491.94981302019124,308.0149998750004 C489.5004796152687,306.8921717040341 487.0233920362234,305.8256048492681 484.5331499960206,304.79632997171296 C482.07640995919576,303.780902250325 479.5976770902127,302.815266400176 477.10886678910845,301.88089207817126 C474.66745265682584,300.9643117049817 472.20871891323065,300.09123444899177 469.7424766958602,299.2434658861301 C467.33830398127145,298.41703365949695 464.9206135751963,297.6280247784474 462.49762199323067,296.85828970968674 C460.15185173454313,296.11308628231745 457.79568039058614,295.39939694922333 455.43619117390085,294.6986503977402 C453.1692531185473,294.0253906881889 450.8945031474214,293.3778097820576 448.6183401771141,292.7362709265835 C446.4499038772505,292.12509494308387 444.27585145362127,291.5336851254445 442.1023933633881,290.940505880819 C440.05126974289743,290.3807141069156 437.99644776671306,289.8344900984477 435.9445950449426,289.27735787099675 C434.02854210354855,288.7570988719826 432.1105332029534,288.2436474013163 430.1986763738945,287.7083322014237 C428.43406670346053,287.214245843019 426.65813045738776,286.75323097411933 424.91519554646413,286.1891531961048 C421.89722747810924,285.212427839669 418.8204520595463,284.33604224623525 415.9159674360591,283.0859227980726 C413.5965604508408,282.0876266607894 411.20501545038786,280.98256228912896 409.2435207203476,279.4439064397674 C407.58083126759425,278.1396424960665 406.44344994796245,276.18607750638716 405.0434148876782,274.5571634188852 C403.31118611926405,275.4449333884099 401.57895675756157,276.33270366199577 399.8467276925033,277.2204737835511 C398.11449862744496,278.1082439051064 396.3822695623867,278.99601402666167 394.6500404973284,279.883784148217 C392.91781143227007,280.77155426977225 391.1855823672118,281.6593243913276 389.45335330215346,282.54709451288284 C387.7211242370952,283.43486463443816 385.9888948753927,284.32263490802404 384.25666610697857,285.21040487754874",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M495.795191876994,408.8227026001756 C492.7342537403247,412.9825468716412 489.8974771037707,417.32916439669293 486.6123768743156,421.30223622001733 C483.71325527112094,424.8084970795084 480.5360992568376,428.12111755765176 477.24252637904465,431.2607006486221 C474.32598406108133,434.040881104721 471.19563473997744,436.62989243341985 467.98203128704694,439.06152686122493 C465.11370924250417,441.2318975170015 462.1604743935269,443.3636240111142 458.9967498866248,445.06671589936724 C453.5109934978117,448.01980084286885 447.8565519513892,450.8283665260666 442.0335885999013,453.0300573564888 C436.88226885965827,454.97779646320464 431.48685432275084,456.44634450015457 426.07390061143207,457.5150057107812 C415.1281202229984,459.67599424772317 404.04138331089933,461.33394794269145 392.957386300644,462.71900659919464 C377.9271372003502,464.5971897678205 362.8065699551049,465.7761563574698 347.73116227978477,467.3047311861684 C347.85580617675635,469.79553138100067 347.9804501070473,472.2863322416664 348.10509402067856,474.7771327694154 C348.2297379343098,477.2679332971644 348.35438184794106,479.7587338249134 348.4790257615723,482.2495343526624 C348.60366967520355,484.7403348804114 348.7283135888348,487.2311354081604 348.8529575024661,489.7219359359094 C348.97760141609734,492.2127364636584 349.1022453297286,494.7035369914074 349.22688924335984,497.1943375191564 C349.3515331569911,499.6851380469054 349.4761770706223,502.1759385746544 349.6008209842536,504.6667391024034 C349.7254648978849,507.1575396301524 349.8501088115161,509.64834015790143 349.97475272514737,512.1391406856504 C350.0993966387786,514.6299412133994 350.22404055240986,517.1207417411484 350.3486844660411,519.6115422688974 C350.47332837967235,522.1023427966464 350.5979723099633,524.5931436573121 350.7226162069349,527.0839438521444 C356.8046643348833,526.5682689411063 362.90758634335896,526.2316585525257 368.96876158720494,525.5369190345468 C374.3324890492578,524.9221218571611 379.70006933274044,524.1939262806609 384.9973243246313,523.1553337660506 C393.936755459526,521.4026474642229 402.8685707925057,519.4743881168347 411.67881996756154,517.1630825852329 C418.9813479872962,515.2473168592785 426.2037120031931,512.9525854677493 433.33565590900275,510.47411999338203 C439.76119630540785,508.2411411257737 446.140183592015,505.7966947321929 452.3512728742058,503.02874955930645 C458.6211356188488,500.2346122461533 464.85514788734713,497.2464911165855 470.7785119895042,493.7878725352631 C477.47083091958336,489.88026560708545 483.90231623574954,485.4554530579412 490.19832197091444,480.9300730308063 C493.8342077338016,478.31670742975314 497.2407878999385,475.3645527065347 500.57418648366024,472.37163565069875 C504.3104174849856,469.0170324709241 507.96252196663465,465.5399024227346 511.4072107260557,461.88751232397453 C515.2959713945187,457.7642745065965 519.0732206525428,453.5004777488417 522.5745347673123,449.04475190228436 C526.5400459510277,443.99829503011745 530.063302864369,438.60222647508454 533.8076866215105,433.3809641678018 C532.2238329538068,432.35770345003675 530.6399787261341,431.3344423704996 529.0561247784459,430.3111814718485 C527.4722708307577,429.2879205731974 525.8884168830696,428.2646596745463 524.3045629353813,427.2413987758952 C522.7207089876931,426.21813787724415 521.136855040005,425.194876978593 519.5530010923168,424.17161607994194 C517.9691471446286,423.14835518129087 516.3852931969404,422.1250942826398 514.8014392492522,421.1018333839887 C513.217585301564,420.0785724853376 511.6337313538759,419.0553115866865 510.04987740618765,418.0320506880354 C508.4660234584995,417.0087897893843 506.8821695108113,415.98552889073324 505.2983155631231,414.96226799208216 C503.71446161543497,413.93900709343103 502.13060766774674,412.91574619477996 500.5467537200586,411.8924852961289 C498.9628997723704,410.86922439747775 497.37904554469776,409.8459633179406 495.795191876994,408.8227026001756",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M331.788901716802,467.3047311861684 C327.38965463536704,466.7574415158507 322.9293005916095,466.5141094954065 318.5911594801468,465.66286205176175 C314.7589012040669,464.910880966527 310.95681984136945,463.80579771647444 307.27770355417414,462.4950455995296 C304.0093888789771,461.3306490311835 300.8135501922017,459.8648327392715 297.74886659296976,458.2374159958889 C294.9964220288721,456.7758052867223 292.34723212754864,455.0615912859315 289.8263190641852,453.2279632418821 C287.5264777528695,451.55513541351365 285.3495339491935,449.67729577628984 283.2866034689323,447.71804837863556 C281.3691237997089,445.8969414203898 279.4910165758475,443.9862981728125 277.8850886157313,441.88690017418185 C274.89700126811624,437.98063242549483 272.0678223354493,433.90311452205435 269.50455754573863,429.7010511366825 C267.0373184436194,425.6564065351611 265.00031194382984,421.3474336923895 262.7935769402417,417.1467762135021 C260.5310259476868,412.839869524305 258.5415093501169,408.38171087192234 256.09669955730953,404.1783586324291 C250.16968052558582,393.98805720537746 243.81762665669157,384.0366627354406 237.67809046664846,373.9658152138675 C235.63440823348688,375.28615167640214 233.59072544035638,376.606488500709 231.54704292721033,377.9268251441298 C229.50336041406428,379.24716178755057 227.45967790091822,380.5674984309713 225.41599538777217,381.88783507439206 C223.37231287462612,383.20817171781283 221.32863036148007,384.5285083612336 219.284947848334,385.8488450046543 C217.241265335188,387.1691816480751 215.19758282204194,388.48951829149587 213.1539003088959,389.80985493491664 C211.11021779574986,391.1301915783374 209.0665352826038,392.4505282217582 207.02285276945776,393.7708648651789 C204.9791702563117,395.0912015085997 202.93548774316568,396.41153815202046 200.89180523001963,397.7318747954412 C198.84812271687358,399.05221143886195 196.80444020372755,400.3725480822827 194.7607576905815,401.6928847257035 C192.71707517743545,403.01322136912427 190.67339238430495,404.3335581934311 188.62971015114337,405.65389465596576 C198.29272430601088,419.9043439569732 207.9828483197782,434.1365443149007 217.61875317697155,448.40524338665097 C221.39701192345848,454.0000305776624 225.0500651017175,459.68011563475136 228.87220096218414,465.2443534442509 C232.4913186260997,470.5130388279589 235.98944764343614,475.89115028521826 239.94251375011817,480.9040129662734 C244.0210998122121,486.0760468534837 248.41625252289055,491.04209013103593 252.96715746851203,495.79904314904746 C255.4292937852049,498.37265585298155 258.1866689809577,500.6856186724525 260.98163753706126,502.89571013211014 C264.0100572881627,505.2904006246209 267.15914567331464,507.5760556680574 270.4373223901271,509.61338900555245 C274.0535679917229,511.86082663846463 277.8039400601555,513.9572465604983 281.66490449228604,515.7500230433318 C285.98300007083105,517.7550609917313 290.43844823299935,519.563110752535 294.9745024221537,521.0068322992511 C300.0927031333566,522.635837672434 305.34176225368094,524.0184625613481 310.6276691933578,524.9682038030288 C316.6160773761804,526.0441664123125 322.7408552553168,526.3786972076597 328.79744778965187,527.0839438521444 C328.9220916866234,524.5931436573121 329.04673561691436,522.1023427966464 329.17137953054566,519.6115422688974 C329.2960234441769,517.1207417411484 329.42066735780816,514.6299412133994 329.5453112714394,512.1391406856504 C329.66995518507065,509.64834015790143 329.7945990987019,507.1575396301524 329.9192430123332,504.6667391024034 C330.04388692596444,502.1759385746544 330.1685308395957,499.6851380469054 330.29317475322694,497.1943375191564 C330.4178186668582,494.7035369914074 330.5424625804894,492.2127364636584 330.6671064941207,489.7219359359094 C330.791750407752,487.2311354081604 330.9163943213832,484.7403348804114 331.04103823501447,482.2495343526624 C331.1656821486457,479.7587338249134 331.29032606227696,477.2679332971644 331.4149699759082,474.7771327694154 C331.53961388953945,472.2863322416664 331.6642578198304,469.79553138100067 331.788901716802,467.3047311861684",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M231.60397974871566,363.44514683960927 C230.22930200806616,360.35801004738835 228.6962105522048,357.3314745024352 227.4799461199822,354.1837355494228 C226.40650736594256,351.4056349240604 225.38573513586695,348.57067665767875 224.73487018992887,345.66762810448495 C223.64602859213713,340.81107522841836 222.68810660146738,335.85651984318645 222.26082648879273,330.90493126164176 C221.91190568449213,326.861419244143 222.0866386001573,322.73392896422735 222.40626743900307,318.68232630735474 C222.68856355101275,315.1039518353469 223.2229912803495,311.50717035387316 224.0666013413591,308.0149998750004 C225.80152572093897,300.8331845061857 227.919899143919,293.7147221422008 230.1418707607714,286.66036876429234 C231.52447322589074,282.2708588821024 233.12590842829354,277.9377703600012 234.88032358727426,273.68341009470527 C237.07773622105822,268.3548053184782 239.6250107589048,263.16878548755204 241.99735413906546,257.91147363972334 C239.4531429964053,256.60756142571967 236.9089312604567,255.3036489076547 234.36471982115233,253.99973654162034 C231.82050838184793,252.69582417558598 229.27629694254355,251.39191180955163 226.73208550323915,250.08799944351733 C224.18787406393477,248.78408707748298 221.6436626246304,247.48017471144863 219.09945118532602,246.17626234541427 C216.55523974602164,244.87234997937992 214.01102830671724,243.56843761334562 211.46681686741286,242.26452524731127 C208.92260542810848,240.96061288127692 206.3783939888041,239.65670051524256 203.83418254949973,238.3527881492082 C201.28997111019535,237.0488757831739 198.74575967089095,235.74496341713956 196.20154823158657,234.4410510511052 C193.6573367922822,233.1371386850709 191.11312535297782,231.8332263190365 188.56891391367344,230.5293139530022 C186.02470247436906,229.22540158696785 183.48049073842049,227.92148906890293 180.93627959576028,226.6175768548992 C178.8531772257564,231.1244463269037 176.60625089730215,235.56304440722334 174.68697206619103,240.13818617864138 C172.9905733664706,244.1820303696269 171.37316328884947,248.28296027170643 170.08924700326568,252.4745347421097 C167.93151202882945,259.518846691647 165.92138112426198,266.64823118493274 164.36201828613096,273.845845438463 C163.0801763004202,279.76249544545135 162.23485228077354,285.7983035143918 161.56563253174033,291.81732752366565 C160.96849675417076,297.1880216599043 160.65185839219643,302.6117308762432 160.5629517063226,308.0149998750004 C160.47391198187617,313.42635424088064 160.5901543816072,318.86833003578477 161.03179330077953,324.261197617578 C161.5281330635442,330.3220190261278 162.20691365131808,336.41158568361305 163.37688775213363,342.3760668460295 C164.80333766059073,349.648051415767 166.73419947134067,356.85611077072747 168.8210653285975,363.97059481403977 C170.06428063173524,368.2089292550476 171.67589356108303,372.35222963642667 173.36713123331737,376.43452229898986 C175.2812410505394,381.05478152716944 177.5471157482729,385.5303413933906 179.63710779696657,390.07825048626813 C181.80239383164528,388.96853798635465 183.96768045961232,387.8588251823799 186.1329667909352,386.7491125304358 C188.29825312225807,385.63939987849164 190.46353945358098,384.52968722654754 192.62882578490385,383.41997457460343 C194.79411211622673,382.31026192265927 196.9593984475496,381.20054927071516 199.12468477887248,380.09083661877105 C201.28997111019535,378.98112396682694 203.45525744151823,377.87141131488283 205.6205437728411,376.76169866293867 C207.78583010416398,375.65198601099456 209.95111643548685,374.54227335905045 212.11640276680976,373.43256070710635 C214.28168909813263,372.32284805516224 216.4469754294555,371.2131354032181 218.61226176077838,370.10342275127397 C220.77754809210126,368.99371009932986 222.94283442342413,367.8839974473857 225.108120754747,366.7742847954416 C227.27340708606988,365.6645721434975 229.43869371403696,364.55485933952275 231.60397974871566,363.44514683960927",role:"node",style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M342.84268878907613,246.41325023750068 C353.0681775563998,247.45632736993014 363.33485850363263,248.2585106329301 373.5191560858847,249.54248173627002 C375.69049032904627,249.81622967042023 377.84352236853294,250.3808472566991 379.90958426531705,251.08640734997107 C382.24117359338777,251.88264505531095 384.5935559377208,252.801160404465 386.71210976044904,254.04787513210556 C389.29339476765455,255.5668953241801 391.8571924772484,257.3059496985035 394.0091007551183,259.3836121091164 C396.745509146981,262.0256080130898 398.9210736451264,265.26577100947105 401.3770597696467,268.2068500758644 C403.52292612846554,266.82049678115874 405.6687930472534,265.4341431246808 407.81465968605676,264.04778964908905 C409.9605263248601,262.66143617349724 412.10639296366344,261.2750826979054 414.2522596024668,259.8887292223136 C416.3981262412701,258.50237574672184 418.54399288007346,257.11602227113 420.6898595188768,255.7296687955382 C422.83572615768014,254.34331531994644 424.98159307646796,252.95696166346852 427.1274594352868,251.5706083687628 C425.38362552656076,249.26452648762415 423.791701580638,246.8246260712928 421.895957105954,244.65236192772272 C420.2212618324626,242.73338996573517 418.45559240967805,240.81128864144813 416.4161401907606,239.29690005209 C412.9859240676542,236.7498042644662 409.34706439275413,234.26153073865294 405.48695207988237,232.46790879677707 C402.2692124553944,230.9727687785761 398.6813990191583,230.09544741699688 395.1825843786814,229.43061417185947 C392.04006556130497,228.83348308663653 388.77410631084877,228.67925420640836 385.5629517063226,228.68201580569598 C379.30460541370326,228.68739799584 373.03901684924523,229.41987969290642 366.77408168724503,229.4550455401544 C359.09077837378743,229.49817286129888 351.4035177491387,229.0962787128555 343.71823627994934,228.91689531087349 C343.57231171479685,231.83295413239466 343.4263871163249,234.74901361974923 343.2804625345127,237.66507277418708 C343.13453795270055,240.58113192862493 342.9886133542286,243.4971914159795 342.84268878907613,246.41325023750068",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M405.0434148876782,274.5571634188852 C406.501573547975,278.109115150841 408.2063210274235,281.581299941505 409.4178912483363,285.21301953983436 C410.3719243975942,288.0727637179354 411.15116623728136,291.0444588854973 411.54022499819035,294.03155474817646 C412.1411255626928,298.64511899721936 412.55252415464014,303.36986468339296 412.3877692245708,308.0149998750004 C412.22414730997434,312.62819058977834 411.41568248951387,317.26061828091554 410.555094464193,321.80653246733266 C410.002995939213,324.722901790588 409.1516190860751,327.60678751557896 408.1497095736681,330.40185040401775 C406.88133529430553,333.9402796064511 405.21273178718354,337.33862293492626 403.74424308888445,340.80700873994914 C406.12605775669545,342.0276925050571 408.5078730177948,343.2483765742262 410.88968798224994,344.4690604913647 C413.27150294670514,345.68974440850326 415.6533179111603,346.91042832564176 418.03513287561543,348.1311122427803 C420.41694784007063,349.3517961599189 422.7987628045258,350.5724800770574 425.180577768981,351.79316399419594 C427.5623927334361,353.01384791133444 429.9442079945355,354.23453198050356 432.3260226623465,355.4552157456115 C434.42173753488146,350.42808948693954 436.8371679447498,345.5085739688216 438.6131676647356,340.373836046589 C440.0136198069432,336.32487441560244 441.1808989556756,332.1326401782409 441.8553782489266,327.904117085954 C442.9013865802436,321.34636145437804 443.7746305384394,314.64470561198493 443.7746305384394,308.0149998750004 C443.7746305384394,301.38529413801587 442.9013865802436,294.68363829562276 441.8553782489266,288.1258826640468 C441.1808989556756,283.8973595717599 440.0136198069432,279.70512533439836 438.6131676647356,275.6561637034118 C436.8371679447498,270.5214257811792 434.42173753488146,265.60191026306126 432.3260226623465,260.5747840043893 C430.0524723111016,261.7399821369 427.7789213665684,262.90518057347197 425.5053707186794,264.07037885801327 C423.2318200707904,265.2355771425546 420.95826942290137,266.40077542709594 418.68471877501236,267.56597371163724 C416.41116812712335,268.73117199617855 414.1376174792343,269.8963702807199 411.86406683134527,271.0615685652612 C409.5905161834562,272.2267668498025 407.31696523892305,273.3919652863745 405.0434148876782,274.5571634188852",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M400.15085026175905,347.0309476880839 C398.4418787874031,350.53934236109615 396.32005724472214,353.90211008007964 395.0239354007728,357.5561326061353 C393.7668697238977,361.1000481118234 393.1302223755697,364.8996063738523 392.49128769928575,368.6247617833153 C391.8049091023274,372.62652759491584 391.5757501269605,376.7056080451108 391.0479955810459,380.7368962693261 C390.4828498081382,385.05379986953903 390.1300542092252,389.4240747880753 389.2125867428189,393.6693372566 C388.2527855060092,398.11048456379814 386.9437819439935,402.52283817589654 385.416189471398,406.7961255964945 C384.62421524446336,409.0115944221868 383.4736157053108,411.1224581636732 382.25388664422854,413.1356059954708 C380.9880427949185,415.22486571875055 379.56672184450906,417.2671470432275 377.9594707402211,419.10334826172664 C376.25842768214096,421.0467019341137 374.3717393305652,422.8970652170373 372.3290041571242,424.47427066812924 C370.1156961871911,426.18317617899055 367.70508988920153,427.73872454400185 365.1913413100988,428.96168114758626 C362.4075404070061,430.31602013192366 359.43897271188666,431.45177047194994 356.4363557105377,432.2061574318946 C353.05953547150193,433.05456039279886 349.5141379665267,433.24875313369887 346.0530295889445,433.770050910133 C346.19287396318816,436.5646072668859 346.3327183707512,439.35916428947223 346.47256276165456,442.15372097914184 C346.6124071525579,444.94827766881144 346.7522515434613,447.7428343584811 346.89209593436465,450.5373910481507 C347.031940325268,453.3319477378203 347.1717847161714,456.12650442749 347.31162910707474,458.9210611171595 C347.4514734979781,461.7156178068292 347.59131790554113,464.5101748294155 347.73116227978477,467.3047311861684 C352.1216817294103,466.69244549428026 356.59811974291665,466.4480995640486 360.9027216190768,465.46787397238427 C364.71688910186515,464.59932801039196 368.4939313683009,463.30384535671044 372.08747035663043,461.7584165251984 C375.30495245436714,460.37471382575234 378.41908624813016,458.6205468597408 381.33578487727567,456.68047937951013 C383.99114977021367,454.9142403085766 386.49246707624815,452.8391363217407 388.80366092288097,450.639496871706 C390.9507782610796,448.59601444904547 392.91261460023594,446.31030155453914 394.7107184317702,443.9511137614245 C396.4145480617404,441.7156176826786 397.9247579908214,439.30424660971926 399.3094613073944,436.8554452561243 C400.642500380899,434.49801038287507 401.7949513609835,432.0230454899477 402.86394560200296,429.53240508089175 C403.9037790608695,427.1097061252157 404.79119896097905,424.6145114474442 405.63594440705253,422.11542716192827 C406.46219605025493,419.6710547098402 407.1720483279015,417.1851118200818 407.87693686983073,414.7020348680798 C408.56825028279695,412.2667783697288 409.1653920858058,409.8049561302697 409.8245502717389,407.36042681086934 C411.11359047737767,402.579940663816 412.19962308252593,397.73274421935594 413.72153204454617,393.0269884687186 C415.25313068540896,388.2912721468033 416.8741904326592,383.53423314966943 418.9850730803879,379.03601059321136 C421.34283289623943,374.01170078717587 424.4133308128764,369.318264160886 427.1274594352868,364.459391381238 C424.87940895081067,363.00702125436123 422.63135790636557,361.55465076571227 420.3833071419049,360.10228045794946 C418.13525637744425,358.64991015018666 415.8872056129836,357.1975398424238 413.63915484852294,355.74516953466093 C411.3911040840623,354.29279922689807 409.1430533196017,352.84042891913526 406.895002555141,351.3880586113724 C404.64695179068036,349.9356883036096 402.3989007462352,348.4833178149606 400.15085026175905,347.0309476880839",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M333.4670344076423,433.770050910133 C329.9957437932031,433.32458182401786 326.47140048192074,433.1323602456468 323.0531615724587,432.43364352450175 C320.0317282081762,431.8160371870378 317.03547954715845,430.9046147382856 314.14801758640874,429.82108173430606 C311.57878520924925,428.8569658036421 309.07264061099676,427.64066732925187 306.68307855873104,426.29069672057113 C304.53068871950217,425.07471531568274 302.36411840094695,423.7643002449482 300.52216191192497,422.1232256935988 C297.2666838056424,419.22278678283385 294.0732143560419,416.0977624981601 291.3907747728175,412.6661563342283 C288.9651564529579,409.56309789823155 287.0636906609173,406.007440107262 285.19798820267295,402.51923189381324 C283.40670201447824,399.17015596442957 281.9933853998663,395.6179804769663 280.4198088335004,392.15430390573096 C278.8307132779025,388.656467726021 277.5212074114054,385.0182990043593 275.7099718367814,381.6346936409775 C271.4486980083722,373.67412286672175 266.70484419581715,365.9594145865043 262.202280624401,358.1217754928183 C260.1585983912394,359.44211195535297 258.1149155981089,360.76244877965985 256.07123308496284,362.0827854230806 C254.0275505718168,363.4031220665014 251.98386805867077,364.72345870992217 249.9401855455247,366.04379535334294 C247.8965030323787,367.36413199676366 245.85282051923264,368.68446864018443 243.80913800608658,370.0048052836052 C241.76545549294053,371.3251419270259 239.72177269981003,372.6454787513328 237.67809046664846,373.9658152138675 C243.81762665669157,384.0366627354406 250.16968052558582,393.98805720537746 256.09669955730953,404.1783586324291 C258.5415093501169,408.38171087192234 260.5310259476868,412.839869524305 262.7935769402417,417.1467762135021 C265.00031194382984,421.3474336923895 267.0373184436194,425.6564065351611 269.50455754573863,429.7010511366825 C272.0678223354493,433.90311452205435 274.89700126811624,437.98063242549483 277.8850886157313,441.88690017418185 C279.4910165758475,443.9862981728125 281.3691237997089,445.8969414203898 283.2866034689323,447.71804837863556 C285.3495339491935,449.67729577628984 287.5264777528695,451.55513541351365 289.8263190641852,453.2279632418821 C292.34723212754864,455.0615912859315 294.9964220288721,456.7758052867223 297.74886659296976,458.2374159958889 C300.8135501922017,459.8648327392715 304.0093888789771,461.3306490311835 307.27770355417414,462.4950455995296 C310.95681984136945,463.80579771647444 314.7589012040669,464.910880966527 318.5911594801468,465.66286205176175 C322.9293005916095,466.5141094954065 327.38965463536704,466.7574415158507 331.788901716802,467.3047311861684 C331.92874609104564,464.5101748294155 332.0685904986087,461.7156178068292 332.20843488951203,458.9210611171595 C332.3482792804154,456.12650442749 332.48812367131876,453.3319477378203 332.6279680622221,450.5373910481507 C332.7678124531255,447.7428343584811 332.90765684402885,444.94827766881144 333.0475012349322,442.15372097914184 C333.1873456258356,439.35916428947223 333.32719003339867,436.5646072668859 333.4670344076423,433.770050910133",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M257.5874157245902,350.1285950162798 C255.90585532456623,345.60737411401914 253.74555961496168,341.20316899158615 252.54273417592202,336.564931372225 C251.59744190648803,332.91977221356865 251.25287165282583,329.0472438119585 251.14306259916924,325.27840468222723 C251.0531197626009,322.19140893269736 251.43932668722525,319.05065821789293 251.94347850524724,315.9974267344417 C252.38950870104523,313.29618994881736 253.10378987328903,310.6095862865121 253.9936086406292,308.0149998750004 C255.79237617325504,302.7700466677644 257.8456587662067,297.5912725896419 260.00923740514526,292.4788078781985 C262.9411098572416,285.5508903160482 266.1897205477511,278.75550435827995 269.2799619137337,271.8938530542193 C267.0064115624889,270.7286549217086 264.7328606179557,269.5634564851366 262.45930997006667,268.3982582005953 C260.18575932217766,267.233059916054 257.91220867428865,266.06786163151264 255.63865802639958,264.90266334697134 C253.36510737851057,263.73746506243 251.09155673062156,262.5722667778887 248.81800608273252,261.40706849334737 C246.54445543484348,260.241870208806 244.2709044903103,259.0766717722341 241.99735413906546,257.91147363972334 C239.6250107589048,263.16878548755204 237.07773622105822,268.3548053184782 234.88032358727426,273.68341009470527 C233.12590842829354,277.9377703600012 231.52447322589074,282.2708588821024 230.1418707607714,286.66036876429234 C227.919899143919,293.7147221422008 225.80152572093897,300.8331845061857 224.0666013413591,308.0149998750004 C223.2229912803495,311.50717035387316 222.68856355101275,315.1039518353469 222.40626743900307,318.68232630735474 C222.0866386001573,322.73392896422735 221.91190568449213,326.861419244143 222.26082648879273,330.90493126164176 C222.68810660146738,335.85651984318645 223.64602859213713,340.81107522841836 224.73487018992887,345.66762810448495 C225.38573513586695,348.57067665767875 226.40650736594256,351.4056349240604 227.4799461199822,354.1837355494228 C228.6962105522048,357.3314745024352 230.22930200806616,360.35801004738835 231.60397974871566,363.44514683960927 C233.76926578339436,362.3354343396957 235.9345524113614,361.225721535721 238.09983874268428,360.1160088837769 C240.26512507400716,359.0062962318327 242.43041140533006,357.89658357988867 244.59569773665294,356.7868709279445 C246.7609840679758,355.6771582760004 248.9262703992987,354.5674456240563 251.09155673062156,353.4577329721121 C253.25684306194444,352.348020320168 255.42212968991151,351.2383075161933 257.5874157245902,350.1285950162798",role:"node",style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M343.71823627994934,228.91689531087349 C351.4035177491387,229.0962787128555 359.09077837378743,229.49817286129888 366.77408168724503,229.4550455401544 C373.03901684924523,229.41987969290642 379.30460541370326,228.68739799584 385.5629517063226,228.68201580569598 C388.77410631084877,228.67925420640836 392.04006556130497,228.83348308663653 395.1825843786814,229.43061417185947 C398.6813990191583,230.09544741699688 402.2692124553944,230.9727687785761 405.48695207988237,232.46790879677707 C409.34706439275413,234.26153073865294 412.9859240676542,236.7498042644662 416.4161401907606,239.29690005209 C418.45559240967805,240.81128864144813 420.2212618324626,242.73338996573517 421.895957105954,244.65236192772272 C423.791701580638,246.8246260712928 425.38362552656076,249.26452648762415 427.1274594352868,251.5706083687628 C429.68206229673495,249.92018774537297 432.236665718152,248.26976676021093 434.79126885958453,246.619345955935 C437.3458720010171,244.968925151659 439.90047514244964,243.31850434738305 442.4550782838822,241.66808354310712 C445.00968142531474,240.01766273883118 447.56428456674735,238.36724193455518 450.11888770817984,236.71682113027924 C452.67349084961245,235.0664003260033 455.2280942710295,233.4159793408412 457.78269713247755,231.76555871745137 C455.4441479103719,228.63709020921618 453.29592744120225,225.34486066486784 450.76704886743977,222.38015239178804 C448.5344326865491,219.76276469639924 446.0650679983357,217.31035267958725 443.49821286851807,215.01927081204553 C441.2220038390075,212.98760912079268 438.7628246268252,211.1253210747999 436.23785638945526,209.4119217154044 C433.9776385119277,207.87817732760016 431.63862806493444,206.37703979168236 429.1426545238256,205.27783957044613 C424.78755035695804,203.35989797976686 420.2789160796812,201.58363108203366 415.684623265526,200.36049627965798 C411.59176453224103,199.270857860778 407.31546900532794,198.6851100440855 403.0811998815051,198.33951990667913 C394.7008588742476,197.65553806340984 386.2504805542775,197.70291639125162 377.840792872285,197.27178033763101 C367.022203584039,196.71714810063793 356.2111766051853,196.0120701163886 345.39636897078964,195.38221503483817 C345.256524596546,198.17677139159105 345.1166801889829,200.97132841417738 344.97683579807955,203.76588510384698 C344.8369914071762,206.5604417935166 344.6971470162728,209.3549984831862 344.55730262536946,212.1495551728558 C344.41745823446615,214.94411186252546 344.2776138435628,217.73866855219507 344.1377694526594,220.53322524186467 C343.99792506175606,223.32778193153428 343.858080654193,226.1223389541206 343.71823627994934,228.91689531087349",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M432.3260226623465,260.5747840043893 C433.35014450147594,263.2795955082284 434.68000291269055,265.9075715794475 435.3983885338325,268.68921945111504 C436.04046158643575,271.1753788168745 436.3567701053898,273.811076655514 436.40739868358196,276.3782057166704 C436.45366047781766,278.7239163932139 436.1764683664401,281.13142754622373 435.68905965111617,283.4277386642148 C435.2311108156533,285.5852565117274 434.4757933518027,287.7252945032148 433.57132603122176,289.7396926131812 C432.69904521895876,291.6824060530144 431.57719884009276,293.54882714016406 430.35881525258446,295.2990733136137 C429.16248167143925,297.01764396249365 427.85571819276595,298.7160675237088 426.32717452526117,300.1461430801699 C423.32522353135994,302.9547097108377 420.1295717542115,305.6417133137713 416.76733126836643,308.0149998750004 C413.545554572362,310.28913801833033 410.01200336794125,312.1335209340117 406.57512297971283,314.08841719384714 C403.46339170292583,315.8583687625543 400.19254614257216,317.356022798275 397.12149627332025,319.18954336062825 C394.4957307229544,320.7572141356025 391.72918580397595,322.26291224265026 389.4846767208596,324.2919912058297 C387.44090908186206,326.13959607992484 385.9993361032299,328.6437272437522 384.25666610697857,330.81959487245206 C385.88063055882657,331.65187920937956 387.5045956039629,332.48416385036825 389.12856035245505,333.3164483393263 C390.7525251009472,334.14873282828444 392.37648984943934,334.9810173172425 394.00045459793154,335.81330180620057 C395.6244193464237,336.6455862951587 397.2483840949158,337.47787078411676 398.872348843408,338.3101552730749 C400.49631359190016,339.14243976203295 402.1202786370365,339.97472440302164 403.74424308888445,340.80700873994914 C404.81896537369175,339.088201078967 405.75490892874404,337.2647024399603 406.96841047347095,335.65058490910826 C408.13750021766356,334.0955409460903 409.4118063071977,332.56141131302803 410.8920169556429,331.29952425833926 C414.040398286217,328.61551327081617 417.4547212426254,326.19260471802824 420.8541864105288,323.8128907824727 C422.73044656879534,322.4994599264925 424.7566308103271,321.405175633065 426.7191929341527,320.2200898837321 C428.79961117015284,318.96383716479636 430.90672787960847,317.75166091636845 432.9831274900061,316.4888753776667 C435.1556788093443,315.16761410675826 437.3372440034312,313.85758091561115 439.4660457233601,312.4679494549016 C441.6643386935416,311.0329557480557 443.8562866048836,309.5776239044921 445.9644115603372,308.0149998750004 C448.1180246815655,306.41865825172323 450.2482213424996,304.77002123722366 452.2512599534058,302.9910524965951 C454.28460793744125,301.18516494019764 456.27145441002494,299.2936604174188 458.0735713451622,297.26043098392233 C459.903663604085,295.1956385310548 461.6529186628551,293.0119660566302 463.14788753558594,290.6969868375031 C464.6801687172689,288.32422901079616 466.08084382051925,285.80545120199923 467.15532150840374,283.1972198464202 C468.27741173521537,280.47341185453797 469.1998463978183,277.5942590256126 469.73759127967423,274.7008687951193 C470.3135911166994,271.6016439443639 470.6135341201316,268.3680903825144 470.496555665047,265.21937460267407 C470.3679802330846,261.7585023315621 469.8953596666494,258.2180666969982 469.00092961853306,254.8721046422624 C467.99828032236366,251.12130657118269 466.2038548416392,247.576764052998 464.80531763218966,243.92909422522746 C462.09871001468025,245.31623488812704 459.39210180388244,246.70337585508776 456.68549388972883,248.0905166700179 C453.9788859755753,249.47765748494805 451.2722780614217,250.86479829987826 448.56567014726807,252.2519391148084 C445.85906223311446,253.63907992973856 443.15245431896085,255.0262207446687 440.44584640480724,256.41336155959885 C437.73923849065363,257.800502374529 435.0326302798559,259.1876433414898 432.3260226623465,260.5747840043893",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M381.75770764344463,335.1479178972971 C378.69799736342424,338.6775845797889 375.9403018996237,342.5392129099309 372.57857614837155,345.7369187003912 C370.2744100179066,347.9286636322393 367.5199780387658,349.72281447480674 364.7600319982934,351.31627006422235 C362.000085957821,352.9097256536379 359.06908976036596,354.3980582992864 356.0188999055372,355.29765223688463 C351.5687425815439,356.6101392427952 346.84562661576706,357.0675594052766 342.25899046182735,357.9525128947487 C342.4049150269798,360.86857171626986 342.5508396254517,363.78463120362443 342.6967642072639,366.7006903580623 C342.84268878907613,369.6167495125002 342.988613387548,372.53280899985475 343.1345379527005,375.44886782137587 C349.40234449541254,374.4695631318928 355.7672061278149,373.8958551158759 361.93795856884947,372.510953598556 C366.2603756758593,371.54087384455704 370.563618899918,370.15973995504436 374.61404659683353,368.3839240074193 C378.75180013378133,366.5698220734805 382.7590353667613,364.2654302577469 386.5025022704394,361.74119995386445 C388.93956002513437,360.09788502815513 391.1535926519183,358.0390832228753 393.1556205719529,355.881288318644 C395.7030419823582,353.13566580094846 397.8191072385195,349.9810609700931 400.15085026175905,347.0309476880839 C398.61808865688397,346.0406953864044 397.08532649204,345.05044272295277 395.55256460718044,344.0601902403872 C394.01980272232095,343.0699377578216 392.4870408374614,342.07968527525605 390.95427895260184,341.0894327926905 C389.42151706774234,340.0991803101249 387.8887551828828,339.10892782755934 386.35599329802324,338.1186753449938 C384.82323141316374,337.1284228624282 383.2904692483197,336.1381701989765 381.75770764344463,335.1479178972971",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M337.2610735347595,357.9525128947487 C332.67443738081977,357.0675594052766 327.95132141504286,356.6101392427952 323.50116409104965,355.29765223688463 C320.4509742362209,354.3980582992864 317.51997803876577,352.9097256536379 314.7600319982934,351.31627006422235 C312.000085957821,349.72281447480674 309.2456539786802,347.9286636322393 306.9414878482153,345.7369187003912 C303.5797620969631,342.5392129099309 300.8220666331626,338.6775845797889 297.7623563531422,335.1479178972971 C296.3317788739244,336.07215336680554 294.9012008347377,336.99638919808615 293.4706230755355,337.92062484848066 C292.04004531633325,338.8448604988752 290.60946727714656,339.76909633015583 289.17888979792883,340.6933317996643 C292.61440966051805,345.2312053267009 295.87060049951157,349.9192526536057 299.4854499893015,354.3069531780575 C302.08621237651874,357.4637558395787 304.7694702593626,360.6322484959764 307.8257254289503,363.32684135758313 C310.99948518540134,366.1250338872145 314.5216569961676,368.6755006750796 318.1754947674178,370.7853093517719 C320.55688125427287,372.1603758399608 323.2611825502517,373.0976291017459 325.9313982032661,373.7814668522267 C329.3311929757412,374.6521485916139 332.9008170928522,374.89306755082816 336.3855260438863,375.44886782137587 C336.53145060903876,372.53280899985475 336.6773752075107,369.6167495125002 336.8232997893229,366.7006903580623 C336.9692243711351,363.78463120362443 337.115148969607,360.86857171626986 337.2610735347595,357.9525128947487",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M295.26339788960826,330.81959487245206 C293.73647201568895,326.4049747004881 291.7710515137126,322.0859262078647 290.68261994097145,317.5757334114939 C289.93659621660765,314.4843945420475 289.7600319982934,311.20191105383157 289.7600319982934,308.0149998750004 C289.7600319982934,304.82808869616923 289.93659621660765,301.5456052079533 290.68261994097145,298.4542663385069 C291.7710515137126,293.9440735421361 293.73647201568895,289.6250250495127 295.26339788960826,285.21040487754874 L290.06671069443337,282.54709451288284 C288.1375644086868,287.43367431997893 285.9093767342464,292.2265103352701 284.27927146998877,297.20683486431113 C283.1307514754358,300.7158121226426 282.2171242034145,304.36344835138686 281.73083491800145,308.0149998750004 C281.2319936694172,311.76080422633805 281.12663397787287,315.6295961943379 281.32387986799677,319.39890248916464 C281.4523941310872,321.8547692275673 281.9975009009625,324.33200659648315 282.7081153776445,326.69051897468864 C283.6126060443143,329.69250177030074 285.0155021133757,332.5504319754631 286.16919529805216,335.4803880106174 C287.684895433334,334.7035893062871 289.20059616190423,333.9267902978956 290.71629659383024,333.1499914415347 C292.23199702575624,332.37319258517385 293.7476977543264,331.59639357678236 295.26339788960826,330.81959487245206",role:"node",style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M345.39636897078964,195.38221503483817 C348.55896739773874,195.382558132577 351.73104144069697,195.5527219798143 354.8841652516368,195.3832443281632 C357.8154120873408,195.2256923701965 360.7815297382695,195.0140850047169 363.64948091072114,194.40112620598472 C369.2743738430329,193.19893432492864 374.84799495054074,191.60261554931338 380.36269756592685,189.93779228879856 C383.2149630773656,189.0767271870542 385.96592524848944,187.8914036578941 388.75038529119587,186.8234611192073 C391.6267645154287,185.7202642035254 394.47501885281974,184.54393840851208 397.3452153667447,183.42437392569252 C400.3038172998536,182.27032554362535 403.2517042659147,181.08471035673182 406.23678063229755,180.00262252454718 C409.2999521455307,178.89222526312614 412.37286383166116,177.79099301742332 415.48995900559265,176.8469186448756 C418.67725000903727,175.88158406691048 421.89507695255986,174.96893876291142 425.149939164426,174.27439567300877 C428.4784608913324,173.56413464979687 431.8551530902404,172.95696699362577 435.24011082191026,172.63250630553193 C438.7226992137636,172.29868735843058 442.2618080827069,172.1282443574528 445.7525775349954,172.29955676742338 C449.392164356147,172.47817251336437 453.07812357712226,172.8892996184619 456.6311796422305,173.68229077326663 C460.40967405946606,174.52559653496604 464.1968517098352,175.67109603685032 467.74722898202685,177.2084475169358 C471.6093950004687,178.88080687189586 475.41287083883276,180.91124969405092 478.86880951413104,183.31142327840325 C482.70568947925653,185.97616325323224 486.39477219904,189.02891790313208 489.6256849032982,192.4031881944798 C493.2631091612153,196.2020072075536 496.1911087752302,200.68819045385453 499.4738204006569,204.83069119166782 C501.5685946966471,203.47734631304763 503.6633695526063,202.12400107265523 505.75814412858097,200.770656013149 C507.8529187045557,199.4173109536427 509.9476932805304,198.06396589413646 512.042467856505,196.71062083463016 C514.1372424324798,195.35727577512387 516.2320170084545,194.00393071561757 518.3267915844292,192.65058565611128 C520.4215661604038,191.29724059660504 522.5163407363785,189.94389553709874 524.6111153123533,188.59055047759244 C526.705889888328,187.2372054180862 528.8006644643026,185.8838603585799 530.8954390402773,184.5305152990736 C532.990213616252,183.17717023956732 535.0849881922268,181.82382518006108 537.1797627682014,180.47048012055478 C539.2745373441761,179.1171350610485 541.3693119201508,177.76379000154225 543.4640864961256,176.41044494203595 C545.5588610721002,175.05709988252966 547.6536359280594,173.70375464213726 549.7484102240496,172.35040976351706 C545.4526337599565,166.88830258118276 541.6075637824915,160.9961637882975 536.8610802135822,155.96408743048391 C532.6501323987985,151.49976966025963 527.8609045185797,147.44056410685585 522.8761160729706,143.86122737940343 C518.3992798831094,140.64662672543318 513.4814813238985,137.89212906398666 508.4762063071715,135.58227528621592 C503.89643477517785,133.46878451115356 499.01060462411704,131.84065276746674 494.1209764268088,130.5911937209042 C489.5494921370986,129.42303079081853 484.7983425895454,128.72901670587504 480.092868846116,128.32940935627153 C475.60536293340306,127.94831269270742 471.0427796103935,127.99456837708539 466.5420374583815,128.24908168140132 C462.1869559197273,128.49535799662476 457.82899937290154,129.09804387102452 453.52539777411744,129.83177821488948 C449.3274549737967,130.54749846349387 445.16524712408574,131.53985470476425 441.0374042610671,132.59744545880937 C437.00064353611833,133.6317001435616 433.0110859041544,134.86549995839243 429.03158701021516,136.10731453128153 C425.1428446680425,137.3208082498188 421.29445963898377,138.66457166345458 417.43268055273154,139.96337033308845 C413.66378587915267,141.23092999372784 409.9176672109035,142.56726364712586 406.1395657307219,143.8063895221013 C402.44657844533754,145.01760000050683 398.75357986820103,146.24056722493117 395.0194142560335,147.31437939323143 C391.33823979072156,148.3729532073139 387.6339398479396,149.38572854447455 383.8935454982835,150.20354746924954 C380.1327233999328,151.02583282133435 376.33217737744025,151.74016492879042 372.51576491201314,152.2346922238106 C368.54919690859106,152.74867653840346 364.5420392766035,153.09084389020688 360.54460409173595,153.22908229808866 C356.20754277495456,153.37906558076634 351.8563846353062,153.14259895970451 347.5122754070665,153.0993572954892 C347.4241126555481,154.86114270171208 347.3359498707101,156.6229287737683 347.2477871025319,158.3847145129078 C347.15962433435374,160.14650025204736 347.0714615661755,161.90828599118686 346.9832987979973,163.6700717303264 C346.8951360298191,165.43185746946597 346.8069732616409,167.19364320860552 346.7188104934627,168.95542894774508 C346.63064772528446,170.71721468688457 346.5424849571063,172.47900042602413 346.4543221889281,174.24078616516363 C346.36615942074985,176.00257190430318 346.2779966525717,177.76435764344274 346.18983388439347,179.5261433825823 C346.10167111621524,181.28792912172185 346.0135083480371,183.04971486086134 345.92534557985886,184.8115006000009 C345.83718281168063,186.57328633914045 345.74902004350247,188.33507207827995 345.66085727532425,190.0968578174195 C345.572694507146,191.85864355655906 345.48453172230813,193.62042962861528 345.39636897078964,195.38221503483817",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M508.9771587911764,221.29095612556745 C511.0193462214934,226.16563035999843 513.4286657982045,230.9191753034084 515.1037214685272,235.91497975119177 C516.5841389381975,240.3302814695703 517.6653601907517,244.93261429743671 518.4435782111552,249.5242746240532 C519.1357902384688,253.60848036086423 519.4550986874348,257.8000270530702 519.5150116116783,261.9425779414744 C519.5689450243801,265.67168830493677 519.2819988974145,269.4419311688918 518.7851172219915,273.13925837965286 C518.3303540407443,276.5231792760036 517.5741707328411,279.8949416928839 516.6600770416676,283.18632226280954 C515.8074475557569,286.25638843914373 514.830264050782,289.3370064434339 513.4849476907389,292.2235986184325 C510.97307142075226,297.6132323141641 508.17446789390993,302.9257768515505 505.0884991515781,308.0149998750004 C502.1242899430212,312.9034232551773 498.61293501404253,317.46165626468894 495.3344138380727,322.1565378293129 C492.01366165221054,326.911894705566 488.490287432968,331.53092211704984 485.290679066082,336.3657151976316 C481.82061657775625,341.60918007957645 478.4521487799982,346.9369331037461 475.3254012724374,352.3913117168928 C471.62369496870076,358.8486632127933 468.31201202197974,365.53104121621266 464.80531763218966,372.10090552477334 C466.4834142423207,372.9609326779994 468.1615114457401,373.82096013528667 469.83960835251537,374.6809874405434 C471.51770525929055,375.54101474580006 473.1958021660658,376.4010420510568 474.873899072841,377.26106935631344 C476.55199597961627,378.12109666157016 478.2300928863915,378.9811239668269 479.90818979316674,379.84115127208355 C481.586286699942,380.7011785773402 483.26438360671716,381.56120588259694 484.9424805134924,382.4212331878536 C486.62057742026764,383.2812604931103 488.2986743270429,384.141287798367 489.9767712338181,385.0013151036237 C491.65486814059335,385.8613424088804 493.3329650473686,386.7213697141371 495.0110619541438,387.58139701939376 C496.68915886091906,388.4414243246505 498.36725576769425,389.30145162990715 500.0453526744695,390.16147893516387 C501.7234495812447,391.02150624042054 503.4015467846641,391.8815336977078 505.0796433947952,392.7415608509339 C509.6968755713962,384.0495043403354 514.0710454930024,375.21847231121785 518.9313403937199,366.66539043600477 C523.0278455110863,359.456415592546 527.5022102099217,352.4552274667792 531.9500434490469,345.45539069491826 C534.017308059047,342.20200549446696 536.2763633787295,339.07174963764373 538.4766339410959,335.905724519068 C540.6277418558618,332.8104407810574 542.8358858572673,329.7548638209154 545.0041788804438,326.6714641251594 C547.15757667347,323.60924604444455 549.3422678678407,320.5678425422534 551.4417063897038,317.46887118965554 C553.5552894667346,314.34902112553374 555.6682679993846,311.2230889940541 557.6432436771256,308.0149998750004 C559.6579802413847,304.74232440744584 561.6337244633191,301.43206861434743 563.410843115704,298.0265774298308 C565.2503449185165,294.50154145939996 567.0041713356215,290.90771346846446 568.4931050427174,287.22341841015805 C570.0605878693555,283.3447573222667 571.4861243674375,279.37301526952416 572.5800927169056,275.3377089912374 C573.7536850015083,271.00869497862135 574.7209699850321,266.57665735826635 575.2957869449298,262.1304575374496 C575.9242163157969,257.2695665911506 576.2789457458696,252.3156013783618 576.1898317092,247.41643668989002 C576.0907947905995,241.9717481470301 575.6540360129541,236.46503677243527 574.7313340791195,231.09889784345455 C573.6937361397186,225.0645605443982 572.2618103312825,219.01773394592567 570.3089320894935,213.21500800577883 C568.0990998188157,206.64877629402156 564.9317789286742,200.39968561971511 562.2432025417193,193.9920248877421 C560.0237843487574,195.12948020395424 557.8043655625073,196.26693582422752 555.5849470729013,197.40439129247028 C553.3655285832954,198.54184676071299 551.1461100936895,199.67930222895575 548.9266916040835,200.81675769719845 C546.7072731144775,201.95421316544116 544.4878546248716,203.09166863368387 542.2684361352657,204.22912410192657 C540.0490176456597,205.36657957016934 537.8295991560537,206.50403503841204 535.6101806664478,207.64149050665475 C533.3907621768419,208.7789459748975 531.1713436872359,209.91640144314022 528.95192519763,211.05385691138292 C526.732506708024,212.19131237962563 524.513088218418,213.3287678478684 522.2936697288121,214.4662233161111 C520.0742512392062,215.6036787843538 517.8548327496002,216.74113425259657 515.6354142599943,217.87858972083927 C513.4159957703882,219.01604518908198 511.1965769841381,220.1535008093553 508.9771587911764,221.29095612556745",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M457.78269713247755,384.2644410325494 C455.3835694560932,387.3461771193201 453.2256678029834,390.6533612199639 450.58531348902955,393.50965008193776 C448.24620298496797,396.0400586882252 445.60014229079735,398.3558265809363 442.8443026784311,400.4245334373333 C440.37796310255766,402.275923325162 437.6761975910698,403.88782260163515 434.91877592431047,405.2699403146149 C432.4102899061693,406.5272826356063 429.7347408168967,407.5340120732054 427.0465796237294,408.34291353924687 C424.5516501853265,409.09366914330946 421.95327371270594,409.5992556958844 419.36950402959974,409.948911524927 C416.92360630540907,410.27990944710916 414.42122824397575,410.5124827683465 411.95757740183865,410.3848747929211 C407.2886305109126,410.14304066207364 402.58286888050054,409.64433224232687 397.9717108304102,408.8405852061084 C393.56188426582196,408.07193121658497 389.2479183944508,406.748399891424 384.89462355780284,405.6676717156956 C380.6684359884157,404.6184985828079 376.49458555147123,403.3239228846492 372.23326361230494,402.4508812802601 C367.92498778447526,401.568219961877 363.5630436757844,400.7486724769052 359.185830256815,400.4005629473789 C354.2769214377175,400.0101689281844 349.31187435102856,400.29043473480715 344.3748968981042,400.23537063409765 C344.51474127234786,403.0299269908505 344.65458567991095,405.82448401343686 344.79443007081426,408.6190407031065 C344.9342744617176,411.4135973927761 345.074118852621,414.20815408244573 345.21396324352435,417.00271077211534 C345.3538076344277,419.79726746178494 345.4936520253311,422.59182415145455 345.63349641623444,425.38638084112415 C345.7733408071378,428.1809375307938 345.9131852147009,430.97549455338014 346.0530295889445,433.770050910133 C352.7680616818576,433.76329065067074 359.50701025759844,433.3666216031955 366.1981268676833,433.7497701307394 C372.0710059953187,434.0860645224417 377.9375098201236,434.9556419541974 383.7450168021053,435.9283796678716 C389.38214451386085,436.8725794319072 394.93909701720673,438.29719363783204 400.532030948895,439.5005825638686 C403.36012800841314,440.1090826328393 406.173294263215,440.7895171835512 409.0081097757245,441.36404665289336 C411.88919728941346,441.94795402642916 414.7751562189011,442.5298306888758 417.6797400274905,442.97589309250236 C420.64830493330453,443.43178119367985 423.6343645262575,443.84459431095274 426.62755591893483,444.0698981673056 C429.71131274408947,444.3020190755982 432.82187837889313,444.4442522684433 435.91058468098635,444.34816738643894 C439.13195019412495,444.24795568129457 442.3802868898266,444.0050455685966 445.55777136463024,443.4810084058596 C448.92782475117724,442.92521238892795 452.3093833143293,442.17102469040515 455.55319826503813,441.108667847433 C459.061783033746,439.9595982812514 462.54665627251995,438.560707997751 465.81497052288046,436.8467291783983 C469.41833863499835,434.9570404430449 472.9441888109333,432.77872749813207 476.1682453524732,430.2976651833146 C479.77713583990135,427.52045514642595 483.24169929833863,424.4332855726381 486.31381160978447,421.07191212327984 C489.78401480651223,417.2749647115918 492.63473199195664,412.9057721776162 495.795191876994,408.8227026001756 C494.21133820929026,407.7994418824106 492.6274839816176,406.7761808028734 491.0436300339294,405.7529199042223 C489.4597760862413,404.7296590055712 487.87592213855305,403.7063981069201 486.2920681908649,402.68313720826905 C484.7082142431767,401.65987630961797 483.1243602954885,400.63661541096684 481.5405063478003,399.61335451231577 C479.95665240011215,398.5900936136647 478.3727984524239,397.56683271501356 476.78894450473575,396.5435718163625 C475.2050905570476,395.5203109177114 473.62123660935936,394.49705001906034 472.03738266167124,393.47378912040926 C470.453528713983,392.45052822175813 468.86967476629485,391.42726732310706 467.2858208186067,390.40400642445593 C465.70196687091845,389.38074552580485 464.1181129232303,388.3574846271538 462.5342589755421,387.3342237285027 C460.9504050278539,386.3109628298516 459.36655080018124,385.2877017503144 457.78269713247755,384.2644410325494",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M335.1451670984826,400.23537063409765 C332.59674183260694,399.92963647695206 330.0167368211909,399.78880742064456 327.49989030797536,399.31816804354526 C325.27767414456457,398.90262326342616 323.01935404686003,398.4219945964808 320.9279790686037,397.5768181624424 C317.41898697334966,396.1587475357162 313.87078926978927,394.5709166905174 310.6987890874443,392.52842686125155 C308.0747665981607,390.8387865907505 305.7177237719725,388.62940414215745 303.5399110537181,386.3804278631416 C301.5970188541777,384.37404851159044 299.8790814339724,382.10402385947447 298.3366743340598,379.76235996955063 C291.41344582504644,369.2515977964727 284.87422741784655,358.4695528241973 278.14300422694015,347.8231496741364 C275.4862172398348,349.5395871296973 272.8294296927604,351.25602494703037 270.1726424256706,352.97246258347735 C267.51585515858073,354.68890021992434 264.85906761150636,356.4053380372574 262.202280624401,358.1217754928183 C266.70484419581715,365.9594145865043 271.4486980083722,373.67412286672175 275.7099718367814,381.6346936409775 C277.5212074114054,385.0182990043593 278.8307132779025,388.656467726021 280.4198088335004,392.15430390573096 C281.9933853998663,395.6179804769663 283.40670201447824,399.17015596442957 285.19798820267295,402.51923189381324 C287.0636906609173,406.007440107262 288.9651564529579,409.56309789823155 291.3907747728175,412.6661563342283 C294.0732143560419,416.0977624981601 297.2666838056424,419.22278678283385 300.52216191192497,422.1232256935988 C302.36411840094695,423.7643002449482 304.53068871950217,425.07471531568274 306.68307855873104,426.29069672057113 C309.07264061099676,427.64066732925187 311.57878520924925,428.8569658036421 314.14801758640874,429.82108173430606 C317.03547954715845,430.9046147382856 320.0317282081762,431.8160371870378 323.0531615724587,432.43364352450175 C326.47140048192074,433.1323602456468 329.9957437932031,433.32458182401786 333.4670344076423,433.770050910133 C333.60687878188594,430.97549455338014 333.746723189449,428.1809375307938 333.88656758035233,425.38638084112415 C334.0264119712557,422.59182415145455 334.16625636215906,419.79726746178494 334.3061007530624,417.00271077211534 C334.4459451439658,414.20815408244573 334.58578953486915,411.4135973927761 334.7256339257725,408.6190407031065 C334.8654783166759,405.82448401343686 335.00532272423897,403.0299269908505 335.1451670984826,400.23537063409765",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M274.47664910890865,341.4728363311157 C273.0979776123658,337.8948650698314 271.3863856881263,334.40736501891 270.34063425972664,330.7389216141385 C269.51930672219726,327.85774592899725 268.91338001676746,324.81318006030517 268.87541221112133,321.82397906137743 C268.8171695305963,317.23853948059246 269.21678268898467,312.5353405771173 270.0520028012131,308.0149998750004 C270.85866691231354,303.64920867701875 272.2828688291466,299.35415063432816 273.801064881108,295.1655833610817 C275.92303726303464,289.3112511342339 278.5820271567302,283.64606172896816 280.97250810287727,277.8863013747175 C279.02375070133087,276.8875601399984 277.0749927064961,275.88881860121813 275.1262350083055,274.8900772144684 C273.1774773101149,273.8913358277187 271.22871931528016,272.89259428893837 269.2799619137337,271.8938530542193 C266.1897205477511,278.75550435827995 262.9411098572416,285.5508903160482 260.00923740514526,292.4788078781985 C257.8456587662067,297.5912725896419 255.79237617325504,302.7700466677644 253.9936086406292,308.0149998750004 C253.10378987328903,310.6095862865121 252.38950870104523,313.29618994881736 251.94347850524724,315.9974267344417 C251.43932668722525,319.05065821789293 251.0531197626009,322.19140893269736 251.14306259916924,325.27840468222723 C251.25287165282583,329.0472438119585 251.59744190648803,332.91977221356865 252.54273417592202,336.564931372225 C253.74555961496168,341.20316899158615 255.90585532456623,345.60737411401914 257.5874157245902,350.1285950162798 C260.4022876586657,348.6859687207831 263.2171601860297,347.24334212122506 266.0320324167494,345.8007156736977 C268.84690464746916,344.35808922617036 271.6617771748331,342.9154626266124 274.47664910890865,341.4728363311157",role:"node",style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M347.5122754070665,153.0993572954892 C351.8018369342646,153.5488240936553 356.12520077782114,153.78567583793148 360.38096098321597,154.44775779419842 C364.13700960075704,155.03209805222878 367.9218147835351,155.71071388339715 371.54770187587417,156.83862393838103 C377.61362418797296,158.7255593542751 383.70369596754745,160.81851213587038 389.45638919652947,163.4922942068323 C394.15386787345597,165.67562534672606 398.6132073360979,168.48671359324527 402.8982175935998,171.40996357094815 C406.68279143303624,173.99181395797552 410.33112914820236,176.85987120924187 413.6651414873445,180.00759530102312 C420.5265646035822,186.48563576695722 427.07871949126627,193.34540777984319 433.48452395973925,200.28725724409423 C437.4745860352889,204.6112122473736 441.2577555032914,209.14770215582786 444.8527411194125,213.80500870361436 C449.35714656087083,219.6404693136136 453.47271198954115,225.7787089833622 457.78269713247755,231.76555871745137 C459.5198269886672,230.64327275142983 461.2569574048258,229.5209864236361 462.994087541,228.39870027672845 C464.73121767717413,227.2764141298208 466.46834781334826,226.1541279829131 468.2054779495224,225.03184183600547 C469.9426080856965,223.90955568909783 471.67973822187065,222.7872695421902 473.4168683580448,221.66498339528255 C475.15399849421897,220.5426972483749 476.89112863039304,219.42041110146727 478.6282587665672,218.29812495455963 C480.36538890274136,217.17583880765199 482.1025190389155,216.05355266074434 483.8396491750897,214.93126651383665 C485.57677931126375,213.808980366929 487.31390944743794,212.68669422002137 489.051039583612,211.56440807311373 C490.7881697197862,210.44212192620608 492.5252998559603,209.31983577929844 494.26242999213446,208.1975496323908 C495.9995601283086,207.0752634854831 497.7366905444672,205.95297715768942 499.4738204006569,204.83069119166782 C493.5396410513108,196.8201800113456 487.9670605990374,188.5107238515168 481.67128175736093,180.79915684716633 C476.6805730606518,174.68614279732424 471.1654482069272,168.97309227137214 465.61435778550003,163.3569480290903 C461.0127424622827,158.7014058849868 456.16243355353845,154.26909922174855 451.21316452342757,149.98409768801037 C446.75357069989536,146.1230494690866 442.1561157877005,142.3875500498374 437.3877692245708,138.9187987711045 C432.5738974032854,135.41692997556538 427.6300372881253,132.02541781033585 422.4665093701823,129.0722374651943 C416.63243615426313,125.73555165131523 410.62561935032807,122.55309946749458 404.3949658229843,120.04920029404263 C396.76965092696935,116.98483159152192 388.8264419444978,114.55955370805236 380.89860410010607,112.36743383727651 C376.1648973453876,111.05852050641363 371.27524228178436,110.24431347333723 366.4103320256538,109.54610068912632 C360.90040972346753,108.75531566147919 355.3195146269407,108.44899379803041 349.77410642515565,107.90044040170244 C349.6798634827283,109.78372827269351 349.5856205069815,111.66701680951797 349.4913775478945,113.55030501342577 C349.39713458880743,115.43359321733351 349.3028916297204,117.3168814212413 349.20864867063335,119.2001696251491 C349.1144057115463,121.0834578290569 349.02016275245927,122.96674603296469 348.9259197933722,124.85003423687249 C348.8316768342852,126.73332244078028 348.7374338751981,128.61661064468802 348.64319091611105,130.49989884859582 C348.54894795702404,132.38318705250356 348.454704997937,134.26647525641135 348.36046203884996,136.14976346031915 C348.2662190797629,138.03305166422695 348.1719761206758,139.91633986813474 348.0777331615888,141.79962807204254 C347.98349020250174,143.68291627595033 347.88924724341473,145.56620447985807 347.79500428432766,147.44949268376587 C347.7007613252406,149.3327808876736 347.60651834949385,151.21606942449813 347.5122754070665,153.0993572954892",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M464.80531763218966,243.92909422522746 C466.31505021364137,247.531041343501 468.0953779289689,251.04360021509365 469.33451576310557,254.73493650231188 C470.42963671096084,257.99725291485794 471.2304595669088,261.3974580683331 471.8080939781654,264.79005232452033 C472.3218504155098,267.8074749441705 472.5608164120681,270.9041203510052 472.6086883089086,273.9649871298242 C472.6517764788098,276.7199886341524 472.61325961563574,279.5399292943665 472.0809741783904,282.2376571739619 C471.14163023613196,286.9984380712834 469.95590471916734,291.8245448703909 468.19380017039714,296.3405134605747 C466.6031819000109,300.4169924374038 464.29178204794204,304.2516426995608 462.02280572092116,308.0149998750004 C459.84312178993565,311.6302553821546 457.2597945083436,315.00334031664556 454.84781939637793,318.476351508356 C452.40309621085555,321.9965167628946 449.6800483615629,325.3374314599607 447.452710828457,328.99452921374746 C442.1727827835524,337.66371953904587 437.3682518856184,346.63498719104155 432.3260226623465,355.4552157456115 C435.0326302798559,356.842356408511 437.73923849065363,358.2294973754718 440.44584640480724,359.61663819040194 C443.15245431896085,361.0037790053321 445.85906223311446,362.3909198202623 448.56567014726807,363.77806063519245 C451.2722780614217,365.1652014501226 453.9788859755753,366.55234226505274 456.68549388972883,367.9394830799829 C459.39210180388244,369.32662389491304 462.09871001468025,370.71376486187376 464.80531763218966,372.10090552477334 C468.31201202197974,365.53104121621266 471.62369496870076,358.8486632127933 475.3254012724374,352.3913117168928 C478.4521487799982,346.9369331037461 481.82061657775625,341.60918007957645 485.290679066082,336.3657151976316 C488.490287432968,331.53092211704984 492.01366165221054,326.911894705566 495.3344138380727,322.1565378293129 C498.61293501404253,317.46165626468894 502.1242899430212,312.9034232551773 505.0884991515781,308.0149998750004 C508.17446789390993,302.9257768515505 510.97307142075226,297.6132323141641 513.4849476907389,292.2235986184325 C514.830264050782,289.3370064434339 515.8074475557569,286.25638843914373 516.6600770416676,283.18632226280954 C517.5741707328411,279.8949416928839 518.3303540407443,276.5231792760036 518.7851172219915,273.13925837965286 C519.2819988974145,269.4419311688918 519.5689450243801,265.67168830493677 519.5150116116783,261.9425779414744 C519.4550986874348,257.8000270530702 519.1357902384688,253.60848036086423 518.4435782111552,249.5242746240532 C517.6653601907517,244.93261429743671 516.5841389381975,240.3302814695703 515.1037214685272,235.91497975119177 C513.4286657982045,230.9191753034084 511.0193462214934,226.16563035999843 508.9771587911764,221.29095612556745 C507.13666570619614,222.23421172768934 505.29617202792747,223.17746763387242 503.455678646303,224.12072338802494 C501.6151852646786,225.06397914217746 499.7746918830542,226.00723489632992 497.9341985014297,226.95049065048244 C496.09370511980524,227.89374640463495 494.2532117381808,228.8370021587874 492.4127183565564,229.78025791293993 C490.57222497493194,230.72351366709245 488.7317315933075,231.66676942124496 486.891238211683,232.61002517539748 C485.05074483005853,233.55328092954994 483.2102514484341,234.49653668370246 481.36975806680965,235.43979243785498 C479.52926468518524,236.3830481920075 477.68877130356077,237.32630394615995 475.8482779219363,238.26955970031247 C474.0077845403119,239.212815454465 472.1672911586875,240.1560712086175 470.326797777063,241.09932696276996 C468.48630439543854,242.04258271692248 466.6458107171699,242.98583862310556 464.80531763218966,243.92909422522746",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M427.1274594352868,364.459391381238 C425.34900926800384,366.73876902234724 423.7511043323974,369.1876486339733 421.79210831829096,371.29752509297805 C420.05611026230065,373.16722845369816 418.08997573210564,374.8759470598343 416.0424772249966,376.39813084041253 C414.2087326398168,377.76140229364796 412.1986789016632,378.9443350793779 410.1483790414244,379.95389079441895 C408.2809181580353,380.8734176616849 406.32009781162924,381.75465451642305 404.28919499411313,382.18537858733356 C400.6215860928697,382.96322350577395 396.79835631975857,383.56133861525666 393.05284388514576,383.5795977624718 C389.58303921409606,383.59651285096834 386.07188143555646,382.9373930998552 382.6432436771255,382.29090129446865 C379.36496767510283,381.67276116989837 376.16437323767207,380.6388572784326 372.932102603785,379.7857019726012 C369.80655176295375,378.9607152726805 366.72361848290547,377.94903813559546 363.56977925297065,377.2564752772123 C360.4048812842359,376.56148399074664 357.19788534907383,375.90804233828675 353.9758910077763,375.6230395380548 C350.3861382489838,375.3055065196746 346.74832197110214,375.5069250549144 343.1345379527005,375.44886782137587 C343.2379011814911,377.5144093895193 343.3412644436011,379.5799516234962 343.44462768905146,381.6454935245563 C343.54799093450174,383.7110354256165 343.6513541799521,385.7765773266766 343.75471742540236,387.84211922773676 C343.8580806708527,389.9076611287969 343.961443916303,391.9732030298571 344.06480716175327,394.03874493091723 C344.1681704072036,396.10428683197733 344.2715336693136,398.1698290659542 344.3748968981042,400.23537063409765 C349.31187435102856,400.29043473480715 354.2769214377175,400.01016892818444 359.185830256815,400.40056294737894 C363.5630436757844,400.74867247690526 367.92498778447526,401.568219961877 372.23326361230494,402.4508812802601 C376.49458555147123,403.3239228846492 380.6684359884157,404.6184985828079 384.89462355780284,405.6676717156956 C389.2479183944508,406.748399891424 393.56188426582196,408.07193121658497 397.9717108304102,408.8405852061084 C402.58286888050054,409.64433224232687 407.2886305109126,410.14304066207364 411.95757740183865,410.3848747929211 C414.42122824397575,410.5124827683465 416.92360630540907,410.27990944710916 419.36950402959974,409.948911524927 C421.95327371270594,409.5992556958844 424.5516501853265,409.09366914330946 427.0465796237294,408.34291353924687 C429.7347408168967,407.5340120732054 432.4102899061693,406.5272826356063 434.91877592431047,405.2699403146149 C437.6761975910698,403.88782260163515 440.37796310255766,402.275923325162 442.8443026784311,400.4245334373333 C445.60014229079735,398.3558265809363 448.24620298496797,396.0400586882252 450.58531348902955,393.50965008193776 C453.2256678029834,390.6533612199639 455.3835694560932,387.3461771193201 457.78269713247755,384.2644410325494 C455.2280942710295,382.6140204091596 452.67349084961245,380.9635994239975 450.11888770817984,379.31317861972155 C447.56428456674735,377.6627578154456 445.00968142531474,376.0123370111696 442.4550782838822,374.3619162068937 C439.90047514244964,372.71149540261774 437.3458720010171,371.06107459834175 434.79126885958453,369.41065379406587 C432.236665718152,367.76023298978987 429.68206229673495,366.1098120046278 427.1274594352868,364.459391381238",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M336.3855260438863,375.44886782137587 C332.9008170928522,374.89306755082816 329.3311929757412,374.6521485916139 325.9313982032661,373.7814668522267 C323.2611825502517,373.0976291017459 320.55688125427287,372.1603758399608 318.1754947674178,370.7853093517719 C314.5216569961676,368.6755006750796 310.99948518540134,366.1250338872145 307.8257254289503,363.32684135758313 C304.7694702593626,360.6322484959764 302.08621237651874,357.4637558395787 299.4854499893015,354.3069531780575 C295.87060049951157,349.9192526536057 292.61440966051805,345.2312053267009 289.17888979792883,340.6933317996643 C287.33957581608183,341.8816345978569 285.5002612742659,343.06993775782166 283.66094701243446,344.25824073690035 C281.82163275060304,345.44654371597903 279.9823182087871,346.63484687594377 278.14300422694015,347.8231496741364 C284.87422741784655,358.4695528241973 291.41344582504644,369.2515977964727 298.3366743340598,379.76235996955063 C299.8790814339724,382.10402385947447 301.59701885417763,384.37404851159044 303.539911053718,386.3804278631416 C305.7177237719725,388.62940414215745 308.0747665981607,390.8387865907505 310.6987890874443,392.52842686125155 C313.87078926978927,394.5709166905174 317.41898697334966,396.1587475357162 320.9279790686037,397.5768181624424 C323.01935404686003,398.4219945964808 325.27767414456457,398.90262326342616 327.49989030797536,399.31816804354526 C330.0167368211909,399.7888074206446 332.59674183260694,399.9296364769521 335.1451670984826,400.23537063409765 C335.24853032727316,398.1698290659542 335.3518935893832,396.10428683197733 335.4552568348335,394.03874493091723 C335.55862008028384,391.9732030298571 335.6619833257341,389.9076611287969 335.7653465711844,387.84211922773676 C335.86870981663475,385.7765773266766 335.97207306208503,383.7110354256165 336.07543630753537,381.6454935245563 C336.17879955298565,379.5799516234962 336.2821628150957,377.5144093895193 336.3855260438863,375.44886782137587",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"path",d:"M286.16919529805216,335.4803880106174 C285.0155021133757,332.5504319754631 283.6126060443143,329.69250177030074 282.7081153776445,326.69051897468864 C281.9975009009625,324.33200659648315 281.4523941310872,321.8547692275673 281.32387986799677,319.39890248916464 C281.12663397787287,315.6295961943379 281.2319936694172,311.76080422633805 281.73083491800145,308.0149998750004 C282.2171242034145,304.36344835138686 283.1307514754358,300.7158121226426 284.27927146998877,297.20683486431113 C285.9093767342464,292.2265103352701 288.1375644086868,287.43367431997893 290.06671069443337,282.54709451288284 C288.5510105591515,281.77029580855253 287.03530983058135,280.9934968001611 285.51960939865535,280.21669794380017 C284.0039089667293,279.4398990874393 282.48820823815913,278.6631000790478 280.97250810287727,277.8863013747175 C278.5820271567302,283.64606172896816 275.92303726303464,289.3112511342339 273.801064881108,295.1655833610817 C272.2828688291466,299.35415063432816 270.85866691231354,303.64920867701875 270.0520028012131,308.0149998750004 C269.21678268898467,312.5353405771173 268.8171695305963,317.23853948059246 268.87541221112133,321.82397906137743 C268.91338001676746,324.81318006030517 269.51930672219726,327.85774592899725 270.34063425972664,330.7389216141385 C271.3863856881263,334.40736501891 273.0979776123658,337.8948650698314 274.47664910890865,341.4728363311157 C276.42540651045505,340.4740950963965 278.37416450528985,339.47535355761624 280.3229222034804,338.47661217086653 C282.271679901671,337.4778707841168 284.2204378965058,336.4791292453365 286.16919529805216,335.4803880106174",role:"node",style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:.8,mixBlendMode:"normal"}},{kind:"rect",x:659.7000339982667,y:8.389921756510489,w:10,h:10,rx:0,ry:0,style:{fill:"#4190c5",stroke:"#4190c5",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:16.38992175651049,text:"Salmon",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:26.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#f2cf57",stroke:"#f2cf57",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:34.38992175651049,text:"Perch",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:44.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#a181c8",stroke:"#a181c8",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:52.38992175651049,text:"Bass",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:62.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#ff9666",stroke:"#ff9666",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:70.38992175651049,text:"Catfish",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}},{kind:"rect",x:659.7000339982667,y:80.38992175651049,w:10,h:10,rx:0,ry:0,style:{fill:"#43b780",stroke:"#43b780",strokeWidth:0,opacity:1},role:"node"},{kind:"text",x:674.7000339982667,y:88.38992175651049,text:"Trout",fontSize:10,fontFamily:"system-ui, sans-serif",textAnchor:"start",dominantBaseline:"auto",role:"node",style:{fill:"gray",strokeWidth:0}}]}},{key:"treemap",label:"Fare circle treemap",source:"https://gofish.graphics/js/examples/titanic-fare-circle-treemap.html",blurb:"GoFish's titanic fare circle treemap, verbatim: faceted by passenger class (facet by pclass, dir x), then a squarify-circle treemap per facet sizing each passenger by fare (sort desc, so fares run large→small) and colouring by survival. Three blocks — big first-class circles, then a field of tiny third-class ones. Every circle is a data node carrying its passenger; the facet labels/legend are chrome.",doc:S},{key:"bottle",label:"Bottle fill pictorial",source:"https://gofish.graphics/js/examples/bottle-fill-chart.html",blurb:"GoFish's real bottle-fill technique: a fill rect sized by amount is color-composited *inside* the bottle silhouette via paint({ blendMode: 'color' }), so the liquid reads as rising within the bottle (not a bar behind a picture). Bakes to a composite item; the adapter harvests the composite's datum so each bottle keeps hit-testing and tooltips.",doc:A},{key:"python",label:"Python memory diagram",source:"https://gofish.graphics/js/examples/python-tutor-memory-diagram.html",blurb:"A Python Tutor runtime memory diagram: a Global Frame of variables (c, d → pointers; x = 5) whose arrows fan into a heap of tuples, with tuple cells pointing on to further tuples. NOTE: GoFish's own example is not a portable spec — it relies on ~250 lines of unpublished story helpers (globalFrame/heap/tuple/Arrow). This is a best-effort reconstruction from GoFish primitives only (rect/text/Arrow/ref + .name()). It is also vertically flipped vs the live example: a free-space Layer baked through toDisplayList orients y-down differently than .render() (GoFish issue #143/#16). See gofish-displaylist-findings.md §6.",doc:j}],M=[{name:"Classic",tapioca:95,tea:470,ice:60},{name:"Extra Boba",tapioca:240,tea:360,ice:45},{name:"Light Ice",tapioca:95,tea:500,ice:12},{name:"Mega",tapioca:150,tea:660,ice:120}],B="#111111",W=function(){const e=.62,t=710,r=1180/M.length,n=[];return M.forEach((o,i)=>{const s=r*(i+.5),a=o.tapioca*e,l=o.tea*e,c=o.ice*e,d=a+l+c+70,u=t-d,p=e=>(150+e/d*70)/2,y=(e,r,n)=>{const o=p(e),i=p(r);return{kind:"path",d:`M ${s-o} ${t-e} L ${s+o} ${t-e} L ${s+i} ${t-r} L ${s-i} ${t-r} Z`,style:{fill:n}}};n.push({...y(a,a+l,"#cda86a"),datum:[{name:o.name,component:"tea",volume:o.tea}],role:"node",id:o.name+"-tea"}),n.push({...y(a+l,a+l+c,"#dcebf1"),datum:[{name:o.name,component:"ice",volume:o.ice}],role:"node",id:o.name+"-ice"});const h=13,f=Math.max(1,Math.round(a/26));for(let e=0;f>e;e++){const r=t-(e*h*2+h),o=p(e*h*2+h)-6,i=Math.max(1,Math.floor(2*o/26)),a=i*h*2;for(let e=0;i>e;e++)n.push({kind:"ellipse",cx:s-a/2+h+e*h*2,cy:r,rx:h,ry:h,style:{fill:"#241a12"},role:"overlay"})}n.push({kind:"rect",x:s-p(0),y:t-a,w:2*p(0),h:a,style:{fill:"rgba(0,0,0,0)"},datum:[{name:o.name,component:"tapioca",volume:o.tapioca}],role:"node",id:o.name+"-tapioca"});const m=Math.max(1,Math.round(c/34));for(let e=0;m>e;e++){const r=t-(a+l)-40*e*.78-20,o=p(a+l+40*e)-10,i=Math.max(1,Math.floor(2*o/40)),c=40*i;for(let e=0;i>e;e++)n.push({kind:"rect",x:s-c/2+4+40*e,y:r-20,w:33,h:33,rx:6,ry:6,style:{fill:"#cfe6ee",stroke:"#bcd9e3",strokeWidth:1},role:"overlay"})}const b=p(0),g=p(d);n.push({kind:"path",d:`M ${s-b} 710 L ${s+b} 710 L ${s+g} ${u} L ${s-g} ${u} Z`,style:{fill:"none",stroke:B,strokeWidth:4},role:"overlay"}),n.push({kind:"rect",x:s-g-10,y:u-4,w:2*(g+10),h:8,style:{fill:B},role:"overlay"});const v=s+22,x=s-14,k=u-64;n.push({kind:"path",d:`M ${v-13} ${k} L ${v+13} ${k} L ${x+13} 686 L ${x-13} 686 Z`,style:{fill:"#5b86b8",opacity:.85},role:"overlay"}),n.push({kind:"text",x:s,y:750,text:o.name,fontSize:26,fontFamily:"system-ui, sans-serif",textAnchor:"middle",style:{fill:"#444444"},role:"overlay"})}),{irVersion:0,ir:"gofish-display-list",viewport:{w:1180,h:820},items:n}}(),P=w,I=S,L=A,R=W,T=j,F=$.map(e=>({key:e.key,label:e.label,doc:e.doc,blurb:e.blurb,source:e.source})),E={key:"boba",label:"Boba volume cups (hand-written)",doc:W,blurb:"A pictorial bubble-tea chart written by hand — no gofish-graphics, no GoFish layout solve. Trapezoid cup outlines, lid bars, tilted straws, packed tapioca pearls, tan tea, and ice cubes are all computed in plain arithmetic and emitted as path/ellipse/rect/text items, proving the render IR is an open format any host can produce and still get Semiotic's hit-testing, tooltips, SSR, and a11y. The three volume bands per drink are data nodes; the cup, straw, pearls, and labels are chrome.",source:"https://observablehq.com/@kristw/boba-science",handWritten:!0},N=F.findIndex(e=>"bottle"===e.key),O=[...F.slice(0,N+1),E,...F.slice(N+1)];function D(e,t){const r=e.length,n=t.length,o=Array(n+1);for(let e=0;n>=e;e++)o[e]=e;for(let i=1;r>=i;i++){let r=o[0];o[0]=i;for(let s=1;n>=s;s++){const n=o[s];o[s]=e[i-1]===t[s-1]?r:1+Math.min(r,o[s],o[s-1]),r=n}}return o[n]}function z(e,t,r=3){let n,o=r+1;for(const r of t){const t=D(e.toLowerCase(),r.toLowerCase());o>t&&(o=t,n=r)}return o>r?void 0:n}function q(e){return e.length>3?[e[0],e[Math.floor(e.length/2)],e[e.length-1]]:[...e]}function _(e,t){if(0===t.length)return null;const r=e.toLowerCase();return t.find(e=>e.toLowerCase().includes(r)||r.includes(e.toLowerCase()))||(z(e,t,3)??null)}var H={BarChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},valueExtent:{type:"array"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]},regression:{type:["boolean","string","object"]}}},StackedBarChart:{required:["data","stackBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},stackBy:{type:["string","function"]},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},normalize:{type:"boolean"},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]}}},GroupedBarChart:{required:["data","groupBy"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},groupBy:{type:["string","function"]},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},barPadding:{type:"number"},roundedTop:{type:"number"},styleRules:{type:"array"},gradientFill:{type:["boolean","object"]}}},SwarmPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},symbolBy:{type:["string","function"]},symbolMap:{type:"object"},pointRadius:{type:"number"},pointOpacity:{type:"number"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},BoxPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},showOutliers:{type:"boolean"},outlierRadius:{type:"number"},categoryPadding:{type:"number"}}},Histogram:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},relative:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},ViolinPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},bins:{type:"number"},curve:{type:"string"},showIQR:{type:"boolean"},categoryPadding:{type:"number"},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]}}},RidgelinePlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},bins:{type:"number"},amplitude:{type:"number"},categoryPadding:{type:"number"}}},DotPlot:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},sort:{type:["boolean","string","function"]},dotRadius:{type:"number"},categoryPadding:{type:"number"},regression:{type:["boolean","string","object"]}}},PieChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},startAngle:{type:"number"},cornerRadius:{type:"number"}}},DonutChart:{required:["data"],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},innerRadius:{type:"number"},centerContent:{type:["object","string","number"]},startAngle:{type:"number"},cornerRadius:{type:"number"}}},GaugeChart:{required:["value"],dataShape:"none",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},value:{type:"number"},min:{type:"number"},max:{type:"number"},thresholds:{type:"array"},gradientFill:{type:"object"},arcWidth:{type:"number"},cornerRadius:{type:"number"},sweep:{type:"number"},fillZones:{type:"boolean"},showNeedle:{type:"boolean"},needleColor:{type:"string"},color:{type:"string"},valueFormat:{type:"function"},centerContent:{type:["object","string","number","function"]},showScaleLabels:{type:"boolean"},backgroundColor:{type:"string"}}},FunnelChart:{required:["data"],dataShape:"array",dataAccessors:["stepAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},stepAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},categoryAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},connectorOpacity:{type:"number"},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},SwimlaneChart:{required:["subcategoryAccessor"],dataShape:"array",dataAccessors:["categoryAccessor","subcategoryAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},categoryAccessor:{type:["string","function"]},subcategoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},orientation:{type:"string",enum:["horizontal","vertical"]},barPadding:{type:"number"},roundedTop:{type:"number"},trackFill:{type:["string","object"]},brush:{type:"boolean"},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},showCategoryTicks:{type:"boolean"},responsiveWidth:{type:"boolean"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},LikertChart:{required:[],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor","levelAccessor","countAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},categoryLabel:{type:"string"},valueLabel:{type:"string"},valueFormat:{type:"function"},categoryFormat:{type:"function"},data:{type:"array"},levels:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},levelAccessor:{type:["string","function"]},countAccessor:{type:["string","function"]},orientation:{type:"string",enum:["vertical","horizontal"]},barPadding:{type:"number"}}},LineChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},lineBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},fillArea:{type:"boolean"},areaOpacity:{type:"number"},forecast:{type:"object"},anomaly:{type:"object"},band:{type:["object","array"]}}},AreaChart:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},gradientFill:{type:["boolean","object"]},semanticGradient:{type:"array"},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},forecast:{type:"object"},anomaly:{type:"object"},band:{type:["object","array"]}}},DifferenceChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","seriesAAccessor","seriesBAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},seriesAAccessor:{type:["string","function"]},seriesBAccessor:{type:["string","function"]},seriesALabel:{type:"string"},seriesBLabel:{type:"string"},seriesAColor:{type:"string"},seriesBColor:{type:"string"},showLines:{type:"boolean"},lineWidth:{type:"number"},showPoints:{type:"boolean"},pointRadius:{type:"number"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},areaOpacity:{type:"number"},gradientFill:{type:["boolean","object"]},xExtent:{type:"array"},yExtent:{type:"array"},pointIdAccessor:{type:["string","function"]},windowSize:{type:"number"}}},StackedAreaChart:{required:["data","areaBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},areaBy:{type:["string","function"]},lineDataAccessor:{type:"string"},curve:{type:"string",enum:["linear","monotoneX","monotoneY","step","stepAfter","stepBefore","basis","cardinal","catmullRom"]},areaOpacity:{type:"number"},showLine:{type:"boolean"},lineWidth:{type:"number"},normalize:{type:"boolean"}}},Scatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},symbolBy:{type:["string","function"]},symbolMap:{type:"object"},pointRadius:{type:"number"},pointOpacity:{type:"number"},regression:{type:["boolean","string","object"]},forecast:{type:"object"},anomaly:{type:"object"}}},BubbleChart:{required:["data","sizeBy"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},sizeBy:{type:["string","function"]},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeRange:{type:"array"},bubbleOpacity:{type:"number"},bubbleStrokeWidth:{type:"number"},bubbleStrokeColor:{type:"string"},regression:{type:["boolean","string","object"]}}},Heatmap:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor","valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:"string",enum:["blues","reds","greens","viridis","custom"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},customColorScale:{type:["object","function"]},showValues:{type:"boolean"},valueFormat:{type:"function"},cellBorderColor:{type:"string"},cellBorderWidth:{type:"number"},legendPosition:{type:"string",enum:["right","left","top","bottom"]}}},QuadrantChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},xCenter:{type:"number"},yCenter:{type:"number"},quadrants:{type:"object"},centerlineStyle:{type:"object"},showQuadrantLabels:{type:"boolean"},quadrantLabelSize:{type:"number"},sizeBy:{type:["string","function"]},sizeRange:{type:"array"},pointRadius:{type:"number"},pointOpacity:{type:"number"}}},MultiAxisLineChart:{required:["series"],dataShape:"array",dataAccessors:["xAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},series:{type:"array"},curve:{type:"string"},lineWidth:{type:"number"}}},CandlestickChart:{required:["highAccessor","lowAccessor"],dataShape:"array",dataAccessors:["xAccessor","highAccessor","lowAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},data:{type:"array"},xAccessor:{type:["string","function"]},highAccessor:{type:["string","function"]},lowAccessor:{type:["string","function"]},openAccessor:{type:["string","function"]},closeAccessor:{type:["string","function"]},candlestickStyle:{type:"object"},mode:{type:"string",enum:["primary","context","sparkline"]}}},ConnectedScatterplot:{required:["data"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},xLabel:{type:"string"},yLabel:{type:"string"},xFormat:{type:"function"},yFormat:{type:"function"},xScaleType:{type:"string",enum:["linear","log","time"]},yScaleType:{type:"string",enum:["linear","log","time"]},styleRules:{type:"array"},data:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},orderAccessor:{type:["string","function"]},orderLabel:{type:"string"},pointRadius:{type:"number"},pointIdAccessor:{type:["string","function"]},regression:{type:["boolean","string","object"]},forecast:{type:"object"},anomaly:{type:"object"}}},ScatterplotMatrix:{required:["data","fields"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"},fields:{type:"array"}}},MinimapChart:{required:["data"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"array"}}},ForceDirectedGraph:{required:["nodes","edges"],dataShape:"network",dataAccessors:["nodeIDAccessor","sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},nodes:{type:"array"},edges:{type:"array"},nodeIDAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},nodeLabel:{type:["string","function"]},nodeSize:{type:["number","string","function"]},nodeSizeRange:{type:"array"},edgeWidth:{type:["number","string","function"]},edgeColor:{type:"string"},edgeOpacity:{type:"number"},iterations:{type:"number"},forceStrength:{type:"number"},layoutExecution:{type:"string",enum:["auto","worker","sync"]},showLabels:{type:"boolean"}}},SankeyDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},edges:{type:"array"},nodes:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target","gradient"]},orientation:{type:"string",enum:["vertical","horizontal"]},nodeAlign:{type:"string",enum:["justify","left","right","center"]},nodePaddingRatio:{type:"number"},nodeWidth:{type:"number"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"},edgeSort:{type:"function"}}},ProcessSankey:{required:["domain"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},edges:{type:"array"},nodes:{type:"array"},domain:{type:"array"},axisTicks:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},startTimeAccessor:{type:["string","function"]},endTimeAccessor:{type:["string","function"]},xExtentAccessor:{type:["string","function"]},edgeIdAccessor:{type:["string","function"]},legendPosition:{type:"string",enum:["right","left","top","bottom"]},pairing:{type:"string",enum:["value","temporal"]},packing:{type:"string",enum:["off","reuse"]},laneOrder:{type:"string",enum:["insertion","crossing-min","inside-out","crossing-min+inside-out"]},ribbonLane:{type:"string",enum:["source","target","both"]},lifetimeMode:{type:"string",enum:["full","half"]},showLaneRails:{type:"boolean"},showQualityReadout:{type:"boolean"},edgeOpacity:{type:"number"},timeFormat:{type:"function"},valueFormat:{type:"function"},showParticles:{type:"boolean"},particleStyle:{type:"object"}}},ChordDiagram:{required:["edges"],dataShape:"network",dataAccessors:["sourceAccessor","targetAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},edges:{type:"array"},nodes:{type:"array"},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},edgeColorBy:{type:["string","function"],enum:["source","target"]},padAngle:{type:"number"},groupWidth:{type:"number"},sortGroups:{type:"function"},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},edgeOpacity:{type:"number"}}},TreeDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},layout:{type:"string",enum:["tree","cluster","partition","treemap","circlepack"]},orientation:{type:"string",enum:["vertical","horizontal","radial"]},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},edgeStyle:{type:"string",enum:["line","curve"]},nodeLabel:{type:["string","function"]},showLabels:{type:"boolean"},nodeSize:{type:"number"}}},Treemap:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},nodeStyle:{type:"function"}}},CirclePack:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},showLabels:{type:"boolean"},nodeLabel:{type:["string","function"]},circleOpacity:{type:"number"}}},OrbitDiagram:{required:["data"],dataShape:"object",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},data:{type:"object"},childrenAccessor:{type:["string","function"]},nodeIdAccessor:{type:["string","function"]},colorByDepth:{type:"boolean"},orbitMode:{type:["string","array"]},orbitSize:{type:["number","function"]},speed:{type:"number"},eccentricity:{type:["number","function"]},showRings:{type:"boolean"},nodeRadius:{type:["number","function"]},showLabels:{type:"boolean"},animated:{type:"boolean"},revolution:{type:"function"},foregroundGraphics:{type:"object"}}},ChoroplethMap:{required:["areas"],dataShape:"array",dataAccessors:["valueAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},areas:{type:["array","string"]},valueAccessor:{type:["string","function"]},projection:{type:"string"}}},ProportionalSymbolMap:{required:["points"],dataShape:"array",dataAccessors:["xAccessor","yAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},points:{type:"array"},xAccessor:{type:["string","function"]},yAccessor:{type:["string","function"]},sizeBy:{type:["string","function"]},areas:{type:["array","string"]}}},FlowMap:{required:["flows"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},flows:{type:"array"},nodes:{type:"array"},valueAccessor:{type:["string","function"]},lineIdAccessor:{type:["string","function"]}}},DistanceCartogram:{required:["points"],dataShape:"array",dataAccessors:[],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},styleRules:{type:"array"},points:{type:"array"},center:{type:"array"},costAccessor:{type:["string","function"]}}},RealtimeLineChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},stroke:{type:"string"},strokeWidth:{type:"number"},strokeDasharray:{type:"string"},transition:{type:"object"}}},RealtimeHistogram:{required:["binSize"],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},binSize:{type:"number"},direction:{type:"string",enum:["up","down"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},brush:{type:["boolean","string","object"]},onBrush:{type:"function"},linkedBrush:{type:["string","object"]},transition:{type:"object"}}},TemporalHistogram:{required:["data","binSize"],dataShape:"array",dataAccessors:["timeAccessor","valueAccessor","categoryAccessor"],props:{data:{type:"array"},binSize:{type:"number"},size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},direction:{type:"string",enum:["up","down"]},categoryAccessor:{type:["string","function"]},colors:{type:"object"},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},fill:{type:"string"},stroke:{type:"string"},strokeWidth:{type:"number"},gap:{type:"number"},linkedHover:{type:["boolean","string","object"]},linkedBrush:{type:["string","object"]},brush:{type:["boolean","string","object"]},onBrush:{type:"function"}}},RealtimeSwarmChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},categoryAccessor:{type:["string","function"]},colors:{type:"object"},radius:{type:"number"},fill:{type:"string"},opacity:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},pointStyle:{type:"function"},yScaleType:{type:"string",enum:["linear","log","symlog"]},transition:{type:"object"}}},RealtimeWaterfallChart:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},positiveColor:{type:"string"},negativeColor:{type:"string"},connectorStroke:{type:"string"},connectorWidth:{type:"number"},gap:{type:"number"},stroke:{type:"string"},strokeWidth:{type:"number"},transition:{type:"object"}}},RealtimeHeatmap:{required:[],dataShape:"realtime",dataAccessors:[],props:{size:{type:"array"},width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},timeAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},windowSize:{type:"number"},windowMode:{type:"string",enum:["sliding","stepping"]},arrowOfTime:{type:"string",enum:["left","right"]},timeExtent:{type:"array"},valueExtent:{type:"array"},extentPadding:{type:"number"},showAxes:{type:"boolean"},background:{type:"string"},enableHover:{type:["boolean","object"]},tooltip:{type:["function","object"]},tooltipContent:{type:"function"},onHover:{type:"function"},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},svgAnnotationRules:{type:"function"},tickFormatTime:{type:"function"},tickFormatValue:{type:"function"},decay:{type:"object"},pulse:{type:"object"},staleness:{type:"object"},heatmapXBins:{type:"number"},heatmapYBins:{type:"number"},aggregation:{type:"string",enum:["count","sum","mean"]}}},GaltonBoardChart:{required:[],dataShape:"array",dataAccessors:["valueAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},valueAccessor:{type:["string","function"]},valueExtent:{type:"array"},bins:{type:"number"},mode:{type:"string",enum:["sample","mechanical"]},pegRows:{type:"number"},mechanicalCount:{type:"number"},branchProbability:{type:"number"},referenceLines:{type:["object","array"]},showProjection:{type:"boolean"}}},EventDropChart:{required:["data"],dataShape:"array",dataAccessors:["timeAccessor","arrivalAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},timeAccessor:{type:["string","function"]},arrivalAccessor:{type:["string","function"]},windows:{type:"object"},watermark:{type:["object","function"]},timeExtent:{type:"array"},timeScale:{type:"number"}}},PhysicsPileChart:{required:[],dataShape:"array",dataAccessors:["categoryAccessor","valueAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},categoryAccessor:{type:["string","function"]},valueAccessor:{type:["string","function"]},mode:{type:"string",enum:["sample","mechanical"]},mechanicalCount:{type:"number"},mechanicalCategories:{type:"array"},unitValue:{type:"number"},showProjection:{type:"boolean"},sediment:{type:"boolean"}}},CollisionSwarmChart:{required:[],dataShape:"array",dataAccessors:["xAccessor","groupAccessor","radiusAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},styleRules:{type:"array"},xAccessor:{type:["string","function"]},groupAccessor:{type:["string","function"]},radiusAccessor:{type:["string","function"]},pointRadius:{type:"number"},xExtent:{type:"array"},collisionIterations:{type:"number"},settle:{type:"boolean"},showProjection:{type:"boolean"}}},GauntletChart:{required:["negativeProperties"],dataShape:"array",dataAccessors:["idAccessor","positiveAccessor","negativeAccessor","metricsAccessor","startTimeAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},positiveProperties:{type:"array"},negativeProperties:{type:"array"},gates:{type:"array"},events:{type:["array","function"]},startTimeAccessor:{type:["string","function"]},onCapacityChange:{type:"function"},crashDetection:{type:"boolean"},showChrome:{type:"boolean"},showProjection:{type:"boolean"},showTethers:{type:"boolean"},coreForceMode:{type:"string",enum:["route","net"]},terminalBehavior:{type:"string",enum:["outcome","hold-last"]}}},ProcessFlowChart:{required:["stages"],dataShape:"array",dataAccessors:["idAccessor","stageAccessor","groupBy","workAccessor","radiusAccessor"],props:{data:{type:"array"},size:{type:"array"},width:{type:"number"},height:{type:"number"},className:{type:"string"},title:{type:"string"},responsiveWidth:{type:"boolean"},responsiveHeight:{type:"boolean"},colorBy:{type:["string","function"]},seed:{type:"number"},ballRadius:{type:"number"},hoverRadius:{type:"number"},paused:{type:"boolean"},tooltip:{type:["boolean","function","object"]},frameProps:{type:"object"},stages:{type:"array"},stageAccessor:{type:["string","function"]},idAccessor:{type:["string","function"]},groupBy:{type:["string","function"]},groupLabelAccessor:{type:["string","function"]},workAccessor:{type:["string","function"]},radiusAccessor:{type:["string","function"]},groupCompletion:{type:"string",enum:["allAbsorbed","none"]},groupAnchorAlong:{type:"number"},showProjection:{type:"boolean"},showChrome:{type:"boolean"},settle:{type:"boolean"}}},PhysicalFlowChart:{required:[],dataShape:"network",dataAccessors:["nodeIdAccessor","nodeXAccessor","nodeYAccessor","sourceAccessor","targetAccessor","throughputAccessor","pathAccessor"],props:{width:{type:"number"},height:{type:"number"},margin:{type:"object"},className:{type:"string"},title:{type:"string"},description:{type:"string"},summary:{type:"string"},accessibleTable:{type:"boolean"},enableHover:{type:"boolean"},showLegend:{type:"boolean"},showGrid:{type:"boolean"},colorBy:{type:["string","function"]},colorScheme:{type:["string","array"]},tooltip:{type:["boolean","function","object"]},annotations:{type:"array"},autoPlaceAnnotations:{type:["boolean","object"]},responsiveRules:{type:"array"},mobileSemantics:{type:"object"},mobileInteraction:{type:["boolean","object"]},axisExtent:{type:"string",enum:["nice","exact"]},frameProps:{type:"object"},onClick:{type:"function"},size:{type:"array"},nodes:{type:"array"},links:{type:"array"},edges:{type:"array"},data:{type:"array"},nodeIdAccessor:{type:["string","function"]},nodeXAccessor:{type:["string","function"]},nodeYAccessor:{type:["string","function"]},sourceAccessor:{type:["string","function"]},targetAccessor:{type:["string","function"]},throughputAccessor:{type:["string","function"]},pathAccessor:{type:["string","function"]},coordinateMode:{type:"string",enum:["auto","normalized","pixels"]},particleRate:{type:"number"},maxParticles:{type:"number"},particleRadius:{type:"number"},flowSpeed:{type:"number"},pathConstraint:{type:"string",enum:["path","none"]},reducedMotion:{type:"boolean"},showStaticFlow:{type:"boolean"},showNodeLabels:{type:"boolean"},showSensors:{type:"boolean"},paused:{type:"boolean"},seed:{type:"number"}}},BigNumber:{required:[],dataShape:"none",dataAccessors:[],props:{width:{type:["number","string"]},height:{type:["number","string"]},className:{type:"string"},value:{type:"number"},label:{type:"string"},caption:{type:"string"},format:{type:["string","function"],enum:["number","currency","percent","compact","duration"]},locale:{type:"string"},currency:{type:"string"},precision:{type:"number"},prefix:{type:"string"},suffix:{type:"string"},unit:{type:"string"},comparison:{type:"object"},target:{type:"object"},delta:{type:"number"},deltaFormat:{type:["string","function"],enum:["number","currency","percent","compact","duration"]},showDeltaPercent:{type:"boolean"},direction:{type:"string",enum:["higher-is-better","lower-is-better","neutral"]},sentiment:{type:"string",enum:["auto","positive","negative","neutral"]},thresholds:{type:"array"},chartSlot:{type:["string","number","array","object","function"]},chartSize:{type:"number"},windowSize:{type:"number"},mode:{type:"string",enum:["tile","presentation","inline","thumbnail"]},align:{type:"string",enum:["start","center","end"]},padding:{type:["number","object"]},emphasis:{type:"string",enum:["primary","secondary"]},color:{type:"string"},background:{type:"string"},borderColor:{type:"string"},borderRadius:{type:["number","string"]},animate:{type:["boolean","object"]},stalenessThreshold:{type:"number"},staleLabel:{type:"string"},headerSlot:{type:["string","number","array","object","function"]},valueSlot:{type:["string","number","array","object","function"]},deltaSlot:{type:["string","number","array","object","function"]},trendSlot:{type:["string","number","array","object","function"]},footerSlot:{type:["string","number","array","object","function"]},onClick:{type:"function"},onObservation:{type:"function"}}}};function G(e,t){return(Array.isArray(t)?t:[t]).includes(Array.isArray(e)?"array":typeof e)}var V=["title","description","summary"];function U(e){return"string"==typeof e&&e.trim().length>0}function Y(e){let t=e.replace(/^#/,"");/^[a-f\d]{3}$/i.test(t)&&(t=t.split("").map(e=>e+e).join(""));const r=t.match(/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i);if(!r)return null;const[n,o,i]=[parseInt(r[1],16)/255,parseInt(r[2],16)/255,parseInt(r[3],16)/255],s=e=>e>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92;return.2126*s(n)+.7152*s(o)+.0722*s(i)}function Q(e,t){const r=Y(e),n=Y(t);return null===r||null===n?null:(Math.max(r,n)+.05)/(Math.min(r,n)+.05)}var X=new Set(["label","callout","callout-circle","callout-rect","text","widget"]),Z=new Set(["label","callout","callout-circle","callout-rect"]);function K(e){return"string"==typeof e?.type?e.type:""}function J(e){return!!e&&"object"==typeof e&&X.has(K(e))}function ee(e){return Z.has(K(e))&&!function(e){return Array.isArray(e?.disable)&&e.disable.includes("connector")}(e)}var te=new Set(["TreeDiagram","Treemap","CirclePack","OrbitDiagram"]),re=new Set(["ForceDirectedGraph","SankeyDiagram","ChordDiagram"]),ne=new Set(["BarChart","StackedBarChart","GroupedBarChart","AreaChart","StackedAreaChart"]),oe=new Set(["LineChart","AreaChart","StackedAreaChart"]),ie=new Set(["BarChart","StackedBarChart","GroupedBarChart","FunnelChart"]),se=new Set(["LineChart","AreaChart","StackedAreaChart","ConnectedScatterplot"]),ae=new Set(["PieChart","DonutChart"]),le={PieChart:"valueAccessor",DonutChart:"valueAccessor",FunnelChart:"valueAccessor"},ce=new Set(Object.keys(le)),de={StackedBarChart:"valueAccessor",StackedAreaChart:"yAccessor"},ue=new Set(["BigNumber"]),pe=new Set(["LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","ConnectedScatterplot","BubbleChart","QuadrantChart","MultiAxisLineChart","CandlestickChart","Heatmap","MinimapChart"]),ye=new Set(["StreamPhysicsFrame","GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","PhysicsCustomChart"]),he=new Set(["OrbitDiagram",...ye]),fe=new Set(["GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart"]),me=new Set(["GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart","PhysicsCustomChart"]),be=new Set(["RealtimeLineChart","RealtimeHistogram","RealtimeSwarmChart","RealtimeWaterfallChart","RealtimeHeatmap","ProcessSankey"]),ge=new Set(["MultiAxisLineChart"]),ve=new Set(["ChoroplethMap","ProportionalSymbolMap","FlowMap","DistanceCartogram"]),xe={Scatterplot:"pointRadius",BubbleChart:"pointRadius",ConnectedScatterplot:"pointRadius",QuadrantChart:"pointRadius",SwarmPlot:"pointRadius",DotPlot:"dotRadius"};function ke(e,t=new Set){if(null===e)return!0;const r=typeof e;if("string"===r||"boolean"===r)return!0;if("number"===r)return Number.isFinite(e);if("object"!==r)return!1;if(t.has(e))return!1;t.add(e);const n=Array.isArray(e)?e.every(e=>ke(e,t)):Object.entries(e).every(([,e])=>ke(e,t));return t.delete(e),n}var Ce=Symbol.for("semiotic.chartRecipeRegistry");function we(e){return function(){const e=globalThis;return e[Ce]||(e[Ce]={recipes:new Map,capabilities:new Map,layouts:new Map}),e[Ce]}().recipes.get(e)}function Se(e){return"string"==typeof e?we(e):e&&"object"==typeof e&&"string"==typeof e.id?e:void 0}var Ae=new Set(["#0072b2","#e69f00","#009e73","#cc79a7","#56b4e9","#d55e00","#f0e442","#000000"]),je="Chartability (POUR-CAF) — https://chartability.github.io/POUR-CAF/. Not a pass/fail cert; pair with manual screen-reader testing (NVDA+Firefox, JAWS+Chrome, VoiceOver+Safari).";function $e(e){return"primary"===e?.emphasis||"secondary"===e?.emphasis||null!=function(e){const t=e?.provenance?.confidence;return"number"==typeof t&&Number.isFinite(t)?t:null}(e)}function Me(e){const t=e.toLowerCase().replace(/[^a-z]/g,"");if(!t)return 0;if(3>=t.length)return 1;const r=t.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/,"").replace(/^y/,"").match(/[aeiouy]{1,2}/g);return r?r.length:1}function Be(e){return e.physics&&"object"==typeof e.physics?e.physics:{}}var We={pass:"✓",fail:"✗",warn:"⚠",manual:"○","not-applicable":"·"},Pe=["perceivable","operable","understandable","robust","compromising","assistive","flexible"];function Ie(e){let t=e>>>0;return function(){t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}require("d3-interpolate");var Le=80,Re=100;function Te(e,t={}){const r=[],n=e.tokenSemantics,o=e.countStrategy,i=t.maxRecommendedTokens??("fixed-denominator"!==o||function(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,t):0}(e.denominator)>Re?Le:Re);return n||r.push({code:"TOKEN_SEMANTICS_UNCLEAR",severity:"warning",message:"Every tokenized encoding should state what one token represents."}),o||r.push({code:"MISSING_COUNT_STRATEGY",severity:"warning",message:"Every tokenized encoding should state how token counts are produced."}),"icon"!==e.tokenType&&"glyph"!==e.tokenType||"icon-only"!==e.labelPolicy&&"token-only"!==e.labelPolicy||r.push({code:"ICON_ONLY_LABELS",severity:"warning",message:"Icons should supplement text labels, not replace them."}),null!=t.visibleTokens&&t.visibleTokens>i&&r.push({code:"TOO_MANY_VISIBLE_TOKENS",severity:"warning",message:`This encoding renders ${t.visibleTokens} visible tokens. Consider unitizing, sampling, or a hybrid bar/token view.`}),"decorative"!==n||"icon"!==e.tokenType&&"glyph"!==e.tokenType||r.push({code:"DECORATIVE_PICTOGRAPHS",severity:"warning",message:"Decorative pictographs can harm recall and speed when they do not clarify the data."}),"unitized-measure"===n&&o&&"unitized"!==o&&r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Unitized measures should use the unitized count strategy so each token has a stable value."}),"risk-case"===n&&o&&"fixed-denominator"!==o&&r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Risk cases are usually clearest as a fixed-denominator natural frequency."}),"possible-outcome"!==n&&"posterior-sample"!==n&&"hypothetical-case"!==n||!o||"quantile"===o||"sample"===o||"posterior-sample"===o||"random-sample"===o||r.push({code:"TOKEN_STRATEGY_MISMATCH",severity:"warning",message:"Outcome/sample tokens should come from quantiles or samples, not from a unitized magnitude."}),"unitized-measure"===n&&"unitized"===o&&null==e.unitValue&&null==e.unit&&r.push({code:"MISSING_UNIT_VALUE",severity:"warning",message:"Unitized measures should set unitValue so each token has a declared value."}),"unitized-measure"!==n||"unitized"!==o||e.unitMeaning||r.push({code:"MISSING_UNIT_MEANING",severity:"info",message:"Add unitMeaning so readers know what one full token represents."}),r}var Fe=2e4;function Ee(e){return"primary"===e?.emphasis||!0===e?.defensive}function Ne(e,t,r={}){return"number"==typeof r.maxAnnotations&&Number.isFinite(r.maxAnnotations)?Math.max(0,Math.floor(r.maxAnnotations)):e>0&&t>0?Math.max(1,Math.round(e*t/(r.areaPerAnnotation&&r.areaPerAnnotation>0?r.areaPerAnnotation:Fe))):1/0}function Oe(e){let t;const r=e?.emphasis;t="primary"===r?100:"secondary"===r?10:50;const n=e?.provenance?.confidence;switch("number"==typeof n&&Number.isFinite(n)&&(t+=15*Math.max(0,Math.min(1,n))),e?.lifecycle?.freshness){case"fresh":t+=8;break;case"aging":t+=4;break;case"stale":t+=1;break;case"expired":t-=200}return t}var De=l(require("react")),ze=require("react"),qe=require("react/jsx-runtime");function _e(e){let t=null;const r=()=>(t||(t=(0,ze.createContext)(null)),t),n=He(e);return[function({children:t,initialState:n}){const o=(0,ze.useRef)(n),i=(0,ze.useMemo)(()=>He(e,o.current),[]),s=r();return(0,qe.jsx)(s.Provider,{value:i,children:t})},(e,t)=>{const o=r(),i=(0,ze.useContext)(o)??n,s=(0,ze.useRef)(e);s.current=e;const a=(0,ze.useRef)({hasValue:!1,value:void 0}),l=(0,ze.useCallback)(()=>{const e=s.current(i.getState()),r=a.current;return r.hasValue&&t&&t(r.value,e)?r.value:(a.current={hasValue:!0,value:e},e)},[i,t]),c=(0,ze.useCallback)(()=>s.current(i.getState()),[i]);return(0,ze.useSyncExternalStore)(i.subscribe,l,c)}]}function He(e,t){const r=new Set;let n={...e(function(e){const t=e(n);if(function(e){for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!0;return!1}(t)){n={...n,...t};for(const e of r)e()}}),...t??{}};return{getState:()=>n,subscribe:function(e){return r.add(e),()=>{r.delete(e)}}}}var[Ge,Ve]=_e(e=>({observations:[],maxObservations:100,version:0,pushObservation(t){e(e=>{const r=e.observations;return r.push(t),r.length>e.maxObservations&&r.shift(),{version:e.version+1}})},clearObservations(){e(()=>({observations:[],version:0}))}}));function Ue(e){const t=e.provenance,r=e.id??e.stableId??t?.stableId;return null==r||""===r?void 0:r+""}function Ye(e,t={}){const r=Ue(e);return{"data-semiotic-annotation-widget":"",...r?{"data-semiotic-annotation-id":r}:{},onClickCapture(n){const o=function(e){const t=e.nativeEvent;return"touch"===t.pointerType?"touch":0===t.detail?"keyboard":"pointer"}(n);t.onAnnotationActivate?.({annotation:e,annotationId:r,chartId:t.chartId,inputType:o}),r&&t.onObservation&&t.onObservation({type:"annotation-activate",annotationId:r,inputType:o,timestamp:Date.now(),chartType:t.chartType??"unknown",chartId:t.chartId})}}}var Qe=120,Xe=250,Ze=["xExtent","yExtent","rExtent"],Ke=8;function Je(e){const t=e instanceof Date?e.getTime():Number(e);return Number.isFinite(t)?t:null}function et(e,t,r){if("function"==typeof t)return t(e);const n="string"==typeof t?t:r;return e?.[n]}var tt=new Set(["category10","tableau10","set3","blues","reds","greens","oranges","purples","greys","viridis","plasma","inferno","magma","cividis","turbo"]),rt=["xAccessor","yAccessor","timeAccessor","valueAccessor","categoryAccessor","colorBy","sizeBy","lineBy","areaBy","stackBy","groupBy","orderAccessor","y0Accessor","sourceAccessor","targetAccessor","nodeIDAccessor","childrenAccessor","costAccessor"];function nt(e){return"object"==typeof e&&null!==e&&("tokenType"in e||"tokenSemantics"in e||"countStrategy"in e||"unitValue"in e||"unit"in e)}function ot(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0?e:void 0}function it(e,t){const r=ot(e.visibleTokens);if(null!=r)return r;const n=ot(t.denominator);if("fixed-denominator"===t.countStrategy&&null!=n)return n;const o=ot(t.tokenCount),i=ot(t.maxTokens);return null!=o&&null!=i?Math.min(o,i):o??n??i}function st(e,t){const r=[],n=function(e,t){const r=[];null!=t&&"object"==typeof t||(t={});const n=H[e];if(!n)return{valid:!1,errors:[`Unknown component "${e}". Valid components: ${Object.keys(H).join(", ")}`]};for(const o of n.required)null==t[o]&&r.push(`"${o}" is required for ${e}.`);"array"!==n.dataShape||!Object.prototype.hasOwnProperty.call(n.props,"data")||n.required.includes("data")||function(e,t){return"mechanical"===t.mode&&("GaltonBoardChart"===e||"PhysicsPileChart"===e)}(e,t)||null!=t.data||r.push(`"data" is required for ${e}.`);for(const[e,o]of Object.entries(t)){if(null==o)continue;const t=n.props[e];if(t){if(!G(o,t.type)){const n=Array.isArray(t.type)?t.type.join(" | "):t.type;r.push(`"${e}" should be ${n}, got ${Array.isArray(o)?"array":typeof o}.`);continue}t.enum&&"string"==typeof o&&!t.enum.includes(o)&&r.push(`"${e}" value "${o}" is not valid. Expected one of: ${t.enum.join(", ")}.`)}}const o=Object.keys(n.props),i=new Set(o);for(const n of Object.keys(t))if(void 0!==t[n]&&!i.has(n)){const t=z(n,o),i=t?`Unknown prop "${n}" for ${e}. Did you mean "${t}"?`:`Unknown prop "${n}" for ${e}. Valid props: ${o.join(", ")}.`;r.push(i)}if("array"===n.dataShape){const o=t.data,i={};for(const e of n.dataAccessors){const r=t[e];"string"==typeof r&&(i[e]=r)}const s=function({componentName:e,data:t,accessors:r,requiredProps:n}){if(n)for(const[t,r]of Object.entries(n))if(null==r)return`${e}: ${t} is required. Provide a field name or function.`;if(null==t)return null;if(!Array.isArray(t)&&"object"==typeof t)return e+": data should be an array, but received an object. If this is hierarchical data, use TreeDiagram, Treemap, or CirclePack instead.";if(!Array.isArray(t)||0===t.length)return e+": No data provided. Pass a non-empty array to the data prop.";if(r){const n=q(t).find(e=>e&&"object"==typeof e);if(n){const t=Object.keys(n);for(const[o,i]of Object.entries(r))if(i&&"string"==typeof i&&!(i in n)){const r=_(i,t),n=r?` Try ${o}="${r}".`:"";return`${e}: ${o} "${i}" not found in data. Available fields: ${t.join(", ")}.${n}`}}}return null}({componentName:e,data:o,accessors:Object.keys(i).length>0?i:void 0});s&&r.push(s)}else if("object"===n.dataShape){const n=function({componentName:e,data:t,dataLabel:r="data"}){return null==t?`${e}: No ${r} provided. Pass a hierarchical object with children: { name: "root", children: [...] }.`:Array.isArray(t)?`${e}: ${r} should be a single root object, not an array. Expected: { name: "root", children: [...] }. If you have flat data, use LineChart, BarChart, or Scatterplot instead.`:null}({componentName:e,data:t.data});n&&r.push(n)}else if("network"===n.dataShape){const o=function({componentName:e,nodes:t,edges:r,nodesRequired:n=!1,edgesRequired:o=!0,accessors:i}){if(null==t&&null==r)return null;if(o&&(!r||!Array.isArray(r)||0===r.length))return e+': No edges provided. Pass a non-empty array: edges={[{ source: "A", target: "B", value: 10 }, ...]}.';if(n&&(!t||!Array.isArray(t)||0===t.length))return e+': No nodes provided. Pass a non-empty array: nodes={[{ id: "A" }, { id: "B" }, ...]}.';if(i&&t&&t.length>0){const r=q(t).find(e=>e&&"object"==typeof e);if(r){const t=Object.keys(r);for(const[n,o]of Object.entries(i))if(o&&"string"==typeof o&&!(o in r)){const r=_(o,t),i=r?` Try ${n}="${r}".`:"";return`${e}: ${n} "${o}" not found in node data. Available fields: ${t.join(", ")}.${i}`}}}return null}({componentName:e,nodes:t.nodes,edges:t.edges,nodesRequired:n.required.includes("nodes"),edgesRequired:n.required.includes("edges")});o&&r.push(o)}return{valid:0===r.length,errors:r}}(e,function(e){const t={...e};return delete t.tokenEncoding,delete t.visibleTokens,nt(t.encoding)&&delete t.encoding,t}(t));for(const e of n.errors)r.push({severity:"error",code:"VALIDATION",message:e,fix:""});return H[e]?(function(e,t,r){const n=H[e];if(n){if("array"===n.dataShape){const e=t.data;e&&Array.isArray(e)&&0===e.length&&r.push({severity:"error",code:"EMPTY_DATA",message:"data is an empty array — chart will render blank.",fix:"Provide at least one data point: data={[{ x: 1, y: 2 }]}."})}"network"===n.dataShape&&t.edges&&Array.isArray(t.edges)&&0===t.edges.length&&r.push({severity:"error",code:"EMPTY_EDGES",message:"edges is an empty array — network chart will render blank.",fix:'Provide at least one edge: edges={[{ source: "A", target: "B" }]}.'})}}(e,t,r),function(e,t,r){const n=t.width,o=t.height;if(void 0===n||"number"==typeof n&&n>0||r.push({severity:"error",code:"BAD_WIDTH",message:`width=${JSON.stringify(n)} — chart needs a positive number.`,fix:"Set width={600} or use responsiveWidth={true}."}),void 0===o||"number"==typeof o&&o>0||r.push({severity:"error",code:"BAD_HEIGHT",message:`height=${JSON.stringify(o)} — chart needs a positive number.`,fix:"Set height={400} or use responsiveHeight={true}."}),t.size&&Array.isArray(t.size)){const[e,n]=t.size;(null!=e&&0>=e||null!=n&&0>=n)&&r.push({severity:"error",code:"BAD_SIZE",message:`size=[${e}, ${n}] — both dimensions must be positive.`,fix:"Set size={[600, 400]}."})}}(0,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=o[0];if(!i||"object"!=typeof i)return;const s=Object.keys(i);for(const e of n.dataAccessors){const n=t[e];"string"==typeof n&&(n in i||r.push({severity:"error",code:"ACCESSOR_MISSING",message:`${e}="${n}" not found in data. Available fields: ${s.join(", ")}.`,fix:`Change ${e} to one of: ${s.map(e=>`"${e}"`).join(", ")}.`}))}}(e,t,r),function(e,t,r){te.has(e)&&Array.isArray(t.data)&&r.push({severity:"error",code:"HIERARCHY_FLAT_ARRAY",message:e+" expects hierarchical data but received a flat array.",fix:'Pass a root object: data={{ name: "root", children: [...] }}. For flat data, use BarChart or LineChart.'})}(e,t,r),function(e,t,r){re.has(e)&&(t.edges||t.data||r.push({severity:"error",code:"NETWORK_NO_EDGES",message:e+" requires an edges prop.",fix:'Provide edges={[{ source: "A", target: "B", value: 10 }]}.'}))}(e,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=o[0];if(!i||"object"!=typeof i)return;const s=t.xAccessor;"string"==typeof s&&i[s]instanceof Date&&!t.xFormat&&r.push({severity:"warning",code:"DATE_NO_FORMAT",message:`xAccessor "${s}" contains Date objects but no xFormat is provided. Axis ticks may display "[object Object]".`,fix:"Add xFormat={d => d.toLocaleDateString()} or use timestamps (d.getTime()) instead of Date objects."})}(e,t,r),function(e,t,r){t.linkedHover&&!t.selection&&r.push({severity:"warning",code:"LINKED_HOVER_NO_SELECTION",message:"linkedHover is set but selection is not — this chart emits hover events but won't highlight from others.",fix:`Add selection={{ name: "${"object"==typeof t.linkedHover&&t.linkedHover.name||"hl"}" }} to receive cross-highlights.`})}(0,t,r),function(e,t,r){if(!ne.has(e))return;const n=t.rExtent||t.yExtent||t.valueExtent;n&&Array.isArray(n)&&n.length>=1&&null!=n[0]&&0!==n[0]&&r.push({severity:"warning",code:"NON_ZERO_BASELINE",message:`${e} has a non-zero baseline (${n[0]}). Bar and area charts should start at zero to avoid exaggerating differences.`,fix:`Remove the custom extent minimum or set it to 0: rExtent={[0, ${n[1]??"auto"}]}. For trend-focused charts, use LineChart instead.`})}(e,t,r),function(e,t,r){if(!oe.has(e))return;if(t.gapStrategy)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=t.yAccessor||"y";"string"==typeof o&&n.some(e=>{const t=e[o];return null==t||Number.isNaN(t)})&&r.push({severity:"warning",code:"DATA_GAPS",message:`Data contains null/undefined/NaN values in "${o}". Default behavior breaks the line at gaps.`,fix:'Set gapStrategy="break" (default), "interpolate", or "zero" to control gap handling.'})}(e,t,r),function(e,t,r){const n=t.width??600,o=t.height??400,i=t.margin;if(!i||"object"!=typeof i)return;const s=(i.left||0)+(i.right||0),a=(i.top||0)+(i.bottom||0);n>s||r.push({severity:"error",code:"MARGIN_OVERFLOW_H",message:`Horizontal margins (${s}px) >= width (${n}px) — no drawing area left.`,fix:"Reduce margin.left/right or increase width."}),o>a||r.push({severity:"error",code:"MARGIN_OVERFLOW_V",message:`Vertical margins (${a}px) >= height (${o}px) — no drawing area left.`,fix:"Reduce margin.top/bottom or increase height."})}(0,t,r),function(e,t,r){const n=H[e];if(!n||"array"!==n.dataShape)return;const o=t.data;if(!o||!Array.isArray(o)||0===o.length)return;const i=[];t.xAccessor&&"string"==typeof t.xAccessor&&i.push({prop:"xAccessor",name:t.xAccessor}),t.yAccessor&&"string"==typeof t.yAccessor&&i.push({prop:"yAccessor",name:t.yAccessor}),t.valueAccessor&&"string"==typeof t.valueAccessor&&i.push({prop:"valueAccessor",name:t.valueAccessor});const s=Math.min(o.length,5);for(const e of i){let t=!0;for(let r=0;s>r;r++){const n=o[r]?.[e.name];if("number"==typeof n&&Number.isFinite(n)){t=!1;break}}t&&r.push({severity:"error",code:"DEGENERATE_EXTENT",message:`${e.prop}="${e.name}" produces NaN or non-finite values for all sampled data points — chart extents will be invalid.`,fix:`Ensure data[].${e.name} contains finite numbers, or use a function accessor to transform values.`})}}(e,t,r),function(e,t,r){if(!ie.has(e))return;const n=t.barPadding;"number"==typeof n&&10>n&&r.push({severity:"warning",code:"BAR_PADDING_INVISIBLE",message:`barPadding=${n} is very small — bars may appear to have no spacing between them.`,fix:"Increase barPadding to at least 10 for visible gaps, e.g. barPadding={12}."})}(e,t,r),function(e,t,r){if("bottom"!==t.legendPosition)return;const n=t.margin;if(!n||"object"!=typeof n)return;const o=n.bottom;"number"==typeof o&&70>o&&r.push({severity:"warning",code:"BOTTOM_MARGIN_WITH_LEGEND",message:`legendPosition="bottom" with margin.bottom=${o}px — legend may overlap axis labels.`,fix:"Increase margin.bottom to at least 70, e.g. margin={{ ...margin, bottom: 80 }}."})}(0,t,r),function(e,t,r){if(!t.showLegend)return;if("right"!==(t.legendPosition??"right"))return;const n=t.margin;if(!n||"object"!=typeof n)return;const o=n.right;"number"==typeof o&&100>o&&r.push({severity:"warning",code:"LEGEND_MARGIN_TIGHT",message:`showLegend is true with legendPosition="right" but margin.right=${o}px — legend may be clipped or overlap the chart.`,fix:"Increase margin.right to at least 100, e.g. margin={{ ...margin, right: 120 }}."})}(0,t,r),function(e,t,r){if("Heatmap"!==e)return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=n[0];if(o&&"object"==typeof o)for(const e of["xAccessor","yAccessor"]){const n=t[e];if("string"!=typeof n)continue;const i=o[n];"string"==typeof i&&r.push({severity:"warning",code:"HEATMAP_STRING_ACCESSOR",message:`${e}="${n}" resolves to string values (e.g. "${i}"). Heatmap will use categorical axis handling which may produce unexpected cell layout.`,fix:"If you intend categorical axes this is fine. Otherwise, convert values to numbers before passing data."})}}(e,t,r),function(e,t,r){const n=t.colorScheme;if(!n||!Array.isArray(n))return;const o="string"==typeof t.background?t.background:"#ffffff";if(!o.startsWith("#"))return;const i=[];for(const e of n){if("string"!=typeof e||!e.startsWith("#"))continue;const t=Q(e,o);null!==t&&3>t&&i.push(`${e} (${t.toFixed(1)}:1)`)}i.length>0&&r.push({severity:"warning",code:"LOW_COLOR_CONTRAST",message:`${i.length} color(s) in colorScheme have < 3:1 contrast against background "${o}": ${i.join(", ")}. Data marks may be hard to see.`,fix:'Use darker colors on light backgrounds or lighter colors on dark backgrounds. Import COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for an accessible preset.'})}(0,t,r),function(e,t,r){const n=t.colorScheme;if(!n||!Array.isArray(n)||2>n.length)return;const o=n.filter(e=>"string"==typeof e&&e.startsWith("#"));if(2>o.length)return;const i=[];for(let e=0;o.length-1>e;e++){const t=Q(o[e],o[e+1]);null!==t&&1.5>t&&i.push(`${o[e]} / ${o[e+1]} (${t.toFixed(1)}:1)`)}i.length>0&&r.push({severity:"warning",code:"LOW_ADJACENT_CONTRAST",message:`${i.length} adjacent color pair(s) in colorScheme have very similar luminance: ${i.join("; ")}. Categories may be hard to distinguish.`,fix:'Alternate light and dark colors in the scheme, or use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic" for a pre-tested palette.'})}(0,t,r),function(e,t,r){const n=t.colorScheme;if("string"!=typeof n)return;const o=H[e];o?.props?.colorScheme?.enum||tt.has(n)||r.push({severity:"warning",code:"UNKNOWN_COLOR_SCHEME",message:`colorScheme "${n}" is not a recognized named scheme — the chart will fall back to the default palette.`,fix:`Use a known scheme name (${[...tt].join(", ")}) or pass an explicit color array, e.g. colorScheme={["#1f77b4", "#ff7f0e"]}.`})}(e,t,r),function(e,t,r){const n=H[e]?.props,o=e=>!!n?.[e]&&"string"==typeof t[e]&&t[e].trim().length>0,i=o("title"),s=o("description"),a=o("summary");i||s||a||r.push({severity:"warning",code:"MISSING_DESCRIPTION",message:"No title, description, or summary provided. Screen readers will fall back to a generic chart-type label.",fix:'Add a title="..." prop for a brief label, or description="..." for a detailed aria-label, or summary="..." for a screen-reader-only note describing the chart\'s purpose.'})}(e,t,r),function(e,t,r){const n=[];for(const e of rt)"function"==typeof t[e]&&n.push(e);n.length>0&&r.push({severity:"warning",code:"FUNCTION_ACCESSOR",message:`Function accessor${n.length>1?"s":""} detected: ${n.join(", ")}. If defined inline (e.g. \`xAccessor={d => d.value}\`), every parent re-render creates a new reference; closures over changing values can force unnecessary scene rebuilds on resize/rotation.`,fix:'Use string accessors when possible (e.g. xAccessor="value"), or memoize with useCallback / define outside the component.'})}(0,t,r),function(e,t,r){const n=t.hoverRadius;"number"==typeof n&&n>0&&24>n&&!1!==t.enableHover&&(!1!==t.hoverAnnotation||t.tooltip||t.customHoverBehavior||t.customClickBehavior||t.onClick)&&r.push({severity:"warning",code:"TOUCH_TARGET_SMALL",message:`hoverRadius=${n}px is below the ~24px radius needed for reliable 48px touch targets on mobile screens.`,fix:"Use hoverRadius={24} or larger for touch-heavy views. Semiotic floors touch pointer hit testing to 24px, but explicit desktop-only radii should be documented."})}(0,t,r),function(e,t,r){!0===t.responsiveWidth&&!0===t.responsiveHeight&&r.push({severity:"warning",code:"RESPONSIVE_BOTH_AXES",message:"responsiveWidth and responsiveHeight are both true. On mobile this can create resize feedback loops when the parent height depends on chart content.",fix:"Prefer responsiveWidth={true} with a fixed parent height or size={[width, fixedHeight]}; use a ResizeObserver outside the chart if the height must follow aspect ratio."})}(0,t,r),function(e,t,r){if(!0!==t.showParticles)return;const n=t.particleStyle&&"object"==typeof t.particleStyle?t.particleStyle:{},o="number"==typeof n.maxPerLine?n.maxPerLine:void 0,i="number"==typeof n.spawnRate?n.spawnRate:void 0;("number"==typeof o&&o>20||"number"==typeof i&&i>.08)&&r.push({severity:"warning",code:"GEO_PARTICLE_MOBILE_COST",message:"Animated geo particles run a continuous canvas loop that can drain battery and trigger thermal throttling on mobile GPUs.",fix:"Set particleStyle={{ maxPerLine: 12, spawnRate: 0.06 }} for mobile-heavy views, or disable showParticles when reduced-motion or low-power modes are active."})}(0,t,r),function(e,t,r){const n=[];nt(t.tokenEncoding)&&n.push({source:"tokenEncoding",encoding:t.tokenEncoding}),nt(t.encoding)&&n.push({source:"encoding",encoding:t.encoding});for(const{source:e,encoding:o}of n){const n=it(t,o);for(const t of Te(o,{visibleTokens:n}))r.push({severity:"warning",code:"TOKEN_"+t.code,message:t.message,fix:"MISSING_UNIT_VALUE"===t.code?`Set ${e}.unitValue to the value represented by one full token.`:"MISSING_UNIT_MEANING"===t.code?`Set ${e}.unitMeaning so readers know what one full token represents.`:"MISSING_COUNT_STRATEGY"===t.code?`Set ${e}.countStrategy to actual, unitized, fixed-denominator, quantile, sample, posterior-sample, or random-sample.`:"TOKEN_SEMANTICS_UNCLEAR"===t.code?`Set ${e}.tokenSemantics to observed-unit, unitized-measure, risk-case, possible-outcome, posterior-sample, hypothetical-case, topic-anchor, or decorative.`:`Adjust ${e} so its semantics, strategy, labels, and visible token count match the task.`})}}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(n)for(const e of n){if(!e||"object"!=typeof e)continue;const t=K(e);if(!J(e)||"widget"===t)continue;const n=Math.hypot("number"==typeof e.dx?e.dx:0,"number"==typeof e.dy?e.dy:0),o="string"==typeof e.label?e.label:"string"==typeof e.title?e.title:t,i=ee(e);!i&&n>Qe?r.push({severity:"warning",code:"ANNOTATION_FAR_NO_CONNECTOR",message:`Annotation "${o}" sits ~${Math.round(n)}px from its anchor with no connector — a reader can't tell what it refers to.`,fix:'Add a connector (connector: { end: "arrow" }, the label/callout default) or place the note adjacent to its target (smaller dx/dy).'}):i&&n>Xe&&r.push({severity:"warning",code:"ANNOTATION_LONG_CONNECTOR",message:`Annotation "${o}" uses a very long connector (~${Math.round(n)}px); prefer placing the note adjacent to its target when space allows.`,fix:"Reduce dx/dy so the note sits near its target, or keep the long connector only if proximity is genuinely infeasible."})}}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(!n)return;const o=n.filter(J).length;if(0===o)return;const i="number"==typeof t.width?t.width:600,s="number"==typeof t.height?t.height:400,a=Ne(i,s);Number.isFinite(a)&&o>a&&r.push({severity:"warning",code:"ANNOTATION_DENSITY",message:`${o} note annotations on a ${i}×${s} chart exceed the ~${a} notes the plot area carries comfortably — the chart may read as cluttered.`,fix:'Mark the essential notes emphasis: "primary" and let density management shed the rest (autoPlaceAnnotations: { density: true }), enable progressive disclosure to reveal secondary notes on hover, or give the chart more room.'})}(0,t,r),function(e,t,r){const n=Array.isArray(t.annotations)?t.annotations:null;if(n)for(const e of n)e&&"object"==typeof e&&"widget"===K(e)&&null!=e.content&&!Ue(e)&&r.push({severity:"warning",code:"ANNOTATION_INTERACTIVE_ID",message:"An interactive widget annotation has no stable id, so its activation cannot be normalized or replayed reliably.",fix:"Add id, stableId, or provenance.stableId to the widget annotation. Do not identify interactive annotations by array index."})}(0,t,r),function(e,t,r){for(const e of Ze){const n=t[e];if(!Array.isArray(n)||2>n.length)continue;const[o,i]=n;"number"==typeof o&&"number"==typeof i&&o>i&&r.push({severity:"warning",code:"INVERTED_AXIS",message:`${e}=[${o}, ${i}] is descending — the axis renders inverted, so "up" reads as less. Inverted axes are a classic misleading-design pattern unless the inversion is the point.`,fix:`Order the extent ascending (${e}={[${i}, ${o}]}). If the inversion is deliberate (e.g. rank #1 at top), say so in the title or an annotation so readers aren't misled.`})}}(0,t,r),function(e,t,r){if("MultiAxisLineChart"!==e)return;const n=t.series;if(!Array.isArray(n)||2!==n.length)return;const o=n.filter(e=>!e||"object"!=typeof e||"string"!=typeof e.label||0===e.label.trim().length);o.length>0&&r.push({severity:"warning",code:"DUAL_AXIS_UNLABELED",message:`Dual-axis chart with ${o.length} unlabeled series. Two y-scales invite false equivalence between the lines; without per-series labels a reader can't tell which scale is whose.`,fix:'Give every series a label: series={[{ yAccessor: "a", label: "Revenue ($)" }, { yAccessor: "b", label: "Users" }]} — and consider whether two separate charts read more honestly.'})}(e,t,r),function(e,t,r){if(!oe.has(e))return;const n=t.xExtent;if(!Array.isArray(n)||2>n.length)return;const[o,i]=n;if("number"!=typeof o||"number"!=typeof i||o>=i)return;const s=t.data;if(!s||!Array.isArray(s)||4>s.length)return;const a=t.xAccessor??"x";if("string"!=typeof a)return;let l=1/0,c=-1/0;for(const e of s){const t=e?.[a];"number"==typeof t&&Number.isFinite(t)&&(l>t&&(l=t),t>c&&(c=t))}if(!Number.isFinite(l)||!Number.isFinite(c)||l>=c)return;const d=c-l,u=Math.max(0,Math.min(i,c)-Math.max(o,l))/d;.7>u&&r.push({severity:"warning",code:"CHERRY_PICKED_WINDOW",message:`xExtent=[${o}, ${i}] shows only ~${Math.round(100*u)}% of the data's x range [${l}, ${c}] — a trend cropped to a favorable window is a classic misleading-design pattern.`,fix:'Widen xExtent to cover the data, filter the data itself so the chart shows what it has, or annotate the visible window ("Q4 only") so the cropping is explicit.'})}(e,t,r),function(e,t,r){const n=le[e],o=de[e];if(!n&&!o)return;if(o&&!t.normalize)return;const i=n??o,s=t[i],a="string"==typeof s?s:"yAccessor"===i?"y":"value",l=t.data;if(!l||!Array.isArray(l)||0===l.length)return;const c=l.filter(e=>{const t=e?.[a];return"number"==typeof t&&0>t});c.length>0&&r.push({severity:n?"error":"warning",code:"PART_TO_WHOLE_NEGATIVE",message:`${c.length} negative value(s) in "${a}" — a part-to-whole encoding cannot represent negative parts${n?"; slice angles/areas for negatives are meaningless":"; normalized shares distort when parts are negative"}.`,fix:n?"Filter or transform negative values first, or switch to a BarChart/WaterfallChart, which encode signed values honestly.":"Drop normalize for signed data, or use a diverging BarChart so negative contributions read as negative."})}(e,t,r),function(e,t,r){se.has(e)&&"basis"===t.curve&&r.push({severity:"warning",code:"NON_PASSING_CURVE",message:'curve="basis" draws a B-spline that does NOT pass through your data points — rendered values differ from actual values everywhere except the endpoints.',fix:'Use curve="monotoneX" or curve="catmullRom" (both interpolate through every point), or keep "basis" only for deliberately schematic, clearly-labeled smoothing.'})}(e,t,r),function(e,t,r){if("LineChart"!==e&&"AreaChart"!==e)return;if("sparkline"===t.mode)return;if(t.responsiveWidth||t.responsiveHeight)return;const n="number"==typeof t.width?t.width:600,o="number"==typeof t.height?t.height:400;if(0>=n||0>=o)return;const i=n/o;if(i>8||.25>i){const e=i>8?"flattens":"exaggerates";r.push({severity:"warning",code:"EXTREME_ASPECT_RATIO",message:`${n}×${o} (${i.toFixed(1)}:1) is an extreme aspect ratio that ${e} the slopes a reader perceives — aspect-ratio distortion is a documented misleading-design pattern.`,fix:i>8?'Use a more balanced aspect (e.g. width/height between 1 and 3), or set mode="sparkline" if this is genuinely a sparkline strip.':"Use a more balanced aspect (e.g. width/height between 1 and 3); very tall trend charts overstate every change."})}}(e,t,r),function(e,t,r){if(!ae.has(e))return;const n=t.data;if(!n||!Array.isArray(n)||0===n.length)return;const o=t.categoryAccessor,i="string"==typeof o?o:"category",s=new Set;for(const e of n){const t=e?.[i];null!=t&&s.add(t)}s.size>Ke&&r.push({severity:"warning",code:"PIE_TOO_MANY_SLICES",message:`${s.size} slices — angle judgments degrade rapidly past ~${Ke} categories (Cleveland & McGill), and thin slices become unreadable and unlabelable.`,fix:`Use a BarChart or DotPlot for ${s.size} categories, or group the long tail into an "Other" slice before charting.`})}(e,t,r),function(e,t,r){if(me.has(e)){if("GaltonBoardChart"===e){const e=t.bins;"number"==typeof e&&2>e&&r.push({severity:"error",code:"PHYSICS_BAD_BINS",message:`bins=${e} leaves no meaningful settled projection for a Galton board.`,fix:"Use at least two bins; 8-24 bins is a practical range for physics distributions."});const n=Je(t.branchProbability);null!=t.branchProbability&&(null==n||0>n||n>1)&&r.push({severity:"error",code:"PHYSICS_BAD_BRANCH_PROBABILITY",message:`branchProbability=${t.branchProbability+""} must be between 0 and 1.`,fix:"Use branchProbability={0.5} for a balanced Galton board, or bias it within the [0, 1] range."});const o=Je(t.mechanicalCount);null==t.mechanicalCount||null!=o&&o>0||r.push({severity:"error",code:"PHYSICS_BAD_MECHANICAL_COUNT",message:`mechanicalCount=${t.mechanicalCount+""} cannot generate a mechanical Galton board.`,fix:"Use a positive mechanicalCount, for example 96."})}if("EventDropChart"===e){const e=t.windows,n=e&&"object"==typeof e?Je(e.size):null;null==n||n>0||r.push({severity:"error",code:"PHYSICS_BAD_WINDOW_SIZE",message:`windows.size=${n} cannot form event-time barriers.`,fix:"Set windows={{ size: positiveNumber }} so each event can settle into a real time window."}),"number"!=typeof t.timeScale||t.timeScale>0||r.push({severity:"error",code:"PHYSICS_BAD_TIME_SCALE",message:`timeScale=${t.timeScale} prevents arrival replay from advancing.`,fix:"Use a positive timeScale, or omit it for the default pace."});const o=Array.isArray(t.data)?t.data:[];if(o.length>0){const e=t.timeAccessor||"time",n=t.arrivalAccessor||"arrivalTime";o.some(t=>{const r=Je(et(t,e,"time")),o=Je(et(t,n,"arrivalTime"));return null!=r&&null!=o&&r!==o})||r.push({severity:"warning",code:"PHYSICS_EVENTDROP_NO_ARRIVAL_SPREAD",message:"EventDropChart data does not show distinct arrival times, so the physics replay collapses to event order.",fix:"Provide an arrivalAccessor field with event-arrival times when demonstrating lateness, watermarks, or out-of-order streams."})}}if("PhysicsPileChart"===e){const e=Je(t.mechanicalCount);null==t.mechanicalCount||null!=e&&e>0||r.push({severity:"error",code:"PHYSICS_BAD_MECHANICAL_COUNT",message:`mechanicalCount=${t.mechanicalCount+""} cannot generate a mechanical pile chart.`,fix:"Use a positive mechanicalCount, for example 80."}),"mechanical"===t.mode&&Array.isArray(t.mechanicalCategories)&&0===t.mechanicalCategories.length&&r.push({severity:"error",code:"PHYSICS_EMPTY_MECHANICAL_CATEGORIES",message:"mechanicalCategories=[] leaves no containers for the generated unit pile.",fix:"Provide at least one category label, or omit mechanicalCategories for the default set."});const n=Je(t.unitValue??1)??1;if(0>=n)return void r.push({severity:"error",code:"PHYSICS_BAD_UNIT_VALUE",message:`unitValue=${t.unitValue} cannot unitize values into physical bodies.`,fix:"Set unitValue to a positive number represented by one body."});const o=t.valueAccessor||"value",i=(Array.isArray(t.data)?t.data:[]).reduce((e,t)=>{const r=Je(et(t,o,"value"))??0;return e+Math.max(0,Math.round(r/n))},0);i>1500&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`PhysicsPileChart would create about ${i} live bodies; motion may dominate the chart and stress the frame budget.`,fix:"Increase unitValue, cap visible units, or aggregate before rendering so the settled projection remains readable."})}if("CollisionSwarmChart"===e){if((Je(t.pointRadius??5)??5)>0||r.push({severity:"error",code:"PHYSICS_BAD_POINT_RADIUS",message:`pointRadius=${t.pointRadius} cannot produce collision bodies.`,fix:"Use a positive pointRadius, for example 5."}),(Je(t.collisionIterations??6)??6)>0||r.push({severity:"error",code:"PHYSICS_BAD_COLLISION_ITERATIONS",message:`collisionIterations=${t.collisionIterations} disables collision relaxation.`,fix:"Use at least one collision iteration; 4-8 is a practical range for swarms."}),null!=t.xExtent){const e=Array.isArray(t.xExtent)?t.xExtent:[],n=Je(e[0]),o=Je(e[1]);(2>e.length||null==n||null==o)&&r.push({severity:"error",code:"PHYSICS_BAD_X_EXTENT",message:"xExtent must be a numeric [min, max] pair for CollisionSwarmChart.",fix:"Pass xExtent={[min, max]} or omit it so the chart infers the domain from data."})}const e=Array.isArray(t.data)?t.data:[];e.length>1200&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`CollisionSwarmChart would create ${e.length} live bodies; collision relaxation may dominate the frame budget.`,fix:"Sample, aggregate, reduce point radius, or move to a static SwarmPlot when every row does not need a physical body."});const n=t.groupAccessor;if(e.length>0&&n){const t=new Set;for(const r of e){const e=et(r,n,"group");null!=e&&t.add(e)}t.size>12&&r.push({severity:"warning",code:"PHYSICS_TOO_MANY_SWARM_LANES",message:`CollisionSwarmChart has ${t.size} group lanes, which leaves little vertical room for collision separation.`,fix:"Facet or filter groups, or use an ordinary SwarmPlot/BoxPlot for dense grouped comparison."})}}if("GaltonBoardChart"!==e&&"PhysicsPileChart"!==e&&"CollisionSwarmChart"!==e&&"ProcessFlowChart"!==e&&"EventDropChart"!==e||(null!=t.massBy||null!=t.massAccessor||t.frameProps&&"object"==typeof t.frameProps&&null!=t.frameProps.bodyMassBy)&&r.push({severity:"warning",code:"PHYSICS_DATA_IN_DYNAMICS",message:e+" appears to map a data field to mass/dynamics. Mass is not a readable quantitative channel.",fix:"Encode quantities in spawn position, bin, size, color, or glyph — keep mass/friction/restitution as process texture. Use showProjection for the truth layer."}),"PhysicsPileChart"!==e&&"GaltonBoardChart"!==e&&"CollisionSwarmChart"!==e&&"ProcessFlowChart"!==e||!1!==t.showProjection||r.push({severity:"warning",code:"PHYSICS_NO_PROJECTION",message:e+" has showProjection={false}. Without a settled projection, motion is easy to over-read as data.",fix:"Keep showProjection enabled (default) so the chart collapses to a legible static reading, or document why the process alone is the claim."}),"ProcessFlowChart"===e){const e=Array.isArray(t.stages)?t.stages:[];if(0===e.length)r.push({severity:"error",code:"PROCESS_FLOW_MISSING_STAGES",message:"ProcessFlowChart requires a non-empty stages array.",fix:'Provide stages={[{ id: "coding", force: 12 }, { id: "merged", absorb: true }]}.'});else{e.some(e=>!e||null==e.id||""===(e.id+"").trim())&&r.push({severity:"error",code:"PROCESS_FLOW_BAD_STAGE",message:"Every ProcessFlowChart stage needs a stable id.",fix:'Use stages like { id: "review", label: "Review", capacity: { unitsPerSecond: 4 } }.'});const n=e.filter(e=>e?.absorb).length;t.groupBy&&0===n&&r.push({severity:"warning",code:"PROCESS_FLOW_GROUP_NO_ABSORB",message:"groupBy is set but no stage has absorb: true, so all-members completion cannot resolve.",fix:'Mark a terminal stage with absorb: true (e.g. merged), or set groupCompletion="none".'})}}if("GauntletChart"===e&&(Array.isArray(t.negativeProperties)||r.push({severity:"warning",code:"GAUNTLET_MISSING_NEGATIVE_PROPERTIES",message:"GauntletChart usually needs negativeProperties for drag/cost bodies (empty array is ok if intentional).",fix:'Provide negativeProperties={[{ id: "cost", label: "Cost", load: 1 }]} or explicitly pass [].'})),"PhysicsPileChart"===e||"GaltonBoardChart"===e||"CollisionSwarmChart"===e||"ProcessFlowChart"===e||"EventDropChart"===e){const n=Array.isArray(t.data)?t.data:[],o=Je(t.mechanicalCount)??0,i=n.length>0?n.length*("PhysicsPileChart"===e?Math.max(1,(Je(t.unitValue),1)):1):o;i>2500&&r.push({severity:"warning",code:"PHYSICS_BODY_BUDGET",message:`${e} may spawn ~${Math.round(i)} live bodies, which can overwhelm the simulation loop.`,fix:"Lower mechanicalCount / unitize with a larger unitValue, enable sediment/windowSize, or sample the data before spawn."})}}}(e,t,r),{ok:r.every(e=>"warning"===e.severity),diagnoses:r}):{ok:0===r.length,diagnoses:r}}var at=["BarChart","StackedBarChart","GroupedBarChart","SwarmPlot","BoxPlot","Histogram","ViolinPlot","RidgelinePlot","DotPlot","PieChart","DonutChart","GaugeChart","FunnelChart","SwimlaneChart","LikertChart","LineChart","AreaChart","DifferenceChart","StackedAreaChart","Scatterplot","BubbleChart","Heatmap","QuadrantChart","MultiAxisLineChart","CandlestickChart","ConnectedScatterplot","ScatterplotMatrix","MinimapChart","ForceDirectedGraph","SankeyDiagram","ProcessSankey","ChordDiagram","TreeDiagram","Treemap","CirclePack","OrbitDiagram","ChoroplethMap","ProportionalSymbolMap","FlowMap","DistanceCartogram","RealtimeLineChart","RealtimeHistogram","TemporalHistogram","RealtimeSwarmChart","RealtimeWaterfallChart","RealtimeHeatmap","GaltonBoardChart","EventDropChart","PhysicsPileChart","CollisionSwarmChart","GauntletChart","ProcessFlowChart","PhysicalFlowChart","BigNumber"],lt=new Set(at);function ct(e){return"string"==typeof e?e:e.id??e.name}function dt(e){return e.layoutConfig&&"object"==typeof e.layoutConfig?e.layoutConfig:{}}function ut(e){return Array.isArray(e.data)?e.data:Array.isArray(e.nodes)?e.nodes:Array.isArray(e.points)?e.points:Array.isArray(e.areas)?e.areas:[]}function pt(e,t,r){return r??Se(t.recipe)??Se(t.recipeId)??we(e)}function yt(e,t,r=[]){const n=e.accessor?t[e.accessor]:void 0;if("string"==typeof n&&n)return n;if(e.field)return e.field;const o=r.find(e=>e&&"object"==typeof e);if(!o)return;const i=Object.entries(o).filter(([e,t])=>!e.startsWith("_")&&null!=t);return"quantitative"===e.semanticType?i.find(([,e])=>"number"==typeof e)?.[0]:"identifier"===e.semanticType?["id","key","name"].find(e=>e in o):i.find(([,e])=>"string"==typeof e)?.[0]}function ht(e,t){return e.dataRoles.find(e=>e.role===t)}function ft(e,t){return e.dataRoles.find(e=>t.includes(e.semanticType))}function mt(e,t,r,n,o,i={}){const s={...i};if(t)for(const[e,r]of Object.entries(t))s[e]=r;for(const e of r.dataRoles){const r=yt(e,n,o),i=t&&r?t[r]:r;void 0!==i&&(s[e.role]=i)}return e.replace(/\{([^}]+)\}/g,(e,t)=>{const r=s[t];return null==r?`{${t}}`:r+""})}var bt="1",gt=new Set(["tooltip","onObservation","xFormat","yFormat","valueFormat","svgAnnotationRules","tooltipContent","onHover","tickFormatTime","tickFormatValue","edgeSort","sortGroups","centerContent","frameProps","controls","oFormat","rFormat","oSort","pieceStyle","summaryStyle","nodeStyle","edgeStyle","customHoverBehavior","customClickBehavior","customDoubleClickBehavior","onBrush","onTopologyChange","backgroundGraphics","foregroundGraphics","legend","recipe","layout"]),vt=new Set(["data","nodes","edges","points","areas","lines","flows"]);function xt(e,t){return!!vt.has(e)&&("areas"!==e||"string"!=typeof t)}var kt="function"==typeof structuredClone?structuredClone:e=>JSON.parse(JSON.stringify(e));function Ct(e,t){if("function"==typeof e)return t=>+e(t);const r=e||t;return e=>+e[r]}function wt(e,t){if("function"==typeof e)return e;const r=e||t;return e=>e[r]}var St=new Set(["LineChart","AreaChart","StackedAreaChart","DifferenceChart","Scatterplot","BubbleChart","ConnectedScatterplot","QuadrantChart","MultiAxisLineChart","MinimapChart"]),At=new Set(["BarChart","StackedBarChart","GroupedBarChart","DotPlot"]),jt=new Set(["PieChart","DonutChart","FunnelChart"]),$t=new Set(["Histogram","BoxPlot","ViolinPlot","RidgelinePlot","SwarmPlot"]);function Mt(e,t){return At.has(e)||jt.has(e)||"SwimlaneChart"===e||"GaugeChart"===e?{measure:t.valueAccessor,measureFallback:"value",dimension:t.categoryAccessor??t.stepAccessor,dimensionFallback:"category"}:{measure:t.yAccessor??t.valueAccessor,measureFallback:"y",dimension:t.xAccessor,dimensionFallback:"x"}}function Bt(e){for(const t of["lineBy","areaBy","stackBy","groupBy","colorBy"]){const r=e[t];if("string"==typeof r&&r)return r}}function Wt(e,t){return null==e?"—":e instanceof Date?e.toISOString().slice(0,10):"number"==typeof e?t(e):e+""}function Pt(e,t={}){const r=!0===t.showRetractedAnnotations,n=!0===t.showSupersededAnnotations,o=new Set;for(const t of e){const e=t?.lifecycle?.supersedes;e&&"retracted"!==t?.lifecycle?.status&&o.add(e)}return e.filter(e=>{if("retracted"===e?.lifecycle?.status&&!r)return!1;const t=e?.provenance?.stableId;return!(t&&o.has(t)&&!n)})}var It={LineChart:"line chart",AreaChart:"area chart",StackedAreaChart:"stacked area chart",DifferenceChart:"difference chart",Scatterplot:"scatter plot",BubbleChart:"bubble chart",ConnectedScatterplot:"connected scatter plot",QuadrantChart:"quadrant chart",MultiAxisLineChart:"dual-axis line chart",CandlestickChart:"candlestick chart",Heatmap:"heatmap",MinimapChart:"line chart",BarChart:"bar chart",StackedBarChart:"stacked bar chart",GroupedBarChart:"grouped bar chart",DotPlot:"dot plot",Histogram:"histogram",BoxPlot:"box plot",ViolinPlot:"violin plot",RidgelinePlot:"ridgeline plot",SwarmPlot:"swarm plot",PieChart:"pie chart",DonutChart:"donut chart",FunnelChart:"funnel chart",GaugeChart:"gauge",LikertChart:"Likert chart",SwimlaneChart:"swimlane chart",ForceDirectedGraph:"network graph",SankeyDiagram:"Sankey diagram",ProcessSankey:"temporal Sankey diagram",ChordDiagram:"chord diagram",TreeDiagram:"tree diagram",Treemap:"treemap",CirclePack:"circle-packing chart",OrbitDiagram:"orbit diagram",ChoroplethMap:"choropleth map",ProportionalSymbolMap:"proportional-symbol map",FlowMap:"flow map",DistanceCartogram:"distance cartogram",BigNumber:"single value",StreamPhysicsFrame:"physics stream frame",EventDropChart:"event-drop physics chart",GaltonBoardChart:"Galton board chart",PhysicsPileChart:"physics pile chart",CollisionSwarmChart:"collision swarm chart",PhysicalFlowChart:"physical flow chart",ProcessFlowChart:"process flow physics chart",PhysicsCustomChart:"custom physics chart"},Lt=new Set(["ForceDirectedGraph","SankeyDiagram","ProcessSankey","ChordDiagram"]),Rt=new Set(["StreamPhysicsFrame","EventDropChart","GaltonBoardChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","GauntletChart","PhysicsCustomChart"]);function Tt(e){return It[e]||e.replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase()+" chart"}function Ft(e){const t="number"==typeof e?e:"string"==typeof e?Number(e):NaN;return Number.isFinite(t)?t:void 0}var Et=new Set(["Scatterplot","BubbleChart","ConnectedScatterplot","QuadrantChart","ScatterplotMatrix"]),Nt={"outlier-detection":"alerting","change-detection":"alerting",trend:"tracking","composition-over-time":"apportioning","compare-series":"comparing","compare-categories":"comparing",rank:"ranking","part-to-whole":"apportioning",distribution:"characterizing",correlation:"relating",flow:"tracing",hierarchy:"nesting",geo:"locating"},Ot={"time-series":"tracking",categorical:"comparing",distribution:"characterizing",relationship:"relating",flow:"tracing",network:"tracing",hierarchy:"nesting",geo:"locating",realtime:"tracking",value:"presenting",custom:"presenting"},Dt=["trend","compare-series","compare-categories","rank","part-to-whole","distribution","correlation","flow","hierarchy","geo","composition-over-time","change-detection","outlier-detection"],zt={alerting:"alerting",tracking:"trend",comparing:"comparison",ranking:"ranking",apportioning:"composition",characterizing:"distribution",relating:"correlation",tracing:"flow",nesting:"hierarchy",locating:"locator",presenting:"single-value"};function qt(e,t){const r=function(e){if(e){if("fits"in e||"buildProps"in e){const t=e,r={};for(const[e,n]of Object.entries(t.intentScores))"number"==typeof n&&Number.isFinite(n)&&(r[e]=n);return{family:t.family,intentScores:Object.keys(r).length?r:void 0}}return e}}(t);if(r?.act)return r.act;if(r?.intentScores){const e=function(e){let t,r=0;for(const[n,o]of Object.entries(e))if("number"==typeof o&&o>0)if(o>r)t=n,r=o;else if(o===r&&void 0!==t){const e=Dt.indexOf(n),r=Dt.indexOf(t);-1===e||-1!==r&&e>=r||(t=n)}return t}(r.intentScores);if(e&&Nt[e]&&(r.intentScores[e]??0)>=3)return Nt[e]}return r?.family?Ot[r.family]:function(e){return jt.has(e)||"StackedAreaChart"===e?"apportioning":Et.has(e)?"relating":At.has(e)?"comparing":$t.has(e)?"characterizing":St.has(e)?"tracking":Lt.has(e)?"tracing":"BigNumber"===e?"presenting":void 0}(e)}var _t=new Set(["y-threshold","x-threshold","band","x-band","callout","label"]),Ht=new Set(["system","agent","watcher"]),Gt=new Set(["ai","agent","system","computed","dbt","great-expectations"]),Vt=new Set(["rule","statistical-test","llm-inference","computed"]);function Ut(e){const t=e.annotations;return!!Array.isArray(t)&&t.some(e=>{if(!e||"object"!=typeof e)return!1;const t=e;if("string"!=typeof t.type||!_t.has(t.type))return!1;const r=t.provenance;return!(!r||"object"!=typeof r)&&(Ht.has(r.authorKind)||Gt.has(r.source)||Vt.has(r.basis))})}function Yt(e="en"){let t,r;try{t=new Intl.NumberFormat(e,{notation:"compact",maximumFractionDigits:1}),r=new Intl.NumberFormat(e,{maximumFractionDigits:2})}catch{t=new Intl.NumberFormat("en",{notation:"compact",maximumFractionDigits:1}),r=new Intl.NumberFormat("en",{maximumFractionDigits:2})}return e=>Number.isFinite(e)?1e4>Math.abs(e)?r.format(e):t.format(e):e+""}var Qt={"y-threshold":"a threshold line","x-threshold":"a threshold line",band:"a highlighted band","x-band":"a highlighted band",label:"a label",callout:"a callout","callout-circle":"a callout","callout-rect":"a callout",text:"a text note",bracket:"a bracket",enclose:"an enclosure","rect-enclose":"an enclosure",highlight:"a highlight",widget:"a widget",trend:"a trend line",envelope:"an envelope","anomaly-band":"an anomaly band",forecast:"a forecast","category-highlight":"a category highlight"};function Xt(e){const t=Qt["string"==typeof e.type?e.type:"annotation"]||"an annotation",r=function(e){const t=e.provenance&&"object"==typeof e.provenance?e.provenance:null,r=t?.authorKind??t?.source??t?.basis;return"watcher"===r?"a watcher-flagged ":"agent"===r||"ai"===r||"llm-inference"===r?"an AI-suggested ":""}(e),n=r?r+t.replace(/^an? /,""):t,o="string"==typeof e.label?e.label:"string"==typeof e.title?e.title:void 0;return o?`${n} labeled "${o}"`:n}function Zt(e){const t=Array.isArray(e.annotations)?e.annotations:null;if(!t||0===t.length)return;const r=Pt(t.filter(e=>!!e&&"object"==typeof e));if(0===r.length)return;const n=r.map(Xt),o=n.slice(0,5),i=n.length-o.length,s=function(e){return e.length>1?2===e.length?`${e[0]} and ${e[1]}`:`${e.slice(0,-1).join(", ")}, and ${e[e.length-1]}`:e[0]??""}(o)+(i>0?`, and ${i} more`:""),a=r.length;return`The author has marked ${1===a?"one feature":a+" features"} on this chart: ${s}.`}function Kt(e,t,r={}){const n=void 0!==r.levels,o=new Set(r.levels??["l1","l2","l3"]);n||!r.capability&&!Ut(t)||o.add("l4");const i=pt(e,t,r.recipe);if(i){const e=["l1","l2","l3","l4"].filter(e=>o.has(e));n||e.includes("l4")||e.push("l4");const s=function(e,t,r={}){const n=ut(t),o=dt(t),i=r.locale??"en",s="function"==typeof e.description?e.description({data:n,config:o,locale:i}):void 0,a=s?.levels??function(e,t,r,n){const o=ft(e,["nominal","ordinal"]),i=ft(e,["quantitative"]),s=o?yt(o,r,t):void 0,a=i?yt(i,r,t):void 0,l=o?.role??s??"category",c=i?.role??a??"value",d=e.encodings??[],u=d.length?d.slice(0,3).map(e=>e.meaning.replace(/\.$/,"")).join("; "):`${l} and ${c} are mapped through the recipe's declared visual semantics`,{number:p,percent:y}=function(e){try{return{number:new Intl.NumberFormat(e,{maximumFractionDigits:2}),percent:new Intl.NumberFormat(e,{style:"percent",maximumFractionDigits:1})}}catch{return{number:new Intl.NumberFormat("en",{maximumFractionDigits:2}),percent:new Intl.NumberFormat("en",{style:"percent",maximumFractionDigits:1})}}}(n),h=new Map;if(s&&a)for(const e of t){const t=(e[s]??"Uncategorized")+"",r=Number(e[a]);Number.isFinite(r)&&h.set(t,(h.get(t)??0)+r)}const f=[...h].sort((e,t)=>t[1]-e[1]),m=f.reduce((e,[,t])=>e+t,0),b=f[0],g=f[1],v=m>0?((b?.[1]??0)+(g?.[1]??0))/m:0,x=e.intents.map(e=>({id:ct(e),strength:"string"==typeof e?void 0:e.strength})).sort((e,t)=>"primary"===e.strength?-1:"primary"===t.strength?1:0)[0]?.id,k=e.audience?.primary??e.audienceFit?.find(e=>"strong"===e.fit)?.audience;return{l1:`A ${e.name.toLowerCase()} encodes ${l} and ${c}. ${C=u,C?C.charAt(0).toUpperCase()+C.slice(1):C}.`,l2:f.length>0?`${f.length} categories total ${p.format(m)}. ${b[0]} accounts for ${p.format(b[1])}${m>0?` (${y.format(b[1]/m)})`:""}${g?`, followed by ${g[0]} at ${p.format(g[1])}`:""}.`:`${t.length} data ${1===t.length?"item is":"items are"} represented.`,l3:2>f.length?b?b[0]+" is the only represented category.":"No quantitative pattern can be derived from the available data.":.5>v?`The total is distributed across ${f.length} categories without the first two forming a majority.`:`Most of the total is concentrated in ${b[0]} and ${g[0]}, which together account for ${y.format(v)}.`,l4:`The chart is intended for ${x??"explanation"}${k?` with a ${k} audience`:""}: ${e.designContract.whyCustom}`};var C}(e,n,o,i),l=r.levels??["l1","l2","l3","l4"],c={};for(const e of l)a[e]&&(c[e]=a[e]);const d=["l1","l2","l3","l4"].map(e=>c[e]).filter(e=>!!e).join(" "),u=r.includeCaveats?[...e.reception?.risks??[],...e.caveats??[],...(e.designContract.misuse??[]).map(e=>"Misuse: "+e)]:void 0;return{text:d,levels:c,...u?.length?{caveats:u}:{}}}(i,t,{levels:e,locale:r.locale,audience:r.audience,includeCaveats:r.includeCaveats}),a=Zt(t);return{...s,text:a?`${a} ${s.text}`.trim():s.text,...a?{annotations:a}:{}}}const s=Yt(r.locale??"en"),a=Tt(e),l=Array.isArray(t.data)?t.data:null,c=Bt(t),d=Rt.has(e)?function(e,t){const r=e.physics&&"object"==typeof e.physics?e.physics:null,n=e.settledProjection&&"object"==typeof e.settledProjection?e.settledProjection:null,o=[e.settledProjectionRows,e.projectionRows,n?.rows,r?.settledProjectionRows,r?.projectionRows,r?.settledProjection&&"object"==typeof r.settledProjection?r.settledProjection.rows:void 0].find(e=>Array.isArray(e));return Array.isArray(o)?o.map((e,r)=>{if(!e||"object"!=typeof e)return null;const n=e,o=Ft(n.count??n.value??n.total??n.bodies??n.events);if(null==o)return null;const i=n.label??n.id??n.name??"container "+(r+1),s=Ft(n.secondary??n.secondaryCount),a=Ft(n.observed??n.observedCount);return{label:Wt(i,t),count:o,...null!=s?{secondary:s}:{},..."string"==typeof n.secondaryLabel&&n.secondaryLabel?{secondaryLabel:n.secondaryLabel}:{},...null!=a?{observed:a}:{}}}).filter(e=>null!=e):null}(t,s):null,{measure:u,measureFallback:p,dimension:y,dimensionFallback:h}=Mt(e,t),f="string"==typeof u&&u?u:p,m="string"==typeof y&&y?y:h,b={};if(Rt.has(e)&&function(e,t,r,n,o,i){const s=function(e){return"EventDropChart"===e?"time window":"GaltonBoardChart"===e?"bin":"CollisionSwarmChart"===e?"group lane":"PhysicalFlowChart"===e?"flow node":"container"}(e),a=function(e){return"EventDropChart"===e?"event":"GaltonBoardChart"===e?"sample":"CollisionSwarmChart"===e?"point":"PhysicalFlowChart"===e?"packet":"body"}(e);if(o.has("l1")&&(n.l1=function(e,t){return"EventDropChart"===e?"An event-drop physics chart that collapses moving events into a settled projection by event-time window.":"GaltonBoardChart"===e?"A Galton board chart that collapses falling samples into a settled histogram projection.":"PhysicsPileChart"===e?"A physics pile chart that collapses moving bodies into a settled bar-style projection by container.":"CollisionSwarmChart"===e?"A collision swarm chart that separates overlapping points while preserving their quantitative axis position.":"PhysicalFlowChart"===e?"A physical flow chart that keeps authored routes visible while packet bodies show throughput and proximity events.":`A ${t} whose accessible reading is the settled projection rather than individual trajectories.`}(e,t)),!o.has("l2")&&!o.has("l3"))return;if(!r||0===r.length)return void(o.has("l2")&&(n.l2="No settled projection is loaded yet."));const l=r.reduce((e,t)=>e+t.count,0),c=r.filter(e=>e.count>0).sort((e,t)=>t.count-e.count),d=c[0]??r.slice().sort((e,t)=>t.count-e.count)[0];if(!d)return;const u=r.reduce((e,t)=>e+(t.secondary??0),0),p=r.find(e=>e.secondaryLabel)?.secondaryLabel??"secondary";if(o.has("l2"))if(0===c.length)n.l2=`The settled projection contains ${i(l)} ${er(l,a)} across ${r.length} ${er(r.length,s)}; no ${er(2,s)} are non-empty yet.`;else{const e=u>0?` ${i(u)} ${er(u,a)} ${1===u?"is":"are"} marked ${p}.`:"";n.l2=`The settled projection contains ${i(l)} ${er(l,a)} across ${r.length} ${er(r.length,s)}; ${c.length} ${er(c.length,s)} ${1===c.length?"is":"are"} non-empty. The largest ${s} is ${d.label} with ${i(d.count)} ${er(d.count,a)}.${e}`}if(o.has("l3")&&l>0&&c.length>0){const e=c.find(e=>e!==d),t=function(e,t){if(0>=t)return"0%";const r=e/t*100;return(10>r?Math.round(10*r)/10:Math.round(r))+"%"}(d.count,l);n.l3=e?`The settled projection is most concentrated in ${d.label}, which holds ${i(d.count)} ${er(d.count,a)} (${t}); ${e.label} follows with ${i(e.count)} ${er(e.count,a)}.`:`The settled projection is concentrated in ${d.label}, which holds all ${i(d.count)} ${er(d.count,a)}.`}}(e,a,d,b,o,s),o.has("l1")&&!Rt.has(e))if(St.has(e)||At.has(e))b.l1=`A ${a} of ${f} by ${m}`+(c?`, split by ${c}.`:".");else if(jt.has(e))b.l1=`A ${a} showing ${f} across ${m} categories.`;else if($t.has(e))b.l1=`A ${a} of the distribution of ${f}`+(c?` by ${c}.`:".");else if(Lt.has(e)){const e=Array.isArray(t.nodes)?t.nodes.length:void 0,r=Array.isArray(t.edges)?t.edges.length:void 0,n=[null!=e?`${e} ${er(e,"node")}`:null,null!=r?`${r} ${er(r,"edge")}`:null].filter(Boolean);b.l1=`A ${a}${n.length?" with "+n.join(" and "):""}.`}else if("BigNumber"===e){const e="string"==typeof t.label?t.label:f;b.l1=`A single value${e?" for "+e:""}.`}else b.l1=`A ${a}.`;const g=St.has(e)||At.has(e)||jt.has(e)||$t.has(e);let v=null;if((o.has("l2")||o.has("l3")||o.has("l4"))&&g&&l&&l.length>0&&(v=function(e,t,r,n){let o=0,i=0,s=1/0,a=-1/0,l=null,c=null,d=0,u=0,p=null,y=null,h=NaN,f=NaN;for(const r of e){const e=t(r);Number.isFinite(e)&&(0===o&&(h=e,p=r),f=e,y=r,s>e&&(s=e,l=r,d=o),e>a&&(a=e,c=r,u=o),o++,i+=e)}return 0===o?null:{count:o,min:s,max:a,mean:i/o,minLabel:Wt(null!=l?r(l):null,n),maxLabel:Wt(null!=c?r(c):null,n),first:h,last:f,firstLabel:Wt(null!=p?r(p):null,n),lastLabel:Wt(null!=y?r(y):null,n),minIndex:d,maxIndex:u}}(l,Ct(u,p),wt(y,h),s)),o.has("l2")&&g&&(l&&0!==l.length?v&&(b.l2=jt.has(e)?`${v.count} segments totaling ${s(function(e){return e.mean*e.count}(v))}. Largest is ${v.maxLabel} at ${s(v.max)}; smallest is ${v.minLabel} at ${s(v.min)}.`:`${f} ranges from ${s(v.min)} (${v.minLabel}) to ${s(v.max)} (${v.maxLabel}), with a mean of ${s(v.mean)} across ${v.count} points.`):b.l2="No data is loaded yet."),o.has("l3")&&v&&!c&&St.has(e)?b.l3=function(e,t,r){const{first:n,last:o,min:i,max:s,maxLabel:a,minLabel:l,firstLabel:c,lastLabel:d,minIndex:u,maxIndex:p,count:y}=e,h=s-i,f=o-n;if(0===h)return`${Jt(t)} is constant at ${r(n)} across the series.`;if(.04>h/(Math.abs(e.mean)||1))return`${Jt(t)} ends roughly where it started (${r(n)} at ${c} to ${r(o)} at ${d}), ranging between ${r(i)} and ${r(s)}.`;const m=p>0&&y-1>p,b=u>0&&y-1>u,g=(s-Math.max(n,o))/h,v=(Math.min(n,o)-i)/h;return m&&g>.15?`Overall ${t} climbs to a peak of ${r(s)} (${a}), then falls to ${r(o)} (${d}).`:b&&v>.15?`Overall ${t} drops to a low of ${r(i)} (${l}), then recovers to ${r(o)} (${d}).`:.05>Math.abs(f)/h?`${Jt(t)} ends roughly where it started (${r(n)} at ${c} to ${r(o)} at ${d}), ranging between ${r(i)} and ${r(s)}.`:f>0?p===y-1?`Overall ${t} rises from ${r(n)} (${c}) to a peak of ${r(o)} (${d}).`:`Overall ${t} rises from ${r(n)} (${c}) to ${r(o)} (${d}), after peaking at ${r(s)} (${a}).`:u===y-1?`Overall ${t} falls from ${r(n)} (${c}) to a low of ${r(o)} (${d}).`:`Overall ${t} falls from ${r(n)} (${c}) to ${r(o)} (${d}), after dipping to ${r(i)} (${l}).`}(v,f,s):o.has("l3")&&v&&!c&&At.has(e)&&(b.l3=`The highest ${m} is ${v.maxLabel} and the lowest is ${v.minLabel}.`),o.has("l4")){const n=Ut(t)?"alerting":qt(e,r.capability);n&&(b.l4=function(e,t,r,n,o,i,s,a){const l=zt[e],c=/^[aeiou]/i.test(l)?"an":"a";let d,u;switch(e){case"locating":d="This is a map",u="read values by location";break;case"presenting":d="This is a single-value display",u=`read ${"string"==typeof r.label&&r.label?r.label:o} as the headline number`;break;case"tracing":d=`This is ${c} ${l} chart`,u="follow the movement between states";break;case"nesting":d=`This is ${c} ${l} chart`,u="read it for nested structure and how children sum into their parents";break;case"relating":d=`This is ${c} ${l} chart`,u=`read it for whether ${i} and ${o} move together`;break;default:d=`This is ${c} ${l} chart`,u=function(e,t,r,n,o,i){if(!t)switch(e){case"alerting":return"watch for points that break from the rest";case"tracking":return"read it for the overall direction of "+r;case"comparing":return`compare ${r} across ${n}`;case"ranking":return"read it top to bottom by "+r;case"apportioning":return`read each ${n}'s share of the whole`;case"characterizing":return"read it for the spread and shape of "+r;default:return"read the highlighted features"}switch(e){case"alerting":return function(e,t,r){if(At.has(r)||jt.has(r))return`${e.maxLabel} stands out at ${t(e.max)} — check it first`;const{first:n,last:o,min:i,max:s,minLabel:a,maxLabel:l,lastLabel:c,minIndex:d,maxIndex:u,count:p}=e,y=s-i;if(y>0){const e=u>0&&p-1>u,r=d>0&&p-1>d,h=(s-Math.max(n,o))/y,f=(Math.min(n,o)-i)/y;if(e&&h>.15)return`the peak of ${t(s)} at ${l} is the point to investigate`;if(r&&f>.15)return`the dip to ${t(i)} at ${a} is the point to investigate`;if(o>=s)return`the climb to ${t(o)} at ${c} warrants a closer look`;if(i>=o)return`the drop to ${t(o)} at ${c} warrants a closer look`}return`the extremes — ${l} (${t(s)}) and ${a} (${t(i)}) — are the points to check`}(t,o,i);case"tracking":return`read it for the trajectory of ${r}, which ${function(e){const t=e.max-e.min,r=e.last-e.first;return 0===t||.05>Math.abs(r)/t?"holds roughly steady":r>0?"rises":"falls"}(t)} from ${o(t.first)} (${t.firstLabel}) to ${o(t.last)} (${t.lastLabel})`;case"comparing":return`compare ${r} across ${n}; ${t.maxLabel} leads at ${o(t.max)}`;case"ranking":return`read it top to bottom by ${r}; ${t.maxLabel} ranks highest at ${o(t.max)}`;case"apportioning":{const e=t.mean*t.count,r=e>0?Math.round(t.max/e*100):null;return`read each ${n}'s share of the ${o(e)} total; ${t.maxLabel} is the largest at ${o(t.max)}${null!=r?` (${r}%)`:""}`}case"characterizing":return`read it for the spread of ${r}, from ${o(t.min)} to ${o(t.max)}`;default:return"read the highlighted features"}}(e,n,o,i,s,t)}return`${d}; ${u}.${function(e,t){if(!t)return"";const r=t.familiarity?.[e];return"number"!=typeof r||r>2?"":` This ${Tt(e)} may be unfamiliar${t.name?` to ${t.name.toLowerCase()} readers`:""} — lean on this description.`}(t,a)}`}(n,e,t,c?null:v,f,m,s,r.audience))}const x=["l1","l2","l3","l4"].filter(e=>o.has(e)&&b[e]).map(e=>b[e]).join(" "),k=Zt(t);return{text:k?`${k} ${x}`.trim():x,levels:b,...k?{annotations:k}:{}}}function Jt(e){return e.length?e[0].toUpperCase()+e.slice(1):e}function er(e,t){return 1!==e&&"body"===t?"bodies":1===e?t:t+"s"}function tr(e){return((e??"unknown")+"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function rr(e,t,r={}){const n=r.locale??"en",o=Math.max(1,r.maxLeaves??200),i=Yt(n),s=pt(e,t,r.recipe);if(s)return function(e,t,r={}){const n=ut(t),o=dt(t),i=Math.max(1,r.maxLeaves??200);if("function"==typeof e.navigation)return e.navigation({data:n,config:o,locale:r.locale??"en"});const s=(a=e.navigation)&&"object"==typeof a?e.navigation:void 0;var a;const l=(s?.groupByRole?ht(e,s.groupByRole):void 0)??(s?.groupBy?.[0]?ht(e,s.groupBy[0])??e.dataRoles.find(e=>e.field===s.groupBy?.[0]):void 0)??ft(e,["nominal","ordinal"]),c=l?yt(l,o,n):void 0,d=(s?.idRole?ht(e,s.idRole):void 0)??ft(e,["identifier"]),u=d?yt(d,o,n):void 0,p={id:"root",role:"chart",label:s?.summaryTemplate?mt(s.summaryTemplate,void 0,e,o,n,{count:n.length}):`${e.name}: ${n.length} ${1===n.length?"item":"items"} represented.`,level:1,children:[]};let y=0;const h=(t,r,i)=>{const a=u?t[u]:void 0,l=s?.itemLabelTemplate?mt(s.itemLabelTemplate,t,e,o,n,{count:n.length}):function(e,t,r,n){const o=ft(t,["nominal","ordinal"]),i=t.dataRoles.filter(e=>"quantitative"===e.semanticType),s=o?yt(o,r,n):void 0,a=[];s&&null!=e[s]&&a.push(e[s]+"");for(const t of i){const o=yt(t,r,n);o&&null!=e[o]&&a.push(`${t.role}: ${e[o]+""}`)}return a.length>0?a.join(", "):"Data item"}(t,e,o,n);return{id:"datum-"+tr(a??r),role:"datum",label:l,level:i,datum:t}};if(c){const e=new Map;for(const t of n){const r=(t[c]??"Uncategorized")+"",n=e.get(r);n?n.push(t):e.set(r,[t])}p.children=[...e].map(([e,t],r)=>{const n=t.slice(0,Math.max(0,i-y));y+=n.length;const o=n.map((e,t)=>h(e,1e5*r+t,3));return t.length>n.length&&o.push({id:"more-"+tr(e),role:"datum",label:`…and ${t.length-n.length} more items`,level:3}),{id:"group-"+tr(e),role:"series",label:`${e}: ${t.length} ${1===t.length?"item":"items"}.`,level:2,children:o}})}else{const e=n.slice(0,i);p.children=e.map((e,t)=>h(e,t,2)),n.length>e.length&&p.children.push({id:"more",role:"datum",label:`…and ${n.length-e.length} more items`,level:2})}return p}(s,t,{maxLeaves:o,locale:n});const a={id:"root",role:"chart",label:Kt(e,t,{locale:n}).text||"Chart.",level:1,children:[]},l=function(e,t){const r=Array.isArray(e.annotations)?e.annotations:null;if(!r)return null;const n=Pt(r.filter(e=>!!e&&"object"==typeof e));if(0===n.length)return null;let o=0;const i=n.slice(0,t).map(e=>{const t=e.lifecycle?.status,r=t&&"accepted"!==t?` (${t})`:"";return{id:"annotation-"+o++,role:"annotation",level:3,label:`${n=Xt(e),n?n.charAt(0).toUpperCase()+n.slice(1):n}${r}.`,datum:e};var n});n.length>t&&i.push({id:"annotation-"+o++,role:"annotation",level:3,label:`…and ${n.length-t} more annotations.`});const s=n.length;return{id:"annotations",role:"annotation",level:2,label:`Annotations: ${1===s?"one marked feature":s+" marked features"}.`,children:i}}(t,o),c=Array.isArray(t.data)?t.data:null,d=St.has(e)||At.has(e)||jt.has(e)||$t.has(e);if(!c||0===c.length||!d)return l&&(a.children=[l]),a;const{measure:u,measureFallback:p,dimension:y,dimensionFallback:h}=Mt(e,t),f=Ct(u,p),m=wt(y,h),b="string"==typeof u&&u?u:p,g="string"==typeof y&&y?y:h,v=Bt(t);let x=0;const k=e=>`${e}-${x++}`,C=(e,t)=>{const r=e.slice(0,o).map(e=>((e,t)=>{const r=f(e),n=Wt(m(e),i);return{id:k("datum"),role:"datum",level:t,label:`${n}: ${Number.isFinite(r)?i(r):"—"}`,value:Number.isFinite(r)?r:void 0,datum:e}})(e,t));return e.length>o&&r.push({id:k("more"),role:"datum",level:t,label:`…and ${e.length-o} more points`}),r},w=[];if(St.has(e)||At.has(e)){let t=1/0,r=-1/0,n=1/0,o=-1/0;const s=[];let a=!0;for(const e of c){const i=f(e);Number.isFinite(i)&&(t>i&&(t=i),i>r&&(r=i));const l=m(e);s.push(l),"number"==typeof l&&Number.isFinite(l)?(n>l&&(n=l),l>o&&(o=l)):a=!1}const l=new Set,d=[];for(const e of s){const t=e+"";l.has(t)||(l.add(t),d.push(e))}const u=a?`${i(n)} to ${i(o)}`:`${Wt(d[0],i)} to ${Wt(d[d.length-1],i)} (${At.has(e)?d.length+" categories":c.length+" points"})`;w.push({id:k("axis"),role:"axis",level:2,label:`${At.has(e)?"Category axis":"X axis"}: ${g}, ${u}.`}),t>r||w.push({id:k("axis"),role:"axis",level:2,label:`Value axis: ${b}, ${i(t)} to ${i(r)}.`})}if(v){const r=wt(v,v),o=new Map;for(const e of c){const t=(r(e)??"—")+"",n=o.get(t);n?n.push(e):o.set(t,[e])}const i=[];for(const[r,s]of o){const o=Kt(e,{...t,data:s},{levels:["l2","l3"],locale:n}).text;i.push({id:k("series"),role:"series",level:2,label:`Series ${r}: ${o}`,children:C(s,3)})}a.children=[...w,...i]}else a.children=[...w,...C(c,2)];return l&&a.children.push(l),a}var nr=new Set(["StreamPhysicsFrame","EventDropChart","GaltonBoardChart","PhysicsPileChart","CollisionSwarmChart","PhysicalFlowChart","ProcessFlowChart","PhysicsCustomChart"]);function or(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function ir(e){return or(e)?e:void 0}function sr(e){const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:void 0}function ar(e){const t=sr(e);return null==t?void 0:Math.max(0,Math.floor(t))}function lr(...e){return e.map(ir).find(Boolean)}function cr(...e){return e.find(Array.isArray)}function dr(e){const t={};for(const[r,n]of Object.entries(e))void 0!==n&&(t[r]=n);return t}function ur(e,t){return 1!==e&&"body"===t?"bodies":1===e?t:t+"s"}function pr(e){return Number.isInteger(e)?e+"":Math.round(1e3*e)/1e3+""}function yr(e,t,r){const n=e?.filter(e=>!0===ir(e)?.sensor).length,o=ir(t?.observation),i=ir(o?.sensors),s=cr(r?.activeSensors);return Math.max(n??0,i?Object.keys(i).length:0,s?.length??0)||void 0}var hr={info:"#2563eb",warning:"#d97706",error:"#dc2626"},fr=240;function mr(e){if("string"==typeof e)return e;try{return JSON.stringify(e,null,2)??e+""}catch{return e+""}}function br(e,t){return null==t?e.findings:e.findings.slice(0,Math.max(0,t))}function gr(...e){for(const t of e){const e=t?.trim();if(e)return e}return"Review this finding."}function vr(e){return gr(e.remediation,e.explanation,e.evidence,e.condition)}function xr(e){return gr(e.name,e.ruleId)}function kr(e,t){return e.domain?`${t} · ${e.domain}`:t}function Cr(e,t){return t[e]??t.info??hr.info}function wr(e,t){return`${function(e){return gr(e.ruleId,e.name)}(e)}:${t}`}function Sr(e,t={},r=0,n={kind:"image",findings:[e]}){const o=t.sourcePrefix??"datapitfalls";return{id:wr(e,r),level:(i=e.severity,"error"===i?"error":"warning"===i?"warning":"info"===i?"info":"neutral"),title:xr(e),message:t.message?t.message(e,r,n):vr(e),source:kr(e,o),...void 0===t.dismissible?{}:{dismissible:t.dismissible}};var i}function Ar(e,t={}){return br(e,t.max).map((r,n)=>Sr(r,t,n,e))}function jr(e,t={}){return{notifications:Ar(e,t),meta:{count:e.findings.length,kind:e.kind}}}function $r(e,t={},r=0,n={kind:"image",findings:[e]}){const o={...hr,...t.palette},i=t.anchorFor?.(e,r,n);return{...i??{},type:t.type??"label",title:xr(e),label:vr(e),wrap:t.wrap??fr,color:Cr(e.severity,o),className:(s=e.severity,"pitfall-"+(s+"").toLowerCase().replace(/[^a-z0-9_-]/g,"-")),emphasis:"error"===e.severity?"primary":"secondary",provenance:{author:"datapitfalls",authorKind:"watcher",source:"computed",basis:"llm-inference",stableId:e.ruleId},dataPitfall:{ruleId:e.ruleId,domain:e.domain,severity:e.severity,evidence:e.evidence??""}};var s}function Mr(e,t={}){return br(e,t.max).map((r,n)=>$r(r,t,n,e))}function Br(e,t={}){return{annotations:Mr(e,t),meta:{count:e.findings.length,kind:e.kind}}}function Wr(e,t,r){return{role:e,artifact:{kind:"text",content:t,...r?{filename:r}:{}}}}function Pr(e,t,r,n){return{role:e,artifact:{kind:"code",content:t,language:r,...n?{filename:n}:{}}}}function Ir(e,t,r={}){const n=[],o=!1!==r.includeConfig,i=!1!==r.includeJSX,s=!1!==r.includeGrounding,a=!1!==r.includeDiagnostics,l=!1!==r.includeAccessibility,c=r.filenamePrefix??e,d=function(e,t,r){const n=we(e)??Se(t.recipe)??Se(t.recipeId);if(n)return function(e,t,r){const n=function(e,t,r){const n={};for(const[o,i]of Object.entries(e))if(null!=i&&!gt.has(o)&&"recipeId"!==o&&(t||!xt(o,i)))if("function"==typeof i||i?.$$typeof){if(r)throw Error(`Portable recipe prop "${o}" is not JSON-safe.`)}else if(ke(i))n[o]=kt(i);else if(r)throw Error(`Portable recipe prop "${o}" is not JSON-safe.`);return n}(t,!1!==r?.includeData,"portable"===e.portability),o=e.intents.map(ct).filter(e=>!!e),i={name:e.name,intents:o,...e.audience?.primary?{audience:[e.audience.primary]}:{},frameFamily:e.frameFamily};if("portable"===e.portability){if(!ke(n))throw Error(`Portable recipe "${e.id}" contains non-JSON-safe props or layoutConfig.`);return{component:"ChartRecipe",recipeId:e.id,portable:!0,props:n,manifest:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}return{component:"ChartRecipe",recipeId:e.id,portable:!1,reason:"Recipe contains or may depend on non-serializable local layout callbacks.",warnings:["This config is inspectable but cannot be rendered remotely by CLI or MCP."],props:n,manifest:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}(n,t,r);if(!function(e){return lt.has(e)}(e))throw Error(`Unknown component "${e}". Known components: ${at.join(", ")}`);const o=!1!==r?.includeData,i={};for(const[e,r]of Object.entries(t))null!=r&&(gt.has(e)||!o&&xt(e,r)||"function"!=typeof r&&(r?.$$typeof||(i[e]=kt(r))));return{component:e,props:i,version:bt,createdAt:(new Date).toISOString(),...r?.selections?{selections:r.selections}:{}}}(e,t,r.config);r.context?.trim()&&n.push(Wr("Analysis context",r.context.trim(),c+".context.md")),o&&n.push(Pr("Semiotic chart config",mr(d),"json",c+".semiotic-config.json")),i&&n.push(Pr("Semiotic chart JSX",function(e){const{props:t}=e,r=["<"+("LocalChartRecipe"===e.component?"ChartRecipe":e.component)];e.recipeId&&r.push(` recipeId="${e.recipeId}"`);for(const[e,n]of Object.entries(t))if("string"==typeof n)r.push(` ${e}="${n}"`);else if("boolean"==typeof n&&!0===n)r.push(" "+e);else if("boolean"==typeof n&&!1===n)r.push(` ${e}={false}`);else if("number"==typeof n)r.push(` ${e}={${n}}`);else{const t=JSON.stringify(n);r.push(80>t.length?` ${e}={${t}}`:` ${e}={${JSON.stringify(n,null,2)}}`)}return r.push("/>"),r.join("\n")}(d),"jsx",c+".semiotic.jsx"));var u;const p=(y=(u=r.rendered?.image,null==u?[]:Array.isArray(u)?u:[u])).length>0?{role:"Rendered chart image",artifact:{kind:"image",images:y}}:null;var y;let h,f,m;return p&&n.push(p),r.rendered?.svg?.trim()&&n.push(Pr("Rendered chart SVG",r.rendered.svg.trim(),"svg",c+".rendered.svg")),null!=r.rendered?.evidence&&n.push(Wr("Semiotic render evidence",[e+": Semiotic render evidence","\n```json",mr(r.rendered.evidence),"```"].join("\n"),c+".render-evidence.md")),s&&(h=function(e,t,r={}){const{capability:n,audience:o,locale:i}=r,s=r.levels??["l1","l2","l3"],a=!1!==r.includeStructure,l=qt(e,n),c=Kt(e,t,{levels:l?[...s,"l4"]:s,locale:i,capability:n,audience:o}),{l4:d,...u}=c.levels,p=["l1","l2","l3"].map(e=>c.levels[e]).filter(Boolean).join(" "),y={levels:u,text:c.annotations?`${c.annotations} ${p}`.trim():p,...c.annotations?{annotations:c.annotations}:{}};let h;if(l&&d){const e=(f=n)?"fits"in f||"buildProps"in f?{family:f.family}:{family:f.family,intentScores:f.intentScores}:{};h={act:l,sentence:d,family:e.family,intentScores:e.intentScores}}var f;const m=a?rr(e,t,{maxLeaves:r.maxLeaves,locale:i}):void 0,b=function(e,t,r){if(!1===r)return;const n=or(r)?r:void 0,o=ir(t.physics),i=lr(n?.snapshot,o?.snapshot,t.physicsSnapshot,function(e){const t=ir(e);return!!t&&(or(t.world)||"simulationState"in t||"liveBodyOrder"in t)}(t.snapshot)?t.snapshot:void 0),s=lr(n?.evidence,o?.evidence,t.physicsEvidence,t.settledEvidence),a=lr(n?.config,o?.config,i?.config,t.config),l=lr(ir(i?.world),ir(o?.world)),c=lr(ir(a?.kernel),ir(l?.options)),d=cr(l?.bodies),u=cr(l?.colliders,a?.colliders),p=cr(i?.queue,o?.queue),y=cr(i?.liveBodyOrder),h=cr(l?.springs),f=cr(i?.activeSensorPairs),m=function(e){if(!e||0===e.length)return;const t=e.map((e,t)=>{const r=ir(e);if(!r)return;const n=sr(r.count??r.value??r.total??r.bodies??r.events);if(null==n)return;const o=(r.label??r.id??r.name??"container "+(t+1))+"",i=null==r.id?void 0:r.id+"",s=sr(r.secondary??r.secondaryCount),a=sr(r.observed??r.observedCount);return dr({id:i,label:o,count:n,secondary:s,secondaryLabel:"string"==typeof r.secondaryLabel?r.secondaryLabel:void 0,observed:a})}).filter(e=>null!=e);if(0===t.length)return;const r=t.reduce((e,t)=>e+t.count,0),n=t.filter(e=>e.count>0).length,o=t.slice().sort((e,t)=>t.count-e.count)[0];return{rows:t,totalCount:r,populatedCount:n,...o?{leader:o}:{}}}(function(e,t,r,n){const o=ir(e.settledProjection),i=ir(t?.settledProjection);return cr(r?.projectionRows,r?.aggregates,e.settledProjectionRows,e.projectionRows,o?.rows,t?.settledProjectionRows,t?.projectionRows,i?.rows,n?.binCounts)}(t,o,n,s)),b=function(e,t){const r=e?.map((e,t)=>{const r=ir(e);if(!r)return;const n=sr(r.count)??0,o=sr(r.total),i={label:(r.label??r.id??"sediment "+(t+1))+"",count:n};return null!=r.id&&(i.id=r.id+""),null!=o&&(i.total=o),i}).filter(e=>null!=e),n=ar(t?.bins)??r?.length??0,o=sr(t?.count)??r?.reduce((e,t)=>e+t.count,0)??0,i=sr(t?.total)??r?.reduce((e,t)=>e+(t.total??0),0),s=r?.slice().sort((e,t)=>t.count-e.count)[0];if(0!==n||0!==o||i)return{bins:n,count:o,...null!=i&&i>0?{total:i}:{},...s?{leader:s}:{}}}(cr(n?.sediment,o?.sediment,i?.sediment),lr(n?.sedimentTotals,o?.sedimentTotals)),g=y?.length??d?.length??ar(s?.bodyCount),v=function(e){if(e)return e.filter(e=>!0===ir(e)?.sleeping).length}(d)??ar(s?.sleepingCount),x=p?.length,k="string"==typeof i?.simulationState?i.simulationState:void 0,C="boolean"==typeof s?.settled?s.settled:k?"settled"===k:null!=g||null!=v||null!=x?null!=g&&v===g&&0===(x??0):void 0,w=ir(c?.gravity),S=sr(w?.x),A=sr(w?.y),j=dr({state:k,settled:C,elapsedSeconds:sr(i?.elapsedSeconds),paused:"boolean"==typeof i?.paused?i.paused:void 0,visible:"boolean"==typeof i?.visible?i.visible:void 0,seed:sr(c?.seed),gravity:null!=S&&null!=A?{x:S,y:A}:void 0,fixedDt:sr(a?.fixedDt??c?.fixedDt),timeScale:sr(a?.timeScale),maxSubsteps:ar(a?.maxSubsteps),liveBodies:g,sleepingBodies:v,queued:x,bodyLimit:sr(a?.bodyLimit),eviction:"string"==typeof a?.eviction?a.eviction:void 0}),$=dr({colliders:u?.length,sensors:yr(u,a,l),springs:h?.length,activeSensorPairs:f?.length}),M=Object.keys($).length>0,B=nr.has(e);if(!(Object.keys(j).length>0||M||m||b)||!B&&null==r)return;const W={simulation:j,...M?{geometry:$}:{},...m?{aggregates:m}:{},...b?{sediment:b}:{}},P=function(e){const t=[],r=e.simulation,n=[r.state??(r.settled?"settled":void 0),null!=r.liveBodies?`${r.liveBodies} live ${ur(r.liveBodies,"body")}`:void 0,null!=r.sleepingBodies?r.sleepingBodies+" sleeping":void 0,null!=r.queued?r.queued+" queued":void 0,null!=r.seed?"seed "+pr(r.seed):void 0,r.gravity?`gravity (${pr(r.gravity.x)}, ${pr(r.gravity.y)})`:void 0,null!=r.fixedDt?`fixed step ${pr(r.fixedDt)}s`:void 0,null!=r.timeScale?pr(r.timeScale)+"x time":void 0].filter(Boolean);n.length>0&&t.push(`Physics simulation: ${n.join("; ")}.`);const o=e.geometry;if(o){const e=[null!=o.colliders?`${o.colliders} ${ur(o.colliders,"collider")}`:void 0,null!=o.sensors?`${o.sensors} ${ur(o.sensors,"sensor")}`:void 0,null!=o.springs?`${o.springs} ${ur(o.springs,"spring")}`:void 0,null!=o.activeSensorPairs?`${o.activeSensorPairs} active sensor ${ur(o.activeSensorPairs,"pair")}`:void 0].filter(Boolean);e.length>0&&t.push(`Physics geometry: ${e.join("; ")}.`)}const i=e.aggregates;if(i){const e=i.leader,r=e?` Largest is ${e.label} with ${pr(e.count)}.`:"";t.push(`Physics aggregates: ${pr(i.totalCount)} settled ${ur(i.totalCount,"body")} across ${i.rows.length} ${ur(i.rows.length,"container")}; ${i.populatedCount} populated.${r}`)}const s=e.sediment;if(s){const e=null!=s.total?", value total "+pr(s.total):"",r=s.leader?`; largest sediment bin is ${s.leader.label} with ${pr(s.leader.count)}`:"";t.push(`Physics sediment: ${s.count} retained ${ur(s.count,"body")} in ${s.bins} ${ur(s.bins,"bin")}${e}${r}.`)}return t.join(" ")}(W);return{...W,text:P}}(e,t,r.physics),g=[y.text,h?.sentence,b?.text].filter(Boolean).join(" ");return{component:e,description:y,intent:h,structure:m,physics:b,text:g}}(e,t,r.grounding),n.push(Wr("Semiotic reader grounding",function(e){return[e.component+": Semiotic reader grounding","",e.text,"\nStructured grounding JSON:\n```json",mr(e),"```"].join("\n")}(h),c+".reader-grounding.md"))),a&&(f=st(e,t),n.push(Wr("Semiotic config diagnostics",function(e,t){const r=t.diagnoses.filter(e=>"error"===e.severity).length,n=t.diagnoses.filter(e=>"warning"===e.severity).length,o=[e+": Semiotic diagnoseConfig report","ok: "+t.ok,"errors: "+r,"warnings: "+n];if(0===t.diagnoses.length)return o.push("","No Semiotic config issues detected."),o.join("\n");o.push("");for(const e of t.diagnoses)o.push(`[${e.severity}] ${e.code}: ${e.message}`),e.fix&&o.push("Fix: "+e.fix);return o.join("\n")}(e,f),c+".diagnose-config.md"))),l&&(m=function(e,t,r={}){const n=[],o=we(e),i=ye.has(e),s=!!H[e]||!!o||i,a=!0===r.inChartContainer,l=!0===r.describe,c=!0===r.navigable,d=ue.has(e),u=te.has(e),{hasTitle:p,hasDescription:y,hasSummary:h,unsupportedFinding:f}=function(e,t){const r=H[e]?.props,n=e=>!!r?.[e],o=V.filter(e=>U(t[e])&&!n(e));return{hasTitle:n("title")&&U(t.title),hasDescription:n("description")&&U(t.description),hasSummary:n("summary")&&U(t.summary),unsupportedFinding:o.length>0?{id:"understandable.unsupported-description-prop",principle:"understandable",heuristic:"Descriptive text is connected to the rendered chart",critical:!0,status:"warn",message:`Useful ${o.join(" and ")} text was supplied, but ${1===o.length?"that prop is":"those props are"} not supported by ${e}'s declared chart API and cannot be credited as rendered accessibility text.`,fix:"Use the component's declared title, description, and summary props when available; for richer generated description or navigation, use ChartContainer with chartConfig plus describe and/or navigable."}:void 0}}(e,t),m=!1!==t.accessibleTable&&!d,b=p||y||h,g=function(e){return!1!==e.tooltip||null!=e.onClick||null!=e.brush||null!=e.onBrush||null!=e.selection||null!=e.linkedHover||null!=e.linkedBrush}(t),v=function(e){const t=Be(e),r=e.controls&&"object"==typeof e.controls?e.controls:{};return!0===e.pauseControl||!0===t.pauseControl||!0===r.pause||"function"==typeof r.pause}(t),x=i,k=function(e){const t=Be(e);return!0===e.settledProjection||!0===t.settledProjection}(t)||fe.has(e)&&m,C=function(e){const t=Be(e);return!0===e.reducedMotionSettle||"settle"===e.reducedMotion||!0===t.reducedMotionSettle||"settle"===t.reducedMotion}(t)||x,w=Array.isArray(t.annotations)?t.annotations.filter(e=>!!e&&"object"==typeof e):[],S=s?"pass":"manual",A=s?"":` (unrecognized component "${e}" — verify manually that the built-in applies)`;if(f&&n.push(f),n.push(function(e){const t={id:"perceivable.low-contrast",principle:"perceivable",heuristic:"Low contrast",critical:!0},r=e.colorScheme,n="string"==typeof e.background?e.background:null;if(n&&!n.startsWith("#"))return{...t,status:"manual",message:`Background "${n}" isn't a hex literal (theme/CSS variable) — contrast can't be verified statically.`,fix:'Pass a hex `background` (e.g. "#ffffff"/"#000000"), or verify contrast manually once the theme resolves.'};const o=n??"#ffffff";if(!Array.isArray(r))return{...t,status:"manual",message:"Mark colors come from the theme/CSS variables — contrast can't be verified statically.",fix:"Confirm geometries/large text have ≥ 3:1 and regular text ≥ 4.5:1 contrast against the background."};const i=[];let s=0;for(const e of r){if("string"!=typeof e||!e.startsWith("#"))continue;const t=Q(e,o);null!=t&&(s++,3>t&&i.push(`${e} (${t.toFixed(1)}:1)`))}return 0===s?{...t,status:"manual",message:"colorScheme has no parseable hex colors to check.",fix:"Verify contrast manually for non-hex colors."}:i.length>0?{...t,status:"fail",message:`${i.length} color(s) fall below 3:1 contrast vs ${o}: ${i.join(", ")}.`,fix:"Darken (light background) or lighten (dark background) those colors, or use COLOR_BLIND_SAFE_CATEGORICAL."}:{...t,status:"pass",message:`All ${s} checked colorScheme color(s) meet ≥ 3:1 contrast vs ${o}.`}}(t)),n.push({id:"perceivable.content-only-visual",principle:"perceivable",heuristic:"Content is only visual",critical:!0,...d?{status:"pass",message:"BigNumber renders its value as real text with an ARIA label — available without vision."}:m?{status:"pass",message:"A screen-reader data table + live region expose the data non-visually (accessibleTable is on)."}:y&&h?{status:"manual",message:"accessibleTable is off; a description + summary are present. Verify they convey everything the chart shows.",fix:"Re-enable accessibleTable, or confirm via screen reader that the text alternative is complete."}:{status:"fail",message:"accessibleTable is disabled and there's no full text alternative — the data is only available visually.",fix:"Remove accessibleTable={false}, or provide a complete description/summary plus a data table."}}),n.push({id:"perceivable.small-text",principle:"perceivable",heuristic:"Small text size",critical:!0,status:"pass",message:"Semiotic's default tick and axis-label fonts are 12px, meeting Chartability's 9pt/12px floor.",fix:"If a theme or override lowers --semiotic-tick-font-size below 12px, raise it back for low-vision audiences."}),n.push({id:"perceivable.seizure-risk",principle:"perceivable",heuristic:"Visual presents seizure risk",critical:!0,...null!=t.pulse||he.has(e)?{status:"manual",message:"Pulse/continuous animation is in use. Confirm nothing flashes more than 3×/sec, especially saturated red.",fix:"Avoid red flashes and rapid (>3 Hz) flicker; reduced-motion is auto-honored, but verify the default presentation."}:{status:"manual",message:"No flashing detected statically. Confirm no element flashes more than 3×/sec.",fix:"Manual check — most static charts pass trivially."}}),null!=t.colorBy){n.push({id:"perceivable.color-alone",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,...!0===t.directLabel||!0===t.showLabels?{status:"pass",message:"Categories are encoded by color (colorBy) and also directly labeled, so color isn't the only channel."}:{status:"warn",message:"Categories are encoded by color (colorBy) with no redundant channel — Semiotic does not yet ship texture/pattern fills.",fix:"Add direct labels (directLabel on LineChart/AreaChart, showLabels on network/hierarchy), keep categories ≤ ~7, and use a CVD-safe palette."}});const e=Array.isArray(t.colorScheme)?t.colorScheme:null,r=e?e.filter(e=>"string"==typeof e&&e.startsWith("#")).map(e=>e.toLowerCase()):[],o=r.length>0&&r.every(e=>Ae.has(e));n.push({id:"perceivable.cvd-safe",principle:"perceivable",heuristic:"Not CVD-friendly",critical:!1,...o?{status:"pass",message:"colorScheme uses Semiotic's Wong colorblind-safe palette."}:{status:"manual",message:"Color encodes meaning; statically we can't confirm the palette is colorblind-safe.",fix:'Use COLOR_BLIND_SAFE_CATEGORICAL from "semiotic", or test your scheme with Viz Palette / Chroma.'}}),n.push({id:"flexible.textures-adjustable",principle:"flexible",heuristic:"Contrast and textures cannot be adjusted",critical:!1,status:"warn",message:"There's no per-category texture/pattern channel to toggle as an alternative to color.",fix:"Until texture fills land, ensure the encoding survives color removal: direct labels + a CVD-safe palette. Contrast itself is themeable via CSS variables."})}{const e=w.filter(J);if(e.length>0){const r=t.autoPlaceAnnotations,o="object"==typeof r&&null!==r&&!0===r.redundantCues,i=e.filter(e=>{if("string"!=typeof e.color)return!1;const t=K(e),r=o&&"text"===t;return!(ee(e)||r)});n.push({id:"perceivable.annotation-association",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,...0===i.length?{status:"pass",message:"No annotation relies on color alone to indicate its target — wherever color is used, a connector, enclosure, or reference-line cue is present too."}:{status:"warn",message:`${i.length} of ${e.length} annotation(s) carry a color but no connector, enclosure, or reference-line cue, so a color-blind or non-visual reader can't tie them to their target (the correspondence problem).`,fix:"Add a connector (the label/callout default), place the note adjacent to its target, enclose the target, or enable autoPlaceAnnotations: { redundantCues: true } to give colored text notes a leader line — don't rely on color matching alone."}})}}n.push({id:"operable.single-input-modality",principle:"operable",heuristic:"Interaction modality only has one input type",critical:!0,...s?{status:"pass",message:"Built-in keyboard navigation (arrows/Home/End/PageUp-Down/Enter) mirrors mouse hover."}:{status:"manual",message:`Can't confirm keyboard support for "${e}".`,fix:"Verify Tab + arrow-key operation."}});{const e=[];null==t.brush&&null==t.onBrush||e.push("brushing"),!0===t.zoomable&&e.push("zoom/pan"),"isolate"!==t.legendInteraction&&"highlight"!==t.legendInteraction||e.push("legend filtering"),e.length>0&&n.push({id:"operable.complex-action-alternatives",principle:"operable",heuristic:"Complex actions have no alternatives",critical:!1,status:"warn",message:`Mouse-driven ${e.join(", ")} ${e.length>1?"have":"has"} no built-in keyboard/standard-UI equivalent.`,fix:"Pair the complex interaction with a standard control (range inputs for a brush, buttons for zoom, a checkbox list for legend filtering) operable by keyboard and screen reader."})}{const r=xe[e];if(r&&g){const e=t[r];"number"==typeof e&&e>0&&24>2*e&&n.push({id:"operable.target-size",principle:"operable",heuristic:"Target pointer interaction size is too small",critical:!1,status:"warn",message:`${r}=${e} gives a ~${2*e}px hit target, below the 24×24px minimum for pointer interaction.`,fix:"Increase the radius, or rely on the chart's hoverRadius / keyboard navigation as the alternative for precise selection."})}}n.push({id:"operable.tab-stops",principle:"operable",heuristic:"Inappropriate tab stops",critical:!1,status:S,message:`The chart takes a single tab stop and navigates data with arrow keys${A} — the recommended pattern for dense charts (no per-datum tab stops to wade through).`}),n.push({id:"operable.interaction-cues",principle:"operable",heuristic:"No interaction cues or instructions",critical:!0,...g?h||y?{status:"manual",message:"Chart is interactive and has descriptive text. Confirm that text explains how to interact (keyboard + pointer).",fix:'State the interaction model in summary, e.g. "Use arrow keys to move between points."'}:{status:"warn",message:"Chart is interactive but nothing explains how to use it.",fix:"Describe the interaction in a summary or nearby text (keyboard navigation, what hover/click reveals)."}:{status:"not-applicable",message:"No interactive behavior detected."}}),n.push({id:"operable.controls-override-at",principle:"operable",heuristic:"Controls override AT controls",critical:!0,status:S,message:`Keyboard handlers fire only while the chart has focus, so they don't hijack page/app screen-reader shortcuts${A}.`}),n.push({id:"operable.focus-indicator",principle:"operable",heuristic:"Keyboard focus indicator missing, obscured, or low contrast",critical:!1,status:S,message:`A shape-adaptive focus ring (var(--semiotic-focus)) marks the focused element${A}.`,fix:s?"Ensure --semiotic-focus keeps ≥ 3:1 contrast against your background.":void 0}),n.push({id:"understandable.title-summary-caption",principle:"understandable",heuristic:"No title, summary, or caption",critical:!0,...b?{status:"pass",message:`Provided: ${[p&&"title",y&&"description",h&&"summary"].filter(Boolean).join(", ")}.`}:a?{status:"manual",message:"No title/description/summary on the chart. If the wrapping ChartContainer supplies a title/subtitle, this is covered at that layer — verify it does.",fix:"Give the ChartContainer a title (and optionally enable describe), or set title/description/summary on the chart."}:{status:"fail",message:"No title, description, or summary — the screen reader falls back to a generic label.",fix:"Add title/description/summary on the chart, or wrap it in a ChartContainer (the opt-in layer for title/caption/description chrome)."}}),n.push({id:"understandable.explain-purpose",principle:"understandable",heuristic:"No explanation for purpose or for how to read",critical:!0,...y||h?{status:"pass",message:"A description/summary is available to explain purpose and how to read the chart."}:l?{status:"manual",message:"ChartContainer's describe option explains how to read the chart (type, stats, trend). Confirm the domain purpose — why this chart exists — is also conveyed (title/subtitle).",fix:"Give the ChartContainer a title/subtitle stating the purpose; describe() covers the how-to-read half."}:p?{status:"warn",message:"Only a title is set — a label, not an explanation of purpose or how to read the chart.",fix:"Add a summary, or enable ChartContainer's describe option for an auto-generated how-to-read description."}:{status:"fail",message:"Nothing explains the chart's purpose or how to read it.",fix:"Add a summary/description, or wrap in a ChartContainer with a title and the describe option (the opt-in full-accessibility layer)."}});{const e=[t.description,t.summary].filter(U).join(". "),r=e?function(e){const t=e.split(/[.!?]+/).map(e=>e.trim()).filter(Boolean),r=e.trim().split(/\s+/).filter(Boolean);if(0===r.length||0===t.length)return null;let n=0;for(const e of r)n+=Me(e);return r.length/t.length*.39+n/r.length*11.8-15.59}(e):null;n.push({id:"understandable.reading-level",principle:"understandable",heuristic:"Reading level inappropriate",critical:!0,...null==r?{status:"not-applicable",message:"No description/summary text to grade."}:r>9?{status:"warn",message:`Description/summary reads at ~grade ${r.toFixed(0)}; Chartability targets grade 9 or lower.`,fix:"Shorten sentences and prefer common words."}:{status:"pass",message:`Description/summary reads at ~grade ${Math.max(0,Math.round(r))} (≤ 9).`}})}if(pe.has(e)){const e=U(t.xLabel),r=U(t.yLabel);n.push({id:"understandable.axis-labels",principle:"understandable",heuristic:"Axis labels are unclear or missing",critical:!1,...e&&r?{status:"pass",message:"Both axes are labeled (xLabel, yLabel)."}:{status:"warn",message:`Missing axis label: ${[!e&&"xLabel",!r&&"yLabel"].filter(Boolean).join(", ")}. Ticks alone may not name the variable.`,fix:"Set xLabel and yLabel to name each axis's variable and units."}})}if(ge.has(e)&&n.push({id:"understandable.information-complexity",principle:"understandable",heuristic:"Information complexity is inappropriate",critical:!1,status:"warn",message:"Dual-axis chart: two y-scales are hard to read accurately and notoriously easy to misinterpret (the crossover point is arbitrary).",fix:"Confirm the second axis is necessary; consider two aligned charts (small multiples) or indexing both series to a common baseline. Label each axis and its series unambiguously."}),w.length>1){const e=w.filter($e).length;n.push({id:"understandable.annotation-hierarchy",principle:"understandable",heuristic:"Information complexity is inappropriate",critical:!1,...e===w.length?{status:"pass",message:`All ${w.length} annotation(s) declare hierarchy through emphasis or provenance confidence, so the renderer can resolve reading order and visual priority.`}:0===e?{status:"warn",message:w.length+" annotations are present with no emphasis or provenance confidence; readers may not know which note is primary.",fix:'Mark the main annotation with emphasis="primary", set supporting notes to emphasis="secondary", or provide provenance.confidence so Semiotic can infer order.'}:{status:"warn",message:`${w.length-e} of ${w.length} annotation(s) have no emphasis or provenance confidence; readers may not know which note is primary among the unordered notes.`,fix:"Set emphasis on each annotation (primary/secondary), or provide provenance.confidence on all annotations so Semiotic can infer order."}})}(null!=t.forecast||null!=t.anomaly||null!=t.band||null!=t.regression)&&n.push({id:"understandable.uncertainty",principle:"understandable",heuristic:"Statistical uncertainty isn't clearly communicated",critical:!1,status:"manual",message:"The chart shows a forecast/regression/band/anomaly overlay. Confirm the uncertainty it represents is explained in text, not just drawn.",fix:"State the confidence interval / method in the summary, and label the band so it isn't mistaken for data."}),null!=t.animate&&!1!==t.animate&&n.push({id:"understandable.changes-followable",principle:"understandable",heuristic:"Changes are not easy to follow",critical:!1,status:S,message:`Transitions animate with object constancy and data changes are mirrored to the live region${A}.`,fix:s?"Keep transition durations in the 250ms–2s range so changes are followable but not slow.":void 0}),n.push({id:"robust.conforms-to-standards",principle:"robust",heuristic:"Does not conform to standards",critical:!1,status:"manual",message:"WCAG 2.1 / Section 508 conformance can't be settled from config alone.",fix:"Run an automated checker (axe) on the rendered output and test with real assistive tech."}),n.push({id:"robust.semantically-valid",principle:"robust",heuristic:"Semantically invalid",critical:!1,status:"manual",message:"Whether interactive elements expose correct roles/names is a render-time, screen-reader question.",fix:"Verify with a screen reader that buttons read as buttons, the chart as an image/group, etc."}),n.push({id:"robust.fragile-technology-support",principle:"robust",heuristic:"Fragile technology support",critical:!1,status:S,message:`Charts render on canvas with an SVG overlay and render to SVG in SSR, so access isn't tied to one rendering path${A}.`,fix:s?"Still test across NVDA+Firefox, JAWS+Chrome, and VoiceOver+Safari — AT support varies.":void 0}),n.push({id:"compromising.table",principle:"compromising",heuristic:"No table",critical:!0,...d?{status:"not-applicable",message:"Single-value display — a table isn't meaningful."}:m?{status:"pass",message:"A human-readable data table is provided (accessibleTable)."}:{status:"fail",message:"accessibleTable is disabled — no human-readable table of the underlying data.",fix:"Remove accessibleTable={false} (unless title/summary/annotations already convey all the data)."}}),d||n.push({id:"compromising.table-static",principle:"compromising",heuristic:"Table/data is static",critical:!1,...a?{status:"manual",message:"Rendered in a ChartContainer. If a data-download action is enabled, the data is exportable.",fix:"Enable the ChartContainer data-download action so users can save the underlying data (keep it opt-in)."}:{status:"warn",message:"The data table is read-only — not downloadable, sortable, or filterable.",fix:"Wrap the chart in a ChartContainer and enable its data-download action (opt-in, so deployments can withhold it where export isn't allowed)."}}),n.push({id:"compromising.shareable-state",principle:"compromising",heuristic:"State is not easy to share and reproduce",critical:!1,status:s?"pass":"manual",message:`Chart state serializes via toConfig/toURL/copyConfig${s?"":A}.`,fix:s?"Expose it to users via the ChartContainer copyConfig action or a shareable URL.":void 0}),n.push({id:"compromising.navigable-structure",principle:"compromising",heuristic:"Information cannot be navigated according to narrative or structure",critical:!1,...c?{status:"pass",message:"ChartContainer's navigable option mounts a structured tree (chart → axes/series → data points) that screen readers can traverse."}:u?{status:"warn",message:"Hierarchical chart: built-in keyboard navigation is largely flat — it doesn't descend the tree structure.",fix:"Enable ChartContainer's navigable option for a structured navigation tree, or lean on the data table and a summary that conveys the hierarchy."}:{status:S,message:`Keyboard navigation steps through points and switches series/groups${A}.`,fix:s?"For deeper structure (axis → series → datum), enable ChartContainer's navigable option.":void 0}});{const r=Array.isArray(t.data)?t.data:null,o=Array.isArray(t.nodes)?t.nodes:null,i={id:"assistive.data-density",principle:"assistive",heuristic:"Data density is inappropriate",critical:!0};let s;s=ce.has(e)&&r&&r.length>7?{...i,status:"warn",message:r.length+" slices in a part-to-whole chart. Chartability suggests ≤ 5 categories; many thin slices are hard to perceive and to describe.",fix:'Group small slices into an "Other" category, or switch to a ranked bar chart.'}:o&&o.length>200?{...i,status:"warn",message:o.length+" nodes. A network this size is hard to navigate non-visually node by node.",fix:"Provide a summary of structure (clusters, hubs, components) and consider filtering or aggregating the graph."}:r&&r.length>5e3?{...i,status:"warn",message:r.length+" data points. Canvas renders this fine, but the non-visual table/navigation become unwieldy.",fix:"Aggregate or bin for the accessible representation, or expose summary statistics rather than every row."}:r?{...i,status:"pass",message:r.length+" data points — a reasonable density for non-visual consumption."}:o?{...i,status:"pass",message:o.length+" nodes — a reasonable density for non-visual consumption."}:{...i,status:"manual",message:"Data not provided inline (push mode); verify density at runtime."},n.push(s)}{const e=Array.isArray(t.data)?t.data:null,r=["valueFormat","yFormat","xFormat","tickFormat","format"].some(e=>"function"==typeof t[e]||"string"==typeof t[e]);let o=!1;if(e&&!r)for(const t of e.slice(0,50))if(t&&"object"==typeof t){for(const e of Object.values(t))if("number"==typeof e&&Number.isFinite(e)&&Math.abs(e)>=1e5){o=!0;break}if(o)break}o&&n.push({id:"assistive.human-readable-numbers",principle:"assistive",heuristic:"Data in text is not human-readable",critical:!1,status:"warn",message:'Data includes large numbers (≥ 100,000) and no value/tick formatter — screen readers will read every digit (e.g. "six hundred fifty thousand…").',fix:'Pass valueFormat / yFormat (e.g. a compact formatter so 6,500,000 reads as "6.5M"); the formatter flows to ticks, tooltips, and the data table.'})}n.push({id:"assistive.features-described",principle:"assistive",heuristic:"Visually apparent features and relationships are not described",critical:!1,...l?{status:"pass",message:"ChartContainer's describe option auto-generates an L1–L3 description (chart type, statistics, and trend) via describeChart()."}:h?{status:"manual",message:"A summary is present. Confirm it describes trends, extrema, clusters, and outliers — not just what the chart is.",fix:"Cover the L2/L3 content blind readers value most: direction of trend, peak/trough, notable outliers."}:{status:"warn",message:"No text describes the visually apparent trends, extrema, or outliers.",fix:"Enable ChartContainer's describe option (auto-generates via describeChart()), or write a summary covering the key trend and notable points."}}),n.push({id:"assistive.skippable-navigation",principle:"assistive",heuristic:"Navigation and interaction is tedious",critical:!0,...d?{status:"not-applicable",message:"Single value — nothing to skip."}:m?{status:"pass",message:'A "Skip to data table" link lets screen-reader users bypass point-by-point navigation.'}:{status:"warn",message:"accessibleTable is off, removing the skip-to-table affordance.",fix:"Keep accessibleTable enabled so users can skip past dense point navigation."}}),n.push({id:"flexible.user-style-respected",principle:"flexible",heuristic:"User style change not respected",critical:!0,status:S,message:`Styling flows through CSS custom properties and honors forced-colors mode, so user/user-agent style changes cascade in${A}.`,fix:s?"Avoid hardcoding colors via frameProps style fns that bypass theme variables.":void 0}),n.push({id:"flexible.reduced-motion",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...he.has(e)||be.has(e)?v?{status:"pass",message:e+" animates continuously and declares an in-chart pause/stop control."}:{status:"warn",message:e+" animates continuously. prefers-reduced-motion is auto-honored, but there's no in-chart pause/stop control for users who don't set that preference.",fix:"Offer a pause/stop control for looping/streaming motion (Chartability requires it for animation > 2s)."}:{status:S,message:`prefers-reduced-motion is auto-detected; transitions fast-forward and looping animation stops${A}.`}}),i&&(n.push({id:"flexible.sim-pause-control",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...v?{status:"pass",message:"Physics simulation exposes a pause/stop control for users who need to stop motion."}:{status:"warn",message:"Physics simulation has no declared pause/stop control.",fix:"Provide a visible pause control and set physics.pauseControl=true (or pauseControl=true) so the contract is auditable."}}),n.push({id:"flexible.settled-projection",principle:"flexible",heuristic:"User style change not respected",critical:!1,...k?{status:"pass",message:"A settled-projection table is declared, so non-visual readers get aggregate chart semantics instead of trajectories."}:{status:"warn",message:"Physics chart does not declare a settled projection for its accessible table.",fix:"Provide aggregate rows from the settled projection and set physics.settledProjection=true."}}),n.push({id:"flexible.reduced-motion-settle",principle:"flexible",heuristic:"Long animations cannot be controlled",critical:!1,...C?{status:"pass",message:"Reduced-motion mode settles the simulation to a static chart state instead of freezing bodies mid-flight."}:{status:"warn",message:"Physics chart does not declare reduced-motion synchronous settle behavior.",fix:"In reduced motion, run the world to its settled projection and paint once; set physics.reducedMotionSettle=true."}}));{const r=!0===t.responsiveWidth||!0===t.responsiveHeight,o=ve.has(e)&&!0===t.zoomable;n.push({id:"flexible.zoom-reflow",principle:"flexible",heuristic:"Zoom and reflow are not supported",critical:!1,...r?{status:"pass",message:`Chart reflows to its container (${[!0===t.responsiveWidth&&"responsiveWidth",!0===t.responsiveHeight&&"responsiveHeight"].filter(Boolean).join(", ")}), so page zoom doesn't clip it.`}:o?{status:"pass",message:"Geo chart is zoomable/pannable."}:{status:"manual",message:"Fixed width/height — verify the chart survives browser zoom and reflow without clipping or loss of function.",fix:"Use responsiveWidth/responsiveHeight so the chart reflows to its container."}})}if(o){const e=o.encodings?.some(e=>"color"===e.channel&&(!e.redundantWith||0===e.redundantWith.length));e&&n.push({id:"perceivable.recipe-color-alone",principle:"perceivable",heuristic:"Color is used alone to communicate meaning",critical:!1,status:"warn",message:o.name+" declares a color encoding without a redundant cue.",fix:"Add shape, label, position, texture, or a textual category summary to the recipe encoding."}),"required"!==o.accessibility.description||U(t.description)||n.push({id:"understandable.recipe-description",principle:"understandable",heuristic:"Features are not described",critical:!1,status:"fail",message:o.name+" requires a recipe-aware description, but none is attached.",fix:"Call describeChart with recipeId/recipe metadata and attach the returned text as description."}),o.accessibility.fallbackTable&&!1===t.accessibleTable&&n.push({id:"compromising.recipe-fallback",principle:"compromising",heuristic:"No data table is provided",critical:!0,status:"fail",message:o.name+" requires a fallback table, but accessibleTable is disabled.",fix:"Enable accessibleTable and preserve recipe-declared table fields on scene nodes."})}const j=n.filter(e=>"not-applicable"!==e.status).filter(e=>e.critical),$={criticalsPassed:j.filter(e=>"pass"===e.status).length,criticalsEvaluated:j.length,fails:n.filter(e=>"fail"===e.status).length,warnings:n.filter(e=>"warn"===e.status).length,manual:n.filter(e=>"manual"===e.status).length,passes:n.filter(e=>"pass"===e.status).length};return{component:e,ok:!j.some(e=>"fail"===e.status),summary:$,findings:n,reference:je}}(e,t,r.accessibility),n.push(Wr("Semiotic accessibility audit",function(e){const t=[],r=e.summary,n=e.ok?`${r.criticalsPassed}/${r.criticalsEvaluated} critical heuristics pass`:`${r.fails} blocking failure(s) — ${r.criticalsPassed}/${r.criticalsEvaluated} critical heuristics pass`;t.push(`${e.ok?"✓":"✗"} ${e.component}: accessibility audit (Chartability POUR-CAF)`),t.push(` ${n} · ${r.warnings} warning(s) · ${r.manual} to verify manually`);for(const r of Pe){const n=e.findings.filter(e=>e.principle===r&&"not-applicable"!==e.status);if(0!==n.length){t.push(""),t.push(" "+r.toUpperCase());for(const e of n)t.push(` ${We[e.status]} ${e.id}${e.critical?" [critical]":""}: ${e.message}`),!e.fix||"fail"!==e.status&&"warn"!==e.status&&"manual"!==e.status||t.push(" → "+e.fix)}}return t.push(""),t.push(" Ref: "+e.reference),t.join("\n")}(m),c+".accessibility.md"))),r.narrative?.trim()&&n.push(Wr("Author narrative",r.narrative.trim(),c+".narrative.md")),r.additionalStages?.length&&n.push(...r.additionalStages),0===n.length&&n.push(Pr("Semiotic chart config",mr(d),"json",c+".semiotic-config.json")),{input:{kind:"chain",stages:n},config:d,...h?{grounding:h}:{},...f?{diagnosis:f}:{},...m?{accessibility:m}:{}}}function Lr(e,t,r={}){return Ir(e,t,r).input}var Rr="0.1",Tr=["trend","compare-series","compare-categories","rank","part-to-whole","distribution","correlation","flow","hierarchy","geo","outlier-detection","composition-over-time","change-detection"],Fr=new Set(["fresh","aging","stale","expired"]),Er=new Set(["proposed","accepted","disputed","retracted"]),Nr=new Set(["fixed","latest","sticky","semantic"]),Or=new Set(["visual","screen-reader","sonified","agent"]);function Dr(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function zr(e,t,r){("number"!=typeof r||!Number.isInteger(r)||1>r||r>5)&&e.push(t+" must be an integer in [1, 5]")}function qr(e,t,r){void 0!==r&&"string"!=typeof r&&e.push(t+" must be a string")}function _r(e,t,r,n,o){void 0!==r&&("number"!=typeof r||!Number.isFinite(r)||void 0!==n&&n>r||void 0!==o&&r>o)&&e.push(`${t} must be a finite number${void 0!==n&&void 0!==o?` in [${n}, ${o}]`:void 0!==n?" >= "+n:""}`)}function Hr(e,t,r){void 0!==r&&"boolean"!=typeof r&&e.push(t+" must be a boolean")}function Gr(e,t,r,n){for(const o of Object.keys(r))n.includes(o)||e.push(`${t}.${o} is not allowed`)}function Vr(e,t){void 0!==t&&t!==Rr&&e.push("specVersion must be the string "+Rr)}function Ur(e){const t=[];if(!Dr(e))return{valid:!1,errors:["capability must be an object"]};Vr(t,e.specVersion),"string"==typeof e.component&&0!==e.component.length||t.push("component is required and must be a non-empty string"),qr(t,"family",e.family),qr(t,"importPath",e.importPath);const r=e.rubric;if(Dr(r)?(Gr(t,"rubric",r,["familiarity","accuracy","precision"]),zr(t,"rubric.familiarity",r.familiarity),zr(t,"rubric.accuracy",r.accuracy),zr(t,"rubric.precision",r.precision)):t.push("rubric is required and must be an object"),void 0!==e.intentScores)if(Dr(e.intentScores))for(const[r,n]of Object.entries(e.intentScores))_r(t,"intentScores."+r,n,0,5);else t.push("intentScores must be an object");if(void 0!==e.variants&&(Array.isArray(e.variants)?e.variants.forEach((e,r)=>{if(Dr(e)){if("string"!=typeof e.key&&t.push(`variants[${r}].key is required`),"string"!=typeof e.label&&t.push(`variants[${r}].label is required`),qr(t,`variants[${r}].description`,e.description),void 0!==e.intentDeltas)if(Dr(e.intentDeltas))for(const[n,o]of Object.entries(e.intentDeltas))_r(t,`variants[${r}].intentDeltas.${n}`,o);else t.push(`variants[${r}].intentDeltas must be an object`);if(void 0!==e.rubricDeltas)if(Dr(e.rubricDeltas)){Gr(t,`variants[${r}].rubricDeltas`,e.rubricDeltas,["familiarity","accuracy","precision"]);for(const n of["familiarity","accuracy","precision"])_r(t,`variants[${r}].rubricDeltas.${n}`,e.rubricDeltas[n])}else t.push(`variants[${r}].rubricDeltas must be an object`);for(const n of["caveats","tags"]){const o=e[n];void 0!==o&&(Array.isArray(o)&&!o.some(e=>"string"!=typeof e)||t.push(`variants[${r}].${n} must be an array of strings`))}void 0===e.props||Dr(e.props)||t.push(`variants[${r}].props must be an object`)}else t.push(`variants[${r}] must be an object`)}):t.push("variants must be an array")),void 0!==e.mobile)if(Dr(e.mobile)){const r=e.mobile;qr(t,"mobile.strategy",r.strategy),Hr(t,"mobile.responsive",r.responsive),Hr(t,"mobile.supportsResponsiveLayout",r.supportsResponsiveLayout);for(const e of["minViewportWidth","maxMarks","maxAnnotations","minimumHitTarget"])_r(t,"mobile."+e,r[e],0);void 0!==r.breakpoints&&(Array.isArray(r.breakpoints)?r.breakpoints.forEach((e,r)=>{_r(t,`mobile.breakpoints[${r}]`,e)}):t.push("mobile.breakpoints must be an array")),void 0!==r.summary&&"boolean"!=typeof r.summary&&"string"!=typeof r.summary&&t.push("mobile.summary must be a boolean or string"),void 0!==r.interaction&&(Dr(r.interaction)?(qr(t,"mobile.interaction.primary",r.interaction.primary),qr(t,"mobile.interaction.hoverFallback",r.interaction.hoverFallback),_r(t,"mobile.interaction.targetSize",r.interaction.targetSize,0),void 0===r.interaction.alternatives||Array.isArray(r.interaction.alternatives)&&!r.interaction.alternatives.some(e=>"string"!=typeof e)||t.push("mobile.interaction.alternatives must be an array of strings")):t.push("mobile.interaction must be an object")),void 0!==r.labels&&(Dr(r.labels)?(qr(t,"mobile.labels.strategy",r.labels.strategy),_r(t,"mobile.labels.minFontSize",r.labels.minFontSize,0)):t.push("mobile.labels must be an object")),void 0!==r.custom&&(Dr(r.custom)?(Hr(t,"mobile.custom.dataBearingSceneNodes",r.custom.dataBearingSceneNodes),Hr(t,"mobile.custom.stableIds",r.custom.stableIds),qr(t,"mobile.custom.navigationGranularity",r.custom.navigationGranularity)):t.push("mobile.custom must be an object"))}else t.push("mobile must be an object");for(const r of["caveats","tags"]){const n=e[r];void 0===n||Array.isArray(n)&&!n.some(e=>"string"!=typeof e)||t.push(r+" must be an array of strings")}return{valid:0===t.length,errors:t}}function Yr(e){const t=[];if(!Dr(e))return{valid:!1,errors:["audience profile must be an object"]};if(Vr(t,e.specVersion),qr(t,"name",e.name),void 0!==e.familiarity)if(Dr(e.familiarity))for(const[r,n]of Object.entries(e.familiarity))("number"!=typeof n||!Number.isInteger(n)||1>n||n>5)&&t.push(`familiarity.${r} must be an integer in [1, 5]`);else t.push("familiarity must be an object");if(void 0!==e.targets)if(Dr(e.targets))for(const[r,n]of Object.entries(e.targets))!Dr(n)||"increase"!==n.direction&&"decrease"!==n.direction?t.push(`targets.${r}.direction must be "increase" or "decrease"`):(Gr(t,"targets."+r,n,["direction","weight","reason"]),void 0===n.weight||"number"==typeof n.weight&&Number.isInteger(n.weight)&&n.weight>=1&&3>=n.weight||t.push(`targets.${r}.weight must be an integer in [1, 3]`),qr(t,`targets.${r}.reason`,n.reason));else t.push("targets must be an object");return void 0===e.exposureLevel||"number"==typeof e.exposureLevel&&Number.isInteger(e.exposureLevel)&&[0,1,2].includes(e.exposureLevel)||t.push("exposureLevel must be 0, 1, or 2"),void 0===e.receptionModality||Or.has(e.receptionModality)||t.push("receptionModality must be one of "+[...Or].join(", ")),{valid:0===t.length,errors:t}}function Qr(e){const t=[];if(!Dr(e))return{valid:!1,errors:["annotation must be an object"]};const r=e.provenance;if(void 0!==r)if(Dr(r)){for(const e of["author","authorKind","source","basis","dataVersion","stableId"])qr(t,"provenance."+e,r[e]);_r(t,"provenance.confidence",r.confidence,0,1),void 0===r.createdAt||"string"==typeof r.createdAt&&function(e){return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(e)&&!Number.isNaN(Date.parse(e))}(r.createdAt)||t.push("provenance.createdAt must be an ISO 8601 date-time string")}else t.push("provenance must be an object");const n=e.lifecycle;return void 0!==n&&(Dr(n)?(void 0===n.freshness||Fr.has(n.freshness)||t.push("lifecycle.freshness must be one of "+[...Fr].join(", ")),void 0===n.status||Er.has(n.status)||t.push("lifecycle.status must be one of "+[...Er].join(", ")),void 0===n.anchor||Nr.has(n.anchor)||t.push("lifecycle.anchor must be one of "+[...Nr].join(", ")),qr(t,"lifecycle.supersedes",n.supersedes),void 0===n.ttlHint||"string"==typeof n.ttlHint||"number"==typeof n.ttlHint&&Number.isFinite(n.ttlHint)||t.push("lifecycle.ttlHint must be an ISO 8601 duration string or a number of milliseconds")):t.push("lifecycle must be an object")),{valid:0===t.length,errors:t}}var Xr={linear:"linear",monotoneX:"monotone-x",monotoneY:"monotone-y",step:"step",stepAfter:"step-after",stepBefore:"step-before",basis:"basis",cardinal:"cardinal",catmullRom:"catmull-rom"};function Zr(e){return{field:e,type:"quantitative"}}function Kr(e){return{field:e,type:"nominal"}}function Jr(e){return"time"===e.xScaleType?"temporal":"quantitative"}function en(e,t){return"string"==typeof t&&(e.axis={title:t}),e}var tn={BarChart:["categoryAccessor","valueAccessor"],StackedBarChart:["categoryAccessor","valueAccessor","stackBy"],GroupedBarChart:["categoryAccessor","valueAccessor","groupBy"],LineChart:["xAccessor","yAccessor"],AreaChart:["xAccessor","yAccessor"],StackedAreaChart:["xAccessor","yAccessor","areaBy"],Scatterplot:["xAccessor","yAccessor"],BubbleChart:["xAccessor","yAccessor","sizeBy"],Heatmap:["xAccessor","yAccessor","valueAccessor"],PieChart:["valueAccessor","categoryAccessor"],DonutChart:["valueAccessor","categoryAccessor"],DotPlot:["categoryAccessor","valueAccessor"],Histogram:["valueAccessor"]},rn={LineChart:["lineBy","colorBy"],AreaChart:["colorBy"],StackedAreaChart:["colorBy"],Scatterplot:["colorBy"],BubbleChart:["colorBy"],Heatmap:["colorBy"],Histogram:["categoryAccessor"]};function nn(e,t={}){const r=[],n={adapter:"semiotic/vega-lite",direction:"export",sourceFormat:"semiotic-chart-config",targetFormat:"vega-lite",..."string"==typeof e.version?{specVersion:e.version}:{}},o=e.props||{},i=function(e,t){const r=[];for(const n of tn[e]||[])"string"==typeof t[n]&&0!==t[n].length||r.push({code:"UNSERIALIZABLE_ACCESSOR",severity:"error",path:"/props/"+n,message:`${e} requires a string ${n} for Vega-Lite export.`});for(const n of rn[e]||[])void 0===t[n]||"string"==typeof t[n]&&0!==t[n].length||r.push({code:"UNSERIALIZABLE_ACCESSOR",severity:"error",path:"/props/"+n,message:`${e} can export ${n} only as a non-empty string field name.`});return r}(e.component,o);if(i.length>0)return{status:"refused",diagnostics:i,lossReport:i.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),provenance:n};const s={};let a;const l=e.component;switch(l){case"BarChart":case"StackedBarChart":case"GroupedBarChart":{a="bar";const e="horizontal"===o.orientation,t=en(Kr(o.categoryAccessor),o.categoryLabel),n=en(Zr(o.valueAccessor),o.valueLabel);e?(s.y=t,s.x=n):(s.x=t,s.y=n),"StackedBarChart"===l&&o.stackBy?s.color=Kr(o.stackBy):"GroupedBarChart"===l&&o.groupBy&&(s.color=Kr(o.groupBy),r.push({code:"GROUPED_BAR_APPROXIMATION",path:"/props/groupBy",message:"GroupedBarChart maps groupBy to color; Vega-Lite needs xOffset for an exact grouped layout."}));break}case"LineChart":a=o.curve||o.showPoints?{type:"line"}:"line","object"==typeof a&&(o.curve&&Xr[o.curve]&&(a.interpolate=Xr[o.curve]),o.showPoints&&(a.point=!0)),s.x=en({field:o.xAccessor,type:Jr(o)},o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),o.lineBy?s.color=Kr(o.lineBy):o.colorBy&&(s.color=Kr(o.colorBy));break;case"AreaChart":case"StackedAreaChart":a=o.curve?{type:"area"}:"area","object"==typeof a&&o.curve&&Xr[o.curve]&&(a.interpolate=Xr[o.curve]),"object"==typeof a&&void 0!==o.areaOpacity&&(a.opacity=o.areaOpacity),s.x=en({field:o.xAccessor,type:Jr(o)},o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),"StackedAreaChart"===l&&o.areaBy&&(s.color=Kr(o.areaBy));break;case"Scatterplot":case"BubbleChart":a="point",s.x=en(Zr(o.xAccessor),o.xLabel),s.y=en(Zr(o.yAccessor),o.yLabel),o.colorBy&&(s.color=Kr(o.colorBy)),"BubbleChart"===l&&o.sizeBy&&(s.size=Zr(o.sizeBy),Array.isArray(o.sizeRange)&&(s.size.scale={range:o.sizeRange}));break;case"Heatmap":a="rect",s.x=en(Kr(o.xAccessor),o.xLabel),s.y=en(Kr(o.yAccessor),o.yLabel),o.valueAccessor&&(s.color=Zr(o.valueAccessor));break;case"PieChart":case"DonutChart":a="DonutChart"===l?{type:"arc",innerRadius:o.innerRadius??60}:"arc",o.valueAccessor&&(s.theta=Zr(o.valueAccessor)),o.categoryAccessor&&(s.color=Kr(o.categoryAccessor));break;case"DotPlot":{a="tick";const e="horizontal"===o.orientation,t=en(Kr(o.categoryAccessor),o.categoryLabel),r=en(Zr(o.valueAccessor),o.valueLabel);e?(s.y=t,s.x=r):(s.x=t,s.y=r);break}case"Histogram":a="bar",o.valueAccessor&&(s.x=en(Zr(o.valueAccessor),o.valueLabel),s.x.bin=!o.bins||{maxbins:o.bins},s.y={aggregate:"count",type:"quantitative"}),o.categoryAccessor&&(s.color=Kr(o.categoryAccessor));break;default:{const e=`Component "${l}" has no supported Vega-Lite single-view equivalent.`;return{status:"refused",diagnostics:[{code:"UNSUPPORTED_COMPONENT",severity:"error",path:"/component",message:e}],lossReport:[{code:"UNSUPPORTED_COMPONENT",path:"/component",message:e}],provenance:n}}}o.colorScheme&&s.color&&(s.color.scale={...s.color.scale||{},scheme:o.colorScheme});const c={mark:a};return Array.isArray(o.data)&&(c.data={values:o.data}),Object.keys(s).length>0&&(c.encoding=s),"string"==typeof o.title&&(c.title=o.title),"number"==typeof o.width&&(c.width=o.width),"number"==typeof o.height&&(c.height=o.height),r.length>0&&!t.allowLossy?{status:"refused",diagnostics:r.map(({code:e,message:t,path:r})=>({code:e,severity:"error",message:t,path:r})),lossReport:r,provenance:n}:{status:r.length>0?"lossy":"success",spec:c,artifact:c,diagnostics:r.map(({code:e,message:t,path:r})=>({code:e,severity:"warning",message:t,path:r})),lossReport:r,provenance:n}}function on(e,t){return nn(e,t).spec}var sn="annotation-layer";function an(e,t){const r={...ln(e),specVersion:Rr};return void 0!==t.capability&&(r.capability=t.capability),void 0!==t.audience&&(r.audience=t.audience),{...e,usermeta:{...e.usermeta,idid:r}}}function ln(e){const t=e.usermeta;return t?.idid}function cn(e,t){const r={...ln(e),specVersion:Rr,annotations:[...t]},n=t.map(pn).filter(e=>null!==e).map(e=>({...e,usermeta:{idid:{role:sn}}}));if(0===n.length)return{...e,usermeta:{...e.usermeta,idid:r}};const o=Array.isArray(e.layer)?e.layer:[un(e)],{mark:i,encoding:s,data:a,transform:l,usermeta:c,...d}=e;return{...d,usermeta:{...e.usermeta,idid:r},layer:[...o,...n]}}function dn(e){const t=ln(e)?.annotations;return Array.isArray(t)?t:[]}function un(e){const{mark:t,encoding:r,data:n,transform:o}=e,i={};return t&&(i.mark=t),r&&(i.encoding=r),n&&(i.data=n),o&&(i.transform=o),i}function pn(e){const t=e;switch(t.type){case"y-threshold":return{mark:"rule",encoding:{y:{datum:t.value}}};case"x-threshold":return{mark:"rule",encoding:{x:{datum:t.value}}};case"callout":case"label":case"text":return"string"==typeof t.label?{mark:{type:"text",text:t.label}}:null;default:return null}}function yn(e){let t=1/0,r=-1/0;for(const n of e)t>n&&(t=n),n>r&&(r=n);return[t,r]}function hn(e){if(!e)return{type:"",markProps:{}};if("string"==typeof e)return{type:e,markProps:{}};const{type:t,...r}=e;return{type:t,markProps:r}}function fn(e){return"nominal"===e||"ordinal"===e}function mn(e){return"quantitative"===e||"temporal"===e}function bn(e){return e.usermeta?.idid}function gn(e){if(!bn(e)||!Array.isArray(e.layer))return e;const t=e.layer.filter(e=>!function(e){return"annotation-layer"===e.usermeta?.idid?.role}(e));if(1!==t.length)return e;const{layer:r,...n}=e,{usermeta:o,...i}=t[0];return{...n,...i}}var vn={category10:"category10",category20:"category20",category20b:"category20",category20c:"category20",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3",tableau10:"category10",tableau20:"category20"},xn={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",monotone:"monotoneX",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},kn={sum:"sum",mean:"mean",average:"mean",count:"count",min:"min",max:"max",median:"mean"};function Cn(e,t={}){const r=function(e){const t=e,r=gn(e),n=r,o=[];if(Array.isArray(t.layer)&&r===e&&o.push({code:"UNSUPPORTED_COMPOSITION",severity:"error",path:"/layer",message:"Only the single base view in an IDID-enriched annotation layer can be imported."}),void 0===n.mark)o.push({code:"MISSING_MARK",severity:"error",path:"/mark",message:"A Vega-Lite spec needs a supported single-view mark."});else{const{type:e}=hn(n.mark);new Set(["bar","line","area","point","circle","square","rect","arc","tick"]).has(e)||o.push({code:"UNSUPPORTED_MARK",severity:"error",path:"/mark",message:`Vega-Lite mark "${e||"(missing)"}" has no supported Semiotic translation.`})}Array.isArray(n.transform)&&n.transform.length>0&&o.push({code:"UNSUPPORTED_TRANSFORM",severity:"error",path:"/transform",message:"Vega-Lite transforms must be materialized before strict import."});for(const e of["hconcat","vconcat","concat","facet","repeat","params","selection"])void 0!==n[e]&&o.push({code:"UNSUPPORTED_COMPOSITION",severity:"error",path:"/"+e,message:`Vega-Lite "${e}" is not part of the supported single-view import subset.`});return"string"==typeof n.data?.url&&o.push({code:"UNSUPPORTED_DATA_URL",severity:"error",path:"/data/url",message:"Strict import accepts inline data.values only; load URL data before importing."}),o}(e),n=r.filter(e=>"error"===e.severity),o=bn(e),i={adapter:"semiotic/vega-lite",direction:"import",sourceFormat:"vega-lite",targetFormat:"semiotic-chart-config",..."string"==typeof o?.specVersion?{specVersion:o.specVersion}:{},...o?{metadata:{idid:o}}:{}};if(n.length>0&&"lossy"!==t.mode)return{status:"refused",diagnostics:r,lossReport:n.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),provenance:i};const s=function(e){e=gn(e);const t=[],{type:r,markProps:n}=hn(e.mark),o=e.encoding||{},i=o.x,s=o.y,a=o.color,l=o.size,c=o.theta,d=o.opacity;let u;e.data?.values?u=e.data.values:e.data?.url&&t.push("data.url is not supported — only inline data.values can be translated. Provide data manually."),e.transform&&e.transform.length>0&&t.push("Vega-Lite transforms are not supported. Pre-transform your data before passing to fromVegaLite()."),e.layer&&t.push('Layered specs ("layer") are not supported. Only single-mark specs can be translated.'),(e.hconcat||e.vconcat||e.concat)&&t.push('Concatenated views ("hconcat"/"vconcat"/"concat") are not supported. Translate each sub-spec individually.'),(e.facet||o.facet||o.row||o.column)&&t.push("Faceted views are not supported. Use Semiotic's LinkedCharts or render multiple charts manually."),e.repeat&&t.push('Repeated views ("repeat") are not supported. Translate each field combination individually.'),(e.params||e.selection)&&t.push("Selections/params are not supported. Use Semiotic's LinkedCharts and selection props for interactivity.");const p={};e.width&&(p.width=e.width),e.height&&(p.height=e.height);const y=function(e){if(e)return"string"==typeof e?e:e.text}(e.title);if(y&&(p.title=y),a?.field&&(p.colorBy=a.field,a.scale?.scheme)){const e=vn[a.scale.scheme];e&&(p.colorScheme=e)}void 0!==d?.value&&(p.pointOpacity=d.value);const h=i?.aggregate,f=s?.aggregate;if(u&&(h||f)){const e=f?s:i,t=f?i:s,r=kn[e.aggregate];if(r&&t?.field&&e.field)u=function(e,t){const{groupBy:r,value:n,agg:o="sum"}=t,i=new Map;for(const t of e){const e=t[r]+"";i.has(e)||i.set(e,[]),i.get(e).push(Number(t[n]))}const s=[];for(const[e,t]of i){let n;switch(o){case"count":n=t.length;break;case"mean":n=t.reduce((e,t)=>e+t,0)/t.length;break;case"min":n=yn(t)[0];break;case"max":n=yn(t)[1];break;default:n=t.reduce((e,t)=>e+t,0)}s.push({[r]:e,value:n})}return s}(u,{groupBy:t.field,value:e.field,agg:r});else if(("count"===r||"count"===e.aggregate)&&t?.field&&u){const e=new Map;for(const r of u){const n=r[t.field]+"";e.set(n,(e.get(n)||0)+1)}u=Array.from(e,([e,r])=>({[t.field]:e,value:r}))}}if(i?.bin||s?.bin){const e="Histogram";u&&(p.data=u),i?.bin?(p.valueAccessor=i.field,s?.field&&(p.categoryAccessor=s.field),i.axis?.title&&(p.valueLabel=i.axis.title)):s?.bin&&(p.valueAccessor=s.field,i?.field&&(p.categoryAccessor=i.field),s.axis?.title&&(p.valueLabel=s.axis.title));const r=i?.bin||s?.bin,n="object"==typeof r?r.maxbins:void 0;return n&&(p.bins=n),Sn(e,p,t)}let m;switch(r){case"bar":m=function(e,t,r,n,o,i,s){let a;return r?.field&&!1!==e?.stack&&!1!==t?.stack&&null!==e?.stack&&null!==t?.stack?(a="StackedBarChart",n.stackBy=r.field):a="BarChart",fn(e?.type)&&mn(t?.type)?(n.categoryAccessor=e.field,n.valueAccessor=s?"value":t.field,e?.axis?.title&&(n.categoryLabel=e.axis.title),t?.axis?.title&&(n.valueLabel=t.axis.title)):mn(e?.type)&&fn(t?.type)?(n.categoryAccessor=t.field,n.valueAccessor=i?"value":e.field,n.orientation="horizontal",t?.axis?.title&&(n.categoryLabel=t.axis.title),e?.axis?.title&&(n.valueLabel=e.axis.title)):(e?.field&&(n.categoryAccessor=e.field),t?.field&&(n.valueAccessor=s?"value":t.field),e?.axis?.title&&(n.categoryLabel=e.axis.title),t?.axis?.title&&(n.valueLabel=t.axis.title)),o&&(n.data=o),a}(i,s,a,p,u,h,f);break;case"line":if(m="LineChart",wn(i,s,p,h,f),a?.field&&(p.lineBy=a.field),n.interpolate){const e=xn[n.interpolate];e&&(p.curve=e)}!0===n.point&&(p.showPoints=!0),u&&(p.data=u);break;case"area":if(a?.field?(m="StackedAreaChart",p.areaBy=a.field):m="AreaChart",wn(i,s,p,h,f),n.interpolate){const e=xn[n.interpolate];e&&(p.curve=e)}void 0!==n.opacity&&(p.areaOpacity=n.opacity),u&&(p.data=u);break;case"point":case"circle":case"square":l?.field?(m="BubbleChart",p.sizeBy=l.field,l.scale?.range&&(p.sizeRange=l.scale.range)):m="Scatterplot",wn(i,s,p,h,f),u&&(p.data=u);break;case"rect":m="Heatmap",i?.field&&(p.xAccessor=i.field),s?.field&&(p.yAccessor=s.field),a?.field&&(p.valueAccessor=a.field,delete p.colorBy),i?.axis?.title&&(p.xLabel=i.axis.title),s?.axis?.title&&(p.yLabel=s.axis.title),u&&(p.data=u);break;case"arc":n.innerRadius&&n.innerRadius>0?(m="DonutChart",p.innerRadius=n.innerRadius):m="PieChart",c?.field?p.valueAccessor=c.field:s?.field&&(p.valueAccessor=f?"value":s.field),a?.field&&(p.categoryAccessor=a.field),i?.field&&!c?.field&&(p.categoryAccessor=i.field),u&&(p.data=u);break;case"tick":m="DotPlot",fn(i?.type)?(p.categoryAccessor=i.field,s?.field&&(p.valueAccessor=f?"value":s.field),i?.axis?.title&&(p.categoryLabel=i.axis.title),s?.axis?.title&&(p.valueLabel=s.axis.title)):fn(s?.type)?(p.categoryAccessor=s.field,i?.field&&(p.valueAccessor=h?"value":i.field),p.orientation="horizontal",s?.axis?.title&&(p.categoryLabel=s.axis.title),i?.axis?.title&&(p.valueLabel=i.axis.title)):(i?.field&&(p.categoryAccessor=i.field),s?.field&&(p.valueAccessor=f?"value":s.field)),u&&(p.data=u);break;default:t.push(`Unsupported mark type "${r}". Defaulting to Scatterplot.`),m="Scatterplot",wn(i,s,p,h,f),u&&(p.data=u)}return Sn(m,p,t)}(e),a=(s.warnings||[]).map(e=>({code:"LEGACY_TRANSLATION_WARNING",severity:"warning",message:e})),l=n.map(({code:e,message:t,path:r})=>({code:e,message:t,path:r})),c="lossy"===t.mode?r.map(e=>"error"===e.severity?{...e,severity:"warning"}:e):r;return{status:l.length>0?"lossy":"success",config:s,diagnostics:[...c,...a],lossReport:l,provenance:i}}function wn(e,t,r,n,o){e?.field&&(r.xAccessor=n?"value":e.field),t?.field&&(r.yAccessor=o?"value":t.field),e?.axis?.title&&(r.xLabel=e.axis.title),t?.axis?.title&&(r.yLabel=t.axis.title)}function Sn(e,t,r){const n={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){n.warnings=r;for(const e of r)console.warn("[semiotic/fromVegaLite] "+e)}return n}var An={category10:"category10",tableau10:"category10",observable10:"category10",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3"},jn={linear:"linear","monotone-x":"monotoneX","monotone-y":"monotoneY",step:"step","step-after":"stepAfter","step-before":"stepBefore",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom",natural:"natural"},$n=new Set(["frame","gridx","gridy","gridfx","gridfy","axisx","axisy","axisfx","axisfy","rulex","ruley","tip","crosshair","pointer","hexgrid","text"]);function Mn(e){return"string"==typeof e?e:void 0}function Bn(e,t){if(!Array.isArray(e)||!t)return!1;for(const r of e){const e=r?.[t];if(null!=e)return!("number"==typeof e||e instanceof Date)&&"string"==typeof e&&Number.isNaN(Date.parse(e))}return!1}function Wn(e,t,r){(function(e){return"function"==typeof e})(t)&&e.push(`The "${r}" channel is a function accessor, which can't be serialized to a config. Pass a field name (string) instead, or pre-derive the field on your data.`)}function Pn(e){const t=[];(e.facet||e.fx||e.fy)&&t.push('Faceted plots ("facet"/"fx"/"fy") are not supported. Use Semiotic\'s LinkedCharts or render multiple charts.');const r=(Array.isArray(e.marks)?e.marks:[]).filter(e=>e&&!$n.has(e.type.toLowerCase()));if(0===r.length)return t.push("No translatable data mark found in the Plot spec. Defaulting to an empty Scatterplot."),Fn("Scatterplot",{},t);r.length>1&&t.push(`Multiple data marks (${r.map(e=>e.type).join(", ")}); only the first is translated. Layered multi-mark plots aren't supported.`);const n=r[0],o=n.options||{},i=n.data||e.data,s={};"number"==typeof e.width&&(s.width=e.width),"number"==typeof e.height&&(s.height=e.height),"string"==typeof e.title&&(s.title=e.title),e.x?.label&&(s.xLabel=e.x.label),e.y?.label&&(s.yLabel=e.y.label);const a=e.color?.scheme?An[e.color.scheme]:void 0;Wn(t,o.x,"x"),Wn(t,o.y,"y"),Wn(t,o.fill,"fill"),Wn(t,o.stroke,"stroke"),Wn(t,o.r,"r");const l=Mn(o.x),c=Mn(o.y),d=Mn(o.fill),u=Mn(o.stroke),p=d||u,y=n.type.toLowerCase();let h;switch(y){case"line":case"liney":case"linex":{h="LineChart",l&&(s.xAccessor=l),c?s.yAccessor=c:t.push(n.type+" has no explicit y field; provide options.y."),Bn(i,l)&&t.push(`The x field "${l}" looks categorical; LineChart uses a continuous x scale, so a categorical x won't position (the line won't draw). Use a numeric/time x, or a bar chart for categories.`),"liney"!==y||l||t.push("lineY without an explicit x plots against the row index, which Semiotic doesn't infer. Provide options.x.");const e=u||d;e&&(s.lineBy=e),Rn(o,s),Tn(s,i,{colorScheme:a});break}case"bary":case"bar":h=p?"StackedBarChart":"BarChart",l&&(s.categoryAccessor=l),c&&(s.valueAccessor=c),p&&(s.stackBy=p),Tn(s,i,{colorScheme:a});break;case"barx":h=p?"StackedBarChart":"BarChart",s.orientation="horizontal",c&&(s.categoryAccessor=c),l&&(s.valueAccessor=l),p&&(s.stackBy=p),Tn(s,i,{colorScheme:a});break;case"dot":case"doty":case"dotx":case"circle":{const e=o.r;"string"==typeof e?(h="BubbleChart",s.sizeBy=e):(h="Scatterplot","number"==typeof e&&(s.pointRadius=e)),l&&(s.xAccessor=l),c&&(s.yAccessor=c),Tn(s,i,{colorBy:p,colorScheme:a});break}case"area":case"areay":case"areax":h=d&&d!==c?"StackedAreaChart":"AreaChart",l&&(s.xAccessor=l),c&&(s.yAccessor=c),Bn(i,l)&&t.push(`The x field "${l}" looks categorical; ${h} uses a continuous x scale, so a categorical x won't position. Use a numeric/time x.`),"StackedAreaChart"===h&&d&&(s.areaBy=d),Rn(o,s),Tn(s,i,{colorBy:"StackedAreaChart"===h?void 0:p,colorScheme:a});break;case"recty":case"rectx":case"rect":{h="Histogram";const e="rectx"===y?l:c||l;e&&(s.valueAccessor=e),p&&(s.categoryAccessor=p),Tn(s,i,{colorScheme:a});break}case"cell":case"celly":case"cellx":h="Heatmap",l&&(s.xAccessor=l),c&&(s.yAccessor=c),p&&(s.valueAccessor=p),Tn(s,i);break;case"tick":case"tickx":case"ticky":h="DotPlot","tickx"===y?(c&&(s.categoryAccessor=c),l&&(s.valueAccessor=l),s.orientation="horizontal"):(l&&(s.categoryAccessor=l),c&&(s.valueAccessor=c)),Tn(s,i,{colorBy:p,colorScheme:a});break;default:t.push(`Plot mark "${n.type}" has no faithful Semiotic equivalent in this adapter. Defaulting to a Scatterplot of x/y; verify the result or file for support.`),h="Scatterplot",l&&(s.xAccessor=l),c&&(s.yAccessor=c),Tn(s,i,{colorBy:p,colorScheme:a})}if(In.has(h)){const t=Ln(e.x?.type),r=Ln(e.y?.type);t&&(s.xScaleType=t),r&&(s.yScaleType=r)}return Fn(h,s,t)}var In=new Set(["LineChart","AreaChart","StackedAreaChart","Scatterplot","BubbleChart"]);function Ln(e){return"time"===e||"utc"===e?"time":"log"===e?"log":void 0}function Rn(e,t){e.curve&&jn[e.curve]&&(t.curve=jn[e.curve])}function Tn(e,t,r={}){Array.isArray(t)&&(e.data=t),r.colorBy&&(e.colorBy=r.colorBy),r.colorScheme&&(e.colorScheme=r.colorScheme)}function Fn(e,t,r){const n={component:e,props:t,version:"1",createdAt:(new Date).toISOString()};if(r.length>0){n.warnings=r;for(const e of r)console.warn("[semiotic/fromObservablePlot] "+e)}return n}var En=new Set(["sequencediagram","classdiagram","statediagram","statediagram-v2","erdiagram","gantt","pie","journey","gitgraph","mindmap","timeline","quadrantchart","requirementdiagram","c4context","sankey-beta","block-beta","xychart-beta"]),Nn=new Set(["TD","TB","BT","LR","RL"]),On=/(<-->|-\.->|-\.-|-->|--x|--o|---|==>|===)/,Dn=[["((","))","circle"],["([","])","stadium"],["[[","]]","subroutine"],["[(",")]","cylinder"],["{{","}}","hexagon"],["[","]","rect"],["(",")","round"],["{","}","diamond"],[">","]","flag"]];function zn(e){const t=e.trim();return t.length>=2&&('"'===t[0]&&t.endsWith('"')||"'"===t[0]&&t.endsWith("'"))?t.slice(1,-1):t}function qn(e){const t=e.trim();if(!t)return null;const r=t.match(/^([A-Za-z0-9_][\w-]*)/);if(!r)return null;const n=r[1],o=t.slice(n.length).trim();if(!o)return{id:n};for(const[e,t,r]of Dn)if(o.startsWith(e)&&o.endsWith(t)&&o.length>=e.length+t.length)return{id:n,label:zn(o.slice(e.length,o.length-t.length)),shape:r};return{id:n}}function _n(e){const t=[],r=()=>({kind:"flowchart",direction:"TD",nodes:[],edges:[],...t.length?{warnings:t}:{}});if("string"!=typeof e||!e.trim())return t.push("Empty Mermaid input."),r();const n=e.split("\n").map(e=>e.replace(/%%.*$/,"").trim()).filter(e=>e.length>0);if(0===n.length)return t.push("No content after stripping comments."),r();const o=n[0],i=o.split(/\s+/)[0].toLowerCase();if("graph"!==i&&"flowchart"!==i&&(En.has(i)?t.push(`Mermaid "${o.split(/\s+/)[0]}" diagrams aren't supported — only graph/flowchart compile to a Semiotic graph. Other diagram types are declined rather than mistranslated.`):t.push(`Expected a "graph" or "flowchart" header; got "${o}". Treating remaining lines as flowchart edges.`),En.has(i)))return r();let s="TD";const a=o.split(/\s+/)[1]?.toUpperCase();a&&Nn.has(a)&&(s=a);const l="graph"===i||"flowchart"===i?1:0,c=new Map,d=[];let u=0;const p=e=>{const t=c.get(e.id);t?e.label&&t.label===t.id&&(t.label=e.label,e.shape&&(t.shape=e.shape)):c.set(e.id,{id:e.id,label:e.label??e.id,shape:e.shape??"rect",layer:0,row:u++})},y=e=>e.replace(/--\s+([^->|]+?)\s+-->/g,"--\x3e|$1|").replace(/-\.\s+([^->|]+?)\s+\.->/g,"-.->|$1|").replace(/==\s+([^=>|]+?)\s+==>/g,"==>|$1|");for(let e=l;n.length>e;e++){const r=y(n[e]);if(/^(subgraph|end|classDef|class|style|click|linkStyle|direction)\b/.test(r)){/^subgraph\b/.test(r)&&t.push("`subgraph` grouping is flattened; nodes are kept, the grouping is dropped.");continue}if(!On.test(r)){const e=qn(r);e&&p(e);continue}const o=r.split(On);let i=null;for(let e=0;o.length>e;e+=2){let r,n=o[e].trim();const s=n.match(/^\|([^|]*)\|\s*(.*)$/);s&&(r=zn(s[1]),n=s[2].trim()),n.includes("&")&&(t.push('Multiple nodes joined with "&" — only the first is linked in this alpha.'),n=n.split("&")[0].trim());const a=qn(n);a?(p(a),i&&d.push({source:i.id,target:a.id,...r?{label:r}:{}}),i=a):i=null}}return 0===c.size?(t.push("No nodes found."),r()):(function(e,t,r){const n=new Map,o=new Map;for(const t of e.keys())n.set(t,[]),o.set(t,0);for(const r of t)r.source!==r.target&&e.has(r.source)&&e.has(r.target)&&(n.get(r.source).push(r.target),o.set(r.target,(o.get(r.target)||0)+1));const i=[];for(const[e,t]of o)0===t&&i.push(e);let s=0;for(;i.length>0;){const t=i.shift();s++;const r=e.get(t).layer;for(const s of n.get(t)){const t=e.get(s);r+1>t.layer&&(t.layer=r+1);const n=(o.get(s)||0)-1;o.set(s,n),0===n&&i.push(s)}}e.size>s&&r.push("Graph contains a cycle; layering is best-effort (not a strict DAG).");const a=new Map;for(const t of e.values()){const e=a.get(t.layer)||[];e.push(t),a.set(t.layer,e)}for(const e of a.values())e.sort((e,t)=>e.row-t.row),e.forEach((e,t)=>{e.row=t})}(c,d,t),{kind:"flowchart",direction:s,nodes:[...c.values()],edges:d,...t.length?{warnings:t}:{}})}var Hn=/^\d{4}-\d{1,2}$/;function Gn(e,t){if(!e||!t)return{data:e,failed:!1};let r=!1,n=!1;const o=e.map(e=>{const o=e[t];if("string"!=typeof o)return e;const i=function(e){const t=e.trim();if(!t||!Number.isNaN(Number(t)))return NaN;const r=Hn.test(t)?t+"-01":t;if(r===t&&10>t.length)return NaN;const n=Date.parse(r);return Number.isFinite(n)?n:NaN}(o);return r=!0,Number.isFinite(i)?{...e,[t]:i}:(n=!0,{...e,[t]:NaN})});return{data:r?o:e,failed:n}}var Vn={linear:"linear",monotone:"monotoneX","monotone-x":"monotoneX","monotone-y":"monotoneY",step:"step","step-before":"stepBefore","step-after":"stepAfter",basis:"basis",cardinal:"cardinal","catmull-rom":"catmullRom"},Un={category10:"category10",tableau10:"category10",accent:"accent",dark2:"dark2",paired:"paired",pastel1:"pastel1",pastel2:"pastel2",set1:"set1",set2:"set2",set3:"set3"},Yn=new Set(["blues","reds","greens","viridis","custom"]),Qn={theta:"size",value:"size"},Xn={bar:["x","y","color"],groupedBar:["x","y","group","color"],stackedBar:["x","y","color","group"],line:["x","y","color","detail","strokeDash","order"],area:["x","y","color"],scatter:["x","y","color","size","shape"],heatmap:["x","y","color"],pie:["size","color","angle","value","theta","y"],histogram:["x","y","color"],boxplot:["x","y","color"]};function Zn(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function Kn(e,t){const r=e[t]?.field;return"string"==typeof r&&r.length>0?r:void 0}function Jn(e){return"nominal"===e?.type||"ordinal"===e?.type}function eo(e){return"quantitative"===e?.type||"temporal"===e?.type}function to(e,t,r){if("temporal"===e?.type)return!0;const n=function(e,t){if(!e||!t)return;const r=t[e];return"string"==typeof r?r:"string"==typeof r?.semanticType?r.semanticType:void 0}(t,r);return!!n&&/date|time|year|month|quarter|week/i.test(n)}function ro(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function no(e){return"string"==typeof e&&e.length>0?e:void 0}function oo(e){return"boolean"==typeof e?e:void 0}function io(e,t,r){r.push(`Temporal ${t} field "${e||"unknown"}" contains unparseable date strings; those rows will be skipped by the time scale. Prefer Date objects, ISO date strings, or epoch timestamps.`)}function so(e,t,r){if(!t)return;const n=t.toLowerCase(),o=Un[n];o?e.colorScheme=o:r.push(`Flint color scheme "${t}" is not mapped to a Semiotic categorical colorScheme.`)}function ao(e,t,r,n){r&&("xy"===n?(t.x&&r[t.x]&&(e.xLabel=r[t.x]),t.y&&r[t.y]&&(e.yLabel=r[t.y])):(t.category&&r[t.category]&&(e.categoryLabel=r[t.category]),t.value&&r[t.value]&&(e.valueLabel=r[t.value])))}function lo(e){const t=e.x,r=e.y,n=Kn(e,"x"),o=Kn(e,"y");return Jn(t)&&!Jn(r)?{category:n,value:o,valueEncoding:r}:Jn(r)&&!Jn(t)||eo(t)&&!eo(r)&&o?{category:o,value:n,valueEncoding:t,orientation:"horizontal"}:{category:n,value:o,valueEncoding:r}}function co(e,t,r,n,o){const i=function(e){return"count"===e||"sum"===e||"mean"===e?e:"average"===e?"mean":void 0}(n);if(!i)return{data:e,valueAccessor:r};if(!e)return o.push(`aggregate: "${n}" requires inline data.values; leaving the requested value accessor unchanged.`),{data:e,valueAccessor:r||"value"};if("count"!==i&&!r)return o.push(`aggregate: "${n}" requires an encoded value field; leaving data unaggregated.`),{data:e,valueAccessor:r};const s=new Map,a=t.filter(e=>!!e);for(const t of e){const e={};for(const r of a)e[r]=t[r];const n=JSON.stringify(e);let o=s.get(n);if(o||(o={keys:e,values:[],count:0},s.set(n,o)),o.count+=1,r){const e=Number(t[r]);Number.isFinite(e)&&o.values.push(e)}}const l=[];for(const e of s.values()){let t=e.count;"sum"===i?t=e.values.reduce((e,t)=>e+t,0):"mean"===i&&(t=e.values.length>0?e.values.reduce((e,t)=>e+t,0)/e.values.length:0),l.push({...e.keys,value:t})}return{data:l,valueAccessor:"value"}}function uo(e,t){t&&(e.data=t)}function po(e,t,r){const n=no(t?.interpolate);if(!n)return;const o=Vn[n];o?e.curve=o:r.push(`Flint interpolate "${n}" is not mapped to a Semiotic curve.`)}function yo(e){const t=[],r=e.chart_spec,n=r?.chartType,o=function(e){const t=((e||"")+"").toLowerCase().replace(/[^a-z0-9]/g,"");return"barchart"===t||"bar"===t?"bar":"groupedbarchart"===t||"groupedbar"===t||"clusteredbar"===t?"groupedBar":"stackedbarchart"===t||"stackedbar"===t?"stackedBar":"linechart"===t||"line"===t?"line":"areachart"===t||"area"===t||"streamgraph"===t?"area":"scatterplot"===t||"scatter"===t||"scatterchart"===t||"pointchart"===t?"scatter":"heatmap"===t||"heatmapchart"===t?"heatmap":"piechart"===t||"pie"===t||"donutchart"===t||"donut"===t?"pie":"histogram"===t||"histogramchart"===t?"histogram":"boxplot"===t||"boxplotchart"===t||"boxandwhisker"===t||"boxandwhiskerplot"===t?"boxplot":void 0}(n),i=r?.chartProperties,s=Array.isArray(e.data?.values)?e.data.values:void 0,a="string"==typeof e.data?.url?e.data.url:void 0,l=function(e,t){const r={};if(!e||"object"!=typeof e)return r;for(const[n,o]of Object.entries(e)){const e=Qn[n]||n;let i=o;if(Array.isArray(i)){if(0===i.length)continue;t.push(`Static-series array encoding on "${n}" is not supported; using the first field and preserving the full encoding in flint.unmappedEncodings.`),i=i[0]}"string"==typeof i?r[e]={field:i}:Zn(i)?r[e]=i:null!=i&&t.push(`Encoding "${n}" is not an object, string, or array and was ignored.`)}return r}(r?.encodings,t),c={};a&&t.push("data.url is preserved in flint.dataUrl but not fetched; resolve it to data.values before rendering."),o||t.push(`Unsupported Flint chartType "${n}". Defaulting to Scatterplot.`),function(e,t,r,n){const o=t||r;if(!o)return;let i=o.width,s=o.height;t&&r&&(t.width>r.width&&(i=r.width,n.push("chart_spec.canvasSize.width is smaller than baseSize.width; clamped Semiotic width to the canvas ceiling.")),t.height>r.height&&(s=r.height,n.push("chart_spec.canvasSize.height is smaller than baseSize.height; clamped Semiotic height to the canvas ceiling."))),Number.isFinite(i)&&(e.width=i),Number.isFinite(s)&&(e.height=s)}(c,r?.baseSize,r?.canvasSize,t),function(e,t){const r=no(t?.title);r&&(e.title=r)}(c,i);const d=o||"scatter";let u;switch(d){case"bar":case"groupedBar":case"stackedBar":u=function(e,t,r,n,o,i,s){const a={...n},l=lo(t),c="groupedBar"===e?Kn(t,"group")||Kn(t,"color"):Kn(t,"color")||Kn(t,"group"),d=co(r,[l.category,c],l.value,l.valueEncoding?.aggregate,s);uo(a,d.data),l.category&&(a.categoryAccessor=l.category),d.valueAccessor&&(a.valueAccessor=d.valueAccessor),l.orientation&&(a.orientation=l.orientation),ao(a,{category:l.category,value:l.value},i,"ordinal");const u=ro(o?.cornerRadius);void 0!==u&&(a.roundedTop=u);const p=no(o?.stackMode);if("normalize"===p?a.normalize=!0:p&&"stacked"!==p&&s.push(`Flint stackMode "${p}" is not supported by Semiotic ${e}; leaving default stacking behavior.`),so(a,t.color?.scheme,s),"groupedBar"===e)return c&&(a.groupBy=c,a.colorBy=c,a.showLegend=!0),{component:"GroupedBarChart",props:a,supportedProperties:["cornerRadius"]};if("stackedBar"===e)return c?(a.stackBy=c,a.colorBy=c,a.showLegend=!0,{component:"StackedBarChart",props:a,supportedProperties:["cornerRadius","stackMode"]}):(s.push("Stacked Bar Chart has no color/group series field; emitted a BarChart instead."),{component:"BarChart",props:a,supportedProperties:["cornerRadius","stackMode"]});const y=Kn(t,"color");return y&&(a.colorBy=y),{component:"BarChart",props:a,supportedProperties:["cornerRadius"]}}(d,l,s,c,i,e.field_display_names,t);break;case"line":case"area":case"scatter":u=function(e,t,r,n,o,i,s,a){const l={...n},c=Kn(t,"x"),d=Kn(t,"y"),u=Kn(t,"color"),p=Kn(t,"detail"),y=Kn(t,"size"),h=Kn(t,"shape"),f=co(r,[c,u||p],d,t.y?.aggregate,a),m=to(t.x,c,i),b=to(t.y,d,i);let g=f.data;if(m){const e=Gn(g,c);g=e.data,e.failed&&io(c,"x",a)}if(b){const e=Gn(g,f.valueAccessor);g=e.data,e.failed&&io(f.valueAccessor,"y",a)}if(uo(l,g),c&&(l.xAccessor=c),f.valueAccessor&&(l.yAccessor=f.valueAccessor),m&&(l.xScaleType="time"),b&&(l.yScaleType="time"),ao(l,{x:c,y:d},s,"xy"),"line"===e){(u||p)&&(l.lineBy=u||p,l.colorBy=u||p),po(l,o,a);const e=oo(o?.showPoints);return void 0!==e&&(l.showPoints=e),{component:"LineChart",props:l,supportedProperties:["interpolate","showPoints"]}}if("area"===e){po(l,o,a);const e=ro(o?.opacity);void 0!==e&&(l.areaOpacity=e);const t=no(o?.stackMode);return"normalize"===t?l.normalize=!0:t&&"stacked"!==t&&a.push(`Flint area stackMode "${t}" is not supported by Semiotic; leaving default stacking behavior.`),u?(l.areaBy=u,l.colorBy=u,{component:"StackedAreaChart",props:l,supportedProperties:["interpolate","opacity","stackMode"]}):{component:"AreaChart",props:l,supportedProperties:["interpolate","opacity"]}}if(u&&(l.colorBy=u),y){l.sizeBy=y,h&&a.push("Flint shape encoding is not mapped for BubbleChart; Semiotic only maps shape onto Scatterplot in this adapter.");const e=ro(o?.opacity);return void 0!==e&&(l.bubbleOpacity=e),so(l,t.color?.scheme,a),{component:"BubbleChart",props:l,supportedProperties:["opacity"]}}h&&(l.symbolBy=h);const v=ro(o?.opacity);return void 0!==v&&(l.pointOpacity=v),so(l,t.color?.scheme,a),{component:"Scatterplot",props:l,supportedProperties:["opacity"]}}(d,l,s,c,i,e.semantic_types,e.field_display_names,t);break;case"heatmap":u=function(e,t,r,n,o,i){const s={...r},a=Kn(e,"x"),l=Kn(e,"y"),c=Kn(e,"color");uo(s,t),a&&(s.xAccessor=a),l&&(s.yAccessor=l),c&&(s.valueAccessor=c);const d=oo(n?.showTextLabels);return void 0!==d&&(s.showValues=d),ao(s,{x:a,y:l},o,"xy"),function(e,t,r){if(!t)return;const n=t.toLowerCase();Yn.has(n)?e.colorScheme=n:r.push(`Flint heatmap color scheme "${t}" is not available in Semiotic's Heatmap colorScheme enum.`)}(s,e.color?.scheme||no(n?.colorScheme),i),{component:"Heatmap",props:s,supportedProperties:["showTextLabels","colorScheme"]}}(l,s,c,i,e.field_display_names,t);break;case"pie":u=function(e,t,r,n,o,i){const s={...n},a=Kn(t,"color"),l=co(r,[a],Kn(t,"size")||Kn(t,"angle")||Kn(t,"y"),t.size?.aggregate||t.angle?.aggregate||t.y?.aggregate,i);uo(s,l.data),a&&(s.categoryAccessor=a),l.valueAccessor&&(s.valueAccessor=l.valueAccessor);const c=ro(o?.innerRadius),d=/donut/i.test(e)||void 0!==c&&c>0;d&&void 0!==c&&(s.innerRadius=c);const u=ro(o?.cornerRadius);return void 0!==u&&(s.cornerRadius=u),null!=o?.sortSlices&&i.push("Flint sortSlices is not mapped; preserve or sort slice order before calling unstable_fromFlintChart()."),so(s,t.color?.scheme,i),{component:d?"DonutChart":"PieChart",props:s,supportedProperties:["innerRadius","cornerRadius","sortSlices"]}}(n,l,s,c,i,t);break;case"histogram":u=function(e,t,r,n){const o={...r},i=Kn(e,"x")||Kn(e,"y"),s=Kn(e,"color");uo(o,t),i&&(o.valueAccessor=i),s&&(o.categoryAccessor=s,o.colorBy=s);const a=ro(n?.binCount);return void 0!==a&&a>0&&(o.bins=a),{component:"Histogram",props:o,supportedProperties:["binCount"]}}(l,s,c,i);break;case"boxplot":u=function(e,t,r,n,o,i){const s={...r},a=lo(e);uo(s,t),a.category&&(s.categoryAccessor=a.category),a.value&&(s.valueAccessor=a.value),a.orientation&&(s.orientation=a.orientation);const l=Kn(e,"color");l&&(s.colorBy=l);const c=oo(n?.showOutliers);void 0!==c&&(s.showOutliers=c);const d=no(n?.whiskerMethod);return d&&"iqr"!==d&&i.push(`Flint whiskerMethod "${d}" is not mapped; Semiotic BoxPlot keeps its default whisker calculation.`),ao(s,{category:a.category,value:a.value},o,"ordinal"),{component:"BoxPlot",props:s,supportedProperties:["showOutliers","whiskerMethod"]}}(l,s,c,i,e.field_display_names,t)}!function(e,t,r,n){if(!t)return;const o=new Set([...r,"title"]),i=Object.keys(t).filter(e=>!o.has(e));i.length>0&&n.push(`Flint chartProperties not mapped for ${e}: ${i.join(", ")}.`)}(d,i,u.supportedProperties,t);const p=function(e,t,r){if(!t)return;const n=new Set(Xn[e]),o={};for(const[e,r]of Object.entries(t))n.has(Qn[e]||e)&&!Array.isArray(r)||(o[e]=r);if(0===Object.keys(o).length)return;const i=Object.keys(o),s=i.filter(e=>"column"===e||"row"===e);s.length>0&&r.push(`Flint facet channel(s) ${s.join(", ")} are not supported by this adapter; render multiple Semiotic charts instead.`);const a=i.filter(e=>"column"!==e&&"row"!==e&&!n.has(Qn[e]||e));return a.length>0&&r.push(`Flint encoding channel(s) not mapped for ${e}: ${a.join(", ")}.`),o}(d,r?.encodings,t),y={component:u.component,props:u.props,version:"1",createdAt:(new Date).toISOString(),flint:{chartType:n||"",...e.semantic_types?{semanticTypes:e.semantic_types}:{},...e.field_display_names?{fieldDisplayNames:e.field_display_names}:{},...i?{chartProperties:i}:{},...r?.baseSize?{baseSize:r.baseSize}:{},...r?.canvasSize?{canvasSize:r.canvasSize}:{},...a?{dataUrl:a}:{},...e.options?{options:e.options}:{},...p?{unmappedEncodings:p}:{}}};if(t.length>0){y.warnings=t;for(const e of t)console.warn("[semiotic/fromFlintChart] "+e)}return y}var ho=/^var\(\s*(--[^,)]+)(?:\s*,\s*([^)]+))?\s*\)$/,fo=new WeakMap,mo=0,bo=!1,go=null,vo=null;function xo(e,t){if(!t)return t;const r=ho.exec(t);if(!r)return t;const n=e.canvas;if(!n)return r[2]?.trim()||t;!function(){if(bo)return;if("undefined"==typeof window||"undefined"==typeof document)return;bo=!0;const e=()=>{mo++};if("undefined"!=typeof MutationObserver&&document.documentElement&&new MutationObserver(e).observe(document.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme","data-semiotic-theme"]}),"function"==typeof window.matchMedia)try{go=window.matchMedia("(prefers-color-scheme: dark)"),vo=e,"function"==typeof go.addEventListener?go.addEventListener("change",vo):"function"==typeof go.addListener&&go.addListener(vo)}catch{}}();let o=fo.get(n);o&&o.version===mo||(o={version:mo,map:new Map},fo.set(n,o));const i=o.map.get(t);if(void 0!==i)return i;const s=getComputedStyle(n).getPropertyValue(r[1]).trim()||r[2]?.trim()||t;return o.map.set(t,s),s}var ko={annotationBackground:"rgba(248, 250, 252, 0.94)",annotationStroke:"#334155",annotationText:"#0f172a",background:"#f8fafc",border:"#334155",closedWindowFill:"rgba(220, 38, 38, 0.08)",closedWindowStroke:"rgba(220, 38, 38, 0.55)",danger:"#dc2626",focus:"#f97316",grid:"#cbd5e1",gutterFill:"rgba(71, 85, 105, 0.14)",lateFill:"#f97316",openWindowFill:"rgba(14, 165, 233, 0.07)",openWindowStroke:"rgba(14, 165, 233, 0.3)",primary:"#0ea5e9",selectedFill:"#f97316",selectedStroke:"#7c2d12",success:"#22c55e",text:"#0f172a",textSecondary:"#475569",warning:"#f97316"},Co={background:{names:["--semiotic-bg","--surface-1","--surface-0"],fallback:ko.background},border:{names:["--semiotic-border","--surface-3"],fallback:ko.border},danger:{names:["--semiotic-danger","--viz-4"],fallback:ko.danger},focus:{names:["--semiotic-focus","--accent","--viz-9"],fallback:ko.focus},grid:{names:["--semiotic-grid","--surface-3"],fallback:ko.grid},primary:{names:["--semiotic-primary","--accent","--viz-5"],fallback:ko.primary},success:{names:["--semiotic-success","--viz-2"],fallback:ko.success},text:{names:["--semiotic-text","--text-primary"],fallback:ko.text},textSecondary:{names:["--semiotic-text-secondary","--text-secondary"],fallback:ko.textSecondary},warning:{names:["--semiotic-warning","--viz-9","--viz-3"],fallback:ko.warning}};function wo(e,t){const r=e.canvas;if("function"!=typeof getComputedStyle||!r)return t.fallback;const n=getComputedStyle(r);for(const r of t.names){const t=n.getPropertyValue(r).trim();if(t)return xo(e,t)??t}return t.fallback}function So(e,t){const r=Math.max(0,Math.min(1,t)),n=e.trim(),o=n.match(/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i);if(o){const[,e,t,n]=o;return So(`#${e}${e}${t}${t}${n}${n}`,r)}const i=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(i){const[,e,t,n]=i;return`rgba(${parseInt(e,16)}, ${parseInt(t,16)}, ${parseInt(n,16)}, ${r})`}const s=n.match(/^rgb\s*\(\s*([^)]+?)\s*\)$/i);if(s)return`rgba(${s[1]}, ${r})`;const a=n.match(/^rgba\s*\(\s*([^,]+,\s*[^,]+,\s*[^,]+),\s*[^)]+\)$/i);return a?`rgba(${a[1]}, ${r})`:n}function Ao(e){const t=wo(e,Co.primary),r=wo(e,Co.danger),n=wo(e,Co.warning),o=wo(e,Co.success),i=wo(e,Co.border),s=wo(e,Co.background),a=wo(e,Co.text),l=wo(e,Co.textSecondary),c=wo(e,Co.focus),d=wo(e,Co.grid);return{annotationBackground:So(s,.94),annotationStroke:i,annotationText:a,background:s,border:i,closedWindowFill:So(r,.08),closedWindowStroke:So(r,.55),danger:r,focus:c,grid:d,gutterFill:So(l,.14),lateFill:n,openWindowFill:So(t,.07),openWindowStroke:So(t,.3),primary:t,selectedFill:n,selectedStroke:c,success:o,text:a,textSecondary:l,warning:n}}function jo(e=[]){return e.map(e=>({id:e.id,label:e.label,count:e.count,...null!=e.secondary?{secondary:e.secondary}:{},...e.secondaryLabel?{secondaryLabel:e.secondaryLabel}:{},...null!=e.observed?{observed:e.observed}:{}}))}function $o(e,t={}){const r=t.bodies??function(e){return e.world.bodies.map(e=>({id:e.id,x:e.x,y:e.y,prevX:e.prevX,prevY:e.prevY,vx:e.vx,vy:e.vy,angle:e.angle,mass:e.mass,shape:{...e.shape},sleeping:e.sleeping,datum:e.datum}))}(e),n=r.filter(e=>e.sleeping).length;return{bodyCount:r.length,sleepingCount:n,settled:"settled"===e.simulationState&&0===e.queue.length&&n===r.length,stepsRun:Math.max(0,Math.floor(t.stepsRun??0)),seed:e.world.options.seed,binCounts:jo(t.projectionRows)}}var Mo={fill:"#4e79a7",stroke:"#172033",strokeWidth:1,opacity:.85};function Bo(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if(null!=e&&""!==e)return e+""}return e.id}function Wo(e,t){const r="function"==typeof t?t(e):t;return{...Mo,...r??{}}}function Po(e,t={}){const r=function(e){return e.datum&&"object"==typeof e.datum?e.datum:null}(e),n={label:t.getBodyLabel?.(e)??Bo(e)},o={style:Wo(e,t.bodyStyle),datum:r,accessibleDatum:r,accessibility:n,_transitionKey:e.id};return"aabb"===e.shape.type?{type:"rect",x:e.x-e.shape.width/2,y:e.y-e.shape.height/2,w:e.shape.width,h:e.shape.height,...o}:{type:"point",x:e.x,y:e.y,r:e.shape.radius,pointId:e.id,...o}}function Io(e,t={}){return e.map(e=>Po(e,t))}function Lo(e,t={}){const r=e.settle(t.maxSteps),n=e.readBodies(),o=e.snapshot();return{snapshot:o,bodies:n,sceneNodes:Io(n,t),evidence:$o(o,{bodies:n,projectionRows:t.projectionRows,stepsRun:r}),stepsRun:r}}var Ro=l(require("react-dom/server")),To=l(require("react")),Fo=require("d3-shape"),Eo=null;var No=require("react/jsx-runtime");function Oo(e){return"object"==typeof e&&null!==e&&"hatch"===e.type}function Do(e){return["hatch",e.background??"transparent",e.stroke??"#000",e.lineWidth??1.5,e.spacing??6,e.angle??45,e.lineOpacity??1].join("|")}var zo=new Map;function qo(e,t){const{background:r="transparent",stroke:n="#000",lineWidth:o=1.5,spacing:i=6,angle:s=45,lineOpacity:a=1}=e,l=Math.max(8,Math.ceil(2*i));return(0,No.jsxs)("pattern",{id:t,width:l,height:l,patternUnits:"userSpaceOnUse",patternTransform:0!==s?`rotate(${s})`:void 0,children:[r&&"transparent"!==r&&(0,No.jsx)("rect",{width:l,height:l,fill:r}),(0,No.jsx)("line",{x1:0,y1:0,x2:0,y2:l,stroke:n,strokeWidth:o,strokeOpacity:a}),(0,No.jsx)("line",{x1:i,y1:0,x2:i,y2:l,stroke:n,strokeWidth:o,strokeOpacity:a})]},t)}function _o(e,t,r="#4e79a7"){if(Oo(e)){const r=function(e,t){let r=2166136261;const n=Do(t);for(let e=0;n.length>e;e++)r^=n.charCodeAt(e),r=Math.imul(r,16777619);return`${e}-hatch-${(r>>>0).toString(36)}`}(t,e);return{fill:`url(#${r})`,def:qo(e,r)}}return e&&"string"==typeof e?{fill:e}:{fill:r}}var Ho=require("d3-shape");function Go(e){switch(e){case"monotoneX":return Ho.curveMonotoneX;case"monotoneY":return Ho.curveMonotoneY;case"cardinal":return Ho.curveCardinal;case"catmullRom":return Ho.curveCatmullRom;case"step":return Ho.curveStep;case"stepBefore":return Ho.curveStepBefore;case"stepAfter":return Ho.curveStepAfter;case"basis":return Ho.curveBasis;case"natural":return Ho.curveNatural;default:return null}}function Vo(e,t,r){if(null==t)return r;if(Oo(t)){const n=function(e,t){const r="undefined"!=typeof window&&window.devicePixelRatio||1,n=`${Do(e)}@${r}`,o=zo.get(n);if(void 0!==o)return o;const i=function(e={},t){const{background:r="transparent",stroke:n="#000",lineWidth:o=1.5,spacing:i=6,angle:s=45}=e,a=Math.max(8,Math.ceil(2*i));let l;try{l=function(e){return"undefined"!=typeof OffscreenCanvas?new OffscreenCanvas(e,e):(Eo||(Eo=document.createElement("canvas")),Eo.width=e,Eo.height=e,Eo)}(a)}catch{return null}const c=l.getContext("2d");if(!c)return null;r&&"transparent"!==r?(c.fillStyle=r,c.fillRect(0,0,a,a)):c.clearRect(0,0,a,a),c.strokeStyle=n,c.lineWidth=o,c.lineCap="square";const d=s*Math.PI/180;if(45===s||-45===s){const e=s>0?1:-1;for(let t=-a;2*a>=t;t+=i)c.beginPath(),c.moveTo(t,0),c.lineTo(t+e*a,a),c.stroke()}else{c.save(),c.translate(a/2,a/2),c.rotate(d);const e=2*a;for(let t=-e;e>=t;t+=i)c.beginPath(),c.moveTo(-e,t),c.lineTo(e,t),c.stroke();c.restore()}return(t||c).createPattern(l,"repeat")}({background:e.background,stroke:e.stroke,lineWidth:e.lineWidth,spacing:e.spacing,angle:e.angle},t);return zo.set(n,i),i}(t,e);return n||t.background&&xo(e,t.background)||r}return"string"!=typeof t?t:xo(e,t)||r}var Uo=require("d3-shape"),Yo={circle:Uo.symbolCircle,square:Uo.symbolSquare,triangle:Uo.symbolTriangle,diamond:Uo.symbolDiamond,star:Uo.symbolStar,cross:Uo.symbolCross,wye:Uo.symbolWye};var Qo=[40,40],Xo=[.5,.5];function Zo(e,t,r,n){if("none"!==e)return"color"===e||null==e?t??n:"accent"===e?r:e}var Ko=require("react/jsx-runtime");function Jo(e,t="#4e79a7"){return Oo(e)?e.background&&"transparent"!==e.background?e.background:t:e&&"string"==typeof e?e:t}function ei(e){const t=e.replace(/[^A-Za-z0-9_-]/g,"_");return!t||/^\d/.test(t)?"s_"+t:t}var ti=require("react/jsx-runtime");function ri(e){const t=e.filter(e=>Number.isFinite(e.offset)).map(e=>({offset:Math.max(0,Math.min(1,e.offset)),color:e.color}));return 2>t.length?null:t.map((e,t)=>(0,ti.jsx)("stop",{offset:e.offset,stopColor:e.color},t))}function ni(e,t,r){if(!e||2>t.length)return null;const n=ri(e.colorStops);return n?(0,ti.jsx)("linearGradient",{id:r,gradientUnits:"userSpaceOnUse",x1:t[0][0],y1:0,x2:t[t.length-1][0],y2:0,children:n}):null}function oi(e,t,r){switch(e.type){case"line":{const n=e;if(0===n.path.length)return null;const o=Go(n.curve),i=o?(0,Fo.line)().x(([e])=>e).y(([,e])=>e).curve(o)(n.path)??"":"M"+n.path.map(([e,t])=>`${e},${t}`).join("L"),s=ei(`${r?r+"-":""}line-${t}-stroke-gradient`),a=ni(n.strokeGradient,n.path,s);return(0,ti.jsxs)(To.Fragment,{children:[a&&(0,ti.jsx)("defs",{children:a}),(0,ti.jsx)("path",{d:i,fill:"none",stroke:a?`url(#${s})`:n.style.stroke||"#4e79a7",strokeWidth:n.style.strokeWidth||2,strokeDasharray:n.style.strokeDasharray,opacity:n.style.opacity})]},"line-"+t)}case"area":{const n=e;if(0===n.topPath.length)return null;const o=Go(n.curve),i=!o||2>n.topPath.length||2>n.bottomPath.length?`M${n.topPath.map(([e,t])=>`${e},${t}`).join("L")}L${[...n.bottomPath].reverse().map(([e,t])=>`${e},${t}`).join("L")}Z`:(0,Fo.area)().x(([e])=>e).y0((e,t)=>n.bottomPath[t][1]).y1(([,e])=>e).curve(o)(n.topPath)??"",s=`${r?r+"-":""}area-${t}-hatch`,a=Oo(n.style.fill)?qo(n.style.fill,s):void 0,l=ei(`${r?r+"-":""}area-${t}-gradient`),c=function(e,t){const r=e.fillGradient;if(!r||"object"!=typeof r)return null;let n=1/0;for(const[,t]of e.topPath)n=Math.min(n,t);let o=-1/0;for(const[,t]of e.bottomPath)o=Math.max(o,t);if(!Number.isFinite(n)||!Number.isFinite(o))return null;const i=[];if("colorStops"in r){const e=ri(r.colorStops);if(!e)return null;i.push(...e)}else{if(!Number.isFinite(r.topOpacity)||!Number.isFinite(r.bottomOpacity))return null;i.push((0,ti.jsx)("stop",{offset:0,stopColor:Jo(e.style.fill),stopOpacity:Math.max(0,Math.min(1,r.topOpacity))},"0")),i.push((0,ti.jsx)("stop",{offset:1,stopColor:Jo(e.style.fill),stopOpacity:Math.max(0,Math.min(1,r.bottomOpacity))},"1"))}return(0,ti.jsx)("linearGradient",{id:t,gradientUnits:"userSpaceOnUse",x1:0,y1:n,x2:0,y2:o,children:i})}(n,l),d=c?`url(#${l})`:a?`url(#${s})`:Jo(n.style.fill),u=c?void 0:n.style.fillOpacity??n.style.opacity??.7,p=o?(0,Fo.line)().x(([e])=>e).y(([,e])=>e).curve(o)(n.topPath)??"":"M"+n.topPath.map(([e,t])=>`${e},${t}`).join("L"),y=ei(`${r?r+"-":""}area-${t}-stroke-gradient`),h=ni(n.strokeGradient,n.topPath,y),f=n.style.stroke&&"none"!==n.style.stroke?(0,ti.jsx)("path",{d:p,fill:"none",stroke:h?`url(#${y})`:Jo(n.style.stroke),strokeWidth:n.style.strokeWidth||2,opacity:n.style.opacity}):null;if(n.clipRect){const e=`${r?r+"-":""}area-clip-${t}`;return(0,ti.jsxs)("g",{children:[(0,ti.jsxs)("defs",{children:[c,!c&&a,h,(0,ti.jsx)("clipPath",{id:e,children:(0,ti.jsx)("rect",{x:n.clipRect.x,y:n.clipRect.y,width:n.clipRect.width,height:n.clipRect.height})})]}),(0,ti.jsxs)("g",{clipPath:`url(#${e})`,children:[(0,ti.jsx)("path",{d:i,fill:d,fillOpacity:u,opacity:c?n.style.opacity:void 0,stroke:"none"}),f]})]},"area-"+t)}return(0,ti.jsxs)(To.Fragment,{children:[(c||a||h)&&(0,ti.jsxs)("defs",{children:[c,!c&&a,h]}),(0,ti.jsx)("path",{d:i,fill:d,fillOpacity:u,opacity:c?n.style.opacity:void 0,stroke:"none"}),f]},"area-"+t)}case"point":{const n=e,o=`${r?r+"-":""}point-${t}-hatch`,i=Oo(n.style.fill)?qo(n.style.fill,o):void 0;return(0,ti.jsxs)(To.Fragment,{children:[i&&(0,ti.jsx)("defs",{children:i}),(0,ti.jsx)("circle",{cx:n.x,cy:n.y,r:n.r,fill:i?`url(#${o})`:Jo(n.style.fill),opacity:n.style.opacity??n.style.fillOpacity??.8,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth})]},"point-"+t)}case"symbol":return function(e,t){const r=function(e,t,r){if(r)return r;const n=e??"circle";return"chevron"===n?function(e){const t=1.5*function(e){return Math.sqrt(Math.max(1,e)/Math.PI)}(e),r=.92*t;return`M0,${-t}L${r},${(.78*t).toFixed(3)}L0,${(.28*t).toFixed(3)}L${-r},${(.78*t).toFixed(3)}Z`}(t):(0,Uo.symbol)(Yo[n]??Uo.symbolCircle,Math.max(1,t))()??""}(e.symbolType,e.size,e.path);return(0,ti.jsx)("path",{d:r,transform:e.rotation?`translate(${e.x},${e.y}) rotate(${180*e.rotation/Math.PI})`:`translate(${e.x},${e.y})`,fill:e.style.fill?Jo(e.style.fill):"none",fillOpacity:e.style.fillOpacity,opacity:e.style.opacity,stroke:e.style.stroke,strokeWidth:e.style.strokeWidth},"symbol-"+t)}(e,t);case"glyph":return function(e,t,r,n){const o=e.glyph;if(!o?.parts?.length||0>=e.size)return null;const i=function(e,t){const[r,n]=e.viewBox??Qo,[o,i]=e.anchor??Xo,s=n>0?n:1,a=Math.max(0,t)/s,l=(r>0?r:s)*a,c=s*a;return{width:l,height:c,scale:a,offsetX:-o*l,offsetY:-i*c}}(o,e.size);if(0>=i.scale)return null;const s=`translate(${t},${r})${e.rotation?` rotate(${180*e.rotation/Math.PI})`:""} translate(${i.offsetX},${i.offsetY}) scale(${i.scale})`,a=e.color??("string"==typeof e.style.fill?e.style.fill:void 0),l=function(e,t,r=0,n="horizontal"){const[o,i]=e.viewBox??Qo,s=Math.min(1,Math.max(0,r)),a=Math.min(1,Math.max(0,t));return a>s?s>0||1>a?"vertical"===n?{x:0,y:i*(1-a),width:o,height:i*(a-s)}:{x:o*s,y:0,width:o*(a-s),height:i}:null:{x:0,y:0,width:0,height:0}}(o,e.fraction??1,e.fractionStart??0,e.fractionDirection??"horizontal"),c=l?ei(n+"-clip"):void 0,d=(e.style.opacity??1)*(e._decayOpacity??1)*(e.style.fillOpacity??1),u=t=>o.parts.map((r,n)=>{const o=t?"none"===r.fill?void 0:t:Zo(r.fill,a,e.accent),i=t?r.stroke&&"none"!==r.stroke?t:void 0:Zo(r.stroke??"none",a,e.accent);return o||i?(0,Ko.jsx)("path",{d:r.d,fill:o??"none",stroke:i,strokeWidth:i?r.strokeWidth??1:void 0,strokeLinecap:r.strokeLinecap,strokeLinejoin:r.strokeLinejoin,opacity:r.opacity},n):null});return(0,Ko.jsxs)("g",{transform:s,opacity:1===d?void 0:d,children:[l&&c&&(0,Ko.jsx)("clipPath",{id:c,children:(0,Ko.jsx)("rect",{x:l.x,y:l.y,width:l.width,height:l.height})}),l&&e.ghostColor?(0,Ko.jsx)("g",{children:u(e.ghostColor)}):null,l&&c?(0,Ko.jsx)("g",{clipPath:`url(#${c})`,children:u()}):u()]},n)}(e,e.x,e.y,`${r??""}glyph-${e.pointId??t}`);case"rect":{const n=e,o=`${r?r+"-":""}xyrect-${t}-hatch`,i=Oo(n.style.fill)?qo(n.style.fill,o):void 0;return(0,ti.jsxs)(To.Fragment,{children:[i&&(0,ti.jsx)("defs",{children:i}),(0,ti.jsx)("rect",{x:n.x,y:n.y,width:n.w,height:n.h,fill:i?`url(#${o})`:Jo(n.style.fill),opacity:n.style.opacity,stroke:n.style.stroke,strokeWidth:n.style.strokeWidth})]},"rect-"+t)}case"heatcell":{const r=e;if(r.showValues&&null!=r.value&&r.w>=20&&r.h>=20){const e=r.valueFormat?r.valueFormat(r.value):Number.isInteger(r.value)?r.value+"":100>Math.abs(r.value)?1>Math.abs(r.value)?r.value.toPrecision(3):r.value.toFixed(1):r.value.toFixed(0),[n,o,i]=function(e){if(e.startsWith("#")){let t=e.slice(1);if(3===t.length&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]),6===t.length)return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}const t=e.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/);return t?[+t[1],+t[2],+t[3]]:[128,128,128]}(r.fill),s=.299*n+.587*o+.114*i>128?"#000":"#fff",a=Math.max(10,Math.min(16,.3*Math.min(r.w,r.h)));return(0,ti.jsxs)("g",{children:[(0,ti.jsx)("rect",{x:r.x,y:r.y,width:r.w,height:r.h,fill:r.fill}),(0,ti.jsx)("text",{x:r.x+r.w/2,y:r.y+r.h/2,textAnchor:"middle",dominantBaseline:"middle",fill:s,fontSize:a+"px",children:e})]},"heatcell-"+t)}return(0,ti.jsx)("rect",{x:r.x,y:r.y,width:r.w,height:r.h,fill:r.fill},"heatcell-"+t)}case"candlestick":{const r=e,n=Math.min(r.openY,r.closeY),o=Math.max(Math.abs(r.openY-r.closeY),1),i=r.isUp?r.upColor:r.downColor;return(0,ti.jsxs)("g",{children:[(0,ti.jsx)("line",{x1:r.x,y1:r.highY,x2:r.x,y2:r.lowY,stroke:r.wickColor,strokeWidth:r.wickWidth}),(0,ti.jsx)("rect",{x:r.x-r.bodyWidth/2,y:n,width:r.bodyWidth,height:o,fill:i,stroke:i,strokeWidth:1})]},"candle-"+t)}default:return null}}var ii="undefined"==typeof window||"undefined"==typeof document,si=require("react/jsx-runtime");function ai(e,t={}){const{width:r=640,height:n=360,title:o,description:i,background:s,className:a,idPrefix:l="physics",...c}=t,d=Lo(e,c),u=function(e){const t=e.replace(/[^A-Za-z0-9_-]/g,"_");return!t||/^\d/.test(t)?"physics-"+t:t}(l),p=o?u+"-title":void 0,y=i?u+"-desc":void 0,h=[p,y].filter(Boolean).join(" ")||void 0;return{svg:Ro.renderToStaticMarkup((0,si.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",className:a??"stream-physics-frame",width:r,height:n,viewBox:`0 0 ${r} ${n}`,role:"img","aria-labelledby":h,children:[o&&(0,si.jsx)("title",{id:p,children:o}),i&&(0,si.jsx)("desc",{id:y,children:i}),s&&"transparent"!==s?(0,si.jsx)("rect",{x:0,y:0,width:r,height:n,fill:s}):null,(0,si.jsx)("g",{id:u+"-data-area",children:d.sceneNodes.map((e,t)=>oi(e,t,u))})]})),scene:d,evidence:d.evidence}}function li(e){return"number"==typeof e&&Number.isFinite(e)?e:void 0}function ci(e,t){const r="sensor"===e.physics?t.sensorThickness:t.barrierThickness;return Math.max(0,li(e.thickness)??li(r)??li(t.thickness)??4)}function di(e=[],t={}){const r=t.idPrefix?t.idPrefix+"-":"",n=[];for(const o of e){if("barrier"!==o.physics&&"sensor"!==o.physics)continue;const e=o.axis??t.defaultAxis??"x",i=ci(o,t),s=o.colliderId??`${r}${o.id}`;let a;if("x"===e){const e=li(o.x),r=li(o.y1)??li(t.plotBounds?.y)??li(o.y),n=li(o.y2)??(t.plotBounds?t.plotBounds.y+t.plotBounds.height:void 0)??li(o.y);if(null==e||null==r||null==n)continue;a={type:"segment",x1:e,y1:r,x2:e,y2:n,thickness:i}}else{const e=li(o.y),r=li(o.x1)??li(t.plotBounds?.x)??li(o.x),n=li(o.x2)??(t.plotBounds?t.plotBounds.x+t.plotBounds.width:void 0)??li(o.x);if(null==e||null==r||null==n)continue;a={type:"segment",x1:r,y1:e,x2:n,y2:e,thickness:i}}n.push({id:s,shape:a,sensor:"sensor"===o.physics,..."barrier"!==o.physics||null==o.restitution&&null==t.barrierRestitution?{}:{restitution:li(o.restitution)??li(t.barrierRestitution)},..."barrier"!==o.physics||null==o.friction&&null==t.barrierFriction?{}:{friction:li(o.friction)??li(t.barrierFriction)}})}return n}function ui(e,t){if(0===e.length||0===t.length)return[];const r=new Map(t.map(e=>[e.id,e]));return e.flatMap(e=>{const t=r.get(e.bodyId);if(!t)return[];const n=e.dx??18,o=e.dy??-24;return[{...e,anchorX:t.x,anchorY:t.y,labelX:t.x+n,labelY:t.y+o,body:t}]})}function pi(e=[],t=[]){return{bodyCount:t.length,barrierCount:e.filter(e=>"barrier"===e.physics).length,sensorCount:e.filter(e=>"sensor"===e.physics).length,staticCount:e.length,totalCount:e.length+t.length}}var yi={seed:1,gravity:{x:0,y:980},fixedDt:1/120,cellSize:64,collisionIterations:6,velocityDamping:.995,sleepSpeed:8,sleepAfter:.35,restitution:.1,friction:.35,maxVelocity:1600,contactWakeSpeed:200},hi=1e-9,fi=.005;function mi(e){return"circle"===e.type?{type:"circle",radius:e.radius}:{type:"aabb",width:e.width,height:e.height}}function bi(e){return"aabb"===e.type?{type:"aabb",x:e.x,y:e.y,width:e.width,height:e.height}:{type:"segment",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,thickness:e.thickness}}function gi(e,t,r){return Math.max(t,Math.min(r,e))}function vi(e){return 0>e?-1:1}function xi(e){if("circle"===e.shape.type){const t=e.shape.radius;return{minX:e.x-t,minY:e.y-t,maxX:e.x+t,maxY:e.y+t}}const t=e.shape.width/2,r=e.shape.height/2;return{minX:e.x-t,minY:e.y-r,maxX:e.x+t,maxY:e.y+r}}function ki(e){const t=e.shape;if("aabb"===t.type){const e=t.width/2,r=t.height/2;return{minX:t.x-e,minY:t.y-r,maxX:t.x+e,maxY:t.y+r}}const r=(t.thickness??0)/2;return{minX:Math.min(t.x1,t.x2)-r,minY:Math.min(t.y1,t.y2)-r,maxX:Math.max(t.x1,t.x2)+r,maxY:Math.max(t.y1,t.y2)+r}}function Ci(e,t){return!(e.minX>t.maxX||t.minX>e.maxX||e.minY>t.maxY||t.minY>e.maxY)}function wi(e,t,r,n,o,i,s,a){const l=o-e,c=(r+s)/2-Math.abs(l);if(0>=c)return null;const d=i-t,u=(n+a)/2-Math.abs(d);return u>0?u>c?{nx:vi(l),ny:0,penetration:c}:{nx:0,ny:vi(d),penetration:u}:null}function Si(e,t,r,n,o,i,s){const a=i/2,l=s/2;let c=e-gi(e,n-a,n+a),d=t-gi(t,o-l,o+l);const u=c*c+d*d;if(u>r*r)return null;if(hi>=u){const i=Math.abs(e-(n-a)),s=Math.abs(e-(n+a)),u=Math.abs(t-(o-l)),p=Math.abs(t-(o+l)),y=Math.min(i,s,u,p);return y===i?(c=-1,d=0,{nx:c,ny:d,penetration:r+i}):y===s?(c=1,d=0,{nx:c,ny:d,penetration:r+s}):y===u?(c=0,d=-1,{nx:c,ny:d,penetration:r+u}):(c=0,d=1,{nx:c,ny:d,penetration:r+p})}const p=Math.sqrt(u);return{nx:c/p,ny:d/p,penetration:r-p}}function Ai(e,t){if("circle"===e.shape.type&&"circle"===t.shape.type)return function(e,t,r,n,o,i){const s=n-e,a=o-t,l=r+i,c=s*s+a*a;if(c>=l*l)return null;if(hi>=c)return{nx:1,ny:0,penetration:l};const d=Math.sqrt(c);return{nx:s/d,ny:a/d,penetration:l-d}}(e.x,e.y,e.shape.radius,t.x,t.y,t.shape.radius);if("aabb"===e.shape.type&&"aabb"===t.shape.type)return wi(e.x,e.y,e.shape.width,e.shape.height,t.x,t.y,t.shape.width,t.shape.height);if("circle"===e.shape.type&&"aabb"===t.shape.type){const r=Si(e.x,e.y,e.shape.radius,t.x,t.y,t.shape.width,t.shape.height);return r?{nx:-r.nx,ny:-r.ny,penetration:r.penetration}:null}return"aabb"===e.shape.type&&"circle"===t.shape.type?Si(t.x,t.y,t.shape.radius,e.x,e.y,e.shape.width,e.shape.height):null}function ji(e,t){const r=t.shape;return"aabb"===r.type?"circle"===e.shape.type?Si(e.x,e.y,e.shape.radius,r.x,r.y,r.width,r.height):wi(r.x,r.y,r.width,r.height,e.x,e.y,e.shape.width,e.shape.height):function(e,t,r,n,o,i,s,a=0){const l=i-n,c=s-o,d=l*l+c*c,u=d>hi?gi(((e-n)*l+(t-o)*c)/d,0,1):0,p=r+a/2,y=e-(n+l*u),h=t-(o+c*u),f=y*y+h*h;if(f>=p*p)return null;if(hi>=f){const e=Math.sqrt(d);return e>hi?{nx:-c/e,ny:l/e,penetration:p}:{nx:1,ny:0,penetration:p}}const m=Math.sqrt(f);return{nx:y/m,ny:h/m,penetration:p-m}}(e.x,e.y,"circle"===e.shape.type?e.shape.radius:Math.sqrt(e.shape.width*e.shape.width+e.shape.height*e.shape.height)/2,r.x1,r.y1,r.x2,r.y2,r.thickness??0)}function $i(e,t){return`${e}\0${t}`}function Mi(e){const t=e.indexOf("\0");return{sensorId:e.slice(0,t),bodyId:e.slice(t+1)}}function Bi(e){return{id:e.id,x:e.x,y:e.y,prevX:e.prevX,prevY:e.prevY,vx:e.vx,vy:e.vy,angle:e.angle,mass:e.mass,bodyCollisions:e.bodyCollisions,shape:mi(e.shape),sleeping:e.sleeping,datum:e.datum,index:e.index,sleepTime:e.sleepTime,restitution:e.restitution,friction:e.friction}}function Wi(e){return e&&"function"!=typeof e?{property:e.property,equals:e.equals,notEquals:e.notEquals,oneOf:e.oneOf?.slice(),notOneOf:e.notOneOf?.slice()}:e}function Pi(e){return{id:e.id,shape:bi(e.shape),sensor:e.sensor,restitution:e.restitution,friction:e.friction,bodyFilter:Wi(e.bodyFilter),index:e.index}}function Ii(e,t){return!!t?.some(t=>Object.is(e,t))}function Li(e,t){const r=e.bodyFilter;if(!r)return!0;if("function"==typeof r)return r(t);const n=function(e,t){if(!t)return;let r=e;for(const e of t.split(".")){if(null==r||"object"!=typeof r)return;r=r[e]}return r}(t,r.property);return!("equals"in r&&!Object.is(n,r.equals)||"notEquals"in r&&Object.is(n,r.notEquals)||r.oneOf&&!Ii(n,r.oneOf)||r.notOneOf&&Ii(n,r.notOneOf))}var Ri=class{constructor(e={}){this.capabilities={determinism:"strict",sensors:!0,joints:!1,ccd:!1,maxBodiesHint:5e3,worker:!1},this.bodies=new Map,this.colliders=new Map,this.springs=new Map,this.activeSensors=new Set,this.supportedThisStep=new Set,this.lastEvents=[],this.nextBodyIndex=0,this.nextColliderIndex=0,this.nextSpringIndex=0,this.options={...yi,...e},this.random=Ie(this.options.seed)}init(e={}){this.options={...yi,...e},this.random=Ie(this.options.seed),this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors.clear(),this.lastEvents=[],this.nextBodyIndex=0,this.nextColliderIndex=0,this.nextSpringIndex=0}spawn(e){const t={id:e.id,x:e.x,y:e.y,prevX:e.x,prevY:e.y,vx:e.vx??0,vy:e.vy??0,angle:e.angle??0,mass:Math.max(hi,e.mass??1),bodyCollisions:e.bodyCollisions??!0,shape:mi(e.shape),sleeping:!1,datum:e.datum,restitution:e.restitution,friction:e.friction,index:this.nextBodyIndex,sleepTime:0};this.nextBodyIndex+=1,this.bodies.set(e.id,t)}remove(e){for(const t of e){this.bodies.delete(t);for(const e of Array.from(this.activeSensors))Mi(e).bodyId===t&&this.activeSensors.delete(e)}}setColliders(e){this.colliders.clear(),this.activeSensors.clear(),this.nextColliderIndex=0;for(const t of e)this.colliders.set(t.id,{...t,shape:bi(t.shape),bodyFilter:Wi(t.bodyFilter),index:this.nextColliderIndex}),this.nextColliderIndex+=1}setConstraint(e){const t=e.id??"spring-"+this.nextSpringIndex;return this.springs.set(t,{id:t,bodyId:e.bodyId,target:e.target,restLength:e.restLength??0,stiffness:e.stiffness??40,damping:e.damping??3}),this.nextSpringIndex+=1,t}removeConstraint(e){this.springs.delete(e)}applyImpulse(e,t,r){const n=this.bodies.get(e);n&&(n.vx+=t/n.mass,n.vy+=r/n.mass,this.wake(n))}step(e=this.options.fixedDt){const t=Math.max(0,e);if(this.lastEvents=[],0===t)return;const r=this.sortedBodies();for(const e of r)e.prevX=e.x,e.prevY=e.y;this.applySprings(t);const n=this.options.maxVelocity;for(const e of r)if(!e.sleeping){if(e.vx+=this.options.gravity.x*t,e.vy+=this.options.gravity.y*t,e.vx*=this.options.velocityDamping,e.vy*=this.options.velocityDamping,n>0){const t=Math.sqrt(e.vx*e.vx+e.vy*e.vy);if(t>n){const r=n/t;e.vx*=r,e.vy*=r}}e.x+=e.vx*t,e.y+=e.vy*t}this.supportedThisStep.clear();const o=this.bodyPairKeys(r),i=this.sortedColliders().filter(e=>!e.sensor);for(let e=0;this.options.collisionIterations>e;e+=1)this.resolveBodyPairs(r,o,0===e),this.resolveColliders(r,i,0===e);this.updateSensors(r),this.updateSleeping(r,t)}settle(e=1200,t=this.options.fixedDt){let r=0;for(;e>r&&!this.allSleeping();)this.step(t),r+=1;return r}readState(e=[]){e.length=0;for(const t of this.sortedBodies())e.push({id:t.id,x:t.x,y:t.y,prevX:t.prevX,prevY:t.prevY,vx:t.vx,vy:t.vy,angle:t.angle,mass:t.mass,shape:mi(t.shape),sleeping:t.sleeping,datum:t.datum});return e}events(){return this.lastEvents.slice()}activeSensorPairs(){return Array.from(this.activeSensors).sort().map(Mi)}allSleeping(){for(const e of this.bodies.values())if(!e.sleeping)return!1;return!0}snapshot(){return{options:{...this.options,gravity:{...this.options.gravity}},bodies:this.sortedBodies().map(Bi),colliders:this.sortedColliders().map(Pi),springs:Array.from(this.springs.values()).map(e=>({...e,target:{...e.target}})),activeSensors:Array.from(this.activeSensors).sort()}}restore(e){this.options={...e.options,gravity:{...e.options.gravity}},this.random=Ie(this.options.seed),this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors=new Set(e.activeSensors),this.lastEvents=[],this.nextBodyIndex=0;for(const t of e.bodies){const e=Bi(t);this.bodies.set(e.id,e),this.nextBodyIndex=Math.max(this.nextBodyIndex,e.index+1)}this.nextColliderIndex=0;for(const t of e.colliders){const e=Pi(t);this.colliders.set(e.id,e),this.nextColliderIndex=Math.max(this.nextColliderIndex,e.index+1)}this.nextSpringIndex=0;for(const t of e.springs){this.springs.set(t.id,{...t,target:{...t.target}});const e=/^spring-(\d+)$/.exec(t.id);e&&(this.nextSpringIndex=Math.max(this.nextSpringIndex,Number(e[1])+1))}}dispose(){this.bodies.clear(),this.colliders.clear(),this.springs.clear(),this.activeSensors.clear(),this.lastEvents=[]}sortedBodies(){return Array.from(this.bodies.values()).sort((e,t)=>e.index-t.index)}sortedColliders(){return Array.from(this.colliders.values()).sort((e,t)=>e.index-t.index)}applySprings(e){for(const t of Array.from(this.springs.values()).sort((e,t)=>e.id.localeCompare(t.id))){const r=this.bodies.get(t.bodyId);if(!r||r.sleeping)continue;const n="point"===t.target.type?t.target:this.bodies.get(t.target.bodyId);if(!n)continue;const o=n.x-r.x,i=n.y-r.y,s=Math.sqrt(o*o+i*i);if(hi>=s)continue;const a=o/s,l=i/s,c=(s-t.restLength)*t.stiffness+((("vx"in n?n.vx:0)-r.vx)*a+(("vy"in n?n.vy:0)-r.vy)*l)*t.damping;r.vx+=c*a*e/r.mass,r.vy+=c*l*e/r.mass}}resolveBodyPairs(e,t,r){for(const n of t){const[t,o]=n.split(":").map(Number),i=e[t],s=e[o];if(!i||!s)continue;const a=Ai(i,s);a&&(this.resolveDynamicCollision(i,s,a),r&&this.lastEvents.push({type:"contact",bodyId:i.id,otherId:s.id,sensor:!1}))}}bodyPairKeys(e){const t=Math.max(1,this.options.cellSize),r=new Map;for(let n=0;e.length>n;n+=1){if(!1===e[n].bodyCollisions)continue;const o=xi(e[n]),i=Math.floor(o.minX/t),s=Math.floor(o.maxX/t),a=Math.floor(o.minY/t),l=Math.floor(o.maxY/t);for(let e=i;s>=e;e+=1)for(let t=a;l>=t;t+=1){const o=`${e}:${t}`,i=r.get(o);i?i.push(n):r.set(o,[n])}}const n=new Set;for(const t of Array.from(r.keys()).sort()){const o=r.get(t)??[];o.sort((e,t)=>e-t);for(let t=0;o.length>t;t+=1)for(let r=t+1;o.length>r;r+=1){const i=o[t],s=o[r];!1!==e[i].bodyCollisions&&!1!==e[s].bodyCollisions&&Ci(xi(e[i]),xi(e[s]))&&n.add(`${i}:${s}`)}}return Array.from(n).sort((e,t)=>{const[r,n]=e.split(":").map(Number),[o,i]=t.split(":").map(Number);return r===o?n-i:r-o})}resolveDynamicCollision(e,t,r){e.sleeping&&this.supportedThisStep.add(t.id),t.sleeping&&this.supportedThisStep.add(e.id);const n=e.sleeping?0:1/e.mass,o=t.sleeping?0:1/t.mass,i=n+o;if(hi>=i)return;const s=Math.max(0,r.penetration-fi)/i;e.x-=r.nx*s*n,e.y-=r.ny*s*n,t.x+=r.nx*s*o,t.y+=r.ny*s*o;const a=(t.vx-e.vx)*r.nx+(t.vy-e.vy)*r.ny;if(a>0)return;const l=Math.abs(a),c=-(1+Math.min(e.restitution??this.options.restitution,t.restitution??this.options.restitution))*a/i,d=c*r.nx,u=c*r.ny;e.vx-=d*n,e.vy-=u*n,t.vx+=d*o,t.vy+=u*o,this.applyFriction(e,t,r,c,n,o),l>this.options.contactWakeSpeed&&(this.wake(e),this.wake(t))}applyFriction(e,t,r,n,o,i){const s=-r.ny,a=r.nx,l=(t.vx-e.vx)*s+(t.vy-e.vy)*a,c=o+i;if(hi>=Math.abs(l)||hi>=c)return;const d=Math.max(0,Math.min(1,Math.max(e.friction??this.options.friction,t.friction??this.options.friction))),u=gi(-l/c,-n*d,n*d),p=u*s,y=u*a;e.vx-=p*o,e.vy-=y*o,t.vx+=p*i,t.vy+=y*i}resolveColliders(e,t,r){for(const n of e)for(const e of t){if(!Li(e,n))continue;if(!Ci(xi(n),ki(e)))continue;const t=ji(n,e);t&&(this.resolveStaticCollision(n,e,t),this.supportedThisStep.add(n.id),r&&this.lastEvents.push({type:"contact",bodyId:n.id,otherId:e.id,sensor:!1}))}}resolveStaticCollision(e,t,r){e.x+=r.nx*Math.max(0,r.penetration-fi),e.y+=r.ny*Math.max(0,r.penetration-fi);const n=e.vx*r.nx+e.vy*r.ny;if(0>n){const o=Math.min(e.restitution??this.options.restitution,t.restitution??this.options.restitution);e.vx-=(1+o)*n*r.nx,e.vy-=(1+o)*n*r.ny;const i=-r.ny,s=r.nx,a=e.vx*i+e.vy*s,l=Math.max(0,Math.min(1,Math.max(e.friction??this.options.friction,t.friction??this.options.friction)));e.vx-=a*i*l,e.vy-=a*s*l}}updateSensors(e){const t=new Set,r=this.sortedColliders().filter(e=>e.sensor);for(const n of e){const e=xi(n);for(const o of r){if(!Li(o,n))continue;if(!Ci(e,ki(o)))continue;if(!ji(n,o))continue;const r=$i(o.id,n.id);t.add(r),this.activeSensors.has(r)||this.lastEvents.push({type:"sensor-enter",bodyId:n.id,sensorId:o.id})}}for(const e of Array.from(this.activeSensors).sort()){if(t.has(e))continue;const{sensorId:r,bodyId:n}=Mi(e);this.lastEvents.push({type:"sensor-exit",bodyId:n,sensorId:r})}this.activeSensors=t}updateSleeping(e,t){const r=Math.hypot(this.options.gravity.x,this.options.gravity.y)>1;for(const n of e)Math.sqrt(n.vx*n.vx+n.vy*n.vy)>=this.options.sleepSpeed||Math.sqrt((n.x-n.prevX)*(n.x-n.prevX)+(n.y-n.prevY)*(n.y-n.prevY))>=this.options.sleepSpeed*t||r&&!this.supportedThisStep.has(n.id)?n.sleeping?this.wake(n):n.sleepTime=0:(n.sleepTime+=t,n.sleeping||this.options.sleepAfter>n.sleepTime||(n.sleeping=!0,n.vx=0,n.vy=0,this.lastEvents.push({type:"sleep",bodyId:n.id})))}wake(e){e.sleeping&&this.lastEvents.push({type:"wake",bodyId:e.id}),e.sleeping=!1,e.sleepTime=0}nextRandom(){return this.random()}},Ti=class{constructor(e={}){this.id="builtin",this.capabilities={...(new Ri).capabilities,engine:"builtin"},this.world=new Ri(e)}init(e={}){this.world.init(e)}spawn(e){this.world.spawn(e)}remove(e){this.world.remove(e)}setColliders(e){this.world.setColliders(e)}setConstraint(e){return this.world.setConstraint(e)}removeConstraint(e){this.world.removeConstraint(e)}applyImpulse(e,t,r){this.world.applyImpulse(e,t,r)}step(e){this.world.step(e)}settle(e,t){return this.world.settle(e,t)}readState(e){return this.world.readState(e)}events(){return this.world.events()}activeSensorPairs(){return this.world.activeSensorPairs()}allSleeping(){return this.world.allSleeping()}snapshot(){return this.world.snapshot()}restore(e){this.world.restore(e)}nextRandom(){return this.world.nextRandom()}dispose(){this.world.dispose()}};function Fi(e={}){return new Ti(e)}function Ei(e,t={}){return e?"function"==typeof e?e(t):(e.init(t),e):Fi(t)}var Ni=["binId","targetBin","category","windowIndex","lane","group"];function Oi(e,t){if(!Number.isFinite(t))return;e.count+=1,e.total+=t,e.min=Math.min(e.min,t),e.max=Math.max(e.max,t);const r=t-e.mean;e.mean+=r/e.count,e.m2+=r*(t-e.mean)}function Di(e){return{count:e.count,total:e.total,mean:e.count>0?e.mean:0,min:e.count>0?e.min:0,max:e.count>0?e.max:0,variance:e.count>1?e.m2/(e.count-1):0}}function zi(e){return{count:e.count,total:e.total,mean:e.mean,m2:e.variance*Math.max(0,e.count-1),min:e.count>0?e.min:1/0,max:e.count>0?e.max:-1/0}}function qi(e,t){if(null!=e[t])return e[t];const r=e.datum;return r&&"object"==typeof r?r[t]:void 0}function _i(e,t,r){return"function"==typeof e?e(t,r):"string"==typeof e?qi(t,e):void 0}function Hi(e){if(null==e)return;const t=e+"";return t.trim()?t:void 0}function Gi(e){const t=Di(e.value);return{id:e.id,label:e.label,count:t.count,total:t.total,bodyIds:e.bodyIds.slice(),lastBodyId:e.lastBodyId,lastDatum:e.lastDatum,x:Di(e.x),y:Di(e.y),value:t}}var Vi=class{constructor(e=!1){this.bins=new Map,this.nextIndex=0,this.config=e}updateConfig(e){void 0!==e&&(this.config=e,!1===e&&this.clear())}isEnabled(){return!1!==this.config}add(e){if(!1===this.config)return null;const t=this.nextIndex;this.nextIndex+=1;const r=Hi(_i(this.config.binAccessor,e,t))??function(e){for(const t of Ni){const r=Hi(qi(e,t));if(r)return r}return"sediment"}(e),n=Hi(_i(this.config.labelAccessor,e,t))??r,o=function(e,t,r){if("number"==typeof e)return e;const n="function"==typeof e?e(t,r):"string"==typeof e?qi(t,e):1,o="number"==typeof n?n:Number(n);return Number.isFinite(o)?o:1}(this.config.valueAccessor,e,t),i=Math.max(0,Math.floor(this.config.retainBodyIds??12));let s=this.bins.get(r);return s||(s={id:r,label:n,bodyIds:[],x:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0},y:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0},value:{count:0,total:0,mean:0,m2:0,min:1/0,max:-1/0}},this.bins.set(r,s)),s.label=n,s.lastBodyId=e.id,s.lastDatum=e.datum,Oi(s.x,e.x),Oi(s.y,e.y),Oi(s.value,o),i>0&&(s.bodyIds.push(e.id),s.bodyIds.length>i&&(s.bodyIds=s.bodyIds.slice(s.bodyIds.length-i))),Gi(s)}clear(){this.bins.clear(),this.nextIndex=0}snapshot(){return Array.from(this.bins.values()).map(Gi)}restore(e=[]){this.bins.clear();for(const t of e)this.bins.set(t.id,{id:t.id,label:t.label,bodyIds:t.bodyIds.slice(),lastBodyId:t.lastBodyId,lastDatum:t.lastDatum,x:zi(t.x),y:zi(t.y),value:zi(t.value)});this.nextIndex=e.reduce((e,t)=>e+t.count,0)}totals(){const e=this.snapshot();return{bins:e.length,count:e.reduce((e,t)=>e+t.count,0),total:e.reduce((e,t)=>e+t.total,0)}}};function Ui(e,t={}){const{baselineY:r=0,binWidth:n=24,gap:o=2,maxHeight:i=80,value:s="count",x:a}=t,l=Math.max(1,...e.map(e=>e[s]));return e.map((e,t)=>{const c=Math.max(0,e[s]/l*i),d=a?.(e,t)??t*(n+o);return{binId:e.id,label:e.label,index:t,count:e.count,total:e.total,x:d,y:r-c,width:n,height:c,meanX:e.x.mean,meanY:e.y.mean}})}function Yi(e){const t=Number(e);if(Number.isFinite(t)&&t>0)return Math.floor(t)}function Qi(e){const t=Math.max(0,Math.floor(e.liveBodies)),r=Math.max(0,Math.floor(e.queuedBodies??0)),n=t+r,o=Yi(e.bodyLimit),i=Yi(e.engineMaxBodiesHint),s=function(e,t,r){if(!1===r)return;const n=Yi(r?.warnAt);return null!=n?n:null!=e?Math.max(1,Math.floor(.8*e)):null!=t?Math.max(1,Math.floor(.8*t)):void 0}(o,i,e.options),a=null==o?0:Math.max(0,t-o),l=a>0?"overflow":null==s||s>n?"ok":"warning";return{action:"overflow"!==l?"continue":e.sedimentEnabled?"sediment":e.evictionEnabled?"evict":"retain",bodyLimit:o,engineMaxBodiesHint:i,liveBodies:t,overflow:a,projectedBodies:n,queuedBodies:r,state:l,warnAt:s}}var Xi={bodyLimit:1/0,eviction:"oldest",fixedDt:1/120,maxDeltaSeconds:.1,maxSubsteps:8,settleStepLimit:1200,timeScale:1},Zi={chartId:"physics",chartType:"physics",sensors:{},onObservation:void 0,onSimulationStateChange:void 0};function Ki(e={},t=Zi){return{chartId:e.chartId??t.chartId,chartType:e.chartType??t.chartType,sensors:e.sensors??t.sensors,onObservation:e.onObservation??t.onObservation,onSimulationStateChange:e.onSimulationStateChange??t.onSimulationStateChange}}function Ji(e){return{...e,shape:{...e.shape},datum:e.datum,springs:e.springs?.map(e=>({...e,target:{...e.target}}))}}function es(e){if(e instanceof Date){const t=e.getTime();return Number.isFinite(t)?t:void 0}const t="number"==typeof e?e:"string"==typeof e&&e.trim()?Number(e):NaN;return Number.isFinite(t)?t:void 0}function ts(e,t){if(null!=e[t])return e[t];const r=e.datum;return r&&"object"==typeof r?r[t]:void 0}function rs(e,t={}){const r=es(t.startAt)??0,n=t.pacing??"immediate";if("arrival"===n){const n=e.map((e,r)=>function(e,t,r){return"function"==typeof r?es(r(e,t)):"string"==typeof r?es(ts(e,r)):es(e.spawnAt)??es(ts(e,"arrivalTime"))??es(ts(e,"timestamp"))??es(ts(e,"time"))??es(ts(e,"eventTime"))}(e,r,t.timeAccessor)),o=n.filter(e=>null!=e),i=o.length>0?Math.min(...o):0,s=es(t.timeScale)??1,a=s>0?s:1;return e.map((e,t)=>{const o=n[t],s=null==o?0:Math.max(0,o-i);return{...Ji(e),spawnAt:r+s/a}})}if("object"==typeof n){const t=es(n.ratePerSec);if(t&&t>0)return e.map((e,n)=>({...Ji(e),spawnAt:r+n/t}))}return e.map(e=>({...Ji(e),spawnAt:r}))}function ns(e){return{...Ji(e),sequence:e.sequence,spawnAt:e.spawnAt}}function os(e){return e.map(e=>({...e,shape:{...e.shape},bodyFilter:e.bodyFilter&&"function"!=typeof e.bodyFilter?{...e.bodyFilter,oneOf:e.bodyFilter.oneOf?.slice(),notOneOf:e.bodyFilter.notOneOf?.slice()}:e.bodyFilter}))}function is(e){return!1!==e&&{...e}}function ss(e,t){return e.spawnAt===t.spawnAt?e.sequence-t.sequence:e.spawnAt-t.spawnAt}function as(e){return{...e,gravity:{...e.gravity}}}function ls(e,t,r,n){if("circle"===e.shape.type){const o=e.x-t,i=e.y-r,s=e.shape.radius+n,a=o*o+i*i;return a>s*s?null:a}const o=Math.max(Math.abs(t-e.x)-e.shape.width/2,0),i=Math.max(Math.abs(r-e.y)-e.shape.height/2,0),s=o*o+i*i;return s>n*n?null:s}function cs(e){const t=e.indexOf("\0");return{sensorId:e.slice(0,t),bodyId:e.slice(t+1)}}function ds(e,t={}){const{idPrefix:r="plot",includeFloor:n=!0,includeCeiling:o=!1,includeLeftWall:i=!0,includeRightWall:s=!0,wallThickness:a=20,floorThickness:l=a}=t,c=[],d=e.x+e.width/2,u=e.y+e.height/2;return n&&c.push({id:r+"-floor",shape:{type:"aabb",x:d,y:e.y+e.height+l/2,width:e.width+2*a,height:l}}),o&&c.push({id:r+"-ceiling",shape:{type:"aabb",x:d,y:e.y-l/2,width:e.width+2*a,height:l}}),i&&c.push({id:r+"-left-wall",shape:{type:"aabb",x:e.x-a/2,y:u,width:a,height:e.height+2*l}}),s&&c.push({id:r+"-right-wall",shape:{type:"aabb",x:e.x+e.width+a/2,y:u,width:a,height:e.height+2*l}}),c}function us(e){const{idPrefix:t="bin",count:r,domainStart:n,domainStep:o,xScale:i,yTop:s,yBottom:a,wallThickness:l=4,includeBoundaryWalls:c=!0,includeInteriorWalls:d=!0,closedBefore:u,lidY:p=s,lidThickness:y=Math.max(2,l)}=e,h=[],f=s+(a-s)/2,m=Math.abs(a-s),b=c?r:r-1;if(d||c)for(let e=c?0:1;b>=e;e+=1){if(!d&&e>0&&r>e)continue;const s=i(n+e*o);h.push({id:`${t}-wall-${e}`,shape:{type:"aabb",x:s,y:f,width:l,height:m}})}if(null!=u)for(let e=0;r>e;e+=1){const r=n+e*o,s=r+o;if(s>=u)continue;const a=i(r),c=i(s);h.push({id:`${t}-lid-${e}`,shape:{type:"segment",x1:Math.min(a,c)+l/2,y1:p,x2:Math.max(a,c)-l/2,y2:p,thickness:y}})}return h}var ps={data:"data",domain:"domain",layout:"layout","scene-geometry":"sceneGeometry","scene-style":"sceneStyle","data-paint":"dataPaint","interaction-paint":"interactionPaint",overlay:"overlay",accessibility:"accessibility",evidence:"evidence"};function ys(e,t){const r={...e};for(const e of t)r[ps[e]]++;return r}function hs(e,t,r){const n=new Set(t);return{changeSet:{...e,...e.keys?{keys:[...e.keys]}:{}},changed:n,revisions:ys(r,n)}}var fs=class{constructor(){this.revisions={data:0,domain:0,layout:0,sceneGeometry:0,sceneStyle:0,dataPaint:0,interactionPaint:0,overlay:0,accessibility:0,evidence:0},this.latest=hs({kind:"initialize"},[],this.revisions),this.listeners=new Set}get last(){return this.latest}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}record(e,t){const r=hs(e,t,this.revisions);this.revisions=r.revisions,this.latest=r;for(const e of[...this.listeners])e();return r}},ms=require("d3-quadtree"),bs=class{constructor(){this.maxSearchRadius=0,this.revision=-1,this.tree=null}hitTest(e,t,r,n,o,i=0){const s=this.ensure(e,t);if(!s)return null;let a=null,l=1/0;const c=Math.max(0,i)+this.maxSearchRadius,d=n-c,u=n+c,p=o-c,y=o+c;return s.visit((e,t,s,c,h)=>{if(d>c||t>u||p>h||s>y)return!0;if(e.length)return!1;let f=e;for(;f;){const e=f.data;if(e){const t=ls(e,n,o,Math.max(0,i));null!=t&&(l>t||t===l&&r.indexOf(e.id)>r.indexOf(a?.id??""))&&(a=e,l=t)}f=f.next}return!1}),a}ensure(e,t){if(this.tree&&this.revision===t)return this.tree;const r=e.readState();return 0===r.length?(this.tree=null,this.maxSearchRadius=0,this.revision=t,null):(this.maxSearchRadius=r.reduce((e,t)=>Math.max(e,function(e){return"circle"===e.shape.type?e.shape.radius:Math.hypot(e.shape.width,e.shape.height)/2}(t)),0),this.tree=(0,ms.quadtree)().x(e=>e.x).y(e=>e.y).addAll(r),this.revision=t,this.tree)}},gs=["data","scene-geometry","data-paint","accessibility","evidence"],vs=["scene-geometry","data-paint","accessibility","evidence"],xs=["overlay","accessibility","evidence"],ks=(e,t)=>({retainedData:e,invalidations:t}),Cs=["layout","scene-geometry","data-paint","overlay","accessibility","evidence"],ws=["scene-geometry","data-paint","accessibility","evidence"],Ss=[],As={engine:ks("rebuild",["scene-geometry","data-paint","accessibility","evidence"]),kernel:ks("preserve",ws),colliders:ks("preserve",ws),sediment:ks("preserve",ws),bodyBudget:ks("preserve",Cs),bodyLimit:ks("preserve",Cs),eviction:ks("preserve",Cs),fixedDt:ks("preserve",Ss),maxDeltaSeconds:ks("preserve",Ss),maxSubsteps:ks("preserve",Ss),settleStepLimit:ks("preserve",Ss),timeScale:ks("preserve",Ss),observation:ks("preserve",Ss)},js=ks("preserve",Cs);function $s(e){let t="preserve";const r=new Set;for(const n of e){const e=As[n]??js;"rebuild"===e.retainedData&&(t="rebuild");for(const t of e.invalidations)r.add(t)}return{retainedData:t,invalidations:r}}var Ms=["seed","fixedDt","cellSize","collisionIterations","velocityDamping","sleepSpeed","sleepAfter","restitution","friction","maxVelocity","contactWakeSpeed"];function Bs(e,t){return e===t||!(!e||!t)&&e.gravity?.x===t.gravity?.x&&e.gravity?.y===t.gravity?.y&&Ms.every(r=>e[r]===t[r])}function Ws(e,t,r,n){return e||!t?"paused":r||!n?"running":"settled"}var Ps=class{constructor(e={}){this.activeSensorPairs=new Set,this.accumulator=0,this.bodyBudgetObservationKey="ok",this.bodySpatialIndex=new bs,this.elapsedSeconds=0,this.liveBodyOrder=[],this.nextSequence=0,this.paused=!1,this.queue=[],this.revision=0,this.updateResults=new fs,this.simulationState="settled",this.visible=!0;const{bodyBudget:t,colliders:r,engine:n,kernel:o,observation:i,sediment:s,...a}=e;this.config={...Xi,...a},this.configInput={...e},this.bodyBudget=t??{},this.engineInput=n,this.observation=Ki(i),this.sediment=new Vi(s??!1),this.world=Ei(n,{fixedDt:this.config.fixedDt,...o}),r&&this.world.setColliders(os(r))}updateConfig(e){const t=function(e,t){return Object.keys(e).filter(r=>"kernel"===r?!Bs(e.kernel,t.kernel):e[r]!==t[r])}(e,this.configInput),{colliders:r,bodyBudget:n,engine:o,kernel:i,observation:s,sediment:a,...l}=e;if(this.config={...this.config,...l},void 0!==n&&(this.bodyBudget=n,!1===n&&(this.bodyBudgetObservationKey="ok")),o&&o!==this.engineInput){const e=this.world.snapshot();this.world.dispose(),this.engineInput=o,this.world=Ei(o,e.options),this.world.restore(e),this.revision+=1}if(i&&!Bs(i,this.configInput.kernel)){const e=this.world.snapshot(),t={...e.options,...i,gravity:{...e.options.gravity,...i.gravity}};this.world.restore({...e,options:t}),this.revision+=1}s&&(this.observation=Ki(s,this.observation)),this.sediment.updateConfig(a),r&&(this.world.setColliders(os(r)),this.revision+=1),this.configInput={...this.configInput,...e};const c=$s(t);this.updateResults.record({kind:"config",keys:t},c.invalidations)}updateConfigWithResult(e){return this.updateConfig(e),this.updateResults.last}setColliders(e){this.world.setColliders(os(e)),this.revision+=1,this.updateResults.record({kind:"config",keys:["colliders"]},$s(["colliders"]).invalidations)}enqueue(e,t){const r=Array.isArray(e)?e:[e],n=t?rs(r,{...t,startAt:t.startAt??this.elapsedSeconds}):r;for(const e of n)this.queue.push({...Ji(e),sequence:this.nextSequence,spawnAt:e.spawnAt??this.elapsedSeconds}),this.nextSequence+=1;this.queue.sort(ss),n.length>0&&(this.revision+=1),this.updateResults.record({kind:"enqueue",count:n.length},n.length?gs:[])}enqueueWithResult(e,t){return this.enqueue(e,t),this.updateResults.last}spawnNow(e){this.spawnOne(Ji(e)),this.nextSequence+=1,this.observeBodyBudget(),this.evictOverflow(),this.revision+=1,this.updateResults.record({kind:"enqueue",count:1},gs)}clear(){const e=this.world.snapshot().options;this.world.init({...e,fixedDt:this.config.fixedDt}),this.activeSensorPairs.clear(),this.liveBodyOrder=[],this.queue=[],this.accumulator=0,this.elapsedSeconds=0,this.nextSequence=0,this.sediment.clear(),this.bodyBudgetObservationKey="ok",this.revision+=1,this.syncSimulationState(),this.updateResults.record({kind:"clear"},gs)}tick(e){const t=this.revision,r=[],n=[],o=[],i=[],s=[];if(this.paused||!this.visible){const e=this.result(0,r,n,o,i,s,!1);return this.updateResults.record({kind:"tick",count:0},[]),e}const a=Math.max(0,Math.min(e,this.config.maxDeltaSeconds))*this.config.timeScale;this.elapsedSeconds+=a,this.spawnDue(r,s);const l=this.observeBodyBudget(s),c=this.evictOverflow(s);n.push(...c.evicted),o.push(...c.sedimented),this.syncSimulationState(s),this.accumulator+=a;let d=0;for(;this.accumulator>=this.config.fixedDt&&this.config.maxSubsteps>d;){this.world.step(this.config.fixedDt);const e=this.world.events();i.push(...e),this.observeKernelEvents(e,s),this.observeSensorTransitions(s),this.accumulator-=this.config.fixedDt,d+=1}d===this.config.maxSubsteps&&(this.accumulator=Math.min(this.accumulator,this.config.fixedDt)),(d>0||r.length>0||n.length>0||o.length>0||i.length>0)&&(this.revision+=1);const u=this.result(d,r,n,o,i,s,void 0,l);return this.updateResults.record({kind:"tick",count:d},this.revision!==t?r.length||n.length||o.length?gs:vs:[]),u}settle(e=this.config.settleStepLimit){const t=this.revision;this.spawnDue([],[]);const r=this.world.settle(e,this.config.fixedDt);return r>0&&(this.revision+=1),this.syncSimulationState(),this.updateResults.record({kind:"settle",count:r},this.revision!==t?vs:[]),r}settleWithObservations(e=this.config.settleStepLimit){const t=this.revision,r=[],n=[],o=[],i=[],s=[];if(this.paused||!this.visible){const e=this.result(0,r,n,o,i,s,!1);return this.updateResults.record({kind:"settle",count:0},[]),e}this.spawnDue(r,s);const a=this.observeBodyBudget(s),l=this.evictOverflow(s);n.push(...l.evicted),o.push(...l.sedimented),this.syncSimulationState(s);let c=0;for(;e>c&&!this.world.allSleeping();){this.world.step(this.config.fixedDt);const e=this.world.events();i.push(...e),this.observeKernelEvents(e,s),this.observeSensorTransitions(s),c+=1}(c>0||r.length>0||n.length>0||o.length>0||i.length>0)&&(this.revision+=1);const d=this.result(c,r,n,o,i,s,void 0,a);return this.updateResults.record({kind:"settle",count:c},this.revision!==t?r.length||n.length||o.length?gs:vs:[]),d}readBodies(e=[]){return this.world.readState(e)}readSediment(){return this.sediment.snapshot()}bodyBudgetStatus(){return this.evaluateBodyBudget()}sedimentTotals(){return this.sediment.totals()}sedimentHeightfield(e={}){return Ui(this.readSediment(),e)}hitTest(e,t,r=0){return this.bodySpatialIndex.hitTest(this.world,this.revision,this.liveBodyOrder,e,t,r)}events(){return this.world.events()}allSleeping(){return this.world.allSleeping()}hasPendingWork(){return this.queue.length>0||!this.world.allSleeping()}queueSize(){return this.queue.length}liveBodyCount(){return this.liveBodyOrder.length}elapsed(){return this.elapsedSeconds}recordObservation(e){const{timestamp:t,chartType:r,chartId:n,...o}=e,i={...o,timestamp:t??this.elapsedSeconds,chartType:r??this.observation.chartType,chartId:n??this.observation.chartId};return this.emitObservation(i),this.updateResults.record({kind:"update",count:1},["evidence"]),i}getLastUpdateResult(){return this.updateResults.last}getUpdateSnapshot(){return this.updateResults.last}subscribeUpdateResult(e){return this.updateResults.subscribe(e)}version(){return this.revision}setPaused(e){const t=this.paused!==e;this.paused=e,this.syncSimulationState(),this.updateResults.record({kind:"pause"},t?xs:[])}setVisible(e){const t=this.visible!==e;this.visible=e,this.syncSimulationState(),this.updateResults.record({kind:"visibility"},t?xs:[])}remove(e){const t=new Set(e),r=new Set(this.liveBodyOrder),n=new Set(this.queue.map(e=>e.id));this.queue=this.queue.filter(e=>!t.has(e.id)),this.liveBodyOrder=this.liveBodyOrder.filter(e=>!t.has(e)),this.world.remove(e),this.removeActiveSensorPairsForBodies(t);const o=e.filter(e=>r.has(e)||n.has(e));return o.length>0&&(this.revision+=1,this.syncSimulationState()),this.updateResults.record({kind:"remove",keys:o,count:o.length},o.length?gs:[]),o}setConstraint(e){const t=this.world.setConstraint(e);return this.revision+=1,this.updateResults.record({kind:"constraint",keys:[t]},vs),t}removeConstraint(e){this.world.removeConstraint(e),this.revision+=1,this.updateResults.record({kind:"constraint",keys:[e]},vs)}applyImpulse(e,t,r){this.world.applyImpulse(e,t,r),this.revision+=1,this.updateResults.record({kind:"impulse",keys:[e]},vs)}nextRandom(){return this.world.nextRandom()}controls(){return e=this,{applyImpulse:(t,r,n)=>e.applyImpulse(t,r,n),clear:()=>e.clear(),hitTest:(t,r,n)=>e.hitTest(t,r,n),pause:()=>e.setPaused(!0),push:(t,r)=>e.enqueue(t,r),pushMany:(t,r)=>e.enqueue(t,r),bodyBudgetStatus:()=>e.bodyBudgetStatus(),readBodies:t=>e.readBodies(t),readSediment:()=>e.readSediment(),recordObservation:t=>e.recordObservation(t),remove:t=>e.remove(t),restore:t=>e.restore(t),resume:()=>e.setPaused(!1),settle:t=>e.settle(t),settleWithObservations:t=>e.settleWithObservations(t),snapshot:()=>e.snapshot(),sedimentHeightfield:t=>e.sedimentHeightfield(t),sedimentTotals:()=>e.sedimentTotals(),step:t=>e.tick(t)};var e}snapshot(){const e=this.world.snapshot();return{accumulator:this.accumulator,activeSensorPairs:Array.from(this.activeSensorPairs).sort(),bodyBudget:is(this.bodyBudget),config:{...this.config,kernel:as(e.options)},elapsedSeconds:this.elapsedSeconds,paused:this.paused,queue:this.queue.map(ns),revision:this.revision,sediment:this.readSediment(),simulationState:this.simulationState,liveBodyOrder:this.liveBodyOrder.slice(),visible:this.visible,world:e}}restore(e){this.config={bodyLimit:e.config.bodyLimit,eviction:e.config.eviction,fixedDt:e.config.fixedDt,maxDeltaSeconds:e.config.maxDeltaSeconds,maxSubsteps:e.config.maxSubsteps,settleStepLimit:e.config.settleStepLimit,timeScale:e.config.timeScale},this.configInput={...e.config,bodyBudget:is(e.bodyBudget??{}),kernel:as(e.world.options)},this.bodyBudget=is(e.bodyBudget??{}),this.bodyBudgetObservationKey="ok",this.activeSensorPairs=new Set(e.activeSensorPairs),this.accumulator=e.accumulator,this.elapsedSeconds=e.elapsedSeconds,this.paused=e.paused,this.queue=e.queue.map(ns).sort(ss),this.revision=e.revision,this.sediment.restore(e.sediment??[]),this.simulationState=e.simulationState??Ws(e.paused,e.visible,e.queue.length>0,e.world.bodies.every(e=>e.sleeping)),this.liveBodyOrder=e.liveBodyOrder.slice(),this.visible=e.visible,this.nextSequence=this.queue.reduce((e,t)=>Math.max(e,t.sequence),-1)+1,this.world.restore(e.world),this.updateResults.record({kind:"restore"},gs)}spawnDue(e,t){for(;this.queue.length>0&&this.elapsedSeconds>=this.queue[0].spawnAt;){const r=this.queue.shift();if(!r)return;this.spawnOne(r,t),e.push(r.id)}}spawnOne(e,t){this.liveBodyOrder=this.liveBodyOrder.filter(t=>t!==e.id),this.removeActiveSensorPairsForBodies(new Set([e.id])),this.world.spawn(e),this.liveBodyOrder.push(e.id);for(const t of e.springs??[])this.world.setConstraint({...t,bodyId:e.id});const r=this.world.readState().find(t=>t.id===e.id);this.emitObservation({type:"physics-spawn",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,bodyId:e.id,datum:r?.datum??e.datum,x:r?.x??e.x,y:r?.y??e.y},t)}result(e,t,r,n,o,i,s,a=this.evaluateBodyBudget()){this.syncSimulationState(i);const l=this.world.allSleeping();return{budget:a,elapsedSeconds:this.elapsedSeconds,evicted:r,events:o,observations:i,queueSize:this.queue.length,revision:this.revision,shouldContinue:s??(this.queue.length>0||!l),sleeping:l,sedimented:n,spawned:t,steps:e}}observeKernelEvents(e,t){!function(e,t,r){if(0===t.length)return;const n=new Map(e.readState().map(e=>[e.id,e]));for(const e of t){if("sleep"!==e.type)continue;const t=n.get(e.bodyId);r.emit({type:"physics-settle",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,bodyId:e.bodyId,datum:t?.datum,x:t?.x,y:t?.y})}}(this.world,e,this.observationContext(t))}observeSensorTransitions(e){this.activeSensorPairs=function(e,t,r){const n=new Set(e.activeSensorPairs().map(e=>`${e.sensorId}\0${e.bodyId}`));if(0===n.size&&0===t.size)return n;const o=new Map(e.readState().map(e=>[e.id,e])),i=(e,t)=>{const{sensorId:n,bodyId:i}=cs(t),s=r.observation.sensors[n],a=o.get(i);r.emit({type:"enter"===e?s?.enterType??"physics-bin-enter":s?.exitType??"physics-bin-exit",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,bodyId:i,datum:a?.datum,x:a?.x,y:a?.y,sensorId:n,binId:s?.binId??n})};for(const e of Array.from(n).sort())t.has(e)||i("enter",e);for(const e of Array.from(t).sort())n.has(e)||i("exit",e);return n}(this.world,this.activeSensorPairs,this.observationContext(e))}removeActiveSensorPairsForBodies(e){!function(e,t){for(const r of e)t.has(cs(r).bodyId)&&e.delete(r)}(this.activeSensorPairs,e)}observationContext(e){return{elapsedSeconds:this.elapsedSeconds,observation:this.observation,emit:t=>this.emitObservation(t,e)}}emitObservation(e,t){t?.push(e),this.observation.onObservation?.(e)}evaluateBodyBudget(){return Qi({bodyLimit:this.config.bodyLimit,engineMaxBodiesHint:this.world.capabilities.maxBodiesHint,evictionEnabled:!1!==this.config.eviction,liveBodies:this.liveBodyOrder.length,queuedBodies:this.queue.length,sedimentEnabled:this.sediment.isEnabled(),options:this.bodyBudget})}observeBodyBudget(e){const t=this.evaluateBodyBudget();if("ok"===t.state||!1===this.bodyBudget)return this.bodyBudgetObservationKey="ok",t;const r=`${t.state}:${t.action}`;return r===this.bodyBudgetObservationKey||(this.bodyBudgetObservationKey=r,this.emitObservation({type:"overflow"===t.state?"physics-budget-overflow":"physics-budget-warning",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,budgetAction:t.action,bodyLimit:t.bodyLimit,engineMaxBodiesHint:t.engineMaxBodiesHint,liveBodies:t.liveBodies,overflow:t.overflow,projectedBodies:t.projectedBodies,queuedBodies:t.queuedBodies,warnAt:t.warnAt},e)),t}syncSimulationState(e){const t=Ws(this.paused,this.visible,this.queue.length>0,this.world.allSleeping());if(t===this.simulationState)return;const r=this.simulationState;this.simulationState=t,function(e,t,r){r.observation.onSimulationStateChange?.(t,e),"running"!==t&&"settled"!==t||r.emit({type:"running"===t?"sim-active":"sim-idle",timestamp:r.elapsedSeconds,chartType:r.observation.chartType,chartId:r.observation.chartId,simulationState:t,previousSimulationState:e})}(r,t,this.observationContext(e))}evictOverflow(e){if(!1===this.config.eviction)return{evicted:[],sedimented:[]};const t=Math.max(0,Math.floor(this.config.bodyLimit));if(!Number.isFinite(t))return{evicted:[],sedimented:[]};const r=this.liveBodyOrder.length-t;if(0>=r)return{evicted:[],sedimented:[]};const n=("sleeping-first"===this.config.eviction?this.sleepingFirstEvictionOrder():this.liveBodyOrder.slice()).slice(0,r);if(0===n.length)return{evicted:[],sedimented:[]};const o=this.absorbSediment(n,e);this.world.remove(n);const i=new Set(n);return this.liveBodyOrder=this.liveBodyOrder.filter(e=>!i.has(e)),this.removeActiveSensorPairsForBodies(i),{evicted:n,sedimented:o}}absorbSediment(e,t){const r=new Map(this.world.readState().map(e=>[e.id,e])),n=[];for(const o of e){const e=r.get(o);if(!e)continue;const i=this.sediment.add(e);i&&(n.push(o),this.emitObservation({type:"physics-sediment",timestamp:this.elapsedSeconds,chartType:this.observation.chartType,chartId:this.observation.chartId,bodyId:o,datum:e.datum,x:e.x,y:e.y,binId:i.id,count:i.count,total:i.total},t))}return n}sleepingFirstEvictionOrder(){const e=new Map(this.world.readState().map(e=>[e.id,e.sleeping])),t=[],r=[];for(const n of this.liveBodyOrder)e.get(n)?t.push(n):r.push(n);return[...t,...r]}},Is=l(require("react")),Ls=require("react"),Rs=l(require("react")),Ts=require("react");function Fs(e){if(!e.accessibility)return e;let t=e;if(e.accessibility.colorBlindSafe&&(t={...t,colors:{...t.colors,categorical:Es}}),e.accessibility.highContrast){const e="dark"===t.mode;t={...t,colors:{...t.colors,text:e?"#ffffff":"#000000",textSecondary:e?"#cccccc":"#333333",grid:e?"#666666":"#999999",border:e?"#888888":"#000000"}}}return t}var Es=["#0072B2","#E69F00","#009E73","#CC79A7","#56B4E9","#D55E00","#F0E442","#000000"],Ns={mode:"light",colors:{primary:"#00a2ce",secondary:"#6c757d",categorical:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],sequential:"blues",diverging:"RdBu",background:"transparent",surface:"#ffffff",text:"#333",textSecondary:"#666",grid:"#e0e0e0",border:"#ccc",selection:"#00a2ce",selectionOpacity:.15,success:"#2ca02c",danger:"#d62728",warning:"#f0ad4e",error:"#b4181b",info:"#00a2ce"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:12}},Os={mode:"dark",colors:{primary:"#4fc3f7",secondary:"#90a4ae",categorical:["#4fc3f7","#ffb74d","#81c784","#ef5350","#ba68c8","#a1887f","#f06292","#90a4ae","#dce775","#4dd0e1"],sequential:"blues",diverging:"RdBu",background:"#1a1a2e",surface:"#252540",text:"#e0e0e0",textSecondary:"#aaa",grid:"#333",border:"#555",selection:"#4fc3f7",selectionOpacity:.15,success:"#81c784",danger:"#ef5350",warning:"#ffb74d",error:"#d84848",info:"#4fc3f7"},typography:{fontFamily:"sans-serif",titleSize:16,labelSize:12,tickSize:12}},Ds={mode:"light",colors:{primary:"#0000cc",secondary:"#333333",categorical:Es,sequential:"blues",diverging:"RdBu",background:"#ffffff",surface:"#ffffff",text:"#000000",textSecondary:"#333333",grid:"#999999",border:"#000000",focus:"#0000cc",selection:"#0000cc",selectionOpacity:.1,success:"#006400",danger:"#cc0000",warning:"#b15a00",error:"#8b0000",info:"#0000cc"},typography:{fontFamily:"system-ui, sans-serif",titleSize:18,labelSize:14,tickSize:12},tooltip:{background:"#000000",text:"#ffffff",borderRadius:"4px",fontSize:"14px",shadow:"0 2px 8px rgba(0, 0, 0, 0.3)"},borderRadius:"4px"};function zs(e,t){if("light"===t)return Ns;if("dark"===t)return Os;if("high-contrast"===t)return Ds;if("string"==typeof t)return void 0!==console&&console.warn(`[ThemeStore] Unknown theme preset "${t}". Keeping current theme.`),e;if(t.mode&&"auto"!==t.mode){const e="dark"===t.mode?Os:Ns;return Fs({...e,...t,colors:{...e.colors,...t.colors||{}},typography:{...e.typography,...t.typography||{}}})}return Fs({...e,...t,colors:{...e.colors,...t.colors||{}},typography:{...e.typography,...t.typography||{}}})}var[qs,_s]=_e(e=>({theme:Ns,setTheme(t){e(e=>({theme:zs(e.theme,t)}))}})),Hs=require("react");var Gs=require("react"),Vs=()=>"undefined"!=typeof performance?performance.now():Date.now();function Us(e,t){const r=e();return Number.isFinite(r)?r:t}var Ys=class{constructor(e={}){this.randomSource=Math.random,this.subscribers=new Set,this.now=()=>this.advance(),this.random=()=>this.randomSource(),this.clock=e.clock??Vs,this.lastWallTime=Us(this.clock,0),this.logicalTime=this.lastWallTime,this.pausedValue=!0===e.paused,this.visibleValue=!1!==e.visible,this.setRandomSource(e.random,e.seed)}get isActive(){return!this.pausedValue&&this.visibleValue}get paused(){return this.pausedValue}get seed(){return this.seedValue}get visible(){return this.visibleValue}configure(e){this.setClock(e.clock),this.setRandomSource(e.random,e.seed)}setPaused(e){this.pausedValue!==e&&(this.advance(),this.pausedValue=e,this.emit())}setVisible(e){this.visibleValue!==e&&(this.advance(),this.visibleValue=e,this.emit())}snapshot(){return{now:this.now(),paused:this.pausedValue,seed:this.seedValue,visible:this.visibleValue}}subscribe(e){return this.subscribers.add(e),()=>this.subscribers.delete(e)}advance(){const e=Us(this.clock,this.lastWallTime),t=Math.max(0,e-this.lastWallTime);return this.lastWallTime=e,this.isActive&&(this.logicalTime+=t),this.logicalTime}emit(){for(const e of this.subscribers)e()}setClock(e){const t=e??Vs;t!==this.clock&&(this.advance(),this.clock=t,this.lastWallTime=Us(t,this.lastWallTime))}setRandomSource(e,t){const r=function(e){return"number"==typeof e&&Number.isFinite(e)?Math.trunc(e):void 0}(t);e===this.randomInput&&r===this.seedValue||(this.randomInput=e,this.seedValue=r,this.randomSource=e??(void 0===r?Math.random:function(e){let t=e>>>0;return()=>{t+=1831565813;let e=t;return e=Math.imul(e^e>>>15,1|e),e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296}}(r)))}},Qs="undefined"==typeof window?Ts.useEffect:Ts.useLayoutEffect,Xs={requestAnimationFrame:e=>("undefined"==typeof window?globalThis:window).requestAnimationFrame(e),cancelAnimationFrame:e=>("undefined"==typeof window?globalThis:window).cancelAnimationFrame(e)};function Zs(e,t,r){return"function"==typeof e?e({size:t,margin:r}):e}function Ks(e){const t=function(){const[e,t]=(0,Hs.useState)(()=>!("undefined"==typeof window||!window.matchMedia)&&window.matchMedia("(prefers-reduced-motion: reduce)").matches);return(0,Hs.useEffect)(()=>{if("undefined"==typeof window||!window.matchMedia)return;const e=window.matchMedia("(prefers-reduced-motion: reduce)");return t(e.matches),function(e,t){if("function"==typeof e.addEventListener)return e.addEventListener("change",t),()=>e.removeEventListener("change",t);const r=e;return r.addListener(t),()=>r.removeListener(t)}(e,e=>t(e.matches))},[]),e}(),r=(0,Ts.useRef)(t);r.current=t;const[n,o]=function(e,t,r){const n=(0,Gs.useRef)(null),[o,i]=(0,Gs.useState)(null);return(0,Gs.useEffect)(()=>{if(!t&&!r)return;const e=n.current;if(!e)return;const o=new ResizeObserver(e=>{for(const t of e){const{width:e,height:r}=t.contentRect;i(t=>t&&t.w===e&&t.h===r?t:{w:e,h:r})}});return o.observe(e),()=>o.disconnect()},[t,r]),[n,[t&&o?o.w:e[0],r&&o?o.h:e[1]]]}(e.sizeProp,e.responsiveWidth,e.responsiveHeight),i=!!e.title,s=!!e.legend&&"top"===e.legendPosition,a=(0,Ts.useMemo)(()=>function(e,t,r=!1){const n=r?t?58:34:t?36:0;return n>e.top?{...e,top:n}:e}({...e.marginDefault,...e.userMargin},i,s),[e.marginDefault,e.userMargin,i,s]),l=o[0]-a.left-a.right,c=o[1]-a.top-a.bottom,d=Zs(e.foregroundGraphics,o,a),u=Zs(e.backgroundGraphics,o,a),p=_s(e=>e.theme),{transition:y,introEnabled:h}=function(e,t){if(!1===e)return{transition:void 0,introEnabled:!1};const r="undefined"!=typeof window&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return{transition:e?!0===e?{duration:300}:{duration:e.duration??300,easing:"linear"===e.easing?"linear":"ease-out"}:t,introEnabled:!(r||!e||!0!==e&&!1===e.intro)}}(e.animate,e.transitionProp),f="semiotic-table-"+Rs.useId(),m=(0,Ts.useRef)(null);if(!m.current){const t=!e.suspendWhenHidden||"undefined"==typeof document||!document.hidden;m.current=new Ys({clock:e.clock,random:e.random,seed:e.seed,paused:e.paused,visible:t})}const b=m.current;b.configure({clock:e.clock,random:e.random,seed:e.seed});const g=(0,Ts.useRef)(null),v=(0,Ts.useRef)(e.frameScheduler??Xs);v.current=e.frameScheduler??Xs;const x=(0,Ts.useRef)(null),k=(0,Ts.useRef)(!1),C=(0,Ts.useRef)(()=>{}),w=(0,Ts.useCallback)(()=>{if(null!==g.current||k.current)return;const e=v.current;let t=!1,r=!1;const n=e.requestAnimationFrame(()=>{t=!0;const e=!r;e&&(k.current=!0),g.current=null,x.current=null;try{C.current()}finally{e&&(k.current=!1)}});r=!0,t||(g.current=n,x.current=e)},[]),S=(0,Ts.useCallback)(()=>{null!==g.current&&((x.current??v.current).cancelAnimationFrame(g.current),g.current=null,x.current=null)},[]);Qs(()=>{b.setPaused(!0===e.paused)},[b,e.paused]),(0,Ts.useEffect)(()=>{if(!e.suspendWhenHidden||"undefined"==typeof document)return void b.setVisible(!0);const t=()=>b.setVisible(!document.hidden);return t(),document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)},[b,e.suspendWhenHidden]),(0,Ts.useEffect)(()=>()=>{S()},[S]);const A=(0,Ts.useRef)(()=>{}),j=(0,Ts.useRef)(()=>{}),$=(0,Ts.useRef)(null),M=(0,Ts.useRef)(null),B=(0,Ts.useRef)(null),W=(0,Ts.useCallback)(()=>{const e=$.current;$.current=null,e&&A.current(e)},[]),P=(0,Ts.useCallback)(e=>{if($.current={clientX:e.clientX,clientY:e.clientY,pointerType:e.pointerType},null===M.current){const e=v.current;let t=!1;const r=e.requestAnimationFrame(()=>{t=!0,M.current=null,B.current=null,W()});t||(M.current=r,B.current=e)}},[W]),I=(0,Ts.useCallback)(()=>{$.current=null,null!==M.current&&((B.current??v.current).cancelAnimationFrame(M.current),M.current=null,B.current=null),j.current()},[]);(0,Ts.useEffect)(()=>()=>{$.current=null,null!==M.current&&((B.current??v.current).cancelAnimationFrame(M.current),M.current=null,B.current=null)},[]);const L=e.themeDirtyRef;return Qs(()=>{L&&(mo++,L.current=!0,w())},[p,w,L]),{reducedMotion:t,reducedMotionRef:r,responsiveRef:n,size:o,margin:a,adjustedWidth:l,adjustedHeight:c,resolvedForeground:d,resolvedBackground:u,currentTheme:p,transition:y,introEnabled:h,tableId:f,frameRuntime:b,rafRef:g,renderFnRef:C,scheduleRender:w,cancelRender:S,hoverHandlerRef:A,hoverLeaveRef:j,onPointerMove:P,onPointerLeave:I}}var Js=require("react"),ea="undefined"!=typeof window?Js.useLayoutEffect:Js.useEffect,ta=()=>()=>{},ra=()=>!1,na=()=>!0,oa=require("react"),ia=require("react/jsx-runtime");function sa({children:e,size:t,margin:r,overflowVisible:n=!1}){return e?(0,ia.jsx)("svg",{style:{position:"absolute",left:0,top:0,width:t[0],height:t[1],pointerEvents:"none",overflow:n?"visible":void 0},children:(0,ia.jsx)("g",{transform:`translate(${r.left},${r.top})`,children:e})}):null}var aa=l(require("react")),la=require("react/jsx-runtime"),ca={background:"var(--semiotic-tooltip-bg, rgba(0, 0, 0, 0.85))",color:"var(--semiotic-tooltip-text, white)",padding:"8px 12px",borderRadius:"var(--semiotic-tooltip-radius, 6px)",fontSize:"var(--semiotic-tooltip-font-size, 14px)",fontFamily:"var(--semiotic-font-family, inherit)",lineHeight:"1.5",boxShadow:"var(--semiotic-tooltip-shadow, 0 2px 8px rgba(0, 0, 0, 0.15))",pointerEvents:"none",maxWidth:"300px",wordWrap:"break-word"};function da(e,t){return"function"==typeof t?t(e):e[t]}function ua(e,t){if(t)return t(e);if(null==e)return"";if("number"==typeof e){if(!Number.isFinite(e))return e+"";const t=Number.isInteger(e)?e:parseFloat(e.toPrecision(6));return Math.abs(t)>9999?t.toLocaleString():t+""}return e instanceof Date?e.toLocaleDateString():"object"==typeof e&&null!==e?void 0!==e.id?e.id+"":void 0!==e.name?e.name+"":JSON.stringify(e):e+""}function pa(e={}){const{fields:t,title:r,format:n,style:o={},className:i=""}=e;return e=>{if(!e||"object"!=typeof e)return null;let s;const a=[];if(r){const t=da(e,r);s=ua(t,n)}if(t&&t.length>0)t.forEach(t=>{let r,o,i;"string"==typeof t?(r=t,o=t,i=n):(r=t.label,o=t.accessor||t.key||"",i=t.format||n);const s=da(e,o);a.push({label:r,value:ua(s,i)})});else if(!r){const t=["value","y","name","id","label"];for(const r of t)if(void 0!==e[r]){s=ua(e[r],n);break}if(!s){const t=Object.keys(e).filter(e=>!e.startsWith("_"));t.length>0&&(s=ua(e[t[0]],n))}}const l={...ca,...o};return(0,la.jsxs)("div",{className:("semiotic-tooltip "+i).trim(),style:l,children:[s&&(0,la.jsx)("div",{style:{fontWeight:a.length>0?"bold":"normal"},children:s}),a.map((e,t)=>(0,la.jsxs)("div",{style:{marginTop:0===t&&s?"4px":0},children:[e.label&&(0,la.jsxs)("span",{children:[e.label,": "]}),e.value]},t))]})}}function ya(e){if(!0!==e){if("function"==typeof e){const t=e;return e=>{let r=Array.isArray(n=!0===e?.__semioticHoverData||e&&void 0!==e.data&&"number"==typeof e.x&&"number"==typeof e.y&&e&&("node"===e.type||"edge"===e.type||void 0!==e.nodeOrEdge||void 0!==e.allSeries||void 0!==e.stats||void 0!==e.__chartType)?e.data??{}:e)?n[0]:n;var n;if(!r)return null;if(("node"===e?.nodeOrEdge&&"number"==typeof r?.x0&&"number"==typeof r?.x1||"edge"===e?.nodeOrEdge&&"number"==typeof r?.sankeyWidth)&&r.data&&"object"==typeof r.data&&(r=r.data),!r)return null;const o=t(r);return null==o?null:(0,la.jsx)("div",{className:"semiotic-tooltip",style:ca,children:o})}}return!1!==e&&void 0!==e&&("object"==typeof e&&null!==e&&("fields"in e||"title"in e)?pa(e):pa())}}var ha=require("react/jsx-runtime");function fa({x:e,y:t,containerWidth:r,containerHeight:n,margin:o,children:i,className:s="stream-frame-tooltip",zIndex:a=1}){const l=Number.isFinite(e)&&Number.isFinite(t),c=aa.useRef(null),[d,u]=aa.useState(null);aa.useLayoutEffect(()=>{const e=c.current;if(!e)return;const t=()=>{const t=e.getBoundingClientRect();Number.isFinite(t.width)&&Number.isFinite(t.height)&&u(e=>e&&.5>Math.abs(e.width-t.width)&&.5>Math.abs(e.height-t.height)?e:{width:t.width,height:t.height})};if(t(),"undefined"==typeof ResizeObserver)return;const r=new ResizeObserver(t);return r.observe(e),()=>r.disconnect()},[s,r,n,l]);let p;p=d?`translate(${d.width+12>r-e?"calc(-100% - 12px)":"12px"}, ${d.height+12>n-t?"calc(-100% - 4px)":"4px"})`:`translate(${e>.7*r?"calc(-100% - 12px)":"12px"}, ${.3*n>t?"4px":"calc(-100% - 4px)"})`;const y=function(e){if(!aa.isValidElement(e))return!1;const t=e.type;if("string"!=typeof t&&t&&!0===t.ownsChrome)return!0;const r=e.props;if(!0===r["data-semiotic-tooltip-chrome"])return!0;if("true"===r["data-semiotic-tooltip-chrome"])return!0;const n=r.style;if(n&&"object"==typeof n){if(null!=n.background&&""!==n.background&&"transparent"!==n.background)return!0;if(null!=n.backgroundColor&&""!==n.backgroundColor&&"transparent"!==n.backgroundColor)return!0}return!1}(i),h=y?null:ca;return l?(0,ha.jsx)("div",{ref:c,className:y?s:(s+" semiotic-tooltip").trim(),style:{...h||{},position:"absolute",left:o.left+e,top:o.top+t,transform:p,pointerEvents:"none",zIndex:a,width:"max-content"},children:i}):null}var ma=l(require("react")),ba=require("d3-scale"),ga=l(require("react")),va=require("react/jsx-runtime"),xa={fill:(e,t)=>(0,va.jsx)("rect",{style:e,width:t,height:t}),line:(e,t)=>(0,va.jsx)("line",{style:e,x1:0,y1:0,x2:t,y2:t})};function ka(e,t,r,n,o){let i;return i="function"==typeof r?r(e):(0,xa[r])(n(e,t),o),i}function Ca({swatchSize:e}){return(0,va.jsx)("path",{d:`M${.25*e},${.55*e} L${.45*e},${.75*e} L${.8*e},${.3*e}`,fill:"none",stroke:"white",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"})}function wa(e,t,r){return r&&r.size>0?r.has(e.label)?1:.3:null!=t?e.label===t?1:.3:1}var Sa=(e,t,r,n,o,i,s,a,l,c,d)=>{const{type:u="fill",styleFn:p,items:y}=e,h=[];let f=0;const m=!(!t&&!r),b="isolate"===c||void 0===c&&null!=o,{swatchSize:g,labelGap:v,rowHeight:x}=d;return y.forEach((e,c)=>{const d=ka(e,c,u,p,g),k=wa(e,n,o),C=o&&o.size>0&&o.has(e.label);h.push((0,va.jsxs)("g",{transform:`translate(0,${f})`,onClick:t?()=>t(e):void 0,onMouseEnter:r?()=>r(e):void 0,onMouseLeave:r?()=>r(null):void 0,tabIndex:m?a===i&&c===s?0:-1:void 0,role:m?"option":void 0,"aria-selected":m&&b?C||!1:void 0,"aria-current":m&&!b&&null!=n&&e.label===n||void 0,"aria-label":e.label,onKeyDown:m?r=>{if("Enter"!==r.key&&" "!==r.key||(r.preventDefault(),t&&t(e)),"ArrowDown"===r.key||"ArrowUp"===r.key){r.preventDefault();const e=(c+("ArrowDown"===r.key?1:-1)+y.length)%y.length;l(a,e);const t=r.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:m?t=>{l(a,c),r&&r(e);const n=t.currentTarget.querySelector(".semiotic-legend-focus-ring");n&&n.setAttribute("visibility","visible")}:void 0,onBlur:m?e=>{r&&r(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:m?"pointer":"default",opacity:k,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[m&&(0,va.jsx)("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:g+v+2+7*e.label.length,height:g+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),d,C&&(0,va.jsx)(Ca,{swatchSize:g}),(0,va.jsx)("text",{y:g/2,x:g+v,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+c)),f+=x}),h};function Aa({config:e,orientation:t="vertical",width:r=100}){const{colorFn:n,domain:o,label:i,format:s}=e,a=s||(e=>Math.round(100*e)/100+""),l="grad-legend-"+ga.useId();if("horizontal"===t){const e=12,t=Math.min(r,200),s=Math.max(0,(r-t)/2),c=[];for(let e=0;64>=e;e++){const t=e/64;c.push((0,va.jsx)("stop",{offset:100*t+"%",stopColor:n(o[0]+t*(o[1]-o[0]))},e))}return(0,va.jsxs)("g",{"aria-label":i||"Gradient legend",children:[(0,va.jsx)("defs",{children:(0,va.jsx)("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:c})}),i&&(0,va.jsx)("text",{x:s+t/2,y:-4,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),(0,va.jsx)("rect",{x:s,y:0,width:t,height:e,fill:`url(#${l})`,rx:2}),(0,va.jsx)("text",{x:s,y:e+12,textAnchor:"start",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[0])}),(0,va.jsx)("text",{x:s+t,y:e+12,textAnchor:"end",fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[1])})]})}const c=[];for(let e=0;64>=e;e++){const t=e/64;c.push((0,va.jsx)("stop",{offset:100*t+"%",stopColor:n(o[1]-t*(o[1]-o[0]))},e))}return(0,va.jsxs)("g",{"aria-label":i||"Gradient legend",children:[i&&(0,va.jsx)("text",{x:7,y:-6,textAnchor:"middle",fontSize:11,fill:"var(--semiotic-text, #333)",children:i}),(0,va.jsx)("defs",{children:(0,va.jsx)("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"0%",y2:"100%",children:c})}),(0,va.jsx)("rect",{x:0,y:0,width:14,height:100,fill:`url(#${l})`,rx:2}),(0,va.jsx)("text",{x:19,y:10,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[1])}),(0,va.jsx)("text",{x:19,y:100,fontSize:10,fill:"var(--semiotic-text-secondary, #666)",children:a(o[0])})]})}function ja(e){const{legendGroups:t,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,legendInteraction:s,title:a="Legend",width:l=100,height:c=20,orientation:d="vertical",legendLayout:u}=e,p=function(e){const t=Math.max(1,e?.swatchSize??16),r=Math.max(t,e?.rowHeight??22);return{swatchSize:t,labelGap:Math.max(0,e?.labelGap??6),itemGap:Math.max(0,e?.itemGap??10),rowHeight:r,align:"left"===e?.align?"start":"right"===e?.align?"end":e?.align??"start",maxWidth:e?.maxWidth}}(u),[y,h]=ga.useState(0),[f,m]=ga.useState(0),b=ga.useCallback((e,t)=>{h(e),m(t)},[]),g="vertical"===d?(({legendGroups:e,width:t,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:s,focusedItemIndex:a,onFocusedIndexChange:l,legendInteraction:c,metrics:d})=>{const u=[],p=function(e,t){let r=24;return e.map(({hasLabel:e,itemCount:n})=>{r+=5;const o=r;let i;r+=8,e&&(r+=16,i=r,r+=8);const s=r;return r+=n*t+8,{lineY:o,labelY:i,itemsY:s,endY:r}})}(e.map(e=>({hasLabel:!!e.label,itemCount:e.items.length})),d.rowHeight);return e.forEach((e,y)=>{const h=p[y];u.push((0,va.jsx)("line",{stroke:"gray",x1:0,y1:h.lineY,x2:t,y2:h.lineY},"legend-top-line legend-symbol-"+y)),e.label&&null!=h.labelY&&u.push((0,va.jsx)("text",{y:h.labelY,className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label},"legend-text-"+y)),u.push((0,va.jsx)("g",{className:"legend-item",transform:`translate(0,${h.itemsY})`,children:Sa(e,r,n,o,i,s,a,y,l,c,d)},"legend-group-"+y))}),u})({legendGroups:t||[],width:l,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:y,focusedItemIndex:f,onFocusedIndexChange:b,legendInteraction:s,metrics:p}):(({legendGroups:e,height:t,width:r,customClickBehavior:n,customHoverBehavior:o,highlightedCategory:i,isolatedCategories:s,focusedGroupIndex:a,focusedItemIndex:l,onFocusedIndexChange:c,legendInteraction:d,metrics:u})=>{let p=0;const y=[];e.forEach((e,t)=>{let h=0;e.label&&(h+=16);const f=((e,t,r,n,o,i,s,a,l,c,d,u)=>{const{type:p="fill",styleFn:y,items:h}=e,f=[],{swatchSize:m,labelGap:b,itemGap:g,rowHeight:v,align:x}=d,k=!(!t&&!r),C="isolate"===c||void 0===c&&null!=o,w=h.map(e=>m+b+7*e.label.length),S=[];let A=0,j=0;w.forEach((e,t)=>{const r=0===j?e:j+g+e;u&&u>0&&j>0&&r>u?(S.push({start:A,end:t,width:j}),A=t,j=e):j=r}),h.length>0&&S.push({start:A,end:h.length,width:j}),S.forEach((e,c)=>{let d="center"===x?Math.max(0,((u??e.width)-e.width)/2):"end"===x?Math.max(0,(u??e.width)-e.width):0;for(let u=e.start;e.end>u;u++){const e=h[u],x=ka(e,u,p,y,m),S=wa(e,n,o),A=o&&o.size>0&&o.has(e.label);f.push((0,va.jsxs)("g",{transform:`translate(${d},${c*v})`,onClick:t?()=>t(e):void 0,onMouseEnter:r?()=>r(e):void 0,onMouseLeave:r?()=>r(null):void 0,tabIndex:k?a===i&&u===s?0:-1:void 0,role:k?"option":void 0,"aria-selected":k&&C?A||!1:void 0,"aria-current":k&&!C&&null!=n&&e.label===n||void 0,"aria-label":e.label,onKeyDown:k?r=>{if("Enter"!==r.key&&" "!==r.key||(r.preventDefault(),t&&t(e)),"ArrowRight"===r.key||"ArrowLeft"===r.key){r.preventDefault();const e=(u+("ArrowRight"===r.key?1:-1)+h.length)%h.length;l(a,e);const t=r.currentTarget.parentElement?.children[e];t instanceof SVGElement&&t.focus()}}:void 0,onFocus:k?t=>{l(a,u),r&&r(e);const n=t.currentTarget.querySelector(".semiotic-legend-focus-ring");n&&n.setAttribute("visibility","visible")}:void 0,onBlur:k?e=>{r&&r(null);const t=e.currentTarget.querySelector(".semiotic-legend-focus-ring");t&&t.setAttribute("visibility","hidden")}:void 0,style:{cursor:k?"pointer":"default",opacity:S,transition:"opacity 150ms ease",pointerEvents:"all",outline:"none"},children:[k&&(0,va.jsx)("rect",{className:"semiotic-legend-focus-ring",x:-2,y:-2,width:m+b+2+7*e.label.length,height:m+4,fill:"none",stroke:"var(--semiotic-focus, #005fcc)",strokeWidth:2,rx:3,visibility:"hidden"}),x,A&&(0,va.jsx)(Ca,{swatchSize:m}),(0,va.jsx)("text",{y:m/2,x:m+b,dominantBaseline:"central",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:e.label})]},"legend-item-"+u)),d+=w[u]+g}});const $=Math.max(0,...S.map(e=>e.width)),M=S.length;return{items:f,offset:$,totalRows:M,totalHeight:M*v}})(e,n,o,i,s,a,l,t,c,d,u,u.maxWidth??r);h+=f.offset+5,y.push({label:e.label,...f,offset:h,totalRows:f.totalRows,totalHeight:f.totalHeight}),p+=h+12});const h=u.maxWidth??r;let f=p>h?0:"center"===u.align?Math.max(0,(h-p)/2):"end"===u.align?Math.max(0,h-p):0;const m=[];return y.forEach((r,n)=>{const o=e[n];o.label&&(m.push((0,va.jsx)("text",{transform:`translate(${f},0) rotate(90)`,textAnchor:"start",className:"legend-group-label",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:o.label},"legend-text-"+n)),f+=16),m.push((0,va.jsx)("g",{className:"legend-item",transform:`translate(${f},0)`,children:r.items},"legend-group-"+n)),f+=r.offset+5,e[n+1]&&m.push((0,va.jsx)("line",{stroke:"gray",x1:f,y1:-8,x2:f,y2:(r.totalHeight||t)+0+8},"legend-top-line legend-symbol-"+n)),f+=12}),(0,va.jsx)("g",{children:m})})({legendGroups:t||[],title:a,height:c,width:l,customClickBehavior:r,customHoverBehavior:n,highlightedCategory:o,isolatedCategories:i,focusedGroupIndex:y,focusedItemIndex:f,onFocusedIndexChange:b,legendInteraction:s,metrics:p}),v=!(!r&&!n);return(0,va.jsxs)("g",{role:v?"listbox":void 0,"aria-multiselectable":!(!v||"isolate"!==s&&(void 0!==s||null==i))||void 0,"aria-label":"Chart legend",style:{fontFamily:"var(--semiotic-font-family, sans-serif)"},children:[void 0!==a&&""!==a&&"vertical"===d&&(0,va.jsx)("text",{className:"legend-title",y:16,x:l/2,textAnchor:"middle",style:{fontSize:"var(--semiotic-legend-font-size, 12px)"},fill:"var(--semiotic-text, #333)",children:a}),g]})}function $a(e){return"object"==typeof e&&null!==e&&"legendGroups"in e&&Array.isArray(e.legendGroups)}var Ma=require("react/jsx-runtime");function Ba(e){const{legend:t,totalWidth:r,totalHeight:n,margin:o,legendPosition:i="right",legendLayout:s,title:a,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u,legendInteraction:p}=e;if(!t)return null;const y="top"===i||"bottom"===i,h=!!a,f=Math.max(0,r-o.left-o.right),m=Math.max(1,y?s?.maxWidth??f:100);let b,g;return"left"===i?(b=Math.max(4,o.left-m-10),g=o.top):"top"===i?(b=o.left,g=h?32:8):"bottom"===i?(b=o.left,g=n-o.bottom+38):(b=r-o.right+10,g=o.top),(0,Ma.jsx)("g",{transform:`translate(${b}, ${g})`,children:(v=t,"object"==typeof v&&null!==v&&"gradient"in v?(0,Ma.jsx)(Aa,{config:t.gradient,orientation:y?"horizontal":"vertical",width:m}):$a(t)?(0,Ma.jsx)(ja,{legendGroups:t.legendGroups,title:"",width:m,orientation:y?"horizontal":"vertical",legendLayout:s,customHoverBehavior:l,customClickBehavior:c,highlightedCategory:d,isolatedCategories:u,legendInteraction:p}):t)});var v}var Wa=require("react/jsx-runtime"),Pa={secondary:0,primary:3},Ia=".annotation-deferred{opacity:0;pointer-events:none;transition:opacity .12s ease}.stream-xy-frame:hover .annotation-deferred,.stream-ordinal-frame:hover .annotation-deferred,.stream-network-frame:hover .annotation-deferred,.stream-geo-frame:hover .annotation-deferred,.stream-xy-frame:focus-within .annotation-deferred,.stream-ordinal-frame:focus-within .annotation-deferred,.stream-network-frame:focus-within .annotation-deferred,.stream-geo-frame:focus-within .annotation-deferred{opacity:1;pointer-events:auto}@media (prefers-reduced-motion:reduce){.annotation-deferred{transition:none}}";function La(e){return!0===e?._annotationDeferred}function Ra(e){return"blended"===e?.cohesion||"layer"===e?.cohesion?e.cohesion:null}function Ta(e){const t=e?.provenance?.confidence;return"number"==typeof t&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):null}function Fa(e){return Math.max(.72,.95-.06*e)}var Ea=l(require("react")),Na=require("react/jsx-runtime");function Oa(e,t=120,r=8){if(!e)return[];const n=Math.max(1,Math.floor(t/r)),o=e.split(/\s+/),i=[];let s="";for(const e of o)s&&s.length+1+e.length>n?(i.push(s),s=e):s=s?`${s} ${e}`:e;return s&&i.push(s),i}function Da(e,t,r,n){return"curly"===e?n?`M0,0 C${.6*r},0 ${.4*r},${t/2} ${r},${t/2} C${.4*r},${t/2} ${.6*r},${t} 0,${t}`:`M0,0 C0,${.6*r} ${t/2},${.4*r} ${t/2},${r} C${t/2},${.4*r} ${t},${.6*r} ${t},0`:n?`M0,0 L${r},0 L${r},${t} L0,${t}`:`M0,0 L0,${r} L${t},${r} L${t},0`}function za(e,t,r,n){if(!e)return(0,Na.jsx)("g",{className:"annotation-note"});const{label:o,title:i,orientation:s,align:a,wrap:l=120,noWrap:c}=e;if(!o&&!i)return(0,Na.jsx)("g",{className:"annotation-note"});let d=s;d||(d=Math.abs(t)>Math.abs(r)?"leftRight":"topBottom");let u=a;u&&"dynamic"!==u||(u="topBottom"===d?0>t?"right":"left":0>r?"bottom":"top");let p="start";"topBottom"===d?"right"===u?p="end":"middle"===u&&(p="middle"):p=0>t?"end":"start";const y=16,h=i?c?[i]:Oa(i,l):[],f=o?c?[o]:Oa(o,l):[],m="leftRight"===d?"end"===p?-4:4:0;let b=0;const g=[],v=n||"var(--semiotic-annotation-color, var(--semiotic-text, #333))";e.useHTML||e.html?g.push((0,Na.jsx)("foreignObject",{className:"annotation-note-html",x:"end"===p?m-l:"middle"===p?m-l/2:m,y:-16,width:l,height:Math.max(y,(h.length+f.length)*y+(i&&o?2:0))+y,style:{overflow:"visible"},children:(0,Na.jsxs)("div",{xmlns:"http://www.w3.org/1999/xhtml",style:{color:v,fontSize:"12px",lineHeight:"16px",overflow:"visible",textAlign:"end"===p?"right":"middle"===p?"center":"left",whiteSpace:c?"nowrap":"normal",wordBreak:"break-word"},children:[i&&(0,Na.jsx)("div",{className:"annotation-note-title",style:{fontWeight:"bold"},children:i}),o&&(0,Na.jsx)("div",{className:"annotation-note-label",children:o})]})},"annotation-note-html")):(h.length>0&&(g.push((0,Na.jsx)("text",{className:"annotation-note-title",fill:v,textAnchor:p,fontWeight:"bold",children:h.map((e,t)=>(0,Na.jsx)("tspan",{x:m,dy:0===t?0:y,children:e},t))},"annotation-note-title")),b=h.length*y),f.length>0&&g.push((0,Na.jsx)("text",{className:"annotation-note-label",fill:v,textAnchor:p,y:b,children:f.map((e,t)=>(0,Na.jsx)("tspan",{x:m,dy:0===t?0:y,children:e},t))},"annotation-note-label")));let x=null;if((i||o)&&(0!==t||0!==r))if("topBottom"===d){const e=Math.min(l,120);let t=0,r=e;"end"===p?(t=-e,r=0):"middle"===p&&(t=-e/2,r=e/2),x=(0,Na.jsx)("line",{className:"note-line",x1:t,x2:r,y1:0,y2:0,stroke:n||"var(--semiotic-text-secondary, currentColor)"})}else{const e=(h.length+f.length)*y+(f.length>0?y:0);let t=0,r=e;"bottom"===u?(t=-e,r=0):"middle"===u&&(t=-e/2,r=e/2),x=(0,Na.jsx)("line",{className:"note-line",x1:0,x2:0,y1:t,y2:r,stroke:n||"var(--semiotic-text-secondary, currentColor)"})}const k=Math.max(0,h.length+f.length-1)*y;let C=0;return"topBottom"===d?C=0>r?-(k+2):18:"leftRight"===d&&(C="middle"===u?-(k+y+(f.length>0&&h.length>0?2:0))/2+8:"bottom"===u||0>r?-(k+2):18),(0,Na.jsxs)("g",{className:"annotation-note",transform:`translate(${t},${r})`,children:[(0,Na.jsx)("g",{className:"annotation-note-content",transform:0!==C?`translate(0,${C})`:void 0,children:g}),x]})}function qa(e,t,r,n,o){const i=[];switch(e){case"callout-circle":{const e=(t?.radius||0)+(t?.radiusPadding||0);e>0&&i.push((0,Na.jsx)("circle",{r:e,fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"subject-circle"));break}case"callout-rect":{const e=t?.width||0,n=t?.height||0;(e>0||n>0)&&i.push((0,Na.jsx)("rect",{width:e,height:n,fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"subject-rect"));break}case"callout-custom":t?.custom&&i.push(...Array.isArray(t.custom)?t.custom:[t.custom]);break;case"xy-threshold":{const e=n||0,s=o||0;if(void 0!==t?.x){const n=(t.x||0)-e;i.push((0,Na.jsx)("line",{x1:n,y1:(t.y1||0)-s,x2:n,y2:(t.y2||0)-s,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else if(void 0!==t?.y){const n=(t.y||0)-s;i.push((0,Na.jsx)("line",{x1:(t.x1||0)-e,y1:n,x2:(t.x2||0)-e,y2:n,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"))}else void 0!==t?.x1||void 0!==t?.x2?i.push((0,Na.jsx)("line",{x1:(t.x1||0)-e,y1:0,x2:(t.x2||0)-e,y2:0,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line")):void 0===t?.y1&&void 0===t?.y2||i.push((0,Na.jsx)("line",{x1:0,y1:(t.y1||0)-s,x2:0,y2:(t.y2||0)-s,stroke:r||"var(--semiotic-text-secondary, currentColor)",strokeDasharray:"5,5"},"threshold-line"));break}case"bracket":{const e=t?.type||"curly",n=t?.width??t?.height;void 0!==n&&i.push((0,Na.jsx)("path",{d:Da(e,n,t?.depth||30,void 0===t?.width),fill:"none",stroke:r||"var(--semiotic-text-secondary, currentColor)"},"bracket-path"));break}}return(0,Na.jsx)("g",{className:"annotation-subject",children:i})}function _a(e,t,r,n,o,i){const s=[];let a=0,l=0;if("callout-circle"!==o&&"label"!==o||!i?.radius){if("callout-rect"===o&&i){const r=i.width||0,n=i.height||0;if(r>0||n>0){const o=r/2,i=n/2,s=e-o,c=t-i;if(0!==s||0!==c){const e=Math.abs(s),t=Math.abs(c),d=r/2,u=n/2,p=e*u>t*d?d/e:u/t;a=o+s*p,l=i+c*p}}}else if("bracket"===o&&i){const e=i.width,t=i.height,r=i.depth||30;void 0!==e?(a=e/2,l=r):void 0!==t&&(a=r,l=t/2)}}else{const r=(i.radius||0)+(i.radiusPadding||0);if(r>0&&(0!==e||0!==t)){const n=Math.atan2(t,e);a=Math.cos(n)*r,l=Math.sin(n)*r}}const c=Math.sqrt((e-a)**2+(t-l)**2);if(c>.5){const o=n||"var(--semiotic-text-secondary, currentColor)",i="curve"===r?.type;let d=Math.atan2(t-l,e-a);if(i){const n=(a+e)/2,i=(l+t)/2,u=-(t-l)/c,p=(e-a)/c,y=(r?.curve??.25)*c,h=n+u*y,f=i+p*y;s.push((0,Na.jsx)("path",{className:"connector-curve",d:`M${a},${l}Q${h},${f} ${e},${t}`,fill:"none",stroke:o},"connector-line")),d=Math.atan2(f-l,h-a)}else s.push((0,Na.jsx)("line",{x1:a,y1:l,x2:e,y2:t,stroke:o},"connector-line"));if("arrow"===r?.end){const e=10,t=16/180*Math.PI;s.push((0,Na.jsx)("path",{d:`M${a},${l}L${a+e*Math.cos(d+t)},${l+e*Math.sin(d+t)}L${a+e*Math.cos(d-t)},${l+e*Math.sin(d-t)}Z`,fill:o,stroke:"none"},"connector-arrow"))}}return(0,Na.jsx)("g",{className:"annotation-connector",children:s})}function Ha(e){const{x:t=0,y:r=0,dx:n,dy:o,nx:i,ny:s,note:a,connector:l,subject:c,type:d,color:u,className:p,disable:y,opacity:h,strokeDasharray:f,events:m={},"data-testid":b}=e,g=Array.isArray(t)?t[0]??0:t,v=Array.isArray(r)?r[0]??0:r,x=new Set(Array.isArray(y)?y:[]);let k=n||0,C=o||0;null!=i&&(k=i-g),null!=s&&(C=s-v);const w="string"==typeof d?d:"label";if("bracket"===w&&c&&0===k&&0===C)if(void 0!==c.width){k=c.width/2;const e=c.depth||30;C=e+(0>e?-5:5)}else if(void 0!==c.height){const e=c.depth||30;k=e+(0>e?-5:5),C=c.height/2}return(0,Na.jsxs)("g",{className:("annotation "+(p||"")).trim(),transform:`translate(${g},${v})`,"data-testid":b,...null!=h&&{opacity:h},...f&&{strokeDasharray:f},...m,children:[!x.has("connector")&&_a(k,C,l,u,w,c),!x.has("subject")&&qa(w,c,u,g,v),!x.has("note")&&za(a,k,C,u)]})}function Ga(e){const{noteData:t}=e,{screenCoordinates:r}=t,n="string"==typeof t.type?t.type:"label",o=t.eventListeners||t.events||{};if(t.coordinates&&r){const e=t.nx||r[0][0]+(t.dx??0),o=t.ny||r[0][1]+(t.dy??0),i=r.map((r,i)=>{const s=Object.assign({},t,{note:0===i?t.note:{label:""},x:r[0],y:r[1],nx:e,ny:o});return(0,Na.jsx)(Ha,{"data-testid":"semiotic-annotation",...s,type:n},"multi-annotation-"+i)});return(0,Na.jsx)("g",{children:i})}const i=t.note||{title:"none",label:t.label},s=`${i.label}-${i.title}-${t.i}`;return(0,Na.jsx)(Ha,{"data-testid":"semiotic-annotation",events:o,...t,type:n},s)}var Va=require("d3-hierarchy"),Ua=require("d3-shape");function Ya(e){return Math.round(100*e)/100}function Qa(e,t=2){const r=[],n=[],o=t+1;for(let t=0;o>t;t++){let i=0;for(const[r,n]of e)null!==n&&(i+=r**t*n);r.push(i);const s=[];for(let r=0;o>r;r++){let n=0;for(const[o,i]of e)null!==i&&(n+=o**(t+r));s.push(n)}n.push(s)}n.push(r);const i=function(e,t){const r=e,n=e.length-1,o=[t];for(let e=0;n>e;e++){let t=e;for(let o=e+1;n>o;o++)Math.abs(r[e][o])>Math.abs(r[e][t])&&(t=o);for(let o=e;n+1>o;o++){const n=r[o][e];r[o][e]=r[o][t],r[o][t]=n}for(let t=e+1;n>t;t++)for(let o=n;o>=e;o--)r[o][t]-=r[o][e]*r[e][t]/r[e][e]}for(let e=n-1;e>=0;e--){let t=0;for(let i=e+1;n>i;i++)t+=r[i][e]*o[i];o[e]=(r[n][e]-t)/r[e][e]}return o}(n,o).map(Ya);return{points:e.map(([e])=>[Ya(e),Ya(i.reduce((t,r,n)=>t+r*e**n,0))]),equation:[...i].reverse()}}function Xa(e,t){const r=t.scales?.x??t.scales?.time;return r?null!=e.x?r(e.x):t.xAccessor&&null!=e[t.xAccessor]?r(e[t.xAccessor]):null:null}function Za(e,t){const r=t.scales?.y??t.scales?.value;return r?null!=e.y?r(e.y):t.yAccessor&&null!=e[t.yAccessor]?r(e[t.yAccessor]):null:null}function Ka(e){return null==e?null:e+""}function Ja(e,t,r){return t.stickyPositionCache?.set(e,r),r}function el(e,t,r){const n=e.anchor||e.lifecycle?.anchor||"fixed";if("latest"===n){if(null!=e.pointId&&r.pointNodes&&r.pointNodes.length>0)for(let n=r.pointNodes.length-1;n>=0;n--){const o=r.pointNodes[n];if(o.pointId===e.pointId)return Ja(t,r,{x:o.x,y:o.y})}const n=function(e){const t=e.data;if(!t||0===t.length)return null;const r=t[t.length-1],n=e.scales?.x??e.scales?.time,o=e.scales?.y??e.scales?.value;if(!n||!o)return null;const i=r[e.xAccessor||"x"],s=r[e.yAccessor||"y"];return null==i||null==s?null:{x:n(i),y:o(s)}}(r);return n?Ja(t,r,n):null}if("semantic"===n){const n=function(e,t,r){const n=function(e){return Ka(e.provenance?.stableId??e.stableId)}(e);if(!n)return null;const o=r.pointNodes?.find(e=>Ka(e.pointId)===n);if(o)return Ja(t,r,{x:o.x,y:o.y});const i=r.data?.find(e=>function(e){return Ka(e.stableId??e.id??e.provenance?.stableId)}(e)===n);if(!i)return null;const s=Xa(i,r),a=Za(i,r);return null==s||null==a?null:Ja(t,r,{x:s,y:a})}(e,t,r);if(n)return n}let o=null,i=null;if(null!=e.pointId&&r.pointNodes){const t=r.pointNodes.find(t=>t.pointId===e.pointId);t&&(o=t.x,i=t.y)}if(null!=o&&null!=i||(o=Xa(e,r),i=Za(e,r)),null!=o&&null!=i)return Ja(t,r,{x:o,y:i});if("sticky"===n){const e=r.stickyPositionCache?.get(t);if(e)return e}return null}function tl(e,t,r,n=50){return!(-n>e||e>(r.width||0)+n||-n>t||t>(r.height||0)+n)}var rl=require("react/jsx-runtime"),nl="var(--semiotic-bg, #ffffff)";function ol(e){const{x:t,y:r,text:n,fill:o,fontSize:i=12,fontWeight:s,fontFamily:a,textAnchor:l="start",dominantBaseline:c,background:d,className:u}=e,p=function(e){return void 0===e||!0===e||"halo"===e?{type:"halo"}:!1===e||"none"===e?null:"box"===e?{type:"box"}:{type:e.type??"halo",...e}}(d),y=e=>(0,rl.jsx)("text",{x:t,y:r,textAnchor:l,dominantBaseline:c,fill:o,fontSize:i,fontWeight:s,fontFamily:a,className:u,...e?{stroke:e.stroke,strokeWidth:e.strokeWidth,paintOrder:"stroke"}:{},children:n});if(!p)return y();if("halo"===p.type)return y({stroke:p.fill??nl,strokeWidth:p.haloWidth??3});const h=p.padding??{x:6,y:3},f="number"==typeof h?h:h.x,m="number"==typeof h?h:h.y,b=function(e,t){return(e+"").length*t*.6}(n,i),g=i+2*m;let v,x;return v="middle"===l?t-b/2-f:"end"===l?t-b-f:t-f,x="middle"===c||"central"===c?r-g/2:"hanging"===c||"text-before-edge"===c?r-m:r-.8*i-m,(0,rl.jsxs)("g",{className:u,children:[(0,rl.jsx)("rect",{x:v,y:x,width:b+2*f,height:g,rx:p.radius??3,ry:p.radius??3,fill:p.fill??nl,fillOpacity:p.opacity??.85,stroke:p.stroke,strokeWidth:p.strokeWidth}),y()]})}var il=require("react/jsx-runtime"),sl={linear:Ua.curveLinear,monotoneX:Ua.curveMonotoneX,monotoneY:Ua.curveMonotoneY,step:Ua.curveStep,stepAfter:Ua.curveStepAfter,stepBefore:Ua.curveStepBefore,basis:Ua.curveBasis,cardinal:Ua.curveCardinal,catmullRom:Ua.curveCatmullRom};var al=32,ll=6,cl=4,dl=8,ul=72;var pl={ai:"AI",agent:"agent",watcher:"watcher",system:"system",import:"imported",computed:"computed",user:"you"};function yl(e){if(!hl(e))return e;const t=("string"==typeof e.mobileText?e.mobileText:void 0)??("string"==typeof e.shortText?e.shortText:void 0);return!t||"string"!=typeof e.label&&null!=e.label?e:{...e,label:t}}function hl(e){return J(e)}function fl(e,t){if(!e)return[];const r=Math.max(1,Math.floor(t/7)),n=e.split(/\s+/).filter(Boolean),o=[];let i="";for(const e of n)i&&i.length+e.length+1>r?(o.push(i),i=e):i=i?`${i} ${e}`:e;return i&&o.push(i),o}function ml(e,t,r,n,o){const i=e+r,s=t+n;return Math.abs(r)>Math.abs(n)?{x:0>r?i-o.width-4:i+4,y:0>n?s-o.height:s,width:o.width,height:o.height}:{x:0>r?i-o.width:i,y:0>n?s-o.height-4:s+4,width:o.width,height:o.height}}function bl(e,t){return{x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}}function gl(e,t){return Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y))}function vl(e,t,r,n,o,i,s,a){const l=bl(e,s);let c=.4*Math.hypot(t.dx,t.dy)+80*function(e,t,r,n){const o=Math.max(0,n-e.x),i=Math.max(0,n-e.y);return(o+Math.max(0,e.x+e.width-(t-n)))*e.height+(i+Math.max(0,e.y+e.height-(r-n)))*e.width}(l,o,i,a);for(const e of r)c+=12*gl(l,e);for(const e of n)c+=4*gl(l,e);return c}function xl(e){const{annotations:t,context:r,defaultOffset:n=al,notePadding:o=ll,markPadding:i=cl,edgePadding:s=dl,preserveManualOffsets:a=!0,routeLongConnectors:l=!0,connectorThreshold:c=ul,density:d,progressiveDisclosure:u=!1,redundantCues:p=!1,responsive:y,mobile:h,cohesion:f,audience:m}=e,b=r.width||0,g=r.height||0,v="object"==typeof h?h:{},x=v.breakpoint??480,k=!!h&&x>=b,C=k&&!1!==v.preferShortText?t.map(yl):t,w=k&&!d?{maxAnnotations:v.maxAnnotations??("callout-list"===v.strategy?1:2),minVisible:v.minVisible??1}:d,S=u||k&&(!1!==v.progressiveDisclosure||"callout-list"===v.strategy),A=k&&!y?v.responsive??{minWidth:x}:y,j=k&&!f?v.cohesion:f;if(0===C.length||0>=b||0>=g)return C.slice();const $=[],M=function(e,t){return(e.pointNodes||[]).map(e=>{const r=Math.max(1,e.r||1)+t;return{x:e.x-r,y:e.y-r,width:2*r,height:2*r}})}(r,i);let B=!1;const W=C.map((e,t)=>{if(!hl(e))return e;const i=function(e,t,r){if("widget"===e.type&&"number"==typeof e.px&&"number"==typeof e.py)return{x:e.px,y:e.py};const n=e.pointId??e.nodeId;if(null!=n&&r.pointNodes){const e=r.pointNodes.find(e=>e.pointId===n);if(e)return{x:e.x,y:e.y}}const o=e.coordinates,i=r.scales?.geoProjection;if(Array.isArray(o)&&o.length>=2&&i){const e=o[0],t=o[1];if("number"==typeof e&&"number"==typeof t){const r=i([e,t]);if(r&&"number"==typeof r[0]&&"number"==typeof r[1])return{x:r[0],y:r[1]}}}return r.scales||"number"!=typeof e.x||"number"!=typeof e.y?el(e,t,r):{x:e.x,y:e.y}}(e,t,r);if(!i)return e;const d=function(e){if("widget"===e.type)return{width:"number"==typeof e.width?e.width:32,height:"number"==typeof e.height?e.height:32};const t="number"==typeof e.wrap?e.wrap:120,r=[...fl("string"==typeof e.title?e.title:void 0,t),...fl("string"==typeof e.label?e.label:void 0,t)],n=r.reduce((e,t)=>Math.max(e,t.length),0);return{width:Math.max(24,Math.min(t,7*n)+10),height:Math.max(18,16*r.length+6)}}(e);if(a&&("number"==typeof(u=e).dx||"number"==typeof u.dy)){const t=function(e){return"text"===e.type||"widget"===e.type?{dx:0,dy:0}:{dx:30,dy:-30}}(e);return $.push(bl(ml(i.x,i.y,"number"==typeof e.dx?e.dx:t.dx,"number"==typeof e.dy?e.dy:t.dy,d),o)),e}var u;let p=null,y=1/0;for(const e of function(e){const t=1.6*e;return[{dx:e,dy:-e},{dx:-e,dy:-e},{dx:e,dy:e},{dx:-e,dy:e},{dx:e,dy:0},{dx:-e,dy:0},{dx:0,dy:-e},{dx:0,dy:e},{dx:t,dy:-t},{dx:-t,dy:-t},{dx:t,dy:t},{dx:-t,dy:t}]}(n)){const t=vl(ml(i.x,i.y,e.dx,e.dy,d),e,$,M,b,g,o,s);y>t&&(p=e,y=t)}if(!p)return e;const h=bl(ml(i.x,i.y,p.dx,p.dy,d),o);$.push(h);const f=Math.hypot(p.dx,p.dy),m=l&&f>=c&&"text"!==e.type&&"widget"!==e.type?{...e.connector||{end:"arrow"},type:"curve"}:e.connector;return B=!0,{...e,dx:p.dx,dy:p.dy,...m?{connector:m}:{}}}),P=B?W:C.slice();let I=P;if(p){let e=!1;const t=P.map(t=>{const r=function(e){return"text"!==e.type||"string"!=typeof e.color||8>Math.hypot("number"==typeof e.dx?e.dx:0,"number"==typeof e.dy?e.dy:0)?e:{...e,_redundantConnector:!0}}(t);return r!==t&&(e=!0),r});I=e?t:P}{let e=!1;const t=I.map(t=>{if(!0!==t?.defensive)return t;const r=function(e){const t=e?.provenance;if(!t||"object"!=typeof t)return e;const r="string"==typeof t.source?pl[t.source]??t.source:null,n="number"==typeof t.confidence&&Number.isFinite(t.confidence)?Math.round(100*Math.max(0,Math.min(1,t.confidence)))+"%":null;if(!r&&!n)return e;if(null!=e.label&&"string"!=typeof e.label)return e;const o=[r,n].filter(Boolean).join(" · "),i="string"==typeof e.label?e.label:"";return i.includes(`(${o})`)?e:{...e,label:i?`${i} (${o})`:`(${o})`}}(t);return r!==t&&(e=!0),r});I=e?t:I}const L=new Set;if(w){const e="object"==typeof w?w:{},t=function(e){if(!e)return 1;const t=function(e){const t=e?.familiarity;if(!t)return 3;const r=Object.values(t).filter(e=>"number"==typeof e&&Number.isFinite(e));return 0===r.length?3:r.reduce((e,t)=>e+t,0)/r.length}(e);return t>2?4>t?1:.6:1.5}(m),r=1===t?e:{...e,maxAnnotations:Math.max(0,Math.round((e.maxAnnotations??Ne(b,g,e))*t))},{deferred:n}=function(e){const{annotations:t,width:r,height:n}=e,o=Math.max(0,e.minVisible??1),i=Ne(r,n,e),s=t.map((e,t)=>{return{annotation:e,index:t,note:(r=e,J(r))};var r}),a=s.filter(e=>e.note);if(0===a.length||i>=a.length)return{visible:t.slice(),deferred:[],budget:i};const l=a.filter(e=>Ee(e.annotation)),c=a.filter(e=>!Ee(e.annotation)).sort((e,t)=>Oe(t.annotation)-Oe(e.annotation)||e.index-t.index),d=Math.min(c.length,Math.max(Math.max(0,i-l.length),Math.max(0,o-l.length))),u=new Set([...l.map(e=>e.index),...c.slice(0,d).map(e=>e.index)]),p=[],y=[];for(const{annotation:e,index:t,note:r}of s)!r||u.has(t)?p.push(e):y.push(e);return{visible:p,deferred:y,budget:i}}({annotations:I,width:b,height:g,...r});for(const e of n)L.add(e)}if(A&&("object"==typeof A&&"number"==typeof A.minWidth?A.minWidth:480)>=b)for(const e of I)hl(e)&&"secondary"===e.emphasis&&L.add(e);if(L.size>0)for(const e of I)!0===e?.defensive&&L.delete(e);let R;return R=0===L.size?I:S?I.map(e=>L.has(e)?{...e,_annotationDeferred:!0}:e):I.filter(e=>!L.has(e)),j?function(e,t){let r=!1;const n=e.map(e=>hl(e)?"blended"===e.cohesion||"layer"===e.cohesion?e:(r=!0,{...e,cohesion:t}):e);return r?n:e}(R,j):R}var kl=require("react/jsx-runtime");function Cl(e){return"circle"===e.shape.type?e.shape.radius:Math.max(e.shape.width,e.shape.height)/2}function wl(e){const{width:t,height:r,totalWidth:n,totalHeight:o,margin:i,title:s,legend:a,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u,legendPosition:p="right",legendLayout:y,pointNodes:h=[],annotations:f,onAnnotationActivate:m,onObservation:b,chartId:g,chartType:v,autoPlaceAnnotations:x,svgAnnotationRules:k,children:C}=e,w=function(e){const t=Ve(e=>e.pushObservation),r=De.useCallback(r=>{e.onObservation?.(r),t?.(r)},[e,t]);return De.useMemo(()=>({...e,onObservation:r}),[r,e])}({onAnnotationActivate:m,onObservation:b,chartId:g,chartType:v}),S=ma.useMemo(()=>function(e){return e?.length?e.map(e=>null!=e.pointId||null==e.bodyId?e:{...e,pointId:e.bodyId+""}):e}(f),[f]),A=ma.useMemo(()=>function(e){const{width:t,height:r,pointNodes:n=[],data:o}=e;return{scales:{x:(0,ba.scaleLinear)().domain([0,Math.max(1,t)]).range([0,Math.max(1,t)]),y:(0,ba.scaleLinear)().domain([0,Math.max(1,r)]).range([0,Math.max(1,r)])},width:t,height:r,frameType:"network",pointNodes:n,data:o,xAccessor:"x",yAccessor:"y"}}({width:t,height:r,pointNodes:h}),[r,h,t]),j=ma.useMemo(()=>S&&x?xl({annotations:S,context:A,..."object"==typeof x?x:{}}):S,[A,x,S]),$=ma.useMemo(()=>function(e,t={}){return function(e,r,n){switch(e.type){case"label":case"callout":case"callout-circle":case"callout-rect":{const t=el(e,r,n);if(!t)return null;const{x:o,y:i}=t;if(!tl(o,i,n))return null;const s="callout"===e.type?"callout-circle":e.type,a="callout-circle"===s?{radius:e.radius??12,radiusPadding:e.radiusPadding}:"callout-rect"===s?{width:e.width,height:e.height}:void 0;return(0,il.jsx)(Ga,{noteData:{x:o,y:i,dx:e.dx??30,dy:e.dy??-30,note:{label:e.label,title:e.title,wrap:e.wrap||120},type:s,...a?{subject:a}:{},connector:e.connector||{end:"arrow"},color:e.color,disable:e.disable,opacity:e.opacity,strokeDasharray:e.strokeDasharray,className:e.className}},"ann-"+r)}case"x-threshold":{const t=Xa(null!=e.value?{...e,x:e.value}:e,n);if(null==t)return null;const o=e.color||"#f97316",i=e.labelPosition||"top";let s;s="bottom"===i?(n.height||0)-4:"center"===i?(n.height||0)/2:16;const a=t>.6*(n.width||0),l=a?t-4:t+4,c=a?"end":"start";return(0,il.jsxs)("g",{opacity:e.opacity,children:[(0,il.jsx)("line",{x1:t,y1:0,x2:t,y2:n.height||0,stroke:o,strokeWidth:e.strokeWidth||1.5,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,il.jsx)(ol,{x:l,y:s,text:e.label,textAnchor:c,fill:o,fontSize:12,fontWeight:"bold",background:e.labelBackground??"halo"})]},"ann-"+r)}case"y-threshold":{const t=Za(null!=e.value?{...e,y:e.value}:e,n);if(null==t)return null;const o=e.color||"#f97316",i=e.labelPosition||"right";let a,l;"left"===i?(a=4,l="start"):"center"===i?(a=(n.width||0)/2,l="middle"):(a=(n.width||0)-4,l="end");const c=20>(s=t)?Math.min((n.height||0)-4,s+16):s-4;return(0,il.jsxs)("g",{opacity:e.opacity,children:[(0,il.jsx)("line",{x1:0,y1:t,x2:n.width||0,y2:t,stroke:o,strokeWidth:e.strokeWidth||1.5,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,il.jsx)(ol,{x:a,y:c,text:e.label,textAnchor:l,fill:o,fontSize:12,fontWeight:"bold",background:e.labelBackground??"halo"})]},"ann-"+r)}case"enclose":{const t=(e.coordinates||[]).map(e=>({x:Xa({...e,type:"point"},n),y:Za({...e,type:"point"},n),r:1})).filter(e=>null!=e.x&&null!=e.y);if(2>t.length)return null;const o=(0,Va.packEnclose)(t),i=e.padding||10;return(0,il.jsxs)("g",{children:[(0,il.jsx)("circle",{cx:o.x,cy:o.y,r:o.r+i,fill:e.fill||"none",fillOpacity:e.fillOpacity||.1,stroke:e.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),e.label&&(0,il.jsx)(ol,{x:o.x,y:o.y-o.r-i-4,textAnchor:"middle",fill:e.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:e.label,background:e.labelBackground??"none"})]},"ann-"+r)}case"rect-enclose":{const t=(e.coordinates||[]).map(e=>({x:Xa({...e,type:"point"},n),y:Za({...e,type:"point"},n)})).filter(e=>null!=e.x&&null!=e.y);if(2>t.length)return null;const o=e.padding||10,i=t.map(e=>e.x),s=t.map(e=>e.y),[a,l]=yn(i),[c,d]=yn(s),u=a-o,p=l+o,y=c-o;return(0,il.jsxs)("g",{children:[(0,il.jsx)("rect",{x:u,y:y,width:p-u,height:d+o-y,fill:e.fill||"none",fillOpacity:e.fillOpacity||.1,stroke:e.color||"var(--semiotic-text-secondary, #666)",strokeWidth:1.5,strokeDasharray:"4,2"}),e.label&&(0,il.jsx)(ol,{x:(u+p)/2,y:y-4,textAnchor:"middle",fill:e.color||"var(--semiotic-text-secondary, #666)",fontSize:12,text:e.label,background:e.labelBackground??"none"})]},"ann-"+r)}case"highlight":{const t=n.data||[],o="function"==typeof e.filter?t.filter(e.filter):e.field&&null!=e.value?t.filter(t=>t[e.field]===e.value):[],i={stroke:e.color||"#f97316",strokeWidth:2,fill:"none"};return(0,il.jsx)("g",{children:o.map((t,r)=>{const o=Xa(t,n),s=Za(t,n);if(null==o||null==s)return null;const a="function"==typeof e.r?e.r(t):e.r||6,l="function"==typeof e.style?e.style(t):e.style||i;return(0,il.jsx)("circle",{cx:o,cy:s,r:a,...l},"hl-"+r)})},"ann-"+r)}case"bracket":{const t=Xa(e,n),o=Za(e,n);return(0,il.jsx)(Ga,{noteData:{x:t??0,y:o??0,dx:e.dx||0,dy:e.dy||0,note:{label:e.label,title:e.title,wrap:e.wrap||120},type:"bracket",subject:{type:e.bracketType||"curly",width:e.width,height:e.height,depth:e.depth||30},color:e.color}},"ann-"+r)}case"trend":{const t=n.data||[];if(2>t.length)return null;const o=n.xAccessor||"x",i=n.yAccessor||"y",s="ordinal"===n.frameType,a="horizontal"===n.projection,l=s?o:null,c=s?i:null;let d;const u=[],p=new Map;if(s&&l&&c){for(const e of t){const t=e[l];if(null==t)continue;const r=t+"";p.has(r)||(p.set(r,u.length),u.push(r))}d=t.map(e=>{const t=e[l],r=e[c];if(null==t||null==r)return null;const n=p.get(t+"");return null!=n?[n,+r]:null}).filter(e=>null!==e)}else d=t.map(e=>[e[o],e[i]]).filter(e=>null!=e[0]&&null!=e[1]);if(2>d.length)return null;const y=n.scales?.x??n.scales?.time,h=n.scales?.y??n.scales?.value;if(!y||!h)return null;const f=e=>t=>{const r=Math.max(0,Math.floor(t)),n=Math.min(u.length-1,r+1),o=t-r,i=e(u[r]);return i+(e(u[n])-i)*o},m=y,b=h;let g;if(s)if(a){const e=f(b);g=(t,r)=>[m(r),e(t)]}else{const e=f(m);g=(t,r)=>[e(t),b(r)]}else g=(e,t)=>[m(e),b(t)];const v=e.method||"linear";let x;if("loess"===v)x=function(e,t=.3){const r=e.length;if(2>r)return e.slice();const n=e.slice().sort((e,t)=>e[0]-t[0]),o=n.map(e=>e[0]),i=n.map(e=>e[1]),s=Math.max(2,Math.ceil(t*r)),a=[];for(let e=0;r>e;e++){const t=o[e],n=o.map(e=>Math.abs(e-t)),l=n.slice().sort((e,t)=>e-t)[Math.min(s-1,r-1)]||1,c=[];for(let e=0;r>e;e++){const t=0===l?0:n[e]/l;c[e]=1>t?Math.pow(1-Math.pow(t,3),3):0}let d=0,u=0,p=0,y=0,h=0;for(let e=0;r>e;e++){const t=c[e];0!==t&&(d+=t,u+=t*o[e],p+=t*i[e],y+=t*o[e]*o[e],h+=t*o[e]*i[e])}if(0===d){a.push([t,i[e]]);continue}const f=d*y-u*u;if(1e-12>Math.abs(f))a.push([t,p/d]);else{const e=(d*h-u*p)/f;a.push([t,(p-e*u)/d+e*t])}}return a}(d,e.bandwidth??.3);else{const t="polynomial"===v?Qa(d,e.order||2):function(e){const t=[0,0,0,0];let r=0;for(const[n,o]of e)null!==o&&(r++,t[0]+=n,t[1]+=o,t[2]+=n*n,t[3]+=n*o);const n=r*t[2]-t[0]*t[0],o=0===n?0:Ya((r*t[3]-t[0]*t[1])/n),i=Ya(t[1]/r-o*t[0]/r);return{points:e.map(([e])=>[Ya(e),Ya(o*e+i)]),equation:[o,i]}}(d);x=t.points}const k=x.map(([e,t])=>{const[r,n]=g(e,t);return`${r},${n}`}).join(" "),C=e.color||"#6366f1",w=x[x.length-1],[S,A]=g(w[0],w[1]);return(0,il.jsxs)("g",{children:[(0,il.jsx)("polyline",{points:k,fill:"none",stroke:C,strokeWidth:e.strokeWidth||2,strokeDasharray:e.strokeDasharray||"6,3"}),e.label&&(0,il.jsx)("text",{x:S+4,y:A-4,fill:C,fontSize:11,children:e.label})]},"ann-"+r)}case"band":{const t=n.scales?.y??n.scales?.value,s=t?.(e.y0)??0,a=t?.(e.y1)??(n.height||0),l=_o(e.fill,"ann-"+r,"var(--semiotic-primary, #6366f1)");return(0,il.jsxs)("g",{opacity:e.opacity,children:[l.def&&(0,il.jsx)("defs",{children:l.def}),(0,il.jsx)("rect",{x:0,y:Math.min(s,a),width:n.width||0,height:Math.abs(a-s),fill:l.fill,fillOpacity:e.fillOpacity||.1}),e.label&&(0,il.jsx)(ol,{x:(n.width||0)-4,y:(o=s,i=a,Math.max(Math.min(o,i),0)+16),textAnchor:"end",fill:e.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:e.label,background:e.labelBackground??"halo"})]},"ann-"+r)}case"x-band":{const t=n.scales?.x??n.scales?.time,o=null!=e.x0&&t?t(e.x0):null,i=null!=e.x1&&t?t(e.x1):null;if(null==o||null==i)return null;const s=_o(e.fill||e.color,"ann-"+r,"var(--semiotic-primary, #6366f1)");return(0,il.jsxs)("g",{opacity:e.opacity,children:[s.def&&(0,il.jsx)("defs",{children:s.def}),(0,il.jsx)("rect",{x:Math.min(o,i),y:0,width:Math.abs(i-o),height:n.height||0,fill:s.fill,fillOpacity:e.fillOpacity??.1}),e.label&&(0,il.jsx)(ol,{x:Math.min(o,i)+4,y:16,textAnchor:"start",fill:e.color||"var(--semiotic-primary, #6366f1)",fontSize:11,fontWeight:"bold",text:e.label,background:e.labelBackground??"halo"})]},"ann-"+r)}case"envelope":{const t=n.data||[];if(2>t.length)return null;const o=n.xAccessor||"x",i=n.scales?.x??n.scales?.time,s=n.scales?.y??n.scales?.value;if(!i||!s)return null;const a=e.upperAccessor||"upperBounds",l=e.lowerAccessor||"lowerBounds",c=e.filter,d=t.filter(e=>null!=e[a]&&null!=e[l]&&!(c&&!c(e))).sort((e,t)=>e[o]-t[o]);if(2>d.length)return null;const u=sl[n.curve||"linear"]||Ua.curveLinear,p=(0,Ua.area)().x(e=>i(e[o])).y0(e=>s(e[l])).y1(e=>s(e[a])).curve(u)(d);if(!p)return null;const y=e.fill||"#6366f1";return(0,il.jsxs)("g",{children:[(0,il.jsx)("path",{d:p,fill:y,fillOpacity:e.fillOpacity??.15,stroke:"none"}),e.label&&d.length>0&&(0,il.jsx)("text",{x:i(d[d.length-1][o])+4,y:s(d[d.length-1][a])-4,fill:y,fontSize:11,children:e.label})]},"ann-"+r)}case"anomaly-band":{const t=n.data||[];if(2>t.length)return null;const o=n.yAccessor||"y",i=n.scales?.x??n.scales?.time,s=n.scales?.y??n.scales?.value;if(!i||!s)return null;const a=t.map(e=>e[o]).filter(e=>null!=e&&isFinite(e));if(2>a.length)return null;const l=a.reduce((e,t)=>e+t,0)/a.length,c=a.reduce((e,t)=>e+(t-l)**2,0)/a.length,d=Math.sqrt(c),u=e.threshold??2,p=l-u*d,y=!1!==e.showBand,h=e.fill||"#6366f1",f=e.fillOpacity??.1,m=e.anomalyColor||"#ef4444",b=e.anomalyRadius??6,g=s(l+u*d),v=s(p),x=t.filter(e=>{const t=e[o];return null!=t&&Math.abs(t-l)>u*d});return(0,il.jsxs)("g",{children:[y&&(0,il.jsx)("rect",{x:0,y:Math.min(g,v),width:n.width||0,height:Math.abs(v-g),fill:h,fillOpacity:f}),x.map((e,t)=>{const r=Xa(e,n),o=Za(e,n);return null==r||null==o?null:(0,il.jsx)("circle",{cx:r,cy:o,r:b,fill:m,fillOpacity:.7,stroke:m,strokeWidth:1.5},"anomaly-"+t)}),e.label&&(0,il.jsx)("text",{x:(n.width||0)-4,y:Math.min(g,v)-4,textAnchor:"end",fill:h,fontSize:11,children:e.label})]},"ann-"+r)}case"forecast":{const t=n.data||[];if(3>t.length)return null;const o=n.xAccessor||"x",i=n.yAccessor||"y",s=n.scales?.x??n.scales?.time,a=n.scales?.y??n.scales?.value;if(!s||!a)return null;const l=t.map(e=>[e[o],e[i]]).filter(e=>null!=e[0]&&null!=e[1]&&isFinite(e[0])&&isFinite(e[1])).sort((e,t)=>e[0]-t[0]);if(3>l.length)return null;let c;if("polynomial"===(e.method||"linear")){const t=Qa(l,e.order||2).equation;c=e=>t.reduce((t,r,n)=>t+r*Math.pow(e,n),0)}else{const e=l.length;let t=0,r=0,n=0,o=0;for(const[e,i]of l)t+=e,r+=i,n+=e*e,o+=e*i;const i=e*n-t*t;if(1e-12>Math.abs(i))return null;const s=(e*o-t*r)/i,a=(r-s*t)/e;c=e=>a+s*e}const d=l.length,u=l.map(([e,t])=>t-c(e)),p=u.reduce((e,t)=>e+t*t,0),y=Math.sqrt(p/Math.max(d-2,1)),h=l.reduce((e,t)=>e+t[0],0)/d,f=l.reduce((e,t)=>e+(t[0]-h)**2,0),m=e.confidence??.95,b=.99>m?.95>m?.9>m?1:1.645:1.96:2.576,g=e.steps??5,v=l[d-1][0],x=(v-l[0][0])/Math.max(d-1,1),k=[];for(let e=1;g>=e;e++)k.push(v+e*x);const C=[];for(const e of k){const t=c(e),r=y*Math.sqrt(1+1/d+(f>0?(e-h)**2/f:0))*b;C.push({x:e,yCenter:t,yUpper:t+r,yLower:t-r})}const w=`M${C.map(e=>`${s(e.x)},${a(e.yUpper)}`).join(" L")} L${C.slice().reverse().map(e=>`${s(e.x)},${a(e.yLower)}`).join(" L")} Z`,S=C.map(e=>`${s(e.x)},${a(e.yCenter)}`).join(" "),A=`${s(v)},${a(c(v))}`,j=e.strokeColor||"#6366f1";return(0,il.jsxs)("g",{children:[(0,il.jsx)("path",{d:w,fill:e.fill||"#6366f1",fillOpacity:e.fillOpacity??.15,stroke:"none"}),(0,il.jsx)("polyline",{points:`${A} ${S}`,fill:"none",stroke:j,strokeWidth:e.strokeWidth??2,strokeDasharray:e.strokeDasharray??"6,3"}),e.label&&C.length>0&&(0,il.jsx)("text",{x:s(C[C.length-1].x)+4,y:a(C[C.length-1].yCenter)-4,fill:j,fontSize:11,children:e.label})]},"ann-"+r)}case"widget":{let o,i;if(null!=e.px&&null!=e.py)o=e.px,i=e.py;else{const t=el(e,r,n);if(!t)return null;o=t.x,i=t.y}if(!tl(o,i,n))return null;const s=e.dx??0,a=e.dy??0,l=e.width??32,c=e.height??32,d=e.content??(0,il.jsx)("span",{style:{fontSize:18,cursor:"default"},title:e.label||"Info",children:"ℹ️"});return(0,il.jsx)("foreignObject",{x:o+s-l/2,y:i+a-c/2,width:l,height:c,style:{overflow:"visible",pointerEvents:"auto"},children:(0,il.jsx)("div",{...Ye(e,t),style:{width:l,height:c,display:"flex",alignItems:"center",justifyContent:"center"},children:d})},"ann-"+r)}case"text":{const t=el(e,r,n);if(!t)return null;const{x:o,y:i}=t,s=o+(e.dx||0),a=i+(e.dy||0),l=e.color||"var(--semiotic-text, #333)",c=(0,il.jsx)("text",{x:s,y:a,fill:l,fontSize:e.fontSize||11,opacity:e.opacity,strokeDasharray:e.strokeDasharray,dominantBaseline:"middle",style:{fontFamily:"inherit"},children:e.label});return!0!==e._redundantConnector?Ea.cloneElement(c,{key:"ann-text-"+r}):(0,il.jsxs)("g",{opacity:e.opacity,strokeDasharray:e.strokeDasharray,children:[(0,il.jsx)("line",{x1:o,y1:i,x2:s,y2:a,stroke:l,strokeWidth:1,strokeOpacity:.5,style:{pointerEvents:"none"}}),Ea.cloneElement(c,{opacity:void 0,strokeDasharray:void 0})]},"ann-text-"+r)}case"category-highlight":{const t=e.category;if(null==t)return null;const o=e=>"function"==typeof e&&"function"==typeof e.bandwidth,i=n.scales?.o,s=n.scales?.x,a=n.scales?.y,l=o(i)?i:o(s)?s:o(a)?a:null;if(!l)return null;const c=l(t+"");if(null==c)return null;const d=l.bandwidth(),u=e.color||"var(--semiotic-primary, #4589ff)",p=e.opacity??.15,y=e.label;return(0,il.jsxs)("g",(n.projection?"vertical"===n.projection:l===s)?{children:[(0,il.jsx)("rect",{x:c,y:0,width:d,height:n.height||0,fill:u,fillOpacity:p}),y&&(0,il.jsx)(ol,{x:c+d/2,y:16,textAnchor:"middle",fill:u,fontSize:12,fontWeight:"bold",text:y,background:e.labelBackground??"none"})]}:{children:[(0,il.jsx)("rect",{x:0,y:c,width:n.width||0,height:d,fill:u,fillOpacity:p}),y&&(0,il.jsx)(ol,{x:12,y:c+d/2,dominantBaseline:"middle",fill:u,fontSize:12,fontWeight:"bold",text:y,background:e.labelBackground??"none"})]},"ann-"+r)}default:return null}var o,i,s}}(0,w),[w]),M=j?function(e,t,r,n){const o=[];return e.forEach((e,i)=>{let s;if(r){const o=r(e,i,n);s=null!=o?o:t(e,i,n)}else s=t(e,i,n);s&&o.push({node:s,annotation:e})}),function(e){const t=e.map((e,t)=>{return{p:e,i:t,emphasis:(r=e.annotation,"primary"===r?.emphasis||"secondary"===r?.emphasis?r.emphasis:null),confidence:Ta(e.annotation),readingOrder:null,rank:1};var r}),r=t.some(e=>null!=e.emphasis||null!=e.confidence),n=e.some(e=>La(e.annotation)),o=e.some(e=>null!=Ra(e.annotation)),i=e.some(e=>"layer"===Ra(e.annotation));if(!r&&!n&&!o)return e.map(e=>e.node);const s=t.filter(e=>null==e.emphasis&&null!=e.confidence).slice().sort((e,t)=>(t.confidence??0)-(e.confidence??0)||e.i-t.i);s.forEach((e,t)=>{e.readingOrder=t,e.rank=2-t/Math.max(1,s.length)});for(const e of t)e.emphasis&&(e.rank=Pa[e.emphasis]);const a=t.sort((e,t)=>e.rank-t.rank||e.i-t.i).map(e=>{const{p:t,i:r,emphasis:n,readingOrder:o}=e,i=La(t.annotation);let s=t.node;if("primary"===n||"secondary"===n||null!=o){const e=null==n&&null!=o;s=(0,Wa.jsx)("g",{className:e?"annotation-emphasis annotation-emphasis--inferred":"annotation-emphasis annotation-emphasis--"+n,..."secondary"===n?{opacity:.6,fontSize:"0.88em"}:{},...e?{opacity:Fa(o),"data-annotation-reading-order":o}:{},children:t.node},"annotation-emphasis-"+r)}const a=Ra(t.annotation);return a&&(s=(0,Wa.jsx)("g",{className:"annotation-cohesion--"+a,children:s},"annotation-cohesion-"+r)),i&&(s=(0,Wa.jsx)("g",{className:"annotation-deferred","data-annotation-disclosure":"deferred",children:s},"annotation-deferred-"+r)),s});return n&&a.unshift((0,Wa.jsx)("style",{children:Ia},"annotation-disclosure-style")),i&&a.unshift((0,Wa.jsx)("style",{children:".annotation-cohesion--layer text,.annotation-cohesion--layer tspan{fill:var(--semiotic-annotation-color,var(--semiotic-text-secondary,#666));font-style:italic}"},"annotation-cohesion-style")),a}(o)}(j,$,k,A):null,B=!0===j?.some(e=>"widget"===e.type&&!0===e._annotationDeferred);return(0,kl.jsxs)(kl.Fragment,{children:[B?(0,kl.jsx)("style",{children:Ia},"physics-annotation-disclosure-style"):null,(0,kl.jsxs)("svg",{className:"stream-physics-frame__overlay","data-testid":"stream-physics-overlay",role:"presentation",width:n,height:o,style:{position:"absolute",top:0,left:0,pointerEvents:"none",overflow:"visible"},children:[(0,kl.jsxs)("g",{transform:`translate(${i.left},${i.top})`,children:[M,C]}),s&&"string"==typeof s?(0,kl.jsx)("text",{x:n/2,y:16,textAnchor:"middle",fontWeight:600,fill:"var(--semiotic-text, #333)",className:"semiotic-chart-title",style:{fontSize:"var(--semiotic-title-font-size, 14px)"},children:s}):s?(0,kl.jsx)("foreignObject",{x:0,y:0,width:n,height:Math.max(i.top,28),children:s}):null,a?Ba({legend:a,totalWidth:n,totalHeight:o,margin:i,legendPosition:p,legendLayout:y,title:s,legendHoverBehavior:l,legendClickBehavior:c,legendHighlightedCategory:d,legendIsolatedCategories:u}):null]})]})}var Sl=2500;function Al(e){return"function"==typeof e}function jl(e){return void 0===e||!1===e||!Al(e.binAccessor)&&!Al(e.labelAccessor)&&!Al(e.valueAccessor)}function $l(e){if(void 0!==e){if(!1===e)return!1;if(!jl(e))throw new TypeError("Physics worker sediment config only supports string or numeric accessors");return{binAccessor:"string"==typeof e.binAccessor?e.binAccessor:void 0,labelAccessor:"string"==typeof e.labelAccessor?e.labelAccessor:void 0,valueAccessor:"string"==typeof e.valueAccessor||"number"==typeof e.valueAccessor?e.valueAccessor:void 0,retainBodyIds:e.retainBodyIds}}}function Ml(e){if(e)return{chartId:e.chartId,chartType:e.chartType,sensors:e.sensors}}function Bl(e){return function(e){return!Al(e?.timeAccessor)}(e)}function Wl(e={}){if(e.engine)throw new TypeError("Physics workers use the built-in kernel adapter");const{engine:t,observation:r,sediment:n,...o}=e;return{...o,observation:Ml(r),sediment:$l(n)}}var Pl={};function Il(){if("undefined"!=typeof DOMException)return new DOMException("Physics worker request aborted","AbortError");const e=Error("Physics worker request aborted");return e.name="AbortError",e}var Ll=class{constructor(e=function(){const e="string"==typeof Pl.url&&Pl.url?new URL("./physicsWorker.js",Pl.url):function(e){if("undefined"!=typeof __filename){const t=__filename.replace(/\\/g,"/"),r=t.startsWith("/")?t:"/"+t;return new URL("./"+e,"file:"+r)}throw Error("Cannot resolve module worker asset: "+e)}("physicsWorker.js");return new Worker(e,{type:"module",name:"semiotic-physics"})}()){this.nextRequestId=1,this.pending=new Map,this.worker=e,this.worker.onmessage=e=>{const t=e.data,r=this.pending.get(t.requestId);r&&(this.pending.delete(t.requestId),r.cleanup(),t.ok?r.resolve(t.payload):r.reject(function(e){const t=Error(e.error.message);return t.name=e.error.name??"Error",e.error.stack&&(t.stack=e.error.stack),t}(t)))},this.worker.onerror=e=>{this.rejectAll(Error(e.message||"Physics worker failed")),this.worker.terminate()}}request(e,t){if(t?.aborted)return Promise.reject(Il());const r=this.nextRequestId;this.nextRequestId+=1;const n={command:e,requestId:r};return new Promise((e,o)=>{const i=()=>{this.pending.delete(r),t?.removeEventListener("abort",i),o(Il())},s=()=>t?.removeEventListener("abort",i);this.pending.set(r,{cleanup:s,reject:o,resolve:e}),t?.addEventListener("abort",i,{once:!0});try{this.worker.postMessage(n)}catch(e){this.pending.delete(r),s(),o(e)}})}async init(e,t,r,n){if(!Bl(r))throw new TypeError("Physics worker spawn pacing only supports string time accessors");const o=await this.request({type:"init",config:Wl(e),initialSpawns:t,initialSpawnPacing:r},n);if("frame"!==o.type)throw Error("Physics worker returned a non-frame init response");return o.frame}async restore(e,t){const r=await this.request({type:"restore",snapshot:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame restore response");return r.frame}async initFromSnapshot(e,t,r){const n=await this.request({type:"init",config:Wl(e),snapshot:t},r);if("frame"!==n.type)throw Error("Physics worker returned a non-frame init response");return n.frame}async enqueue(e,t,r){if(!Bl(t))throw new TypeError("Physics worker spawn pacing only supports string time accessors");const n=await this.request({type:"enqueue",spawns:e,pacing:t},r);if("frame"!==n.type)throw Error("Physics worker returned a non-frame enqueue response");return n.frame}async tick(e,t){const r=await this.request({type:"tick",deltaSeconds:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame tick response");return r.frame}async settle(e,t){const r=await this.request({type:"settle",maxSteps:e},t);if("frame"!==r.type)throw Error("Physics worker returned a non-frame settle response");return r.frame}async snapshot(e){const t=await this.request({type:"snapshot"},e);if("snapshot"!==t.type)throw Error("Physics worker returned a non-snapshot response");return t.snapshot}async remove(e,t){const r=await this.request({type:"remove",ids:e},t);if("removed"!==r.type)throw Error("Physics worker returned a non-remove response");return{frame:r.frame,removed:r.removed}}terminate(){this.rejectAll(Error("Physics worker terminated")),this.worker.terminate()}rejectAll(e){for(const[t,r]of this.pending)this.pending.delete(t),r.cleanup(),r.reject(e)}};function Rl(e,t,r){const n=new Ps(e);return t?.length&&n.enqueue(t,r),n}function Tl(){return"undefined"!=typeof performance?performance.now():Date.now()}function Fl(e,t){return e||t?{x:(e?.x??0)+(t?.x??0),y:(e?.y??0)+(t?.y??0)}:null}var El=require("react");function Nl(){return"undefined"==typeof document||!document.hidden}var Ol=require("react/jsx-runtime"),Dl="var(--semiotic-focus, #005fcc)";function zl({active:e,hoverPoint:t,margin:r,size:n,shape:o="circle",width:i,height:s,pathData:a}){if(!e||!t)return null;const l=t.x+r.left,c=t.y+r.top;let d;if("geoarea"!==o&&"path"!==o||!a)if("rect"===o&&null!=i&&null!=s){const e=Math.max(i,4),t=Math.max(s,4);d=(0,Ol.jsx)("rect",{x:l-e/2-3,y:c-t/2-3,width:e+6,height:t+6,rx:3,fill:"none",stroke:Dl,strokeWidth:2,strokeDasharray:"4,2"})}else d=(0,Ol.jsx)("circle","wedge"===o?{cx:l,cy:c,r:12,fill:"none",stroke:Dl,strokeWidth:2.5,strokeDasharray:"6,3"}:{cx:l,cy:c,r:8,fill:"none",stroke:Dl,strokeWidth:2,strokeDasharray:"4,2"});else d=(0,Ol.jsx)("g",{transform:`translate(${r.left},${r.top})`,children:(0,Ol.jsx)("path",{d:a,fill:"none",stroke:Dl,strokeWidth:2.5,strokeDasharray:"6,3"})});return(0,Ol.jsx)("svg",{style:{position:"absolute",left:0,top:0,width:n[0],height:n[1],pointerEvents:"none",zIndex:2},"aria-hidden":"true",children:d})}var ql=require("react"),_l={sceneGeometry:0,layout:0,domain:0};function Hl(e){const{domain:t,layout:r,sceneGeometry:n}=e.revisions;return{domain:t,layout:r,sceneGeometry:n}}function Gl(e,t){return{sceneGeometry:Math.max(e.sceneGeometry,t.sceneGeometry),layout:Math.max(e.layout,t.layout),domain:Math.max(e.domain,t.domain)}}var Vl="production"!==process.env.NODE_ENV,Ul={revisions:_l,signature:"",sawSignals:!1,wasUnconsumed:!1,warnUnconsumed:!1},Yl=class{constructor(e="scene host"){this.hostName=e,this.lastConsumed=_l,this.lastObserved=_l,this.lastDuplicateWarning="",this.lastUnconsumedWarning=""}observeUpdateResult(e){Vl&&(this.lastObserved=Gl(this.lastObserved,Hl(e)))}beforeCompute(e,t){if(!Vl)return Ul;const r=Gl(Hl(e),this.lastObserved),n=function(e){return`${e.sceneGeometry}|${e.layout}|${e.domain}`}(r),o=!((i=r).sceneGeometry===(s=this.lastConsumed).sceneGeometry&&i.layout===s.layout&&i.domain===s.domain);var i,s;return{revisions:r,signature:n,sawSignals:e.changed.has("scene-geometry")||e.changed.has("layout")||e.changed.has("domain"),wasUnconsumed:o,warnUnconsumed:!t&&o&&this.lastUnconsumedWarning!==n}}afterCompute(e,t,r){if(Vl){if(t&&e.wasUnconsumed&&(this.lastConsumed=e.revisions),e.warnUnconsumed&&!t)return console.warn(`[semiotic] ${this.hostName} observed scene-affecting revisions without a scene rebuild: ${e.signature}.`),void(this.lastUnconsumedWarning=e.signature);t&&e.sawSignals&&!e.wasUnconsumed&&!r&&this.lastDuplicateWarning!==e.signature?(console.warn(`[semiotic] ${this.hostName} performed scene rebuild with unchanged scene revisions: ${e.signature}.`),this.lastDuplicateWarning=e.signature):t&&!e.sawSignals&&(this.lastDuplicateWarning="")}}},Ql=(0,ql.memo)(function({store:e,diagnostics:t}){return(0,ql.useEffect)(()=>{const r=()=>t.observeUpdateResult(e.getUpdateSnapshot());return r(),e.subscribeUpdateResult(r)},[t,e]),null}),Xl=(l(require("react")),l(require("react"))),Zl=(require("react/jsx-runtime"),Xl.createContext(null)),Kl=require("react/jsx-runtime"),Jl={position:"absolute",width:1,height:1,overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap",border:0};function ec({hoverPoint:e}){let t="";if(e){const r=e.data||e;t="object"==typeof r?"Data point: "+Object.entries(r).filter(([,e])=>"object"!=typeof e&&"function"!=typeof e).map(([e,t])=>`${e}: ${t}`).join(", "):"Data point: "+r}return(0,Kl.jsx)("div",{"aria-live":"polite","aria-atomic":"true",style:Jl,children:t})}var tc=require("react/jsx-runtime");function rc({summary:e}){return e?(0,tc.jsx)("div",{role:"note",style:Jl,children:e}):null}function nc({tableId:e}){return(0,tc.jsx)("a",{href:"#"+e,style:Jl,onClick:t=>{t.preventDefault();const r=document.getElementById(e);r&&requestAnimationFrame(()=>r.focus())},onFocus:e=>{Object.assign(e.currentTarget.style,{position:"absolute",width:"auto",height:"auto",overflow:"visible",clip:"auto",whiteSpace:"normal",padding:"4px 8px",background:"var(--semiotic-bg, #fff)",color:"var(--semiotic-text, #000)",border:"2px solid var(--semiotic-focus, #005fcc)",borderRadius:"4px",zIndex:"10",fontSize:"12px",top:"4px",left:"4px"})},onBlur:e=>{const t=e.currentTarget;t.removeAttribute("style"),Object.assign(t.style,Jl)},children:"Skip to data table"})}function oc(e,t,r){const n=function(e,t){if(null==t)return;const r=Vo(e,t,"");return""===r?void 0:r}(e,r.fill)??"#4e79a7",o=r.stroke,i=r.strokeWidth??0,s=r.opacity??1,a=r.fillOpacity??1,l=function(e,t){const r=t.mark;if(r)return r;const n=e.datum,o=n?.__physicsMark??n?.mark;return"circle"===o||"halo"===o||"faceted"===o||"pill"===o||"diamond"===o||"square"===o?o:"circle"===e.shape.type?"circle":"square"}(t,r),c="circle"===t.shape.type?r.r??t.shape.radius:Math.max(t.shape.width,t.shape.height)/2;if(e.save(),e.globalAlpha*=s,e.beginPath(),"pill"===l||"square"===l||"aabb"===t.shape.type){const r="pill"===l?2.4*c:"aabb"===t.shape.type?t.shape.width:1.7*c,n="pill"===l?1.35*c:"aabb"===t.shape.type?t.shape.height:1.7*c,o=t.x-r/2,i=t.y-n/2,s="pill"===l?n/2:Math.min(4,r/4);e.moveTo(o+s,i),e.arcTo(o+r,i,o+r,i+n,s),e.arcTo(o+r,i+n,o,i+n,s),e.arcTo(o,i+n,o,i,s),e.arcTo(o,i,o+r,i,s),e.closePath()}else if("diamond"===l)e.moveTo(t.x,t.y-c),e.lineTo(t.x+c,t.y),e.lineTo(t.x,t.y+c),e.lineTo(t.x-c,t.y),e.closePath();else if("faceted"===l){const r=6;for(let n=0;r>n;n+=1){const o=2*Math.PI*n/r-Math.PI/2,i=t.x+Math.cos(o)*c,s=t.y+Math.sin(o)*c;0===n?e.moveTo(i,s):e.lineTo(i,s)}e.closePath()}else e.arc(t.x,t.y,c,0,2*Math.PI);n&&(e.save(),e.globalAlpha*=a,e.fillStyle=n,e.fill(),e.restore()),"halo"===l&&(e.beginPath(),e.arc(t.x,t.y,1.35*c,0,2*Math.PI),e.strokeStyle=o??n,e.lineWidth=Math.max(1.5,i||1.5),e.globalAlpha*=.55,e.stroke(),e.globalAlpha/=.55),o&&i>0&&(e.strokeStyle=o,e.lineWidth=i,r.strokeDasharray&&e.setLineDash(r.strokeDasharray.split(/[,\s]+/).map(e=>Number(e)).filter(e=>Number.isFinite(e))),e.stroke()),e.restore()}function ic(e){return"circle"===e.shape.type?e.shape.radius:Math.max(e.shape.width,e.shape.height)/2}function sc(e){return e.sensorId??"stream-region-"+e.id}function ac(e){const t=sc(e),r={bodyFilter:e.bodyFilter,friction:e.friction,restitution:e.restitution};if("boundary"===e.collider&&"aabb"===e.shape.type){const n=e.colliderThickness??8,o=e.shape.x-e.shape.width/2,i=e.shape.x+e.shape.width/2,s=e.shape.y-e.shape.height/2,a=e.shape.y+e.shape.height/2;return[{...r,id:t+"-top",shape:{type:"segment",x1:o,y1:s,x2:i,y2:s,thickness:n}},{...r,id:t+"-right",shape:{type:"segment",x1:i,y1:s,x2:i,y2:a,thickness:n}},{...r,id:t+"-bottom",shape:{type:"segment",x1:i,y1:a,x2:o,y2:a,thickness:n}},{...r,id:t+"-left",shape:{type:"segment",x1:o,y1:a,x2:o,y2:s,thickness:n}}]}return e.collider?[{...r,id:t+"-collider",shape:e.shape}]:[]}function lc(e){if(e)return{activeRegionIds:Array.from(e.activeRegionIds),regionIds:Array.from(e.regionIds),charges:{...e.charges},attributes:{...e.attributes},energy:e.energy}}function cc(e,t){const r="function"==typeof e?e(t):e;if(!r)return null;const n=Number(r.x??0),o=Number(r.y??0);return Number.isFinite(n)||Number.isFinite(o)?{x:Number.isFinite(n)?n:0,y:Number.isFinite(o)?o:0}:null}function dc(e){if(!1===e.semanticItem)return null;const t=e.shape,r=e.semanticItem??{},n="aabb"===t.type?{id:e.id,label:e.label??e.id,description:e.description,group:e.kind??"region",x:t.x,y:t.y,width:t.width,height:t.height}:{id:e.id,label:e.label??e.id,description:e.description,group:e.kind??"region",x:(t.x1+t.x2)/2,y:(t.y1+t.y2)/2,pathData:`M ${t.x1} ${t.y1} L ${t.x2} ${t.y2}`};return{...n,...r,id:r.id??n.id}}function uc(e){return e.some(e=>null!=e.force||null!=e.damping||null!=e.impulseOnEnter||null!=e.impulseOnExit)}function pc(e,t){const r="function"==typeof e?e(t):e;if(!r)return null;const n=Number(r.x??0),o=Number(r.y??0);return Number.isFinite(n)||Number.isFinite(o)?{x:Number.isFinite(n)?n:0,y:Number.isFinite(o)?o:0}:null}var yc=[];function hc(e){const t=e.store.controls(),r=e.store.snapshot(),n=Math.max(0,e.result.steps*(r.config.fixedDt||1/60)),o=function(e,t,r,n){const o=Number.isFinite(n)?Math.max(0,n):0;if(0>=o||!uc(t))return!1;const i=new Map(t.map(e=>[e.id,e])),s=e.readBodies();let a=!1;for(const t of s){const n=r.get(t.id);if(!n||!n.activeRegionIds.size)continue;const s=lc(n);if(s)for(const r of n.activeRegionIds){const n=i.get(r);if(!n)continue;const l=cc(n.force,{body:t,region:n,regionState:s}),c=Number(n.damping??0),d=(l?.x??0)*o-(Number.isFinite(c)?t.vx*c*o:0),u=(l?.y??0)*o-(Number.isFinite(c)?t.vy*c*o:0);(d||u)&&(e.applyImpulse(t.id,d,u),a=!0)}}return a}(t,e.regionEffects,e.regionState,n),i=function(e,t,r,n,o,i){const s=Number.isFinite(i)?Math.max(0,i):0;if(0>=s||!t)return!1;const a=new Map(r.map(e=>[e.id,e])),l=e.readBodies();let c=!1;for(let r=0;l.length>r;r+=1){const i=l[r],d=n.get(i.id),u=lc(d);let p=yc;if(d&&d.activeRegionIds.size>0){const e=[];for(const t of d.activeRegionIds){const r=a.get(t);r&&e.push(r)}p=e}const y=pc(t,{body:i,bodies:l,index:r,regionState:u,regions:p,simulationState:o});if(!y)continue;const h=(y.x??0)*s,f=(y.y??0)*s;(h||f)&&(e.applyImpulse(i.id,h,f),c=!0)}return c}(t,e.bodyForces,e.regionEffects,e.regionState,r.simulationState,n);return e.composed&&e.composed.onTick(e.result,t,{dt:n,elapsed:e.result.elapsedSeconds,getRegionState:t=>lc(e.regionState.get(t))}),e.onTick?.(e.result,t),{regionEffectsApplied:o,bodyForcesApplied:i,snapshot:r}}function fc(e,t,r,n,o,i,s,a,l,c){const d=function(e,t){return!!t?.isActive&&(t.predicate?.(e)??!0)}(e,o),u={selected:d,simulationState:t,regionState:i,regions:s},p="function"==typeof r?r(e,u):r,y=s.reduce((t,r)=>r.bodyStyle?{...t,..."function"==typeof r.bodyStyle?r.bodyStyle(e,u):r.bodyStyle}:t,{}),h=d?"function"==typeof n?n(e,u):n:void 0;return{fill:c?.color??a,stroke:c?.stroke??l,strokeWidth:c?.strokeWidth??1,opacity:c?.opacity??.9,...p,...y,...h}}var mc=require("react"),bc=l(require("react")),gc=require("react/jsx-runtime"),vc={border:0,clip:"rect(0 0 0 0)",height:1,margin:-1,overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:1},xc="semiotic-accessible-data-table",kc=xc+" semiotic-accessible-data-table-hidden",Cc=xc+" semiotic-accessible-data-table-visible",wc={position:"absolute",top:0,left:0,right:0,zIndex:"var(--semiotic-data-table-z-index, var(--semiotic-overlay-z-index, 20))",padding:"14px 16px 12px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontFamily:"var(--semiotic-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif)",fontSize:13,lineHeight:1.5,color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",borderRadius:"var(--semiotic-border-radius, 0px) var(--semiotic-border-radius, 0px) 0 0"},Sc={marginBottom:8,paddingRight:28,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:12,letterSpacing:"0.01em"},Ac={position:"absolute",top:10,right:10,width:22,height:22,display:"flex",alignItems:"center",justifyContent:"center",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",cursor:"pointer",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",fontSize:13,lineHeight:1,padding:0,borderRadius:"var(--semiotic-border-radius, 4px)"},jc={width:"100%",borderCollapse:"collapse",fontSize:12,marginTop:4,fontVariantNumeric:"tabular-nums"},$c={textAlign:"left",padding:"5px 10px",borderBottom:"2px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",fontWeight:600,fontSize:11,textTransform:"uppercase",letterSpacing:"0.04em",color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))"},Mc={padding:"4px 10px",borderBottom:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))"},Bc={textAlign:"left",fontSize:11,color:"var(--semiotic-data-table-muted-text, var(--semiotic-text-secondary, #666))",marginBottom:4,fontStyle:"italic"},Wc={marginTop:8,padding:"4px 10px",fontSize:12,cursor:"pointer",border:"1px solid var(--semiotic-data-table-border, var(--semiotic-border, #e0e0e0))",borderRadius:"var(--semiotic-border-radius, 4px)",background:"var(--semiotic-data-table-bg, var(--semiotic-surface, var(--semiotic-bg, #fff)))",color:"var(--semiotic-data-table-text, var(--semiotic-text, #333))",fontFamily:"inherit"};function Pc(e){return null==e?null:"string"==typeof e||"number"==typeof e||"boolean"==typeof e?e+"":null}function Ic(e){return{__semioticHoverData:!0,body:e,data:e.datum??e,id:e.id,type:"body",x:e.x,y:e.y}}function Lc(e){if("circle"===e.shape.type){const t=Math.max(4,2*e.shape.radius);return{height:t,shape:"circle",width:t}}return{height:e.shape.height,shape:"rect",width:e.shape.width}}function Rc(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if("string"==typeof e||"number"==typeof e||"boolean"==typeof e)return e+""}return e.id}function Tc(e){const t=Fc(e.datum??e);return t.length?t.map(([e,t])=>`${e}: ${t}`).join(", "):"Physics body "+e.id}function Fc(e){return e&&"object"==typeof e?Object.entries(e).map(([e,t])=>{if(e.startsWith("_"))return null;const r=Pc(t);return null==r?null:[e,r]}).filter(e=>null!=e).slice(0,8):[]}function Ec({hover:e}){const t=Fc(e.data);return(0,gc.jsxs)("div",{className:"semiotic-tooltip",style:ca,children:[(0,gc.jsx)("div",{style:{fontWeight:700,marginBottom:t.length?4:0},children:e.id}),t.map(([e,t])=>(0,gc.jsxs)("div",{children:[(0,gc.jsxs)("span",{style:{opacity:.72},children:[e,": "]}),(0,gc.jsx)("span",{children:t})]},e))]})}function Nc(e){return e.datum&&"object"==typeof e.datum?Object.entries(e.datum).map(([e,t])=>{const r=Pc(t);return null==r?null:`${e}: ${r}`}).filter(e=>null!=e).slice(0,8).join(", "):""}function Oc(e){const t=[`${e.length} semantic item${1===e.length?"":"s"}.`],r=new Map;for(const t of e)t.group&&r.set(t.group,(r.get(t.group)??0)+1);return r.size&&t.push(Array.from(r).map(([e,t])=>`${e}: ${t}`).join(", ")),t.join(" ")}function Dc(e){const{chartTitle:t,items:r,tableId:n}=e,[o,i]=bc.useState(!1),[s,a]=bc.useState(5),l=Xl.useContext(Zl),c=l?.visible??!1,d=o||c,u=bc.useRef(null),p="Data summary for "+(t??"physics chart");bc.useEffect(()=>{d||a(5)},[d]);const y=bc.useCallback(e=>{e.target===e.currentTarget&&(o||c||i(!0))},[o,c]),h=bc.useCallback(e=>{c||u.current?.contains(e.relatedTarget)||i(!1)},[c]);if(!r.length)return(0,gc.jsx)("span",{id:n,tabIndex:-1,style:vc});if(!d)return(0,gc.jsx)("div",{id:n,className:kc,role:"region","aria-label":p,tabIndex:-1,style:vc,onFocus:y,children:(0,gc.jsxs)("button",{type:"button",onClick:()=>i(!0),children:["View data summary (",r.length," semantic items)"]})});const f=Math.min(s,r.length),m=r.slice(0,f),b=r.length-f;return(0,gc.jsxs)("div",{ref:u,id:n,className:Cc,role:"region","aria-label":p,tabIndex:-1,onBlur:h,style:wc,children:[(0,gc.jsx)("button",{type:"button",className:"semiotic-accessible-data-table-close","aria-label":"Close data summary",onClick:()=>{c&&l&&l.setVisible(!1),i(!1)},style:Ac,children:"×"}),(0,gc.jsx)("div",{className:"semiotic-accessible-data-table-summary",role:"note",style:Sc,children:Oc(r)}),(0,gc.jsxs)("table",{className:"semiotic-accessible-data-table-table",role:"table","aria-label":"Semantic items for "+(t??"physics chart"),style:jc,children:[(0,gc.jsx)("caption",{className:"semiotic-accessible-data-table-caption",style:Bc,children:b>0?`First ${f} of ${r.length} semantic items`:`All ${r.length} semantic items`}),(0,gc.jsx)("thead",{children:(0,gc.jsxs)("tr",{children:[(0,gc.jsx)("th",{scope:"col",style:$c,children:"Item"}),(0,gc.jsx)("th",{scope:"col",style:$c,children:"Description"}),(0,gc.jsx)("th",{scope:"col",style:$c,children:"Group"}),(0,gc.jsx)("th",{scope:"col",style:$c,children:"Position"}),(0,gc.jsx)("th",{scope:"col",style:$c,children:"Data"})]})}),(0,gc.jsx)("tbody",{children:m.map((e,t)=>(0,gc.jsxs)("tr",{children:[(0,gc.jsx)("th",{scope:"row",style:Mc,children:e.label}),(0,gc.jsx)("td",{style:Mc,children:e.description??e.label}),(0,gc.jsx)("td",{style:Mc,children:e.group??""}),(0,gc.jsxs)("td",{style:Mc,children:[Math.round(e.x),", ",Math.round(e.y)]}),(0,gc.jsx)("td",{style:Mc,children:Nc(e)})]},e.id??`${e.label}-${t}`))})]}),b>0?(0,gc.jsxs)("button",{type:"button",className:"semiotic-accessible-data-table-show-more",onClick:()=>a(e=>e+25),style:Wc,children:["Show ",Math.min(25,b)," more"," ",1===b?"row":"rows"," (",b," remaining)"]}):null]})}Ec.ownsChrome=!0;var zc=require("react/jsx-runtime"),qc=[640,360],_c={top:0,right:0,bottom:0,left:0},Hc=new Set(["ArrowRight","ArrowLeft","ArrowUp","ArrowDown","Home","End","PageUp","PageDown"]),Gc="StreamPhysicsFrame",Vc=(0,Ls.memo)((0,Ls.forwardRef)(function(e,t){const{accessibleTable:r=!0,annotations:n,onAnnotationActivate:o,autoPlaceAnnotations:i,background:s,backgroundGraphics:a,bodySemanticItemLimit:l=200,bodySemanticItems:c=!1,bodySemanticUpdateMs:d=200,bodyForces:u,bodyStyle:p,chartId:y,className:h,frameScheduler:f,clock:m,random:b,seed:g,color:v,config:x,controllers:k,continuous:C=!1,description:w,emphasis:S,chartMode:A,enableHover:j=!0,foregroundGraphics:$,hoverRadius:M=16,initialSpawns:B,initialSpawnPacing:W,legend:P,legendClickBehavior:I,legendHighlightedCategory:L,legendHoverBehavior:R,legendIsolatedCategories:T,legendLayout:F,legendPosition:E,margin:N,onClick:O,onObservation:D,onRegionEvent:z,onSimulationExecutionChange:q,onBodyHover:_,onBodyPointerDown:H,onSemanticItemActivate:G,onSemanticItemFocus:V,onTick:U,opacity:Y,paused:Q=!1,regionEffects:X=[],responsiveHeight:Z,responsiveWidth:K,selectedBodyStyle:J={stroke:"#111827",strokeWidth:2,opacity:1},selection:ee,semanticItems:te=[],simulationExecution:re="auto",size:ne=qc,stroke:oe,strokeWidth:ie,summary:se,suspendWhenHidden:ae=!0,svgAnnotationRules:le,title:ce,tooltipContent:de,workerBodyThreshold:ue=Sl,renderBody:pe,beforePaint:ye,afterPaint:he}=e,fe=Is.useMemo(()=>({color:v,stroke:oe,strokeWidth:ie,opacity:Y}),[v,Y,oe,ie]),me=(0,Ls.useRef)(D);me.current=D;const be=(0,Ls.useRef)(y);be.current=y;const ge=(0,Ls.useRef)(new Map),ve=(0,Ls.useRef)(X);ve.current=X;const xe=(0,Ls.useRef)(u);xe.current=u;const ke=(0,Ls.useRef)(U);ke.current=U;const Ce=Is.useMemo(()=>function(e){if(!e?.length)return null;const t=e.slice(),r=t.some(e=>!1!==e.continuous);return{controllers:t,continuous:r,onTick:(e,r,n)=>{const o={result:e,controls:r,dt:n.dt,elapsed:n.elapsed,getRegionState:n.getRegionState};for(const e of t)e.tick(o)},bodyForce:e=>{let r=null;for(const n of t)n.bodyForce&&(r=Fl(r,n.bodyForce(e)));return r}}}(k),[k]),we=(0,Ls.useRef)(Ce);we.current=Ce;const Se=C||!!Ce?.continuous,Ae=(0,Ls.useRef)(Se);Ae.current=Se;const je=Is.useMemo(()=>{if(!u&&!Ce?.bodyForce)return u;if(!Ce?.bodyForce)return u;if(!u)return Ce.bodyForce;const e=Ce.bodyForce;return t=>{const r="function"==typeof u?u(t):u,n="function"==typeof e?e(t):e;return r||n?{x:(r?.x??0)+(n?.x??0),y:(r?.y??0)+(n?.y??0)}:null}},[u,Ce]);xe.current=je;const $e=Is.useMemo(()=>new Map(X.map(e=>[sc(e),e])),[X]),Me=Is.useMemo(()=>new Map(X.map(e=>[e.id,e])),[X]),Be=Is.useMemo(()=>X.map(dc).filter(e=>null!=e),[X]),[We,Pe]=Is.useState([]),Ie=Is.useMemo(()=>We.length||Be.length?[...te,...We,...Be]:te,[We,Be,te]),Le=Is.useMemo(()=>uc(X),[X]),Re=!!je,Te=(0,Ls.useRef)(null),Fe=(0,Ls.useRef)(m??Tl);Fe.current=m??Tl;const Ee=(0,Ls.useCallback)((e,t,r)=>{const n=Te.current;if(!n||!r)return!1;const o=n.readBodies().find(t=>t.id===e),i=lc(ge.current.get(e));if(!o||!i)return!1;const s=cc(r,{body:o,region:t,regionState:i});return!(!s||!s.x&&!s.y||(n.applyImpulse(e,s.x??0,s.y??0),0))},[]),Ne=(0,Ls.useCallback)((e,t,r)=>{if(!r.bodyId)return;const n=lc(ge.current.get(r.bodyId));if(!n)return;const o={bodyId:r.bodyId,datum:r.datum,observation:r,region:t,regionState:n,type:e};"region-enter"===e?t.onEnter?.(o):t.onExit?.(o),z?.(o)},[z]),Oe=(0,Ls.useCallback)(e=>{const t=e.sensorId?$e.get(e.sensorId):void 0;if(!t||!e.bodyId)return;const r=function(e,t){let r=e.get(t);return r||(r={activeRegionIds:new Set,attributes:{},charges:{},energy:0,regionIds:new Set},e.set(t,r)),r}(ge.current,e.bodyId),n=Te.current?.readBodies().find(t=>t.id===e.bodyId),o=lc(r),i=n&&o?{body:n,region:t,regionState:o}:null;if("physics-proximity-enter"===e.type){if(r.activeRegionIds.add(t.id),r.regionIds.add(t.id),r.energy+=t.energyDelta??0,i){!function(e,t,r){const n="function"==typeof e.attributes?e.attributes(t):e.attributes;n&&(r.attributes={...r.attributes,...n})}(t,i,r);const e=function(e,t){return void 0!==e.charge?"function"==typeof e.charge?e.charge(t):e.charge:"charge-gate"===e.kind?1:void 0}(t,i);void 0!==e&&(r.charges[t.id]=e)}Ee(e.bodyId,t,t.impulseOnEnter),Ne("region-enter",t,e)}else"physics-proximity-exit"===e.type&&(r.activeRegionIds.delete(t.id),Ee(e.bodyId,t,t.impulseOnExit),Ne("region-exit",t,e))},[Ee,Ne,$e]),De=Is.useMemo(()=>{if(!n?.length)return[];const e=n.filter(e=>"barrier"===e.physics||"sensor"===e.physics);return e.length?di(e,{idPrefix:y?y+"-ann":"physics-ann",plotBounds:{x:0,y:0,width:ne?.[0]??qc[0],height:ne?.[1]??qc[1]}}):[]},[n,y,ne]),ze=Is.useMemo(()=>{const e=void 0===g||void 0!==x?.kernel?.seed?x:{...x,kernel:{...x?.kernel,seed:g}},t=X.flatMap(e=>[{id:sc(e),sensor:!0,shape:e.shape,bodyFilter:e.bodyFilter,friction:e.friction,restitution:e.restitution},...ac(e)]),r=Object.fromEntries(X.map(e=>[sc(e),{binId:e.binId??e.id,enterType:"physics-proximity-enter",exitType:"physics-proximity-exit"}])),n=e?.observation,o=X.length>0;return o||t.length>0||De.length>0||null!=y||n?{...e,colliders:[...e?.colliders??[],...t,...De],observation:{...n,chartId:y??n?.chartId,chartType:n?.chartType??Gc,sensors:{...n?.sensors??{},...r},onObservation:e=>{o&&Oe(e),n?.onObservation?.(e)}}}:e},[De,y,x,Oe,X,g]);if(!Te.current){const e=Rl(ze,B,W);e.setPaused(Q),ae&&e.setVisible(Nl()),Te.current=e}const qe=(0,Ls.useRef)(-1),_e=(0,Ls.useRef)(null),He=(0,Ls.useRef)(!0),Ge=(0,ql.useRef)(new Yl("StreamPhysicsFrame")),Ve=(0,Ls.useRef)(""),Ue=(0,Ls.useId)().replace(/:/g,""),Ye=(0,Ls.useRef)(!1),Qe=(0,Ls.useRef)(!1),Xe=(0,Ls.useRef)(0),Ze=(0,Ls.useRef)(!1),Ke=(0,Ls.useRef)(null),Je=(0,Ls.useRef)(!1),et=Ks({sizeProp:ne,responsiveWidth:K,responsiveHeight:Z,userMargin:N,marginDefault:_c,foregroundGraphics:$,backgroundGraphics:a,frameScheduler:f,clock:m,random:b,seed:g,paused:Q,suspendWhenHidden:ae}),{margin:tt,rafRef:rt,reducedMotionRef:nt,renderFnRef:ot,cancelRender:it,resolvedBackground:st,resolvedForeground:at,responsiveRef:lt,scheduleRender:ct,size:dt,frameRuntime:ut}=et,pt=(0,Ls.useRef)(ut.now);pt.current=ut.now;const yt=function(){const[e,t]=(0,Js.useState)(!1);return ea(()=>{t(!0)},[]),e}(),ht=function(){const e=(0,Js.useSyncExternalStore)(ta,ra,na);return(0,Js.useRef)(e).current}(),[ft,mt]=Is.useState(null),[bt,gt]=Is.useState(null),vt=(0,Ls.useRef)(null),xt=(0,Ls.useRef)(0),kt=(0,Ls.useRef)(new Map),Ct=Ue+"-physics-live",wt=(0,Ls.useCallback)((e,t,r=!1)=>{if(!c)return void Pe(e=>e.length?[]:e);const n=pt.current();if(!r&&d>0&&d>n-xt.current)return;xt.current=n;const o=function(e,t,r,n){if(!r)return[];const o=Math.max(0,Math.floor(n));if(!o)return[];const i=[];for(let n=0;e.length>n&&o>i.length;n+=1){const o=e[n],s="function"==typeof r?r(o,{index:n,simulationState:t}):void 0;if(!1===s)continue;const a=Lc(o);i.push({datum:o.datum??o,description:Tc(o),group:"body",label:Rc(o),...a,...s??{},bodyId:s?.bodyId??o.id,id:s?.id??"body:"+o.id,x:s?.x??o.x,y:s?.y??o.y})}return i}(e,t,c,l);Pe(e=>function(e,t){if(e.length!==t.length)return!0;for(let r=0;e.length>r;r+=1){const n=e[r],o=t[r];if(n.id!==o.id||n.label!==o.label||n.description!==o.description||n.group!==o.group||n.bodyId!==o.bodyId||Math.round(n.x)!==Math.round(o.x)||Math.round(n.y)!==Math.round(o.y))return!0}return!1}(e,o)?o:e)},[l,c,d]),St=(0,Ls.useCallback)(e=>{if(!Ie.length)return;const t=Math.max(0,Math.min(e,Ie.length-1));qe.current=t;const r=Ie[t];if(vt.current=r.bodyId??null,mt(r),V?.(r),r.bodyId&&Te.current){const e=Te.current.readBodies().find(e=>e.id===r.bodyId);if(e){const t=Ic(e);gt(t),_?.(e,t)}}},[Ie,_,V]),At=(0,Ls.useCallback)(()=>{qe.current=-1,vt.current=null,mt(null),V?.(null)},[V]),jt=function({onObservationRef:e,chartIdRef:t,wallClockRef:r}){return(0,mc.useCallback)((n,o)=>{const i=e.current;if(!i)return;const s={timestamp:r.current(),chartType:"StreamPhysicsFrame",chartId:t.current};i("hover"===n||"click"===n?{...s,type:n,datum:o?.datum??{},x:o?.x??0,y:o?.y??0}:"focus"===n?{...s,type:n,datum:o?.datum??{},inputType:"touch"===o?.inputType?"pointer":o?.inputType??"keyboard"}:"activate"===n?{...s,type:n,datum:o?.datum??{},inputType:o?.inputType??"keyboard"}:{...s,type:n})},[t,e,r])}({onObservationRef:me,chartIdRef:be,wallClockRef:Fe}),$t=(0,Ls.useCallback)(()=>{gt(e=>e?(_?.(null,null),jt("hover-end"),null):e)},[jt,_]),Mt=(0,Ls.useCallback)(e=>{if(!j||!Te.current)return;const t=e.currentTarget.getBoundingClientRect(),r=Te.current.hitTest(e.clientX-t.left,e.clientY-t.top,M);if(!r)return void $t();const n=Ic(r);gt(e=>e&&e.id===n.id&&e.x===n.x&&e.y===n.y?e:(_?.(r,n),jt("hover",{datum:r.datum,x:r.x,y:r.y}),n))},[$t,jt,j,M,_]),Bt=(0,Ls.useCallback)(e=>{At();const t=Te.current,r=e.currentTarget.getBoundingClientRect(),n=e.clientX-r.left,o=e.clientY-r.top,i=t?t.hitTest(n,o,Math.max(16,M)):null;H?.(i,e),i?(jt("click",{datum:i.datum,x:i.x,y:i.y}),jt("activate",{datum:i.datum,inputType:"touch"===e.pointerType?"touch":"pointer"}),O?.(i.datum??null,{x:i.x,y:i.y,body:i})):(jt("click-end"),O?.(null,{x:n,y:o,body:null}),$t())},[$t,At,jt,M,H,O]);(0,Ls.useEffect)(()=>{if(!Ie.length)return void At();const e=qe.current;if(Ie.length>e){if(e>=0){const t=Ie[e];if(vt.current=t.bodyId??null,mt(e=>null!=e&&e.id===t.id&&Math.round(e.x)===Math.round(t.x)&&Math.round(e.y)===Math.round(t.y)?e:t),t.bodyId&&Te.current){const e=Te.current.readBodies().find(e=>e.id===t.bodyId);if(e){const t=Ic(e);gt(e=>e?.id===t.id&&Math.round(e.x)===Math.round(t.x)&&Math.round(e.y)===Math.round(t.y)?e:t)}}}}else St(Ie.length-1)},[Ie,At,St]),(0,Ls.useEffect)(()=>{j||$t()},[$t,j]);const Wt=(0,Ls.useCallback)(e=>{if(function(e){const t=e.target;return t instanceof Element&&t!==e.currentTarget&&null!=t.closest("button, a[href], input, select, textarea, summary, [contenteditable='true'], [role='button'], [role='link'], [role='checkbox'], [role='radio'], [role='switch']")}(e))return;if(!Ie.length)return;if("Escape"===e.key)return e.preventDefault(),void At();if(("Enter"===e.key||" "===e.key)&&qe.current>=0){e.preventDefault();const t=Ie[qe.current];return jt("activate",{datum:t.datum??{id:t.id,label:t.label},inputType:"keyboard"}),void G?.(t)}if(!Hc.has(e.key))return;e.preventDefault();const t=qe.current;if(0>t){St(0);const e=Ie[0];return void jt("focus",{datum:e.datum??{id:e.id,label:e.label},inputType:"keyboard"})}const r=Math.max(1,Math.floor(.1*Ie.length));let n=t;if("Home"===e.key?n=0:"End"===e.key?n=Ie.length-1:"PageDown"===e.key?n=Math.min(Ie.length-1,t+r):"PageUp"===e.key?n=Math.max(0,t-r):"ArrowRight"===e.key||"ArrowDown"===e.key?n=Math.min(Ie.length-1,t+1):"ArrowLeft"!==e.key&&"ArrowUp"!==e.key||(n=Math.max(0,t-1)),St(n),n!==t){const e=Ie[n];jt("focus",{datum:e.datum??{id:e.id,label:e.label},inputType:"keyboard"})}},[At,jt,St,G,Ie]),[Pt,It]=Is.useState([]),Lt=(0,Ls.useRef)(0),Rt=!!n?.length&&n.some(e=>null!=e.pointId||null!=e.bodyId||"latest"===e.anchor),{canvasRef:Tt}=function(e,t){return function(e){const{cancelRender:t,dirtyRef:r,frameRuntime:n,manageFrameRuntime:o,scheduleRender:i}=e,s=(0,oa.useRef)(null),a=(0,oa.useRef)(null),l=(0,oa.useRef)(!1);return function(e){const{hydrated:t,wasHydratingFromSSR:r,storeRef:n,dirtyRef:o,renderFnRef:i,cancelRender:s,cleanup:a}=e;ea(()=>{t&&r&&n.current?.cancelIntroAnimation?.(),o.current=!0,s?.(),i.current()},[t,r]);const l=(0,Js.useRef)(a);l.current=a,(0,Js.useEffect)(()=>()=>l.current?.(),[])}({hydrated:e.hydrated,wasHydratingFromSSR:e.wasHydratingFromSSR,storeRef:e.storeRef,dirtyRef:e.dirtyRef,renderFnRef:e.renderFnRef,cancelRender:e.cancelRender,cleanup:e.cleanup}),(0,oa.useEffect)(()=>{if(!1!==o)return n.subscribe(()=>{n.isActive?(r.current=!0,i()):t()})},[t,r,n,o,i]),(0,oa.useEffect)(()=>{!l.current&&(l.current=!0,e.skipInitialCanvasPaintInvalidation)||(e.dirtyRef.current=!0,e.scheduleRender())},e.canvasPaintDependencies),{canvasRef:s,interactionCanvasRef:a}}({...t,renderFnRef:e.renderFnRef,scheduleRender:e.scheduleRender,cancelRender:e.cancelRender,frameRuntime:e.frameRuntime})}(et,{hydrated:yt,wasHydratingFromSSR:ht,storeRef:Te,dirtyRef:He,manageFrameRuntime:!1,skipInitialCanvasPaintInvalidation:!0,canvasPaintDependencies:[s,a,ct]}),Ft=(0,Ls.useCallback)(()=>{const e=Tt.current,t=Te.current;if(!e||!t)return;const r=Ge.current.beforeCompute(t.getLastUpdateResult(),!1),n=function(){if("undefined"==typeof window)return 1;const e=window.devicePixelRatio||1,t=function(){if("undefined"==typeof window)return!1;const e="function"==typeof window.matchMedia&&window.matchMedia("(pointer: coarse)").matches,t=768>Math.min(window.innerWidth||1/0,window.innerHeight||1/0);return e||t}()?2:3;return Math.max(1,Math.min(e,t))}(),o=function(e,t,r,n){const o=e.getContext("2d");if(!o)return null;const i=Math.round(t[0]*n),s=Math.round(t[1]*n),a=i/t[0],l=s/t[1],c=t[0]+"px",d=t[1]+"px";return e.style.width!==c&&(e.style.width=c),e.style.height!==d&&(e.style.height=d),e.width===i&&e.height===s||(e.width=i,e.height=s),o.setTransform(a,0,0,l,0,0),o.translate(r.left,r.top),o}(e,dt,tt,n);if(!o)return void Ge.current.afterCompute(r,!1,!1);const i=Ao(o);o.clearRect(-tt.left,-tt.top,dt[0],dt[1]),a||"transparent"===s||(o.fillStyle=s??i.background,o.fillRect(-tt.left,-tt.top,dt[0],dt[1]));const l=t.snapshot(),c=t.readBodies();if(wt(c,l.simulationState),Rt){const e=pt.current();if(e-Lt.current>=100){Lt.current=e;const t=function(e){return e.map(e=>({pointId:e.id,x:e.x,y:e.y,r:Math.max(1,Cl(e))}))}(c);It(e=>e.length===t.length&&e.every((e,r)=>e.pointId===t[r].pointId&&Math.round(e.x)===Math.round(t[r].x)&&Math.round(e.y)===Math.round(t[r].y))?e:t)}}ye&&(o.save(),ye(o,c),o.restore());for(const e of c){const t=ge.current.get(e.id),r=t?Array.from(t.activeRegionIds).map(e=>Me.get(e)).filter(e=>null!=e):[],n=fc(e,l.simulationState,p,J,ee,lc(t),r,i.primary,i.text,fe);pe?(o.save(),pe(o,e,n),o.restore()):oc(o,e,n)}he&&(o.save(),he(o,c),o.restore()),function(e,t,r){let n=!1;for(const[o,i]of t){const s=Math.min(1,Math.max(0,(r-i.startedAt)/i.durationMs));if(s>=1){t.delete(o);continue}n=!0;const a=1-Math.pow(1-s,3),{body:l}=i,c=i.radius+28*a,d=1-s;e.save(),e.globalAlpha*=d,e.strokeStyle=i.color,e.fillStyle=i.color,e.lineWidth=2.4*d+.4,e.beginPath(),e.arc(l.x,l.y,c,0,2*Math.PI),e.stroke(),e.globalAlpha*=.18,e.beginPath(),e.arc(l.x,l.y,.52*c,0,2*Math.PI),e.fill(),e.restore(),e.save(),e.globalAlpha*=d,e.strokeStyle=i.color,e.lineWidth=1.8;for(let t=0;8>t;t+=1){const r=t*(Math.PI/4)+1.4*s,n=i.radius+5+12*a,o=i.radius+12+34*a;e.beginPath(),e.moveTo(l.x+Math.cos(r)*n,l.y+Math.sin(r)*n),e.lineTo(l.x+Math.cos(r)*o,l.y+Math.sin(r)*o),e.stroke()}e.restore()}}(o,kt.current,pt.current()),Ge.current.afterCompute(r,!0,!1),He.current=!1},[Tt,Ge,dt,tt,a,s,wt,Rt,ye,he,p,J,ee,fe,pe,Me]),Et=(0,Ls.useCallback)((e,t)=>{const r=Te.current,n=`${re}:${e}:${t??""}`;Ve.current!==n&&(Ve.current=n,q?.({execution:e,liveBodies:r?.liveBodyCount()??0,queuedBodies:r?.queueSize()??0,reason:t,requested:re}))},[q,re]),Nt=(0,Ls.useCallback)((e,t=!0)=>{Xe.current+=1,Ye.current=!1,Ze.current=!1,Je.current=!1,Ke.current?.terminate(),Ke.current=null,t&&Et("sync",e)},[Et]),Ot=(0,Ls.useCallback)(()=>yt?"undefined"==typeof window||"undefined"==typeof Worker?"worker unavailable":Le?"runtime region effects require sync":Re?"body forces require sync":Ce?"physics controllers require sync":function(e){return!e||!e.engine&&jl(e.sediment)&&(!(t=e.colliders)||t.every(e=>{const t=e.bodyFilter;return!t||"function"!=typeof t}));var t}(ze??{})?Bl(W)?Qe.current?"worker fallback":null:"spawn pacing is not worker-cloneable":"config is not worker-cloneable":"hydrating",[ze,Ce,Re,Le,yt,W]),Dt=(0,Ls.useCallback)(()=>{const e=Te.current,t=Ot();if(!e||t)return{reason:t,useWorker:!1};const r=e.liveBodyCount(),n=e.queueSize(),o=function(e,t,r=0,n=Sl){return"sync"!==e&&("worker"===e||t+r>=n)}(re,r,n,ue);return{reason:o?"worker"===re?"forced worker":"body threshold":"below threshold",useWorker:o}},[re,ue,Ot]),zt=(0,Ls.useCallback)(e=>{const t=Te.current;return t&&e.snapshot?(t.restore(e.snapshot),He.current=!0,t):t},[]),qt=(0,Ls.useCallback)((e,t=!0)=>{const r=zt(e);if(!r)return;t&&U?.(e.result,r.controls()),Ft();const n=r.snapshot();!e.result.shouldContinue&&kt.current.size<=0||n.paused||!n.visible||nt.current||ct()},[zt,U,Ft,nt,ct]),_t=(0,Ls.useCallback)(e=>{Qe.current=!0,Nt("worker failed: "+((e instanceof Error?e.message:e+"")||"unknown error"))},[Nt]),Ht=(0,Ls.useCallback)(()=>{const e=Te.current;if(!e)return!1;const t=Dt();if(!t.useWorker)return Ye.current||Je.current?Nt(t.reason??"sync fallback"):Et("sync",t.reason??"sync"),!1;if(Ye.current||Je.current)return!0;const r=Ke.current??new Ll;Ke.current=r,Je.current=!0;const n=Xe.current+1;return Xe.current=n,r.initFromSnapshot(ze??{},e.snapshot()).then(e=>{if(Xe.current!==n)return;Je.current=!1,Ye.current=!0,Qe.current=!1,zt(e),Et("worker",t.reason??"worker"),Ft();const r=Te.current?.snapshot();e.result.shouldContinue&&r&&!r.paused&&r.visible&&!nt.current&&(_e.current=null,ct())}).catch(e=>{Xe.current===n&&_t(e)}),!0},[zt,ze,_t,Ft,nt,Et,ct,Nt,Dt]),Gt=(0,Ls.useCallback)(e=>"frame"===e.type||"removed"===e.type?e.frame:null,[]),Vt=(0,Ls.useCallback)((e,t=!0)=>{const r=Ke.current;if(!r||!Ye.current)return;const n=Xe.current;r.request(e).then(e=>{if(Xe.current!==n)return;const r=Gt(e);r&&qt(r,t)}).catch(_t)},[qt,Gt,_t]),Ut=(0,Ls.useCallback)(()=>{const e=Te.current;if(!e)return;const t=Ht(),r=e.snapshot(),n=Se||Re||Le||!!Ce;r.paused||!r.visible||!e.hasPendingWork()&&!n||nt.current?ot.current():t&&Je.current||(_e.current=null,ct())},[Ce,Se,Re,Le,nt,ot,ct,Ht]),Yt=(0,Ls.useCallback)(()=>{it(),rt.current=null;const e=Te.current;if(!e)return;if(Ye.current&&Ke.current){if(Ze.current)return;let t=0;if(!nt.current){const e=pt.current();t=null!==_e.current?(e-_e.current)/1e3:0,_e.current=e}const r=Ke.current,n=Xe.current;return Ze.current=!0,void(nt.current?r.settle():r.tick(t)).then(e=>{Ze.current=!1,Xe.current===n&&qt(e)}).catch(r=>{if(Ze.current=!1,Xe.current!==n)return;_t(r);const o=nt.current?e.settleWithObservations():e.tick(t);hc({store:e,result:o,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:we.current,onTick:ke.current}),Ft()})}let t;if(nt.current)t=e.settleWithObservations();else{const r=pt.current(),n=null!==_e.current?(r-_e.current)/1e3:0;_e.current=r,t=e.tick(n)}const r=we.current,{regionEffectsApplied:n,bodyForcesApplied:o,snapshot:i}=hc({store:e,result:t,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:r,onTick:ke.current});Ft(),(Ae.current||t.shouldContinue||n||o||r||kt.current.size>0)&&!i.paused&&i.visible&&!nt.current&&ct()},[qt,_t,Ft,it,ct,nt,rt]);ot.current=Yt,(0,Ls.useEffect)(()=>{Qe.current=!1,(Ye.current||Je.current)&&Nt("config changed",!1),Te.current?.updateConfig(ze??{}),Ut()},[ze,Nt]),(0,Ls.useEffect)(()=>{Qe.current=!1,Ut()},[yt,re,ue]),function({cancelRender:e,frameRuntime:t,lastFrameTimeRef:r,paused:n,postWorkerCommand:o,requestRender:i,storeRef:s,suspendWhenHidden:a}){const l=(0,El.useRef)(o);l.current=o;const c=(0,El.useRef)(i);c.current=i,(0,El.useEffect)(()=>{const o=s.current;o&&(t.setPaused(n),o.setPaused(n),n&&(r.current=null,e()),l.current({type:"setPaused",paused:n},!1),c.current())},[e,t,n]),(0,El.useEffect)(()=>{if(!a){const e=s.current;return t.setVisible(!0),void(e&&!e.snapshot().visible&&(e.setVisible(!0),l.current({type:"setVisible",visible:!0},!1),c.current()))}if("undefined"==typeof document)return;const n=()=>{const n=s.current;if(!n)return;const o=Nl();t.setVisible(o),n.setVisible(o),o||(r.current=null,e()),l.current({type:"setVisible",visible:o},!1),c.current()};return n(),document.addEventListener("visibilitychange",n),()=>document.removeEventListener("visibilitychange",n)},[e,t,a])}({cancelRender:it,frameRuntime:ut,lastFrameTimeRef:_e,paused:Q,postWorkerCommand:Vt,requestRender:Ut,storeRef:Te,suspendWhenHidden:ae}),(0,Ls.useEffect)(()=>()=>Nt("unmount",!1),[Nt]),(0,Ls.useEffect)(()=>{Ft()},[Ft]),(0,Ls.useImperativeHandle)(t,()=>({...Te.current.controls(),applyImpulse:(e,t,r)=>{Te.current.applyImpulse(e,t,r),Vt({type:"applyImpulse",id:e,ix:t,iy:r}),Ut()},clear:()=>{Te.current.clear(),ge.current.clear(),kt.current.clear(),Vt({type:"clear"}),Ut()},clearRegionState:e=>{e?ge.current.delete(e):ge.current.clear(),Ut()},getData:()=>Te.current.readBodies(),getRegionState:e=>e?lc(ge.current.get(e)):function(e){const t={};return e.forEach((e,r)=>{const n=lc(e);n&&(t[r]=n)}),t}(ge.current),getStore:()=>Te.current,pause:()=>{ut.setPaused(!0),_e.current=null,it(),Te.current.setPaused(!0),Vt({type:"setPaused",paused:!0},!1),Ut()},push:(e,t)=>{Te.current.enqueue(e,t),Bl(t)?Vt({type:"enqueue",spawns:[e],pacing:t}):(Ye.current||Je.current)&&Nt("spawn pacing is not worker-cloneable"),Ut()},pushMany:(e,t)=>{Te.current.enqueue(e,t),Bl(t)?Vt({type:"enqueue",spawns:e,pacing:t}):(Ye.current||Je.current)&&Nt("spawn pacing is not worker-cloneable"),Ut()},popBodies:(e,t={})=>{const r=Te.current,n=new Map(r.readBodies().map(e=>[e.id,e])),o=r.remove(e),i=pt.current();for(const e of o){const r=n.get(e);r&&(ge.current.delete(e),kt.current.set(e,{body:r,color:t.color??"#f59e0b",durationMs:Math.max(120,t.durationMs??520),radius:t.radius??ic(r),startedAt:i}),vt.current===e&&(vt.current=null,mt(null)),gt(t=>t?.id===e?null:t))}return o.length&&(Vt({type:"remove",ids:o}),Ut()),o},remove:e=>{const t=Te.current.remove(e);for(const t of e)ge.current.delete(t);return Vt({type:"remove",ids:e}),Ut(),t},restore:e=>{Te.current.restore(e),ge.current.clear(),kt.current.clear(),Vt({type:"restore",snapshot:e},!1),Ut()},resume:()=>{ut.setPaused(!1),_e.current=null,Te.current.setPaused(!1),Vt({type:"setPaused",paused:!1},!1),Ut()},settle:e=>{const t=Te.current.settle(e);return Vt({type:"settle",maxSteps:e}),Ut(),t},settleWithObservations:e=>{const t=Te.current.settleWithObservations(e);return Vt({type:"settle",maxSteps:e}),Ut(),t},step:e=>{const t=Te.current,r=t.tick(e);return hc({store:t,result:r,regionEffects:ve.current,regionState:ge.current,bodyForces:xe.current,composed:we.current,onTick:ke.current}),Vt({type:"tick",deltaSeconds:e}),Ft(),r}}),[it,ut,Ft,Vt,Ut,Nt]);const Qt=ii||!yt&&ht,Xt=["stream-physics-frame",A?"stream-physics-frame--mode-"+A:null,S?"stream-physics-frame--emphasis-"+S:null,h].filter(Boolean).join(" "),Zt=w??("string"==typeof ce?ce:void 0)??"Physics chart",Kt=Ue+"-physics-table",Jt=Math.max(1,dt[0]-tt.left-tt.right),er=Math.max(1,dt[1]-tt.top-tt.bottom),tr=j&&bt?de?de(bt):(0,zc.jsx)(Ec,{hover:bt}):null,rr=tr&&bt?(0,zc.jsx)(fa,{x:bt.x-tt.left,y:bt.y-tt.top,containerWidth:Math.max(1,dt[0]-tt.left-tt.right),containerHeight:Math.max(1,dt[1]-tt.top-tt.bottom),margin:tt,className:"stream-physics-tooltip",children:tr}):null;if(Qt){const e=Te.current??Rl(ze,B,W),t="string"==typeof ce?ce:void 0,{svg:r}=ai(e,{width:dt[0],height:dt[1],title:t,description:w,background:"transparent"===s?void 0:s,className:"stream-physics-frame__svg",idPrefix:"physics-"+Ue});return(0,zc.jsxs)("div",{ref:lt,className:Xt,"data-semiotic-mode":A,role:"img","aria-label":Zt,style:{width:dt[0],height:dt[1]},children:[(0,zc.jsx)(rc,{summary:se}),(0,zc.jsx)("div",{dangerouslySetInnerHTML:{__html:r}})]})}return(0,zc.jsxs)("div",{ref:lt,className:Xt,"data-semiotic-mode":A,role:"group","aria-label":Zt,"aria-describedby":ft?Ct:void 0,tabIndex:0,style:{position:"relative",width:dt[0],height:dt[1]},onKeyDown:Wt,children:["production"!==process.env.NODE_ENV&&Te.current&&(0,zc.jsx)(Ql,{store:Te.current,diagnostics:Ge.current}),r?(0,zc.jsx)(nc,{tableId:Kt}):null,r?(0,zc.jsx)(Dc,{chartTitle:"string"==typeof ce?ce:Zt,items:Ie,tableId:Kt}):null,(0,zc.jsx)(rc,{summary:se}),(0,zc.jsx)(ec,{hoverPoint:bt}),(0,zc.jsx)("div",{id:Ct,"aria-live":"polite","aria-atomic":"true",style:vc,children:ft?ft.description??ft.label:""}),(0,zc.jsxs)("div",{role:"img","aria-label":Zt,style:{position:"relative",width:"100%",height:"100%"},children:[(0,zc.jsx)(sa,{size:dt,margin:tt,children:st}),(0,zc.jsx)("canvas",{ref:Tt,width:dt[0],height:dt[1],"aria-hidden":"true",onPointerDown:Bt,onPointerMove:j?Mt:void 0,onPointerLeave:j?$t:void 0}),at,(0,zc.jsx)(wl,{width:Jt,height:er,totalWidth:dt[0],totalHeight:dt[1],margin:tt,title:ce,legend:P,legendPosition:E,legendLayout:F,legendHoverBehavior:R,legendClickBehavior:I,legendHighlightedCategory:L,legendIsolatedCategories:T,pointNodes:Pt,annotations:n,onAnnotationActivate:o,onObservation:D,chartId:y,chartType:Gc,autoPlaceAnnotations:i,svgAnnotationRules:le}),(0,zc.jsx)(zl,{active:null!=ft,hoverPoint:ft?{x:ft.x,y:ft.y}:null,margin:tt,size:dt,shape:ft?.shape,width:ft?.width,height:ft?.height,pathData:ft?.pathData}),rr]})]})}));Vc.displayName="StreamPhysicsFrame";var Uc=Vc,Yc=require("react"),Qc=Object.freeze([]),Xc=require("react");function Zc(e,t){if(!t?.length)return[e];const r=t.filter(t=>{if(t.id===e||t.id.startsWith(e+"-"))return!0;const r=t.datum;return!(!r||"object"!=typeof r||null==r.id)&&r.id+""===e}).map(e=>e.id);return r.length?r:[e]}function Kc(e,t,r){if("function"==typeof r)return r(e,t)+"";if("string"==typeof r){const t=e[r];if(null!=t)return t+""}return null!=e&&"object"==typeof e&&"id"in e&&null!=e.id?e.id+"":"physics-row-"+t}function Jc(e,t){const r=e?.getData().find(e=>e.id===t),n=r?.datum;if(n&&"object"==typeof n)return n}var ed=require("react"),td=l(require("react")),rd=require("react/jsx-runtime");function nd({componentName:e,message:t,diagnosticHint:r,width:n,height:o}){return(0,rd.jsx)("div",{role:"alert",style:{width:n,height:Math.max(o,120),display:"flex",alignItems:"center",justifyContent:"center",border:"1px dashed rgba(128, 128, 128, 0.4)",borderRadius:8,background:"rgba(128, 128, 128, 0.04)",padding:24,boxSizing:"border-box"},children:(0,rd.jsxs)("div",{style:{textAlign:"center",maxWidth:400},children:[(0,rd.jsx)("div",{style:{fontSize:13,fontWeight:600,color:"rgba(128, 128, 128, 0.7)",marginBottom:6,fontFamily:"monospace"},children:e}),(0,rd.jsx)("div",{style:{fontSize:14,color:"rgba(128, 128, 128, 0.9)",lineHeight:1.5},children:t}),r&&(0,rd.jsx)("div",{"data-testid":"semiotic-diagnostic-hint",style:{marginTop:10,padding:"8px 12px",background:"rgba(128, 128, 128, 0.06)",borderRadius:4,fontSize:12,color:"rgba(128, 128, 128, 0.8)",fontFamily:"monospace",textAlign:"left",whiteSpace:"pre-wrap",lineHeight:1.6},children:r})]})})}var od=require("react/jsx-runtime"),id=class extends td.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){this.props.onError?.(e,t)}render(){if(this.state.error){const{fallback:e}=this.props,t=this.state.error;return"function"==typeof e?e(t):void 0!==e?e:(0,od.jsx)(nd,{componentName:"ChartErrorBoundary",message:t.message||"An unexpected error occurred while rendering this chart.",width:600,height:400})}return this.props.children}},sd=require("react/jsx-runtime");function ad({componentName:e,width:t,height:r,children:n}){return(0,sd.jsx)(id,{fallback:n=>(0,sd.jsx)(nd,{componentName:e,message:n.message,width:t,height:r}),children:n})}"undefined"!=typeof process&&process;var ld={display:"flex",alignItems:"center",justifyContent:"center",color:"var(--semiotic-text-secondary, #666)",fontSize:13,fontFamily:"inherit",border:"1px dashed var(--semiotic-border, #ddd)",borderRadius:4,boxSizing:"border-box"},cd={background:"var(--semiotic-border, #e0e0e0)",borderRadius:2};function dd(e){return[parseInt(e.slice(1,3),16),parseInt(e.slice(3,5),16),parseInt(e.slice(5,7),16)]}function ud(e,t,r){const n=e=>e.toString(16).padStart(2,"0");return`#${n(e)}${n(t)}${n(r)}`}function pd(e){const t=e.map(dd),r=t.length-1;return e=>{if(0>=e){const[e,r,n]=t[0];return ud(e,r,n)}if(e>=1){const[e,n,o]=t[r];return ud(e,n,o)}const n=e*r,o=Math.floor(n),i=n-o,[s,a,l]=t[o],[c,d,u]=t[o+1];return ud(Math.round(s+(c-s)*i),Math.round(a+(d-a)*i),Math.round(l+(u-l)*i))}}require("react"),require("d3-scale");var yd=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],hd=pd(["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]),fd=pd(["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]),md=pd(["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]),bd=pd(["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]),gd=pd(["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]),vd=pd(["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]),xd={blues:hd,reds:fd,greens:md,viridis:pd(["#440154","#482878","#3e4989","#31688e","#26828e","#1f9e89","#35b779","#6ece58","#b5de2b","#fde725"]),oranges:bd,purples:gd,greys:vd,plasma:pd(["#0d0887","#41049d","#6a00a8","#8f0da4","#b12a90","#cb4679","#e16462","#f1844b","#fca636","#fcce25","#f0f921"]),inferno:pd(["#000004","#160b39","#420a68","#6a176e","#932667","#bc3754","#dd513a","#f3771a","#fca50a","#f6d746","#fcffa4"]),magma:pd(["#000004","#140e36","#3b0f70","#641a80","#8c2981","#b73779","#de4968","#f7705c","#fe9f6d","#fecf92","#fcfdbf"]),cividis:pd(["#00224e","#123570","#3b496c","#575d6d","#707173","#8a8678","#a59c74","#c3b369","#e1cc55","#fee838","#ffea46"]),turbo:pd(["#23171b","#4a58dd","#3f9ee9","#46c7af","#7eed5a","#cdf134","#fbb91f","#f56918","#c52f06","#7a0403"])},kd=(pd(["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]),pd(["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]),pd(["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]),pd(["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]),pd(["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]),pd(["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]),pd(["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]),{category10:yd,tableau10:["#4e79a7","#f28e2c","#e15759","#76b7b2","#59a14f","#edc949","#af7aa1","#ff9da7","#9c755f","#bab0ab"],set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],...xd}),Cd=yd;function wd(e,t){if(null==t||!Object.prototype.hasOwnProperty.call(e,t))return;const r=e[t];return"string"==typeof r&&r.length>0?r:void 0}function Sd(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}var Ad={enabled:!0,tapToSelect:!0,tapToLockTooltip:!0,clearSelection:"backgroundTap",targetSize:44,snap:"nearestDatum",brushHandleSize:44,standardControls:!1,enabled:!1,tapToSelect:!1,tapToLockTooltip:!1};function jd(e,t={}){const r=t.mobileSemantics?.interaction,n="number"==typeof r?.targetSize?r.targetSize:"number"==typeof t.mobileSemantics?.minimumHitTarget?t.mobileSemantics.minimumHitTarget:void 0,o="mobile"===t.mode||"number"==typeof t.width&&480>=t.width,i=!!r||void 0!==n,s=e&&"object"==typeof e?e:void 0;if(!1===e||!1===s?.enabled||void 0===e&&!o&&!i)return Ad;const a=s??{};return{enabled:!0,tapToSelect:a.tapToSelect??!0,tapToLockTooltip:a.tapToLockTooltip??!0,clearSelection:a.clearSelection??"backgroundTap",targetSize:a.targetSize??n??44,snap:a.snap??"nearestDatum",brushHandleSize:a.brushHandleSize??44,standardControls:a.standardControls??!1}}var $d={primary:{width:600,height:400,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:void 0,showLabels:void 0,marginDefaults:{top:50,bottom:60,left:70,right:40}},context:{width:400,height:250,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:10,bottom:10,left:10,right:10}},sparkline:{width:120,height:24,showAxes:!1,showGrid:!1,enableHover:!1,showLegend:!1,showLabels:!1,marginDefaults:{top:2,bottom:2,left:0,right:0}},mobile:{width:390,height:300,showAxes:!0,showGrid:!1,enableHover:!0,showLegend:!1,showLabels:!0,marginDefaults:{top:28,bottom:42,left:44,right:16}}};function Md(e,t,r){if(!1!==t)return e;const n={...e};return"horizontal"===r?n.left=Math.min(n.left,15):n.bottom=Math.min(n.bottom,15),n}function Bd(e,t,r){return function(e,t,r){const n=$d[e||"primary"],o=e&&"primary"!==e||!r?.width?n.width:r.width,i=e&&"primary"!==e||!r?.height?n.height:r.height,s=function(e,t,r=e.responsiveRules){if(!Array.isArray(r)||0===r.length)return{props:e,matches:[]};const n=r.map((e,t)=>({rule:e,index:t})).filter(e=>function(e,t){const{when:r}=e,n=t.width,o=t.height,i=function(e){if("number"==typeof e.height&&e.height>0)return e.width/e.height}(t),s=function(e){if("number"==typeof e.height&&e.height>0)return e.height>e.width?"portrait":"landscape"}(t);return!("number"==typeof r.minWidth&&r.minWidth>n||"number"==typeof r.maxWidth&&n>r.maxWidth||"number"==typeof r.minHeight&&("number"!=typeof o||r.minHeight>o)||"number"==typeof r.maxHeight&&("number"!=typeof o||o>r.maxHeight)||"number"==typeof r.minAspectRatio&&("number"!=typeof i||r.minAspectRatio>i)||"number"==typeof r.maxAspectRatio&&("number"!=typeof i||i>r.maxAspectRatio)||r.orientation&&s!==r.orientation)}(e.rule,t)).sort((e,t)=>("number"==typeof e.rule.priority?e.rule.priority:e.index)-("number"==typeof t.rule.priority?t.rule.priority:t.index));return{props:n.reduce((e,t)=>function(e,t){const r={...e,...t};for(const n of["margin","frameProps","mobileSemantics","style"])Sd(e[n])&&Sd(t[n])&&(r[n]={...e[n],...t[n]});return"string"==typeof e.className&&"string"==typeof t.className&&(r.className=`${e.className} ${t.className}`),r}(e,t.rule.transform),e),matches:n}}({...t,mode:e},{width:t.width??o,height:t.height??i}).props,a=s.mode||e,l=$d[a||"primary"],c="context"===a||"sparkline"===a,d=a&&"primary"!==a||!r?.width?l.width:r.width;return{width:s.width??d,height:s.height??(a&&"primary"!==a||!r?.height?l.height:r.height),showAxes:s.showAxes??l.showAxes,showGrid:s.showGrid??l.showGrid,enableHover:s.enableHover??(!!s.linkedHover||l.enableHover),showLegend:s.showLegend??l.showLegend,showLabels:s.showLabels??l.showLabels,title:c?void 0:s.title,description:s.description,summary:s.summary,accessibleTable:s.accessibleTable,xLabel:c?void 0:s.xLabel,yLabel:c?void 0:s.yLabel,categoryLabel:c?void 0:s.categoryLabel,valueLabel:c?void 0:s.valueLabel,marginDefaults:Md(l.marginDefaults,s.showCategoryTicks,s.orientation),compactMode:c,mobileInteraction:jd(s.mobileInteraction,{mode:a,width:s.width??d,mobileSemantics:s.mobileSemantics}),mobileSemantics:s.mobileSemantics}}(e,t,r)}var Wd=require("react/jsx-runtime"),Pd=new Set(["sample","mechanical"]);function Id(e,t){return e?t?r=>(0,Wd.jsxs)(Wd.Fragment,{children:["function"==typeof e?e(r):e,"function"==typeof t?t(r):t]}):e:t}function Ld(e,t){return!1===e?{enableHover:!1}:{enableHover:t?.enableHover,tooltipContent:ya(e)||t?.tooltipContent}}var Rd=require("d3-scale");function Td(e,t){const r=t&&"object"==typeof t&&!Array.isArray(t)?t:void 0;return 0===e.length?e=>r&&wd(r,e)||"#4e79a7":t=>{if(r){const e=wd(r,t);if(e)return e}let n=0;for(let e=0;t.length>e;e++)n=31*n+t.charCodeAt(e)|0;return e[Math.abs(n)%e.length]??"#4e79a7"}}function Fd(e,t){const r=t.config??{},n=(t.sensors??[]).map(e=>({...e,sensor:!0})),o=[...t.colliders??[],...n],i=[...e.colliders??[],...r.colliders??[],...o];return{...e,...r,observation:{...e.observation,...r.observation},...i.length>0&&{colliders:i}}}function Ed(e){const t=function(e,t,r){const n=e?.observation;return{...e,observation:{...n,chartId:t??n?.chartId??"physics-custom",chartType:n?.chartType??"PhysicsCustomChart",onObservation:r??n?.onObservation}}}(e.config,e.chartId,e.onObservation),r=function(e,t,r=Cd){if(e&&"object"==typeof e&&!Array.isArray(e)){const t=Object.values(e).filter(e=>"string"==typeof e&&e.length>0);if(t.length>0)return t}if(Array.isArray(e)&&e.length>0)return e;if("string"==typeof e){const t=kd[e];if(Array.isArray(t)&&t.length>0)return t}return t&&t.length>0?t:r}(e.colorScheme,e.themeCategorical,yd),n=function(e){const[t,r]=e;return{width:t,height:r,plot:{x:32,y:24,width:Math.max(80,t-64),height:Math.max(80,r-58)}}}(e.size),o={data:e.data,scales:{x:(0,Rd.scaleLinear)().domain(e.xExtent??[0,1]).range([n.plot.x,n.plot.x+n.plot.width]),y:(0,Rd.scaleLinear)().domain(e.yExtent??[0,1]).range([n.plot.y+n.plot.height,n.plot.y])},dimensions:n,theme:{semantic:e.semantic,categorical:[...r]},resolveColor:Td(r,e.colorScheme),config:e.layoutConfig??{},world:new Ps(t)},i=e.skipLayout?{}:e.layout(o)??{},s=function(e,t){if(!t?.length)return e;const r=new Map;for(const e of t){const{bodyId:t,...n}=e,o=r.get(t)??[];o.push(n),r.set(t,o)}return e.map(e=>{const t=r.get(e.id);return t?.length?{...e,springs:[...e.springs??[],...t]}:e})}([...i.initialSpawns??i.bodies??[]],i.constraints);return{config:Fd(t,i),context:o,initialSpawnPacing:i.initialSpawnPacing,initialSpawns:s,result:i}}var Nd=require("react/jsx-runtime"),Od=(0,Yc.forwardRef)(function(e,t){const{chartId:r,color:n,colorBy:o,colorScheme:i,config:s,controllers:a,data:l,emptyContent:c,frameProps:d={},layout:u,layoutConfig:p,loading:y,loadingContent:h,onObservation:f,opacity:m,paused:b,spawnDatum:g,stroke:v,strokeWidth:x,title:k,xExtent:C,yExtent:w}=e,S=function(e,t,r){const n=r?.hasSimulationMode?function(e){const t=e=>"string"==typeof e&&Pd.has(e);return e.simulationMode?{chartMode:t(e.mode)?void 0:e.mode,simulationMode:e.simulationMode}:t(e.mode)?{chartMode:void 0,simulationMode:e.mode}:{chartMode:e.mode,simulationMode:"sample"}}({mode:e.mode,simulationMode:e.simulationMode}):{chartMode:"sample"===e.mode||"mechanical"===e.mode?void 0:e.mode,simulationMode:"sample"},o=Bd(n.chartMode,{width:e.width,height:e.height,enableHover:e.enableHover,title:e.title,description:e.description,summary:e.summary,accessibleTable:e.accessibleTable,mobileInteraction:e.mobileInteraction,mobileSemantics:e.mobileSemantics,responsiveRules:e.responsiveRules},{width:t[0],height:t[1]}),i=e.size?.[0],s=e.size?.[1],a=t[0],l=t[1],c=(0,ed.useMemo)(()=>{return e=[a,l],(null!=i&&null!=s?[i,s]:void 0)??[o.width??e[0],o.height??e[1]];var e},[l,a,o.height,o.width,s,i]),d=o.compactMode?"sparkline"===n.chartMode?{top:2,right:2,bottom:2,left:2}:{top:8,right:8,bottom:8,left:8}:{top:0,right:0,bottom:0,left:0},u=e.showProjection??!o.compactMode,p=e.showChrome??!o.compactMode,y=Ld(e.tooltip,void 0),h=void 0!==y.enableHover?y.enableHover:o.enableHover,f=o.compactMode?o.title:o.title??e.title,m=[e.className,n.chartMode&&"primary"!==n.chartMode?"semiotic-physics--"+n.chartMode:null].filter(Boolean).join(" ")||void 0;return{chartMode:n.chartMode,simulationMode:n.simulationMode,resolved:o,chartSize:c,margin:d,showProjection:u,showChrome:p,enableHover:h,title:f,description:o.description??e.description,summary:o.summary??e.summary,accessibleTable:o.accessibleTable??e.accessibleTable,className:m,compactMode:o.compactMode,mobileInteraction:o.mobileInteraction,mobileSemantics:o.mobileSemantics}}(e,[700,380]),{chartSize:A,className:j,title:$,chartMode:M,margin:B,enableHover:W,description:P,summary:I,accessibleTable:L}=S,R=(0,Yc.useRef)(null),T=(0,Yc.useRef)(null),F=(0,Yc.useRef)(""),E=function(e){const[t,r]=e.size,n=function(e,t,r,n){if(!e)return null;if(!1===n)return null;if(null!=n)return(0,sd.jsx)("div",{style:{width:t,height:r,display:"flex",alignItems:"center",justifyContent:"center",boxSizing:"border-box"},children:n});const o=Math.min(5,Math.floor(r/40)),i=Math.max(8,Math.floor(r/(3*o))),s=Math.max(6,Math.floor(r/(2.5*o))),a=Math.floor((r-(o*(i+s)-s))/2);return(0,sd.jsx)("div",{style:{width:t,height:r,position:"relative",overflow:"hidden",border:"1px solid var(--semiotic-border, #e0e0e0)",borderRadius:4,boxSizing:"border-box"},children:Array.from({length:o},(e,r)=>(0,sd.jsx)("div",{className:"semiotic-loading-bar",style:{...cd,position:"absolute",top:a+r*(i+s),left:Math.floor(.1*t),width:30+(37*r+13)%50+"%",height:i,opacity:.5+r%2*.2}},r))})}(e.loading,t,r,e.loadingContent);return n||function(e,t,r,n){return!1===n||null==e||Array.isArray(e)&&e.length>0?null:Array.isArray(e)?(0,sd.jsx)("div",{style:{...ld,width:t,height:r},children:n||"No data available"}):null}(e.data,t,r,e.emptyContent)}({data:l,emptyContent:c,loading:y,loadingContent:h,size:A}),N=null!=E,O=(0,Yc.useMemo)(()=>function(e){if(!e)return Qc;let t=!1;for(let r=0;e.length>r;r++){const n=e[r];if(null==n||"object"!=typeof n){t=!0;break}}if(!t)return e;const r=[];for(const t of e)null!=t&&"object"==typeof t&&r.push(t);return r}(l??[]),[l]),D=_s(e=>e.theme),z=(0,Yc.useMemo)(()=>function(e){if(!e?.colors)return;const t=e.colors;return{primary:t.primary,secondary:t.secondary||t.primary,surface:t.surface||t.background,success:t.success,danger:t.danger,warning:t.warning,error:t.error,info:t.info,text:t.text,textSecondary:t.textSecondary,border:t.border,grid:t.grid}}(D)??{},[D]),q=D?.colors?.categorical??Ns.colors.categorical,_=(0,Yc.useMemo)(()=>[A[0],A[1],O.length,O.map((e,t)=>(e.id??t)+"").join("|"),C?.join(",")??"",w?.join(",")??""].join("::"),[A,O,C,w]),H=(0,Yc.useMemo)(()=>Ed({chartId:r,colorScheme:i,config:s,data:O,layout:u,layoutConfig:p,onObservation:f,semantic:z,skipLayout:N,size:A,themeCategorical:q,xExtent:C,yExtent:w}),[r,A,i,s,u,p,f,O,z,N,q,C,w]);F.current===_&&null!=T.current||(F.current=_,T.current=H.initialSpawns);const G=T.current,V=(0,Yc.useMemo)(()=>{const e=[...H.result.controllers??[],...a??[],...d.controllers??[]];return e.length?e:void 0},[d.controllers,a,H.result.controllers]),U=(0,Yc.useMemo)(()=>{const e=[...H.result.regionEffects??[],...d.regionEffects??[]];return e.length?e:void 0},[d.regionEffects,H.result.regionEffects]),Y=(0,Yc.useCallback)(e=>{const t=e.datum,r=t&&o?function(e,t,r){return"function"==typeof r?r(e,0):e[r]}(t,0,o)+"":e.id;return{fill:n??H.context.resolveColor(r,t),stroke:v??"#111827",strokeWidth:x??1,opacity:m??.9}},[n,o,m,H.context,v,x]);!function(e,t){const{frameRef:r,spawnDatum:n,seedRows:o,idAccessor:i,bodyIdsForSeed:s,seedSpawns:a}=t,l=(0,Xc.useRef)(new Map),c=(0,Xc.useRef)(new Map),d=(0,Xc.useRef)(""),u=o?o.map((e,t)=>Kc(e,t,i)).join("\0"):"";if(u!==d.current&&(d.current=u,o))for(let e=0;o.length>e;e+=1){const t=o[e],r=Kc(t,e,i);l.current.set(r,t),c.current.set(r,s?.(t,r,e)??Zc(r,a))}(0,Xc.useImperativeHandle)(e,()=>{const e=l.current,t=c.current;function o(e,t){const r=n(e,t);return{datumId:r.datumId||Kc(e,t,i),spawns:r.spawns.map(e=>({...e,spawnAt:void 0}))}}function s(n){const o=[];for(const{datum:r,result:i}of n)e.set(i.datumId,r),t.set(i.datumId,i.spawns.map(e=>e.id)),o.push(...i.spawns);if(!o.length)return;const i=r.current;i?(i.pushMany(o),i.step(0)):"production"!==process.env.NODE_ENV&&console.warn("[semiotic/physics] push() called before the physics frame mounted (loading/empty early-return). Omit data for push mode and ensure the chart is mounted.")}function a(n){const o=e.get(n);if(o)return o;const i=t.get(n)??[n];for(const o of i){const i=Jc(r.current,o);if(i)return e.set(n,i),t.has(n)||t.set(n,[o]),i}}return{push:t=>{s([{datum:t,result:o(t,e.size)}])},pushMany:t=>{const r=e.size;s(t.map((e,t)=>({datum:e,result:o(e,r+t)})))},remove:n=>{const o=Array.isArray(n)?n:[n],i=[],s=[];for(const r of o){const n=a(r);n&&i.push(n),e.delete(r),s.push(...t.get(r)??[r]),t.delete(r)}return s.length&&r.current?.remove(s),i},update:(n,i)=>{const l=Array.isArray(n)?n:[n],c=[];for(const n of l){const l=a(n);if(!l)continue;c.push(l);const d=t.get(n)??[n];r.current?.remove(d),e.delete(n),t.delete(n);const u=i(l);s([{datum:u,result:o(u,e.size)}])}return c},clear:()=>{e.clear(),t.clear(),d.current="",r.current?.clear()},getData:()=>{const t=r.current;if(!t)return Array.from(e.values());const n=t.getData().map(e=>e.datum).filter(e=>!!e&&"object"==typeof e);return n.length?n:Array.from(e.values())},getScales:()=>null,getCustomLayout:()=>r.current?.snapshot()??null,popBodies:(e,t)=>r.current?.popBodies(e,t)??[]}},[r,i,n])}(t,{frameRef:R,spawnDatum:(0,Yc.useCallback)((e,t)=>{const n=e;if(g)return function(e,t,r){return Array.isArray(r)?{datumId:(e.id??r[0]?.id??"physics-custom-"+t)+"",spawns:r}:"spawns"in r?r:{datumId:(e.id??r.id??"physics-custom-"+t)+"",spawns:[r]}}(e,t,g(n,t,H.context));const o=Ed({chartId:r,colorScheme:i,config:s,data:[n],layout:u,layoutConfig:p,onObservation:f,semantic:z,size:A,themeCategorical:q,xExtent:C,yExtent:w}),a=o.initialSpawns.length?o.initialSpawns:[{id:(e.id??"physics-custom-"+t)+"",x:o.context.dimensions.plot.x+o.context.dimensions.plot.width/2,y:o.context.dimensions.plot.y+12,mass:1,shape:{type:"circle",radius:5},datum:e}];return{datumId:(e.id??a[0].id)+"",spawns:a}},[r,A,i,s,g,u,p,f,H.context,z,q,C,w]),seedRows:O,seedSpawns:G});const Q=(0,Yc.useCallback)((e,t)=>{d.onBodyPointerDown?.(e,t)},[d]);if(E)return E;const X=Ld(e.tooltip,d),Z=function(e,t,r,n){return{accessibleTable:n?.accessibleTable??e.accessibleTable??t?.accessibleTable,annotations:e.annotations??t?.annotations,autoPlaceAnnotations:e.autoPlaceAnnotations??t?.autoPlaceAnnotations,background:e.background??t?.background,chartId:e.chartId??t?.chartId,chartMode:n?.chartMode??t?.chartMode,className:n?.className??e.className??t?.className,color:e.color??t?.color,description:n?.description??e.description??t?.description,emphasis:e.emphasis??t?.emphasis,enableHover:n?.enableHover??t?.enableHover,hoverRadius:e.hoverRadius??t?.hoverRadius,legend:e.legend??t?.legend,legendLayout:e.legendLayout??t?.legendLayout,legendPosition:e.legendPosition??t?.legendPosition,margin:n?.margin??t?.margin,onClick:null!=e.onClick?(t,r)=>{t&&e.onClick?.(t,{x:r.x,y:r.y})}:t?.onClick,onObservation:e.onObservation??t?.onObservation,onAnnotationActivate:t?.onAnnotationActivate,opacity:e.opacity??t?.opacity,semanticItems:t?.semanticItems??r,stroke:e.stroke??t?.stroke,strokeWidth:e.strokeWidth??t?.strokeWidth,summary:n?.summary??e.summary??t?.summary,svgAnnotationRules:e.svgAnnotationRules??t?.svgAnnotationRules,title:n?.title??e.title??t?.title}}(e,d,H.result.semanticItems,{chartMode:M,className:j,title:$??k,description:P,summary:I,accessibleTable:L,enableHover:W,margin:B});return K=A,J=(0,Nd.jsx)(Uc,{...d,...X,...Z,ref:R,backgroundGraphics:Id(d.backgroundGraphics,H.result.backgroundOverlays),bodyForces:H.result.bodyForces??d.bodyForces,bodyStyle:H.result.bodyStyle??d.bodyStyle??Y,config:H.config,controllers:V,foregroundGraphics:Id(d.foregroundGraphics,H.result.overlays),initialSpawnPacing:H.initialSpawnPacing,initialSpawns:G,onBodyPointerDown:Q,paused:b,regionEffects:U,responsiveHeight:e.responsiveHeight,responsiveWidth:e.responsiveWidth,selectedBodyStyle:H.result.selectedBodyStyle??d.selectedBodyStyle,size:A}),(0,Wd.jsx)(ad,{componentName:"PhysicsCustomChart",width:K[0],height:K[1],children:J});var K,J});function Dd(e){const t=e.datum;if(t&&"object"==typeof t){const e=t.label??t.name??t.id;if(null!=e&&""!==e)return e+""}return e.id}function zd(e,t={}){const r=t.bodies??[],n=Math.max(0,t.recentBodyLimit??6),o=new Map;for(const e of r){const r=t.getContainerId?.(e);if(!r)continue;const n=o.get(r);n?n.push(e):o.set(r,[e])}const i=e.map(e=>{const r=o.get(e.id)??[],i=Math.max(0,Math.floor(e.count??r.length)),s=r.slice(Math.max(0,r.length-n)).map(e=>({id:e.id,label:t.getBodyLabel?.(e)??Dd(e),datum:e.datum}));return{id:e.id,label:e.label,count:i,share:0,secondary:e.secondary,secondaryLabel:e.secondaryLabel,observed:e.observed,bodyIds:r.map(e=>e.id),recentBodies:s,metadata:e.metadata}}),s=i.reduce((e,t)=>e+t.count,0);return i.map(e=>({...e,share:s>0?e.count/s:0}))}function qd(e,t={}){const r=t.chartType??"Physics chart",n=t.chartId??"physics",o=e.reduce((e,t)=>e+t.count,0),i=e.filter(e=>e.count>0).length,s=t.projectionLabel??"settled projection",a=Math.max(0,t.maxBodiesPerContainer??6);let l=0;return{id:n,role:"chart",level:1,label:t.title??`${r}: ${o} bodies across ${e.length} containers; ${i} containers currently non-empty.`,children:e.map(e=>{const t=e.recentBodies.slice(0,a).map(t=>{return{id:`${e.id}-body-${l++}`,role:"datum",level:3,label:t.label,datum:(r=t.datum,r&&"object"==typeof r?r:null)};var r}),r=Math.max(0,e.bodyIds.length-t.length);r>0&&t.push({id:`${e.id}-more-${l++}`,role:"datum",level:3,label:`…and ${r} more recent bodies`});const n=[e.count+" bodies"];var o;return n.push(Number.isFinite(o=e.share)&&o>0?.01>o?"<1%":Math.round(100*o)+"%":"0%"),null!=e.secondary&&e.secondary>0&&n.push(`${e.secondary} ${e.secondaryLabel??"secondary"}`),null!=e.observed&&n.push(e.observed+" observed"),{id:e.id,role:"series",level:2,label:`${e.label}: ${n.join(", ")} in the ${s}.`,value:e.count,datum:e.metadata??null,children:t}})}}function _d(e,t={}){const r=t.getDatumLabel?.(e.datum,e)??function(e,t){if(e&&"object"==typeof e){const t=e.label??e.name??e.id;if(null!=t&&""!==t)return t+""}return t}(e.datum,e.bodyId);return"physics-bin-enter"===e.type?`${r??"A body"} entered ${e.binId??e.sensorId??"a bin"}.`:"physics-bin-exit"===e.type?`${r??"A body"} exited ${e.binId??e.sensorId??"a bin"}.`:"physics-proximity-enter"===e.type?`${r??"A body"} entered proximity sensor ${e.binId??e.sensorId??"a sensor"}.`:"physics-proximity-exit"===e.type?`${r??"A body"} exited proximity sensor ${e.binId??e.sensorId??"a sensor"}.`:"physics-settle"===e.type?(r??"A body")+" settled.":"physics-late"===e.type?`${r??"A body"} arrived late for ${e.binId??e.sensorId??"a closed window"}.`:"physics-barrier-cross"===e.type?`${n=e.barrierId??"Barrier",0===n.length?n:n.charAt(0).toUpperCase()+n.slice(1)} crossed ${function(e){return e.binId?e.binId:"number"==typeof e.barrierValue?""+Math.round(e.barrierValue):"a threshold"}(e)}.`:"sim-active"===e.type?"Simulation running.":"sim-idle"===e.type?"Simulation settled.":null;var n}Od.displayName="PhysicsCustomChart";
|