agentic-mermaid 0.5.1 → 0.5.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/AGENT_NATIVE.md +63 -375
- package/CHANGELOG.md +39 -0
- package/README.md +87 -50
- package/assets/hero.png +0 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/agentic-producer-core-CC6OOLDW.js +1 -0
- package/dist/browser-lazy/chunks/architecture-QUFVKYJR.js +13 -0
- package/dist/browser-lazy/chunks/block-6J3Q63BO.js +11 -0
- package/dist/browser-lazy/chunks/builtin-backends-7SOZZHPF.js +12 -0
- package/dist/browser-lazy/chunks/c4-SQVBZAKJ.js +10 -0
- package/dist/browser-lazy/chunks/{chunk-MSP3S2VS.js → chunk-2GPK4VFF.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-2SH76OTH.js +1 -0
- package/dist/browser-lazy/chunks/chunk-2UIA2IME.js +3 -0
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-HR5TE7TE.js → chunk-5B2Z7575.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-REBVEXI2.js → chunk-5X6MJX3H.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-AMJLVPUB.js +4 -0
- package/dist/browser-lazy/chunks/chunk-BU5LHXNJ.js +3 -0
- package/dist/browser-lazy/chunks/chunk-BY2CPG6B.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-HDKHAM2V.js → chunk-CN7WTBWB.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CQE4HQEW.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-KXPF5KIU.js → chunk-DF6765YX.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-E2WMJZNM.js +1 -0
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +6 -0
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +1 -0
- package/dist/browser-lazy/chunks/chunk-HLWUNUCM.js +1 -0
- package/dist/browser-lazy/chunks/chunk-ICC7HBJX.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-FBL4ONAL.js → chunk-J35HAQQF.js} +15 -15
- package/dist/browser-lazy/chunks/chunk-J7FFAFQF.js +1 -0
- package/dist/browser-lazy/chunks/chunk-NO7ZIVRU.js +1 -0
- package/dist/browser-lazy/chunks/chunk-OZ443IVJ.js +16 -0
- package/dist/browser-lazy/chunks/{chunk-2J5K6NIP.js → chunk-PQGPS2YV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-SBXYR7Z3.js → chunk-QA6GJQ4X.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-SZELX2EJ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-TYZOZXUJ.js +22 -0
- package/dist/browser-lazy/chunks/{chunk-E7UIB4SZ.js → chunk-UL6NDWLL.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-VQYYGAXP.js +1 -0
- package/dist/browser-lazy/chunks/chunk-VWVZGQE2.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-GMTB5UTY.js → chunk-X2UYKWKM.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-LLPBKBIG.js → chunk-YCEICNM6.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +20 -0
- package/dist/browser-lazy/chunks/class-5QA4SCTS.js +13 -0
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +11 -0
- package/dist/browser-lazy/chunks/eventmodeling-2BPLHWRN.js +19 -0
- package/dist/browser-lazy/chunks/flowchart-NEIMZTB5.js +4 -0
- package/dist/browser-lazy/chunks/gantt-RDPIFYAF.js +11 -0
- package/dist/browser-lazy/chunks/{gitgraph-W26QIMTY.js → gitgraph-N4Y5RYB7.js} +4 -4
- package/dist/browser-lazy/chunks/ishikawa-LD3YBDJN.js +6 -0
- package/dist/browser-lazy/chunks/journey-6YQR5DJX.js +16 -0
- package/dist/browser-lazy/chunks/kanban-PLMJ7NBW.js +20 -0
- package/dist/browser-lazy/chunks/{mindmap-5A3MVHNH.js → mindmap-K2UBFO3Y.js} +6 -6
- package/dist/browser-lazy/chunks/{packet-AL6VDOMY.js → packet-CUW4QY6Y.js} +5 -5
- package/dist/browser-lazy/chunks/pie-7F7UUCG3.js +15 -0
- package/dist/browser-lazy/chunks/{quadrant-RJ56XFBR.js → quadrant-TOONO2WC.js} +5 -5
- package/dist/browser-lazy/chunks/radar-J6JVWVAX.js +16 -0
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +3 -0
- package/dist/browser-lazy/chunks/requirement-CMAKDJPO.js +19 -0
- package/dist/browser-lazy/chunks/{sankey-WKTBEZSS.js → sankey-AWXQEP3F.js} +8 -8
- package/dist/browser-lazy/chunks/sequence-Q2RJRB4L.js +5 -0
- package/dist/browser-lazy/chunks/state-WRBFQEDX.js +4 -0
- package/dist/browser-lazy/chunks/{timeline-PRV5PWGP.js → timeline-D2KILFXM.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-BVME3JLI.js → treemap-N3VYX5D4.js} +4 -4
- package/dist/browser-lazy/chunks/{xychart-XBI2RNHD.js → xychart-G73OGK66.js} +5 -5
- package/dist/browser-lazy/chunks/{zenuml-GQKPRQFJ.js → zenuml-H4BXNYXR.js} +8 -8
- package/dist/browser-lazy/index.d.ts +10 -0
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +539 -539
- package/dist/chunk-7CRDX2QR.js +2 -0
- package/dist/{chunk-AVS4T4NO.js → chunk-DQDKA5ND.js} +2 -2
- package/dist/chunk-EHCMJUMD.js +52 -0
- package/dist/{chunk-AWZBTOV6.js → chunk-GVCHLSHH.js} +2 -2
- package/dist/{chunk-6JBQYHWB.js → chunk-H3NCS2XZ.js} +2 -2
- package/dist/{chunk-ORYXYGDV.js → chunk-JZOJ4YGS.js} +2 -2
- package/dist/{chunk-AIWXP4OF.js → chunk-NKNFOREZ.js} +2 -2
- package/dist/{chunk-PNL435CH.js → chunk-OMY6NRQD.js} +17 -17
- package/dist/{chunk-YISEN5SO.js → chunk-UA234O4M.js} +2 -2
- package/dist/{cli-BOEN5YAF.js → cli-YGGTJZH7.js} +2 -2
- package/dist/{index-Cr3xjRw9.d.ts → index-EeXqJXr5.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-NM3P4VPC.js → mcp-cli-63DYXTVD.js} +2 -2
- package/dist/{paint-certification-C33LRvWT.d.ts → paint-certification-6rwQjIv_.d.ts} +22 -2
- package/dist/{server-FY5Z7F32.js → server-5NEOHOFS.js} +2 -2
- package/dist/{svg-styles-C_v2tnxG.d.ts → svg-styles-BdnoM7AT.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-DxOTIgwg.d.ts → types-BcS52Mjt.d.ts} +11 -1
- package/dist/zenuml/chunks/{appearance-FTQ2722O.js → appearance-UOQ5KA6O.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-QLY75JCL.js → builtin-backends-KDKE7YHO.js} +3 -3
- package/dist/zenuml/chunks/chunk-42DXZ5C6.js +4 -0
- package/dist/zenuml/chunks/{chunk-GDLMM3YO.js → chunk-7TVYPTDW.js} +1 -1
- package/dist/zenuml/chunks/{chunk-6OONHTSD.js → chunk-OXQWRSBM.js} +10 -10
- package/dist/zenuml/chunks/{chunk-LYIRUTCM.js → chunk-QWX77U7G.js} +1 -1
- package/dist/zenuml/chunks/{chunk-4VRUBLG4.js → chunk-RLJEI7YN.js} +10 -10
- package/dist/zenuml/chunks/{chunk-YFCDP4ZS.js → chunk-RZ6XK5CD.js} +1 -1
- package/dist/zenuml/chunks/{render-core-DNCYYOIB.js → render-core-V5RQ737O.js} +3 -3
- package/dist/zenuml/chunks/{zenuml-URQ4HIMD.js → zenuml-EA2ZFRUX.js} +9 -9
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +1 -1
- package/docs/README.md +59 -110
- package/docs/api.md +3 -1
- package/docs/config.md +37 -0
- package/docs/getting-started.md +27 -44
- package/examples/styles/readme-hero.md +25 -0
- package/examples/styles/readme-hero.mmd +13 -0
- package/examples/styles/readme-hero.style.json +7 -0
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/agentic-producer-core-MGU4FD6J.js +0 -1
- package/dist/browser-lazy/chunks/architecture-KZTC3672.js +0 -13
- package/dist/browser-lazy/chunks/block-J5PD6HQM.js +0 -11
- package/dist/browser-lazy/chunks/builtin-backends-GSGJPT5A.js +0 -12
- package/dist/browser-lazy/chunks/c4-VNQSIA5M.js +0 -10
- package/dist/browser-lazy/chunks/chunk-4C2BVM5Y.js +0 -1
- package/dist/browser-lazy/chunks/chunk-5GE2SFLQ.js +0 -4
- package/dist/browser-lazy/chunks/chunk-6YGQR6R4.js +0 -16
- package/dist/browser-lazy/chunks/chunk-7AHX3HH7.js +0 -1
- package/dist/browser-lazy/chunks/chunk-B5PDJUJG.js +0 -3
- package/dist/browser-lazy/chunks/chunk-CXQWSLJV.js +0 -1
- package/dist/browser-lazy/chunks/chunk-DWDYWUAS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-EUBVLDYV.js +0 -29
- package/dist/browser-lazy/chunks/chunk-NQF75XGM.js +0 -3
- package/dist/browser-lazy/chunks/chunk-P7DO3MRP.js +0 -13
- package/dist/browser-lazy/chunks/chunk-QQ2U2KAY.js +0 -1
- package/dist/browser-lazy/chunks/chunk-SJYDRC6G.js +0 -1
- package/dist/browser-lazy/chunks/chunk-UUTB6MDK.js +0 -1
- package/dist/browser-lazy/chunks/chunk-WEREIH5P.js +0 -1
- package/dist/browser-lazy/chunks/chunk-WHNTP27R.js +0 -6
- package/dist/browser-lazy/chunks/chunk-YXGB25MZ.js +0 -1
- package/dist/browser-lazy/chunks/class-FNDNJGYH.js +0 -13
- package/dist/browser-lazy/chunks/er-P263BDFG.js +0 -11
- package/dist/browser-lazy/chunks/eventmodeling-XX3VCGSC.js +0 -19
- package/dist/browser-lazy/chunks/flowchart-GTLWJA3P.js +0 -4
- package/dist/browser-lazy/chunks/gantt-SRIHFAIC.js +0 -11
- package/dist/browser-lazy/chunks/ishikawa-NTHJ7BUO.js +0 -6
- package/dist/browser-lazy/chunks/journey-3T62IEHN.js +0 -16
- package/dist/browser-lazy/chunks/kanban-U6DQ7LWQ.js +0 -20
- package/dist/browser-lazy/chunks/pie-4QYMTQ7W.js +0 -15
- package/dist/browser-lazy/chunks/radar-L5B4CNEL.js +0 -16
- package/dist/browser-lazy/chunks/render-core-CIGKBI2T.js +0 -3
- package/dist/browser-lazy/chunks/requirement-5QVLRI6Z.js +0 -19
- package/dist/browser-lazy/chunks/sequence-G6DQHPR7.js +0 -5
- package/dist/browser-lazy/chunks/state-6DEA5BXE.js +0 -4
- package/dist/chunk-XCEEF3NJ.js +0 -2
- package/dist/chunk-YQKNJNU4.js +0 -52
- package/dist/zenuml/chunks/chunk-7QDAZ2HL.js +0 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as e,b as t}from"./chunk-CQE4HQEW.js";import{b as n,c as i}from"./chunk-LH7HUDKW.js";import{d as r}from"./chunk-5FQ534HP.js";import{a as a}from"./chunk-BY2CPG6B.js";import{a as o,b as s,c as l,d as h,f as u,g as d,h as x,i as y,j as c}from"./chunk-SZELX2EJ.js";import{i as f}from"./chunk-AMJLVPUB.js";import{l as g,o as p,p as m,q as M,r as b,s as $,t as w,x as k}from"./chunk-HLWUNUCM.js";import{r as v}from"./chunk-TYZOZXUJ.js";import{c as S,d as C,h as P}from"./chunk-NO7ZIVRU.js";import{C as N,Ma as W,Na as L,Q as E,Qa as I,R as B,Ua as R,Wa as H,ca as A,da as F,ga as O,t as z}from"./chunk-Z3FDIVLN.js";function j(e,t){return"invisible"===e.style?[]:e.points.slice(1).flatMap((n,i)=>{let r=e.points[i],a=.01>=Math.abs(r.y-n.y);if(!a&&Math.abs(r.x-n.x)>.01)return[];let o=a?r.x:r.y,s=a?n.x:n.y;if(.01>=Math.abs(s-o))return[];let l=a?r.y:r.x;return[{edgeIndex:t,horizontal:a,cross:l,bucket:Math.floor(l/.01),lo:Math.min(o,s),hi:Math.max(o,s),sign:Math.sign(s-o)}]})}function Y(e){let t=e.flatMap(j).sort((e,t)=>e.lo-t.lo||e.edgeIndex-t.edgeIndex),n=new Map,i=new Set;for(let e of t){for(let t=-1;t<=1;t++){let r=`${e.horizontal}:${e.bucket+t}`,a=(n.get(r)??[]).filter(t=>t.hi-e.lo>.01);for(let t of(n.set(r,a),a))t.edgeIndex===e.edgeIndex||t.sign===e.sign||Math.abs(t.cross-e.cross)>.01||Math.min(e.hi,t.hi)-e.lo<=.01||i.add(`${Math.min(e.edgeIndex,t.edgeIndex)}:${Math.max(e.edgeIndex,t.edgeIndex)}`)}let t=`${e.horizontal}:${e.bucket}`;n.get(t).push(e)}return i.size}function Q(e,t){let n=j(e,0),i=[];if(0===n.length)return i;let r=Z(e);for(let e of t){let t=Z(e);t.x0>r.x1+.01||t.x1<r.x0-.01||t.y0>r.y1+.01||t.y1<r.y0-.01||j(e,1).some(e=>n.some(t=>t.horizontal===e.horizontal&&t.sign!==e.sign&&.01>=Math.abs(t.cross-e.cross)&&Math.min(t.hi,e.hi)-Math.max(t.lo,e.lo)>.01))&&i.push(e)}return i}function Z(e){let t=1/0,n=1/0,i=-1/0,r=-1/0;for(let a of e.points)t=Math.min(t,a.x),i=Math.max(i,a.x),n=Math.min(n,a.y),r=Math.max(r,a.y);return{x0:t,y0:n,x1:i,y1:r}}function q(e,t=!1){let n=C.width,i=t?n:C.height,r=e??"var(--_arrow)",a=`${e?`-${_(e)}`:""}${t?"-fixed":""}`,o={fill:r,stroke:r,strokeWidth:String(C.strokeWidth),strokeLinejoin:"round"};return[v(`arrowhead${a}`,{width:n,height:i},"end",o,t?"userSpaceOnUse":void 0),v(`arrowhead-start${a}`,{width:n,height:i},"start",o,t?"userSpaceOnUse":void 0)]}function V(e,t=!1){let n=C.width,i=`${e?`-${_(e)}`:""}${t?"-fixed":""}`,r=e??"var(--_arrow)",a={shape:"circle",size:{width:n,height:n},...t?{units:"userSpaceOnUse"}:{},orient:"auto",geometry:{kind:"circle",cx:n/2,cy:n/2,r:n/2-.75},paint:{fill:"none",stroke:r,strokeWidth:"1"}};return[{...a,id:`circlehead${i}`,ref:{x:n-.5,y:n/2}},{...a,id:`circlehead-start${i}`,ref:{x:.5,y:n/2}}]}function U(e,t=!1){let n=C.width,i=`${e?`-${_(e)}`:""}${t?"-fixed":""}`,r=e??"var(--_arrow)",a=n-1.25,o={shape:"cross",size:{width:n,height:n},...t?{units:"userSpaceOnUse"}:{},orient:"auto",geometry:{kind:"compound",children:[{kind:"line",x1:1.25,y1:1.25,x2:a,y2:a},{kind:"line",x1:1.25,y1:a,x2:a,y2:1.25}]},paint:{stroke:r,strokeWidth:String(1.25),strokeLinecap:"round"}};return[{...o,id:`crosshead${i}`,ref:{x:a+.625,y:n/2}},{...o,id:`crosshead-start${i}`,ref:{x:.625,y:n/2}}]}function J(e,t,n,i){let r=[...q()];for(let t of(n&&r.push(...V()),i&&r.push(...U()),e))r.push(...q(t)),n&&r.push(...V(t)),i&&r.push(...U(t));for(let e of t)r.push(...q(e,!0)),n&&r.push(...V(e,!0)),i&&r.push(...U(e,!0));return r}function T(e){return"circle"===e?"circlehead":"cross"===e?"crosshead":"arrowhead"}function _(e){if(/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(e))return`23${e.slice(1)}`;if(/^[a-z]+$/i.test(e))return e;let t=`color-u-${Array.from(e,e=>e.codePointAt(0).toString(16)).join("-")}`;return t.length<=233?t:`color-h-${f(e).slice(8)}`}var X=a(J(new Set,new Set([void 0]),!0,!0));function D(e,t){let n=e.inlineStyle?.["stroke-width"]?"-fixed":"",i=(t.lineWidth??1)*("thick"===e.style?2:1);return{start:e.hasArrowStart?X(`${T(e.startMarker??"arrow")}-start${n}`,i,"start"):0,end:e.hasArrowEnd?X(`${T(e.endMarker??"arrow")}${n}`,i,"end"):0}}function G(e,t){return e.curve?function(e){let t=e[0],n=`M ${t.x} ${t.y}`,i=[];for(let t=1;t<e.length;t++){let r=e[t-1],a=e[t],o=(r.x+a.x)/2;n+=` C ${o} ${r.y}, ${o} ${a.y}, ${a.x} ${a.y}`,i.push({kind:"cubic",control1:{x:o,y:r.y},control2:{x:o,y:a.y},end:a})}return A(n,t,i)}(e.points):(t.edgeBendRadius??0)>0?F(e.points,t.edgeBendRadius,{terminalClearance:D(e,t)}):void 0}function K(e,t){if("invisible"===e.style||e.points.length<2||!e.hasArrowStart&&!e.hasArrowEnd)return[];let n=e.inlineStyle?.stroke??t.edgeStrokeColor,i=!!e.inlineStyle?.["stroke-width"],r=J(new Set(n?[n]:[]),new Set(i?[n]:[]),"circle"===e.startMarker||"circle"===e.endMarker,"cross"===e.startMarker||"cross"===e.endMarker),a=`${n?`-${_(n)}`:""}${i?"-fixed":""}`,o=e.hasArrowStart?r.find(t=>t.id===`${T(e.startMarker??"arrow")}-start${a}`):void 0,s=e.hasArrowEnd?r.find(t=>t.id===`${T(e.endMarker??"arrow")}${a}`):void 0,l=G(e,t),h=l?.geometry??{kind:"polyline",points:e.points};return I({route:{geometry:h,closed:!1,contours:l?.contours??O(h,!1)},stroke:{width:e.inlineStyle?.["stroke-width"]??String((t.lineWidth??1)*("thick"===e.style?2:1))},markers:{start:o,mid:[],end:s}})}var ee=new WeakMap,et=e=>({fill:e.fill,stroke:e.stroke,strokeWidth:e.strokeWidth}),en=e=>({stroke:e.stroke,strokeWidth:e.strokeWidth}),ei=(e,t)=>({geometry:{kind:"polygon",points:e},paint:et(t),routing:{kind:"polygon",points:e}}),er=(e,t,n,i={})=>({geometry:{kind:"path",d:t},paint:{...et(n),fill:"none"===i.fill?"none":n.fill},routing:{kind:"envelope",x:e.x,y:e.y,width:e.width,height:e.height,reason:i.reason??"closed curved path uses a conservative routing envelope"}});function ea(e,t,n){var i,r,a,o;let s=function(e,t){var n,i,r,a;let{x:o,y:s,width:l,height:h}=e,u=o+l,d=s+h,x=o+l/2,y=s+h/2;switch(e.semanticShape){case"bang":return ei(Array.from({length:16},(e,t)=>{let n=-Math.PI/2+t*Math.PI/8,i=t%2==0?1:.62;return{x:x+Math.cos(n)*l/2*i,y:y+Math.sin(n)*h/2*i}}),t);case"notch-rect":case"tag-rect":return ei([{x:o+10,y:s},{x:u,y:s},{x:u,y:d},{x:o,y:d},{x:o,y:s+10}],t);case"cloud":return er(e,`M${o+.18*l} ${d}C${o-4} ${d} ${o-4} ${y} ${o+.12*l} ${y}C${o+.08*l} ${s+.15*h} ${o+.38*l} ${s-4} ${o+.48*l} ${s+.18*h}C${o+.65*l} ${s-5} ${u} ${s+.16*h} ${o+.88*l} ${y}C${u+5} ${y} ${u+5} ${d} ${o+.72*l} ${d}Z`,t);case"hourglass":return ei([{x:o,y:s},{x:u,y:s},{x:o+.62*l,y:y},{x:u,y:d},{x:o,y:d},{x:o+.38*l,y:y}],t);case"bolt":return ei([{x:o+.55*l,y:s},{x:o+.25*l,y:y},{x:o+.48*l,y:y},{x:o+.35*l,y:d},{x:o+.78*l,y:s+.4*h},{x:o+.55*l,y:s+.4*h}],t);case"brace":return ep(e,`M${u} ${s}C${o+.4*l} ${s} ${o+.7*l} ${y} ${o} ${y}C${o+.7*l} ${y} ${o+.4*l} ${d} ${u} ${d}`,t);case"brace-r":return ep(e,`M${o} ${s}C${o+.6*l} ${s} ${o+.3*l} ${y} ${u} ${y}C${o+.3*l} ${y} ${o+.6*l} ${d} ${o} ${d}`,t);case"braces":return ep(e,`M${o+.25*l} ${s}C${o} ${s} ${o+.15*l} ${y} ${o} ${y}C${o+.15*l} ${y} ${o} ${d} ${o+.25*l} ${d}M${o+.75*l} ${s}C${u} ${s} ${o+.85*l} ${y} ${u} ${y}C${o+.85*l} ${y} ${u} ${d} ${o+.75*l} ${d}`,t);case"datastore":return ep(e,`M${o+8} ${s}H${u}V${d}H${o+8}M${o+8} ${s}C${o-2} ${s+.2*h} ${o-2} ${d-.2*h} ${o+8} ${d}`,t);case"delay":return er(e,`M${o} ${s}H${u-h/2}A${h/2} ${h/2} 0 0 1 ${u-h/2} ${d}H${o}Z`,t);case"h-cyl":return er(e,`M${o+10} ${s}H${u-10}A10 ${h/2} 0 0 1 ${u-10} ${d}H${o+10}A10 ${h/2} 0 0 1 ${o+10} ${s}Z M${u-10} ${s}A10 ${h/2} 0 0 0 ${u-10} ${d}`,t);case"lin-cyl":return er(e,`M${o} ${s+8}A${l/2} 8 0 0 1 ${u} ${s+8}V${d-8}A${l/2} 8 0 0 1 ${o} ${d-8}Z M${o} ${s+8}A${l/2} 8 0 0 0 ${u} ${s+8}M${o} ${d-16}A${l/2} 8 0 0 0 ${u} ${d-16}`,t);case"curv-trap":return er(e,`M${o+12} ${s}Q${x} ${s+8} ${u-12} ${s}L${u} ${d}Q${x} ${d-8} ${o} ${d}Z`,t);case"div-rect":return em(e,`M${o} ${s}H${u}V${d}H${o}ZM${o} ${y}H${u}`,t);case"doc":return er(e,`M${o} ${s}H${u}V${d-8}Q${o+.75*l} ${d+2} ${x} ${d-8}Q${o+.25*l} ${d-18} ${o} ${d-8}Z`,t);case"tri":return ei([{x:x,y:s},{x:u,y:d},{x:o,y:d}],t);case"fork":return{geometry:{kind:"rect",x:o,y:n=y-4,width:l,height:8},paint:{fill:i=t.stroke,stroke:i,strokeWidth:t.strokeWidth},routing:{kind:"rect",x:o,y:n,width:l,height:8}};case"win-pane":return em(e,`M${o} ${s}H${u}V${d}H${o}ZM${o+.28*l} ${s}V${d}M${o} ${s+.32*h}H${u}`,t);case"f-circ":return{geometry:{kind:"circle",cx:x,cy:y,r:r=Math.min(l,h)/2},paint:{fill:a=t.stroke,stroke:a,strokeWidth:t.strokeWidth},routing:{kind:"ellipse",cx:x,cy:y,rx:r,ry:r}};case"lin-doc":return er(e,`M${o} ${s}H${u}V${d-8}Q${o+.75*l} ${d+2} ${x} ${d-8}Q${o+.25*l} ${d-18} ${o} ${d-8}ZM${o+8} ${s+8}H${u-8}`,t);case"lin-rect":return em(e,`M${o} ${s}H${u}V${d}H${o}ZM${o+6} ${s}V${d}M${u-6} ${s}V${d}`,t);case"notch-pent":return ei([{x:o,y:s},{x:u-10,y:s},{x:u,y:y},{x:u-10,y:d},{x:o,y:d},{x:o+8,y:y}],t);case"flip-tri":return ei([{x:o,y:s},{x:u,y:s},{x:x,y:d}],t);case"docs":return er(e,`M${o+8} ${s}H${u}V${d-8}Q${o+.7*l} ${d} ${o+.45*l} ${d-8}Q${o+.22*l} ${d-16} ${o+8} ${d-8}ZM${o} ${s+8}H${o+8}M${o} ${s+8}V${d}`,t);case"st-rect":return er(e,`M${o+8} ${s}H${u}V${d-8}H${o+8}ZM${o} ${s+8}H${u-8}V${d}H${o}Z`,t);case"flag":return er(e,`M${o} ${s+6}Q${o+.25*l} ${s-4} ${x} ${s+6}Q${o+.75*l} ${s+16} ${u} ${s+6}V${d-6}Q${o+.75*l} ${d+4} ${x} ${d-6}Q${o+.25*l} ${d-16} ${o} ${d-6}Z`,t);case"sm-circ":return ec(x,y,.22*Math.min(l,h),t);case"cross-circ":{let n=er(e,`M${x} ${s}A${l/2} ${h/2} 0 1 1 ${x-.01} ${s}M${o+.28*l} ${s+.28*h}L${o+.72*l} ${s+.72*h}M${o+.72*l} ${s+.28*h}L${o+.28*l} ${s+.72*h}`,t);return n.routing={kind:"ellipse",cx:x,cy:y,rx:l/2,ry:h/2},n}case"bow-rect":return er(e,`M${o} ${s}Q${o+12} ${y} ${o} ${d}H${u}Q${u-12} ${y} ${u} ${s}Z`,t);case"tag-doc":return er(e,`M${o+10} ${s}H${u}V${d-8}Q${o+.7*l} ${d} ${x} ${d-8}Q${o+.25*l} ${d-16} ${o} ${d-8}V${s+10}ZM${o} ${s+10}L${o+10} ${s}`,t);case"text":return{geometry:{kind:"path",d:`M${o} ${s}`},paint:{fill:"none",stroke:"none"},routing:{kind:"none",reason:"text blocks have no painted enclosure"}};default:return null}}(e,t);if(s)return s;let{x:l,y:h,width:u,height:d}=e,x=l+u/2,y=h+d/2;switch(e.shape){case"state-note":{let e=Math.min(12,u/6,d/4);return ei([{x:l,y:h},{x:l+u-e,y:h},{x:l+u,y:h+e},{x:l+u,y:h+d},{x:l,y:h+d}],t)}case"diamond":case"state-choice":return ei([{x:x,y:y-d/2},{x:x+u/2,y:y},{x:x,y:y+d/2},{x:x-u/2,y:y}],t);case"stadium":{let e=d/2;return{geometry:{kind:"rect",x:l,y:h,width:u,height:d,rx:e,ry:e},paint:et(t),routing:{kind:"stadium",cx:x,cy:y,halfWidth:u/2,radius:e}}}case"ellipse":return{geometry:{kind:"ellipse",cx:x,cy:y,rx:u/2,ry:d/2},paint:et(t),routing:{kind:"ellipse",cx:x,cy:y,rx:u/2,ry:d/2}};case"circle":case"state-history":return ec(x,y,Math.min(u,d)/2,t);case"doublecircle":let c;return c=Math.max(0,(i=Math.min(u,d)/2)-5),{geometry:{kind:"compound",children:[{kind:"circle",cx:x,cy:y,r:i},{kind:"circle",cx:x,cy:y,r:c}]},paint:et(t),routing:{kind:"ellipse",cx:x,cy:y,rx:i,ry:i}};case"hexagon":{let e=d/4;return ei([{x:l+e,y:h},{x:l+u-e,y:h},{x:l+u,y:y},{x:l+u-e,y:h+d},{x:l+e,y:h+d},{x:l,y:y}],t)}case"cylinder":let f,g,p;return f=l+u/2,{geometry:{kind:"compound",children:[{kind:"rect",x:l,y:g=h+7,width:u,height:p=d-14},{kind:"line",x1:l,y1:g,x2:l,y2:g+p},{kind:"line",x1:l+u,y1:g,x2:l+u,y2:g+p},{kind:"ellipse",cx:f,cy:h+d-7,rx:u/2,ry:7},{kind:"ellipse",cx:f,cy:g,rx:u/2,ry:7}]},paint:et(t),childPaints:[{fill:t.fill,stroke:"none"},en(t),en(t),et(t),et(t)],routing:{kind:"cylinder",cx:f,y:h,width:u,height:d,capRadiusY:7}};case"asymmetric":return ei([{x:l+12,y:h},{x:l+u,y:h},{x:l+u,y:h+d},{x:l+12,y:h+d},{x:l,y:y}],t);case"trapezoid":{let e=.15*u;return ei([{x:l+e,y:h},{x:l+u-e,y:h},{x:l+u,y:h+d},{x:l,y:h+d}],t)}case"trapezoid-alt":{let e=.15*u;return ei([{x:l,y:h},{x:l+u,y:h},{x:l+u-e,y:h+d},{x:l+e,y:h+d}],t)}case"lean-r":{let e=.15*u;return ei([{x:l+e,y:h},{x:l+u,y:h},{x:l+u-e,y:h+d},{x:l,y:h+d}],t)}case"lean-l":{let e=.15*u;return ei([{x:l,y:h},{x:l+u-e,y:h},{x:l+u,y:h+d},{x:l+e,y:h+d}],t)}case"subroutine":return{geometry:{kind:"compound",children:[{kind:"rect",x:l,y:h,width:u,height:d,rx:r=n??0,ry:r},{kind:"line",x1:l+8,y1:h,x2:l+8,y2:h+d},{kind:"line",x1:l+u-8,y1:h,x2:l+u-8,y2:h+d}]},paint:et(t),childPaints:[et(t),en(t),en(t)],routing:{kind:"rect",x:l,y:h,width:u,height:d}};case"state-start":return{geometry:{kind:"circle",cx:x,cy:y,r:a=Math.max(0,Math.min(u,d)/2-2)},paint:{fill:"var(--_text)",stroke:"none"},routing:{kind:"ellipse",cx:x,cy:y,rx:a,ry:a}};case"state-end":let m;return m=Math.max(0,(o=Math.max(0,Math.min(u,d)/2-2))-4),{geometry:{kind:"compound",children:[{kind:"circle",cx:x,cy:y,r:o},{kind:"circle",cx:x,cy:y,r:m}]},paint:{fill:"var(--_text)",stroke:"var(--_text)"},childPaints:[{fill:"none",stroke:"var(--_text)",strokeWidth:String(2*S.innerBox)},{fill:"var(--_text)",stroke:"none"}],routing:{kind:"ellipse",cx:x,cy:y,rx:o,ry:o}};case"state-fork":case"state-join":let M;return M=Math.min(u,d)/2,{geometry:{kind:"rect",x:l,y:h,width:u,height:d,rx:M,ry:M},paint:{fill:"var(--_text)",stroke:"none"},routing:{kind:"rect",x:l,y:h,width:u,height:d}};case"rounded":return ey(l,h,u,d,t,n??6);default:return ey(l,h,u,d,t,n??0)}}function eo(e){let t,n,i=ee.get(e);if(i&&i.x===e.x&&i.y===e.y&&i.width===e.width&&i.height===e.height&&i.shape===e.shape&&i.semanticShape===e.semanticShape)return i.profile;let r=ea(e,{fill:"",stroke:"",strokeWidth:""}).routing,a=(t=e.x+e.width/2,n=e.y+e.height/2,{N:{x:t,y:e.y},E:{x:e.x+e.width,y:n},S:{x:t,y:e.y+e.height},W:{x:e.x,y:n}}),o={};for(let e of["N","E","S","W"]){let t=function(e,t){let n=ed(e);if(!n)return null;let i="E"===t||"W"===t?"x":"y",r="x"===i?n.y+n.height/2:n.x+n.width/2;return ex(e,i,r,"E"===t||"S"===t)}(r,e)??a[e];if("none"===r.kind){o[e]={kind:"none",preferred:t};continue}if("envelope"===r.kind){let[n,i]=eh(r,e);o[e]={kind:"envelope",lo:n,hi:i,preferred:t};continue}let n=function(e,t,n){let[i,r]=eh(t,n);if("rect"===t.kind)return eu(i,r,4);if("stadium"===t.kind&&("N"===n||"S"===n))return eu(t.cx-(t.halfWidth-t.radius),t.cx+(t.halfWidth-t.radius),2);if("cylinder"===t.kind&&("E"===n||"W"===n))return eu(t.y+t.capRadiusY,t.y+t.height-t.capRadiusY,2);if("polygon"!==t.kind)return null;let a=ed(t),o="E"===n||"W"===n?"x":"y",s="x"===o?"E"===n?a.x+a.width:a.x:"S"===n?a.y+a.height:a.y,l=[];for(let e=0;e<t.points.length;e++){let n=t.points[e],i=t.points[(e+1)%t.points.length];if(Math.abs(n[o]-s)>1e-9||Math.abs(i[o]-s)>1e-9)continue;let r="x"===o?n.y:n.x,a="x"===o?i.y:i.x;l.push([Math.min(r,a),Math.max(r,a)])}if(l.length>0){let e=l.sort((e,t)=>t[1]-t[0]-(e[1]-e[0]))[0];return eu(e[0],e[1],2)}if(4===t.points.length&&function(e,t){let n=t.x+t.width/2,i=t.y+t.height/2,r=[{x:n,y:t.y},{x:t.x+t.width,y:i},{x:n,y:t.y+t.height},{x:t.x,y:i}];return e.every(e=>r.some(t=>1e-8>Math.abs(e.x-t.x)&&1e-8>Math.abs(e.y-t.y)))}(t.points,a)){let e=r-i;return eu(i,r,e<=40?e/4:10)}return null}(0,r,e);o[e]=n?{kind:"dynamic",...n,preferred:t}:{kind:"port",point:t,preferred:t}}let s={boundary:r,sides:o};return ee.set(e,{x:e.x,y:e.y,width:e.width,height:e.height,shape:e.shape,semanticShape:e.semanticShape,profile:s}),s}function es(e){let t=eo(e);return{N:{...t.sides.N.preferred},E:{...t.sides.E.preferred},S:{...t.sides.S.preferred},W:{...t.sides.W.preferred}}}function el(e,t,n){return ex(e,"E"===t||"W"===t?"x":"y",n,"E"===t||"S"===t)}function eh(e,t){let n=ed(e);return"E"===t||"W"===t?[n.y,n.y+n.height]:[n.x,n.x+n.width]}function eu(e,t,n){return t-e>2*n?{lo:e+n,hi:t-n}:null}function ed(e){switch(e.kind){case"rect":case"envelope":return{x:e.x,y:e.y,width:e.width,height:e.height};case"ellipse":return{x:e.cx-e.rx,y:e.cy-e.ry,width:2*e.rx,height:2*e.ry};case"stadium":return{x:e.cx-e.halfWidth,y:e.cy-e.radius,width:2*e.halfWidth,height:2*e.radius};case"cylinder":return{x:e.cx-e.width/2,y:e.y,width:e.width,height:e.height};case"polygon":{if(0===e.points.length)return null;let t=e.points.map(e=>e.x),n=e.points.map(e=>e.y),i=Math.min(...t),r=Math.min(...n);return{x:i,y:r,width:Math.max(...t)-i,height:Math.max(...n)-r}}case"none":return null}}function ex(e,t,n,i){let r=e=>"x"===t?{x:e,y:n}:{x:n,y:e};switch(e.kind){case"rect":case"envelope":{let a="x"===t?e.y:e.x,o=a+("x"===t?e.height:e.width);return n<a-1e-9||n>o+1e-9?null:r("x"===t?i?e.x+e.width:e.x:i?e.y+e.height:e.y)}case"ellipse":{let a="x"===t?e.cy:e.cx,o="x"===t?e.ry:e.rx,s="x"===t?e.cx:e.cy,l="x"===t?e.rx:e.ry;if(o<=0||l<=0)return null;let h=(n-a)/o;return Math.abs(h)>1+1e-9?null:r(s+(i?1:-1)*l*Math.sqrt(Math.max(0,1-h*h)))}case"stadium":{if("x"===t){let t=n-e.cy;if(Math.abs(t)>e.radius+1e-9)return null;let a=e.halfWidth-e.radius+Math.sqrt(Math.max(0,e.radius**2-t**2));return r(e.cx+(i?a:-a))}let a=Math.abs(n-e.cx);if(a>e.halfWidth+1e-9)return null;let o=Math.max(0,a-(e.halfWidth-e.radius));return r(e.cy+(i?1:-1)*Math.sqrt(Math.max(0,e.radius**2-o**2)))}case"cylinder":{let a=e.width/2,o=e.y+e.capRadiusY,s=e.y+e.height-e.capRadiusY;if("x"===t){if(n<e.y-1e-9||n>e.y+e.height+1e-9)return null;let t=n<o?o:n>s?s:n,l=t===n?0:(n-t)/e.capRadiusY;return r(e.cx+(i?1:-1)*a*Math.sqrt(Math.max(0,1-l*l)))}let l=(n-e.cx)/a;if(Math.abs(l)>1+1e-9)return null;let h=e.capRadiusY*Math.sqrt(Math.max(0,1-l*l));return r(i?s+h:o-h)}case"polygon":{let a=[];for(let i=0;i<e.points.length;i++){let r=e.points[i],o=e.points[(i+1)%e.points.length],s="x"===t?r.y:r.x,l="x"===t?o.y:o.x,h=r[t],u=o[t],d=l-s;if(1e-9>Math.abs(d)){1e-9>Math.abs(n-s)&&a.push(h,u);continue}let x=(n-s)/d;x>=-1e-9&&x<=1+1e-9&&a.push(h+x*(u-h))}let o=0===a.length?null:i?Math.max(...a):Math.min(...a);return null===o?null:r(o)}case"none":return null}}function ey(e,t,n,i,r,a){return{geometry:{kind:"rect",x:e,y:t,width:n,height:i,rx:a,ry:a},paint:et(r),routing:{kind:"rect",x:e,y:t,width:n,height:i}}}function ec(e,t,n,i){return{geometry:{kind:"circle",cx:e,cy:t,r:n},paint:et(i),routing:{kind:"ellipse",cx:e,cy:t,rx:n,ry:n}}}var ef=new Set(["text","brace","brace-r","braces","datastore","fork","f-circ","state-start","state-end","state-fork","state-join"]);function eg(e){return!ef.has(e.semanticShape??e.shape)}function ep(e,t,n){let i=er(e,t,n,{fill:"none",reason:"open symbol has no enclosing painted boundary"});return i.routing={kind:"envelope",x:e.x,y:e.y,width:e.width,height:e.height,reason:"open symbol routes to its layout envelope"},i}function em(e,t,n){let i=er(e,t,n);return i.routing={kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height},i}function eM(e,t,n,i=1e-6){let r=eo(e).boundary;if("envelope"!==r.kind&&"none"!==r.kind)return eb(r,t,n,i)}function eb(e,t,n,i){let r=n.x-t.x,a=n.y-t.y,o=Math.hypot(r,a);if(o<=1e-9||Math.abs(r)>i&&Math.abs(a)>i)return!1;let s=Math.abs(r)>Math.abs(a)?r>0?"E":"W":a>0?"S":"N",l="E"===s||"W"===s?t.y:t.x,h=el(e,s,l);if(!h||Math.hypot(h.x-t.x,h.y-t.y)>i)return!1;let u=0,d=0;if("ellipse"===e.kind)u=(t.x-e.cx)/e.rx/e.rx,d=(t.y-e.cy)/e.ry/e.ry;else if("stadium"===e.kind){let n=e.halfWidth-e.radius;u=t.x-Math.max(e.cx-n,Math.min(e.cx+n,t.x)),d=t.y-e.cy}else{if("cylinder"!==e.kind)return!0;let n=e.y+e.capRadiusY,i=e.y+e.height-e.capRadiusY;t.y>=n&&t.y<=i?u=t.x-e.cx:(u=(t.x-e.cx)/(e.width/2)/(e.width/2),d=(t.y-(t.y<n?n:i))/e.capRadiusY/e.capRadiusY)}let x=Math.hypot(u,d);return x>0&&Number.isFinite(x)&&(r/o*u+a/o*d)/x>0}function e$(e,t){if("polygon"===e.kind){let n=!1;for(let i=0,r=e.points.length-1;i<e.points.length;r=i++){let a=e.points[i],o=e.points[r],s=o.x-a.x,l=o.y-a.y;if(Math.abs((t.x-a.x)*l-(t.y-a.y)*s)<=1e-6*Math.hypot(s,l)&&(t.x-a.x)*(t.x-o.x)+(t.y-a.y)*(t.y-o.y)<=1e-6)return!0;a.y>t.y!=o.y>t.y&&t.x<(o.x-a.x)*(t.y-a.y)/(o.y-a.y)+a.x&&(n=!n)}return n}let n=el(e,"W",t.y),i=el(e,"E",t.y);return!!(n&&i&&t.x>=n.x-1e-6&&t.x<=i.x+1e-6)}function ew(e,t,n){if(!e$(e,t)||!e$(e,n))return!0;if("polygon"!==e.kind)return!1;let i=n.x-t.x,r=n.y-t.y,a=1e-6>=Math.abs(i),o=a?r:i;if(1e-9>=Math.abs(o))return!1;let s=[0,1];for(let n=0;n<e.points.length;n++){let i=e.points[n],r=e.points[(n+1)%e.points.length],l=a?eW(t.x,i,r):eN(t.y,i,r);if(l){let e=(a?l.y-t.y:l.x-t.x)/o;e>0&&e<1&&s.push(e)}}return s.sort((e,t)=>e-t),s.some((n,a)=>{let o=s[a+1];if(void 0===o||o-n<=1e-9)return!1;let l=(n+o)/2;return!e$(e,{x:t.x+i*l,y:t.y+r*l})})}function ek(e,t,n){if(e.length<2)return e;let i=eo(t).boundary;if("envelope"===i.kind||"none"===i.kind)return e;let r=n?e:[...e].reverse(),a=r[0];if(!e$(i,a))return e;let o=r.find(e=>Math.hypot(e.x-a.x,e.y-a.y)>1e-9);if(!o||eb(i,a,o,1e-6))return e;for(let t=0;t<r.length-1;t++){let a=r[t],o=r[t+1],s=o.x-a.x,l=o.y-a.y,h=Math.hypot(s,l);if(h<=1e-9)continue;if(Math.abs(s)>1e-6&&Math.abs(l)>1e-6)break;let u=Math.abs(s)>Math.abs(l)?s>0?"E":"W":l>0?"S":"N",d="polygon"===i.kind?eP(a,o,i.points):el(i,u,"E"===u||"W"===u?a.y:a.x);if(d){let u=((d.x-a.x)*s+(d.y-a.y)*l)/h**2,x=r.slice(t+1),y=x.find(e=>Math.hypot(e.x-d.x,e.y-d.y)>1e-9);if(u>=-1e-9&&u<=1+1e-9&&y&&eb(i,d,y,1e-6)){if(ew(i,a,d))return e;let t=1e-9>=Math.hypot(d.x-o.x,d.y-o.y)?x:[d,...x];return n?t:t.reverse()}}if(ew(i,a,o))break}return e}function ev(e,t,n){if(e.length<2)return e;let i=eo(t).boundary;if("rect"===i.kind||"envelope"===i.kind||"none"===i.kind)return e;let r=[...e];if(n)r[0]=eS(e[0],e[1],t,i);else{let n=e.length-1;r[n]=eS(e[n],e[n-1],t,i)}return r}function eS(e,t,n,i){let r=function(e,t,n){switch(n.kind){case"ellipse":return function(e,t,n){let{cx:i,cy:r,rx:a,ry:o}=n;if(a<=0||o<=0)return null;let{vertical:s,dir:l}=eC(e,t);if(s){let t=(e.x-i)/a;return Math.abs(t)>1?null:{x:e.x,y:r-l*o*Math.sqrt(Math.max(0,1-t*t))}}let h=(e.y-r)/o;return Math.abs(h)>1?null:{x:i-l*a*Math.sqrt(Math.max(0,1-h*h)),y:e.y}}(e,t,n);case"stadium":return function(e,t,n){let{cx:i,cy:r,halfWidth:a,radius:o}=n,{vertical:s,dir:l}=eC(e,t);if(s){let t=Math.abs(e.x-i);if(t<=a-o)return{x:e.x,y:r-l*o};let n=t-(a-o);return n>o?null:{x:e.x,y:r-l*Math.sqrt(Math.max(0,o*o-n*n))}}let h=Math.abs(e.y-r);return h>o?null:{x:i-l*(a-o+Math.sqrt(Math.max(0,o*o-h*h))),y:e.y}}(e,t,n);case"cylinder":return function(e,t,n){let{cx:i,y:r,width:a,height:o,capRadiusY:s}=n,l=a/2,h=r+s,u=r+o-s,{vertical:d,dir:x}=eC(e,t);if(!d){if(e.y>=h&&e.y<=u)return{x:i-x*l,y:e.y};let t=e.y<h?h:u,n=(e.y-t)/s;return Math.abs(n)>1?null:{x:i-x*l*Math.sqrt(Math.max(0,1-n*n)),y:e.y}}let y=(e.x-i)/l;if(Math.abs(y)>1)return null;let c=s*Math.sqrt(Math.max(0,1-y*y));return x>0?{x:e.x,y:h-c}:{x:e.x,y:u+c}}(e,t,n);case"polygon":return eP(e,t,n.points);case"rect":case"envelope":case"none":return e}}(e,t,i);if(null!==r)return r;if(e.x<n.x-1e-6||e.x>n.x+n.width+1e-6||e.y<n.y-1e-6||e.y>n.y+n.height+1e-6)return e;let a=[1e-6>=Math.abs(e.y-n.y)?"N":void 0,1e-6>=Math.abs(e.y-n.y-n.height)?"S":void 0,1e-6>=Math.abs(e.x-n.x)?"W":void 0,1e-6>=Math.abs(e.x-n.x-n.width)?"E":void 0].filter(e=>void 0!==e),o=1===a.length?a[0]:void 0;return o?el(i,o,"N"===o||"S"===o?e.x:e.y)??e:e}function eC(e,t){let n=e.x-t.x,i=e.y-t.y,r=Math.abs(n)<Math.abs(i);return{vertical:r,dir:(r?i:n)>=0?1:-1}}function eP(e,t,n){let{vertical:i}=eC(e,t),r=null,a=1/0;for(let o=0;o<n.length;o++){let s=n[o],l=n[(o+1)%n.length],h=l.x-s.x,u=l.y-s.y,d=e.x-s.x,x=e.y-s.y;if(1e-6>Math.abs(d*u-x*h)&&d*(e.x-l.x)+x*(e.y-l.y)<=1e-6){let i=Math.hypot(t.x-e.x,t.y-e.y),r=i>0?Math.min(1e-4/i,.5):0,a={x:e.x+(t.x-e.x)*r,y:e.y+(t.y-e.y)*r},o=!1,s=!1;for(let r=0,l=n.length-1;r<n.length;l=r++){let h=n[r],u=n[l],d=t.x-e.x,x=t.y-e.y,y=u.x-h.x,c=u.y-h.y,f=d*c-x*y;if(Math.abs(f)>1e-9){let t=h.x-e.x,n=h.y-e.y,r=(t*c-n*y)/f,a=(t*x-n*d)/f;r*i>1e-6&&r<=1&&a>=0&&a<=1&&(s=!0)}h.y>a.y!=u.y>a.y&&a.x<(u.x-h.x)*(a.y-h.y)/(u.y-h.y)+h.x&&(o=!o)}if(!o&&!s)return e}let y=i?eW(e.x,s,l):eN(e.y,s,l);if(!y)continue;let c=Math.hypot(y.x-t.x,y.y-t.y);c<a&&(r=y,a=c)}return r}function eN(e,t,n){let i=n.y-t.y;if(1e-6>Math.abs(i))return null;let r=(e-t.y)/i;return r<0||r>1?null:{x:t.x+r*(n.x-t.x),y:e}}function eW(e,t,n){let i=n.x-t.x;if(1e-6>Math.abs(i))return null;let r=(e-t.x)/i;return r<0||r>1?null:{x:e,y:t.y+r*(n.y-t.y)}}var eL=new Set(["cloud","brace","brace-r","braces","datastore","delay","h-cyl","lin-cyl","curv-trap","doc","lin-doc","docs","st-rect","flag","bow-rect","tag-doc"]);function eE(e,t,n=1.5){if("text"===e.semanticShape)return{policy:"none",onBoundary:!1};if(e.semanticShape&&eL.has(e.semanticShape))return{policy:"envelope",onBoundary:eI(t,e.x,e.y,e.width,e.height,n)};let i=function(e){let{x:t,y:n,width:i,height:r}=e,a=t+i,o=n+r,s=t+i/2,l=n+r/2;switch(e.semanticShape){case"bang":return Array.from({length:16},(e,t)=>{let n=-Math.PI/2+t*Math.PI/8,a=t%2==0?1:.62;return{x:s+Math.cos(n)*i/2*a,y:l+Math.sin(n)*r/2*a}});case"notch-rect":case"tag-rect":return[{x:t+10,y:n},{x:a,y:n},{x:a,y:o},{x:t,y:o},{x:t,y:n+10}];case"hourglass":return[{x:t,y:n},{x:a,y:n},{x:t+.62*i,y:l},{x:a,y:o},{x:t,y:o},{x:t+.38*i,y:l}];case"bolt":return[{x:t+.55*i,y:n},{x:t+.25*i,y:l},{x:t+.48*i,y:l},{x:t+.35*i,y:o},{x:t+.78*i,y:n+.4*r},{x:t+.55*i,y:n+.4*r}];case"tri":return[{x:s,y:n},{x:a,y:o},{x:t,y:o}];case"notch-pent":return[{x:t,y:n},{x:a-10,y:n},{x:a,y:l},{x:a-10,y:o},{x:t,y:o},{x:t+8,y:l}];case"flip-tri":return[{x:t,y:n},{x:a,y:n},{x:s,y:o}];default:return null}}(e);if(i)return{policy:"exact",onBoundary:eR(t,i,n)};let r=e.x+e.width/2,a=e.y+e.height/2,o=Math.min(e.width,e.height)/2;if("fork"===e.semanticShape)return{policy:"exact",onBoundary:eI(t,e.x,a-4,e.width,8,n)};if("sm-circ"===e.semanticShape){let i=.22*Math.min(e.width,e.height);return{policy:"exact",onBoundary:eB(t,r,a,i,i,n)}}if("cross-circ"===e.semanticShape)return{policy:"exact",onBoundary:eB(t,r,a,e.width/2,e.height/2,n)};if("f-circ"===e.semanticShape)return{policy:"exact",onBoundary:eB(t,r,a,o,o,n)};switch(e.shape){case"diamond":case"state-choice":return{policy:"exact",onBoundary:Math.abs(Math.abs(t.x-r)/(e.width/2)+Math.abs(t.y-a)/(e.height/2)-1)*Math.min(e.width,e.height)/2<n};case"circle":case"doublecircle":case"state-history":return{policy:"exact",onBoundary:eB(t,r,a,o,o,n)};case"state-start":case"state-end":{let e=Math.max(0,o-2);return{policy:"exact",onBoundary:eB(t,r,a,e,e,n)}}case"stadium":{let i=e.height/2,o=e.width/2-i,s=Math.abs(t.x-r);return{policy:"exact",onBoundary:s<=o?Math.abs(Math.abs(t.y-a)-i)<n:Math.abs(Math.hypot(s-o,t.y-a)-i)<n}}case"hexagon":{let i=e.height/4;return{policy:"exact",onBoundary:eR(t,[{x:e.x+i,y:e.y},{x:e.x+e.width-i,y:e.y},{x:e.x+e.width,y:a},{x:e.x+e.width-i,y:e.y+e.height},{x:e.x+i,y:e.y+e.height},{x:e.x,y:a}],n)}}case"cylinder":return{policy:"exact",onBoundary:function(e,t,n){let i=e.x+e.width/2,r=e.y+e.height/2,a=e.width/2;if(t.y>=e.y+7-n&&t.y<=e.y+e.height-7+n&&Math.abs(Math.abs(t.x-i)-a)<n)return!0;let o=t.y<r?e.y+7:e.y+e.height-7;return Math.abs(Math.hypot((t.x-i)/a,(t.y-o)/7)-1)*Math.min(a,7)<2*n}(e,t,n)};case"trapezoid":case"trapezoid-alt":case"lean-r":case"lean-l":case"asymmetric":return{policy:"exact",onBoundary:eR(t,function(e){let{x:t,y:n,width:i,height:r}=e,a=t+i,o=n+r,s=.15*i;switch(e.shape){case"trapezoid":return[{x:t+s,y:n},{x:a-s,y:n},{x:a,y:o},{x:t,y:o}];case"trapezoid-alt":return[{x:t,y:n},{x:a,y:n},{x:a-s,y:o},{x:t+s,y:o}];case"lean-r":return[{x:t+s,y:n},{x:a,y:n},{x:a-s,y:o},{x:t,y:o}];case"lean-l":return[{x:t,y:n},{x:a-s,y:n},{x:a,y:o},{x:t+s,y:o}];default:return[{x:t+12,y:n},{x:a,y:n},{x:a,y:o},{x:t+12,y:o},{x:t,y:n+r/2}]}}(e),n)};default:return{policy:"exact",onBoundary:eI(t,e.x,e.y,e.width,e.height,n)}}}function eI(e,t,n,i,r,a){let o=Math.abs(e.x-t)<a||Math.abs(e.x-(t+i))<a,s=Math.abs(e.y-n)<a||Math.abs(e.y-(n+r))<a;return o&&e.y>=n-a&&e.y<=n+r+a||s&&e.x>=t-a&&e.x<=t+i+a}function eB(e,t,n,i,r,a){return!(i<=0)&&!(r<=0)&&Math.abs(Math.hypot((e.x-t)/i,(e.y-n)/r)-1)*Math.min(i,r)<a}function eR(e,t,n){let i=1/0;for(let n=0;n<t.length;n++)i=Math.min(i,function(e,t,n){let i=n.x-t.x,r=n.y-t.y,a=i*i+r*r;if(0===a)return Math.hypot(e.x-t.x,e.y-t.y);let o=Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*r)/a));return Math.hypot(e.x-(t.x+o*i),e.y-(t.y+o*r))}(e,t[n],t[(n+1)%t.length]));return i<=n}var eH=64,eA=128;function eF(e){let t=e.nodes.size,n=e=>{for(let i of e)t++,n(i.children)};return n(e.subgraphs),t<=eH&&e.edges.length<=eA}function eO(e,t,n="end"){return Math.max(12,D(t??{style:"solid",hasArrowStart:!0,hasArrowEnd:!0},e)[n]+(e.edgeBendRadius??0))}var ez=new Set([...new Set(["rectangle","service","rounded","subroutine","state-fork","state-join"]),"diamond","circle","ellipse","doublecircle","stadium","hexagon","cylinder","state-start","state-end","state-choice","state-history","trapezoid","trapezoid-alt","asymmetric","lean-r","lean-l"]);function ej(e){return es(e)}function eY(e){let t=e.x+e.width/2,n=e.y+e.height/2,i=e.width/4,r=e.height/4;return{NE:{x:t+i,y:n-r},SE:{x:t+i,y:n+r},SW:{x:t-i,y:n+r},NW:{x:t-i,y:n-r}}}function eQ(e,t){let n=eo(e);if("envelope"!==n.boundary.kind&&"none"!==n.boundary.kind){for(let e of["N","E","S","W"]){let i=n.sides[e].preferred;if(.5>=Math.abs(i.x-t.x)&&.5>=Math.abs(i.y-t.y))return e}if(eU(e)){let n=eY(e);for(let e of["NE","SE","SW","NW"])if(.5>=Math.abs(n[e].x-t.x)&&.5>=Math.abs(n[e].y-t.y))return e}}}function eZ(e,t,n){let i=0;for(let[r,a]of[[t,!0],[n,!1]]){if(!r)continue;let t=eo(r);if("envelope"===t.boundary.kind||"none"===t.boundary.kind)continue;let n=a?e.points:[...e.points].reverse(),o=n[0],s=o&&n.find(e=>Math.hypot(e.x-o.x,e.y-o.y)>.01);if(!o||!s){i++;continue}let l=s.x-o.x,h=s.y-o.y;Math.abs(l)>.01&&Math.abs(h)>.01||eM(r,o,s,.5)||i++}return i}function eq(e,t,n){for(let[i,r]of[[t,!0],[n,!1]]){if(!i)continue;let t=eo(i);if("envelope"!==t.boundary.kind&&"none"!==t.boundary.kind)for(;e.points.length>2;){let[t,n]=r?e.points:[...e.points].reverse(),a={x:(t.x+n.x)/2,y:(t.y+n.y)/2};if(![t,n,a].every(e=>eE(i,e,.01).onBoundary))break;let o={...e,points:r?e.points.slice(1):e.points.slice(0,-1)};if(0!==eZ(o,r?i:void 0,r?void 0:i))break;e.points=o.points}}}function eV(e){let t=eo(e).boundary;return"envelope"!==t.kind&&"none"!==t.kind}function eU(e){let t=eo(e);return"polygon"===t.boundary.kind&&["N","E","S","W"].every(e=>"dynamic"===t.sides[e].kind)}function eJ(e){let t=new Set,n=new Map,i=(e,r)=>{for(let r of e){for(let e of(t.add(r.id),r.nodeIds))n.set(e,r.id);i(r.children,r.id)}};i(e.subgraphs,"");let r=new Map;return e.edges.map(e=>{if(e.source===e.target)return"self-loop";if(t.has(e.source)||t.has(e.target))return"container";let i=((e,t)=>{let n=new Set,i=[e];for(;i.length>0;){let e=i.pop();if(e===t)return!0;if(!n.has(e))for(let t of(n.add(e),r.get(e)??[]))i.push(t)}return!1})(e.target,e.source)?"feedback":(n.get(e.source)??"")!==(n.get(e.target)??"")?"cross-hierarchy":"primary-forward";return"feedback"!==i&&(r.has(e.source)||r.set(e.source,new Set),r.get(e.source).add(e.target)),i})}function eT(e){let t="LR"===e||"RL"===e;return{main:t?"x":"y",cross:t?"y":"x",sign:"RL"===e||"BT"===e?-1:1}}function e_(e,t,n){return e.x!==n.x&&e.y!==n.y&&(e.x===t.x&&t.y===n.y||e.y===t.y&&t.x===n.x)}function eX(e){let t=e;for(let e=0;e<8&&!(t.length<3);e++){let e=[t[0]];for(let n=1;n<t.length;n++){let i=t[n],r=e[e.length-1];if(.01>Math.abs(i.x-r.x)&&.01>Math.abs(i.y-r.y)){let e=t[n+1];if(e?!e_(r,i,e):i.x===r.x&&i.y===r.y)continue}e.push(i)}let n=e.length<3?e:[e[0]];if(e.length>=3){for(let t=1;t<e.length-1;t++){let i=n[n.length-1],r=e[t],a=e[t+1];.01>Math.abs((r.x-i.x)*(a.y-i.y)-(r.y-i.y)*(a.x-i.x))&&!e_(i,r,a)||n.push(r)}n.push(e[e.length-1])}if(n.length===t.length)return n;t=n}return t}function eD(e){let t=!1;for(let n=1;n<e.length;n++){let i=e[n-1],r=e[n];if(Math.abs(i.x-r.x)>.01&&Math.abs(i.y-r.y)>.01){t=!0;break}}if(!t)return e;let n=[e[0]];for(let t=1;t<e.length;t++){let i=n[n.length-1],r=e[t];if(Math.abs(i.x-r.x)>.01&&Math.abs(i.y-r.y)>.01){let e=n.length>=2?n[n.length-2]:void 0,t=!e||.01>Math.abs(e.y-i.y);n.push(t?{x:r.x,y:i.y}:{x:i.x,y:r.y})}n.push(r)}return n}function eG(e){return Math.max(0,eX(e).length-2)}function eK(e,t){for(let n=1;n<e.length;n++){let i=e[n-1],r=e[n],a=(r[t.main]-i[t.main])*t.sign,o=Math.abs(r[t.cross]-i[t.cross]);if(a>.01&&o>.01||a<-.01)return!1}return!0}function e1(e,t,n){let i=eo(e).sides[e2(t,n)];if("dynamic"===i.kind)return{lo:i.lo,hi:i.hi};if("port"===i.kind){let e=i.point[t.cross];return{lo:e-.5,hi:e+.5}}return null}function e0(e,t,n,i){var r,a;let o;return(r=eo(e),a=e2(n,i),"none"===(o=r.sides[a]).kind?null:"port"===o.kind?o.point:el(r.boundary,a,t))?.[n.main]??null}function e2(e,t){let n=t*e.sign>0;return"x"===e.main?n?"E":"W":n?"S":"N"}function e5(e,t,n){return{role:`${"feedback"===e||"self-loop"===e||"container"===e||"cross-hierarchy"===e?e:"flow"}-${t}`,side:e2(n,"source"===t!=("feedback"===e)?1:-1)}}function e8(e,t,n){return n?"N"===e||"S"===e?n.x:n.y:"N"===e||"S"===e?t.x+t.width/2:t.y+t.height/2}function e6(e,t,n=eJ(t)){return tt(e,t,n,!0)}function e4(e,t,n,i,r,a=!1){let o=eT(t.direction),s=tt(e,t,i,!1).sideUse;for(let t of e.edges){if(!r(t)||void 0===t.edgeIndex)continue;let e=i[t.edgeIndex];if("primary-forward"===e||"feedback"===e&&!t.label)for(let n of["source","target"]){let i="source"===n?t.source:t.target,{side:r}=e5(e,n,o),a=`${i}:${r}`,l=(s.get(a)??0)-1;l>0?s.set(a,l):s.delete(a)}}return{axis:o,ctx:{nodes:e.nodes,edges:e.edges,groups:e.groups,axis:o,style:n,classes:i,sideUse:s,finalLabelClearance:a,nodeLaneIndexes:z()?void 0:{},routeChannelGeometry:z()?void 0:new WeakMap}}}function e3(e,t,n){return"x"===e.main?{x:t,y:n}:{x:n,y:t}}function e7(e,t,n){return{main:e.cross,cross:e.main,sign:t<n?1:-1}}function e9(e,t,n){e.routeChannelGeometry?.delete(t),t.points=n}function te(e){let t=new Map;return e.forEach(e=>t.set(e.id,e)),t}function tt(e,t,n,i){let r=eT(t.direction),a=te(e.nodes),o=[],s=new Map,l=(e,t)=>{let n=`${e}:${t}`;s.set(n,(s.get(n)??0)+1)};for(let t of e.edges){if(void 0===t.edgeIndex)continue;let e=n[t.edgeIndex]??"primary-forward";for(let n of["source","target"]){let s="source"===n?t.source:t.target,h=a.get(s);if(!h)continue;let{role:u,side:d}=e5(e,n,r),x="source"===n?t.points[0]:t.points[t.points.length-1],y=x?eQ(h,x):void 0,c=y?"N"===y||"E"===y||"S"===y||"W"===y?y:y.includes(d)?d:y[0]:d;if("primary-forward"!==e&&("feedback"!==e||t.label)||l(s,d),!i){e8(c,h,x);continue}o.push({edge:t,endpoint:n,nodeId:s,side:c,role:u,coord:e8(c,h,x),edgeIndex:t.edgeIndex,port:y})}}if(!i)return{byEdge:new Map,sideUse:s};let h=new Map;for(let e of o){let t=`${e.nodeId}:${e.side}`;h.has(t)||h.set(t,[]),h.get(t).push(e)}let u=new Map,d=e=>+("source"!==e);for(let e of h.values()){e.sort((e,t)=>e.coord-t.coord||e.edgeIndex-t.edgeIndex||d(e.endpoint)-d(t.endpoint));let t=e.length;e.forEach((e,n)=>{let i={side:e.side,slotIndex:n,slotCount:t,role:e.role,...e.port?{port:e.port}:{}},r=u.get(e.edge)??{};r[e.endpoint]=i,u.set(e.edge,r)})}return{byEdge:u,sideUse:s}}function tn(e,t,n,i,r){let a=0,o=0,s=e=>{for(let t of(a=Math.min(a,e.x),o=Math.min(o,e.y),e.children))s(t)};for(let t of e)a=Math.min(a,t.x),o=Math.min(o,t.y);for(let e of n)s(e);for(let e of t){for(let t of e.points)a=Math.min(a,t.x),o=Math.min(o,t.y);let t=r&&e.labelBlock?x(e,r):null;t?(a=Math.min(a,t.x),o=Math.min(o,t.y)):e.labelPosition&&(a=Math.min(a,e.labelPosition.x),o=Math.min(o,e.labelPosition.y))}if(a>=0&&o>=0)return;let l=a<0?-a+i:0,h=o<0?-o+i:0,u=e=>{for(let t of(e.x+=l,e.y+=h,e.children))u(t)};for(let t of e)t.x+=l,t.y+=h;for(let e of n)u(e);for(let e of t){for(let t of e.points)t.x+=l,t.y+=h;e.labelPosition&&(e.labelPosition.x+=l,e.labelPosition.y+=h)}}var ti=new WeakMap;function tr(e){let t=e.points[0];if(!t)return;let n=[];for(let i of e.points)n.push(i.x-t.x,i.y-t.y);ti.set(e,{source:e.source,target:e.target,edgeIndex:e.edgeIndex,coordinates:n})}function ta(e,t){let n=e[0];if(!n||e.length<2||!(e.every(e=>e.source===n.source)||e.every(e=>e.target===n.target)||e.every(e=>e.source===n.source&&e.target===n.target||e.source===n.target&&e.target===n.source)))throw Error("Bundle construction requires related fan or parallel routes");for(let n of e)tr(n),t.add(n)}function to(e){let t=ti.get(e);if(!t||e.source!==t.source||e.target!==t.target||e.edgeIndex!==t.edgeIndex||2*e.points.length!==t.coordinates.length)return!1;let n=e.points[0];if(!n)return!1;for(let i=0;i<e.points.length;i++){let r=e.points[i];if(!(1e-6>=Math.abs(r.x-n.x-t.coordinates[2*i]))||!(1e-6>=Math.abs(r.y-n.y-t.coordinates[2*i+1])))return!1}return!0}function ts(e){return to(e)?ti.get(e):void 0}function tl(e,t){t&&ti.get(e)===t&&e.source===t.source&&e.target===t.target&&e.edgeIndex===t.edgeIndex&&tr(e)}function th(e,t){for(let n=1;n<e.length;n++){let i=e[n-1],a=e[n],o=Math.min(i.x,a.x),s=Math.max(i.x,a.x),l=Math.min(i.y,a.y),h=Math.max(i.y,a.y);for(let n=1;n<t.length;n++){let u=t[n-1],d=t[n];if(!(s<Math.min(u.x,d.x)||o>Math.max(u.x,d.x)||h<Math.min(u.y,d.y)||l>Math.max(u.y,d.y))&&(i.x!==a.x||u.x!==d.x)&&(i.y!==a.y||u.y!==d.y))return r([{points:e},{points:t}])}}return 0}function tu(e,t){let n=e.points.map(e=>({x:Number(E(e.x)),y:Number(E(e.y))})),i="thick"===e.style?2:1,r=Number(E((t.lineWidth??1)*i))/i,a={...t,lineWidth:r},o=!e.curve&&!(t.edgeBendRadius&&t.edgeBendRadius>0);return o?{regions:K({...e,points:n},a),points:n,directional:o}:{regions:K(e,a).map(e=>{let t="start"===e.position?n[0]:n.at(-1),i=e.bounds;if(!i)return{...e,anchor:t};let r=Math.max(...[i.x0,i.x1].flatMap(t=>[i.y0,i.y1].map(n=>Math.hypot(t-e.anchor.x,n-e.anchor.y))));return{...e,anchor:t,bounds:{x0:t.x-r,y0:t.y-r,x1:t.x+r,y1:t.y+r}}}),points:n,directional:o}}function td(e,t){if("invisible"===e.style||!e.hasArrowStart&&!e.hasArrowEnd)return[];if(!tx(e,t))return;let{regions:n}=tu(e,t);return n.length===+!!e.hasArrowStart+ +!!e.hasArrowEnd&&n.every(ty)?n:void 0}function tx(e,t){if(!e.points.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))||void 0!==t.edgeBendRadius&&!(Number.isFinite(t.edgeBendRadius)&&t.edgeBendRadius>=0))return!1;let n=(t.lineWidth??1)*("thick"===e.style?2:1);return!!e.inlineStyle?.["stroke-width"]||Number.isFinite(n)&&n>0}function ty(e){let t=e.bounds;return!!t&&[t.x0,t.y0,t.x1,t.y1].every(Number.isFinite)&&t.x0<=t.x1&&t.y0<=t.y1}function tc(e,t,n){if("mid"===n)return!1;let i=e=>"start"===n?e[0]:e.at(-1),r=i(e),a=i(t);if(!r||!a||r.x!==a.x||r.y!==a.y)return!1;let o=e=>{for(let t=1;t<e.length;t++){let i=e["start"===n?t:e.length-t-1];if(i.x!==r.x||i.y!==r.y)return i}},s=o(e),l=o(t);return!!s&&!!l&&(s.x===l.x&&s.y===l.y||(r.x===s.x||r.y===s.y)&&(r.x===l.x||r.y===l.y)&&Math.sign(s.x-r.x)===Math.sign(l.x-r.x)&&Math.sign(s.y-r.y)===Math.sign(l.y-r.y))}function tf(e,t){let n=e.bounds,i=t.bounds;if(!n||!i||!ty(e)||!ty(t))return!1;let r=[n.x0,n.y0,n.x1,n.y1,i.x0,i.y0,i.x1,i.y1];if(!r.every(Number.isFinite))return!1;let a=1e-10*r.reduce((e,t)=>e+Math.abs(t),0)+1e-9;return Number.isFinite(a)&&(n.x1+a<i.x0||i.x1+a<n.x0||n.y1+a<i.y0||i.y1+a<n.y0)}function tg(e,t){if(e.label&&t.label||e.style!==t.style||e.curve!==t.curve||e.animate!==t.animate||e.animation!==t.animation)return!1;let n=e.inlineStyle??{},i=t.inlineStyle??{};for(let e in n)if(!(e in i)||i[e]!==n[e])return!1;for(let e in i)if(!(e in n))return!1;let r=e.classNames??[],a=t.classNames??[];if(r.length!==a.length)return!1;for(let e=0;e<r.length;e++)if(r[e]!==a[e])return!1;return!0}function tp(e,t,n,i,r=e){if(!e.hasArrowStart&&!e.hasArrowEnd||"invisible"===e.style)return;let a=(e,t,i)=>({kind:"port",id:`${i}:${e.id??`${e.source}->${e.target}[${e.edgeIndex??n.indexOf(e)}]`}:${t}`});if(!tx({...e,points:t},i))return a(r,"mapping","marker");let o=tu(e,i),s=tu({...e,points:t},i),l=o.regions,h=s.regions;if(h.length!==+!!e.hasArrowStart+ +!!e.hasArrowEnd)return a(r,"unmeasured","marker");for(let u of h){let d=l.find(e=>e.position===u.position);if(!(d&&d.resource===u.resource&&d.repaint===u.repaint&&d.anchor.x===u.anchor.x&&d.anchor.y===u.anchor.y&&(o.directional&&s.directional?tc(o.points,s.points,u.position):e.curve?e.points.length===t.length&&e.points.every((e,n)=>e.x===t[n].x&&e.y===t[n].y):function(e,t,n){if("mid"===n||e.length<2||t.length<2)return!1;let i=e=>"start"===n?[e[0],e[1]]:[e.at(-1),e.at(-2)],[r,a]=i(e),[o,s]=i(t);return r.x===o.x&&r.y===o.y&&a.x===s.x&&a.y===s.y}(e.points,t,u.position)))){if(!ty(u))return a(r,u.position,"marker");for(let e of h)if(e!==u&&!tf(u,e))return a(r,e.position,"opposite-marker");for(let t of n){if(t===r||"invisible"===t.style||!t.hasArrowStart&&!t.hasArrowEnd)continue;if(!tx(t,i))return a(t,"mapping","peer-marker");let n=tu(t,i);for(let i of n.regions){let r="start"===u.position?e.source:e.target,o="start"===i.position?t.source:t.target;if(!(s.directional&&n.directional&&ty(i)&&u.position===i.position&&r===o&&u.resource===i.resource&&u.repaint===i.repaint&&u.anchor.x===i.anchor.x&&u.anchor.y===i.anchor.y&&tc(s.points,n.points,u.position)&&tg(e,t))&&!tf(u,i))return a(t,i.position,"peer-marker")}}}}}function tm(e,t,n,i,r=e){return void 0===tp(e,t,n,i,r)}function tM(e){return eU(e)?2:1}function tb(e,t){return eU(e)&&("NE"===t||"SE"===t||"SW"===t||"NW"===t)?eY(e)[t]:ej(e)[t]}function t$(e,t,n,i){let r=eo(t).boundary;if("rect"!==r.kind||e.points.length<2)return;let a=n?0:e.points.length-1,o=e.points[a],s=r.x,l=r.x+r.width,h=r.y,u=r.y+r.height,d=(e,t)=>.5>=Math.abs(e-t),x=(t,r)=>{let o=[...e.points];if(o[a]=t,Math.abs(t.x-r.x)>.01||Math.abs(t.y-r.y)>.01)if(n){let e=o[1];(!e||Math.abs(e.x-r.x)>.01||Math.abs(e.y-r.y)>.01)&&o.splice(1,0,r)}else{let e=o[o.length-2];(!e||Math.abs(e.x-r.x)>.01||Math.abs(e.y-r.y)>.01)&&o.splice(o.length-1,0,r)}tm(e,o,i.edges,i.style)&&e9(i,e,o)};if(d(o.x,s)||d(o.x,l)){let e=d(o.x,s)?s:l;o.y<h-.5?x({x:e,y:h},{x:e,y:o.y}):o.y>u+.5&&x({x:e,y:u},{x:e,y:o.y});return}if(d(o.y,h)||d(o.y,u)){let e=d(o.y,h)?h:u;o.x<s-.5?x({x:s,y:e},{x:o.x,y:e}):o.x>l+.5&&x({x:l,y:e},{x:o.x,y:e})}}function tw(e,t,n,i){if(!eU(t)||void 0===e.edgeIndex||n.classes?.[e.edgeIndex]!=="primary-forward")return null;let r=te(n.nodes),a=n.edges.filter(t=>t.source===e.source&&void 0!==t.edgeIndex&&n.classes?.[t.edgeIndex]==="primary-forward"&&r.has(t.target)).sort((e,t)=>{let n=r.get(e.target),a=r.get(t.target);return n[i.cross]+("y"===i.cross?n.height:n.width)/2-(a[i.cross]+("y"===i.cross?a.height:a.width)/2)||(e.edgeIndex??0)-(t.edgeIndex??0)}),o=function(e,t){if(2!==t&&3!==t)return null;let n=e2(e,1),i="E"===n?"NE":"S"===n?"SW":"NW",r="W"===n?"SW":"N"===n?"NE":"SE";return 2===t?[i,r]:[i,n,r]}(i,a.length);if(!o)return null;let s=a.indexOf(e);if(s<0)return null;let l=o[s],h=a.map(e=>{let t=r.get(e.target);return t[i.main]+("x"===i.main?t.width:t.height)/2});return{sourcePort:l,sourceLane:tb(t,l)[i.cross],targetsShareRank:Math.max(...h)-Math.min(...h)<=1}}function tk(e,t,n,i,r){let a=tw(e,t,i,r);if(!a||!a.targetsShareRank)return null;let o=e2(r,-1),s=ej(n)[o][r.cross];return .5>=Math.abs(a.sourceLane-s)?null:{sourcePort:a.sourcePort,sourceLane:a.sourceLane,targetPort:o,targetLane:s}}function tv(e,t,n){return!n.fixedLabels&&!n.finalLabelClearance&&!!n.classes&&void 0!==e.edgeIndex&&void 0!==t.edgeIndex&&"primary-forward"===n.classes[e.edgeIndex]&&"feedback"===n.classes[t.edgeIndex]&&t.source===e.target&&t.target===e.source}function tS(e){return`${e.source}->${e.target}`}function tC(e,t,n,i,r,a=r.axis){return tN(e,t,n,i,r,a,!1)}function tP(e,t,n,i,r,a){return tN(e,t,n,i,r,a,!0)}function tN(e,t,r,a,s,h,u){let d=u?void 0:[],x=i(s.nodeLaneIndexes,s.nodes,h.cross,4),y=x?n(x,t):null,c=x&&null!==y,f=c?x.offsets[y]??0:0,g=c?x.offsets[y+1]??0:s.nodes.length;for(let n=f;n<g;n++){let i=s.nodes[c?x.ordinals[n]:n];if(i.id===e.source||i.id===e.target)continue;let o=("x"===h.cross?i.x:i.y)-4,l=("x"===h.cross?i.x:i.y)+("y"===h.cross?i.height:i.width)+4;if(t>o&&t<l){let e=("x"===h.main?i.x:i.y)-4;if(Math.min(a,("x"===h.main?i.x:i.y)+("x"===h.main?i.width:i.height)+4)-Math.max(r,e)>.01){if(u)return!0;d.push({kind:"node",id:i.id})}}}if(s.groups?.length&&"invisible"!==e.style){let e=n=>{let i=n.concurrencyRegion?0:n.headerHeight??n.height,o=!Number.isFinite(i)||i<0,s="x"===h.cross?n.x:n.y,l=s+("x"===h.cross?n.width:i),x="x"===h.main?n.x:n.y,y=x+("x"===h.main?n.width:i);if(o||i>0&&n.width>0&&t>s&&t<l&&Math.min(a,y)>Math.max(r,x)){if(u)return!0;d.push({kind:"group-header",id:n.id})}for(let t of n.children)if(e(t))return!0;return!1};for(let t of s.groups)if(e(t))return!0}let p=s.routeChannelGeometry;for(let n=0;n<s.edges.length;n++){let i=s.edges[n];if(i===e||void 0!==e.edgeIndex&&i.edgeIndex===e.edgeIndex)continue;let x=!tv(e,i,s)&&i.label&&i.labelPosition?i.labelBlock??o(N(i.label,i.labelContent),s.style):void 0;if(x){let e=x.width+2*l,n=x.height+2*l,o=i.labelPosition.x-e/2,s=i.labelPosition.y-n/2,y=("x"===h.main?o:s)-4,c=y+("x"===h.main?e:n)+8,f=("y"===h.cross?s:o)-4,g=f+("y"===h.cross?n:e)+8;if(t>f&&t<g&&Math.min(a,c)-Math.max(r,y)>.01){if(u)return!0;d.push({kind:"label",id:tS(i)})}}if(!(p&&!function(e,t,n,i,r,a,o,s){if(!Number.isFinite(i)||!Number.isFinite(r)||!Number.isFinite(a))return!0;if(t.points.length<2)return!1;let l=e.get(t);if(void 0===l&&(l=function(e){let t=1/0,n=-1/0,i=1/0,r=-1/0;for(let a of e){let e=a.x,o=a.y;if(!Number.isFinite(e)||!Number.isFinite(o))return null;t=Math.min(t,e),n=Math.max(n,e),i=Math.min(i,o),r=Math.max(r,o)}return{minX:t,maxX:n,minY:i,maxY:r}}(t.points),e.set(t,l)),!l)return!0;let h="x"===n?l.minX:l.minY,u="x"===n?l.maxX:l.maxY;if(i<h&&h-i>=4||i>u&&i-u>=4)return!1;let d="x"===n?l.minY:l.minX;return Math.min(a,"x"===n?l.maxY:l.maxX)-Math.max(r,d)>.01}(p,i,h.cross,t,r,a,0,0)))for(let n=1;n<i.points.length;n++){let o=i.points[n-1],s=i.points[n];if(Math.abs(("x"===h.cross?o.x:o.y)-("x"===h.cross?s.x:s.y))>.01||Math.abs(("x"===h.cross?o.x:o.y)-t)>=4)continue;let l=Math.min("x"===h.main?o.x:o.y,"x"===h.main?s.x:s.y);if(Math.min(a,Math.max("x"===h.main?o.x:o.y,"x"===h.main?s.x:s.y))-Math.max(r,l)>.01){if(i.target===e.target&&i.source!==e.source&&tg(e,i)&&.01>Math.abs(("x"===h.cross?o.x:o.y)-t)&&n===i.points.length-1)continue;if(u)return!0;d.push({kind:"channel",id:tS(i)});break}}}if(e.label){let t=e.labelBlock??o(N(e.label,e.labelContent),s.style);if(a-r<("x"===h.main?t.width:t.height)+2*l+8){if(u)return!0;d.push({kind:"label",id:tS(e)})}}return!u&&tI(d)}function tW(e,t,n,i){if(!e.label)return{x:(t.x+n.x)/2,y:(t.y+n.y)/2};let r=e.labelBlock??o(N(e.label,e.labelContent),i.style),a=2,s=i.style.lineWidth??1,h=u(e,s,"start"),y=u(e,s,"end"),c=t=>Math.max(i.finalLabelClearance?8:a,t.id===e.source?h:0,t.id===e.target?y:0),f=i.finalLabelClearance?16:a,g=i.finalLabelClearance?8:a,p=i.edges.filter(t=>t!==e&&(void 0===e.edgeIndex||t.edgeIndex!==e.edgeIndex)),m=t=>!i.finalLabelClearance&&tv(e,t,i)?null:x(t,i.style),M=.01>Math.abs(t.x-n.x),b=M!==.01>Math.abs(t.y-n.y),$=M?"y":"x",w=M?"x":"y",k=M?"x1":"y1",v=M?"y1":"x1",S=(M?r.height:r.width)/2+l,C=(M?r.width:r.height)/2+l,P=Math.min(t[w],n[w])-C-1e-6,W=Math.max(t[w],n[w])+C+1e-6,L=Math.min(t[$],n[$])-S-1e-6,E=Math.max(t[$],n[$])+S+1e-6,I,B=()=>{if(I)return I;let e=I=[],t=(t,n,i,r,a,o,s)=>{(!b||(M?a:o)+s>=P&&(M?t:n)-s<=W&&(M?o:a)+s>=L&&(M?n:t)-s<=E)&&e.push({x:t,y:n,w:i,h:r,x1:a,y1:o,gap:s})};for(let e of i.nodes)t(e.x,e.y,e.width,e.height,e.x+e.width,e.y+e.height,c(e));for(let e of p){let n=m(e);n&&t(n.x,n.y,n.w,n.h,n.x+n.w,n.y+n.h,f);for(let n=1;n<e.points.length;n++){let i=e.points[n-1],r=e.points[n],a=Math.min(i.x,r.x),o=Math.max(i.x,r.x),s=Math.min(i.y,r.y),l=Math.max(i.y,r.y);t(a,s,o-a,l-s,o,l,g)}}return e},R=(e,t)=>{let n=d(e,t,r);return!B().some(e=>((e,t,n,i,r,o,s,l,h=a)=>e<r+s+h&&e+n+h>r&&t<o+l+h&&t+i+h>o)(n.x,n.y,n.w,n.h,e.x,e.y,e.w,e.h,e.gap))};for(let e of[.5,1/3,2/3,.25,.75,1/6,5/6]){let i=t.x+(n.x-t.x)*e,r=t.y+(n.y-t.y)*e;if(R(i,r))return{x:i,y:r}}if(!b)return null;let H=Math.min(t[$],n[$]),A=Math.max(t[$],n[$]),F=(H+A)/2;if(A-H<2*S-.02)return null;let O=[F];for(let e of B())e[k]+e.gap<=t[w]-C||e[w]-e.gap>=t[w]+C||O.push(e[$]-e.gap-S-.01,e[v]+e.gap+S+.01);for(let e of O.filter(e=>e>=H+S-.01&&e<=A-S+.01).sort((e,t)=>Math.abs(e-F)-Math.abs(t-F)||e-t).slice(0,16)){let n="x"===$?{x:e,y:t.y}:{x:t.x,y:e};if(R(n.x,n.y))return n}return null}function tL(e,t,n,i=1/0){if("invisible"===t.style)return 0;let r=0;for(let a of n.edges)if(a!==t&&"invisible"!==a.style&&(void 0===t.edgeIndex||a.edgeIndex!==t.edgeIndex)&&(r+=th(e,a.points))>i)break;return r}function tE(e,t){for(let n of t.nodes)if(n.id!==e.source&&n.id!==e.target&&tj(e.points,n))return!0;return!1}function tI(e){let t=new Set;return e.filter(e=>{let n=`${e.kind}:${e.id}`;return!t.has(n)&&(t.add(n),!0)})}function tB(e,t,n,i,r,a){let o=e1(t,r,1),s=e1(n,r,-1);if(!o||!s)return null;let l=Math.max(o.lo,s.lo),h=Math.min(o.hi,s.hi),u=(e,t)=>eU(e)?{lo:e[r.cross]+2,hi:e[r.cross]+("y"===r.cross?e.height:e.width)-2}:t,d=Math.max(u(t,o).lo,u(n,s).lo),x=Math.min(u(t,o).hi,u(n,s).hi),y=e=>e[r.cross]+("y"===r.cross?e.height:e.width)/2,c=e=>.5>=Math.abs(e-y(n))||.5>=Math.abs(e-y(t));if(d>x)return{overlapLo:l,overlapHi:h,relaxedLo:d,relaxedHi:x,candidates:[],isPortLane:c,emptyRelaxed:!0};let f=[],g=e=>{f.every(t=>Math.abs(t-e)>.5)&&f.push(e)},p=n[r.cross]+("y"===r.cross?n.height:n.width)/2,m=t[r.cross]+("y"===r.cross?t.height:t.width)/2,M=i.sideUse?.get(`${t.id}:${e2(r,1)}`)??1,b=eU(t)&&1===M&&tM(t)>=tM(n),$=i.classes&&i.edges.some(t=>t!==e&&t.source===e.target&&t.target===e.source&&!t.label&&!e.label&&void 0!==t.edgeIndex&&void 0!==e.edgeIndex),w=$&&eU(t)&&eU(n);if(void 0!==a)f.push(a);else if(w){let n="feedback"===i.classes[e.edgeIndex]?1:-1;g(t[r.cross]+("y"===r.cross?t.height:t.width)/2+n*(("y"===r.cross?t.height:t.width)/4)),g((l+h)/2+12*n/2),g(p),g(m)}else if($)g((l+h)/2+("feedback"===i.classes[e.edgeIndex]?1:-1)*12/2),g(p),g(m);else if(b)g(m),g(p);else{let n=tw(e,t,i,r)?.sourceLane;void 0!==n&&g(n),g(p),g(m)}if(void 0===a){if(e.points.length>0){g(e.points[e.points.length-1][r.cross]),g(e.points[0][r.cross]);let t=e.points.map(e=>e[r.cross]);g(Math.min(...t)),g(Math.max(...t))}g((l+h)/2),g((l+(l+h)/2)/2),g(((l+h)/2+h)/2)}return{overlapLo:l,overlapHi:h,relaxedLo:d,relaxedHi:x,candidates:f,isPortLane:c,emptyRelaxed:!1}}function tR(e,t,n,i,r,a,o){let s=o.isPortLane(i)?o.relaxedLo:o.overlapLo,l=o.isPortLane(i)?o.relaxedHi:o.overlapHi;if(i<s-.01||i>l+.01)return{blockers:[{kind:"span",id:tS(e)}]};let h=e0(t,i,a,1),u=e0(n,i,a,-1);if(null===h||null===u||(u-h)*a.sign<=.01)return{blockers:[{kind:"span",id:tS(e)}]};let d=tC(e,i,Math.min(h,u),Math.max(h,u),r,a);if(d.length>0)return{blockers:d};let x=e3(a,h,i),y=e3(a,u,i),c=r.nodeLaneIndexes&&!z()?o.priorCrossings??=tL(e.points,e,r):tL(e.points,e,r);if(tL([x,y],e,r,c)>c)return{blockers:[{kind:"crossing",id:tS(e)}]};let f=tW(e,x,y,r);return null===f?{blockers:[{kind:"label",id:tS(e)}]}:{start:x,end:y,slot:f}}function tH(e,t,n,i,r=i.axis,a,o=e){let s=tB(e,t,n,i,r,a);if(!s)return{applied:!1,blockers:[]};if(s.emptyRelaxed)return{applied:!1,blockers:[{kind:"span",id:tS(e)}]};let l=[];for(let a=0;a<s.candidates.length;a++){let h=tR(e,t,n,s.candidates[a],i,r,s);if("blockers"in h){l.push(...h.blockers);continue}let u=tp(e,[h.start,h.end],i.edges,i.style,o);if(u){l.push(u);continue}let d=eX(e.points);if(2===d.length&&.01>=Math.abs(d[0][r.cross]-d[1][r.cross])){let a=+!!eQ(t,d[0])+ +!!eQ(n,d[1]),o=+!!eQ(t,h.start)+ +!!eQ(n,h.end)<a,u=()=>{let t=i.edges.filter(t=>t!==e);return Y([{...e,points:[h.start,h.end]},...t])<Y([{...e,points:d},...t])};if(o&&tL([h.start,h.end],e,i)>=tL(d,e,i)&&!u()){let a=d[0][r.cross],o=tR(e,t,n,a,i,r,{...s,overlapLo:Math.min(s.overlapLo,a),overlapHi:Math.max(s.overlapHi,a),relaxedLo:Math.min(s.relaxedLo,a),relaxedHi:Math.max(s.relaxedHi,a)});if(!("blockers"in o)&&.01>=Math.hypot(o.start.x-d[0].x,o.start.y-d[0].y)&&.01>=Math.hypot(o.end.x-d[1].x,o.end.y-d[1].y))return e.label&&(e.labelPosition=o.slot??void 0),{applied:!0,blockers:[]};"blockers"in o&&l.push(...o.blockers);continue}}return e9(i,e,[h.start,h.end]),e.label&&(e.labelPosition=h.slot??void 0),{applied:!0,blockers:[],usedCandidateIndex:a}}return{applied:!1,blockers:tI(l)}}function tA(e,t,n,i,r=i.axis){let a=tB(e,t,n,i,r);if(!a||a.emptyRelaxed||!eV(t)||!eV(n)||!eK(e.points,r))return null;for(let o of a.candidates)if(!("blockers"in tR(e,t,n,o,i,r,a)))return o;return null}function tF(e,t,n,i,r){let a=eT(n);return{ctx:{nodes:e,edges:t,groups:r,axis:a,style:i},axis:a}}function tO(e,t,n,i=e.labelPosition){if(!e.label||!i)return null;let r=e.labelBlock??o(N(e.label,e.labelContent),n),a=d(i.x,i.y,r);for(let n of t)if(n!==e&&(void 0===e.edgeIndex||n.edgeIndex!==e.edgeIndex))for(let t=1;t<n.points.length;t++){let i=n.points[t-1],r=n.points[t],o=.01>Math.abs(i.x-r.x),s=.01>Math.abs(i.y-r.y);if(!o&&!s)continue;let l=Math.min(i.x,r.x),h=Math.max(i.x,r.x),u=Math.min(i.y,r.y),d=Math.max(i.y,r.y);if(h>=a.x&&l<=a.x+a.w&&d>=a.y&&u<=a.y+a.h)for(let t=1;t<e.points.length;t++){let r=e.points[t-1],a=e.points[t];if(!(o?.01>Math.abs(r.x-a.x)&&4>Math.abs(r.x-i.x):.01>Math.abs(r.y-a.y)&&4>Math.abs(r.y-i.y)))continue;let s=o?Math.min(r.y,a.y):Math.min(r.x,a.x),x=o?Math.max(r.y,a.y):Math.max(r.x,a.x),y=o?u:l;if(Math.min(x,o?d:h)-Math.max(s,y)>.01)return n}}return null}function tz(e,t,n){let i=tL(t.points,t,n);return tL(e,t,n,i)>i}function tj(e,t){let n="cylinder"===t.shape?eo(t).boundary:void 0,i=.5*("rectangle"!==t.shape&&"subroutine"!==t.shape||void 0!==t.semanticShape&&"rect"!==t.semanticShape&&"fr-rect"!==t.semanticShape&&"lin-rect"!==t.semanticShape&&"div-rect"!==t.semanticShape&&"win-pane"!==t.semanticShape);for(let r=1;r<e.length;r++){let a=e[r-1],o=e[r],s=Math.min(a.x,o.x),l=Math.max(a.x,o.x),h=Math.min(a.y,o.y),u=Math.max(a.y,o.y);if(n?.kind==="cylinder"&&n.height>2*n.capRadiusY&&l>t.x&&s<t.x+t.width&&u>n.y+n.capRadiusY&&h<n.y+n.height-n.capRadiusY||l>t.x+i&&s<t.x+t.width-i&&u>t.y+i&&h<t.y+t.height-i)return!0}return!1}function tY(e){return"compound"===e.kind?{...e,children:e.children.map(tY)}:"path"===e.kind?{...e,d:B("d",e.d)}:"polygon"===e.kind||"polyline"===e.kind?{...e,points:e.points.map(tQ)}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,"number"==typeof t?Number(E(t)):t]))}var tQ=e=>({x:Number(E(e.x)),y:Number(E(e.y))}),tZ=e=>!!e&&Object.values(e).every(Number.isFinite)&&e.x0<=e.x1&&e.y0<=e.y1,tq=(e,t)=>{let n=(Math.abs(e.x0)+Math.abs(e.y0)+Math.abs(e.x1)+Math.abs(e.y1)+Math.abs(t.x0)+Math.abs(t.y0)+Math.abs(t.x1)+Math.abs(t.y1))*1e-10+1e-9;return!Number.isFinite(n)||e.x0<t.x1+n&&t.x0<e.x1+n&&e.y0<t.y1+n&&t.y0<e.y1+n};function tV(e,t,n){if("invisible"===e.style)return{shafts:[],markers:[]};if(e.points.length>eH*eA||void 0!==t.edgeBendRadius&&!(Number.isFinite(t.edgeBendRadius)&&t.edgeBendRadius>=0))return;let i={stroke:e.inlineStyle?.stroke??t.edgeStrokeColor??"var(--_line)",strokeWidth:B("stroke-width",e.inlineStyle?.["stroke-width"]??String((t.lineWidth??1)*("thick"===e.style?2:1)))},r=R(i,e.points.length>2||!!e.curve||(t.edgeBendRadius??0)>0);if(void 0===r||e.points.length<2||(e.hasArrowStart||e.hasArrowEnd)&&void 0===R({...i,stroke:"black"},!1))return;let a=[],o=e=>{if(!n())return!1;let t=W(e,r);return!!tZ(t)&&(r>0&&a.push(t),!0)},s=G(e,t);if(s){if(!L(B("d",s.geometry.d),e=>o(e.bounds),n))return}else{let t=e.points.map(tQ);for(let e=1;e<t.length;e++){let n=t[e-1],i=t[e];if(!o({x0:Math.min(n.x,i.x),y0:Math.min(n.y,i.y),x1:Math.max(n.x,i.x),y1:Math.max(n.y,i.y)}))return}}let l=td(e,t);if(!l)return;for(let e of l)if(!n()||!tZ(e.bounds))return;let u=x(e,t),d=u?h(e,t.lineWidth??1):0,y=u?{x0:u.x-d,y0:u.y-d,x1:u.x+u.w+d,y1:u.y+u.h+d}:void 0;if(!(y&&!tZ(y)))return{shafts:a,markers:l,...y?{label:y}:{}}}function tU(e,t,n,i,r){if(!r(16))return;let a=[],o=[],s=new Map,l=new Map,u=e=>!!r(32)&&("compound"===e.kind?r(e.children.length+1)&&e.children.every(u):"path"===e.kind?r(6*e.d.length+16):"polygon"===e.kind||"polyline"===e.kind?r(772*e.points.length+4):r(3104));for(let t of e){let e=t.inlineStyle?.["stroke-width"]??String(i.nodeLineWidth??S.innerBox);if(!r(512+6*e.length+t.id.length))return;let n=ea(t,{fill:t.inlineStyle?.fill??i.nodeFillColor??"var(--_node-fill)",stroke:t.inlineStyle?.stroke??i.nodeBorderColor??"var(--_node-stroke)",strokeWidth:B("stroke-width",e)},i.cornerRadius);if(!u(n.geometry))return;let o=H({kind:"shape",id:t.id,role:"node",geometry:tY(n.geometry),paint:n.paint,...n.childPaints?{childPaints:n.childPaints}:{}});if(!tZ(o))return;a.push(o)}let d=(e,t=0)=>{if(t>64||!r(e.length+1))return!1;for(let n of e){let e=n.concurrencyRegion?0:n.headerHeight??n.height,a=n.inlineStyle?.["stroke-width"]??String(i.groupLineWidth??S.innerBox);if(!r(3072+6*a.length+88)||!Number.isFinite(e)||e<0||void 0!==i.groupCornerRadius&&!(Number.isFinite(i.groupCornerRadius)&&i.groupCornerRadius>=0))return!1;if(e>0){let t=tY({kind:"rect",x:n.x,y:n.y,width:n.width,height:e}),r={fill:"black",stroke:n.inlineStyle?.stroke??"black",strokeWidth:B("stroke-width",a)},s;if(0===i.groupCornerRadius)s=H({kind:"shape",id:n.id,role:"group-header",geometry:t,paint:r});else{let e=R(r,!0),i=H({kind:"shape",id:n.id,role:"group-header",geometry:t,paint:{fill:"black",stroke:"none"}});if(void 0===e||!tZ(i))return!1;s=W(i,e)}if(!tZ(s))return!1;o.push(s)}if(!d(n.children,t+1))return!1}return!0};if(!d(n))return;for(let e of t){if(e.label&&!e.labelPosition)return;let t=e.inlineStyle?.["stroke-width"]??"",n=e.curve||(i.edgeBendRadius??0)>0?18:4,a=e.inlineStyle?.stroke??i.edgeStrokeColor??"";if(!r(2048+e.points.length*(384*n+32)+8*t.length+(e.label?.length??0)*12+(a.length+e.source.length+e.target.length+(e.id?.length??0))*8))return;let o=tV(e,i,()=>r(1));if(!o)return;s.set(e,o)}let y=(e,t)=>{if(!r(4))return;let n=l.get(e);if(n&&n.x===t.x&&n.y===t.y)return n.box;if(!r(64+(e.label?.length??0)*12))return;let a=x({...e,labelPosition:t},i);if(!a)return;let o=h(e,i.lineWidth??1),s={x0:a.x-o,y0:a.y-o,x1:a.x+a.w+o,y1:a.y+a.h+o};if(!(!tZ(s)||!r(6)))return l.set(e,{x:t.x,y:t.y,box:s}),s};return{clear:(e,n,i,l,h)=>{let u=y(e,n);if(!u)return!1;for(let e of a)if(!r(1)||tq(u,e))return!1;for(let e of o)if(!r(1)||tq(u,e))return!1;let d=!0;for(let n of t){if(!r(1))return!1;let t=s.get(n);for(let e of t.markers)if(!r(1)||!tZ(e.bounds)||tq(u,e.bounds))return!1;if(n===e)continue;for(let e of t.shafts)if(!r(1)||tq(u,e))return!1;if(h instanceof Set?h.has(n):n===h)continue;let a=i.get(n)??n.labelPosition;if(!n.label||!a)continue;let o=y(n,a);if(!o)return!1;if(tq(u,o)){if(l&&!l.has(n)){if(!r(1))return!1;l.add(n)}d=!1}}return d},label:y}}function tJ(e,t,n,i,r){if("feedback"!==t)return null;if(!n||!i)return"feedback-detour";let a=e=>"y"===r.cross?e.height:e.width,o=Math.min(n[r.cross],i[r.cross])-2,s=Math.max(n[r.cross]+a(n),i[r.cross]+a(i))+2;return e.points.some(e=>e[r.cross]<o||e[r.cross]>s)?"outer-feedback":"feedback-detour"}function tT(e){return e.routeCertificate?.invariant==="bundle"&&to(e)}function t_(e){return e.some((t,n)=>n>0&&Math.abs(t.x-e[n-1].x)>.01&&Math.abs(t.y-e[n-1].y)>.01)}function tX(e,t=!1){e.invariant="straight",e.bendCount=0,e.directLaneClear=!0,t&&(e.straightened=!0),e.directLaneBlockedBy=void 0}function tD(e,t,n,i,r){let a,s,u,d,y,c=eJ(t),{axis:f,ctx:g}=e4(e,t,i,c,e=>n.has(e)&&to(e),!!r?.preserveLabels);g.fixedLabels=!!r?.preserveLabels;let p=te(e.nodes),m=function e(t,n=new Map){for(let i of t)n.set(i.id,i),e(i.children,n);return n}(e.groups),M=[],b,$=(e,t)=>{let n="feedback"===t.routeClass?{...f,sign:1===f.sign?-1:1}:f,i=p.get(e.source),a=p.get(e.target);if(!(i&&a&&eV(i)&&eV(a)&&("feedback"===t.routeClass||eK(eD(e.points),n))))return t.invariant=tJ(e,t.routeClass,i,a,g.axis)??"unverified-shape",{applied:!1,mutated:!1};if(r?.preserveStraightRoutes&&2===e.points.length){let r=e.points[0],o=e.points[1],s=f.main,l=f.cross;if(r[l]===o[l]&&0===eZ(e,i,a)&&!tP(e,r[l],Math.min(r[s],o[s]),Math.max(r[s],o[s]),g,n))return tX(t),{applied:!0,mutated:!1}}let o=g.sideUse?.get(`${i.id}:${e2(n,1)}`)??1,s="primary-forward"===t.routeClass&&eU(i)&&1===o&&tM(i)>=tM(a),l=JSON.stringify(e.points);if(s){let r=i[n.cross]+("y"===n.cross?i.height:i.width)/2,o=tH(e,i,a,g,n,r);if(o.applied){let n=JSON.stringify(e.points)!==l;return tX(t,n),{applied:!0,mutated:n}}if(function(e,t,n,i,r){if(e.points.length<2)return!1;let a=t[r.cross]+("y"===r.cross?t.height:t.width)/2,o=n[r.cross],s=o+("y"===r.cross?n.height:n.width),l;if(a<o-.01)l="y"===r.cross?"N":"W";else{if(!(a>s+.01))return!1;l="y"===r.cross?"S":"E"}let h=ej(n)[l][r.cross];if(8>Math.abs(h-a))return!1;let u=ej(n)[e2(r,-1)];if(i.edges.some(t=>t!==e&&t.target===e.target&&t.source!==e.source&&t.points.length>0&&tg(e,t)&&.5>=Math.abs(t.points[t.points.length-1].x-u.x)&&.5>=Math.abs(t.points[t.points.length-1].y-u.y)))return!1;let d=ej(n)[l][r.main],x=e0(t,a,r,1);if(null===x||(d-x)*r.sign<=.01)return!1;let y={...e,points:[],label:void 0};if(tP(e,a,Math.min(x,d),Math.max(x,d),i,r))return!1;let c=e7(r,a,h);if(tP(y,d,Math.min(a,h),Math.max(a,h),i,c))return!1;let f=[e3(r,x,a),e3(r,d,a),e3(r,d,h)];if(!tm(e,f,i.edges,i.style)||!tE(e,i)&&tz(f,e,i))return!1;if(e.label){let t=tW(e,f[0],f[1],i);if(!t)return!1;e.labelPosition=t}return e9(i,e,f),!0}(e,i,a,g,n)||k(e,i,a,g,n,!0))return t.invariant="explained-detour",t.directLaneClear=!1,t.directLaneBlockedBy=tI(o.blockers),t.bendCount=eG(e.points),{applied:!1,mutated:JSON.stringify(e.points)!==l}}let h=tk(e,i,a,g,n);if(h&&k(e,i,a,g,n,!1,{sourceLane:h.sourceLane,targetLane:h.targetLane,preferSourceJog:!0}))return t.invariant="explained-detour",t.directLaneClear=!1,t.directLaneBlockedBy=[{kind:"port",id:tS(e)}],t.bendCount=eG(e.points),{applied:!1,mutated:JSON.stringify(e.points)!==l};let u=tH(e,i,a,g,n);if(u.applied){let n=JSON.stringify(e.points)!==l;return tX(t,n),{applied:!0,mutated:n,upgradeable:(u.usedCandidateIndex??0)>0}}t.invariant=tJ(e,t.routeClass,i,a,g.axis)??"explained-detour",t.directLaneClear=!1,t.directLaneBlockedBy=u.blockers;let d=!1;if("outer-feedback"===t.invariant||"feedback-detour"===t.invariant)"outer-feedback"===t.invariant&&(d=function(e,t,n){let i=eX(e.points);if(i.length<4)return!1;let r=t.axis,a=e=>e[r.cross],o=e=>e[r.main],s=-1,l=.01;for(let e=1;e<i.length;e++){if(Math.abs(a(i[e-1])-a(i[e]))>=.01)continue;let t=(o(i[e-1])-o(i[e]))*r.sign;t>l&&(l=t,s=e-1)}if(s<1)return!1;let h=a(i[s]),u=[i[s],i[s+1]],d=Math.sign(o(u[1])-o(u[0])),y=i[0],c=t.nodes.find(t=>t.id===e.source),f=e=>d>0?e>=o(u[0])-.01&&e<o(u[1])-.01:e<=o(u[0])+.01&&e>o(u[1])+.01,g=(n,i)=>{if(.01>Math.abs(i-h))return!0;let a="x"===r.main?{main:"y",cross:"x",sign:i<h?1:-1}:{main:"x",cross:"y",sign:i<h?1:-1};return 0===tC({...e,points:[],label:void 0},n,Math.min(i,h),Math.max(i,h),t,a).length},p=(e,t,n)=>{let a=e3(r,e,h);return .01>Math.abs(t-h)?[a,...i.slice(s+1)]:[n,a,...i.slice(s+1)]},m=null;if(c&&eV(c)){let e=c[r.cross],t="y"===r.cross?h>e?"S":"N":h>e?"E":"W",n=ej(c)[t],i=n[r.cross],a=n[r.main];f(a)&&g(a,i)&&(m=p(a,i,n))}if(!m&&c){let e=d===r.sign?1:-1,t=e1(c,r,e);if("dynamic"===eo(c).sides[e2(r,e)].kind&&t&&h>=t.lo-.01&&h<=t.hi+.01){let t=e0(c,h,r,e);if(null!==t&&f(t)&&g(t,h)){let e=e3(r,t,h);m=p(t,h,e)}}}if(!m&&f(o(y))&&g(o(y),a(y))&&(m=p(o(y),a(y),y)),!m&&2===s&&.01>Math.abs(a(i[1])-a(y))&&t.edges.some(n=>n.source===e.source&&n!==e&&tO(n,t.edges,t.style))){let n=Math.sign(o(i[1])-o(y)),l=[o(y)+12*n];for(let i of t.edges){if(i===e)continue;for(let e of i.points)l.push(o(e)+12*n);let a=x(i,t.style);a&&l.push(("x"===r.main?a.x+(n>0?a.w:0):a.y+(n>0?a.h:0))+4.01*n)}for(let u of(l.sort((e,t)=>(e-t)*n),l)){if((u-o(y))*n<11.99||(o(i[1])-u)*n<=.01||!f(u)||!g(u,a(y)))continue;let l="x"===r.main?{x:u,y:a(y)}:{x:a(y),y:u},d=[y,l,"x"===r.main?{x:u,y:h}:{x:h,y:u},...i.slice(s+1)];if(!(tL(d,e,t)>tL(i,e,t))){m=d;break}}}let M=m??i;{let n=-1;for(let e=1;e<M.length;e++)if(.01>Math.abs(a(M[e-1])-h)&&.01>Math.abs(a(M[e])-h)){n=e-1;break}let i=t.nodes.find(t=>t.id===e.target);if(n>=0&&n+1<M.length-1&&i&&eV(i)){let e=i[r.cross],t="y"===r.cross?h>e?"S":"N":h>e?"E":"W",a=ej(i)[t],s=a[r.cross],l=a[r.main],u=M[n],d=M[n+1];if((Math.sign(o(d)-o(u))>0?l>o(u)+.01&&l<=o(d)+.01:l<o(u)-.01&&l>=o(d)-.01)&&g(l,s)){let e=e3(r,l,h);m=[...M.slice(0,n+1),e,a]}}}if(!m)return!1;let b=eX(m),$=n.get(e.target);if(eZ({...e,points:b},c,$)>0)return!1;let w=R({stroke:"black",strokeWidth:B("stroke-width",e.inlineStyle?.["stroke-width"]??String((t.style.lineWidth??S.connector)*("thick"===e.style?2:1)))},!0);if(!c||!$||void 0===w)return!1;let k=e=>{let n=R({stroke:"black",strokeWidth:B("stroke-width",e.inlineStyle?.["stroke-width"]??String(t.style.nodeLineWidth??S.innerBox))},!0);if(void 0===n)return;let i=Math.max(4,n+w)+.01,r=e.x-i,a=e.y-i,o=e.width+2*i,s=e.height+2*i;if([r,a,o,s].every(Number.isFinite))return{...e,shape:"rectangle",semanticShape:void 0,x:r,y:a,width:o,height:s}},v=k(c),C=k($);if(!v||!C||tj(b.slice(1),v)||tj(b.slice(0,-1),C)||tz(b,e,t)||!tm(e,b,t.edges,t.style))return!1;let P=e.points;if(e9(t,e,b),e.label&&e.labelPosition){let n=e.labelPosition;if(!e.points.some((t,i)=>{if(0===i)return!1;let r=e.points[i-1],a=Math.min(r.x,t.x)-1,o=Math.max(r.x,t.x)+1,s=Math.min(r.y,t.y)-1,l=Math.max(r.y,t.y)+1;return n.x>=a&&n.x<=o&&n.y>=s&&n.y<=l})){let n=null;for(let i=1;i<e.points.length;i++){let r=e.points[i-1],o=e.points[i];if(.01>Math.abs(a(r)-h)&&.01>Math.abs(a(o)-h)){n=tW(e,r,o,t);break}}if(!n)return e9(t,e,P),!1;e.labelPosition=n}}return JSON.stringify(e.points)!==JSON.stringify(P)}(e,g,p),t.bendCount=eG(e.points)),tE(e,g)&&k(e,i,a,g,n)&&(t.bendCount=eG(e.points),d=!0);else if("explained-detour"===t.invariant&&(t.bendCount>2||t_(e.points)||tE(e,g)||!eQ(i,e.points[0])||!eQ(a,e.points[e.points.length-1]))){let r=k(e,i,a,g,n)||function(e,t,n,i,r){if(!tE(e,i))return!1;let a=e1(t,r,1),o=e1(n,r,-1);if(!a||!o)return!1;let s={...e,points:[],label:void 0},l=e=>"y"===r.cross?e.height:e.width,h=e=>"x"===r.main?e.width:e.height,u=t[r.cross]+l(t)/2,d=e0(t,u,r,1),x=n[r.cross]+l(n)/2,y=e0(n,x,r,-1);if(null===d||null===y||Math.abs(u-a.lo)>.01&&Math.abs(u-a.hi)>.01&&(u<a.lo-.01||u>a.hi+.01))return!1;let c=[];for(let t of i.nodes){if(t.id===e.source||t.id===e.target)continue;let n=t[r.main],i=n+h(t),a=(n-d)*r.sign>.01||(i-d)*r.sign>.01,o=(y-n)*r.sign>.01||(y-i)*r.sign>.01;if(!a||!o)continue;let s=r.sign>0?n:i;c.push({mainNear:s,crossLo:t[r.cross],crossHi:t[r.cross]+l(t)})}let f=c.filter(e=>u>e.crossLo-4&&u<e.crossHi+4);if(0===f.length)return!1;let g=f.reduce((e,t)=>(t.mainNear-d)*r.sign<(e-d)*r.sign?t.mainNear:e,f[0].mainNear);if((g-d)*r.sign<=4)return!1;let p=d+(g-d)/2,m=[x];w(e,x,r)&&m.push(x+12,x-12);let M=[],b=e=>{M.every(t=>Math.abs(t-e)>.5)&&M.push(e)};for(let e of c)b(e.crossLo-4-.01),b(e.crossHi+4+.01);let $=[...c].sort((e,t)=>e.crossLo-t.crossLo);for(let e=1;e<$.length;e++){let t=$[e-1].crossHi,n=$[e].crossLo;n-t>8&&b((t+n)/2)}M.sort((e,t)=>Math.abs(e-u)-Math.abs(t-u));let k=null;for(let t of m){if(t<o.lo-.01||t>o.hi+.01)continue;let a=e0(n,t,r,-1);if(null===a)continue;let l=a-r.sign*eO(i.style,e,"end");if(!((l-p)*r.sign<=.01))for(let n of M){if(4>Math.abs(n-u)||tP(s,u,Math.min(d,p),Math.max(d,p),i,r)||tP(s,p,Math.min(u,n),Math.max(u,n),i,e7(r,u,n))||tP(s,n,Math.min(p,l),Math.max(p,l),i,r)||tP(s,l,Math.min(n,t),Math.max(n,t),i,e7(r,n,t))||tP(s,t,Math.min(l,a),Math.max(l,a),i,r))continue;let o=eX([e3(r,d,u),e3(r,p,u),e3(r,p,n),e3(r,l,n),e3(r,l,t),e3(r,a,t)]);if(!tm(e,o,i.edges,i.style))continue;let h=[e3(r,p,n),e3(r,l,n)];if(e.label){let t=tW(e,h[0],h[1],i);if(t)return e.labelPosition=t,e9(i,e,o),!0;k||(k={route:o,labelMid:{x:(h[0].x+h[1].x)/2,y:(h[0].y+h[1].y)/2}});continue}return e9(i,e,o),!0}}return!!k&&(e9(i,e,k.route),e.label&&(e.labelPosition=k.labelMid),!0)}(e,i,a,g,n);((function(e,t,n,i){let r;if(e.points.length<3||!n.edges.some(t=>t!==e&&t.target===e.target))return!1;let a=ej(t);if(!(w(e,r=a[e2(i,-1)][i.cross],i)||g.edges.some(t=>{if(t===e||t.target!==e.target||t.source===e.target||tg(e,t))return!1;let n=p.get(t.source);return void 0!==n&&.5>=Math.abs(n[i.cross]+("y"===i.cross?n.height:n.width)/2-r)})))return!1;let o=t[i.cross],s=o+("y"===i.cross?t.height:t.width),l=-1;for(let t=e.points.length-1;t>0&&l<0;t--){let n=e.points[t-1],r=e.points[t],a=r[i.cross];.01>=Math.abs(n[i.cross]-a)&&Math.abs(n[i.main]-r[i.main])>.01&&(a<=o-4||a>=s+4)&&(l=t)}if(l<1)return!1;let h=e.points[l][i.cross],u=a["y"===i.cross?h<o?"N":"S":h<o?"W":"E"],d=e.points[l-1];if((u[i.main]-d[i.main])*Math.sign(e.points[l][i.main]-d[i.main])<=.01)return!1;let x={...e,points:[],label:void 0};if(tP(x,h,Math.min(d[i.main],u[i.main]),Math.max(d[i.main],u[i.main]),n,i))return!1;let y=e7(i,h,u[i.cross]);if(tP(x,u[i.main],Math.min(h,u[i.cross]),Math.max(h,u[i.cross]),n,y))return!1;let c=eX([...e.points.slice(0,l),e3(i,u[i.main],h),u]);if(eG(c)>eG(e.points)||tz(c,e,n)||!tm(e,c,n.edges,n.style))return!1;if(e.label){let t;for(let e=1;e<c.length;e++){let n=Math.abs(c[e].x-c[e-1].x)+Math.abs(c[e].y-c[e-1].y);(!t||n>Math.abs(t[1].x-t[0].x)+Math.abs(t[1].y-t[0].y))&&(t=[c[e-1],c[e]])}let i=t&&tW(e,t[0],t[1],n);if(!i)return!1;e.labelPosition=i}return e9(n,e,c),!0})(e,a,g,n)||r)&&(t.bendCount=eG(e.points),d=!0)}return{applied:!1,mutated:d}},w=(e,t,n)=>g.edges.some(i=>i!==e&&i.target===e.target&&i.points.length>1&&.5>=Math.abs(i.points.at(-1)[n.cross]-t)&&!tg(e,i));function k(e,t,n,i,r,a=!1,o){if(e.points.length<2)return!1;let s=e1(t,r,1),l=e1(n,r,-1);if(!s||!l)return!1;let h=e.points.map(e=>e[r.cross]),u=[],d=[],x=(e,t)=>{e.every(e=>Math.abs(e-t)>.5)&&e.push(t)};if(o?.sourceLane!==void 0)x(u,o.sourceLane);else if(x(u,t[r.cross]+("y"===r.cross?t.height:t.width)/2),!a)for(let t of(x(u,e.points[0][r.cross]),h))x(u,t);if(o?.targetLane!==void 0)x(d,o.targetLane);else{let t=n[r.cross]+("y"===r.cross?n.height:n.width)/2;if(i.edges.some(n=>{if(n===e||n.target!==e.target||n.source===e.target||tg(e,n))return!1;let i=p.get(n.source);return void 0!==i&&.5>=Math.abs(i[r.cross]+("y"===r.cross?i.height:i.width)/2-t)})&&x(d,e.points[e.points.length-1][r.cross]),x(d,t),x(d,e.points[e.points.length-1][r.cross]),w(e,t,r))for(let e of[12,-12])x(d,t+e)}let y=e=>{let t=e[r.main];return[t,t+("x"===r.main?e.width:e.height)]},[c,f]=y(t),[g,m]=y(n),M=Math.min(c,f,g,m),b=Math.max(c,f,g,m),$=(t,n)=>{if(n)for(let a of i.nodes){if(a.id===e.source||a.id===e.target)continue;let[i,o]=y(a);if(o<=M+.01||i>=b-.01)continue;let s=a[r.cross],l=s+("y"===r.cross?a.height:a.width);for(let e of[s-4-.01,l+4+.01])e>=n.lo-.01&&e<=n.hi+.01&&x(t,e)}};$(u,o?.sourceLane===void 0?s:null),$(d,o?.targetLane===void 0?l:null);let v=(e,t)=>eU(e)?{lo:e[r.cross]+2,hi:e[r.cross]+("y"===r.cross?e.height:e.width)-2}:t,S=v(t,s),C=v(n,l),P=!o?.requireFewerCrossings&&tE(e,i),N=null,W={...e,points:[],label:void 0},L,E=!z(),I,B=eO(i.style,e,"start"),R=eO(i.style,e,"end");for(let a of d){if(a<C.lo-.01||a>C.hi+.01)continue;let s=e0(n,a,r,-1);if(null!==s)for(let l=0;l<u.length;l++){let h=u[l];if(h<S.lo-.01||h>S.hi+.01||4>Math.abs(h-a))continue;let d=e0(t,h,r,1);if(null===d||o?.requireFewerCrossings&&(d!==(1===r.sign?f:c)||s!==(1===r.sign?g:m))||(s-d)*r.sign<=.01)continue;let x=o?.preferSourceJog?[d+r.sign*B,(d+s)/2,s-r.sign*R]:[s-r.sign*R,(d+s)/2,d+r.sign*B];for(let u=0;u<x.length;u++){let y=x[u];if((y-d)*r.sign<=.01||(s-y)*r.sign<=.01)continue;let c=Math.abs(y-d)>=Math.abs(s-y),f=E?(3*l+u)*2+Number(c):0,g=E?I?.[f]:void 0,p;if(g&&Object.is(g.jog,y)?p=g.blocked:(p=tP(c?e:W,h,Math.min(d,y),Math.max(d,y),i,r),E&&(g?(g.jog=y,g.blocked=p):(I??=[])[f]={jog:y,blocked:p})),p)continue;let m=e7(r,h,a);if(tP(W,y,Math.min(h,a),Math.max(h,a),i,m)||tP(c?W:e,a,Math.min(y,s),Math.max(y,s),i,r))continue;let M=[e3(r,d,h),e3(r,y,h),e3(r,y,a),e3(r,s,a)],b=c?[M[0],M[1]]:[M[2],M[3]],$=null;if(e.label){if(!($=tW(e,b[0],b[1],i))){let t=c?tW(e,M[2],M[3],i):tW(e,M[0],M[1],i);t&&!tP(e,c?a:h,Math.min(c?y:d,c?s:y),Math.max(c?y:d,c?s:y),i,r)&&($=t)}if(!$&&!(P&&!N))continue}if(!tm(e,M,i.edges,i.style))continue;let w=+!!eQ(t,e.points[0])+ +!!eQ(n,e.points.at(-1)),k=+!!eQ(t,M[0])+ +!!eQ(n,M.at(-1));L??=P?0:tL(e.points,e,i);let v=P?0:tL(M,e,i,L);if(!(!P&&v>L)&&!(o?.requireFewerCrossings&&v>=L)&&!(!P&&v>=L&&eZ({...e,points:M},t,n)>=eZ(e,t,n)&&(eG(M)>eG(e.points)||eG(M)===eG(e.points)&&k<w))){if(e.label){if(!$){P&&!N&&(N={route:M,labelMid:{x:(b[0].x+b[1].x)/2,y:(b[0].y+b[1].y)/2}});continue}e.labelPosition=$}return e9(i,e,M),!0}}}}return!!N&&(e9(i,e,N.route),e.label&&(e.labelPosition=N.labelMid),!0)}let v=[],C=(a=g.style,s=new Map,u=[],d=new Map,y=(e,t)=>Math.min(e.x+e.w,t.x+t.w)>Math.max(e.x,t.x)&&Math.min(e.y+e.h,t.y+t.h)>Math.max(e.y,t.y),e=>{let t=p.get(e.source);if(!t)return null;let n=t.x+t.width/2,i=t.y+t.height/2,r=e.points.slice(1,-1),c=r.length>0?{x:r.reduce((e,t)=>e+t.x,0)/r.length,y:r.reduce((e,t)=>e+t.y,0)/r.length}:e.points[0]??{x:t.x,y:i},f=(c.x-n)/Math.max(t.width/2,1),M=(c.y-i)/Math.max(t.height/2,1),b=Math.abs(f)>=Math.abs(M)?f<0?"W":"E":M<0?"N":"S",$=[b,function(e){switch(e){case"N":return"S";case"S":return"N";case"E":return"W";case"W":return"E"}}(b),..."W"===b||"E"===b?["N","S"]:["W","E"]],w=e.label?e.labelBlock??o(N(e.label,e.labelContent),a):null,k=e=>w?("N"===e||"S"===e?w.height:w.width)+2*l:0,C=e=>"N"===e||"S"===e?t.width:t.height,P=e=>`${t.id}:${e}`,W=e=>s.get(P(e))??0,L=e=>Math.min(Math.max(C(e)/4,6),10,Math.max(C(e)/2-2,3)),E=e=>L(e)+6*W(e)<=C(e)/2-2,I=r=>{let o=W(r),s=L(r)+6*o;return{d:s,desired:24+o*Math.max(14,k(r)+8),clear:((r,o)=>{let s="N"===r||"S"===r,l=s?n:i,h=l-o-6,u=l+o+6,d="W"===r?t.x:"E"===r?t.x+t.width:"N"===r?t.y:t.y+t.height,y="W"===r||"N"===r?-1:1,c=1e3,f=(e,t,n,i)=>{if(t<h||e>u)return;let r=(n-d)*y;r>0&&(c=Math.min(c,r-(i?2:6)))};for(let e of g.nodes)e.id!==t.id&&f(s?e.x:e.y,s?e.x+e.width:e.y+e.height,s?y<0?e.y+e.height:e.y:y<0?e.x+e.width:e.x,!1);for(let e of m.values())if(n>e.x&&n<e.x+e.width&&i>e.y&&i<e.y+e.height){let t=((s?y<0?e.y:e.y+e.height:y<0?e.x:e.x+e.width)-d)*y;t>0&&(c=Math.min(c,t-4))}else f(s?e.x:e.y,s?e.x+e.width:e.y+e.height,s?y<0?e.y+e.height:e.y:y<0?e.x+e.width:e.x,!1);for(let t of g.edges){if(t===e||t.source===t.target||!t.label)continue;let n=x(t,a);n&&f(s?n.x:n.y,s?n.x+n.w:n.y+n.h,s?y<0?n.y+n.h:n.y:y<0?n.x+n.w:n.x,!1)}return c})(r,s)}},B=(r,o)=>{let s=Math.max(Math.min(o.desired,o.clear),8),c=o.d,f=ev(ev((()=>{switch(r){case"W":return[{x:t.x,y:i-c},{x:t.x-s,y:i-c},{x:t.x-s,y:i+c},{x:t.x,y:i+c}];case"E":return[{x:t.x+t.width,y:i-c},{x:t.x+t.width+s,y:i-c},{x:t.x+t.width+s,y:i+c},{x:t.x+t.width,y:i+c}];case"N":return[{x:n-c,y:t.y},{x:n-c,y:t.y-s},{x:n+c,y:t.y-s},{x:n+c,y:t.y}];default:return[{x:n-c,y:t.y+t.height},{x:n-c,y:t.y+t.height+s},{x:n+c,y:t.y+t.height+s},{x:n+c,y:t.y+t.height}]}})(),t,!0),t,!1),p=tp(e,f,g.edges,a);if(p)return v?.push(p),null;let M=((r,o,s)=>{if(!e.label||!w)return[];let c="N"===r||"S"===r,f="W"===r||"N"===r?-1:1,p="W"===r||"S"===r?-1:1,M=("W"===r?t.x:"E"===r?t.x+t.width:"N"===r?t.y:t.y+t.height)+f*(o+k(r)/2+4),b=(c?w.width:w.height)+2*l+2,$=W(r),v=c?{x:n,y:M}:{x:M,y:i},C=e=>({x:e.x-w.width/2-l,y:e.y-w.height/2-l,w:w.width+2*l,h:w.height+2*l}),N=P(r),L=d.get(N)??[],E=[],I=u.slice();if($>0){for(let e of L){let t=e.edge.labelPosition,r=c?{x:n-p*b,y:t.y}:{x:t.x,y:i-p*b};E.push({edge:e.edge,position:r,rectIndex:e.rectIndex}),I[e.rectIndex]=x({...e.edge,labelPosition:r},a)}v=c?{x:n+p*b*$,y:M}:{x:M,y:i+p*b*$}}if(I.some(e=>y(C(v),e)))for(let e=0;e<8;e++){let t=e%2==0?p:-p,r=(1+Math.floor(e/2))*b,a=c?{x:n+t*r,y:M}:{x:M,y:i+t*r};if(!I.some(e=>y(C(a),e))){v=a;break}}E.push({edge:e,position:v});let B=new Map(E.map(e=>[e.edge,e.position])),A=(e,t)=>{let n=x({...e,labelPosition:t},a);if(!n)return null;let i=h(e,a.lineWidth??1);return{x:n.x-i,y:n.y-i,w:n.w+2*i,h:n.h+2*i}};for(let t of E){let n=A(t.edge,t.position),i=x({...t.edge,labelPosition:t.position},a);if(!n||!i||!Object.values(n).every(Number.isFinite))return null;let r=t.edge===e?s:t.edge.points,o=1/0;for(let e=1;e<r.length;e++){let t=r[e-1],n=r[e];if(t.x!==n.x&&t.y!==n.y)return null;o=Math.min(o,Math.max(i.x-Math.max(t.x,n.x),Math.min(t.x,n.x)-i.x-i.w,0)+Math.max(i.y-Math.max(t.y,n.y),Math.min(t.y,n.y)-i.y-i.h,0))}if(!(o<=i.h/2+4))return null;let l=(e,t,i,r)=>{let a=(Math.abs(e)+Math.abs(t)+Math.abs(i)+Math.abs(r)+Math.abs(n.x)+Math.abs(n.y)+n.w+n.h)*1e-10+1e-9;return!Number.isFinite(a)||y(n,{x:e-a,y:t-a,w:i+2*a,h:r+2*a})};for(let e of g.nodes){let t=ea(e,{fill:e.inlineStyle?.fill??a.nodeFillColor??"var(--_node-fill)",stroke:e.inlineStyle?.stroke??a.nodeBorderColor??"var(--_node-stroke)",strokeWidth:e.inlineStyle?.["stroke-width"]??String(a.nodeLineWidth??S.innerBox)},a.cornerRadius??0),n=H({kind:"shape",id:e.id,role:"node",geometry:t.geometry,paint:t.paint,...t.childPaints?{childPaints:t.childPaints}:{}});if(!n||l(n.x0,n.y0,n.x1-n.x0,n.y1-n.y0))return null}for(let e of m.values()){let t=e.concurrencyRegion?0:e.headerHeight??e.height;if(!Number.isFinite(t)||t<0)return null;let n=R({stroke:e.inlineStyle?.stroke??"black",strokeWidth:e.inlineStyle?.["stroke-width"]??String(a.groupLineWidth??S.innerBox)},!0);if(void 0===n||t>0&&l(e.x-n,e.y-n,e.width+2*n,t+2*n))return null}for(let n of g.edges){let i=td(n===e?{...n,points:s}:n,a);if(!i||i.some(e=>!e.bounds||l(e.bounds.x0,e.bounds.y0,e.bounds.x1-e.bounds.x0,e.bounds.y1-e.bounds.y0)))return null;if(n===t.edge||!n.label)continue;let r=B.get(n)??n.labelPosition;if(!r)continue;let o=A(n,r);if(!o||l(o.x,o.y,o.w,o.h))return null}}return E})(r,s,f);return M?{points:f,labels:M}:null},A=null,F=null,O=null,z=[],j=$.map((e,t)=>({side:e,preference:t,rank:W(e)})).sort((e,t)=>e.rank-t.rank||e.preference-t.preference).map(e=>e.side);for(let e of j){if(!E(e))continue;let t=I(e);if(t.clear<Math.min(t.desired,14))continue;let n=B(e,t);if(n){A=e,F=t,O=n.points,z=n.labels;break}}if(!A||!F||!O){let e=j.filter(E);if(0===e.length)return null;let t=e.reduce((e,t)=>I(t).clear>I(e).clear?t:e,e[0]),n=I(t),i=B(t,n);if(!i)return null;A=t,F=n,O=i.points,z=i.labels}s.set(P(A),W(A)+1),e9(g,e,O);let Y=P(A),Q=d.get(Y)??[];for(let e of z){e.edge.labelPosition=e.position;let t=x(e.edge,a);if(void 0!==e.rectIndex)u[e.rectIndex]=t;else{let n=u.push(t)-1;Q.push({edge:e.edge,rectIndex:n})}}return z.length&&d.set(Y,Q),A}),P=[];for(let i of e.edges){let a=n.has(i)?ts(i):void 0,o=eX(eD(i.points)),s=p.get(i.source),l=p.get(i.target);s&&(o=ek(o,s,!0)),l&&(o=ek(o,l,!1)),tm(i,o,g.edges,g.style)&&e9(g,i,o),tl(i,a);let h=i.edgeIndex??-1,u=c[h]??"primary-forward",d={edgeIndex:h,routeClass:u,bendCount:eG(i.points),invariant:"straight"};if(n.has(i)&&to(i))d.invariant="bundle";else if("self-loop"===u){let e;if(r?.preserveSelfLoops){let t=p.get(i.source),n=(e,t)=>.01>=Math.abs(e.x-t.x)&&Math.abs(e.y-t.y)>.01?t.y>e.y?"S":"N":.01>=Math.abs(e.y-t.y)&&Math.abs(e.x-t.x)>.01?t.x>e.x?"E":"W":void 0,r=i.points[0],a=i.points.at(-1),o=r&&i.points.find(e=>Math.hypot(e.x-r.x,e.y-r.y)>.01),s=a&&[...i.points].reverse().find(e=>Math.hypot(e.x-a.x,e.y-a.y)>.01);e=t&&r&&a&&o&&s&&Math.hypot(r.x-a.x,r.y-a.y)>=8&&n(r,o)===n(a,s)?n(r,o):void 0}v.length=0;let t=e??C(i);t?(d.invariant="self-loop",d.loopSide=t,d.bendCount=eG(i.points)):(d.invariant="explained-detour",v.length&&(d.directLaneBlockedBy=[...v]))}else if("container"===u){d.invariant="container-attach";let n=function(e,t,n){let i=e=>{let i=t.get(e);if(i)return{id:e,label:"",shape:"rectangle",x:i.x,y:i.y,width:i.width,height:i.height};let r=n.get(e);return r&&eV(r)?r:null},r=i(e.source),a=i(e.target);if(!r||!a)return null;let o=eX(e.points);if(2===o.length&&t1(o[0],r.x,r.y,r.width,r.height,1)&&t1(o[1],a.x,a.y,a.width,a.height,1))return null;let s=[{gap:a.y-(r.y+r.height),axis:{main:"y",cross:"x",sign:1}},{gap:r.y-(a.y+a.height),axis:{main:"y",cross:"x",sign:-1}},{gap:a.x-(r.x+r.width),axis:{main:"x",cross:"y",sign:1}},{gap:r.x-(a.x+a.width),axis:{main:"x",cross:"y",sign:-1}}].filter(e=>e.gap>.01).sort((e,t)=>t.gap-e.gap)[0];return s?{source:r,target:a,axis:s.axis}:null}(i,m,p);if(n){let r=tH(i,n.source,n.target,g,n.axis).applied,a=!r&&(b??=eF(t)&&!z()&&!e.edges.some(e=>e.label))&&tL(i.points,i,g)>0&&k(i,n.source,n.target,g,n.axis,!1,{requireFewerCrossings:!0});(r||a)&&(d.bendCount=eG(i.points),r&&(d.directLaneClear=!0,d.straightened=!0))}}else if("primary-forward"===u||"feedback"===u)if(d.bendCount>0){let e=$(i,d);(!e.applied||e.upgradeable)&&P.push({edge:i,cert:d})}else{let t=p.get(i.source),n=p.get(i.target),r=!i.label&&void 0!==i.edgeIndex&&e.edges.some(e=>e!==i&&e.source===i.target&&e.target===i.source&&!e.label&&void 0!==e.edgeIndex),[a,o]=[i.points[0],i.points[i.points.length-1]];if(t&&n&&(t_(i.points)||!eQ(t,a)||!eQ(n,o)||eZ(i,t,n)>0||tE(i,g)||r)){let e=$(i,d);(!e.applied||e.upgradeable)&&P.push({edge:i,cert:d})}}M.push({edge:i,cert:d})}for(let e=0;e<4&&P.length>0;e++){let e=[],t=!1;for(let n of P){if("unverified-shape"===n.cert.invariant)continue;let i=$(n.edge,n.cert);i.mutated&&(t=!0),(!i.applied||i.upgradeable)&&e.push(n)}if(!t)break;P.length=0,P.push(...e)}for(let t of e.edges){let e=n.has(t)?ts(t):void 0,i=p.get(t.source),r=p.get(t.target);i&&t$(t,i,!0,g),r&&t$(t,r,!1,g);let a=t.points;i&&(a=ek(a,i,!0)),r&&(a=ek(a,r,!1)),tm(t,a,g.edges,g.style)&&e9(g,t,a),tl(t,e)}let W=[],L=e6(e,t,c),E=(e,t)=>{let n=eG(e.points),i=p.get(e.source),r=p.get(e.target),a=L.byEdge.get(e),o={edgeIndex:t.edgeIndex,routeClass:t.routeClass,bendCount:n,directLaneClear:t.directLaneClear,directLaneBlockedBy:t.directLaneBlockedBy,sourcePort:i&&e.points.length>0?eQ(i,e.points[0]):void 0,targetPort:r&&e.points.length>0?eQ(r,e.points[e.points.length-1]):void 0,sourcePortAssignment:a?.source,targetPortAssignment:a?.target,...void 0!==t.loopSide?{loopSide:t.loopSide}:{}};return"straight"===t.invariant&&0===n&&2===e.points.length?{...o,invariant:"straight",...t.straightened?{straightened:!0}:{}}:{...o,invariant:"straight"===t.invariant?"explained-detour":t.invariant}};for(let{edge:e,cert:t}of M){let n=E(e,t);e.routeCertificate=n,W.push(n)}return W}function tG(e,t,n,i){if(!t){e.routeCertificate=void 0;return}let r={edgeIndex:t.edgeIndex,routeClass:t.routeClass,bendCount:eG(e.points),directLaneClear:t.directLaneClear,directLaneBlockedBy:t.directLaneBlockedBy,sourcePort:n&&e.points.length>0?eQ(n,e.points[0]):t.sourcePort,targetPort:i&&e.points.length>0?eQ(i,e.points[e.points.length-1]):t.targetPort,sourcePortAssignment:t.sourcePortAssignment,targetPortAssignment:t.targetPortAssignment,...void 0!==t.loopSide?{loopSide:t.loopSide}:{}};if(2===e.points.length&&0===eG(e.points)){e.routeCertificate={...r,invariant:"straight"};return}e.routeCertificate={...r,invariant:"straight"!==t.invariant&&("bundle"!==t.invariant||to(e))?t.invariant:"explained-detour"}}function tK(e,t,n,i){let r=[];for(let t of e.edges)void 0!==t.edgeIndex&&t.routeCertificate&&(r[t.edgeIndex]=t.routeCertificate.routeClass);let{axis:a,ctx:o}=e4(e,t,n,r,tT,!0),s=te(e.nodes),l=o.sideUse,h=[],u=new Set;for(let t of e.edges){let e=t.routeCertificate;if(!e||tT(t)||"primary-forward"!==e.routeClass&&"feedback"!==e.routeClass)continue;let n="feedback"===e.routeClass?{...a,sign:1===a.sign?-1:1}:a,r=eX(t.points);if(r.length<=2)continue;let d=s.get(t.source),x=s.get(t.target);if(!d||!x||!eV(d)||!eV(x)||"feedback"!==e.routeClass&&!eK(r,n))continue;let y=tk(t,d,x,o,n);if(y&&function(e,t,n,i){if(e.points.length<=2)return!1;let r=e.points[0],a=e.points[e.points.length-1],o=tb(t,i.sourcePort),s=ej(n)[i.targetPort];return .5>=Math.abs(r.x-o.x)&&.5>=Math.abs(r.y-o.y)&&.5>=Math.abs(a.x-s.x)&&.5>=Math.abs(a.y-s.y)}(t,d,x,y))continue;let c=l.get(`${t.source}:${e2(n,1)}`)??1,f="primary-forward"===e.routeClass&&eU(d)&&1===c&&tM(d)>=tM(x)?d[n.cross]+("y"===n.cross?d.height:d.width)/2:void 0;tH(i?t:{...t,points:r.map(e=>({...e}))},d,x,o,n,f,t).applied&&(h.push({edge:tS(t),deviationPx:Math.round(10*function(e,t){let n=1/0,i=-1/0;for(let r of e)n=Math.min(n,r[t.cross]),i=Math.max(i,r[t.cross]);return i-n}(r,n))/10}),i&&u.add(t))}if(u.size>0){let n=e6(e,t,r);for(let e of u){let t=e.routeCertificate;if(!t||2!==e.points.length||0!==eG(e.points))continue;let i=s.get(e.source),r=s.get(e.target),a=n.byEdge.get(e);e.routeCertificate={edgeIndex:t.edgeIndex,routeClass:t.routeClass,invariant:"straight",bendCount:0,directLaneClear:!0,sourcePort:i?eQ(i,e.points[0]):void 0,targetPort:r?eQ(r,e.points[1]):void 0,sourcePortAssignment:a?.source,targetPortAssignment:a?.target,straightened:!0}}}return h}function t1(e,t,n,i,r,a){let o=(Math.abs(e.x-t)<=a||Math.abs(e.x-(t+i))<=a)&&e.y>=n-a&&e.y<=n+r+a,s=(Math.abs(e.y-n)<=a||Math.abs(e.y-(n+r))<=a)&&e.x>=t-a&&e.x<=t+i+a;return o||s}var t0=Symbol("label-seat-sort-denied");function t2(e,t){if(t&&!t(1))return;let n=[];for(let i=1;i<e.points.length;i++){if(t&&!t(2))return;let r=e.points[i-1],a=e.points[i],o=.01>Math.abs(r.x-a.x);if(o||.01>Math.abs(r.y-a.y)){if(t&&!t(12))return;n.push({a:r,b:a,vertical:o,len:Math.abs(r.x-a.x)+Math.abs(r.y-a.y),i:i})}}if(!t||t(2*n.length+1)){try{n.sort((e,n)=>{if(t&&!t(4))throw t0;return n.len-e.len||e.i-n.i})}catch(e){if(e===t0)return;throw e}return n}}function t5(e,t){t?.();let n=[];for(let i=0;i<11;i++)t?.(),n.push(e+i/10*(1-2*e));return n.sort((e,n)=>(t?.(),Math.abs(e-.5)-Math.abs(n-.5)))}function t8(e,t){return h(e,t.lineWidth??1)}function t6(e,t,n){n?.();let i,r=(e,t)=>t.some(t=>{n?.();let i=t.concurrencyRegion?0:t.headerHeight??t.height;return i>0&&e.x<t.x+t.width&&e.x+e.w>t.x&&e.y<t.y+i&&e.y+e.h>t.y||r(e,t.children)}),a=r=>{for(let a of z()?e.edges.flatMap(e=>(n?.(),K(e,t))):i??=e.edges.flatMap(e=>(n?.(),K(e,t)))){n?.();let e=a.bounds;if(e&&r.x<e.x1&&r.x+r.w>e.x0&&r.y<e.y1&&r.y+r.h>e.y0)return!0}return!1};return{overlapsMarker:a,clearPaintRect:(i,o,s)=>{n?.();let l={x:i.x-o,y:i.y-o,w:i.w+2*o,h:i.h+2*o},h=t.lineWidth??1,d=u(s,h,"start")-o,x=u(s,h,"end")-o;if(!(e.nodes.some(e=>{n?.();let t=Math.max(0,e.id===s.source?d:0,e.id===s.target?x:0);return l.x<e.x+e.width+t&&l.x+l.w+t>e.x&&l.y<e.y+e.height+t&&l.y+l.h+t>e.y})||r(l,e.groups)||a(l)))return l}}}function t4(e,t,n){let i;for(let t of e.edges){if(!t.label||!t.labelPosition||t.points.length<2||!tO(t,e.edges,n))continue;let r=i??=t6(e,n),a=t8(t,n),s=t.labelBlock??o(N(t.label,t.labelContent),n),h=s.width+2*l,u=s.height+2*l,x=t2(t),y=t.labelPosition,c=!1,f=Math.min(h,u)/2-1;for(let i of[0,f,-f]){if(c)break;for(let o of x){if(c)break;let l=(o.vertical?u:h)/2;if(o.len<=2*l)continue;let x=l/o.len;for(let l of[5,4,6,3,7,2,8,1,9,0,10]){let h=x+l/10*(1-2*x),u=o.a.x+(o.b.x-o.a.x)*h+(o.vertical?i:0),y=o.a.y+(o.b.y-o.a.y)*h+(o.vertical?0:i);if(t.labelPosition={x:u,y:y},r.clearPaintRect(d(u,y,s),a,t)&&!tO(t,e.edges,n)){c=!0;break}}}}c||(t.labelPosition=y)}}function t3(e,t,n){let i=(e,t,n)=>{let i=n.x-t.x,r=n.y-t.y,a=i*i+r*r;if(0===a)return Math.hypot(e.x-t.x,e.y-t.y);let o=Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*r)/a));return Math.hypot(e.x-(t.x+o*i),e.y-(t.y+o*r))},r;for(let t of e.edges){if(!t.label||!t.labelPosition||t.points.length<2||t.source===t.target)continue;let a=t.labelBlock??o(N(t.label,t.labelContent),n),s=a.width+2*l,h=a.height+2*l,u=h/2+4,x=e=>{let n=1/0;for(let r=1;r<t.points.length;r++)n=Math.min(n,i(e,t.points[r-1],t.points[r]));return n};if(x(t.labelPosition)<=u)continue;let y=r??=t6(e,n),c=t8(t,n),f=(i,r)=>x({x:i,y:r})<=u&&!!y.clearPaintRect(d(i,r,a),c,t)&&!tO(t,e.edges,n,{x:i,y:r}),g=t2(t),p=!1;for(let e of g){if(p)break;let n=(e.vertical?h:s)/2;if(!(e.len<=2*n))for(let i of t5(n/e.len)){let n=e.a.x+(e.b.x-e.a.x)*i,r=e.a.y+(e.b.y-e.a.y)*i;if(f(n,r)){t.labelPosition={x:n,y:r},p=!0;break}}}if(!p){let e=t.points[0],n=1/0;for(let i of g.length?g:[]){let r=i.b.x-i.a.x,a=i.b.y-i.a.y,o=r*r+a*a||1,s=Math.max(0,Math.min(1,((t.labelPosition.x-i.a.x)*r+(t.labelPosition.y-i.a.y)*a)/o)),l=i.a.x+s*r,h=i.a.y+s*a,u=Math.hypot(t.labelPosition.x-l,t.labelPosition.y-h);u<n&&(n=u,e={x:l,y:h})}let i=n>.01?(t.labelPosition.x-e.x)/n:0,r=n>.01?(t.labelPosition.y-e.y)/n:-1,a=u-1;for(let n of[1,-1]){let o=e.x+i*a*n,s=e.y+r*a*n;if(f(o,s)){t.labelPosition={x:o,y:s};break}}}}}function t7(e,t,n=P({}),i){let r=1e6,a=e.edges.filter(e=>e.label&&e.labelPosition&&e.points.length>=2);if(0===a.length)return;let s=e=>{let t=x(e,n),i=t8(e,n);return t&&{x:t.x-i,y:t.y-i,w:t.w+2*i,h:t.h+2*i}},h=(e,t)=>Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x)>.5&&Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y)>.5,{overlapsMarker:u,clearPaintRect:y}=t6(e,n),f=function*(t,a,u=!1,x,f=!0){if(x&&!x.pay(16))return;let g=t.labelBlock??o(N(t.label,t.labelContent),n),p=g.width+2*l,m=g.height+2*l,M=t8(t,n),b=(o,l,u)=>{if(x)return x.pay(3)&&x.clear({x:o,y:l});if(i?.preserveRouteClearance&&r<=0)return!1;let f=y(d(o,l,g),M,t);if(!f)return!1;for(let e of a){let t=s(e);if(t&&h(f,t))return!1}if(tO(t,e.edges,n,{x:o,y:l}))return!1;if(i?.preserveRouteClearance||u){for(let n of e.edges)if(n!==t&&"invisible"!==n.style){for(let e=1;e<n.points.length;e++)if(i?.preserveRouteClearance&&--r<0||c(n.points[e-1],n.points[e],f))return!1}}return!0},$=x?t2(t,x.pay):t2(t);if(!$)return;let w=m/2+4,k=[w-1,-(w-1),(w-1)/2,-(w-1)/2];for(let[e,t]of[[0,!1],...k.map(e=>[e,!0]),...f?k.map(e=>[e,!1]):[]])for(let n of $){let a=(n.vertical?m:p)/2;if(!u&&n.len<=2*a)continue;let o=+!!n.vertical,s=+!n.vertical,l=u?0:a/n.len;if(x&&!x.pay(160))return;for(let a of t5(l)){let l=n.a.x+(n.b.x-n.a.x)*a+o*e,h=n.a.y+(n.b.y-n.a.y)*a+s*e;if(i?.preserveRouteClearance&&r<=0)return;b(l,h,t)&&(yield{x:l,y:h})}}},g=(e,t,n=!0)=>{for(let i of f(e,t,!1,void 0,n))return e.labelPosition=i,!0;return!1},p=(e,t)=>{let n=a.filter(n=>n!==e&&n!==t);for(let i of[!1,!0]){let r=e=>{let t=[];for(let r of f(e,n,i))if(t.push(r),64===t.length)break;return t},a=r(e),o=r(t);for(let n of a)for(let i of o)if(!h(s({...e,labelPosition:n}),s({...t,labelPosition:i})))return e.labelPosition=n,t.labelPosition=i,!0}return!1},m=()=>{if(z())return;let t=e=>e>r?(r=0,!1):(r-=e,!0);if(!t(8))return;let i=(n,i)=>{for(let r of e.edges){if(!t(1))break;if(r!==n&&"invisible"!==r.style)for(let e=1;e<r.points.length;e++){if(!t(1))return!1;if(c(r.points[e-1],r.points[e],i))return!0}}return!1},o;for(let l of a){if(!t(64+(l.label?.length??0)*12+2*e.edges.length))return;let h=s(l);if(!h||!u(h)&&!i(l,h))continue;if(!t(l.points.length+2))return;if(l.curve||(n.edgeBendRadius??0)!==0||l.points.some((e,t)=>t>0&&e.x!==l.points[t-1].x&&e.y!==l.points[t-1].y))continue;if(!(o??=tU(e.nodes,e.edges,e.groups,n,t))||!t(8))return;let d=new Set,y=new Map,c=(e,i,a,s)=>{if(!t(8))return;let l=[],h=new Map,u=i=>{if(e.source===e.target){if(!t(e.points.length+8))return!1;let r=x({...e,labelPosition:i},n);if(!r||e.points.some((t,n)=>{var i;return n>0&&(.01>=Math.abs((i=e.points[n-1]).x-t.x)?i.x>r.x+.01&&i.x<r.x+r.w-.01&&Math.min(Math.max(i.y,t.y),r.y+r.h)-Math.max(Math.min(i.y,t.y),r.y)>.01:.01>=Math.abs(i.y-t.y)&&i.y>r.y+.01&&i.y<r.y+r.h-.01&&Math.min(Math.max(i.x,t.x),r.x+r.w)-Math.max(Math.min(i.x,t.x),r.x)>.01)}))return!1}return o.clear(e,i,h,s,a)};for(let n of f(e,[],i,{clear:u,pay:t})){if(!t(1))return;if(l.push(n),64===l.length)break}return r>0?l:void 0},g=!1,p=c(l,!0,void 0,d);if(!p)return;for(let e of p){if(!t(3))return;if(y.set(l,e),o.clear(l,e,y)){l.labelPosition=e,g=!0;break}}if(g)continue;let m=a.filter(e=>d.has(e)&&!e.curve&&!e.points.some((t,n)=>n>0&&t.x!==e.points[n-1].x&&t.y!==e.points[n-1].y));for(let e of a){if(!t(1))return;if(m.includes(e)){if(!t(e.points.length+6))return;for(let n of[!1,!0]){let i=c(l,n,e),r=c(e,n,l);if(!i||!r)return;e:for(let n of i)for(let i of r){if(!t(16))return;let r=new Map([[l,n],[e,i]]);if(!(!o.clear(l,n,r)||!o.clear(e,i,r))){l.labelPosition=n,e.labelPosition=i,g=!0;break e}}if(g)break}if(g)break}}if(g||m.length<2)continue;let M=new Set(m);for(let e of[!1,!0]){let n=c(l,e,M);if(!n)return;e:for(let i of n){if(!t(8+4*m.length))return;let n=new Map([[l,i]]);for(let t of m){let i=c(t,e,l);if(!i)return;let r=i.find(e=>o.clear(t,e,new Map(n).set(t,e)));if(!r)continue e;n.set(t,r)}if([...n].every(([e,t])=>o.clear(e,t,n))){for(let[e,t]of n)e.labelPosition=t;g=!0;break}}if(g)break}}};for(let e=0;e<3;e++){if(i?.preserveRouteClearance&&r<=0)return;let t=0;for(let e of a){let n=s(e);n&&u(n)&&(t++,g(e,a.filter(t=>t!==e),!1))}for(let e=0;e<a.length;e++)for(let n=e+1;n<a.length;n++){let i=a[e],r=a[n],o=s(i),l=s(r);!o||!l||!h(o,l)||(t++,g(r,a.filter(e=>e!==r))||g(i,a.filter(e=>e!==i))||p(i,r))}if(0===t){m();break}2===e&&m()}}function t9(n,i,r){let a;for(let o of n.edges){if("invisible"===o.style||o.points.length<3||!o.hasArrowStart&&!o.hasArrowEnd)continue;let s=D(o,r);if(e(o.points,!0)+1e-7>=s.start&&e(o.points,!1)+1e-7>=s.end)continue;let l=t(o.points,s);if(!l)continue;let{ctx:h}=a??=tF(n.nodes,n.edges,i.direction,r,n.groups),u=h.nodes.find(e=>e.id===o.source),d=h.nodes.find(e=>e.id===o.target);if(eZ({...o,points:l},u,d)||tz(l,o,h)||!tm(o,l,n.edges,r))continue;let x=!0;for(let e=1;e<l.length&&x;e++){let t=l[e-1],n=l[e],i=eT(t.x===n.x?"TB":"LR");x=!tP(o,t[i.cross],Math.min(t[i.main],n[i.main]),Math.max(t[i.main],n[i.main]),h,i)}x&&(o.points=l,tG(o,o.routeCertificate,u,d))}}function ne(e,t,n){for(let i=0;i<e.edges.length&&0!==tK(e,t,n,!0).length;i++);return function(e,t,n){let i=te(e);for(let e of t){let r=e.routeCertificate,a=!1,o=e.points;for(let t of[!0,!1]){let[n,r,s]=(t?[...o].reverse():o).slice(-3),l=i.get(t?e.source:e.target);if(!l||"rectangle"!==l.shape||void 0!==l.semanticShape&&"rect"!==l.semanticShape||!n||!r||!s||Math.hypot(s.x-r.x,s.y-r.y)>=1)continue;let h=(.01>Math.abs(r.x-l.x)||.01>Math.abs(r.x-l.x-l.width))&&.01>Math.abs(s.x-r.x)&&.01>Math.abs(n.y-r.y)&&r.y>l.y&&r.y<l.y+l.height&&s.y>l.y&&s.y<l.y+l.height&&(n.x-r.x)*(r.x-l.x-l.width/2)>0,u=(.01>Math.abs(r.y-l.y)||.01>Math.abs(r.y-l.y-l.height))&&.01>Math.abs(s.y-r.y)&&.01>Math.abs(n.x-r.x)&&r.x>l.x&&r.x<l.x+l.width&&s.x>l.x&&s.x<l.x+l.width&&(n.y-r.y)*(r.y-l.y-l.height/2)>0;(h||u)&&(o=t?o.slice(1):o.slice(0,-1),a=!0)}a&&tm(e,o,t,n)&&(e.points=o,tG(e,r,i.get(e.source),i.get(e.target)))}}(e.nodes,e.edges,n),e.edges.flatMap(e=>e.routeCertificate?[e.routeCertificate]:[])}function nt(){return{total:0,labelLabel:0,labelNode:0,labelEdge:0}}function nn(e,t){return Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x)>y&&Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y)>y}function ni(e,t,n){let i=e.edges.flatMap((e,n)=>{if(!e.label)return[];let i=x(e.labelPosition?e:{...e,labelPosition:p(e.points)},t);return i?[{edgeIndex:n,rect:i}]:[]});return 0===i.length?nt():function(e,t,n,i){let r=nt(),a=i?e.filter(e=>i.has(e.edgeIndex)):e,o=i?[...i].filter(e=>void 0!==n[e]):[];for(let s=0;s<e.length;s++){let l=e[s],h=!i||i.has(l.edgeIndex),u=h?e:a;for(let e=h?s+1:0;e<u.length;e++){let t=u[e];!h&&t.edgeIndex<=l.edgeIndex||nn(l.rect,t.rect)&&r.labelLabel++}if(h)for(let e of t)nn(l.rect,e)&&r.labelNode++;for(let e=0;e<(h?n.length:o.length);e++){let t=h?e:o[e],i=n[t];if(!(t===l.edgeIndex||i.hidden)){for(let e=1;e<i.points.length;e++)if(c(i.points[e-1],i.points[e],l.rect)){r.labelEdge++;break}}}}return r.total=r.labelLabel+r.labelNode+r.labelEdge,r}(i,e.nodes.map(e=>({x:e.x,y:e.y,w:e.width,h:e.height})),e.edges.map(e=>({points:e.points,hidden:"invisible"===e.style})),n)}var nr={edgeThroughNode:"primary",nodeOverlaps:"primary",diagonalSegments:"secondary",unexplainedBends:"secondary",hitches:"secondary",offOutlineEndpoints:"cosmetic",endpointApproaches:"primary",labelOffRoute:"cosmetic"},na={primary:0,secondary:1,cosmetic:2};function no(e,t){let n=e=>.5>=Math.abs(e.x-t.x)&&.5>=Math.abs(e.y-t.y);return!!(Object.values(ej(e)).some(n)||"diamond"===e.shape&&Object.values(eY(e)).some(n))}function ns(e,t,n=1.5){let i=eE(e,t,n);return"none"===i.policy||i.onBoundary}function nl(e,t,n){let i=n.x+n.width/2,r=n.y+n.height/2,a=n.width/2,o=n.height/2,s=Math.min(e.x,t.x),l=Math.max(e.x,t.x),h=Math.min(e.y,t.y),u=Math.max(e.y,t.y);if("cylinder"===n.shape&&(void 0===n.semanticShape||"cyl"===n.semanticShape)&&n.height>14&&l>n.x&&s<n.x+n.width&&u>n.y+7&&h<n.y+n.height-7)return!0;let d=.5*("rectangle"!==n.shape&&"subroutine"!==n.shape||void 0!==n.semanticShape&&"rect"!==n.semanticShape&&"fr-rect"!==n.semanticShape&&"lin-rect"!==n.semanticShape&&"div-rect"!==n.semanticShape&&"win-pane"!==n.semanticShape);if(!(l>n.x+d&&s<n.x+n.width-d&&u>n.y+d&&h<n.y+n.height-d))return!1;switch(n.shape){case"ellipse":case"circle":case"doublecircle":case"state-start":case"state-end":return nc({x:0,y:0},{x:(e.x-i)/a,y:(e.y-r)/o},{x:(t.x-i)/a,y:(t.y-r)/o})<1-2.5/Math.min(a,o);case"stadium":return nh(e,t,{x:i-(a-o),y:r},{x:i+(a-o),y:r})<o-2.5;case"diamond":case"hexagon":case"trapezoid":case"trapezoid-alt":case"lean-r":case"lean-l":case"asymmetric":{let s,l="diamond"===n.shape?[{x:i,y:n.y},{x:n.x+n.width,y:r},{x:i,y:n.y+n.height},{x:n.x,y:r}]:"hexagon"===n.shape?(s=n.height/4,[{x:n.x+s,y:n.y},{x:n.x+n.width-s,y:n.y},{x:n.x+n.width,y:r},{x:n.x+n.width-s,y:n.y+n.height},{x:n.x+s,y:n.y+n.height},{x:n.x,y:r}]):function(e){let{x:t,y:n,width:i,height:r}=e,a=.15*i;switch(e.shape){case"trapezoid":return[{x:t+a,y:n},{x:t+i-a,y:n},{x:t+i,y:n+r},{x:t,y:n+r}];case"trapezoid-alt":return[{x:t,y:n},{x:t+i,y:n},{x:t+i-a,y:n+r},{x:t+a,y:n+r}];case"lean-r":return[{x:t+a,y:n},{x:t+i,y:n},{x:t+i-a,y:n+r},{x:t,y:n+r}];case"lean-l":return[{x:t,y:n},{x:t+i-a,y:n},{x:t+i,y:n+r},{x:t+a,y:n+r}];default:return[{x:t+12,y:n},{x:t+i,y:n},{x:t+i,y:n+r},{x:t+12,y:n+r},{x:t,y:n+r/2}]}}(n),h=Math.max(0,1-2.5/Math.min(a,o));return function(e,t,n){let i=e=>{for(let t=0;t<n.length;t++){let i=n[t],r=n[(t+1)%n.length];if((r.x-i.x)*(e.y-i.y)-(r.y-i.y)*(e.x-i.x)<-.5)return!1}return!0},r={x:(e.x+t.x)/2,y:(e.y+t.y)/2};if(i(e)||i(t)||i(r))return!0;for(let i=0;i<n.length;i++)if(nu(e,t,n[i],n[(i+1)%n.length]))return!0;return!1}(e,t,l.map(e=>({x:i+(e.x-i)*h,y:r+(e.y-r)*h})))}default:return!0}}function nh(e,t,n,i){return nu(e,t,n,i)?0:Math.min(nc(e,n,i),nc(t,n,i),nc(n,e,t),nc(i,e,t))}function nu(e,t,n,i){let r=(t.x-e.x)*(i.y-n.y)-(t.y-e.y)*(i.x-n.x);if(1e-9>Math.abs(r))return!1;let a=((n.x-e.x)*(i.y-n.y)-(n.y-e.y)*(i.x-n.x))/r,o=((n.x-e.x)*(t.y-e.y)-(n.y-e.y)*(t.x-e.x))/r;return a>.001&&a<.999&&o>.001&&o<.999}function nd(e,t){return r(e.map(e=>({points:e.points,visible:"invisible"!==e.style})),t)}function nx(e,t){let n=new Map;e.forEach((e,t)=>{if("invisible"===e.style||e.source===e.target)return;let i=JSON.stringify([e.source,e.target]),r=n.get(i)??[];r.push({edge:e,index:t}),n.set(i,r)});let i=(e,t)=>{for(let n=1;n<e.points.length;n++)for(let i=1;i<t.points.length;i++){let r=e.points[n-1],a=e.points[n],o=t.points[i-1],s=t.points[i];if(.01>=Math.abs(r.x-a.x)&&.01>=Math.abs(o.x-s.x)&&.5>=Math.abs(r.x-o.x)&&Math.min(Math.max(r.y,a.y),Math.max(o.y,s.y))-Math.max(Math.min(r.y,a.y),Math.min(o.y,s.y))>1||.01>=Math.abs(r.y-a.y)&&.01>=Math.abs(o.y-s.y)&&.5>=Math.abs(r.y-o.y)&&Math.min(Math.max(r.x,a.x),Math.max(o.x,s.x))-Math.max(Math.min(r.x,a.x),Math.min(o.x,s.x))>1)return!0}return!1},r=0;for(let e of n.values())for(let n=0;n<e.length;n++)for(let a=n+1;a<e.length;a++){let o=e[n],s=e[a];(!t||t.has(o.index)||t.has(s.index))&&i(o.edge,s.edge)&&r++}return r}function ny(e,t=!1){let n=new Map(e.nodes.map(e=>[e.id,e])),i=0,r=0;for(let a of e.edges)if(!(t&&"invisible"===a.style))for(let[e,t]of[[a.source,a.points[0]],[a.target,a.points.at(-1)]]){let a=n.get(e);a&&(i++,t&&no(a,t)&&r++)}return 0===i?1:r/i}function nc(e,t,n){let i=n.x-t.x,r=n.y-t.y,a=i*i+r*r;if(0===a)return Math.hypot(e.x-t.x,e.y-t.y);let o=Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*r)/a));return Math.hypot(e.x-(t.x+o*i),e.y-(t.y+o*r))}function nf(e,t){return"LR"===t||"RL"===t?e.y+e.height/2:e.x+e.width/2}function ng(e,t){return"LR"===t||"RL"===t?e.x:e.y}function np(e,t){return"LR"===t||"RL"===t?e.x+e.width:e.y+e.height}function nm(e,t){let n=t=>t.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5||n(t.children));return n(t)}function nM(e,t){let n=g(t.edges),i=new Map(e.nodes.map(e=>[e.id,e])),r=new Map,a=new Map;for(let n of e.edges){var o;let e=i.get(n.source),s=i.get(n.target);e&&s&&("LR"===(o=t.direction)?ng(s,o)>np(e,o):"RL"===o||"BT"===o?np(s,o)<ng(e,o):ng(s,o)>np(e,o))&&(r.has(n.source)||r.set(n.source,[]),r.get(n.source).push(s),a.has(n.target)||a.set(n.target,[]),a.get(n.target).push(e))}let s=0,l=(i,r,a)=>{if(!i||r.length<2||r.length>6||!function(e,t,n=1){if(e.length<2)return!1;let i=e.map(e=>ng(e,t));return Math.max(...i)-Math.min(...i)<=n}(r,t.direction,28)||!ez.has(i.shape)||nm(i,e.groups)||!r.every(t=>("in"===a?ez.has(t.shape):"rectangle"===t.shape)&&!nm(t,e.groups))||new Set(r.map(e=>e.id)).size!==r.length)return;for(let e=0;e<r.length;e++)for(let t=0;t<r.length;t++)if(e!==t&&n(r[e].id,r[t].id))return;let o=r.reduce((e,n)=>e+nf(n,t.direction),0)/r.length;s=Math.max(s,Math.abs(nf(i,t.direction)-o))};for(let[e,t]of r)l(i.get(e),t,"out");for(let[e,t]of a)l(i.get(e),t,"in");return s}function nb(e,t,n=P({})){return n$(e,t,n,!0)}function n$(e,t,n,i){let r=[],a=new Map(t.nodes.map(e=>[e.id,e])),o=0,l=0,h=0,u=0,d=0,x=0,y=0,c=0,f=0;for(let e of t.edges){let t=`${e.source}->${e.target}`,g=Math.max(0,e.points.length-2);if("invisible"!==e.style){let n=eZ(e,a.get(e.source),a.get(e.target));n&&(l+=n,r.push({metric:"endpointApproaches",detail:`${t}: ${n} inward or tangent exact endpoint shaft(s)`}))}let p=tT(e);"invisible"===e.style||p||(x+=g,y=Math.max(y,g)),g>0&&e.routeCertificate?.invariant==="straight"&&(u+=g,r.push({metric:"unexplainedBends",detail:`${t} certified straight with ${g} bends`}));for(let n=1;n<e.points.length;n++){let i=e.points[n-1],a=e.points[n];Math.abs(i.x-a.x)>.01&&Math.abs(i.y-a.y)>.01&&(h++,r.push({metric:"diagonalSegments",detail:`${t} segment ${n}`}))}for(let[n,i,s]of[[e.source,e.points[0],"source"],[e.target,e.points[e.points.length-1],"target"]]){let e=a.get(n);!e||i&&ns(e,i)||(o++,r.push({metric:"offOutlineEndpoints",detail:i?`${t} ${s} on ${n}(${e.shape}) at (${i.x.toFixed(1)},${i.y.toFixed(1)})`:`${t} missing ${s} endpoint on ${n}`}))}let m=a.get(e.source),M=a.get(e.target),b=(e,t)=>!!e&&!!t&&no(e,t);if((b(m,e.points[0])||b(M,e.points[e.points.length-1]))&&c++,e.label&&e.labelPosition&&e.points.length>=2){let a=e.labelBlock??s(e.label,n,"edge"),o=(a.height+16)/2+4,l=e.source===e.target,h=1/0;for(let t=1;t<e.points.length;t++)h=Math.min(h,l?function(e,t,n,i,r,a){let o=r=>r.x>=e-n&&r.x<=e+n&&r.y>=t-i&&r.y<=t+i;if(o(r)||o(a))return 0;let s=[{x:e-n,y:t-i},{x:e+n,y:t-i},{x:e+n,y:t+i},{x:e-n,y:t+i}],l=1/0;for(let e=0;e<4;e++)l=Math.min(l,nh(s[e],s[(e+1)%4],r,a));return l}(e.labelPosition.x,e.labelPosition.y,(a.width+16)/2,(a.height+16)/2,e.points[t-1],e.points[t]):nc(e.labelPosition,e.points[t-1],e.points[t]));h>o&&(d++,r.push({metric:"labelOffRoute",detail:`${t} label ${h.toFixed(1)}px from its route (allowed ${o.toFixed(1)})`})),i&&(f=Math.max(f,e.label&&e.labelPosition&&!(e.points.length<2)?Math.abs(function(e,t){let n=0,i=[];for(let e=1;e<t.length;e++){let r=Math.hypot(t[e].x-t[e-1].x,t[e].y-t[e-1].y);i.push(r),n+=r}let r=1/0,a=0,o=0;for(let n=1;n<t.length;n++){let s=t[n-1],l=t[n],h=l.x-s.x,u=l.y-s.y,d=h*h+u*u,x=d?((e.x-s.x)*h+(e.y-s.y)*u)/d:0;x=Math.max(0,Math.min(1,x));let y=s.x+x*h,c=s.y+x*u,f=Math.hypot(e.x-y,e.y-c);f<r&&(r=f,a=o+x*i[n-1]),o+=i[n-1]}return n?a/n:.5}(e.labelPosition,e.points)-.5):0))}}let g=0;for(let e of t.edges)for(let n of t.nodes)if(n.id!==e.source&&n.id!==e.target){for(let t=1;t<e.points.length;t++)if(nl(e.points[t-1],e.points[t],n)){g++,r.push({metric:"edgeThroughNode",detail:`${e.source}->${e.target} segment ${t} through ${n.id}`});break}}let p=i?nd(t.edges):0,m=0;for(let e=0;e<t.nodes.length;e++)for(let n=e+1;n<t.nodes.length;n++){let i=t.nodes[e],a=t.nodes[n],o=Math.min(i.x+i.width,a.x+a.width)-Math.max(i.x,a.x),s=Math.min(i.y+i.height,a.y+a.height)-Math.max(i.y,a.y);o>.5&&s>.5&&(m++,r.push({metric:"nodeOverlaps",detail:`${i.id} overlaps ${a.id}`}))}let M=function(e,t,n=P({})){return tK(e,t,n,!1)}(t,e,n);for(let e of M)r.push({metric:"hitches",detail:`${e.edge} deviates ${e.deviationPx}px with a clear lane`});return{metrics:{edges:t.edges.length,offOutlineEndpoints:o,endpointApproaches:l,diagonalSegments:h,unexplainedBends:u,hitches:M.length,nodeOverlaps:m,labelOffRoute:d,edgeThroughNode:g,labelConflicts:i?ni(t,n).total:0,edgeCrossings:p,totalBends:x,maxBendsPerEdge:y,portEndpointRate:ny(t),portAnchoredEdgeRate:0===t.edges.length?1:c/t.edges.length,peerBarycenterDelta:i?nM(t,e):0,worstLabelOffset:f},violations:r.map(e=>({...e,severity:nr[e.metric]??"secondary"})).sort((e,t)=>na[e.severity]-na[t.severity])}}function nw(e,t,n,i,r=new Set){let a={};for(let o of n)switch(o){case"hard":a.hard=nv(n$(e,t,i,!1)).length;break;case"crossings":a.crossings=nd(t.edges);break;case"portRate":a.portRate=ny(t,!0);break;case"symErr":a.symErr=nM(t,e);break;case"parallelOverlaps":a.parallelOverlaps=nx(t.edges);break;case"opposingOverlaps":a.opposingOverlaps=Y(t.edges);break;case"endpointApproaches":{let e=new Map(t.nodes.map(e=>[e.id,e]));a.endpointApproaches=t.edges.reduce((t,n)=>t+("invisible"===n.style?0:eZ(n,e.get(n.source),e.get(n.target))),0);break}case"bends":a.bends=t.edges.reduce((e,t)=>e+("invisible"===t.style||(t.routeCertificate?tT(t):r.has(t)&&to(t))?0:Math.max(0,t.points.length-2)),0);break;case"straight":a.straight=t.edges.filter(e=>"invisible"!==e.style&&2===e.points.length).length}return a}var nk=["offOutlineEndpoints","endpointApproaches","diagonalSegments","unexplainedBends","hitches","nodeOverlaps","labelOffRoute","edgeThroughNode"];function nv(e){let t=new Set(nk);return e.violations.filter(e=>t.has(e.metric))}function nS(e,t,n){if(e.source===e.target)return!1;let i=t.get(e.source),r=t.get(e.target);if(!i||!r)return!1;let a=m(n),o=M(i),s=M(r);return(a.isHorizontal?s.x-o.x:s.y-o.y)*a.sign>8}function nC(e,t,n=18){if(e.length<2)return!1;let i=e.map(e=>b(e,t));return Math.max(...i)-Math.min(...i)<=n}function nP(e,t){let n=m(t),i=[];for(let n of[...e].sort((e,n)=>b(e,t)-b(n,t)||$(e,t)-$(n,t))){let e=b(n,t),r=i.find(n=>18>=Math.abs(b(n[0],t)-e));r||(r=[],i.push(r)),r.push(n)}for(let e of i){let i=[...e].sort((e,n)=>$(e,t)-$(n,t)),r=$(i[0],t);for(let e of i){let i=$(e,t);if(i<r){let t=r-i;n.isHorizontal?e.y+=t:e.x+=t}r=$(e,t)+w(e,t)+24}}}function nN(e,t){let n=t=>t.some(t=>e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5||n(t.children));return n(t)}function nW(e,t=[]){for(let n of e)t.push(n),nW(n.children,t);return t}function nL(e,t){return e.x>=t.x-.5&&e.y>=t.y-.5&&e.x+e.width<=t.x+t.width+.5&&e.y+e.height<=t.y+t.height+.5}function nE(e,t,n,i){if(i<=0)return;let r=m(n),a=new Set;for(let n of nW(e))a.has(n)||!t.some(e=>nL(e,n))||(a.add(n),r.isHorizontal?(r.sign>0||(n.x-=i),n.width+=i):(r.sign>0||(n.y-=i),n.height+=i))}function nI(e,t,n,i){if("diamond"===e.shape){let r=(2===i?{LR:["NE","SE"],RL:["NW","SW"],BT:["NW","NE"],TD:["SW","SE"],TB:["SW","SE"]}:3===i?{LR:["NE","E","SE"],RL:["NW","W","SW"],BT:["NW","N","NE"],TD:["SW","S","SE"],TB:["SW","S","SE"]}:{})[t]?.[n];if(r)return"diamond"===e.shape&&("NE"===r||"SE"===r||"SW"===r||"NW"===r)?eY(e)[r]:ej(e)[r]}let r=m(t),a=(n+1)/(i+1);return r.isHorizontal?{x:"E"===r.sourceSide?e.x+e.width:e.x,y:e.y+e.height*a}:{x:e.x+e.width*a,y:"S"===r.sourceSide?e.y+e.height:e.y}}function nB(e,t){return ej(e)[m(t).targetSide]}function nR(e,t){return Array.from({length:e},(n,i)=>(i-(e-1)/2)*t)}function nH(e,t,n,i){let r=Math.abs(t-e);return r/2>=i||r<n+i?e+(t-e)/2:t-Math.sign(t-e)*i}function nA(e,t,n,i){return m(n).isHorizontal?eX([e,{x:i,y:e.y},{x:i,y:t.y},t]):eX([e,{x:e.x,y:i},{x:t.x,y:i},t])}function nF(e,t,n,i){for(let r=1;r<e.length;r++)if(!function(e,t,n,i,r=1,a){let o=Math.min(e.x,t.x),s=Math.max(e.x,t.x),l=Math.min(e.y,t.y),h=Math.max(e.y,t.y);for(let u of n){if(a?.(1),i.has(u.id))continue;let n=u.x-r,d=u.x+u.width+r,x=u.y-r,y=u.y+u.height+r;if(.01>Math.abs(e.x-t.x)){if(e.x>=n&&e.x<=d&&l<y&&h>x)return!1}else if(.01>Math.abs(e.y-t.y)&&e.y>=x&&e.y<=y&&o<d&&s>n)return!1}return!0}(e[r-1],e[r],t,n,1,i))return!1;return!0}function nO(e,t,n,i){if(0===e.points.length)return;let r=m(t),a=n?e.points.length-1:0,o=n?-1:1,s=e.points[a][r.cross],l=1/0,h=-1/0;for(let t=a;t>=0&&t<e.points.length&&!(Math.abs(e.points[t][r.cross]-s)>.5);t+=o)l=Math.min(l,e.points[t][r.main]),h=Math.max(h,e.points[t][r.main]),e.points[t][r.cross]+=i;e.labelPosition&&12>=Math.abs(e.labelPosition[r.cross]-s)&&e.labelPosition[r.main]>=l-.5&&e.labelPosition[r.main]<=h+.5&&(e.labelPosition[r.cross]+=i)}function nz(e,t,n,i,r){let a=m(i);for(let n of t)e.has(n.id)&&(n[a.cross]+=r);for(let t of n){let n=e.has(t.source),o=e.has(t.target);if(n&&o){for(let e of t.points)e[a.cross]+=r;t.labelPosition&&(t.labelPosition[a.cross]+=r)}else o?nO(t,i,!0,r):n&&nO(t,i,!1,r)}}function nj(e,t,n,i,r,a){let o=m(i),s=t.filter(t=>e.has(t.id)),l=new Map(s.map(e=>[e.id,{x:o.isHorizontal?e.x:e.x+r,y:o.isHorizontal?e.y+r:e.y,width:e.width,height:e.height}]));for(let e of l.values())if(e.x<0||e.y<0)return!1;for(let n=0;n<s.length;n++){let i=l.get(s[n].id);for(let e=n+1;e<s.length;e++)if(k(i,l.get(s[e].id),8))return!1;for(let n of t)if(!e.has(n.id)&&k(i,n,8))return!1}for(let t of s){let i=l.get(t.id);for(let t of n){if(e.has(t.source)||e.has(t.target))continue;for(let e=1;e<t.points.length;e++){let n=t.points[e-1],r=t.points[e];if(Math.max(n.x,r.x)>i.x+.5&&Math.min(n.x,r.x)<i.x+i.width-.5&&Math.max(n.y,r.y)>i.y+.5&&Math.min(n.y,r.y)<i.y+i.height-.5)return!1}let n=x(t,a);if(n&&k(i,{x:n.x,y:n.y,width:n.w,height:n.h},8))return!1}}return!0}function nY(e,t,n,i={}){let r=new Map(e.map(e=>[e.id,e])),a=m(n.direction);for(let o of t){if(o.source===o.target||o.points.length<2)continue;let t=r.get(o.source),s=r.get(o.target);if(!t||!s)continue;let l=!ns(t,o.points[0]),h=!ns(s,o.points[o.points.length-1]);if(!l&&!h)continue;let u=ej(t)[a.sourceSide],d=ej(s)[a.targetSide],x=nH(u[a.main],d[a.main],eO(i,o,"start"),eO(i,o,"end")),y=nA(u,d,n.direction,x);if(!nF(y,e,new Set([o.source,o.target])))continue;let c=o.routeCertificate;o.points=y,tG(o,c,t,s),o.label&&(o.labelPosition=p(y))}}function nQ(e,t,n,i,r=[]){let a=m(n.direction);i?.(e.length);let o=new Map(e.map(e=>[e.id,e])),s=(t,n)=>{for(let r of e)if(i?.(1),!n.has(r.id)){for(let e=1;e<t.length;e++)if(i?.(1),nl(t[e-1],t[e],r))return!0}return!1},l=e=>{let t=n=>{i?.(1);let r=n.concurrencyRegion?0:n.headerHeight;if(0!==n.width&&(void 0===r||!Number.isFinite(r)||r<0))return!1;if(void 0!==r&&r>0&&n.width>0)for(let t=1;t<e.length;t++){i?.(1);let a=e[t-1],o=e[t];if(Math.max(a.x,o.x)>n.x&&Math.min(a.x,o.x)<n.x+n.width&&Math.max(a.y,o.y)>n.y&&Math.min(a.y,o.y)<n.y+r)return!1}for(let e of n.children)if(!t(e))return!1;return!0};for(let e of r)if(!t(e))return!1;return!0},h=(t,n)=>{for(let r=1;r<=t.length-3;r++){let a=t[r],o=t[r+1],h=t[r-1],u=t[r+2],d=.5>Math.abs(a.x-o.x);if(d===.5>Math.abs(a.y-o.y)||!s([a,o],n))continue;let x=d?"x":"y",y=d?"y":"x";if(Math.abs(h[y]-a[y])>.5||Math.abs(u[y]-o[y])>.5)continue;let c=a[x],f=[];for(let t of e)i?.(1),n.has(t.id)||f.push(t[x]-10,t[x]+("x"===x?t.width:t.height)+10);for(let a of(f.sort((e,t)=>Math.abs(e-c)-Math.abs(t-c)),f)){let o=t.map(e=>({...e}));if(o[r][x]=a,o[r+1][x]=a,!s(o,n)&&nF(o,e,n,i)&&l(o))return eX(o)}}return null},u=(t,r)=>{let o=t[0],h=t[t.length-1],u=Math.min(o[a.main],h[a.main]),d=Math.max(o[a.main],h[a.main]),x=1/0,y=-1/0,c=[];for(let t of e){if(i?.(1),r.has(t.id))continue;let e=t[a.main];if(t[a.main]+("x"===a.main?t.width:t.height)<=u||e>=d)continue;let o=$(t,n.direction),s=o+w(t,n.direction);x=Math.min(x,o),y=Math.max(y,s),c.push(o-10,s+10)}if(!Number.isFinite(x))return null;c.push(x-10,y+10);let f=(e,t)=>"x"===a.main?{x:e,y:t}:{x:t,y:e},g=Math.sign(h[a.main]-o[a.main])||1,p=Math.min(12,Math.abs(h[a.main]-o[a.main])/3),m=o[a.main]+g*p,M=h[a.main]-g*p,b=(o[a.cross]+h[a.cross])/2;for(let t of[...new Set(c)].sort((e,t)=>Math.abs(e-b)-Math.abs(t-b))){let n=eX([o,f(m,o[a.cross]),f(m,t),f(M,t),f(M,h[a.cross]),h]);if(!s(n,r)&&nF(n,e,r,i)&&l(n))return n}return null},d=e=>{for(let t=1;t<e.length;t++){i?.(1);let n=e[t-1],r=e[t];if(!Number.isFinite(n.x)||!Number.isFinite(n.y)||!Number.isFinite(r.x)||!Number.isFinite(r.y)||n.x!==r.x&&n.y!==r.y||n.x===r.x&&n.y===r.y)return!1;let a=n.x===r.x;for(let o=1;o<t;o++){i?.(1);let s=e[o-1],l=e[o];if(a===(s.x===l.x)){let e=a?"y":"x",i=a?"x":"y";if(n[i]!==s[i])continue;let h=Math.max(Math.min(n[e],r[e]),Math.min(s[e],l[e])),u=Math.min(Math.max(n[e],r[e]),Math.max(s[e],l[e]));if(o===t-1?h<u:h<=u)return!1}else if(o!==t-1){let e=a?n.x:s.x,t=a?s.y:n.y;if(e>=Math.min(n.x,r.x)&&e<=Math.max(n.x,r.x)&&t>=Math.min(n.y,r.y)&&t<=Math.max(n.y,r.y)&&e>=Math.min(s.x,l.x)&&e<=Math.max(s.x,l.x)&&t>=Math.min(s.y,l.y)&&t<=Math.max(s.y,l.y))return!1}}}return!0};i?.(1);let x=new Set,y=(t,n)=>{if(t.length<3)return null;let r=t.at(-1),a=t.at(-2),o=t.at(-3),h=a.y===r.y&&a.x!==r.x?"x":a.x===r.x&&a.y!==r.y?"y":void 0;if(!h)return null;let u="x"===h?"y":"x";if(o[h]!==a[h]||o[u]===a[u]||!s([a,r],n))return null;let y=[];for(let t of e)i?.(1),n.has(t.id)||!nl(a,r,t)||(i?.(2),y.push(t[u]-10,t[u]+("x"===u?t.width:t.height)+10));y.sort((e,t)=>(i?.(1),Math.abs(e-a[u])-Math.abs(t-a[u])));let c=r[h]+Math.sign(a[h]-r[h])*Math.min(10,Math.abs(a[h]-r[h])/2);for(let o of y){i?.(2*t.length+12);let y={...a,[u]:o},f={...r,[h]:c,[u]:o},g={...r,[h]:c},p=eX([...t.slice(0,-2),y,f,g,r]),m=(e,t,n)=>t.x===e.x&&n.x===e.x&&Math.sign(t.y-e.y)===Math.sign(n.y-e.y)||t.y===e.y&&n.y===e.y&&Math.sign(t.x-e.x)===Math.sign(n.x-e.x);if(!(!m(t[0],t[1],p[1])||!m(r,a,p.at(-2)))&&!s(p,x)&&nF(p,e,n,i)&&l(p)&&d(p))return p}return null};for(let e of t){if(i?.(1),e.source===e.target||e.points.length<2)continue;let t=o.get(e.source),n=o.get(e.target);if(!t||!n)continue;let r=new Set([e.source,e.target]);if(!s(e.points,r)||!ns(t,e.points[0])||!ns(n,e.points[e.points.length-1]))continue;let a=h(e.points,r)??u(e.points,r)??y(e.points,r);if(a||(i?.(e.points.length),a=y(e.points.toReversed(),r)?.reverse()??null),!a)continue;let l=e.routeCertificate;e.points=a,tG(e,l,t,n),e.label&&(e.labelPosition=p(a))}}function nZ(e,t,n){let i=new Map(e.map(e=>[e.id,e]));for(let r of t){if(!n.has(r)||r.label||4!==r.points.length)continue;let t=ts(r),[a,o,s,l]=r.points;if(!a||!o||!s||!l)continue;let h=i.get(r.target);if(!h||"rectangle"!==h.shape)continue;let u=new Set([r.source,r.target]);if(.01>Math.abs(a.y-o.y)&&.01>Math.abs(o.x-s.x)&&.01>Math.abs(s.y-l.y)&&6>=Math.abs(o.y-s.y)){let n={x:l.x,y:a.y};(.01>Math.abs(l.x-h.x)||.01>Math.abs(l.x-(h.x+h.width)))&&n.y>=h.y-.5&&n.y<=h.y+h.height+.5&&nF([a,n],e,u)&&(r.points=[a,n],r.routeCertificate=void 0,tl(r,t));continue}if(.01>Math.abs(a.x-o.x)&&.01>Math.abs(o.y-s.y)&&.01>Math.abs(s.x-l.x)&&6>=Math.abs(o.x-s.x)){let n={x:a.x,y:l.y};(.01>Math.abs(l.y-h.y)||.01>Math.abs(l.y-(h.y+h.height)))&&n.x>=h.x-.5&&n.x<=h.x+h.width+.5&&nF([a,n],e,u)&&(r.points=[a,n],r.routeCertificate=void 0,tl(r,t))}}}export{Y as a,Q as b,J as c,T as d,_ as e,D as f,G as g,K as h,td as i,tg as j,tp as k,ea as l,es as m,el as n,eg as o,eM as p,ek as q,ev as r,eH as s,eA as t,eF as u,eO as v,ez as w,ej as x,eY as y,eZ as z,eq as A,eJ as B,eX as C,tn as D,tY as E,tZ as F,tq as G,tV as H,tU as I,ta as J,ts as K,tl as L,th as M,tW as N,tH as O,tA as P,tF as Q,tD as R,tG as S,t5 as T,t6 as U,t4 as V,t3 as W,t7 as X,t9 as Y,ne as Z,ni as _,ns as $,nl as aa,nd as ba,nx as ca,ny as da,nb as ea,nw as fa,nv as ga,nS as ha,nC as ia,nP as ja,nN as ka,nW as la,nL as ma,nE as na,nI as oa,nB as pa,nR as qa,nH as ra,nA as sa,nF as ta,nz as ua,nj as va,nY as wa,nQ as xa,nZ as ya};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as e}from"./chunk-
|
|
1
|
+
import{M as e}from"./chunk-X2UYKWKM.js";function t(e){let t=new Map;for(let r of e){let e=t.get(r.parentId)??[];e.push(r),t.set(r.parentId,e)}return t}function r(t,r){e("nodes",t.length);let n=new Map(t.map(e=>[e.id,e]));if(n.size!==t.length)throw Error("Hierarchy contains duplicate identities");let a=new Set(t.map(e=>e.parentId)),i=new Map;for(let o of t){let t=new Set,s=r?.(o)??a.has(o.id),d=o;for(;d&&!i.has(d.id);){if(t.has(d.id))throw Error("Hierarchy contains a cycle");if(t.add(d.id),e("nesting",t.size-!s),d.parentId&&!n.has(d.parentId))throw Error(`Unknown parent ${d.parentId}`);d=d.parentId?n.get(d.parentId):void 0}let p=d?i.get(d.id):0;for(let o of[...t].reverse()){let t=n.get(o);e("nesting",p+=r?.(t)??a.has(o)?1:0),i.set(o,p)}}}export{t as a,r as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as t,d as e,h as n}from"./chunk-
|
|
1
|
+
import{a as t,d as e,h as n}from"./chunk-J7FFAFQF.js";function r(t){if(Number.isInteger(t))return String(t);let e=Math.round(100*t)/100;return String(Number.isFinite(e)&&(0!==e||0===t)?e:t)}function a(r,i={}){let c=r<=6?{accent:i.accent&&e(i.accent)?i.accent:t,bg:i.bg&&e(i.bg)?i.bg:void 0}:i,u=n(r,c),s=i.overrides;return s&&0!==s.length?u.map((t,e)=>s[e%12]??t):u}export{r as a,a as b};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{B as e,C as t,D as i,E as a,F as r,G as n,a as o,h as s,i as l,j as c,k as d,l as u,m as f,n as p,o as m,x as g}from"./chunk-DF6765YX.js";import{b as h,c as y,e as v,g as b,z as S}from"./chunk-J35HAQQF.js";import{F as $,G as w,L as x,M as C,ga as O,ha as j,ia as k,s as E,t as F,v as A,x as I,z as T}from"./chunk-X2UYKWKM.js";import{a as D,b as z,c as L,d as M,e as R,f as q}from"./chunk-TYZOZXUJ.js";import{Kb as N,ab as P,c as B,ob as _,r as W}from"./chunk-Z3FDIVLN.js";import{a as V,b as J,e as G,f as H,g as U}from"./chunk-N5ELX7LR.js";import{a as Y}from"./chunk-5UVGUSD6.js";function K(e){return h(e)?e:void 0}function X(e,t){let i=e.$ref;if("string"!=typeof i||!i.startsWith("#/"))return;let a=t;for(let e of i.slice(2).split("/")){if(!h(a))return;a=a[e.replaceAll("~1","/").replaceAll("~0","~")]}return K(a)}function Z(e,t,i=t,a=[],r={}){let n="field"===r.diagnostics,o=(e,t,i,a,s)=>{let l=K(t.$defs)?t:i,c=(e,t=!0)=>[{path:a,message:e,generic:t}];if(void 0!==t.$ref){let i=X(t,l);return i?o(e,i,l,a,s):c(n?"uses an unresolved schema reference":`uses unresolved schema reference ${String(t.$ref)}`,!1)}let d=Array.isArray(t.anyOf)?t.anyOf.map(K).filter(e=>void 0!==e):[];if(d.length>0){let i=n?d.filter(t=>(function e(t,i,a){let r=X(i,a);if(r)return e(t,r,a);let n=Array.isArray(i.anyOf)?i.anyOf.map(K).filter(e=>void 0!==e):[];if(n.length>0)return n.some(i=>e(t,i,a));switch(i.type){case"null":return null===t;case"string":return"string"==typeof t;case"number":case"integer":return"number"==typeof t;case"boolean":return"boolean"==typeof t;case"array":return Array.isArray(t);case"object":return h(t);default:return!0}})(e,t,l)):[],r=(i.length>0?i:d).map(t=>o(e,t,l,a,new Set(s)));if(!r.some(e=>0===e.length)){let e=t["x-agentic-mermaid-validation-expectation"];return n&&0!==i.length||"string"!=typeof e?r.sort((e,t)=>e.length-t.length)[0]??c("must match an allowed shape"):c(`must be ${e}`)}}let f=Array.isArray(t.oneOf)?t.oneOf.map(K).filter(e=>void 0!==e):[];if(f.length>0&&!n){let t=f.filter(t=>0===o(e,t,l,a,new Set(s)).length);if(1!==t.length)return c(`must match exactly one allowed shape (matched ${t.length})`)}let p=n?(e,t)=>e===t:Object.is;if(Object.prototype.hasOwnProperty.call(t,"const")&&!p(e,t.const))return c(`must equal ${String(t.const)}`);if(Array.isArray(t.enum)&&!(n?t.enum.includes(e):t.enum.some(t=>Object.is(t,e))))return c(`must be one of ${t.enum.map(String).join(" | ")}`);let m=t.type;if(!(void 0===m||"null"===m&&null===e||"string"===m&&"string"==typeof e||"number"===m&&"number"==typeof e&&Number.isFinite(e)||"integer"===m&&"number"==typeof e&&Number.isFinite(e)&&Number.isInteger(e)||"boolean"===m&&"boolean"==typeof e||"array"===m&&Array.isArray(e)||"object"===m&&h(e))){let e="number"===m?"a finite number":"integer"===m?"a finite integer":"object"===m?"a plain JSON object":"array"===m?"an array":"null"===m?"null":`a ${String(m)}`;return c(`must be ${e}`)}if("number"==typeof e){if("number"==typeof t.minimum&&e<t.minimum)return c(`must be at least ${t.minimum}`);if("number"==typeof t.exclusiveMinimum&&e<=t.exclusiveMinimum)return c(`must be greater than ${t.exclusiveMinimum}`);if("number"==typeof t.maximum&&e>t.maximum)return c(`must be at most ${t.maximum}`)}if("string"==typeof e){if("number"==typeof t.minLength&&e.length<t.minLength)return c(`must contain at least ${t.minLength} character${1===t.minLength?"":"s"}`);if("string"==typeof t.pattern){let i;try{i=new RegExp(t.pattern,n?void 0:"u").test(e)}catch{return c("uses an invalid schema pattern",!1)}if(!i)return c(r.patternMismatch?.(t)??`must match ${t.pattern}`)}if("number"==typeof t.maxLength&&e.length>t.maxLength)return c(`must contain at most ${t.maxLength} characters`)}if(Array.isArray(e)&&"array"===m){if("number"==typeof t.minItems&&e.length<t.minItems)return c(`must contain at least ${t.minItems} item${1===t.minItems?"":"s"}`);if("number"==typeof t.maxItems&&e.length>t.maxItems)return c(`must contain at most ${t.maxItems} items`);if(s.has(e))return c("must be acyclic",!1);let i=K(t.items);if(i){s.add(e);try{let t=e.flatMap((e,t)=>o(e,i,l,[...a,t],s));if(t.length>0)return t}finally{s.delete(e)}}}if(h(e)&&("object"===m||void 0!==t.properties||void 0!==t.required||void 0!==t.additionalProperties)){if(s.has(e))return c("must be acyclic",!1);s.add(e);try{let i=K(t.properties)??{},r=Array.isArray(t.required)?t.required.filter(e=>"string"==typeof e):[],n=[];for(let t of r)Object.prototype.hasOwnProperty.call(e,t)||n.push({path:[...a,t],message:"is required",generic:!1});for(let[r,c]of Object.entries(e)){if(u(r)){n.push({path:[...a,r],message:"uses a forbidden prototype key",generic:!1});continue}let e=K(i[r]);if(e){n.push(...o(c,e,l,[...a,r],s));continue}if(!1===t.additionalProperties){n.push({path:[...a,r],message:"is not allowed",generic:!1});continue}let d=K(t.additionalProperties);d&&n.push(...o(c,d,l,[...a,r],s))}if(n.length>0)return n}finally{s.delete(e)}}return r.validateRuntime?.(e,t,a)??[]};return o(e,t,i,a,new Set)}var Q,ee=new Set(Object.values(O).flat()),et=new Set(["primaryTextColor","textColor","nodeTextColor","secondaryTextColor","tertiaryTextColor"]),ei=new Set([...Array.from({length:12},(e,t)=>`pie${t+1}`),"pieStrokeColor","pieOuterStrokeColor","pieSectionTextColor","pieTitleTextColor","pieLegendTextColor"]),ea=new Set(["pieSectionTextColor","pieTitleTextColor","pieLegendTextColor"]),er=new Set([...Array.from({length:8},(e,t)=>[`git${t}`,`gitBranchLabel${t}`,`gitInv${t}`]).flat(),"commitLabelColor","commitLabelBackground"]),en=new Set([...Array.from({length:8},(e,t)=>`gitBranchLabel${t}`),"commitLabelColor"]),eo=new Set(Array.from({length:12},(e,t)=>[`cScale${t}`,`cScaleLabel${t}`,`cScaleInv${t}`]).flat()),es=new Set([...Array.from({length:12},(e,t)=>`cScale${t}`),"titleColor"]),el=new Set(["clusterBkg","clusterBorder"]),ec=["backgroundColor","titleColor","xAxisLabelColor","xAxisTickColor","xAxisLineColor","xAxisTitleColor","yAxisLabelColor","yAxisTickColor","yAxisLineColor","yAxisTitleColor","legendTextColor","dataLabelColor"],ed=new Set(["xAxisTickColor","xAxisLineColor","yAxisTickColor","yAxisLineColor"]),eu=[["bg",O.bg],["surface",O.surface],["line",O.line],["accent",O.accent]];function ef(e,t=!1){let i="string"==typeof e?e:JSON.stringify(e)??String(e);return t&&i.length>256?`${i.slice(0,256)}\u2026`:i}var ep=class extends Error{code="INVALID_THEME_COLOR";key;value;constructor(e,t,i){let a=ef(t,!0);super(E({what:`themeVariables.${e}: ${JSON.stringify(a)} is not a CSS color`,expectedForm:M(i),example:`themeVariables.${e}:#f96`}).message),this.name="ThemeVariableColorError",this.key=e,this.value=a}},em=class extends Error{code="INVALID_RENDER_COLOR";field;value;constructor(e,t){let i=ef(t,!0);super(E({what:`render option "${e}": ${JSON.stringify(i)} is not a CSS color for Architecture derived paint`,expectedForm:"a drawable CSS color or var(--name)",example:`${e}:#f96`}).message),this.name="RenderOptionColorError",this.field=e,this.value=i}},eg=class extends Error{code="INVALID_CONFIG_COLOR";path;value;constructor(e,t,i,a){let r=ef(t,!0),n=ef(e,!0);super(E({what:`${n}: ${JSON.stringify(r)} is not ${"array"===a?"an array of CSS colors":"map"===a?"a map of CSS colors":"a CSS color"}`,expectedForm:a?"array"===a?"an array of drawable CSS colors":"an object mapping node labels to drawable CSS colors":M(i),example:`${n}${"array"===a?': ["#f96"]':"map"===a?': {"A":"#f96"}':": #f96"}`}).message),this.name="FamilyConfigColorError",this.path=n,this.value=r}};function eh(e){return null===e||"object"!=typeof e||Array.isArray(e)?void 0:e}function ey(e,t,i,a){let r=e[i];if(void 0!==r&&void 0===L(r,a))throw new eg(`${t}.${i}`,r,a)}function ev(e,t,i,a){let r=e[i];if(void 0!==r){if(!Array.isArray(r))throw new eg(`${t}.${i}`,r,a,"array");for(let e=0;e<r.length;e++){let n=r[e];if(void 0===L(n,a))throw new eg(`${t}.${i}[${e}]`,n,a)}}}function eb(e,t,i,a){if(!e)return;let r="pie"===t?ei:"gitgraph"===t?er:"timeline"===t?eo:"radar"===t?es:"architecture"===t?el:void 0,n=r?new Set([...ee,...r]):ee,o="architecture"===t?new Set(eu.flatMap(([t,r])=>i?.[t]!==void 0||"surface"===t&&a&&(a?.groupHeaderSurface||a?.groupSurface?.trim().toLowerCase()!=="none")||("line"===t||"accent"===t)&&a?.edgeStroke?[]:r.find(t=>{let i=e[t];return"string"==typeof i&&i.length>0})??[])):void 0;for(let i of n){if(!Object.hasOwn(e,i))continue;let r=e[i];if(void 0===r)continue;let n=ef(r),s=et.has(i)||ea.has(i)||en.has(i)||"timeline"===t&&eo.has(i)||"radar"===t&&es.has(i)||"architecture"===t&&("clusterBkg"===i&&(!a||!a.groupHeaderSurface&&a.groupSurface?.trim().toLowerCase()==="none")||o?.has(i));if(void 0===L(r,!s))throw new ep(i,n,!s)}if("radar"===t){let t=eh(e.radar);if(!t)return;for(let e of["axisColor","graticuleColor"]){let i=t[e];if(void 0===i)continue;let a="graticuleColor"===e,r=ef(i);if(void 0===L(i,a))throw new ep(`radar.${e}`,r,a)}}if("xychart"===t){let t=eh(e.xyChart);if(!t)return;for(let e of ec){if("backgroundColor"===e&&i?.bg!==void 0)continue;let a=t[e];if(void 0===a)continue;let r=ed.has(e),n=ef(a);if(void 0===L(a,r))throw new ep(`xyChart.${e}`,n,r)}let a=t.plotColorPalette;if(void 0!==a&&("string"!=typeof a||0!==a.trim().length)){let e="string"==typeof a?D(a):a;if(!Array.isArray(e))throw new ep("xyChart.plotColorPalette",JSON.stringify(a)??String(a),!1);for(let[t,i]of e.entries()){let e="string"==typeof i?i.trim():JSON.stringify(i)??String(i);if(void 0===L(i))throw new ep(`xyChart.plotColorPalette[${t}]`,e,!1)}}}if("architecture"===t&&("string"!=typeof e.mainBkg||0===e.mainBkg.length)){let t=e.secondaryColor;if(void 0!==t){let e=ef(t);if(void 0===L(t,!0))throw new ep("secondaryColor",e,!0)}}}var eS={schemaVersion:2,provenance:{version:"12.2.0"},families:[{id:"flowchart",headers:[{value:"flowchart",agenticStatus:"native"},{value:"graph",agenticStatus:"native"},{value:"flowchart-elk",agenticStatus:"unsupported"}]},{id:"swimlane",headers:[{value:"swimlane-beta",agenticStatus:"unsupported"}]},{id:"sequence",headers:[{value:"sequenceDiagram",agenticStatus:"native"}]},{id:"class",headers:[{value:"classDiagram",agenticStatus:"native"},{value:"classDiagram-v2",agenticStatus:"native"}]},{id:"state",headers:[{value:"stateDiagram",agenticStatus:"native"},{value:"stateDiagram-v2",agenticStatus:"native"}]},{id:"er",headers:[{value:"erDiagram",agenticStatus:"native"}]},{id:"journey",headers:[{value:"journey",agenticStatus:"native"}]},{id:"gantt",headers:[{value:"gantt",agenticStatus:"native"}]},{id:"pie",headers:[{value:"pie",agenticStatus:"native"}]},{id:"quadrant",headers:[{value:"quadrantChart",agenticStatus:"native"}]},{id:"requirement",headers:[{value:"requirementDiagram",agenticStatus:"native"},{value:"requirement",agenticStatus:"native"}]},{id:"gitgraph",headers:[{value:"gitGraph",agenticStatus:"native"}]},{id:"c4",headers:[{value:"C4Context",agenticStatus:"native"},{value:"C4Container",agenticStatus:"native"},{value:"C4Component",agenticStatus:"native"},{value:"C4Dynamic",agenticStatus:"native"},{value:"C4Deployment",agenticStatus:"native"}]},{id:"mindmap",headers:[{value:"mindmap",agenticStatus:"native"}]},{id:"timeline",headers:[{value:"timeline",agenticStatus:"native"}]},{id:"zenuml",headers:[{value:"zenuml",agenticStatus:"native"}]},{id:"sankey",headers:[{value:"sankey",agenticStatus:"native"},{value:"sankey-beta",agenticStatus:"native"}]},{id:"xychart",headers:[{value:"xychart",agenticStatus:"native"},{value:"xychart-beta",agenticStatus:"native"}]},{id:"block",headers:[{value:"block",agenticStatus:"native"},{value:"block-beta",agenticStatus:"native"}]},{id:"packet",headers:[{value:"packet",agenticStatus:"native"},{value:"packet-beta",agenticStatus:"native"}]},{id:"kanban",headers:[{value:"kanban",agenticStatus:"native"}]},{id:"architecture",headers:[{value:"architecture",agenticStatus:"native"},{value:"architecture-beta",agenticStatus:"native"}]},{id:"radar",headers:[{value:"radar-beta",agenticStatus:"native"}]},{id:"eventmodeling",headers:[{value:"eventmodeling",agenticStatus:"native"}]},{id:"treemap",headers:[{value:"treemap",agenticStatus:"native"},{value:"treemap-beta",agenticStatus:"native"}]},{id:"venn",headers:[{value:"venn-beta",agenticStatus:"unsupported"}]},{id:"ishikawa",headers:[{value:"ishikawa",agenticStatus:"native"},{value:"ishikawa-beta",agenticStatus:"native"}]},{id:"wardley",headers:[{value:"wardley-beta",agenticStatus:"unsupported"}]},{id:"cynefin",headers:[{value:"cynefin-beta",agenticStatus:"unsupported"}]},{id:"treeview",headers:[{value:"treeView-beta",agenticStatus:"unsupported"}]},{id:"railroad",headers:[{value:"railroad-beta",agenticStatus:"unsupported"},{value:"railroad-ebnf-beta",agenticStatus:"unsupported"},{value:"railroad-abnf-beta",agenticStatus:"unsupported"},{value:"railroad-peg-beta",agenticStatus:"unsupported"}]},{id:"agentflow",headers:[{value:"agentflow-beta",agenticStatus:"unsupported"}]},{id:"usecase",headers:[{value:"usecase-beta",agenticStatus:"unsupported"}]}]};function e$(e,t="strict"){let i=H(e),a=l(i,t);if(a)return{kind:"registered",family:a};let r=function(e,t=eS){let i=(e.split(";")[0]??"").trim().toLowerCase();return t.families.flatMap(e=>e.headers.map(t=>({family:e,header:t}))).sort((e,t)=>t.header.value.length-e.header.value.length||_(e.family.id,t.family.id)).find(e=>(function(e,t){let i=t.trim().toLowerCase();if(e===i)return!0;if(!e.startsWith(i))return!1;let a=e[i.length];return void 0!==a&&/[\s:]/.test(a)})(i,e.header.value))??null}(i);return r?{kind:"upstream",match:r}:{kind:"unknown",header:e}}function ew(e,t,i,a){let r=F(e),n=-1,s=-1,l=e.length,d=Math.max(0,Math.min(e.length,i??0)),u=d;for(;u<=e.length;){let i=/\r\n?|\n/g;i.lastIndex=u;let a=i.exec(e),r=a?.index??-1,o=r<0?e.length:r,c=e.slice(u,o).replace(/\r$/,""),d=c.trim(),f=d.startsWith(t)?d.slice(t.length):"",p=/^\s*;/.test(f);if(d===t||p||/^\s/.test(f)&&G(d)!==d){if(s=(n=u+c.indexOf(t))+t.length,d===t)l=a?a.index+a[0].length:e.length;else for(l=p?e.indexOf(";",s)+1:s;l<o&&/[ \t]/.test(e[l]);)l++;break}if(r<0)break;u=a.index+a[0].length}if(n<0){let i=e.indexOf(t,d);n=i<0?d:i,s=Math.min(e.length,n+t.length);let a=e.indexOf(`
|
|
2
|
+
`,s);for(l=a<0?e.length:a+1,u=n;u>0&&10!==e.charCodeAt(u-1);)u--}return Object.freeze({source:A(r,0,e.length),...(i??u)>0?{wrapper:A(r,0,i??u)}:{},...function(e,t,i,a=F(e),r){let n=V(e),s=n?.source.length??0,l=function(e,t,i=F(e),a=U(e),r){let n=[...e.slice(t).matchAll(/[^\r\n]*(?:\r\n?|\n|$)/g)],o=n.map(e=>e[0]),s=e.slice(t),l=c(Y(a),w(s).split(/\r\n?|\n/),r),d=$(s,l),u=s.split("");for(let e of d.directives)for(let t=e.start;t<e.end;t++)"\r"!==u[t]&&u[t]!==`
|
|
3
|
+
`&&(u[t]=" ");let f=u.join("").split(/\r\n?|\n/),p=n.map(e=>t+e.index),m=[],g=c(Y(a),f,r);for(let e=0;e<f.length;e++){let t=I(f,e);if(void 0===t)break;if(null===t){e=T(g,e,f.length);continue}let a=p[e],r;r="block"===t.form?p[t.endIndex]+f[t.endIndex].indexOf("}")+1:a+o[e].length,m.push(A(i,a,r)),e=t.endIndex}return Object.freeze(m)}(e,s,a,i,r),d=e.split("");for(let t of l)if(/^\s*%% agentic-mermaid (?:accTitle|accDescr):/.test(e.slice(t.start.offset,t.end.offset)))for(let e=t.start.offset;e<t.end.offset;e++)"\r"!==d[e]&&d[e]!==`
|
|
4
|
+
`&&(d[e]=" ");let u=(function(e,t,i=0,a=F(e)){let r=[],n=new RegExp(t.source,t.flags.includes("g")?t.flags:`${t.flags}g`),o;for(;null!==(o=n.exec(e));)r.push(A(a,i+o.index,i+o.index+o[0].length)),0===o[0].length&&n.lastIndex++;return Object.freeze(r)})(d.join("").slice(s),RegExp(J.source,"gm"),s,a).filter(t=>o(e.slice(t.start.offset,t.end.offset)));return{...n?{frontmatter:A(a,0,s)}:{},...u.length>0?{initDirectives:u}:{},...l.length>0?{accessibilityDirectives:Object.freeze(l)}:{}}}(e,0,t,r,a),header:A(r,n,s),body:A(r,l,e.length)})}function ex(e,t="strict"){let i=e$(e,t);return"registered"===i.kind?{kind:"registered",familyId:i.family.id}:i}var eC=class extends Error{name="MermaidFamilyDetectionError";code;line;preservation;help;constructor(e){super(e.message),this.code=e.code,this.line=e.line,this.preservation=e.preservation,this.help=e.help}toJSON(){return{code:this.code,message:this.message,line:this.line,preservation:this.preservation,help:this.help}}};function eO(e,t){if(!e||"object"!=typeof e||Array.isArray(e))return;let i=e[t];return i&&"object"==typeof i&&!Array.isArray(i)?i:void 0}function ej(e,t,i){if(!i)return[];let a=t&&"object"==typeof t&&!Array.isArray(t)?t:void 0,r=eO(t,i.section);if(!r)return a&&i.section in a?[{code:"INEFFECTIVE_CONFIG",field:i.section,message:`${e} config section "${i.section}" must be an object; the invalid value has no effect.`}]:[];let n=new Set(i.keys);return Object.keys(r).filter(e=>!n.has(e)).sort().map(t=>({code:"INEFFECTIVE_CONFIG",field:`${i.section}.${t}`,message:`${e} config field "${t}" is unknown and has no effect; check the spelling or remove it.`}))}function ek(e,{root:t,config:i},a={}){let r=ej(e,t,i),n=eO(t,i.section);if(n){for(let[e,t]of Object.entries(a))if(e in n&&!t.valid(n[e])){let a=`${i.section}.${e}`;r.push({code:"INEFFECTIVE_CONFIG",field:a,message:`${a} must be ${t.expected}; the invalid value has no effect.`})}}return[...r,...function(e,t,i,a={}){if(!i)return[];let r=eO(t,i.section);if(!r)return[];let n=new Set(i.noopKeys??[]);return Object.keys(r).filter(e=>{if(!n.has(e))return!1;let t=a[e];return!t||t.valid(r[e])}).sort().map(t=>({code:"INEFFECTIVE_CONFIG",field:`${i.section}.${t}`,message:`${e} config field "${t}" is accepted for ${e.includes(":")?"compatibility":"Mermaid compatibility"} but has no effect on this renderer.`}))}(e,t,i,a)]}Object.freeze(["library","cli","codeMode","localMcp","hostedMcp","editor","website"]);var eE=["onConfigDiagnostic"],eF=(e,t)=>({type:"string",...void 0===t?{}:{default:t}}),eA=(e,t,i={})=>({type:"number",...void 0===t?{}:{default:t},...i}),eI=(e,t)=>eA(void 0,t,{minimum:0}),eT=(e,t)=>eA(void 0,t,{exclusiveMinimum:0}),eD=e=>eA(void 0,void 0,{minimum:1,maximum:1e3}),ez=(e,t)=>({type:"boolean",...void 0===t?{}:{default:t}}),eL=(e,t)=>({...eF(void 0,t),"x-agentic-mermaid-runtime-validator":"safeCssPaint"}),eM=(e,t)=>({...eF(void 0,t),"x-agentic-mermaid-runtime-validator":"safeCssFontFamily"}),eR=(e,t,i=[])=>({type:"object",additionalProperties:!1,properties:e,...0===i.length?{}:{required:i}}),eq={type:"string",enum:["uppercase","lowercase","capitalize"]},eN={...eR({groupHeaderHeight:eT(void 0),groupFontSize:eT(void 0),groupFontWeight:eD(void 0),groupLetterSpacing:eA(void 0),groupFont:eM(void 0),groupTextTransform:{...eq},groupPaddingX:eI(void 0),groupPaddingY:eI(void 0),groupLabelPaddingX:eI(void 0),groupCornerRadius:eI(void 0),groupLineWidth:eI(void 0),groupText:eL(void 0),serviceFontSize:eT(void 0),serviceFontWeight:eD(void 0),serviceLetterSpacing:eA(void 0),serviceTextTransform:{...eq},servicePaddingX:eI(void 0),servicePaddingY:eI(void 0),serviceCornerRadius:eI(void 0),serviceLineWidth:eI(void 0),serviceText:eL(void 0),edgeFontSize:eT(void 0),edgeFontWeight:eD(void 0),edgeLetterSpacing:eA(void 0),edgeTextTransform:{...eq},edgeLineWidth:eI(void 0),edgeBendRadius:eI(void 0),edgeStroke:eL(void 0),edgeText:eL(void 0),iconSize:eT(void 0),serviceIconSize:eT(void 0),junctionOuterRadius:eT(void 0),junctionInnerRadius:eI(void 0),groupSurface:eL(void 0),groupHeaderSurface:eL(void 0),groupBorder:eL(void 0),serviceSurface:eL(void 0),serviceBorder:eL(void 0)},void 0),"x-agentic-mermaid-runtime-validator":"architectureVisual"},eP={anyOf:[{type:"string"},(()=>{let t=e(),i=t.$defs,a=e=>{if(Array.isArray(e))return e.map(a);if(null===e||"object"!=typeof e)return e;let t=e.$ref;if("string"==typeof t&&t.startsWith("#/$defs/")){let e=i?.[t.slice(8)];if(!e)throw Error(`StyleSpec schema has unresolved local reference ${t}`);return a(e)}return Object.fromEntries(Object.entries(e).filter(([e])=>"$defs"!==e).map(([e,t])=>[e,a(t)]))},{$schema:r,$id:n,title:o,...s}=t;return a(s)})()],"x-agentic-mermaid-validation-expectation":"a registered Style name or StyleSpec"},eB={anyOf:[{type:"null"},{type:"string"},{type:"number"},{type:"boolean"},{type:"array",items:{$ref:"#/$defs/jsonValue"}},{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}],"x-agentic-mermaid-validation-expectation":"a finite, acyclic JSON value without prototype keys"},e_=["flowchart","state","class","er","architecture","c4"],eW=y({layoutHints:{validationExpectation:"contain integer ranks, node groups and edge IDs",schema:{type:"object",additionalProperties:!1,properties:{ranks:{type:"object",additionalProperties:{type:"integer",minimum:0,maximum:1e4}},adjacent:{type:"array",items:{type:"array",minItems:2,items:{type:"string"}}},shortEdges:{type:"array",items:{type:"string"}}}},applicableBuiltinFamilies:["flowchart","state"]},graphLayout:{validationExpectation:"be a graph layout selection object",schema:{anyOf:[eR({backend:{type:"string",const:"elk"},fallback:{type:"string",enum:["none"]}},void 0,["backend"]),eR({backend:{type:"string",const:"agentic"},fallback:{type:"string",enum:["none","elk"]}},void 0,["backend"])]},applicableBuiltinFamilies:["flowchart","state","architecture","class","er","requirement"]},layoutSafety:{validationExpectation:"be report or strict",schema:{type:"string",enum:["report","strict"],default:"report"}},bg:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0,"#FFFFFF")},fg:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0,"#27272A")},line:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},accent:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},muted:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},surface:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},border:{validationExpectation:"be a safe non-fetching CSS paint",schema:eL(void 0)},font:{validationExpectation:"be a safe non-fetching CSS font family or stack",schema:eM(void 0,"Inter")},style:{validationExpectation:"be a registered Style name or StyleSpec, or an array of them",schema:{anyOf:[eP,{type:"array",items:eP}],"x-agentic-mermaid-runtime-validator":"styleInput"}},padding:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,40),applicableBuiltinFamilies:["flowchart","state","architecture","c4"]},nodeSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,24),applicableBuiltinFamilies:e_},layerSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0,40),applicableBuiltinFamilies:e_},wrappingWidth:{validationExpectation:"be a positive finite number",schema:eT(void 0),applicableBuiltinFamilies:["flowchart"]},componentSpacing:{validationExpectation:"be a non-negative finite number",schema:eI(void 0),applicableBuiltinFamilies:[]},transparent:{validationExpectation:"be a boolean",schema:ez(void 0,!1)},interactive:{validationExpectation:"be a boolean",schema:ez(void 0,!1),applicableBuiltinFamilies:["xychart","pie","quadrant"]},shadow:{validationExpectation:"be a boolean",schema:ez(void 0,!1),applicableBuiltinFamilies:["flowchart","state","sequence","timeline","class","er","journey","xychart","pie","quadrant","gantt","mindmap","gitgraph","sankey"]},class:{validationExpectation:"be a class options object",schema:eR({hierarchicalNamespaces:ez(void 0,!0)},void 0),applicableBuiltinFamilies:["class"]},kanban:{validationExpectation:"be a kanban options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["kanban"]},pie:{validationExpectation:"be a pie options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["pie"]},radar:{validationExpectation:"be a radar options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["radar"]},architecture:{validationExpectation:"be an architecture options object",schema:eR({visual:eN},void 0),applicableBuiltinFamilies:["architecture"]},timeline:{validationExpectation:"be a timeline options object",schema:eR({maxWidth:eT(void 0)},void 0),applicableBuiltinFamilies:["timeline"]},journey:{validationExpectation:"be a journey options object",schema:eR({experienceCurve:ez(void 0,!0)},void 0),applicableBuiltinFamilies:["journey"]},gantt:{validationExpectation:"be a Gantt options object",schema:eR({dependencyArrows:ez(void 0,!1),criticalPath:ez(void 0,!1)},void 0),applicableBuiltinFamilies:["gantt"]},mermaidConfig:{validationExpectation:"be a plain JSON object",schema:{type:"object",additionalProperties:{$ref:"#/$defs/jsonValue"}}},embedFontImport:{validationExpectation:"be a boolean",schema:ez(void 0,!1)},compact:{validationExpectation:"be a boolean",schema:ez(void 0,!1)},idPrefix:{validationExpectation:"be non-empty and contain only ASCII letters, digits, underscore, hyphen, dot, and colon",schema:{...eF(void 0),pattern:"^[A-Za-z0-9_.:-]+$"}},security:{validationExpectation:"be default or strict",schema:{type:"string",enum:["default","strict"],default:"default"}},ganttToday:{validationExpectation:"be a string",schema:eF(void 0),applicableBuiltinFamilies:["gantt"]},seed:{validationExpectation:"be a finite number",schema:eA(void 0,0)}}),eV=Object.freeze(Object.keys(eW)),eJ=Object.freeze(eV.filter(e=>"applicableBuiltinFamilies"in eW[e]));function eG(e){let t=e=>Array.isArray(e)?e.map(t):h(e)?Object.fromEntries(Object.entries(e).map(([e,i])=>[e,t(i)])):e;return t(e)}function eH(e){let t=String(e[0]??"");for(let i of e.slice(1))t+="number"==typeof i?`[${i}]`:`.${i}`;return`render option "${t}"`}function eU(e){return m(f(e).map(e=>e.path.length>0?`${eH(e.path)} ${e.message}`:`render options ${e.message}`),"render options")}function eY(e,t,i){let r=t["x-agentic-mermaid-runtime-validator"];if("safeCssColor"===r&&void 0===z(e))return[{path:i,message:"must be a safe, non-fetching CSS color",generic:!1}];if("safeCssPaint"===r&&void 0===R(e))return[{path:i,message:"must be a safe, non-fetching CSS paint",generic:!1}];if("safeCssFontFamily"===r&&void 0===q(e))return[{path:i,message:"must be a safe, non-fetching CSS font family or stack",generic:!1}];if("styleInput"===r)try{a(e)}catch(e){return[{path:i,message:`is invalid: ${e instanceof Error?e.message:String(e)}`,generic:!1}]}if("architectureVisual"===r&&h(e)){let t=e.junctionOuterRadius,a=e.junctionInnerRadius;if("number"==typeof t&&"number"==typeof a&&a>t)return[{path:[...i,"junctionInnerRadius"],message:"must not exceed junctionOuterRadius",generic:!1}]}return[]}function eK(e){if(!h(e))return["render options must be a plain JSON object"];let t=eU(e);if(t.length>0)return t;let i=[],a=Q??=y(function(){let e={};for(let t of eV){let i=eW[t],a="terminalNote"in i?i.terminalNote:void 0,r="applicableBuiltinFamilies"in i?i.applicableBuiltinFamilies:void 0;e[t]={...eG(i.schema),"x-agentic-mermaid-terminal":i.terminal,...void 0===a?{}:{"x-agentic-mermaid-terminal-note":a},...void 0===r?{}:{"x-agentic-mermaid-applicable-builtin-families":[...r]}}}return{type:"object",additionalProperties:!1,properties:e,$defs:{jsonValue:eG(eB)}}}());for(let[t,r]of Object.entries(e)){if(!Object.hasOwn(eW,t)){i.push(`unknown render option "${t}"`);continue}if(null===r){i.push(`render option "${t}" must be omitted instead of null`);continue}let e=eW[t],n=Z(r,e.schema,a,[t],{diagnostics:"field",validateRuntime:eY});n.length>0&&n.every(e=>e.generic&&1===e.path.length)?i.push(`render option "${t}" must ${e.validationExpectation}`):i.push(...n.map(e=>`${eH(e.path)} ${e.message}`))}return m(i,"render options")}var eX=class extends Error{constructor(e,t){super(`Parsed Mermaid family "${e}" serialized as family "${t}"`),this.expectedFamilyId=e,this.detectedFamilyId=t}expectedFamilyId;detectedFamilyId;name="ParsedDiagramFamilyMismatchError";code="PARSED_DIAGRAM_FAMILY_MISMATCH"},eZ=class extends Error{name="RenderCapabilityError";code="UNSATISFIED_RENDER_CAPABILITIES";output;family;decision;constructor(e,t,i,a){super(e),this.output=t,this.family=Object.freeze({id:i.identity.id,version:i.identity.version}),this.decision=a}toJSON(){return{name:this.name,code:this.code,message:this.message,output:this.output,family:this.family,decision:this.decision}}},eQ=class extends TypeError{constructor(e){super(e),this.name="RenderConfigError"}},e0=new WeakMap;function e1(e){let t=e0.get(e);if(!t)throw Error("Resolved render request has no internal execution plan");return t}function e6(e,t=[]){let i,a=e0.get(e),r=a?.executionDecision,n=a&&Object.hasOwn(a,"textMeasurement")?a.textMeasurement:void 0;return Object.freeze({version:e.version,output:e.output,sharedRequestDigest:e.sharedRequestDigest,requestDigest:e.requestDigest,appearanceDigest:e.appearance.digest,capabilityDecision:e.capabilityDecision,diagnostics:(i=new Set,Object.freeze([...Object.hasOwn(e,"resolutionDiagnostics")?e.resolutionDiagnostics:[],...t,...N(e).flatMap(e=>"agentic"===e.requested&&"elk"===e.selected?[{code:"GRAPH_LAYOUT_FALLBACK",feature:"graph-layout",message:`Agentic graph layout used the requested ELK fallback: ${e.reason??"candidate rejected"}`}]:[])].flatMap(e=>{let t=e7(e);return i.has(t)?[]:(i.add(t),[Object.freeze({...e})])}))),...r?{executionDecision:r}:{},...n?{textMeasurement:n.identity}:{},...N(e).length?{layoutDecisions:N(e)}:{}})}function e2(e){let t=e4.get(e);if(t)return t;let i=e0.get(e)?.backend?.identity.id??("layout"===e.output?`backend:${e.appearance.inferredBackend}`:void 0),a=Object.freeze({renderOptions:e.renderOptions,...e.appearance.face?{styleFace:e.appearance.face}:{},...i?{paintBackendId:i}:{},...e.familyConfig?{familyConfig:e.familyConfig}:{},...e.appearance.family?{familyAppearance:e.appearance.family}:{}});return e0.has(e)&&e4.set(e,a),a}var e4=new WeakMap;function e5(e){let t={};for(let i of eV){let a=e[i];void 0!==a&&(t[i]=a)}return t}var e3=new Set(["padding","nodeSpacing","layerSpacing","wrappingWidth","class"]);function e8(e,t="$",i=0,a=new Set,r={nodes:0,chars:0,opaque:!1,admission:void 0}){let n=r.admission;if(n?.valid)switch((++n.nodes>d.maxNodes||i>d.maxDepth)&&(n.valid=!1),typeof e){case"number":e-e!=0&&(n.valid=!1);break;case"undefined":case"bigint":case"symbol":case"function":n.valid=!1}if("string"==typeof e){if(r.chars+=e.length,r.chars>2e6)throw TypeError(`data exceeds the 2000000-character aggregate limit at ${t}`);return e}if(null===e||"object"!=typeof e)return e;if(i>64)throw TypeError(`data exceeds maximum depth 64 at ${t}`);if(++r.nodes>1e5)throw TypeError(`data exceeds the 100000-node aggregate limit at ${t}`);if(a.has(e))throw TypeError(`data must be acyclic at ${t}`);if(Array.isArray(e)){if(e.length>1e5)throw TypeError(`data array exceeds the 100000-entry limit at ${t}`);a.add(e);try{let o=[],s=Object.create(null);s.enumerable=s.configurable=s.writable=!0;for(let n=0;n<e.length;n++){if(n>=1e5)throw TypeError(`data array exceeds the 100000-entry limit at ${t}`);if(!Object.prototype.hasOwnProperty.call(e,n))throw TypeError(`data must not contain a sparse array at ${t}[${n}]`);s.value=e8(e[n],`${t}[${n}]`,i+1,a,r),Object.defineProperty(o,n,s)}return n&&o.length>d.maxItemsPerContainer&&(n.valid=!1),tr(o,!r.opaque)}finally{a.delete(e)}}if(!h(e))return r.opaque=!0,n&&(n.valid=!1),e;a.add(e);try{let o={},s=0;for(let[l,c]of Object.entries(e)){if(r.chars+=l.length,r.chars>2e6)throw TypeError(`data exceeds the 2000000-character aggregate limit at ${t}.${l}`);if(void 0!==c){n&&(++s>d.maxItemsPerContainer||u(l))&&(n.valid=!1);let e=e8(c,`${t}.${l}`,i+1,a,r);l in o?Object.defineProperty(o,l,{value:e,enumerable:!0}):o[l]=e}}return tr(o,!r.opaque)}finally{a.delete(e)}}function e9(e,t,i,a=!1){let r;if(void 0===t)return;if(!h(t))throw TypeError(`Family "${e.id}" returned ${i} data that is not a plain object`);if(a)return t;try{r=e8(t)}catch(t){throw TypeError(`Family "${e.id}" returned invalid ${i} data: ${t instanceof Error?t.message:String(t)}`)}let n={...eB,$defs:{jsonValue:eB}},o=Z(r,n,n,[`family${"config"===i?"Config":"Appearance"}`],{diagnostics:"field",validateRuntime:eY});if(o.length>0){let t=o.map(e=>`${e.path.join(".")} ${e.message}`).join("; ");throw TypeError(`Family "${e.id}" returned invalid ${i} data: ${t}`)}return tn(r)}function e7(e){if(null===e||"object"!=typeof e)return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(e7).join(",")}]`;let t="{",i="";for(let a of Object.keys(e).sort()){let r=e[a];void 0!==r&&(t+=`${i}${JSON.stringify(a)}:${e7(r)}`,i=",")}return`${t}}`}function te(e,t){try{let t,i;return t=tt(e),()=>(void 0===i&&(i=ti(e7(t)),t=void 0),i)}catch(e){throw e instanceof TypeError&&/aggregate limit/.test(e.message)?new x("sourceCharacters",t.originalText.length+t.text.length,!0):e}}function tt(e){let t,i={nodes:0,valid:2e6<=d.maxAggregateTextCharacters&&6e6<=d.maxAggregateTextBytes};try{t=to(e,"render contract digest input",i)}catch(e){throw TypeError((e instanceof Error?e.message:String(e)).replace("data exceeds maximum depth","data exceeds maximum nesting depth"))}return i.valid||p(t,"render contract digest input",{allowUndefinedObjectProperties:!0}),t}function ti(e){let t=-0x340d631c,i=-0x7bdddcdb;for(let a=0;a<e.length;a++){let r=i^e.charCodeAt(a),n=(r>>>16)*435+((65535&r)*435>>>16)>>>16;i=Math.imul(r,435),t=Math.imul(t,435)+n+(r<<8)|0}return`fnv1a64:${(t>>>0).toString(16).padStart(8,"0")}${(i>>>0).toString(16).padStart(8,"0")}`}var ta=new WeakSet;function tr(e,t=!0){return Object.freeze(e),t&&ta.add(e),e}function tn(e,t="$",i,a){let r;if(null===e||"object"!=typeof e||ta.has(e))return e;if(i??=new Set,a??=new WeakMap,i.has(e))throw TypeError(`render request contains a cycle at ${t}`);let n=a.get(e);if(n)return n;let o=Object.getPrototypeOf(e);if(!Array.isArray(e)&&o!==Object.prototype&&null!==o)throw TypeError(`render request contains a non-JSON object at ${t}`);if(i.add(e),Array.isArray(e)){let n=e.length,o=Array(n);for(let r=0;r<n;r++)r in e&&(o[r]=tn(e[r],`${t}[${r}]`,i,a));r=o}else{let n={};for(let[r,o]of Object.entries(e)){let e=tn(o,`${t}.${r}`,i,a);r in n?Object.defineProperty(n,r,{value:e,enumerable:!0}):n[r]=e}r=n}return i.delete(e),a.set(e,r),tr(r)}function to(e,t,i){try{return tn(i?e8(e,"$",0,new Set,{nodes:0,chars:0,opaque:!1,admission:i}):e8(e))}catch(e){throw TypeError(`${t} could not be snapshotted: ${e instanceof Error?e.message:String(e)}`)}}var ts=Object.freeze({serializable:tn({})}),tl=new WeakMap,tc=new WeakMap;function td(e){if(tl.has(e))return e;let t=tf(e),i=tn(r(t.serializable.style)),a=eK(t.serializable);if(a.length)throw new eQ(`Invalid RenderOptions: ${a.join("; ")}`);let n=tp(t.serializable.style),o=Object.freeze({...t.serializable,...t.onConfigDiagnostic?{onConfigDiagnostic:t.onConfigDiagnostic}:{}});return tl.set(o,Object.freeze({...t,capturedStyle:i})),tc.set(t.serializable,n),o}function tu(e){let t=tl.get(e)?.capturedStyle;if(!t)throw TypeError("Render options have not been captured");return t.style?i(t.style):"default"}function tf(e){if("object"!=typeof e&&"function"!=typeof e||null===e)throw new eQ("Invalid RenderOptions: render options must be an object");let t=tl.get(e);if(t)return t;let i=[],a;for(let[t,r]of Object.entries(e))"onConfigDiagnostic"===t?a=r:void 0!==r&&i.push([t,r]);if(void 0!==a&&"function"!=typeof a)throw new eQ("Invalid RenderOptions: onConfigDiagnostic must be a function");if(0===i.length&&void 0===a)return ts;let r=Object.fromEntries(i),n;try{n=to(r,"RenderOptions")}catch(t){let e=(t instanceof Error?t.message:String(t)).replace("data exceeds maximum depth","render option tree exceeds maximum nesting depth");throw new eQ(`Invalid RenderOptions: ${e}`)}return Object.freeze({serializable:n,...void 0===a?{}:{onConfigDiagnostic:a}})}function tp(e){return tn((void 0===e?[]:Array.isArray(e)?e:[e]).flatMap(e=>{if("string"!=typeof e||"crisp"===e)return[];let i=t(e);return i?[{input:e,canonicalId:i.canonicalId}]:[]}))}var tm="1.0.0";function tg(e,t,i=tm){return t?[{id:e,version:i}]:[]}function th(e,t=`^${tm}`){return{id:e,range:t,level:"required"}}function ty(e){return`scene-primitive:${e.primitive}/${e.feature}/${e.operation}`}var tv=new WeakMap;function tb(e,t){let i=tv.get(e.backend);return i||(i=new Set(b.filter(t=>e.backend.capabilities.some(e=>e.primitive===t.primitive&&e.feature===t.feature&&e.operation===t.operation&&"unsupported"!==e.realization))),tv.set(e.backend,i)),i.has(t)}var tS=new Map;function t$(e){return!e.id.startsWith("output:")&&!e.id.startsWith("operation:")&&!e.id.startsWith("backend:")&&!e.id.startsWith("scene-primitive:")&&"core:scene"!==e.id}function tw(e,t={},a="svg",o,l={}){let c=tf(t),d=c.serializable,u=eU(d);if(u.length>0)throw new eQ(`Invalid RenderOptions: ${u.join("; ")}`);let f=c.capturedStyle??r(d.style),p=f.style,m=tn(f.face),y=c.capturedStyle?[]:eK(d);if(y.length>0)throw new eQ(`Invalid RenderOptions: ${y.join("; ")}`);let $,w=tn(g(e,d.mermaidConfig??{},e=>l.familyDescriptor?l.familyDescriptor:"registered"===($=e$(e)).kind?$.family:null)),x=l.familyDescriptor??function(e,t){if("registered"===t.kind)return t.family;throw new eC(function(e,t,i,a,r){let n=eS.provenance.version;if("unknown"===e.kind)return{code:"UNKNOWN_HEADER",message:`Unrecognized Mermaid header: "${e.header}"`,line:1,preservation:{version:1,classification:"unknown",source:t,header:e.header,mermaidVersion:n,spans:ew(t,a??e.header,i,null)},help:"Check for a Mermaid upgrade or register a namespaced family descriptor; the source was preserved unchanged."};let{family:o,header:s}=e.match,l="inventory-only"===s.agenticStatus?"inventory-only":"unsupported",c="native"===s.agenticStatus;return{code:c?"FAMILY_DESCRIPTOR_MISMATCH":"UNSUPPORTED_FAMILY",message:c?`Mermaid ${n} header "${s.value}" is marked native but no installed family descriptor claimed it`:`Mermaid ${n} family "${o.id}" is ${l} in Agentic Mermaid`,line:1,preservation:{version:1,classification:l,source:t,header:s.value,upstreamFamilyId:o.id,mermaidVersion:n,spans:ew(t,a??s.value,i,null)},help:c?"Report a descriptor/manifest mismatch; the source was preserved unchanged.":`Install a family descriptor for "${s.value}" or use a currently native family; the source was preserved unchanged.`}}("unknown"===t.kind?{...t,header:e.lines[0]??e.firstLine}:t,e.originalText,e.authoredWrapperLength??e.wrapperSource?.length??0,e.authoredHeader??e.lines[0]??e.firstLine,0))}(w,$);if(void 0!==l.expectedFamilyId&&x.id!==l.expectedFamilyId)throw new eX(l.expectedFamilyId,x.id);C("sourceCharacters",w.originalText.length+w.text.length);let E=v(w.config.themeCSS,d.security??"default");if(E)throw new eQ(E);"architecture"!==x.id&&eb(w.config.themeVariables,x.id,d),function(e,t){let i=eh(e[t]);if(i){if("timeline"===t)ev(i,"timeline","sectionFills",!1),ev(i,"timeline","sectionColours",!1),(void 0===i.sectionColours||Array.isArray(i.sectionColours)&&0===i.sectionColours.length)&&ev(i,"timeline","sectionColors",!1);else if("journey"===t)ev(i,"journey","actorColours",!0),ev(i,"journey","sectionFills",!1),ev(i,"journey","sectionColours",!1),ey(i,"journey","titleColor",!1);else if("requirement"===t)ey(i,"requirement","rect_fill",!0),ey(i,"requirement","rect_border_color",!0),ey(i,"requirement","text_color",!1);else if("sankey"===t){let e=i.linkColor;if("source"!==e&&"target"!==e&&"gradient"!==e&&ey(i,"sankey","linkColor",!0),void 0===i.nodeColors)return;let t=eh(i.nodeColors);if(!t)throw new eg("sankey.nodeColors",i.nodeColors,!1,"map");let a=void 0!==e&&"gradient"!==e;for(let[e,i]of Object.entries(t))if(void 0===L(i,a))throw new eg(/^[\w-]+$/.test(e)?`sankey.nodeColors.${e}`:`sankey.nodeColors[${JSON.stringify(e)}]`,i,a)}}}(w.frontmatter,x.id);let F=Object.freeze(eV.filter(e=>void 0!==d[e])),A=function(e,t){if(e.id.startsWith("family:")){let i=new Set(e.applicableRenderOptions??[]);return Object.freeze(t.flatMap(t=>!eJ.includes(t)||i.has(t)?[]:[Object.freeze({code:"RENDER_OPTION_NOT_APPLICABLE",feature:`render-option:${t}`,message:`Render option "${t}" does not apply to extension family "${e.id}". Its FamilyDescriptor does not list the field in applicableRenderOptions.`})]))}let i=e.id;return Object.freeze(t.flatMap(e=>{let t=eW[e];if(!("applicableBuiltinFamilies"in t))return[];let a=t.applicableBuiltinFamilies;if(a.includes(i))return[];let r=0===a.length?"No built-in family currently consumes this option.":`Applicable built-in families: ${a.join(", ")}.`;return[Object.freeze({code:"RENDER_OPTION_NOT_APPLICABLE",feature:`render-option:${e}`,message:`Render option "${e}" does not apply to built-in Mermaid family "${i}". ${r}`})]}))}(x,F),{appearance:I,renderOptions:T,familyConfig:D}=function(e){let{family:t,source:a,options:r,style:o,styleFace:s}=e,l="strict"===r.security?{...r,embedFontImport:!1}:{...r};r.graphLayout&&(l.graphLayout={...r.graphLayout,fallback:r.graphLayout.fallback??"none"});let c=void 0!==o&&n(o);c&&(l=function(e,t,i){let a={...e},r=e=>O[e].some(e=>i?.[e]!==void 0);for(let e of["bg","fg","line","accent","muted","surface","border"])void 0!==a[e]||r(e)||t.colors?.[e]===void 0||(a[e]=t.colors[e]);return void 0===a.font&&void 0!==t.font&&(a.font=t.font),a}(l,o,a.config.themeVariables));let d=r.font??a.config.fontFamily??k(a.config.themeVariables,"fontFamily")??l.font??"Inter",u=q(d)??d,{style:f,...p}=l,m={...p,...o?{style:o}:{},font:u,mermaidConfig:a.config},g={...j(m,a.config,u)},y=function(e,t,i,a,r,n){if(!e.normalizeRequest)return{renderOptions:i,colors:a};let o=Object.freeze({source:tn(t),renderOptions:tn(i),colors:tn(a),...r?{style:tn(r)}:{},...n?{styleFace:tn(n)}:{}}),s=e.normalizeRequest(o);if(void 0===s)return{renderOptions:i,colors:a};let l,c={nodes:0,valid:!0};try{l=to(s,`Family "${e.id}" request normalizer result`,c)}catch(t){throw TypeError(`Family "${e.id}" request normalizer returned invalid data: ${t instanceof Error?t.message:String(t)}`)}if(!h(l))throw TypeError(`Family "${e.id}" request normalizer must return a plain object`);let d=Object.keys(l).find(e=>!["renderOptions","familyConfig","appearance"].includes(e));if(d)throw TypeError(`Family "${e.id}" request normalizer returned unknown field "${d}"`);let u=l,f=u.appearance;if(void 0!==f){if(!h(f))throw TypeError(`Family "${e.id}" request normalizer returned a non-object appearance`);let t=Object.keys(f).find(e=>!["colors","family"].includes(e));if(t)throw TypeError(`Family "${e.id}" request normalizer returned unknown appearance field "${t}"`)}let p=u.renderOptions??i;if(void 0!==p.onConfigDiagnostic)throw TypeError(`Family "${e.id}" request normalizer may not return executable option "onConfigDiagnostic"`);let m=eK(Object.fromEntries(Object.entries(p).filter(([e,t])=>void 0!==t&&!eE.includes(e))));if(m.length>0)throw new eQ(`Family "${e.id}" returned invalid normalized RenderOptions: ${m.join("; ")}`);let g=e5(i),y=e5(p);for(let t of eV)if(!e3.has(t)&&e7(g[t])!==e7(y[t]))throw TypeError(`Family "${e.id}" request normalizer may not rewrite non-geometry option "${t}"`);let v=f?.colors?function(e,t,i){let a=new Set(["bg","fg","line","accent","muted","surface","border","shadow","font","embedFontImport"]),r=Object.keys(t).find(e=>!a.has(e));if(r)throw TypeError(`Family "${e.id}" returned unknown appearance color field "${r}"`);let n={...i};for(let i of["bg","fg","line","accent","muted","surface","border"]){let a=t[i];if(void 0===a)continue;let r=R(a);if(void 0===r)throw new eQ(`Family "${e.id}" returned an unsafe ${i} paint`);n[i]=r}if(void 0!==t.font){let a=q(t.font);if(void 0===a)throw new eQ(`Family "${e.id}" returned an unsafe font family`);if(a!==i.font)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "font"`)}if(void 0!==t.shadow){if("boolean"!=typeof t.shadow)throw TypeError(`Family "${e.id}" returned a non-boolean shadow value`);if(t.shadow!==i.shadow)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "shadow"`)}if(void 0!==t.embedFontImport){if("boolean"!=typeof t.embedFontImport)throw TypeError(`Family "${e.id}" returned a non-boolean embedFontImport value`);if(t.embedFontImport!==i.embedFontImport)throw TypeError(`Family "${e.id}" request normalizer may not rewrite appearance field "embedFontImport"`)}return n}(e,f.colors,a):a,b=e9(e,u.familyConfig,"config",c.valid),S=e9(e,f?.family,"appearance",c.valid);return{renderOptions:p,colors:v,...b?{familyConfig:b}:{},...S?{familyAppearance:S}:{}}}(t,a,m,g,o,s),v=tn(y.colors),b=tc.get(r)??tp(r.style),S=function(e){let t=new Set;for(let i of Object.values(O))for(let a of i){let i=e.config.themeVariables?.[a];"string"==typeof i&&i.length>0&&void 0===z(i)&&t.add(a)}return Object.freeze([...t].sort())}(a),$={version:2,colors:v,font:u,style:tn(o),face:tn(s),styled:c,inferredBackend:o?i(o):"default",styleReferences:b,...S.length>0?{unsafeThemeColorKeys:S}:{},...y.familyAppearance?{family:y.familyAppearance}:{}},w=tn({...$,digest:ti(e7(tt($)))});return tn({renderOptions:tn(y.renderOptions),appearance:w,...y.familyConfig?{familyConfig:y.familyConfig}:{}})}({family:x,source:w,options:d,...p?{style:p}:{},...m?{styleFace:m}:{}}),M=I.family?.visual;"architecture"===x.id&&eb(w.config.themeVariables,x.id,d,M),function(e,t,i){if("architecture"!==t||!e)return;let a=i?.edgeStroke;if("string"==typeof a&&"none"===a.trim().toLowerCase())throw new em("architecture.visual.edgeStroke",a);for(let t of["bg","surface","line","accent"]){let r=e[t];if("string"==typeof r&&"none"===r.trim().toLowerCase()&&("surface"!==t||i?.groupSurface?.trim().toLowerCase()==="none")&&!("surface"===t&&i?.groupHeaderSurface)&&!(("line"===t||"accent"===t)&&a))throw new em(t,r)}let r=i?.groupSurface;if(!i?.groupHeaderSurface&&"string"==typeof r&&"none"===r.trim().toLowerCase())throw new em("architecture.visual.groupSurface",r)}(d,x.id,M);let N=function(e,t,i,a,r,n){var o,l,c,d,u;let f,p,m,g,h;"svg"===i||"png"===i?"scene"==(f=t.styled||e.lowerScene?"scene":"family-svg")&&(p=S(m=t.styled?t.inferredBackend:"default",a.backendPolicy)):f="layout"===i?"layout":"terminal";let y="scene"===f?(g=new Set(e.scenePrimitiveEvidence.filter(e=>"applicable"===e.applicability).map(e=>e.primitive)),b.filter(e=>g.has(e.primitive))):[],v=p?y.flatMap(e=>tg(ty(e),tb(p,e))):[],$=[{id:e.identity.id,version:e.identity.version},...tg("operation:layout",void 0!==e.layout),...tg("operation:project-positioned",void 0!==e.projectPositioned),...tg("operation:lower-scene",void 0!==e.lowerScene),...tg("operation:render-svg",void 0!==e.renderSvg),...tg("operation:render-terminal",void 0!==e.renderAscii),...tg("core:scene","scene"===f),...tg("backend:scene-renderer",void 0!==p,p?.identity.version),...v],w=[th("core:family-descriptor"),th(e.identity.id,e.identity.version)],x;switch(f){case"scene":w.push(th("core:scene"),th("operation:layout"),th("operation:lower-scene"),th("backend:scene-renderer",p?.identity.version??tm),...y.map(e=>th(ty(e)))),x=!!(e.layout&&e.lowerScene&&p&&y.every(e=>tb(p,e)));break;case"family-svg":w.push(th("operation:layout"),th("operation:render-svg")),x=!!(e.layout&&e.renderSvg);break;case"terminal":w.push(th("operation:render-terminal")),x=void 0!==e.renderAscii;break;case"layout":w.push(th("operation:layout"),th("operation:project-positioned")),x=!!(e.layout&&e.projectPositioned)}let C=function(e,t,i,a){let r=function(e,t,i,a){let r=t.length+i.length;if("string"!=typeof e||r>256)return;let n=e.length+16*r;if(n>16384)return;let o=`${e.length}:${e};${a};${t.length};${i.length};`;for(let e of t){if("string"!=typeof e.id||"string"!=typeof e.version||(n+=e.id.length+e.version.length)>16384)return;o+=`${e.id.length}:${e.id}${e.version.length}:${e.version}`}for(let e of i){if("string"!=typeof e.id||"string"!=typeof e.range||"string"!=typeof e.level||(n+=e.id.length+e.range.length+e.level.length)>16384)return;o+=`${e.id.length}:${e.id}${e.range.length}:${e.range}${e.level.length}:${e.level}`}return o.length<=8192?o:void 0}(e,t,i,a),n=void 0===r?void 0:tS.get(r);if(P("capability-decision",void 0===r?"bypass":n?"hit":"miss",void 0===r?"tuple-budget":void 0),n)return n;let o=B(e,{offers:t,requirements:i,outputAvailable:a});return void 0!==r&&(tS.size<32?tS.set(r,o):P("capability-decision","store-skipped","capacity")),o}(i,$,w,x);if(!C.accepted){let a,r;throw d=f,u=p,r=(a=C.resolutions.filter(e=>"required"===e.level&&"selected"!==e.status).map(e=>e.id).join(", "))?` (unsatisfied capabilities: ${a})`:"","layout"===i?new eZ(`No public layout projection registered for Mermaid family "${e.id}"${r}`,i,e,C):"ascii"===i||"unicode"===i||"html"===i?new eZ(`No ASCII renderer registered for Mermaid family ${e.id}${r}`,i,e,C):t.styled&&!e.lowerScene?new eZ(`Family "${e.id}" does not support styled rendering (no SceneGraph lowering registered). Render without the style option, or register a lowerScene hook for the family.${r}`,i,e,C):"scene"===d&&e.layout&&e.lowerScene&&!u?new eZ(t.styled?`Style "${t.style?.name??"(inline)"}" requires an unavailable SceneGraph backend${r}`:`Default SceneGraph backend is not registered${r}`,i,e,C):new eZ(`No SVG renderer registered for Mermaid family ${e.id}${r}`,i,e,C)}let O="terminal"===f?void 0:W(a.textMeasurement,t.font),j;if("scene"===f||"family-svg"===f){let t=Object.freeze("scene"===f?{mode:"scene",requestedId:m,selectedId:p.identity.id,version:p.identity.version,hostPolicy:void 0!==a.backendPolicy}:{mode:"family-svg"}),i={family:Object.freeze({id:e.identity.id,version:e.identity.version}),backend:t,...O?{textMeasurement:O.identity}:{}};j=Object.freeze({...i,digest:ti(e7(tt(i)))})}let k=void 0===r?void 0:Object.freeze((o=e.id,l=e.config,c=e.configDiagnostics,h=s(o),function(e,t,i,a){var r;let n;if(!i)return[];let o=a??s(e)?.configDiagnostics;return r=t.flatMap(t=>o?[...o({root:t,config:i})]:ek(e,{root:t,config:i})),n=new Set,r.sort((e,t)=>_(e.field,t.field)||_(e.message,t.message)).filter(e=>{let t=`${e.code}\0${e.field}\0${e.message}`;return!n.has(t)&&(n.add(t),!0)})}(o,[r],l??h?.config,c??h?.configDiagnostics)).map(e=>Object.freeze({...e})));return Object.freeze({output:i,mode:f,family:e,...p?{backend:p}:{},...m?{requestedBackendId:m}:{},...void 0===k?{}:{configDiagnostics:k},...n?{onConfigDiagnostic:n}:{},capabilityDecision:C,...j?{executionDecision:j}:{},...O?{textMeasurement:O}:{}})}(x,I,a,l,d.mermaidConfig,c.onConfigDiagnostic),V=N.capabilityDecision,J=Object.freeze(V.resolutions.filter(t$)),G=Object.freeze({version:V.version,accepted:J.every(e=>"required"!==e.level||"selected"===e.status),resolutions:J}),H={version:2,authoredSource:w.originalText,source:w.text,options:e5(T),appearance:I.digest,...D?{familyConfig:D}:{},...N.textMeasurement?{textMeasurement:N.textMeasurement.identity}:{},capabilities:G},U=te(H,w),Y=te({...H,output:a,outputOptions:o,capabilities:V},w),K=Object.freeze({version:2,output:a,source:tn(w),renderOptions:T,appearance:I,...D?{familyConfig:D}:{},capabilityDecision:V,explicitOptionFields:F,...0===A.length?{}:{resolutionDiagnostics:A},get sharedRequestDigest(){return U()},get requestDigest(){return Y()}});return e0.set(K,N),K}export{ex as a,eO as b,ej as c,ek as d,eQ as e,e1 as f,e6 as g,e2 as h,ti as i,td as j,tu as k,tw as l};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{a as e,c as t}from"./chunk-NMQQMRIR.js";import{c as r,d as o,e as i,g as n,l as a,o as l}from"./chunk-4LHYF3BS.js";import{b as d,c as s,d as h}from"./chunk-SZELX2EJ.js";import{o as c}from"./chunk-HLWUNUCM.js";import{c as p,na as g,oa as u}from"./chunk-X2UYKWKM.js";import{i as f,j as k,k as m,u as y}from"./chunk-TYZOZXUJ.js";import{c as x,e as $,h as b,o as w}from"./chunk-NO7ZIVRU.js";import{C as S,G as v,N as C,O as M,a as W,sb as _}from"./chunk-Z3FDIVLN.js";function F(p,F,A){let{positioned:j,colors:z,resolved:B}=F,E=B.renderOptions,N=z.font??"Inter",R=E.transparent??!1,H=[],I=B.familyAppearance?.visual??E.stateVisual,P=b(E,I?.styleDefaults,B.styleFace);H.push(p.documentOpen({id:"prelude",width:j.width,height:j.height,colors:z,transparent:R,font:N,hasMonoFont:!1},m(j.width,j.height,z,R)+`
|
|
2
|
+
`+k(N,!1,z.shadow,z.embedFontImport)));let Z=[];Z.push("<defs>");let T=f(z);T&&Z.push(T);let O=new Set,U=new Set;P.edgeStrokeColor&&O.add(P.edgeStrokeColor);let D=!1,X=!1;for(let e of j.edges)e.inlineStyle?.stroke&&O.add(e.inlineStyle.stroke),e.inlineStyle?.["stroke-width"]&&U.add(e.inlineStyle.stroke??P.edgeStrokeColor),("circle"===e.startMarker||"circle"===e.endMarker)&&(D=!0),("cross"===e.startMarker||"cross"===e.endMarker)&&(X=!0);let V=r(O,U,D,X);for(let e of(Z.splice(1,0,y(V)),Z.push("</defs>"),H.push(p.definitions({id:"defs",markerResources:V},Z.join(`
|
|
3
|
+
`))),j.title&&H.push(p.text(w(j.title,P))),A?.surfaces===!1?[]:j.groups))H.push(function e(t,r,o,i,n){if(r.concurrencyRegion)return t.group({id:`group:${r.id}`,role:"group",open:`<g class="concurrency-region" data-id="${C(r.id)}"${n?` data-parent-id="${C(n)}"`:""}>`,close:"</g>",children:r.children.map(n=>({indent:0,node:e(t,n,o,i,r.id)}))});let a=r.labelBlock??d(S(r.label,r.labelContent),i,"group"),l=r.headerHeight??i.groupHeaderFontSize+16+a.height-a.lineHeight,s=[],h=`<g class="subgraph" data-id="${C(r.id)}" data-region="subgraph" data-label="${M(r.label)}"${n?` data-parent-id="${C(n)}"`:""}>`,c=r.inlineStyle,p=c?.fill??i.groupFillColor??"var(--_group-fill)",g=c?.stroke??i.groupBorderColor??"var(--_node-stroke)",u=c?.["stroke-width"]??String(i.groupLineWidth);s.push({indent:2,node:t.shape({id:`group-rect:${r.id}`,role:"group",geometry:{kind:"rect",x:r.x,y:r.y,width:r.width,height:r.height,rx:i.groupCornerRadius,ry:i.groupCornerRadius},paint:{fill:p,stroke:g,strokeWidth:u}})});let f=i.groupHeaderFillColor??"var(--_group-hdr)",k=_(r.x,r.y,r.width,l,i.groupCornerRadius);s.push({indent:2,node:t.shape({id:`group-header:${r.id}`,role:"group-header",geometry:{kind:"path",d:k},paint:{fill:f,stroke:g,strokeWidth:u}})});let m=a.text,y=c?.color??i.groupTextColor??"var(--_text-sec)";for(let e of(s.push({indent:2,node:t.text({id:`group-label:${r.id}`,role:"group-header",text:m,block:a,x:r.x+i.groupLabelPaddingX,y:r.y+l/2,fontSize:i.groupHeaderFontSize,anchor:"start",paint:{fill:y}})}),function(e,t){let r=e.children.filter(e=>e.concurrencyRegion);if(r.length<2)return[];let o=e=>Math.max(...r.map(e))-Math.min(...r.map(e)),i=o(e=>e.x+e.width/2)>=o(e=>e.y+e.height/2),n=[...r].sort((e,t)=>i?e.x-t.x:e.y-t.y),a=[];for(let r=1;r<n.length;r++){let o=n[r-1],l=n[r];if(i){let i=(o.x+o.width+l.x)/2;a.push({index:r-1,x1:i,y1:e.y+t+4,x2:i,y2:e.y+e.height-4})}else{let t=(o.y+o.height+l.y)/2;a.push({index:r-1,x1:e.x+4,y1:t,x2:e.x+e.width-4,y2:t})}}return a}(r,l)))s.push({indent:2,node:t.shape({id:`region-separator:${r.id}:${e.index}`,role:"group",geometry:{kind:"line",x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2},paint:{stroke:g,strokeWidth:String(i.groupLineWidth),strokeDasharray:"6 4"},attributes:{className:"region-separator"}})});for(let n of r.children)s.push({indent:0,node:e(t,n,o,i,r.id)});return t.group({id:`group:${r.id}`,role:"group",open:h,close:"</g>",children:s})}(p,e,N,P));A?.beforeEdges&&H.push(...A.beforeEdges());let Y=new Set(j.nodes.map(e=>e.id)),J=e=>e.forEach(e=>{Y.add(e.id),J(e.children)});J(j.groups);let K=new Map,Q=new Map;for(let e of j.edges){if(e.points.length<2)continue;let t=`${e.source}->${e.target}`,r=K.get(t)??0;K.set(t,r+1);let a=`edge:${t}#${r}`;Q.set(e,a);let l=void 0===e.id||Y.has(e.id)?a:e.id;H.push(function(e,t,r,a,l,d){let s="dotted"===t.style?"dotted":"thick"===t.style?"thick":"invisible"===t.style?"invisible":"solid",h=L(a),p=t.labelPosition??c(t.points),g=r.edgeTextColor??"var(--_text-sec)",u=t.label?[{id:`${a}:label`,text:t.label,textContent:{value:t.label,prepared:v(S(t.label,t.labelContent))},anchor:p,paint:{fill:g},fontSize:r.edgeLabelFontSize,textAnchor:"middle",visual:{kind:"companion",markId:`${h}:text`}}]:[],f=(t.classNames??[]).map(e=>e.replace(/[^A-Za-z0-9_-]/g,"")).filter(Boolean),k={identity:{id:l,...f.length?{classNames:f}:{}},endpoints:{from:t.source,to:t.target},relationship:{kind:"flowchart-edge",direction:t.source===t.target?"self":t.hasArrowStart&&t.hasArrowEnd?"bidirectional":t.hasArrowStart?"reverse":t.hasArrowEnd?"forward":"undirected"},route:{ownership:"layout",bendRadius:r.edgeBendRadius,labelAnchors:t.labelPosition?[t.labelPosition]:[]},labels:u};if("invisible"===t.style)return e.connector({id:a,role:"edge",geometry:{kind:"polyline",points:t.points},lineStyle:"invisible",paint:{},...k});let m=n(t,r),y="dotted"===t.style?`${$.dash} ${$.gap}`:t.animate?"8 4":void 0,x="thick"===t.style?2*r.lineWidth:r.lineWidth,b=t.inlineStyle?.stroke??r.edgeStrokeColor,w=`${b?`-${i(b)}`:""}${t.inlineStyle?.["stroke-width"]?"-fixed":""}`,C,M;if(t.hasArrowEnd){let e=o(t.endMarker??"arrow");if(!(C=d.find(t=>t.id===`${e}${w}`)))throw Error(`Missing marker resource "${e}${w}"`)}if(t.hasArrowStart){let e=o(t.startMarker??"arrow");if(!(M=d.find(t=>t.id===`${e}-start${w}`)))throw Error(`Missing marker resource "${e}-start${w}"`)}let _={className:["edge",...f].join(" "),data:{style:t.style,"arrow-start":String(t.hasArrowStart),"arrow-end":String(t.hasArrowEnd),...t.hasArrowStart?{"marker-start":t.startMarker??"arrow"}:{},...t.hasArrowEnd?{"marker-end":t.endMarker??"arrow"}:{},...t.label?{label:W(t.label)}:{},...t.curve?{curve:t.curve}:{},...t.animate?{animate:"true",animation:t.animation??"slow"}:{}}},F={stroke:b??"var(--_line)",strokeWidth:t.inlineStyle?.["stroke-width"]??String(x),...y?{strokeDasharray:y}:{}};if(r.edgeBendRadius>0||t.curve){if(!m)throw Error(`Missing path projection for flowchart edge "${a}"`);return e.connector({id:a,role:"edge",geometry:m.geometry,lineStyle:s,paint:F,markers:{...M?{start:M}:{},mid:[],...C?{end:C}:{}},...k,route:{...k.route,contours:m.contours},attributes:_})}return e.connector({id:a,role:"edge",geometry:{kind:"polyline",points:t.points},lineStyle:s,paint:F,markers:{...M?{start:M}:{},mid:[],...C?{end:C}:{}},...k,attributes:_})}(p,e,P,a,l,V))}for(let e of j.edges){let t=Q.get(e);A?.edgeLabels!==!1&&e.label&&t&&H.push(function(e,t,r,o,i){let n=t.labelPosition??c(t.points),a=t.labelBlock??d(S(t.label,t.labelContent),o,"edge"),l=a.text,p=s+h(t,o.lineWidth),g=a.width+2*p,u=a.height+2*p,f=n.x-g/2,k=n.y-u/2,m=e.shape({id:`${i}:halo`,role:"chrome",geometry:{kind:"rect",x:f,y:k,width:g,height:u,rx:4,ry:4},paint:{fill:"var(--bg)",stroke:"none"},attributes:{className:"edge-label-halo"}}),y=a.width+2*s,x=a.height+2*s,$=e.shape({id:`${i}:pill`,role:"chrome",geometry:{kind:"rect",x:n.x-y/2,y:n.y-x/2,width:y,height:x,rx:2,ry:2},paint:{fill:"var(--bg)",stroke:"var(--_inner-stroke)",strokeWidth:"1"}}),b=o.edgeTextColor??"var(--_text-sec)",w=e.text({id:`${i}:text`,role:"label",text:l,block:a,x:n.x,y:n.y,fontSize:o.edgeLabelFontSize,anchor:"middle",paint:{fill:b}});return e.group({id:i,role:"edge-label",open:`<g class="edge-label" data-from="${C(t.source)}" data-to="${C(t.target)}" data-label="${M(t.label)}">`,close:"</g>",children:[{indent:2,node:m},{indent:2,node:$},{indent:2,node:w}]})}(p,e,0,P,L(t)))}for(let r of A?.surfaces===!1?[]:j.nodes)H.push(function(r,o,i,n,s,h){let c=function(e,t,r){let{x:o,y:i,width:n,height:l,shape:d,inlineStyle:s}=t,h=a(t,{fill:s?.fill??r.nodeFillColor??"var(--_node-fill)",stroke:s?.stroke??r.nodeBorderColor??"var(--_node-stroke)",strokeWidth:s?.["stroke-width"]??String(r.nodeLineWidth)},r.cornerRadius);return e.shape({id:`node-shape:${t.id}`,role:"state-note"===t.shape?"note":"node",geometry:h.geometry,paint:h.paint,...h.childPaints?{childPaints:h.childPaints}:{}})}(r,o,n),p=function(e,t,r){let o=t.nodeTextColor??(e.inlineStyle?.fill||!l(e)?"var(--_text)":u("var(--_text)",t.nodeFillColor??"var(--_node-fill)",r));return g(e.inlineStyle,o)}(o,n,s),f=function(e,t,r,o,i){if(("state-start"===t.shape||"state-end"===t.shape||"state-fork"===t.shape||"state-join"===t.shape||"state-choice"===t.shape)&&!t.label)return null;let n=t.x+t.width/2,a=t.y+t.height/2,l=t.labelBlock??d(S(t.label,t.labelContent),o,"node"),s=l.text;return e.text({id:`node-label:${t.id}`,role:"label",text:s,block:l,x:n,y:a,fontSize:o.nodeLabelFontSize,anchor:"middle",paint:{fill:i}})}(r,o,0,n,p),k=(o.classNames??[]).map(e=>e.replace(/[^A-Za-z0-9_-]/g,"")).filter(Boolean),m=["node",..."state-note"===o.shape?["state-note"]:[],...k].join(" "),y="state-start"===o.shape?{status:"start"}:"state-end"===o.shape?{status:"end"}:void 0,x=[{indent:2,node:c}],$=function(r,o,i){let n=Math.min(28,.4*o.height),a=o.x+o.width/2,l=o.y+6;if(o.icon){let d=t(o.icon);if(d){let e=n/24;return r.pathArtwork({id:`node:${o.id}:icon`,paths:d.paths,owner:{id:o.id,role:"node"},open:`<g class="flowchart-icon" data-icon="${C(o.icon)}" transform="translate(${a-n/2} ${l}) scale(${e})">`,transform:{kind:"matrix",a:e,b:0,c:0,d:e,e:a-n/2,f:l},paint:{fill:i,stroke:i,strokeWidth:"0.8"}})}let s=e(o.icon);return r.text({id:`node:${o.id}:icon`,role:"icon",owner:{id:o.id,role:"node"},text:s,block:o.iconFallbackBlock,x:a,y:l+n/2,fontSize:10,anchor:"middle",paint:{fill:i},baselineShift:0,attributes:{className:"flowchart-icon-fallback",data:{icon:o.icon}}})}if(o.image){let e=a-n/2,t=`M${e+2} ${l+.66*n}L${e+.36*n} ${l+.36*n}L${e+.52*n} ${l+.5*n}L${e+.7*n} ${l+.32*n}L${e+n-2} ${l+.66*n}`,d={fill:"none",stroke:i,strokeWidth:"1.2"},s={id:o.id,role:"node"};return r.group({id:`node:${o.id}:image`,role:"icon",owner:s,open:`<g class="flowchart-image-placeholder" data-image-src="${C(o.image)}">`,close:"</g>",join:"",children:[{indent:0,node:r.shape({id:`node:${o.id}:image:frame`,role:"icon",owner:s,geometry:{kind:"rect",x:e,y:l,width:n,height:.72*n,rx:2},paint:d})},{indent:0,node:r.shape({id:`node:${o.id}:image:sun`,role:"icon",owner:s,geometry:{kind:"circle",cx:e+.72*n,cy:l+.2*n,r:.08*n},paint:d})},{indent:0,node:r.shape({id:`node:${o.id}:image:landscape`,role:"icon",owner:s,geometry:{kind:"path",d:t},paint:d})}]})}return null}(r,o,p);$&&x.push({indent:2,node:$}),f&&x.push({indent:2,node:f});let b=o.semanticShape?` data-semantic-shape="${C(o.semanticShape)}"`:"",w=h&&o.href?` data-href="${C(o.href)}" role="link" tabindex="0"`:"",v=void 0===o.floatingNoteId?"":` data-floating-note-id="${C(o.floatingNoteId)}"`;return r.group({id:`node:${o.id}`,role:"state-note"===o.shape?"note":"node",open:`<g class="${m}" data-id="${C(o.id)}" data-label="${M(o.label)}" data-shape="${o.shape}"${b}${w}${v}>`,close:"</g>",children:x,channels:y})}(p,r,0,P,z,"strict"!==E.security));for(let e of j.notes??[])H.push(function(e,t,r,o){let{x:i,y:n,width:a,height:l}=t,s=o.groupHeaderFillColor??"var(--_group-hdr)",h=o.groupBorderColor??"var(--_node-stroke)",c=o.edgeTextColor??"var(--_text-sec)",p=t.textBlock??d(S(t.text,t.textContent),o,"note"),g=p.text,u=`state-note:${t.id}`;return e.group({id:u,role:"note",open:`<g class="state-note" data-id="${C(t.id)}" data-target="${C(t.target)}" data-side="${t.side}">`,close:"</g>",children:[{indent:2,node:e.shape({id:`${u}:rect`,role:"note",geometry:{kind:"rect",x:i,y:n,width:a,height:l,rx:4,ry:4},paint:{fill:s,stroke:h,strokeWidth:String(x.innerBox)}})},{indent:2,node:e.text({id:`${u}:text`,role:"label",text:g,block:p,x:i+a/2,y:n+l/2,fontSize:o.edgeLabelFontSize,anchor:"middle",paint:{fill:c}})}]})}(p,e,0,P));return H.push(p.documentClose()),{family:"flowchart",width:j.width,height:j.height,colors:z,transparent:R,parts:H}}function L(e){return e.startsWith("edge:")?`edge-label:${e.slice(5)}`:`${e}:label`}var A=p(F);export{F as a,A as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as r}from"./chunk-SZELX2EJ.js";import{Pa as e}from"./chunk-Z3FDIVLN.js";function t(t){let n=new Map(t.map(r=>[r.id,{start:e(r,"start"),end:e(r,"end"),fixed:"userSpaceOnUse"===r.units}]));return(e,t,a)=>{if(!e)return 0;let i=n.get(e);if(!i)throw Error(`Missing terminal marker ${e}`);return i[a]*(i.fixed?1:t)+r}}export{t as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{j as t}from"./chunk-HLWUNUCM.js";var n=t=>({x:0,y:0,width:t.width,height:t.height}),e=n=>({x:t(n.x),y:t(n.y),w:t(n.width),h:t(n.height)});function a(n){return t(Math.round(n))}function r(n,e){return t(Math.round(n+e)-Math.round(n))}function h(t,n,e,a,r){let h=!!(a&&e[0]&&u(e[0].x,e[0].y,a,1)),y=!!(r&&e[e.length-1]&&u(e[e.length-1].x,e[e.length-1].y,r,1)),l=o(e);return{family:t,edgeIndex:n,routeClass:"family-layout",invariant:h&&y&&l?"orthogonal-box":"unverified-family-route",bendCount:i(e),orthogonal:l,sourceBoundary:h,targetBoundary:y}}function o(t){for(let n=1;n<t.length;n++){let e=t[n-1],a=t[n];if(Math.abs(e.x-a.x)>.5&&Math.abs(e.y-a.y)>.5)return!1}return!0}function i(t){if(t.length<3)return 0;let n=0;for(let e=1;e<t.length-1;e++){let a=t[e-1],r=t[e],h=t[e+1],o=.5>=Math.abs(a.x-r.x)&&.5>=Math.abs(r.x-h.x),i=.5>=Math.abs(a.y-r.y)&&.5>=Math.abs(r.y-h.y);!o&&!i&&n++}return n}function u(t,n,e,a){let r=(Math.abs(t-e.x)<=a||Math.abs(t-(e.x+e.width))<=a)&&n>=e.y-a&&n<=e.y+e.height+a,h=(Math.abs(n-e.y)<=a||Math.abs(n-(e.y+e.height))<=a)&&t>=e.x-a&&t<=e.x+e.width+a;return r||h}function y(t,n,e,r,h="bounds"){let o=new Map;for(let t of n.groups)for(let n of t.members)o.set(n,t);return n.nodes.map(i=>{let u=function(t,n,e=.5){return t.x>=-e&&t.y>=-e&&t.x+t.w<=n.w+e&&t.y+t.h<=n.h+e}(i,n.bounds),y=o.get(i.id)??r,l=y?"center"===h?function(t,n,e=.5){let a=t.x+t.w/2,r=t.y+t.h/2;return a>=n.x-e&&r>=n.y-e&&a<=n.x+n.w+e&&r<=n.y+n.h+e}(i,y):function(t,n,e=.5){return t.x>=n.x-e&&t.y>=n.y-e&&t.x+t.w<=n.x+n.w+e&&t.y+t.h<=n.y+n.h+e}(i,y):void 0;return{family:t,elementId:i.id,routeClass:"family-layout",invariant:u&&(l??!0)?e:"unverified-family-layout",bounds:{x:i.x,y:i.y,w:i.w,h:i.h},center:{x:a(i.x+i.w/2),y:a(i.y+i.h/2)},containment:h,withinBounds:u,...y?{groupId:y.id,withinGroup:l}:{}}})}export{n as a,e as b,a as c,r as d,h as e,o as f,i as g,y as h};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function t(t,e){let n=e?t[0]:t.at(-1);if(!n)return 0;let r=0,a=0,l=0;for(let f=1;f<t.length;f++){let i=t[e?f:t.length-1-f],h=i.x-n.x,x=i.y-n.y,y=Math.hypot(h,x);if(!y)continue;l||(r=h/y,a=x/y);let u=h*r+x*a;if(Math.abs(h*a-x*r)>1e-7||u<l)break;l=u}return l}function e(e,n){let r=e;for(let a of[!0,!1]){let l=a?n.start:n.end;if(t(r,a)+1e-7>=l)continue;if(r.length<4)return;let f=a?0:r.length-1,i=a?1:-1,h=r[f],x=r[f+i],y=r[f+2*i],u=Math.abs(x.x-h.x)>1e-7?Math.sign(x.x-h.x):0,o=Math.abs(x.y-h.y)>1e-7?Math.sign(x.y-h.y):0;if(+!u+ +!o!=1||(u?Math.abs(x.x-y.x)>1e-7:Math.abs(x.y-y.y)>1e-7))return;r===e&&(r=e.map(t=>({...t})));let s=u?"x":"y",g=h[s]+(u||o)*l;r[f+i][s]=g,r[f+2*i][s]=g}if(r===e)return e;for(let a of[!0,!1]){if(t(r,a)+1e-7<(a?n.start:n.end))return;let l=a?0:e.length-1,f=a?1:l-1,i=e[l],h=e[f],x=r[f];if((h.x-i.x)*(x.x-i.x)+(h.y-i.y)*(x.y-i.y)<=0)return}return r}export{t as a,e as b};
|