sketchi 0.25.10 → 0.25.12
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/package.json +1 -1
- package/sketchi.js +4 -4
package/sketchi.js
CHANGED
|
@@ -222,7 +222,7 @@ authority: ${e.diagram.authority}`,e=>({id:e.diagram.manifest.id,restoredFromRev
|
|
|
222
222
|
`:`error: usage_error
|
|
223
223
|
${a}
|
|
224
224
|
next: ${l}
|
|
225
|
-
`)}},d=new Proxy(globalThis.console,{get(e,t,a){if("log"===t)return(...t)=>{(1!==t.length||""!==t[0])&&e.log(...t)};let i=Reflect.get(e,t,a);return"function"==typeof i?i.bind(e):i}}),pL(ue,{version:"0.25.10"})(e).pipe(X.sFT(e=>eu.i5(e,ru)&&"ShowHelp"!==e._tag?rh(n.formatErrors([e])):X.rIH),X.PfK(dg,{builtIns:[dr,dn,dc]}),X.PfK(ns,n),X.PfK(rc,d))).pipe(X.khu({onFailure:e=>X.JkU(function*(){let t,a=ee.getOrUndefined(U.L$(e));if(a instanceof go)return a.exitCode;if(a instanceof iq)return 7;let i=function(e){if(eu.i5(e,ru))return"ShowHelp"===e._tag?2*(e.errors.length>0):2}(a);if(void 0!==i)return i;let s=yield*gl;return yield*s.stderr((t={code:"internal_error",message:"Sketchi could not complete the command.",hint:"Retry once; if it persists, report the command and inputs without secrets."},"json"===c?i7({ok:!1,command:"sketchi",error:t}):gd(t))).pipe(X.MfU(()=>X.rIH)),1}),onSuccess:()=>X.PyW(0)}))}),ua=j.Um(iH.Txp,(0,iH.rRT)({createId:e=>`${e}_offline_cli`,icons:lj})),ui=j.Gt(st,ua),us=j.Gt(sg,ua),ul=j.Um(sr,ll),uo=j.Gt(lm,ul),ur=j.Gt(lX,j.Um(uo,lI)),un=j.Gt(gL,gk),ud=j.Um(sr,ll,ui,us,uo,ur,lI,un,gz,sm.pipe(j.Gt(sr)),gn,rd),uc=j.S5(ud,iV);Z(ut(process.argv.slice(2)).pipe(X.Mim(e=>X.OH5(()=>{process.exitCode=e})),X.Gte(uc)),{disableErrorReporting:!0})},1688(e,t,a){var i=a(2718);let s=i.xCb(["invalid_render_artifact","render_limit_exceeded","unsupported_render_glyph","rasterization_failed"]),l=i.xCb(["artifact","geometry","font","rasterization"]);class o extends i.rNF()("HeadlessPngRenderError",{cause:i.kld(),code:s,stage:l,message:i.QfV,details:i.O31(i.QfV)}){}a.d(t,{FG:()=>o})},5030(e,t,a){function i(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function s(e,t,a,i){return{code:e,message:t,...void 0===a?{}:{observed:a},...void 0===i?{}:{limit:i}}}function l(e,t=0){let a=1/0,o=1/0,r=-1/0,n=-1/0;for(let t of e){if(!(i(t)&&"number"==typeof t.x&&Number.isFinite(t.x)&&"number"==typeof t.y&&Number.isFinite(t.y)&&"number"==typeof t.width&&Number.isFinite(t.width)&&"number"==typeof t.height&&Number.isFinite(t.height)))return s("invalid_geometry","element geometry is invalid");let e=Math.abs(t.width),l=Math.abs(t.height);if(e>8192||l>8192)return s("element_dimension",`element dimension exceeds ${String(8192)}`,Math.max(e,l),8192);let d=function(e){if(void 0!==e.angle&&0!==e.angle)return;let t=Array.isArray(e.points)?e.points.filter(e=>Array.isArray(e)&&"number"==typeof e[0]&&Number.isFinite(e[0])&&"number"==typeof e[1]&&Number.isFinite(e[1])):[],a=[e.x,e.x+e.width,...t.map(t=>e.x+t[0])],i=[e.y,e.y+e.height,...t.map(t=>e.y+t[1])];return{left:Math.min(...a),top:Math.min(...i),right:Math.max(...a),bottom:Math.max(...i)}}(t);if(d){a=Math.min(a,d.left),o=Math.min(o,d.top),r=Math.max(r,d.right),n=Math.max(n,d.bottom);continue}let c=Math.hypot(e,l)/2,p=t.x+t.width/2,h=t.y+t.height/2;a=Math.min(a,p-c),o=Math.min(o,h-c),r=Math.max(r,p+c),n=Math.max(n,h+c)}if(0===e.length)return;let d=r-a,c=n-o;if(d>8192||c>8192)return s("canvas_dimension",`canvas dimension exceeds ${String(8192)}`,Math.max(d,c),8192);let p=d*c;if(p>6291456)return s("canvas_area",`canvas area exceeds ${String(6291456)}`,p,6291456);let h=(d+40)*1*((c+40+t)*1);if(h>0x1800000)return s("output_pixels",`PNG output exceeds ${String(0x1800000)} pixels at minimum scale`,h,0x1800000)}function o(e,t){let a=new Set(t.flatMap(e=>i(e)&&"image"===e.type&&!0!==e.isDeleted&&"string"==typeof e.fileId?[e.fileId]:[])),l=0;for(let t of a){let a=Object.hasOwn(e,t)?e[t]:void 0,s=i(a)?a.dataURL:void 0;"string"==typeof s&&(l+=s.length)}return l>8388608?s("file_bytes",`embedded image data exceeds ${String(8388608)} bytes`,l,8388608):void 0}function r(e,t=0){return l(e,t)?.message}function n(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0)return s("invalid_geometry","rendered SVG dimensions are invalid");let a=Math.min(2,16384/e,16384/t,Math.sqrt(0x1800000/(e*t)));if(a<1){let a=e*t;return a>0x1800000?s("output_pixels",`PNG output exceeds ${String(0x1800000)} pixels at minimum scale`,a,0x1800000):s("output_dimension","rendered SVG dimension exceeds the PNG limit at minimum scale",Math.max(e,t),16384)}return Math.max(1,Math.floor(1e3*a)/1e3)}a.d(t,{Gd:()=>r,Ts:()=>l,Yu:()=>n,jA:()=>o},{Z4:6291456,ce:0x1800000})},6982(e){e.exports=t("crypto")},7598(e){e.exports=t("node:crypto")},76(e,t,a){let i=a(9095),s=process.env;function l(e){return"string"==typeof e?!!s[e]:"env"in e?s[e.env]&&s[e.env].includes(e.includes):"any"in e?e.any.some(function(e){return!!s[e]}):Object.keys(e).every(function(t){return s[t]===e[t]})}Object.defineProperty(t,"_vendors",{value:i.map(function(e){return e.constant})}),t.name=null,t.isPR=null,t.id=null,"false"!==s.CI&&i.forEach(function(e){let a=(Array.isArray(e.env)?e.env:[e.env]).every(function(e){return l(e)});t[e.constant]=a,a&&(t.name=e.name,t.isPR=function(e){switch(typeof e.pr){case"string":return!!s[e.pr];case"object":if("env"in e.pr)if("any"in e.pr)return e.pr.any.some(function(t){return s[e.pr.env]===t});else return e.pr.env in s&&s[e.pr.env]!==e.pr.ne;if("any"in e.pr)return e.pr.any.some(function(e){return!!s[e]});return l(e.pr);default:return null}}(e),t.id=e.constant)}),t.isCI=!!("false"!==s.CI&&(s.BUILD_ID||s.BUILD_NUMBER||s.CI||s.CI_APP_ID||s.CI_BUILD_ID||s.CI_BUILD_NUMBER||s.CI_NAME||s.CONTINUOUS_INTEGRATION||s.RUN_ID||t.name))},485(e,t,a){e.exports=a(76).isCI},664(e,t,a){a.d(t,{CN:()=>g,BC:()=>m,Ie:()=>z,pb:()=>B,i8:()=>k,g9:()=>b,Uk:()=>M,Ts:()=>u,CZ:()=>v,ET:()=>y,HV:()=>w,T9:()=>P,Tj:()=>L,YW:()=>f,of:()=>_,jB:()=>S,TS:()=>A,di:()=>C});var i=a(7876),s=a(1594);let l=e=>e.length>0;var o=a(9771),r=a(592),n=a(1587),d=a(2860),c=a(915),p=a(9315);let h=globalThis.Array,g=e=>new h(o.S(e)),u=e=>h.isArray(e)?e:h.from(e);c.Wo,n.toArray;let f=(0,s.XY)(2,(e,{onEmpty:t,onNonEmpty:a})=>y(e)?a(e):t()),m=(0,s.XY)(2,(e,t)=>[...e,t]);h.isArray;let v=l,y=l,w=e=>y(e)?n.some(x(e)):n.none(),x=e=>e[e.length-1],b=(0,s.XY)(2,(e,t)=>{let a=0;for(let i of e){if(t(i,a))return n.some(a);a++}return n.none()}),k=r.i8,M=(0,s.XY)(2,(e,t)=>{let a=u(e);for(let e=a.length-1;e>=0;e--){let i=a[e],s=t(i,e);if("boolean"==typeof s){if(s)return n.some(i)}else if(n.isSome(s))return s}return n.none()}),C=(0,s.XY)(2,(e,t)=>{let a=h.from(e);return a.sort(t),a}),z=()=>[],_=e=>[e],L=(0,s.XY)(2,(e,t)=>e.map(t)),B=(0,s.XY)(2,(e,t)=>{let a=u(e),i=[];for(let e=0;e<a.length;e++)t(a[e],e)&&i.push(a[e]);return i}),S=(0,s.XY)(2,(e,t)=>{let a=[],i=[],s=0;for(let l of e){let e=t(l,s++);p.oJ(e)?a.push(e.success):i.push(e.failure)}return[a,i]}),A=(0,s.XY)(3,(e,t,a)=>u(e).reduce((e,t,i)=>a(e,t,i),t));d.O3;let P=i.O3},5053(e,t,a){var i=a(9519),s=a(7876),l=a(1594),o=a(1587),r=a(2860),n=a(4233),d=a(636);let c=globalThis.BigInt,p=c(0);n.sI;let h=(0,l.XY)(2,(e,t)=>e+t),g=r.Qw,u=s.Qw,f=r.hl(g),m=r.bi(g),v=r.yJ(g),y=r.OW(g),w=r.Bt(g),x=r.qE(g),b=r.jk(g),k=r.T9(g),M=d.L((e,t)=>e+t,p),C=i.T9(g),z=i.jk(g);a.d(t,{},{K0:z,OW:y,Ro:e=>e>c(Number.MAX_SAFE_INTEGER)||e<c(Number.MIN_SAFE_INTEGER)?o.none():o.some(Number(e)),T9:k,Tq:w,aD:M,bi:m,cz:h,hl:f,jk:b,pH:g,qE:x,rs:u,sO:C,yJ:v})},3265(e,t,a){var i=a(5053),s=a(1587);let l=BigInt(0),o=BigInt(1),r=BigInt(1e3),n=BigInt(1024),d=[{symbol:"B",factor:o,names:["B","byte","bytes"]},{symbol:"kB",factor:r,names:["kB","kilobyte","kilobytes"]},{symbol:"MB",factor:r**BigInt(2),names:["MB","megabyte","megabytes"]},{symbol:"GB",factor:r**BigInt(3),names:["GB","gigabyte","gigabytes"]},{symbol:"TB",factor:r**BigInt(4),names:["TB","terabyte","terabytes"]},{symbol:"PB",factor:r**BigInt(5),names:["PB","petabyte","petabytes"]},{symbol:"EB",factor:r**BigInt(6),names:["EB","exabyte","exabytes"]},{symbol:"ZB",factor:r**BigInt(7),names:["ZB","zettabyte","zettabytes"]},{symbol:"YB",factor:r**BigInt(8),names:["YB","yottabyte","yottabytes"]},{symbol:"RB",factor:r**BigInt(9),names:["RB","ronnabyte","ronnabytes"]},{symbol:"QB",factor:r**BigInt(10),names:["QB","quettabyte","quettabytes"]}],c=[d[0],{symbol:"KiB",factor:n,names:["KiB","kibibyte","kibibytes"]},{symbol:"MiB",factor:n**BigInt(2),names:["MiB","mebibyte","mebibytes"]},{symbol:"GiB",factor:n**BigInt(3),names:["GiB","gibibyte","gibibytes"]},{symbol:"TiB",factor:n**BigInt(4),names:["TiB","tebibyte","tebibytes"]},{symbol:"PiB",factor:n**BigInt(5),names:["PiB","pebibyte","pebibytes"]},{symbol:"EiB",factor:n**BigInt(6),names:["EiB","exbibyte","exbibytes"]},{symbol:"ZiB",factor:n**BigInt(7),names:["ZiB","zebibyte","zebibytes"]},{symbol:"YiB",factor:n**BigInt(8),names:["YiB","yobibyte","yobibytes"]}],p=new Map([...d,...c.slice(1)].flatMap(e=>e.names.map(t=>[t,e]))),h=e=>{throw Error(`Invalid ByteSize: ${e}`)},g=e=>!Number.isSafeInteger(e)||e<0?h(`expected a non-negative safe integer, received ${e}`):BigInt(e),u=e=>{let t=/^\s*(\d+)(?:\.(\d+))?\s*([A-Za-z]+)\s*$/.exec(e);if(null===t)return h(`unsupported syntax ${JSON.stringify(e)}`);let a=p.get(t[3]);if(void 0===a)return h(`unsupported unit ${JSON.stringify(t[3])}`);let i=t[2]??"",s=BigInt(10)**BigInt(i.length),o=BigInt(t[1]+i)*a.factor;return o%s!==l?h(`${JSON.stringify(e)} does not represent an integral number of bytes`):o/s},f=s.liftThrowable(u),m=e=>{switch(typeof e){case"bigint":if(e<l)return h(`expected a non-negative bigint, received ${e}`);return e;case"number":return g(e);case"string":return u(e)}return h(`unsupported input ${e}`)},v=s.liftThrowable(m),y=i.Ro;i.pH,i.rs,i.Tq,i.jk,i.T9,i.qE,i.hl,i.bi,i.yJ,i.OW,i.cz,i.aD,i.sO,i.K0,a.d(t,{},{Dg:e=>e,Ro:y,bN:m,ee:e=>"bigint"==typeof e?m(e):g(e),lX:v,sH:f,yp:e=>"bigint"==typeof e&&e>=l})},719(e,t,a){var i=a(2449),s=a(6297);i.PX,i.B4,i.Aj,i.Wg;let l=i.lC;i.Xb,i.ik;let o=i.b5;i.DH;let r=i.OE,n=i.Iu;s.nIy,s.ORc;let d=s.nn5,c=s.O$X;i.h2;let p=s.ReC;s.myX,s.QE5,s.khU;let h=s.L$u;s.gpn,s.k7S,s.BbX;let g=s.prj;s.tU5,s.h74,s.Bou,s.RJ6;let u=s.GyP;i.PW,i.qB,i.Xm;let f=i.$L;i.q_;let m=i.RS,v=i.Vw;s.DQo,s.c8t,s.MUS,s.t8c,s._y;let y=s.qwd;s.ASO,s.F7W,s.Aub,s.cOF,s.Rft,s.RD4,s.Kkt,s.PnV;let w=s.Bk6;i.Eh,s.tQ6,s.On5,a.d(t,{},{$L:f,Bk:w,F_:n,L$:h,RS:m,Tj:c,Vw:v,fJ:r,iw:p,j9:u,kO:o,lC:l,nn:d,pr:g,qw:y})},4238(e,t,a){var i=a(6297);i.a1U,i.RKA;let s=i.Rud;i.s0X,i.T13,a.d(t,{},{Ru:s})},9519(e,t,a){function i(e){return{combine:e}}function s(e){return i((t,a)=>-1===e(t,a)?t:a)}function l(e){return i((t,a)=>1===e(t,a)?t:a)}a.d(t,{L8:()=>i,T9:()=>l,jk:()=>s})},1179(e,t,a){var i=a(3811),s=a(3332),l=a(1594),o=a(5033),r=a(2449),n=a(1587),d=a(4233);let c="~effect/Context/Service",p=function(){let e=function(){};Object.setPrototypeOf(e,h);let t=(t,a)=>(e.key=t,a?.defaultValue&&(e[u]=u,e.defaultValue=a.defaultValue),a?.make&&(e.make=a.make),a?.fiberCached&&g.add(t),e);return arguments.length>0?t(arguments[0],arguments[1]):t},h={[c]:c,...i.bp({label:"Service",evaluate(e){return(0,r.xt)(V(e.context,this))}}),toJSON(){return{_id:"Service",key:this.key}},of:e=>e,context(e){return _(this,e)},use(e){return(0,r.R6)(t=>e(V(t.context,this)))},useSync(e){return(0,r.R6)(t=>(0,r.xt)(e(V(t.context,this))))}},g=new Set,u="~effect/Context/Reference",f="~effect/Context",m=(e,t,a,i)=>{let s=Object.create(k);return s.cacheRoot=e??s,s.base=t,s.overlay=a,s.depth=i,s._flat=void 0,s.baseHits=0,s},v=(e,t)=>{t&&(v(e,t.parent),e.set(t.key,t.value))},y=e=>{if(e._flat)return e._flat;if(!e.overlay)return e._flat=e.base;let t=new Map(e.base);return v(t,e.overlay),e._flat=t},w=Symbol(),x=(e,t)=>{for(let a=e.overlay;a;a=a.parent)if(a.key===t)return a.value;let a=e.base.get(t);return void 0!==a||e.base.has(t)?(e.overlay&&++e.baseHits>=e.base.size&&e.baseHits>=8&&(e.base=y(e),e.overlay=void 0,e.depth=0),a):w},b=e=>m(void 0,e,void 0,0),k={get mapUnsafe(){return y(this)},...r.fU,[f]:{_Services:e=>e},toJSON(){return{_id:"Context",services:Array.from(this.mapUnsafe).map(([e,t])=>({key:e,value:t}))}},[s.HR](e){if(!M(e))return!1;let t=this.mapUnsafe,a=e.mapUnsafe;if(t.size!==a.size)return!1;for(let[e,i]of t)if(!a.has(e)||!s.aI(i,a.get(e)))return!1;return!0},[o.HR](){return o.ai(this.mapUnsafe.size)}},M=e=>(0,d.i5)(e,f),C=e=>!!e[u],z=b(new Map),_=(e,t)=>b(new Map([[e.key,t]])),L=(0,l.XY)(3,(e,t,a)=>B(e,t.key,a)),B=(e,t,a)=>{let i=g.has(t)?void 0:e.cacheRoot;if(e.depth>=8){let s=new Map(e.mapUnsafe);return s.set(t,a),m(i,s,void 0,0)}return m(i,e.base,{key:t,value:a,parent:e.overlay},e.depth+1)},S=(0,l.XY)(2,(e,t)=>A(e,t.key)),A=(e,t)=>{let a=x(e,t);return a===w?void 0:a},P=(0,l.XY)(2,(e,t)=>{let a=x(e,t.key);if(a===w){if(C(t))return q(t);throw F(t)}return a}),V=P,H="~effect/Context/defaultValue",q=e=>H in e?e[H]:e[H]=e.defaultValue(),F=e=>{let t=Error(`Service not found${e.key?`: ${String(e.key)}`:""}`);if(t.stack){let e=t.stack.split("\n");e.splice(1,3),t.stack=e.join("\n")}return t},I=(0,l.XY)(2,(e,t)=>{let a=x(e,t.key);return a!==w?n.some(a):C(t)?n.some(q(t)):n.none()}),E=(0,l.XY)(2,(e,t)=>{let a;return 0===e.mapUnsafe.size?t:0===t.mapUnsafe.size?e:((e=>t.mapUnsafe.forEach((t,a)=>e.set(a,t)))(a=new Map(e.mapUnsafe)),b(a))});a.d(t,{},{Ie:()=>z,Jt:V,L8:_,LZ:b,Or:p,Pf:(e,t)=>e.cacheRoot===t.cacheRoot,Ub:A,Um:(...e)=>{let t=new Map;for(let a=0;a<e.length;a++)e[a].mapUnsafe.forEach((e,a)=>{t.set(a,e)});return b(t)},WQ:L,Y6:S,aE:M,fp:P,h1:E,kl:p,om:I})},4942(e,t,a){var i=a(2449),s=a(2275),l=a(1554),o=a(4233);let r=class extends l.Xs{constructor(e){super(),e&&s.z(this,e)}};function n(){if(1==arguments.length){let e=arguments[0];return function(t){return e[t._tag](t)}}let e=arguments[0],t=arguments[1];return t[e._tag](e)}let d=i.$D,c=i.rN;a.d(t,{},{$D:d,Ij:()=>new Proxy({},{get:(e,t,a)=>"$is"===t?o.$J:"$match"===t?n:e=>({...e,_tag:t})}),Xs:r,rN:c})},9237(e,t,a){var i=a(1594),s=a(6297),l=a(1554);let o={"~effect/Deferred":{_A:i.D_,_E:i.D_},pipe(){return(0,l.tT)(this,arguments)}},r=function(){this.resumes=void 0,this.effect=void 0};r.prototype=o;let n=e=>void 0!==e.effect;a.d(t,{},{$L:e=>s.OH5(()=>n(e)),$w:(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let a=e.resumes;e.resumes=void 0;for(let e=0;e<a.length;e++)a[e](t)}return!0},LZ:()=>new r,NJ:n,Tx:e=>s.E2r(t=>e.effect?t(e.effect):(e.resumes??=[],e.resumes.push(t),s.OH5(()=>{let a=e.resumes;if(void 0===a)return;let i=a.indexOf(t);i>=0&&a.splice(i,1)})))})},3614(e,t,a){var i=a(3332),s=a(1594),l=a(5033),o=a(3952),r=a(2860),n=a(1554),d=a(4233);let c="~effect/Duration",p=BigInt(0),h=BigInt(1),g=BigInt(2),u=BigInt(10),f=BigInt(24),m=BigInt(60),v=BigInt(1e3),y=BigInt(1e6),w=e=>BigInt(e<0?Math.ceil(e-.5):Math.floor(e+.5)),x=(e,t)=>{let a=e.indexOf(".");if(-1===a)return BigInt(e)*t;let i="-"===e[0],s=e.slice(a+1),l=u**BigInt(s.length),o=(BigInt(e.slice(+!!i,a))*l+BigInt(s))*t,r=o/l+(o%l*g>=l?h:p);return i?-r:r},b=/^(-?\d+(?:\.\d+)?)\s+(nanos?|micros?|millis?|seconds?|minutes?|hours?|days?|weeks?)$/,k=e=>{switch(typeof e){case"number":return q(e);case"bigint":return H(e);case"string":{if("Infinity"===e)return P;if("-Infinity"===e)return V;let t=b.exec(e);if(!t)break;let[a,i,s]=t;if("nano"===s||"nanos"===s)return H(x(i,h));if("micro"===s||"micros"===s)return H(x(i,v));let l=Number(i);switch(s){case"milli":case"millis":return q(l);case"second":case"seconds":return F(l);case"minute":case"minutes":return I(l);case"hour":case"hours":return E(l);case"day":case"days":return O(l);case"week":case"weeks":return U(l)}break}case"object":{if(null===e)break;if(c in e)return e;if(Array.isArray(e)){if(2!==e.length||!e.every(d.Et))return M(e);if(Number.isNaN(e[0])||Number.isNaN(e[1]))return A;if(-1/0===e[0]||-1/0===e[1])return V;if(1/0===e[0]||1/0===e[1])return P;return B(w(1e9*e[0]+e[1]))}let t=0;if(e.weeks&&(t+=6048e5*e.weeks),e.days&&(t+=864e5*e.days),e.hours&&(t+=36e5*e.hours),e.minutes&&(t+=6e4*e.minutes),e.seconds&&(t+=1e3*e.seconds),e.milliseconds&&(t+=e.milliseconds),!e.microseconds&&!e.nanoseconds)return B(t);return B(w(1e6*t+(e.microseconds??0)*1e3+(e.nanoseconds??0)))}}return M(e)},M=e=>{throw Error(`Invalid Input: ${e}`)},C={_tag:"Millis",millis:0},z={_tag:"Infinity"},_={_tag:"NegativeInfinity"},L={[c]:c,[l.HR](){switch(this.value._tag){case"Millis":{let e=1e6*this.value.millis;return Number.isFinite(e)?l.tW(w(e)):l.ai(this.value.millis)}case"Nanos":return l.tW(this.value.nanos);default:return l.QK(this.value)}},[i.HR](e){return S(e)&&R(this,e)},toString(){switch(this.value._tag){case"Infinity":return"Infinity";case"NegativeInfinity":return"-Infinity";case"Nanos":return`${this.value.nanos} nanos`;case"Millis":return`${this.value.millis} millis`}},toJSON(){switch(this.value._tag){case"Millis":return{_id:"Duration",_tag:"Millis",millis:this.value.millis};case"Nanos":return{_id:"Duration",_tag:"Nanos",nanos:String(this.value.nanos)};case"Infinity":return{_id:"Duration",_tag:"Infinity"};case"NegativeInfinity":return{_id:"Duration",_tag:"NegativeInfinity"}}},[o.FX](){return this.toJSON()},pipe(){return(0,n.tT)(this,arguments)}},B=e=>{let t=Object.create(L);return"number"==typeof e?isNaN(e)||0===e||Object.is(e,-0)?t.value=C:Number.isFinite(e)?Number.isInteger(e)?t.value={_tag:"Millis",millis:e}:t.value={_tag:"Nanos",nanos:w(1e6*e)}:t.value=e>0?z:_:e===p?t.value=C:t.value={_tag:"Nanos",nanos:e},t},S=e=>(0,d.i5)(e,c),A=B(0),P=B(1/0),V=B(-1/0),H=e=>B(e),q=e=>B(e),F=e=>B(1e3*e),I=e=>B(6e4*e),E=e=>B(36e5*e),O=e=>B(864e5*e),U=e=>B(6048e5*e),X=e=>{let t=k(e);switch(t.value._tag){case"Infinity":case"NegativeInfinity":throw Error("Cannot convert infinite duration to nanos");case"Nanos":return t.value.nanos;case"Millis":return w(1e6*t.value.millis)}},T=(0,s.XY)(2,(e,t)=>{switch(e.value._tag){case"Millis":return t.onMillis(e.value.millis);case"Nanos":return t.onNanos(e.value.nanos);case"Infinity":return t.onInfinity();case"NegativeInfinity":return(t.onNegativeInfinity??t.onInfinity)()}}),$=(0,s.XY)(3,(e,t,a)=>"Infinity"===e.value._tag||"NegativeInfinity"===e.value._tag||"Infinity"===t.value._tag||"NegativeInfinity"===t.value._tag?a.onInfinity(e,t):"Millis"===e.value._tag?"Millis"===t.value._tag?a.onMillis(e.value.millis,t.value.millis):a.onNanos(X(e),t.value.nanos):a.onNanos(e.value.nanos,X(t))),Y=r.L8((e,t)=>$(e,t,{onMillis:(e,t)=>e<t?-1:+(e>t),onNanos:(e,t)=>e<t?-1:+(e>t),onInfinity:(e,t)=>e.value._tag===t.value._tag?0:"Infinity"===e.value._tag?1:"NegativeInfinity"===e.value._tag||"Infinity"===t.value._tag?-1:1})),G=r.bi(Y),R=(0,s.XY)(2,(e,t)=>$(e,t,{onMillis:(e,t)=>e===t,onNanos:(e,t)=>e===t,onInfinity:(e,t)=>e.value._tag===t.value._tag})),D=e=>{if("Infinity"===e.value._tag)return"Infinity";if("NegativeInfinity"===e.value._tag)return"-Infinity";if((e=>{switch(e.value._tag){case"Millis":return 0===e.value.millis;case"Nanos":return e.value.nanos===p;case"Infinity":case"NegativeInfinity":return!1}})(e))return"0";if((e=>{switch(e.value._tag){case"Millis":return e.value.millis<0;case"Nanos":return e.value.nanos<p;case"NegativeInfinity":return!0;case"Infinity":return!1}})(e))return"-"+D((e=>{switch(e.value._tag){case"Infinity":case"NegativeInfinity":return P;case"Millis":return e.value.millis<0?B(-e.value.millis):e;case"Nanos":return e.value.nanos<p?B(-e.value.nanos):e}})(e));let t=(e=>{if("Infinity"===e.value._tag)return{days:1/0,hours:1/0,minutes:1/0,seconds:1/0,millis:1/0,nanos:1/0};if("NegativeInfinity"===e.value._tag)return{days:-1/0,hours:-1/0,minutes:-1/0,seconds:-1/0,millis:-1/0,nanos:-1/0};let t=X(e),a=t<p,i=a?-t:t,s=i/y,l=s/v,o=l/m,r=o/m,n=a?-1:1;return{days:n*Number(r/f),hours:n*Number(r%f),minutes:n*Number(o%m),seconds:n*Number(l%m),millis:n*Number(s%v),nanos:n*Number(i%y)}})(e),a=[];return 0!==t.days&&a.push(`${t.days}d`),0!==t.hours&&a.push(`${t.hours}h`),0!==t.minutes&&a.push(`${t.minutes}m`),0!==t.seconds&&a.push(`${t.seconds}s`),0!==t.millis&&a.push(`${t.millis}ms`),0!==t.nanos&&a.push(`${t.nanos}ns`),a.join(" ")};a.d(t,{},{GP:D,MI:e=>"Infinity"!==e.value._tag&&"NegativeInfinity"!==e.value._tag,Tn:P,YA:F,bN:k,bi:G,cF:H,fP:e=>T(k(e),{onMillis:e=>e/1e3,onNanos:e=>Number(e)/1e9,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),kE:e=>T(k(e),{onMillis:s.D_,onNanos:e=>Number(e)/1e6,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),n$:S,ne:q,qv:V,v_:A})},2842(e,t,a){a.d(t,{Q56:()=>ex,jGc:()=>eb,U9h:()=>ek,Q7R:()=>k,hgn:()=>$,swY:()=>eY,Muk:()=>eA,as:()=>j,E2r:()=>P,MfU:()=>N,Tyx:()=>K,osR:()=>Q,KuX:()=>W,loE:()=>J,RKA:()=>eX,_32:()=>eP,F_Q:()=>E,_r7:()=>eG,yeE:()=>eM,NS5:()=>D,fJG:()=>q,ATB:()=>F,pVV:()=>I,qIB:()=>T,Ab9:()=>ej,fn:()=>eU,D9k:()=>eO,vCS:()=>eN,jJl:()=>M,i4r:()=>eS,ar0:()=>eH,x6Z:()=>eq,yUA:()=>X,JkU:()=>H,XeO:()=>el,GaK:()=>e_,yw5:()=>b,vVN:()=>e$,FFw:()=>eT,TjK:()=>Z,q7Y:()=>eZ,jkJ:()=>eR,xm_:()=>ee,Z9x:()=>eD,YWq:()=>ec,khu:()=>ep,tvg:()=>eh,ZmZ:()=>V,S5A:()=>eC,cfM:()=>ez,uKv:()=>R,QgK:()=>et,ivC:()=>z,Gte:()=>eg,PpN:()=>eu,PfK:()=>em,KT6:()=>ed,Ket:()=>G,L5P:()=>es,MY7:()=>eF,eJC:()=>eI,lKS:()=>eE,z8E:()=>ev,P1j:()=>ey,Pxi:()=>ew,Nav:()=>ef,yy4:()=>en,PyW:()=>L,DYE:()=>B,OH5:()=>S,Mim:()=>Y,dGm:()=>ei,sFT:()=>ea,wRz:()=>eo,mgX:()=>er,SvU:()=>O,$mh:()=>_,rfi:()=>eL,FcF:()=>eB,rIH:()=>A,iMI:()=>C,R6R:()=>U,fRP:()=>eV});var i=a(1594),s=a(2449),l=a(6297),o=(a(3614),a(1179));a(9315);var r=a(6771),n=a(5633);let d=(0,i.XY)(e=>(0,s.yw)(e[0]),(e,t,a)=>{let i;return o.aE(t)?l.PpN(e,t):(i=Array.isArray(t)?n.Um(...t):t,l.Pxi(t=>l.qIB(a?.local?n.H7(i,n.j6(),t):n.LT(i,t),t=>l.PpN(e,t))))});var c=a(1587),p=a(3753),h=a(6481);(e,t,a)=>l.qIB(r.xn(t),t=>{let i=r.d3.defaultValue();return l.h_t(l.i4r(l.Mim(l.qIB(l.DYE(()=>l.PfK(e,r.d3,i)),t),e=>l.OH5(()=>{i=e})),{disableYield:!0}),e=>s.$L(e)?l.PyW(e.value):a(e,0===i.attempt?c.none():c.some(i)))});let g=(0,i.XY)(3,(e,t,a)=>l.qIB(r.xn(t),t=>{let i,s=r.d3.defaultValue(),o=l.h_t(l.DYE(()=>l.PfK(e,r.d3,s)),e=>(i=e,l.qIB(t(e),e=>(s=e,o))));return p.m8(o,e=>(0,h.s)(()=>a(i,e)))})),u=(0,i.XY)(2,(e,t)=>g(e,"function"==typeof t?t(i.D_):r.GM(t)?t:m(t),l.fJG)),f=r.le(r.i4),m=e=>{let t=e.schedule?r.le(e.schedule):f;return e.while&&(t=r.E6(t,({input:t})=>{let a=e.while(t);return s.yw(a)?a:l.PyW(a)})),e.until&&(t=r.E6(t,({input:t})=>{let a=e.until(t);return s.yw(a)?l.TjK(a,e=>!e):l.PyW(!a)})),void 0!==e.times&&(t=r.E6(t,({attempt:t})=>l.PyW(t<=e.times))),t},v=r.t5(1);var y=a(2275);let w=a(3332).Xq({_E:e=>e,_A:e=>e,_R:e=>e});({...s.In,"~effect/Request":w}),a(3909);var x=a(4600);s.$n;let b=s.yw,k=l.Q7R;l.jBG,l.TSs,l.tfT,l.i8i,l.kAe;let M=l.jJl;l.d5f;let C=l.iMI,z=l.ivC,_=l.$mh,L=l.PyW;l.lwU,l.nGE;let B=l.DYE,S=l.OH5,A=l.rIH;l.Vxk;let P=l.E2r,V=l.ZmZ;l.Do,l.JrD,l.uVU,l.oIE;let H=l.JkU,q=l.fJG;l.gOk;let F=l.ATB,I=l.pVV,E=l.F_Q,O=l.SvU;l.m9E,l.KN3;let U=s.R6;s.Hq;let X=l.yUA;l.sVm,l.pkL,l.bJ;let T=l.qIB;l.Bqz;let $=l.hgn,Y=l.Mim,G=l.Ket,R=l.uKv,D=l.NS5,Z=l.TjK,j=l.as;l.Xx$,l.NLW,l.UUz,l.yU6,l.OYO;let N=l.h_t,W=l.KuX,J=l.loE;l.AXC,l.zt4,l.scW;let K=l.Tyx;l.Fig,l.XWm;let Q=l.osR;l.U9Y,l.sJf,l.rNk;let ee=l.xm_;l.UcN;let et=l.QgK,ea=l.sFT;l.k$L;let ei=l.dGm;l.cA6,l.bKC,l.nAi,l.u4Y;let es=u;l._Sg;let el=l.XeO;l.GrF,l.$$g,l.DM4,l.Dd;let eo=l.wRz;l.D52;let er=l.mgX;l.cbG;let en=l.yy4;l.ayu,l.Vdx,l.FfP,l.O4F;let ed=l.KT6;l.pbD,l.x1Q,l.E8K,l.Pm0,l.VtY,l.W$I,l.ahH,l.z7s;let ec=l.YWq;l.G$Q,l.D$$,l.NZb,l.wR5;let ep=l.khu,eh=l.tvg;l.N6O,l.oJd,l._OA,l.sxi;let eg=d,eu=l.PpN;l.oao,l.euC;let ef=l.Nav;l.r_d,l.bUZ,l.L_I;let em=l.PfK;l.c7E;let ev=l.z8E,ey=l.P1j,ew=l.Pxi,ex=l.Q56;l.N24;let eb=l.jGc,ek=l.U9h,eM=l.yeE,eC=l.S5A;l.BeE,l.iKM,l.r7h;let ez=l.cfM;l.fGe,l.uRq,l.PO3,l.Rgn,l.CJw;let e_=l.GaK;l.Inz,l.nAr;let eL=l.rfi,eB=l.FcF;l.eMl,l.dsN;let eS=l.i4r;l.aAq,l.Xrv,l.kJM,l._o1,l.nDN,l.MaT;let eA=l.Muk;l.ww9;let eP=l._32;l.Wj8,l.Fu6,l.WbR,l.A_r,l.Z98,l.Rd$,l.gvr;let eV=l.fRP;l.zr8,l.hq,l.zhn;let eH=l.ar0,eq=l.x6Z;l.yxg,l.PCg,l.pEE,l.ABT;let eF=l.MY7,eI=l.eJC;l.lSz,l.bPG,l.pR5,l.v2Q,l.NpQ,l.jqV,l.HZF,l.lE;let eE=l.lKS;l.rfH;let eO=l.D9k,eU=l.fn,eX=l.RKA;l.lIX;let eT=l.lIX("Warn"),e$=l.lIX("Error"),eY=(0,i.XY)(e=>b(e[0]),(e,...t)=>l.bUZ(e,x.iL,e=>{let a=1===t.length?{...e,...t[0]}:{...e};return 1===t.length||y.x(a,t[0],t[1]),a}));l.gsV;let eG=(e,t,a)=>(...i)=>P(s=>{try{e(...i,(e,a)=>{e?s(q(t?t(e,i):e)):s(L(a))})}catch(e){s(a?q(a(e,i)):E(e))}}),eR=l.jkJ,eD=l.Z9x,eZ=l.q7Y,ej=l.Ab9;l.UVN;let eN=l.vCS},3811(e,t,a){var i=a(2449);a.d(t,{},{bp:e=>(0,i.yj)({op:e.label,[i._3]:e.evaluate})})},3332(e,t,a){var i=a(5033),s=a(5844),l=a(4233);let o="~effect/Equal";function r(){return 1==arguments.length?e=>n(e,arguments[0]):n(arguments[0],arguments[1])}function n(e,t){if(e===t)return!0;if(null==e||null==t)return!1;let a=typeof e;return a===typeof t&&("number"===a&&e!=e&&t!=t||!("object"!==a&&"function"!==a||s.J3.has(e)||s.J3.has(t))&&function(e,t){let a=c.length;for(let i=a;i-- >0;)if(c[i]===e&&p[i]===t)return!0;if(a)return d(e,t);let i=h.get(e);i||h.set(e,i=new WeakMap);let s=i.get(t);return void 0===s&&i.set(t,s=d(e,t)),s}(e,t))}function d(e,t){c.push(e),p.push(t);try{return function(e,t){if(i.tW(e)!==i.tW(t))return!1;if(e instanceof Date){if(!(t instanceof Date))return!1;let a=e.getTime(),i=t.getTime();return a===i||Number.isNaN(a)&&Number.isNaN(i)}if(e instanceof RegExp)return t instanceof RegExp&&e.toString()===t.toString();let a=v(e);if(a!==v(t)||"function"==typeof e&&!a)return!1;if(a)return e[o](t);if(Array.isArray(e))return!!Array.isArray(t)&&e.length===t.length&&function(e,t){for(let a=0;a<e.length;a++)if(!n(e[a],t[a]))return!1;return!0}(e,t);if(ArrayBuffer.isView(e)){let a=e instanceof DataView;return!!ArrayBuffer.isView(t)&&e.byteLength===t.byteLength&&a===t instanceof DataView&&(a?g((0,s.j)(e),(0,s.j)(t)):g(e,t))}if(e instanceof Map)return t instanceof Map&&e.size===t.size&&u(e,t,f,m);else if(e instanceof Set)return t instanceof Set&&e.size===t.size&&u(e,t,i.tW,n);var l=e,r=t;let d=(0,s.Xp)(l),c=(0,s.Xp)(r);if(d.size!==c.size)return!1;for(let e of d)if(!c.has(e)||!n(l[e],r[e]))return!1;return!0}(e,t)}finally{c.pop(),p.pop()}}let c=[],p=[],h=new WeakMap;function g(e,t){if(e.length!==t.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==t[a])return!1;return!0}function u(e,t,a,i){let s=new Map;for(let e of t){let t=a(e),i=s.get(t);i?i.push(e):s.set(t,[e])}e:for(let t of e){let e=s.get(a(t));if(e){for(let a=0;a<e.length;a++)if(i(t,e[a])){e[a]=e[e.length-1],e.pop();continue e}}return!1}return!0}let f=e=>i.tW(e[0]),m=(e,t)=>n(e[0],t[0])&&n(e[1],t[1]),v=e=>(0,l.i5)(e,o);a.d(t,{aI:()=>r},{HR:o,Xq:e=>(s.J3.add(e),e),jI:()=>r})},7876(e,t,a){let i=e=>(t,a)=>t===a||e(t,a),s=(e,t)=>e===t,l=i((e,t)=>globalThis.Number.isNaN(e)&&globalThis.Number.isNaN(t));function o(e){return i((t,a)=>{if(t.length!==a.length)return!1;for(let i=0;i<t.length;i++)if(!e[i](t[i],a[i]))return!1;return!0})}function r(e){return i((t,a)=>{if(t.length!==a.length)return!1;for(let i=0;i<t.length;i++)if(!e(t[i],a[i]))return!1;return!0})}function n(e){let t=Reflect.ownKeys(e);return i((a,i)=>{for(let s of t)if(!e[s](a[s],i[s]))return!1;return!0})}a.d(t,{O3:()=>r,_k:()=>n,rd:()=>o},{L8:i,Qw:s,YZ:()=>s,wN:l})},6526(e,t,a){var i=a(2449),s=a(6297);i.IH,i.b9;let l=i.xt,o=i.cb,r=i.Rk;i.V2,s._sz;let n=s.x5l,d=s.CoE,c=s.VE1;s._mh,s.YDM,s.lNM,s.K$2,s.GUt,s.HIt,s.yJo,s._OD,s.jCT,s.Wtn,s.v9O,s.zPu,s.EkE,s.Hox,s.ely,s.kMI,s.Sv3,s.lgw,a.d(t,{},{AT:o,N6:c,Py:l,fJ:r,oJ:d,rI:n})},1958(e,t,a){var i=a(4233),s=a(1279);function l(e,t){let a=t?.space??0,l=new WeakSet,n=a?"number"==typeof a?" ".repeat(a):a:"",p=(e,t)=>{let a=e?.constructor;return a&&a!==Object.prototype.constructor&&a.name?`${a.name}(${t})`:t};return function e(a,h=0){try{return function(a,h=0){if("string"==typeof a)return JSON.stringify(a);if("number"==typeof a||null==a||"boolean"==typeof a||"symbol"==typeof a)return String(a);if("bigint"==typeof a)return String(a)+"n";if("object"==typeof a||"function"==typeof a){let g;if(l.has(a))return o;if(l.add(a),s.uC in a)g=e((0,s.f6)(a),h);else if(Array.isArray(a)){let t,i;g=!n||a.length<=1?`[${a.map(t=>e(t,h)).join(",")}]`:`[
|
|
225
|
+
`)}},d=new Proxy(globalThis.console,{get(e,t,a){if("log"===t)return(...t)=>{(1!==t.length||""!==t[0])&&e.log(...t)};let i=Reflect.get(e,t,a);return"function"==typeof i?i.bind(e):i}}),pL(ue,{version:"0.25.12"})(e).pipe(X.sFT(e=>eu.i5(e,ru)&&"ShowHelp"!==e._tag?rh(n.formatErrors([e])):X.rIH),X.PfK(dg,{builtIns:[dr,dn,dc]}),X.PfK(ns,n),X.PfK(rc,d))).pipe(X.khu({onFailure:e=>X.JkU(function*(){let t,a=ee.getOrUndefined(U.L$(e));if(a instanceof go)return a.exitCode;if(a instanceof iq)return 7;let i=function(e){if(eu.i5(e,ru))return"ShowHelp"===e._tag?2*(e.errors.length>0):2}(a);if(void 0!==i)return i;let s=yield*gl;return yield*s.stderr((t={code:"internal_error",message:"Sketchi could not complete the command.",hint:"Retry once; if it persists, report the command and inputs without secrets."},"json"===c?i7({ok:!1,command:"sketchi",error:t}):gd(t))).pipe(X.MfU(()=>X.rIH)),1}),onSuccess:()=>X.PyW(0)}))}),ua=j.Um(iH.Txp,(0,iH.rRT)({createId:e=>`${e}_offline_cli`,icons:lj})),ui=j.Gt(st,ua),us=j.Gt(sg,ua),ul=j.Um(sr,ll),uo=j.Gt(lm,ul),ur=j.Gt(lX,j.Um(uo,lI)),un=j.Gt(gL,gk),ud=j.Um(sr,ll,ui,us,uo,ur,lI,un,gz,sm.pipe(j.Gt(sr)),gn,rd),uc=j.S5(ud,iV);Z(ut(process.argv.slice(2)).pipe(X.Mim(e=>X.OH5(()=>{process.exitCode=e})),X.Gte(uc)),{disableErrorReporting:!0})},1688(e,t,a){var i=a(2718);let s=i.xCb(["invalid_render_artifact","render_limit_exceeded","unsupported_render_glyph","rasterization_failed"]),l=i.xCb(["artifact","geometry","font","rasterization"]);class o extends i.rNF()("HeadlessPngRenderError",{cause:i.kld(),code:s,stage:l,message:i.QfV,details:i.O31(i.QfV)}){}a.d(t,{FG:()=>o})},5030(e,t,a){function i(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function s(e,t,a,i){return{code:e,message:t,...void 0===a?{}:{observed:a},...void 0===i?{}:{limit:i}}}function l(e,t=0){let a=1/0,o=1/0,r=-1/0,n=-1/0;for(let t of e){if(!(i(t)&&"number"==typeof t.x&&Number.isFinite(t.x)&&"number"==typeof t.y&&Number.isFinite(t.y)&&"number"==typeof t.width&&Number.isFinite(t.width)&&"number"==typeof t.height&&Number.isFinite(t.height)))return s("invalid_geometry","element geometry is invalid");let e=Math.abs(t.width),l=Math.abs(t.height);if(e>8192||l>8192)return s("element_dimension",`element dimension exceeds ${String(8192)}`,Math.max(e,l),8192);let d=function(e){if(void 0!==e.angle&&0!==e.angle)return;let t=Array.isArray(e.points)?e.points.filter(e=>Array.isArray(e)&&"number"==typeof e[0]&&Number.isFinite(e[0])&&"number"==typeof e[1]&&Number.isFinite(e[1])):[],a=[e.x,e.x+e.width,...t.map(t=>e.x+t[0])],i=[e.y,e.y+e.height,...t.map(t=>e.y+t[1])];return{left:Math.min(...a),top:Math.min(...i),right:Math.max(...a),bottom:Math.max(...i)}}(t);if(d){a=Math.min(a,d.left),o=Math.min(o,d.top),r=Math.max(r,d.right),n=Math.max(n,d.bottom);continue}let c=Math.hypot(e,l)/2,p=t.x+t.width/2,h=t.y+t.height/2;a=Math.min(a,p-c),o=Math.min(o,h-c),r=Math.max(r,p+c),n=Math.max(n,h+c)}if(0===e.length)return;let d=r-a,c=n-o;if(d>8192||c>8192)return s("canvas_dimension",`canvas dimension exceeds ${String(8192)}`,Math.max(d,c),8192);let p=d*c;if(p>6291456)return s("canvas_area",`canvas area exceeds ${String(6291456)}`,p,6291456);let h=(d+40)*1*((c+40+t)*1);if(h>0x1800000)return s("output_pixels",`PNG output exceeds ${String(0x1800000)} pixels at minimum scale`,h,0x1800000)}function o(e,t){let a=new Set(t.flatMap(e=>i(e)&&"image"===e.type&&!0!==e.isDeleted&&"string"==typeof e.fileId?[e.fileId]:[])),l=0;for(let t of a){let a=Object.hasOwn(e,t)?e[t]:void 0,s=i(a)?a.dataURL:void 0;"string"==typeof s&&(l+=s.length)}return l>8388608?s("file_bytes",`embedded image data exceeds ${String(8388608)} bytes`,l,8388608):void 0}function r(e,t=0){return l(e,t)?.message}function n(e,t){if(!Number.isFinite(e)||!Number.isFinite(t)||e<=0||t<=0)return s("invalid_geometry","rendered SVG dimensions are invalid");let a=Math.min(2,16384/e,16384/t,Math.sqrt(0x1800000/(e*t)));if(a<1){let a=e*t;return a>0x1800000?s("output_pixels",`PNG output exceeds ${String(0x1800000)} pixels at minimum scale`,a,0x1800000):s("output_dimension","rendered SVG dimension exceeds the PNG limit at minimum scale",Math.max(e,t),16384)}return Math.max(1,Math.floor(1e3*a)/1e3)}a.d(t,{Gd:()=>r,Ts:()=>l,Yu:()=>n,jA:()=>o},{Z4:6291456,ce:0x1800000})},6982(e){e.exports=t("crypto")},7598(e){e.exports=t("node:crypto")},76(e,t,a){let i=a(9095),s=process.env;function l(e){return"string"==typeof e?!!s[e]:"env"in e?s[e.env]&&s[e.env].includes(e.includes):"any"in e?e.any.some(function(e){return!!s[e]}):Object.keys(e).every(function(t){return s[t]===e[t]})}Object.defineProperty(t,"_vendors",{value:i.map(function(e){return e.constant})}),t.name=null,t.isPR=null,t.id=null,"false"!==s.CI&&i.forEach(function(e){let a=(Array.isArray(e.env)?e.env:[e.env]).every(function(e){return l(e)});t[e.constant]=a,a&&(t.name=e.name,t.isPR=function(e){switch(typeof e.pr){case"string":return!!s[e.pr];case"object":if("env"in e.pr)if("any"in e.pr)return e.pr.any.some(function(t){return s[e.pr.env]===t});else return e.pr.env in s&&s[e.pr.env]!==e.pr.ne;if("any"in e.pr)return e.pr.any.some(function(e){return!!s[e]});return l(e.pr);default:return null}}(e),t.id=e.constant)}),t.isCI=!!("false"!==s.CI&&(s.BUILD_ID||s.BUILD_NUMBER||s.CI||s.CI_APP_ID||s.CI_BUILD_ID||s.CI_BUILD_NUMBER||s.CI_NAME||s.CONTINUOUS_INTEGRATION||s.RUN_ID||t.name))},485(e,t,a){e.exports=a(76).isCI},664(e,t,a){a.d(t,{CN:()=>g,BC:()=>m,Ie:()=>z,pb:()=>B,i8:()=>k,g9:()=>b,Uk:()=>M,Ts:()=>u,CZ:()=>v,ET:()=>y,HV:()=>w,T9:()=>P,Tj:()=>L,YW:()=>f,of:()=>_,jB:()=>S,TS:()=>A,di:()=>C});var i=a(7876),s=a(1594);let l=e=>e.length>0;var o=a(9771),r=a(592),n=a(1587),d=a(2860),c=a(915),p=a(9315);let h=globalThis.Array,g=e=>new h(o.S(e)),u=e=>h.isArray(e)?e:h.from(e);c.Wo,n.toArray;let f=(0,s.XY)(2,(e,{onEmpty:t,onNonEmpty:a})=>y(e)?a(e):t()),m=(0,s.XY)(2,(e,t)=>[...e,t]);h.isArray;let v=l,y=l,w=e=>y(e)?n.some(x(e)):n.none(),x=e=>e[e.length-1],b=(0,s.XY)(2,(e,t)=>{let a=0;for(let i of e){if(t(i,a))return n.some(a);a++}return n.none()}),k=r.i8,M=(0,s.XY)(2,(e,t)=>{let a=u(e);for(let e=a.length-1;e>=0;e--){let i=a[e],s=t(i,e);if("boolean"==typeof s){if(s)return n.some(i)}else if(n.isSome(s))return s}return n.none()}),C=(0,s.XY)(2,(e,t)=>{let a=h.from(e);return a.sort(t),a}),z=()=>[],_=e=>[e],L=(0,s.XY)(2,(e,t)=>e.map(t)),B=(0,s.XY)(2,(e,t)=>{let a=u(e),i=[];for(let e=0;e<a.length;e++)t(a[e],e)&&i.push(a[e]);return i}),S=(0,s.XY)(2,(e,t)=>{let a=[],i=[],s=0;for(let l of e){let e=t(l,s++);p.oJ(e)?a.push(e.success):i.push(e.failure)}return[a,i]}),A=(0,s.XY)(3,(e,t,a)=>u(e).reduce((e,t,i)=>a(e,t,i),t));d.O3;let P=i.O3},5053(e,t,a){var i=a(9519),s=a(7876),l=a(1594),o=a(1587),r=a(2860),n=a(4233),d=a(636);let c=globalThis.BigInt,p=c(0);n.sI;let h=(0,l.XY)(2,(e,t)=>e+t),g=r.Qw,u=s.Qw,f=r.hl(g),m=r.bi(g),v=r.yJ(g),y=r.OW(g),w=r.Bt(g),x=r.qE(g),b=r.jk(g),k=r.T9(g),M=d.L((e,t)=>e+t,p),C=i.T9(g),z=i.jk(g);a.d(t,{},{K0:z,OW:y,Ro:e=>e>c(Number.MAX_SAFE_INTEGER)||e<c(Number.MIN_SAFE_INTEGER)?o.none():o.some(Number(e)),T9:k,Tq:w,aD:M,bi:m,cz:h,hl:f,jk:b,pH:g,qE:x,rs:u,sO:C,yJ:v})},3265(e,t,a){var i=a(5053),s=a(1587);let l=BigInt(0),o=BigInt(1),r=BigInt(1e3),n=BigInt(1024),d=[{symbol:"B",factor:o,names:["B","byte","bytes"]},{symbol:"kB",factor:r,names:["kB","kilobyte","kilobytes"]},{symbol:"MB",factor:r**BigInt(2),names:["MB","megabyte","megabytes"]},{symbol:"GB",factor:r**BigInt(3),names:["GB","gigabyte","gigabytes"]},{symbol:"TB",factor:r**BigInt(4),names:["TB","terabyte","terabytes"]},{symbol:"PB",factor:r**BigInt(5),names:["PB","petabyte","petabytes"]},{symbol:"EB",factor:r**BigInt(6),names:["EB","exabyte","exabytes"]},{symbol:"ZB",factor:r**BigInt(7),names:["ZB","zettabyte","zettabytes"]},{symbol:"YB",factor:r**BigInt(8),names:["YB","yottabyte","yottabytes"]},{symbol:"RB",factor:r**BigInt(9),names:["RB","ronnabyte","ronnabytes"]},{symbol:"QB",factor:r**BigInt(10),names:["QB","quettabyte","quettabytes"]}],c=[d[0],{symbol:"KiB",factor:n,names:["KiB","kibibyte","kibibytes"]},{symbol:"MiB",factor:n**BigInt(2),names:["MiB","mebibyte","mebibytes"]},{symbol:"GiB",factor:n**BigInt(3),names:["GiB","gibibyte","gibibytes"]},{symbol:"TiB",factor:n**BigInt(4),names:["TiB","tebibyte","tebibytes"]},{symbol:"PiB",factor:n**BigInt(5),names:["PiB","pebibyte","pebibytes"]},{symbol:"EiB",factor:n**BigInt(6),names:["EiB","exbibyte","exbibytes"]},{symbol:"ZiB",factor:n**BigInt(7),names:["ZiB","zebibyte","zebibytes"]},{symbol:"YiB",factor:n**BigInt(8),names:["YiB","yobibyte","yobibytes"]}],p=new Map([...d,...c.slice(1)].flatMap(e=>e.names.map(t=>[t,e]))),h=e=>{throw Error(`Invalid ByteSize: ${e}`)},g=e=>!Number.isSafeInteger(e)||e<0?h(`expected a non-negative safe integer, received ${e}`):BigInt(e),u=e=>{let t=/^\s*(\d+)(?:\.(\d+))?\s*([A-Za-z]+)\s*$/.exec(e);if(null===t)return h(`unsupported syntax ${JSON.stringify(e)}`);let a=p.get(t[3]);if(void 0===a)return h(`unsupported unit ${JSON.stringify(t[3])}`);let i=t[2]??"",s=BigInt(10)**BigInt(i.length),o=BigInt(t[1]+i)*a.factor;return o%s!==l?h(`${JSON.stringify(e)} does not represent an integral number of bytes`):o/s},f=s.liftThrowable(u),m=e=>{switch(typeof e){case"bigint":if(e<l)return h(`expected a non-negative bigint, received ${e}`);return e;case"number":return g(e);case"string":return u(e)}return h(`unsupported input ${e}`)},v=s.liftThrowable(m),y=i.Ro;i.pH,i.rs,i.Tq,i.jk,i.T9,i.qE,i.hl,i.bi,i.yJ,i.OW,i.cz,i.aD,i.sO,i.K0,a.d(t,{},{Dg:e=>e,Ro:y,bN:m,ee:e=>"bigint"==typeof e?m(e):g(e),lX:v,sH:f,yp:e=>"bigint"==typeof e&&e>=l})},719(e,t,a){var i=a(2449),s=a(6297);i.PX,i.B4,i.Aj,i.Wg;let l=i.lC;i.Xb,i.ik;let o=i.b5;i.DH;let r=i.OE,n=i.Iu;s.nIy,s.ORc;let d=s.nn5,c=s.O$X;i.h2;let p=s.ReC;s.myX,s.QE5,s.khU;let h=s.L$u;s.gpn,s.k7S,s.BbX;let g=s.prj;s.tU5,s.h74,s.Bou,s.RJ6;let u=s.GyP;i.PW,i.qB,i.Xm;let f=i.$L;i.q_;let m=i.RS,v=i.Vw;s.DQo,s.c8t,s.MUS,s.t8c,s._y;let y=s.qwd;s.ASO,s.F7W,s.Aub,s.cOF,s.Rft,s.RD4,s.Kkt,s.PnV;let w=s.Bk6;i.Eh,s.tQ6,s.On5,a.d(t,{},{$L:f,Bk:w,F_:n,L$:h,RS:m,Tj:c,Vw:v,fJ:r,iw:p,j9:u,kO:o,lC:l,nn:d,pr:g,qw:y})},4238(e,t,a){var i=a(6297);i.a1U,i.RKA;let s=i.Rud;i.s0X,i.T13,a.d(t,{},{Ru:s})},9519(e,t,a){function i(e){return{combine:e}}function s(e){return i((t,a)=>-1===e(t,a)?t:a)}function l(e){return i((t,a)=>1===e(t,a)?t:a)}a.d(t,{L8:()=>i,T9:()=>l,jk:()=>s})},1179(e,t,a){var i=a(3811),s=a(3332),l=a(1594),o=a(5033),r=a(2449),n=a(1587),d=a(4233);let c="~effect/Context/Service",p=function(){let e=function(){};Object.setPrototypeOf(e,h);let t=(t,a)=>(e.key=t,a?.defaultValue&&(e[u]=u,e.defaultValue=a.defaultValue),a?.make&&(e.make=a.make),a?.fiberCached&&g.add(t),e);return arguments.length>0?t(arguments[0],arguments[1]):t},h={[c]:c,...i.bp({label:"Service",evaluate(e){return(0,r.xt)(V(e.context,this))}}),toJSON(){return{_id:"Service",key:this.key}},of:e=>e,context(e){return _(this,e)},use(e){return(0,r.R6)(t=>e(V(t.context,this)))},useSync(e){return(0,r.R6)(t=>(0,r.xt)(e(V(t.context,this))))}},g=new Set,u="~effect/Context/Reference",f="~effect/Context",m=(e,t,a,i)=>{let s=Object.create(k);return s.cacheRoot=e??s,s.base=t,s.overlay=a,s.depth=i,s._flat=void 0,s.baseHits=0,s},v=(e,t)=>{t&&(v(e,t.parent),e.set(t.key,t.value))},y=e=>{if(e._flat)return e._flat;if(!e.overlay)return e._flat=e.base;let t=new Map(e.base);return v(t,e.overlay),e._flat=t},w=Symbol(),x=(e,t)=>{for(let a=e.overlay;a;a=a.parent)if(a.key===t)return a.value;let a=e.base.get(t);return void 0!==a||e.base.has(t)?(e.overlay&&++e.baseHits>=e.base.size&&e.baseHits>=8&&(e.base=y(e),e.overlay=void 0,e.depth=0),a):w},b=e=>m(void 0,e,void 0,0),k={get mapUnsafe(){return y(this)},...r.fU,[f]:{_Services:e=>e},toJSON(){return{_id:"Context",services:Array.from(this.mapUnsafe).map(([e,t])=>({key:e,value:t}))}},[s.HR](e){if(!M(e))return!1;let t=this.mapUnsafe,a=e.mapUnsafe;if(t.size!==a.size)return!1;for(let[e,i]of t)if(!a.has(e)||!s.aI(i,a.get(e)))return!1;return!0},[o.HR](){return o.ai(this.mapUnsafe.size)}},M=e=>(0,d.i5)(e,f),C=e=>!!e[u],z=b(new Map),_=(e,t)=>b(new Map([[e.key,t]])),L=(0,l.XY)(3,(e,t,a)=>B(e,t.key,a)),B=(e,t,a)=>{let i=g.has(t)?void 0:e.cacheRoot;if(e.depth>=8){let s=new Map(e.mapUnsafe);return s.set(t,a),m(i,s,void 0,0)}return m(i,e.base,{key:t,value:a,parent:e.overlay},e.depth+1)},S=(0,l.XY)(2,(e,t)=>A(e,t.key)),A=(e,t)=>{let a=x(e,t);return a===w?void 0:a},P=(0,l.XY)(2,(e,t)=>{let a=x(e,t.key);if(a===w){if(C(t))return q(t);throw F(t)}return a}),V=P,H="~effect/Context/defaultValue",q=e=>H in e?e[H]:e[H]=e.defaultValue(),F=e=>{let t=Error(`Service not found${e.key?`: ${String(e.key)}`:""}`);if(t.stack){let e=t.stack.split("\n");e.splice(1,3),t.stack=e.join("\n")}return t},I=(0,l.XY)(2,(e,t)=>{let a=x(e,t.key);return a!==w?n.some(a):C(t)?n.some(q(t)):n.none()}),E=(0,l.XY)(2,(e,t)=>{let a;return 0===e.mapUnsafe.size?t:0===t.mapUnsafe.size?e:((e=>t.mapUnsafe.forEach((t,a)=>e.set(a,t)))(a=new Map(e.mapUnsafe)),b(a))});a.d(t,{},{Ie:()=>z,Jt:V,L8:_,LZ:b,Or:p,Pf:(e,t)=>e.cacheRoot===t.cacheRoot,Ub:A,Um:(...e)=>{let t=new Map;for(let a=0;a<e.length;a++)e[a].mapUnsafe.forEach((e,a)=>{t.set(a,e)});return b(t)},WQ:L,Y6:S,aE:M,fp:P,h1:E,kl:p,om:I})},4942(e,t,a){var i=a(2449),s=a(2275),l=a(1554),o=a(4233);let r=class extends l.Xs{constructor(e){super(),e&&s.z(this,e)}};function n(){if(1==arguments.length){let e=arguments[0];return function(t){return e[t._tag](t)}}let e=arguments[0],t=arguments[1];return t[e._tag](e)}let d=i.$D,c=i.rN;a.d(t,{},{$D:d,Ij:()=>new Proxy({},{get:(e,t,a)=>"$is"===t?o.$J:"$match"===t?n:e=>({...e,_tag:t})}),Xs:r,rN:c})},9237(e,t,a){var i=a(1594),s=a(6297),l=a(1554);let o={"~effect/Deferred":{_A:i.D_,_E:i.D_},pipe(){return(0,l.tT)(this,arguments)}},r=function(){this.resumes=void 0,this.effect=void 0};r.prototype=o;let n=e=>void 0!==e.effect;a.d(t,{},{$L:e=>s.OH5(()=>n(e)),$w:(e,t)=>{if(e.effect)return!1;if(e.effect=t,e.resumes){let a=e.resumes;e.resumes=void 0;for(let e=0;e<a.length;e++)a[e](t)}return!0},LZ:()=>new r,NJ:n,Tx:e=>s.E2r(t=>e.effect?t(e.effect):(e.resumes??=[],e.resumes.push(t),s.OH5(()=>{let a=e.resumes;if(void 0===a)return;let i=a.indexOf(t);i>=0&&a.splice(i,1)})))})},3614(e,t,a){var i=a(3332),s=a(1594),l=a(5033),o=a(3952),r=a(2860),n=a(1554),d=a(4233);let c="~effect/Duration",p=BigInt(0),h=BigInt(1),g=BigInt(2),u=BigInt(10),f=BigInt(24),m=BigInt(60),v=BigInt(1e3),y=BigInt(1e6),w=e=>BigInt(e<0?Math.ceil(e-.5):Math.floor(e+.5)),x=(e,t)=>{let a=e.indexOf(".");if(-1===a)return BigInt(e)*t;let i="-"===e[0],s=e.slice(a+1),l=u**BigInt(s.length),o=(BigInt(e.slice(+!!i,a))*l+BigInt(s))*t,r=o/l+(o%l*g>=l?h:p);return i?-r:r},b=/^(-?\d+(?:\.\d+)?)\s+(nanos?|micros?|millis?|seconds?|minutes?|hours?|days?|weeks?)$/,k=e=>{switch(typeof e){case"number":return q(e);case"bigint":return H(e);case"string":{if("Infinity"===e)return P;if("-Infinity"===e)return V;let t=b.exec(e);if(!t)break;let[a,i,s]=t;if("nano"===s||"nanos"===s)return H(x(i,h));if("micro"===s||"micros"===s)return H(x(i,v));let l=Number(i);switch(s){case"milli":case"millis":return q(l);case"second":case"seconds":return F(l);case"minute":case"minutes":return I(l);case"hour":case"hours":return E(l);case"day":case"days":return O(l);case"week":case"weeks":return U(l)}break}case"object":{if(null===e)break;if(c in e)return e;if(Array.isArray(e)){if(2!==e.length||!e.every(d.Et))return M(e);if(Number.isNaN(e[0])||Number.isNaN(e[1]))return A;if(-1/0===e[0]||-1/0===e[1])return V;if(1/0===e[0]||1/0===e[1])return P;return B(w(1e9*e[0]+e[1]))}let t=0;if(e.weeks&&(t+=6048e5*e.weeks),e.days&&(t+=864e5*e.days),e.hours&&(t+=36e5*e.hours),e.minutes&&(t+=6e4*e.minutes),e.seconds&&(t+=1e3*e.seconds),e.milliseconds&&(t+=e.milliseconds),!e.microseconds&&!e.nanoseconds)return B(t);return B(w(1e6*t+(e.microseconds??0)*1e3+(e.nanoseconds??0)))}}return M(e)},M=e=>{throw Error(`Invalid Input: ${e}`)},C={_tag:"Millis",millis:0},z={_tag:"Infinity"},_={_tag:"NegativeInfinity"},L={[c]:c,[l.HR](){switch(this.value._tag){case"Millis":{let e=1e6*this.value.millis;return Number.isFinite(e)?l.tW(w(e)):l.ai(this.value.millis)}case"Nanos":return l.tW(this.value.nanos);default:return l.QK(this.value)}},[i.HR](e){return S(e)&&R(this,e)},toString(){switch(this.value._tag){case"Infinity":return"Infinity";case"NegativeInfinity":return"-Infinity";case"Nanos":return`${this.value.nanos} nanos`;case"Millis":return`${this.value.millis} millis`}},toJSON(){switch(this.value._tag){case"Millis":return{_id:"Duration",_tag:"Millis",millis:this.value.millis};case"Nanos":return{_id:"Duration",_tag:"Nanos",nanos:String(this.value.nanos)};case"Infinity":return{_id:"Duration",_tag:"Infinity"};case"NegativeInfinity":return{_id:"Duration",_tag:"NegativeInfinity"}}},[o.FX](){return this.toJSON()},pipe(){return(0,n.tT)(this,arguments)}},B=e=>{let t=Object.create(L);return"number"==typeof e?isNaN(e)||0===e||Object.is(e,-0)?t.value=C:Number.isFinite(e)?Number.isInteger(e)?t.value={_tag:"Millis",millis:e}:t.value={_tag:"Nanos",nanos:w(1e6*e)}:t.value=e>0?z:_:e===p?t.value=C:t.value={_tag:"Nanos",nanos:e},t},S=e=>(0,d.i5)(e,c),A=B(0),P=B(1/0),V=B(-1/0),H=e=>B(e),q=e=>B(e),F=e=>B(1e3*e),I=e=>B(6e4*e),E=e=>B(36e5*e),O=e=>B(864e5*e),U=e=>B(6048e5*e),X=e=>{let t=k(e);switch(t.value._tag){case"Infinity":case"NegativeInfinity":throw Error("Cannot convert infinite duration to nanos");case"Nanos":return t.value.nanos;case"Millis":return w(1e6*t.value.millis)}},T=(0,s.XY)(2,(e,t)=>{switch(e.value._tag){case"Millis":return t.onMillis(e.value.millis);case"Nanos":return t.onNanos(e.value.nanos);case"Infinity":return t.onInfinity();case"NegativeInfinity":return(t.onNegativeInfinity??t.onInfinity)()}}),$=(0,s.XY)(3,(e,t,a)=>"Infinity"===e.value._tag||"NegativeInfinity"===e.value._tag||"Infinity"===t.value._tag||"NegativeInfinity"===t.value._tag?a.onInfinity(e,t):"Millis"===e.value._tag?"Millis"===t.value._tag?a.onMillis(e.value.millis,t.value.millis):a.onNanos(X(e),t.value.nanos):a.onNanos(e.value.nanos,X(t))),Y=r.L8((e,t)=>$(e,t,{onMillis:(e,t)=>e<t?-1:+(e>t),onNanos:(e,t)=>e<t?-1:+(e>t),onInfinity:(e,t)=>e.value._tag===t.value._tag?0:"Infinity"===e.value._tag?1:"NegativeInfinity"===e.value._tag||"Infinity"===t.value._tag?-1:1})),G=r.bi(Y),R=(0,s.XY)(2,(e,t)=>$(e,t,{onMillis:(e,t)=>e===t,onNanos:(e,t)=>e===t,onInfinity:(e,t)=>e.value._tag===t.value._tag})),D=e=>{if("Infinity"===e.value._tag)return"Infinity";if("NegativeInfinity"===e.value._tag)return"-Infinity";if((e=>{switch(e.value._tag){case"Millis":return 0===e.value.millis;case"Nanos":return e.value.nanos===p;case"Infinity":case"NegativeInfinity":return!1}})(e))return"0";if((e=>{switch(e.value._tag){case"Millis":return e.value.millis<0;case"Nanos":return e.value.nanos<p;case"NegativeInfinity":return!0;case"Infinity":return!1}})(e))return"-"+D((e=>{switch(e.value._tag){case"Infinity":case"NegativeInfinity":return P;case"Millis":return e.value.millis<0?B(-e.value.millis):e;case"Nanos":return e.value.nanos<p?B(-e.value.nanos):e}})(e));let t=(e=>{if("Infinity"===e.value._tag)return{days:1/0,hours:1/0,minutes:1/0,seconds:1/0,millis:1/0,nanos:1/0};if("NegativeInfinity"===e.value._tag)return{days:-1/0,hours:-1/0,minutes:-1/0,seconds:-1/0,millis:-1/0,nanos:-1/0};let t=X(e),a=t<p,i=a?-t:t,s=i/y,l=s/v,o=l/m,r=o/m,n=a?-1:1;return{days:n*Number(r/f),hours:n*Number(r%f),minutes:n*Number(o%m),seconds:n*Number(l%m),millis:n*Number(s%v),nanos:n*Number(i%y)}})(e),a=[];return 0!==t.days&&a.push(`${t.days}d`),0!==t.hours&&a.push(`${t.hours}h`),0!==t.minutes&&a.push(`${t.minutes}m`),0!==t.seconds&&a.push(`${t.seconds}s`),0!==t.millis&&a.push(`${t.millis}ms`),0!==t.nanos&&a.push(`${t.nanos}ns`),a.join(" ")};a.d(t,{},{GP:D,MI:e=>"Infinity"!==e.value._tag&&"NegativeInfinity"!==e.value._tag,Tn:P,YA:F,bN:k,bi:G,cF:H,fP:e=>T(k(e),{onMillis:e=>e/1e3,onNanos:e=>Number(e)/1e9,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),kE:e=>T(k(e),{onMillis:s.D_,onNanos:e=>Number(e)/1e6,onInfinity:()=>1/0,onNegativeInfinity:()=>-1/0}),n$:S,ne:q,qv:V,v_:A})},2842(e,t,a){a.d(t,{Q56:()=>ex,jGc:()=>eb,U9h:()=>ek,Q7R:()=>k,hgn:()=>$,swY:()=>eY,Muk:()=>eA,as:()=>j,E2r:()=>P,MfU:()=>N,Tyx:()=>K,osR:()=>Q,KuX:()=>W,loE:()=>J,RKA:()=>eX,_32:()=>eP,F_Q:()=>E,_r7:()=>eG,yeE:()=>eM,NS5:()=>D,fJG:()=>q,ATB:()=>F,pVV:()=>I,qIB:()=>T,Ab9:()=>ej,fn:()=>eU,D9k:()=>eO,vCS:()=>eN,jJl:()=>M,i4r:()=>eS,ar0:()=>eH,x6Z:()=>eq,yUA:()=>X,JkU:()=>H,XeO:()=>el,GaK:()=>e_,yw5:()=>b,vVN:()=>e$,FFw:()=>eT,TjK:()=>Z,q7Y:()=>eZ,jkJ:()=>eR,xm_:()=>ee,Z9x:()=>eD,YWq:()=>ec,khu:()=>ep,tvg:()=>eh,ZmZ:()=>V,S5A:()=>eC,cfM:()=>ez,uKv:()=>R,QgK:()=>et,ivC:()=>z,Gte:()=>eg,PpN:()=>eu,PfK:()=>em,KT6:()=>ed,Ket:()=>G,L5P:()=>es,MY7:()=>eF,eJC:()=>eI,lKS:()=>eE,z8E:()=>ev,P1j:()=>ey,Pxi:()=>ew,Nav:()=>ef,yy4:()=>en,PyW:()=>L,DYE:()=>B,OH5:()=>S,Mim:()=>Y,dGm:()=>ei,sFT:()=>ea,wRz:()=>eo,mgX:()=>er,SvU:()=>O,$mh:()=>_,rfi:()=>eL,FcF:()=>eB,rIH:()=>A,iMI:()=>C,R6R:()=>U,fRP:()=>eV});var i=a(1594),s=a(2449),l=a(6297),o=(a(3614),a(1179));a(9315);var r=a(6771),n=a(5633);let d=(0,i.XY)(e=>(0,s.yw)(e[0]),(e,t,a)=>{let i;return o.aE(t)?l.PpN(e,t):(i=Array.isArray(t)?n.Um(...t):t,l.Pxi(t=>l.qIB(a?.local?n.H7(i,n.j6(),t):n.LT(i,t),t=>l.PpN(e,t))))});var c=a(1587),p=a(3753),h=a(6481);(e,t,a)=>l.qIB(r.xn(t),t=>{let i=r.d3.defaultValue();return l.h_t(l.i4r(l.Mim(l.qIB(l.DYE(()=>l.PfK(e,r.d3,i)),t),e=>l.OH5(()=>{i=e})),{disableYield:!0}),e=>s.$L(e)?l.PyW(e.value):a(e,0===i.attempt?c.none():c.some(i)))});let g=(0,i.XY)(3,(e,t,a)=>l.qIB(r.xn(t),t=>{let i,s=r.d3.defaultValue(),o=l.h_t(l.DYE(()=>l.PfK(e,r.d3,s)),e=>(i=e,l.qIB(t(e),e=>(s=e,o))));return p.m8(o,e=>(0,h.s)(()=>a(i,e)))})),u=(0,i.XY)(2,(e,t)=>g(e,"function"==typeof t?t(i.D_):r.GM(t)?t:m(t),l.fJG)),f=r.le(r.i4),m=e=>{let t=e.schedule?r.le(e.schedule):f;return e.while&&(t=r.E6(t,({input:t})=>{let a=e.while(t);return s.yw(a)?a:l.PyW(a)})),e.until&&(t=r.E6(t,({input:t})=>{let a=e.until(t);return s.yw(a)?l.TjK(a,e=>!e):l.PyW(!a)})),void 0!==e.times&&(t=r.E6(t,({attempt:t})=>l.PyW(t<=e.times))),t},v=r.t5(1);var y=a(2275);let w=a(3332).Xq({_E:e=>e,_A:e=>e,_R:e=>e});({...s.In,"~effect/Request":w}),a(3909);var x=a(4600);s.$n;let b=s.yw,k=l.Q7R;l.jBG,l.TSs,l.tfT,l.i8i,l.kAe;let M=l.jJl;l.d5f;let C=l.iMI,z=l.ivC,_=l.$mh,L=l.PyW;l.lwU,l.nGE;let B=l.DYE,S=l.OH5,A=l.rIH;l.Vxk;let P=l.E2r,V=l.ZmZ;l.Do,l.JrD,l.uVU,l.oIE;let H=l.JkU,q=l.fJG;l.gOk;let F=l.ATB,I=l.pVV,E=l.F_Q,O=l.SvU;l.m9E,l.KN3;let U=s.R6;s.Hq;let X=l.yUA;l.sVm,l.pkL,l.bJ;let T=l.qIB;l.Bqz;let $=l.hgn,Y=l.Mim,G=l.Ket,R=l.uKv,D=l.NS5,Z=l.TjK,j=l.as;l.Xx$,l.NLW,l.UUz,l.yU6,l.OYO;let N=l.h_t,W=l.KuX,J=l.loE;l.AXC,l.zt4,l.scW;let K=l.Tyx;l.Fig,l.XWm;let Q=l.osR;l.U9Y,l.sJf,l.rNk;let ee=l.xm_;l.UcN;let et=l.QgK,ea=l.sFT;l.k$L;let ei=l.dGm;l.cA6,l.bKC,l.nAi,l.u4Y;let es=u;l._Sg;let el=l.XeO;l.GrF,l.$$g,l.DM4,l.Dd;let eo=l.wRz;l.D52;let er=l.mgX;l.cbG;let en=l.yy4;l.ayu,l.Vdx,l.FfP,l.O4F;let ed=l.KT6;l.pbD,l.x1Q,l.E8K,l.Pm0,l.VtY,l.W$I,l.ahH,l.z7s;let ec=l.YWq;l.G$Q,l.D$$,l.NZb,l.wR5;let ep=l.khu,eh=l.tvg;l.N6O,l.oJd,l._OA,l.sxi;let eg=d,eu=l.PpN;l.oao,l.euC;let ef=l.Nav;l.r_d,l.bUZ,l.L_I;let em=l.PfK;l.c7E;let ev=l.z8E,ey=l.P1j,ew=l.Pxi,ex=l.Q56;l.N24;let eb=l.jGc,ek=l.U9h,eM=l.yeE,eC=l.S5A;l.BeE,l.iKM,l.r7h;let ez=l.cfM;l.fGe,l.uRq,l.PO3,l.Rgn,l.CJw;let e_=l.GaK;l.Inz,l.nAr;let eL=l.rfi,eB=l.FcF;l.eMl,l.dsN;let eS=l.i4r;l.aAq,l.Xrv,l.kJM,l._o1,l.nDN,l.MaT;let eA=l.Muk;l.ww9;let eP=l._32;l.Wj8,l.Fu6,l.WbR,l.A_r,l.Z98,l.Rd$,l.gvr;let eV=l.fRP;l.zr8,l.hq,l.zhn;let eH=l.ar0,eq=l.x6Z;l.yxg,l.PCg,l.pEE,l.ABT;let eF=l.MY7,eI=l.eJC;l.lSz,l.bPG,l.pR5,l.v2Q,l.NpQ,l.jqV,l.HZF,l.lE;let eE=l.lKS;l.rfH;let eO=l.D9k,eU=l.fn,eX=l.RKA;l.lIX;let eT=l.lIX("Warn"),e$=l.lIX("Error"),eY=(0,i.XY)(e=>b(e[0]),(e,...t)=>l.bUZ(e,x.iL,e=>{let a=1===t.length?{...e,...t[0]}:{...e};return 1===t.length||y.x(a,t[0],t[1]),a}));l.gsV;let eG=(e,t,a)=>(...i)=>P(s=>{try{e(...i,(e,a)=>{e?s(q(t?t(e,i):e)):s(L(a))})}catch(e){s(a?q(a(e,i)):E(e))}}),eR=l.jkJ,eD=l.Z9x,eZ=l.q7Y,ej=l.Ab9;l.UVN;let eN=l.vCS},3811(e,t,a){var i=a(2449);a.d(t,{},{bp:e=>(0,i.yj)({op:e.label,[i._3]:e.evaluate})})},3332(e,t,a){var i=a(5033),s=a(5844),l=a(4233);let o="~effect/Equal";function r(){return 1==arguments.length?e=>n(e,arguments[0]):n(arguments[0],arguments[1])}function n(e,t){if(e===t)return!0;if(null==e||null==t)return!1;let a=typeof e;return a===typeof t&&("number"===a&&e!=e&&t!=t||!("object"!==a&&"function"!==a||s.J3.has(e)||s.J3.has(t))&&function(e,t){let a=c.length;for(let i=a;i-- >0;)if(c[i]===e&&p[i]===t)return!0;if(a)return d(e,t);let i=h.get(e);i||h.set(e,i=new WeakMap);let s=i.get(t);return void 0===s&&i.set(t,s=d(e,t)),s}(e,t))}function d(e,t){c.push(e),p.push(t);try{return function(e,t){if(i.tW(e)!==i.tW(t))return!1;if(e instanceof Date){if(!(t instanceof Date))return!1;let a=e.getTime(),i=t.getTime();return a===i||Number.isNaN(a)&&Number.isNaN(i)}if(e instanceof RegExp)return t instanceof RegExp&&e.toString()===t.toString();let a=v(e);if(a!==v(t)||"function"==typeof e&&!a)return!1;if(a)return e[o](t);if(Array.isArray(e))return!!Array.isArray(t)&&e.length===t.length&&function(e,t){for(let a=0;a<e.length;a++)if(!n(e[a],t[a]))return!1;return!0}(e,t);if(ArrayBuffer.isView(e)){let a=e instanceof DataView;return!!ArrayBuffer.isView(t)&&e.byteLength===t.byteLength&&a===t instanceof DataView&&(a?g((0,s.j)(e),(0,s.j)(t)):g(e,t))}if(e instanceof Map)return t instanceof Map&&e.size===t.size&&u(e,t,f,m);else if(e instanceof Set)return t instanceof Set&&e.size===t.size&&u(e,t,i.tW,n);var l=e,r=t;let d=(0,s.Xp)(l),c=(0,s.Xp)(r);if(d.size!==c.size)return!1;for(let e of d)if(!c.has(e)||!n(l[e],r[e]))return!1;return!0}(e,t)}finally{c.pop(),p.pop()}}let c=[],p=[],h=new WeakMap;function g(e,t){if(e.length!==t.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==t[a])return!1;return!0}function u(e,t,a,i){let s=new Map;for(let e of t){let t=a(e),i=s.get(t);i?i.push(e):s.set(t,[e])}e:for(let t of e){let e=s.get(a(t));if(e){for(let a=0;a<e.length;a++)if(i(t,e[a])){e[a]=e[e.length-1],e.pop();continue e}}return!1}return!0}let f=e=>i.tW(e[0]),m=(e,t)=>n(e[0],t[0])&&n(e[1],t[1]),v=e=>(0,l.i5)(e,o);a.d(t,{aI:()=>r},{HR:o,Xq:e=>(s.J3.add(e),e),jI:()=>r})},7876(e,t,a){let i=e=>(t,a)=>t===a||e(t,a),s=(e,t)=>e===t,l=i((e,t)=>globalThis.Number.isNaN(e)&&globalThis.Number.isNaN(t));function o(e){return i((t,a)=>{if(t.length!==a.length)return!1;for(let i=0;i<t.length;i++)if(!e[i](t[i],a[i]))return!1;return!0})}function r(e){return i((t,a)=>{if(t.length!==a.length)return!1;for(let i=0;i<t.length;i++)if(!e(t[i],a[i]))return!1;return!0})}function n(e){let t=Reflect.ownKeys(e);return i((a,i)=>{for(let s of t)if(!e[s](a[s],i[s]))return!1;return!0})}a.d(t,{O3:()=>r,_k:()=>n,rd:()=>o},{L8:i,Qw:s,YZ:()=>s,wN:l})},6526(e,t,a){var i=a(2449),s=a(6297);i.IH,i.b9;let l=i.xt,o=i.cb,r=i.Rk;i.V2,s._sz;let n=s.x5l,d=s.CoE,c=s.VE1;s._mh,s.YDM,s.lNM,s.K$2,s.GUt,s.HIt,s.yJo,s._OD,s.jCT,s.Wtn,s.v9O,s.zPu,s.EkE,s.Hox,s.ely,s.kMI,s.Sv3,s.lgw,a.d(t,{},{AT:o,N6:c,Py:l,fJ:r,oJ:d,rI:n})},1958(e,t,a){var i=a(4233),s=a(1279);function l(e,t){let a=t?.space??0,l=new WeakSet,n=a?"number"==typeof a?" ".repeat(a):a:"",p=(e,t)=>{let a=e?.constructor;return a&&a!==Object.prototype.constructor&&a.name?`${a.name}(${t})`:t};return function e(a,h=0){try{return function(a,h=0){if("string"==typeof a)return JSON.stringify(a);if("number"==typeof a||null==a||"boolean"==typeof a||"symbol"==typeof a)return String(a);if("bigint"==typeof a)return String(a)+"n";if("object"==typeof a||"function"==typeof a){let g;if(l.has(a))return o;if(l.add(a),s.uC in a)g=e((0,s.f6)(a),h);else if(Array.isArray(a)){let t,i;g=!n||a.length<=1?`[${a.map(t=>e(t,h)).join(",")}]`:`[
|
|
226
226
|
${t=h+1,n.repeat(t)}${a.map(t=>e(t,h+1)).join(",\n"+(i=h+1,n.repeat(i)))}
|
|
227
227
|
${n.repeat(h)}]`}else if(a instanceof Date)g=d(a);else if(!t?.ignoreToString&&i.i5(a,"toString")&&"function"==typeof a.toString&&a.toString!==Object.prototype.toString&&a.toString!==Array.prototype.toString){let t=function(e){try{let t=e.toString();return"string"==typeof t?t:String(t)}catch{return"[toString threw]"}}(a);g=a instanceof Error&&void 0!==a.cause?`${t} (cause: ${e(a.cause,h)})`:t}else if(Symbol.iterator in a)g=`${a.constructor.name}(${e(Array.from(a),h)})`;else{let t=(e=>{try{return Reflect.ownKeys(e)}catch{return["[ownKeys threw]"]}})(a);if(!n||t.length<=1){let i=`{${t.map(t=>`${r(t)}:${e(c(a,t),h)}`).join(",")}}`;g=p(a,i)}else{let i=`{
|
|
228
228
|
${t.map(t=>{let i;return`${i=h+1,n.repeat(i)}${r(t)}: ${e(c(a,t),h+1)}`}).join(",\n")}
|
|
@@ -234,7 +234,7 @@ ${ev(e.cause," ")}
|
|
|
234
234
|
}`:e.stack,ev=(e,t)=>{let a=e.stack.split("\n"),i=`${t}[cause]: ${a[0]}`;for(let e=1,s=a.length;e<s;e++)i+=`
|
|
235
235
|
${t}${a[e]}`;return e.cause&&(i+=` {
|
|
236
236
|
${ev(e.cause,`${t} `)}
|
|
237
|
-
${t}}`),i},ey="~effect/Fiber",ew={_A:v.D_,_E:v.D_},ex={id:0},eb=(()=>{try{return globalThis.process?.getBuiltinModule?.("node:async_hooks")?.AsyncResource}catch{return}})(),ek=()=>void 0===eb?void 0:new eb("effect/Fiber"),eM=()=>globalThis[B.fL];class eC{constructor(e,t=!0){this.setContext(e),this.id=++ex.id,this.currentOpCount=0,this.interruptible=t,this._stack=[],this._observers=void 0,this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this._parent=void 0,this._asyncContext=void 0,this.cache.runtimeMetrics?.recordFiberStart(this.context)}get[ey](){return ew}get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return u.Jt(this.context,e)}addObserver(e){return this._exit?(e(this._exit),v.Yi):(void 0===this._observers?this._observers=[e]:this._observers.push(e),()=>this.removeObserver(e))}removeObserver(e){if(this._exit||void 0===this._observers)return;let t=this._observers.indexOf(e);t>=0&&this._observers.splice(t,1)}interruptUnsafe(e,t){if(this._exit)return;let a=Y(e);this.cache.stackFrame&&(a=(0,V.Eh)(a,u.L8(V.z8,this.cache.stackFrame))),t&&(a=(0,V.Eh)(a,t)),this._interruptedCause=this._interruptedCause?(0,V.h2)(this._interruptedCause,a):a,this.interruptible&&(this._running?this._deferredInterrupt=!0:this.evaluate(eX(this._interruptedCause)))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;if(void 0!==this._asyncContext){let t=this._asyncContext;return this._asyncContext=void 0,t.runInAsyncScope(this.evaluate,this,e)}if(void 0!==this._yielded){let e=this._yielded;this._yielded=void 0,e()}let t=this.runLoop(e);if(t===V.GN){this._asyncContext=ek();return}let a=eB.interruptChildren&&eB.interruptChildren(this);if(void 0!==a)return this.evaluate(tV(a,()=>t));if(this._exit=t,this.cache.runtimeMetrics?.recordFiberEnd(this.context,this._exit),this._parent&&(this._parent._children?.delete(this),this._parent=void 0),void 0!==this._observers){let e=this._observers;this._observers=void 0;for(let a=0;a<e.length;a++)e[a](t)}this._stack.length=0,this._children=void 0,this.context=u.Ie()}runLoop(e){let t=globalThis[B.fL];globalThis[B.fL]=this;let a=this._running;this._running=!0;let i=!1,s=e;this.currentOpCount=0;try{for(;;){this._deferredInterrupt&&(this._deferredInterrupt=!1,s=eX(this._interruptedCause)),this.currentOpCount++;let e=this.cache;if(!i&&!e.preventYield&&e.scheduler.shouldYield(this)){i=!0;let e=s;s=tV(ej,()=>e)}if((s=e.tracerContext?e.tracerContext(s,this):s[V._3](this))===V.GN){let e=this._yielded;if(V.IH in e)return this._deferredInterrupt=!1,this._yielded=void 0,e;if(this._deferredInterrupt){this._yielded=void 0,e();continue}return V.GN}}}catch(e){if(!(0,w.i5)(s,V._3))return(0,V.V2)(`Fiber.runLoop: Not a valid effect: ${String(s)}`);return this.runLoop((0,V.V2)(e))}finally{this._running=a,globalThis[B.fL]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,e_;for(;;){let t=this._stack.pop();if(!t)return;let a=t[V.u4];if(void 0!==a){let i=a.call(t,this);if(i)return i[e]=i,i}if(t[e])return t}}succeedWith(e){if((++this.currentOpCount&eL-1)==0)return(0,V.xt)(e);let t=this.getCont(V.ee);return t?t[V.ee](e,this):this.yieldWith((0,V.xt)(e))}yieldWith(e){return this._yielded=e,V.GN}children(){return this._children??=new Set}pipe(){return(0,L.tT)(this,arguments)}setContext(e){let t=this.context;if(this.context=e,void 0!==t&&u.Pf(t,e))return;let a=e.cacheRoot,i=a._fiberCache??=ez(e);this.cache?.scheduler!==i.scheduler&&(this._dispatcher=void 0),this.cache=i}get currentSpanLocal(){let e=this.cache.span;return e?._tag==="Span"?e:void 0}}let ez=e=>{let t=u.Ub(e,A.RL);return{scheduler:u.Jt(e,S._F),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:u.Jt(e,I.rf),span:u.Ub(e,A.WG),logLevel:u.Jt(e,I.Gl),minimumLogLevel:u.Jt(e,I.zQ),stackFrame:u.Jt(e,I.vA),runtimeMetrics:u.Ub(e,q.F),maxOpsBeforeYield:u.Jt(e,S.Zm),preventYield:u.Jt(e,S.hf)}},e_={[V.ee]:(e,t)=>eX(t._interruptedCause),[V.Sc]:(e,t)=>eX(t._interruptedCause)},eL=32,eB={interruptChildren:void 0},eS=e=>{if(!e.cache.stackFrame)return;let t=new Map;return t.set(V.QJ.key,e.cache.stackFrame),u.LZ(t)},eA=e=>{if(void 0!==e._children&&0!==e._children.size)return eE(e._children)},eP=e=>e._exit?eU(e._exit):te(t=>e._exit?t(eU(e._exit)):e$(e.addObserver(e=>t(eU(e))))),eV=e=>te(t=>{let a,i=e[Symbol.iterator](),s=[];return!function e(){let l=i.next();for(;!l.done;){if(l.value._exit){s.push(l.value._exit),l=i.next();continue}a=l.value.addObserver(t=>{s.push(t),e()});return}t(eU(s))}(),e$(()=>a?.())}),eH=e=>e._exit?e._exit:te(t=>e._exit?t(e._exit):e$(e.addObserver(t))),eq=e=>te(t=>{let a=Array.from(e);if(0===a.length)return t(eU(g.Ie()));let i=Array(a.length),s=g.Ie(),l=()=>{for(let e=0;e<s.length;e++)a[e].removeObserver(s[e])},o=0,r=!1;for(let e=0;e<a.length&&!r;e++){let n=s=>{if(o++,"Failure"===s._tag)return r=!0,l(),t(s);i[e]=s.value,o===a.length&&t(eU(i))};s.push(n),a[e].addObserver(n)}return e$(()=>{r=!0,l()})}),eF=e=>(0,V.R6)(t=>eI(e,t.id)),eI=(0,v.XY)(e=>(0,w.i5)(e[0],ey),(e,t,a)=>(0,V.R6)(i=>{let s=eS(i);return s=s&&a?u.h1(s,a):s??a,e.interruptUnsafe(t,s),t_(eP(e))})),eE=e=>(0,V.R6)(t=>{let a=eS(t),i=g.Ie();for(let s of e)s.interruptUnsafe(t.id,a),i.push(s);return t_(eV(i))}),eO=(0,v.XY)(2,(e,t)=>(0,V.R6)(a=>{let i=eS(a),s=g.Ie();for(let a of e)a.interruptUnsafe(t,i),s.push(a);return t_(eV(s))})),eU=V.xt,eX=V.cb,eT=V.Rk,e$=(0,V.Uf)({op:"Sync",[V._3](e){let t=this[V.a2](),a=e.getCont(V.ee);return a?a[V.ee](t,e):e.yieldWith((0,V.xt)(t))}}),eY=(0,V.Uf)({op:"Suspend",[V._3](e){return this[V.a2]()}}),eG=(0,v.XY)(e=>e.length>=2||y.isOption(e[0]),(e,t)=>y.isNone(e)?eT(t?t():new V.Xm("Effect.fromOption: Option.none")):eU(e.value)),eR=x.YW({onFailure:eT,onSuccess:eU}),eD=e=>null==e?eT(new V.Xm):eU(e),eZ=(0,V.Uf)({op:"Yield",[V._3](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{t||e.evaluate(t1)},this[V.a2]??0),e.yieldWith(()=>{t=!0})}}),ej=eZ(0),eN=e=>eU(y.some(e)),eW=eU(y.none()),eJ=e=>y.isNone(e)?eW:tE(e.value,y.some),eK=e=>eY(()=>eX(e())),eQ=e=>(0,V.V2)(e),e1=e=>eY(()=>eT(e())),e0=eU(void 0),e2=e=>{let t="function"==typeof e?e:e.try,a="function"==typeof e?e=>new lI(e,"An error occurred in Effect.try"):e.catch;return eY(()=>{try{return eU(t())}catch(e){return eT(a(e))}})},e3=e=>e8(function(t,a){e(a).then(e=>t(eU(e)),e=>t(eQ(e)))},0!==e.length),e5=e=>{let t="function"==typeof e?e:e.try,a="function"==typeof e?e=>new lI(e,"An error occurred in Effect.tryPromise"):e.catch;return e8(function(e,i){let s=e=>eY(()=>{try{return eT((0,P.s)(()=>a(e)))}catch(e){return eQ(e)}});try{t(i).then(t=>e(eU(t)),t=>e(s(t)))}catch(t){e(s(t))}},0!==t.length)},e4=e=>(0,V.R6)(t=>e(t.id)),e6=(0,V.R6)(eU),e7=e4(eU),e8=(i=(0,V.yj)({op:"Async",[V._3](e){let t=!1,a=!1,i=this.withSignal?new AbortController:void 0,s=this.register.call(e.cache.scheduler,i=>{t||(t=!0,a?e.evaluate(i):a=i)},i?.signal);return!1!==a?a:(a=!0,e._yielded=()=>{t=!0},void 0===i&&void 0===s||e._stack.push(e9(()=>(t=!0,i?.abort(),s??t1))),V.GN)}}),(s=function(e,t){this.register=e,this.withSignal=t}).prototype=i,function(e,t){return new s(e,t)}),e9=(0,V.Uf)({op:"AsyncFinalizer",[V.u4](e){e.interruptible&&(e.interruptible=!1,e._stack.push(i5))},[V.Sc](e,t){return J(e)?tV(iy((0,V.cb)(e),this[V.a2]()),()=>eX(e)):eX(e)}}),te=e=>e8(e,e.length>=2),tt=te(v.Yi),ta=(...e)=>{if(1===e.length){let t=e[0];return eY(()=>tc(t()))}let[t,a]=e;return eY(()=>tc(a.call(t.self)))},ti=(e,...t)=>{let a=0===t.length?function(){return eY(()=>tc(e.apply(this,arguments)))}:function(){let a=eY(()=>tc(e.apply(this,arguments)));for(let e=0;e<t.length;e++)a=t[e](a,...arguments);return a};return ts(e.length,a)},ts=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),tl=U(2),to=function(){let e,t="string"==typeof arguments[0],a=t?arguments[0]:"Effect.fn",i=t?arguments[1]:void 0,s=(0,E.jt)();return(0!==s&&((0,E.ft)(2),e=new globalThis.Error,(0,E.ft)(s)),t)?(s,...l)=>tr(a,s,e,l,t,i):tr(a,arguments[0],e,Array.prototype.slice.call(arguments,1),t,i)},tr=(e,t,a,i,s,l)=>{let o="function"==typeof t?t:i.shift().bind(t.self),r=`${e} (definition)`,n=a?tl(()=>a.stack):v.MN;return ts(o.length,function(...t){let a,d=eY(()=>{let e=o.apply(this,arguments);return(0,V.yw)(e)?e:tc(e)});for(let e=0;e<i.length;e++)d=i[e](d,...t);if(!(0,V.yw)(d))return d;let c=(0,E.jt)();return 0!==c&&((0,E.ft)(2),a=new globalThis.Error,(0,E.ft)(c)),al(s?ls(e,l,e=>ll(d,e)):d,I.vA,t=>({name:e,stack:a?tl(()=>a.stack):v.MN,parent:{name:r,stack:n,parent:t}}))})},tn=(e,...t)=>ts(e.length,0===t.length?function(){return td(()=>e.apply(this,arguments))}:function(){let a=td(()=>e.apply(this,arguments));for(let e of t)a=e(a,...arguments);return a}),td=e=>{try{let t,a=e();for(;;){let i=a.next(t);if(i.done)return eU(i.value);let s=i.value;if(s&&"Success"===s._tag){t=s.value;continue}{if(s&&"Failure"===s._tag)return i.value;let t=!0;return eY(()=>t?(t=!1,tV(i.value,e=>tc(a,e))):eY(()=>tc(e())))}}}catch(e){return eQ(e)}},tc=(l=(0,V.yj)({op:"Iterator",[V.ee](e,t){let a=this.iterator;for(;;){let i=a.next(e);if(i.done)return eU(i.value);if(!tq(i.value))return t._stack.push(this),i.value;if("Failure"===i.value._tag)return i.value;e=i.value.value}},[V._3](e){return this[V.ee](this.initial,e)}}),(o=function(e,t){this.iterator=e,this.initial=t}).prototype=l,function(e,t){return new o(e,t)}),tp=(0,v.XY)(2,(e,t)=>new tu(e,tf,eU(t))),th=function(e){return e._stack.push(this),this[V.a2]},tg=(0,V.yj)({op:"OnSuccess",[V._3]:th}),tu=function(e,t,a){this[V.a2]=e,this[V.ee]=t,this.payload=a};tu.prototype=tg;let tf=function(){return this.payload},tm=function(e,t){return t.succeedWith(this.payload)},tv=(r="~effect/Effect/stackProbe",({[r]:function(){return Error().stack}})[r]()?.includes("[as "+r+"]")===!0),ty=function(e,t){let a=this.payload;return t.succeedWith(tv?a(e):(0,P.s)(()=>a(e)))},tw=function(e){return(0,this.payload)(e)},tx=function(e){return new tu((0,this.payload)(e),tm,e)},tb=function(e){return new tu(this.payload,tm,e)},tk=e=>tE(e,y.some),tM=e=>a7(e,{onFailure:eU,onSuccess:eT}),tC=(0,v.XY)(2,(e,t)=>new tu(e,(0,V.yw)(t)?tf:tw,t)),tz=(0,v.XY)(2,(e,t)=>new tu(e,(0,V.yw)(t)?tb:tx,t)),t_=e=>new tu(e,tf,t1),tL=e=>ak(e,eT),tB=(e,t)=>(0,V.R6)(a=>{let i=new Set;return iU(a,()=>0===i.size?void 0:eE(i)),te(s=>{let l=g.Ts(e),o=l.length,r=0,n=!1,d=[],c=(e,i,l)=>{if(r++,"Failure"===e._tag){d.push(...e.cause.reasons),r>=o&&s(eX((0,V.b5)(d)));return}let c=!n;n=!0,s(e),c&&t?.onWinner&&t.onWinner({fiber:i,index:l,parentFiber:a})};for(let e=0;e<o;e++){let t=sA(a,l[e],!0,!0,!1);if(i.add(t),t.addObserver(a=>{i.delete(t),c(a,t,e)}),n)break}})}),tS=(e,t)=>(0,V.R6)(a=>{let i=new Set;return iU(a,()=>0===i.size?void 0:eE(i)),te(s=>{let l=!1,o=0;for(let r of e){if(l)break;let e=o++,n=sA(a,r,!0,!0,!1);i.add(n),n.addObserver(o=>{i.delete(n);let r=!l;l=!0,s(o),r&&t?.onWinner&&t.onWinner({fiber:n,index:e,parentFiber:a})})}})}),tA=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>tB([e,t],a)),tP=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>tS([e,t],a)),tV=(0,v.XY)(2,(e,t)=>new tu(e,tw,t)),tH=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?t.onSuccess(e.value):t.onFailure(e.cause):aQ(e,t)),tq=e=>void 0!==e[V.IH],tF=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?t(e.value):e:tV(e,t)),tI=e=>tV(e,v.D_),tE=(0,v.XY)(2,(e,t)=>new tu(e,ty,t)),tO=(0,v.XY)(2,(e,t)=>tq(e)?t0(e,t):tE(e,t)),tU=(0,v.XY)(2,(e,t)=>tq(e)?t2(e,t):aY(e,t)),tX=(0,v.XY)(2,(e,t)=>tq(e)?t3(e,t):aG(e,t)),tT=(0,v.XY)(2,(e,t)=>{if(tq(e)){if("Success"===e._tag)return e;let a=D(e.cause);return x.N6(a)?e:t(a.success)}return aL(e,t)}),t$=e=>(0,V.cb)(Y(e)),tY=e=>"Success"===e._tag,tG=e=>"Success"===e._tag?x.Py(e):x.fJ(e),tR=e=>"Success"===e._tag?x.Py(e.value):x.fJ(e),tD=e=>"Failure"===e._tag,tZ=e=>"Failure"===e._tag?x.Py(e):x.fJ(e),tj=e=>"Failure"===e._tag?x.Py(e.cause):x.fJ(e),tN=b(tj,D),tW=b(tj,W),tJ=e=>"Failure"===e._tag&&J(e.cause),tK=e=>"Failure"===e._tag&&j(e.cause),tQ=e=>"Failure"===e._tag&&G(e.cause),t1=(0,V.xt)(void 0),t0=(0,v.XY)(2,(e,t)=>"Success"===e._tag?(0,V.xt)(t(e.value)):e),t2=(0,v.XY)(2,(e,t)=>{if("Success"===e._tag)return e;let a=D(e.cause);return x.N6(a)?e:(0,V.Rk)(t(a.success))}),t3=(0,v.XY)(2,(e,t)=>{if("Success"===e._tag)return(0,V.xt)(t.onSuccess(e.value));let a=D(e.cause);return x.N6(a)?e:(0,V.Rk)(t.onFailure(a.success))}),t5=(0,v.XY)(2,(e,t)=>tY(e)?(0,V.xt)(t):e),t4=(0,v.XY)(2,(e,t)=>tY(e)?t:e),t6=(0,v.XY)(2,(e,t)=>tY(e)?t.onSuccess(e.value):t.onFailure(e.cause)),t7=t5(void 0),t8=e=>{let t=[];for(let a of e)"Failure"===a._tag&&t.push(...a.cause.reasons);return 0===t.length?t1:(0,V.cb)((0,V.b5)(t))},t9=e=>tY(e)?y.some(e.value):y.none(),ae=e=>tD(e)?y.some(e.cause):y.none(),at=e=>{let t=tN(e);return x.N6(t)?y.none():y.some(t.success)},aa=e=>e,ai=e=>(0,V.R6)(t=>eU(u.om(t.context,e))),as=(0,v.XY)(2,(e,t)=>(0,V.R6)(a=>{let i=a.context,s=t(i);return i===s||(a.setContext(s),iU(a,()=>{a.setContext(i)})),e})),al=(0,v.XY)(3,(e,t,a)=>as(e,e=>{let i=u.fp(e,t),s=a(i);return i===s?e:u.WQ(e,t,s)})),ao=(e,t,a)=>i2((0,V.R6)(i=>{let s=u.fp(i.context,e),l=t(s);return i.setContext(u.WQ(i.context,e,l)),ik(u.fp(i.context,ig),t=>{let o,r=u.om(i.context,e);if(y.isNone(r))return e0;let n=r.value;if(a?.reset===void 0){if(n!==l)return e0;o=s}else o=a.reset(s,l,n);return i.setContext(u.WQ(i.context,e,o)),e0})})),ar=()=>an,an=(0,V.R6)(e=>eU(e.context)),ad=e=>(0,V.R6)(t=>e(t.context)),ac=(0,v.XY)(2,(e,t)=>as(e,(0,v.dY)(t))),ap=(0,v.XY)(2,(e,t)=>tq(e)?e:as(e,u.h1(t))),ah=function(){return 1==arguments.length?(0,v.XY)(2,(e,t)=>ag(e,arguments[0],t)):(0,v.XY)(3,(e,t,a)=>ag(e,t,a)).apply(this,arguments)},ag=(e,t,a)=>as(e,u.WQ(t,a)),au=(0,v.XY)(3,(e,t,a)=>tV(a,a=>ah(e,t,a))),af=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>am(e,t,(e,t)=>[e,t],a)),am=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a,i)=>i?.concurrent?tE(sa([e,t],{concurrency:2}),([e,t])=>a(e,t)):tV(e,e=>tE(t,t=>a(e,t)))),av=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sw(e,t,a?e=>eT(a(e)):()=>eT(new V.Xm))),ay=(0,v.XY)(2,(e,t)=>tV(t,t=>t?tk(e):eW)),aw=(0,v.XY)(2,(e,t)=>Array.from({length:t},()=>e)),ax=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sa(aw(e,t),a)),ab=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>sc({while:v.ue,body:(0,v.dY)(t?.disableYield?e:tV(e,e=>ej)),step:v.Yi})),ak=(0,v.XY)(2,(e,t)=>new aC(e,1!==t.length?e=>t(e):t)),aM=(0,V.yj)({op:"OnFailure",[V._3]:th}),aC=function(e,t){this[V.a2]=e,this[V.Sc]=t};aC.prototype=aM;let az=(0,v.XY)(3,(e,t,a)=>ak(e,e=>t(e)?a(e):eX(e))),a_=(0,v.XY)(3,(e,t,a)=>ak(e,e=>{let i=t(e);return x.N6(i)?eX(i.failure):a(i.success,e)})),aL=(0,v.XY)(2,(e,t)=>a_(e,D,e=>t(e))),aB=e=>a7(e,{onFailure:e=>(0,V.PW)(e)?eW:eT(e),onSuccess:eN}),aS=(0,v.XY)(2,(e,t)=>a_(e,W,t)),aA=(0,v.XY)(2,(e,t)=>ak(e,e=>tC(t(e),eX(e)))),aP=(0,v.XY)(3,(e,t,a)=>az(e,t,e=>tC(a(e),eX(e)))),aV=(0,v.XY)(3,(e,t,a)=>ak(e,e=>{let i=t(e);return x.N6(i)?eX(e):tC(a(i.success,e),eX(e))})),aH=(0,v.XY)(2,(e,t)=>aV(e,D,e=>t(e))),aq=(0,v.XY)(3,(e,t,a)=>{let i=Array.isArray(t)?e=>(0,w.i5)(e,"_tag")&&t.includes(e._tag):(0,w.$J)(t);return aH(e,e=>i(e)?a(e):e0)}),aF=(0,v.XY)(2,(e,t)=>aV(e,W,e=>t(e))),aI=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>ak(e,e=>{let s=D(e);return x.N6(s)?eX(s.failure):t(s.success)?a(s.success):i?i(s.success):eX(e)})),aE=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>ak(e,e=>{let s=D(e);if(x.N6(s))return eX(s.failure);let l=t(s.success);return x.N6(l)?i?i(l.failure):eX(e):a(l.success)})),aO=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>aI(e,Array.isArray(t)?e=>(0,w.i5)(e,"_tag")&&t.includes(e._tag):(0,w.$J)(t),a,i)),aU=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>{let i;return aE(e,e=>(i??=Object.keys(t),(0,w.i5)(e,"_tag")&&(0,w.Kg)(e._tag)&&i.includes(e._tag)?x.Py(e):x.fJ(e)),e=>t[e._tag](e),a)}),aX=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i,s)=>aI(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")&&(void 0!==s||(0,w.$J)(e.reason,a)),e=>{let t=e.reason;return(0,w.$J)(t,a)?i(t,e):s?s(t,e):eT(e)})),aT=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>{let s;return aI(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")&&(0,w.i5)(e.reason,"_tag")&&(0,w.Kg)(e.reason._tag)&&(void 0!==i||(s??=Object.keys(a)).includes(e.reason._tag)),e=>{let t=e.reason;return(s??=Object.keys(a)).includes(t._tag)?a[t._tag](t,e):i?i(t,e):eT(e)})}),a$=(0,v.XY)(2,(e,t)=>aE(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")?x.Py(e.reason):x.fJ(e),eT)),aY=(0,v.XY)(2,(e,t)=>aL(e,e=>e1(()=>t(e)))),aG=(0,v.XY)(2,(e,t)=>a7(e,{onFailure:e=>e1(()=>t.onFailure(e)),onSuccess:e=>e$(()=>t.onSuccess(e))})),aR=e=>aL(e,eQ),aD=(0,v.XY)(2,(e,t)=>aL(e,e=>e$(()=>t(e)))),aZ=e=>eY(()=>{let t=e[Symbol.iterator](),a=t.next();return a.done?eQ(Error("Received an empty collection of effects")):function e(a){let i=t.next();return i.done?a.value:aL(a.value,t=>e(i))}(a)}),aj=e=>aL(e,t=>tV(ej,()=>aj(e))),aN=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>{if(!t?.log)return a7(e,{onFailure:e=>e0,onSuccess:e=>e0});let a=lD(!0===t.log?void 0:t.log);return aQ(e,{onFailure(e){let i=R(e);return x.N6(i)?eX(i.failure):void 0===t.message?a(e):a(t.message,e)},onSuccess:e=>e0})}),aW=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>{if(!t?.log)return aQ(e,{onFailure:e=>e0,onSuccess:e=>e0});let a=lD(!0===t.log?void 0:t.log);return aQ(e,{onFailure:e=>void 0===t.message?a(e):a(t.message,e),onSuccess:e=>e0})}),aJ=e=>a8(e,{onFailure:y.none,onSuccess:y.some}),aK=e=>a9(e,{onFailure:x.fJ,onSuccess:x.Py}),aQ=(0,v.XY)(2,(e,t)=>new a0(e,1!==t.onSuccess.length?e=>t.onSuccess(e):t.onSuccess,1!==t.onFailure.length?e=>t.onFailure(e):t.onFailure)),a1=(0,V.yj)({op:"OnSuccessAndFailure",[V._3]:th}),a0=function(e,t,a){this[V.a2]=e,this[V.ee]=t,this[V.Sc]=a};a0.prototype=a1;let a2=function(e,t){let a=this.payload;return t.succeedWith(tv?a.onSuccess(e):(0,P.s)(()=>a.onSuccess(e)))},a3=(e,t)=>{let a=(0,V.yj)({op:e,[V._3]:th,[V.ee]:a2,[V.Sc]:t}),i=function(e,t){this[V.a2]=e,this.payload=t};return i.prototype=a,i},a5=a3("Match",function(e,t){let a=e.reasons.find(V.lC);if(void 0===a)return eX(e);let i=this.payload;return t.succeedWith(tv?i.onFailure(a.error):(0,P.s)(()=>i.onFailure(a.error)))}),a4=a3("MatchCause",function(e,t){let a=this.payload;return t.succeedWith(tv?a.onFailure(e):(0,P.s)(()=>a.onFailure(e)))}),a6=(0,v.XY)(2,(e,t)=>new a4(e,t)),a7=(0,v.XY)(2,(e,t)=>aQ(e,{onFailure:e=>{let a=e.reasons.find(V.lC);return a?t.onFailure(a.error):eX(e)},onSuccess:t.onSuccess})),a8=(0,v.XY)(2,(e,t)=>new a5(e,t)),a9=(0,v.XY)(2,(e,t)=>{if(tq(e)){if("Success"===e._tag)return(0,V.xt)(t.onSuccess(e.value));let a=D(e.cause);return x.N6(a)?e:(0,V.xt)(t.onFailure(a.success))}return a8(e,t)}),ie=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?(0,V.xt)(t.onSuccess(e.value)):(0,V.xt)(t.onFailure(e.cause)):a6(e,t)),it=e=>tq(e)?(0,V.xt)(e):ia(e),ia=(0,V.Uf)({op:"Exit",[V._3](e){return e._stack.push(this),this[V.a2]},[V.ee]:(e,t,a)=>t.succeedWith(a??(0,V.xt)(e)),[V.Sc]:(e,t,a)=>t.succeedWith(a??(0,V.cb)(e))}),ii=a9({onFailure:()=>!0,onSuccess:()=>!1}),is=a9({onFailure:()=>!1,onSuccess:()=>!0}),il=(0,v.XY)(2,(e,t)=>tC(ly(t),e)),io=(0,v.XY)(2,(e,t)=>tV(id(e,t.duration),e=>y.isNone(e)?t.orElse():eU(e.value))),ir=(0,v.XY)(2,(e,t)=>{let a=f.bN(t);return io(e,{duration:a,orElse:()=>eT(new lC(`Operation timed out after '${f.GP(a)}'`))})}),id=(0,v.XY)(2,(e,t)=>tP(tk(e),tp(ly(t),y.none()))),ic=e=>lv(t=>{let a=t.monotonicTimeNanosUnsafe();return tE(e,e=>[f.cF(t.monotonicTimeNanosUnsafe()-a),e])}),ip="~effect/Scope",ih="~effect/Scope/Closeable",ig=u.kl("effect/Scope"),iu=(e,t)=>(0,V.R6)(a=>{let i=im(e,t);return void 0===i?e0:(i7(a),i)}),im=(e,t)=>{let a=e.state;if("Closed"===a._tag||(e.state={_tag:"Closed",exit:t},void 0!==e.parent&&iz(e.parent,e),"Empty"===a._tag))return;if(void 0!==a.finalizer)return iv(a.finalizer,t);let i=a.finalizers;return 1===i.size?iv(i.values().next().value,t):iw(e,i,t)},iv=(e,t)=>{try{return e(t)}catch(e){return(0,V.V2)(e)}},iy=(e,t)=>tY(e)?t:ak(t,t=>eX((0,V.h2)(e.cause,t))),iw=ti(function*(e,t,a){let i=[],s=[],l=Array.from(t.values()),o=eM();for(let t=l.length-1;t>=0;t--){let r=l[t];"sequential"===e.strategy?i.push((yield*it(iv(r,a)))):s.push(sA(o,iv(r,a),!0,!0,"inherit"))}return s.length>0&&(i=yield*eV(s)),yield*t8(i)}),ix=(e,t)=>e$(()=>ib(e,t)),ib=(e,t)=>{let a=iL(t,e);return"Closed"===e.state._tag?a.state=e.state:iC(e,a,e=>iu(a,e)),a},ik=(e,t)=>eY(()=>"Closed"===e.state._tag?t(e.state.exit):(iC(e,{},t),e0)),iM=(e,t)=>ik(e,(0,v.dY)(t)),iC=(e,t,a)=>{if("Empty"===e.state._tag)e.state={_tag:"Open",finalizerKey:t,finalizer:a,finalizers:void 0};else if("Open"===e.state._tag){let i=e.state;void 0!==i.finalizer&&(i.finalizers=new Map([[i.finalizerKey,i.finalizer]]),i.finalizerKey=void 0,i.finalizer=void 0),i.finalizers.set(t,a)}},iz=(e,t)=>{if("Open"!==e.state._tag)return;let a=e.state;a.finalizerKey===t?e.state=iB:void 0!==a.finalizers&&(a.finalizers.delete(t),0===a.finalizers.size&&(e.state=iB))},i_=e=>iL(e,void 0),iL=(e="sequential",t)=>({[ih]:ih,[ip]:ip,strategy:e,parent:t,state:iB}),iB={_tag:"Empty"},iS=e=>e$(()=>i_(e)),iA=ig,iP=ah(ig),iV=e=>(0,V.R6)(t=>{let a=t.context,i=i_();return t.setContext(u.WQ(t.context,ig,i)),iU(t,e=>(t.setContext(a),im(i,e))),e}),iH=(0,v.XY)(2,(e,t)=>iX(iP(e,t),e=>eY(()=>im(t,e)??e0))),iq=e=>eY(()=>{let t=i_();return iX(e(t),e=>eY(()=>im(t,e)??e0))}),iF=(e,t,a)=>ad(i=>i9(s=>tV(iA,l=>tz(a?.interruptible?s(e):e,e=>ik(l,a=>ap(t(e,a),i)))))),iI=e=>tV(iA,t=>ad(a=>ik(t,t=>ap(e(t),a)))),iE=(n=(0,V.yj)({op:"OnExit",[V._3](e){return e._stack.push(this),this.effect},[V.u4](e){e.interruptible&&!0!==this.interruptible&&(e._stack.push(i5),e.interruptible=!1)},[V.ee](e,t,a){let i;a??=(0,V.xt)(e);try{i=this.onExit(a)}catch(e){i=(0,V.V2)(e)}return i?tV(i,e=>a):a},[V.Sc](e,t,a){let i;a??=(0,V.cb)(e);try{i=this.onExit(a)}catch(e){i=(0,V.V2)(e)}return i?tV(iy(a,i),e=>a):a}}),(d=function(e,t,a){this.effect=e,this.onExit=t,this.interruptible=a}).prototype=n,d),iO=(e,t,a)=>new iE(e,t,a),iU=(e,t)=>{e._stack.push(new iE(void 0,t,void 0))},iX=(0,v.XY)(2,iO),iT=(0,v.XY)(2,(e,t)=>iX(e,e=>t)),i$=(0,v.XY)(3,(e,t,a)=>iX(e,e=>t(e)?a(e):e0)),iY=(0,v.XY)(3,(e,t,a)=>iX(e,e=>{let i=t(e);return x.N6(i)?e0:a(i.success,e)})),iG=(0,v.XY)(2,(e,t)=>iY(e,tj,t)),iR=(0,v.XY)(3,(e,t,a)=>i$(e,e=>"Failure"===e._tag&&t(e.cause),e=>a(e.cause))),iD=(0,v.XY)(3,(e,t,a)=>iX(e,e=>{if("Failure"!==e._tag)return e0;let i=t(e.cause);return x.N6(i)?e0:a(i.success,e.cause)})),iZ=(0,v.XY)(2,(e,t)=>iD(Q,t)(e)),ij=(e,t,a)=>i9(i=>tV(e,e=>iO(eY(()=>i(t(e))),t=>a(e,t),!0))),iN=e=>iF(e,e=>(0,w.i5)(e,Symbol.asyncDispose)?e3(()=>e[Symbol.asyncDispose]()):e$(()=>e[Symbol.dispose]())),iW=(0,v.XY)(2,(e,t)=>e$(()=>iK(e,"function"==typeof t?e=>f.kE(f.bN(t(e))):(0,v.dY)(f.kE(f.bN(t)))))),iJ=(0,v.dY)(1/0),iK=(e,t)=>{let a,i,s=0,l=(e,t)=>(t.awaiters++,iU(e,()=>{if(!(--t.awaiters>0)&&i===t)return i=void 0,eF(t.fiber)}),eH(t.fiber));return[(0,V.R6)(o=>{if(void 0!==i)return l(o,i);if(void 0!==a&&(1/0===s||o.getRef(lh).currentTimeMillisUnsafe()<s))return a;a=void 0;let r=o.getRef(lh),n={fiber:void 0,awaiters:0};return i=n,n.fiber=sA(o,iO(e,e=>{if(i!==n||(i=void 0,tJ(e)))return;let l=t(e);s=1/0===l?1/0:r.currentTimeMillisUnsafe()+l,a=e}),!0,!0),n.fiber._exit??l(o,n)}),e$(()=>{a=void 0})]},iQ=(0,v.XY)(2,(e,t)=>tE(iW(e,t),e=>e[0])),i1=e=>e$(()=>iK(e,iJ)[0]),i0=(0,V.R6)(e=>eX(Y(e.id))),i2=e=>(0,V.R6)(t=>(t.interruptible&&(t.interruptible=!1,t._stack.push(i5)),e)),i3=(0,V.Uf)({op:"SetInterruptible",[V.u4](e){if(e.interruptible=this[V.a2],e._interruptedCause&&e.interruptible)return()=>eX(e._interruptedCause)}}),i5=i3(!0),i4=i3(!1),i6=e=>{if(e.interruptible=!0,e._stack.push(i4),e._interruptedCause)return eX(e._interruptedCause)},i7=e=>{e.interruptible&&(e.interruptible=!1,e._stack.push(i5))},i8=e=>(0,V.R6)(t=>t.interruptible?e:i6(t)??e),i9=e=>(0,V.R6)(t=>t.interruptible?(t.interruptible=!1,t._stack.push(i5),e(i8)):e(v.D_)),se=e=>(0,V.R6)(t=>{if(t.interruptible)return e(v.D_);let a=i6(t),i=e(i2);return a??i}),st=tE(iF(e$(()=>new AbortController),e=>e$(()=>e.abort())),e=>e.signal),sa=(e,t)=>(0,w.xZ)(e)?t?.mode==="result"?sp(e,aK,t):sp(e,v.D_,t):t?.discard?"result"===t.mode?sp(Object.values(e),aK,t):sp(Object.values(e),v.D_,t):eY(()=>{let a={};return tp(sp(Object.entries(e),([e,i])=>tE(t?.mode==="result"?aK(i):i,t=>{F.x(a,e,t)}),{discard:!0,concurrency:t?.concurrency}),a)}),si=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>tE(sp(e,(e,a)=>aK(t(e,a)),a),e=>g.jB(e,v.D_))),ss=(0,v.XY)(3,(e,t,a)=>{let i=g.Ts(e);return 0===i.length?e$(t):eY(()=>{let e=0,s=t();return tE(sc({while:()=>e<i.length,body:()=>a(s,i[e],e),step(t){s=t,e++}}),()=>s)})}),sl=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>tV(si(e,t,{concurrency:a?.concurrency}),([e,t])=>g.CZ(t)?eT(t):a?.discard?e0:eU(e))),so=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=e[Symbol.iterator](),i=a.next();return i.done?eU(y.none()):sr(a,0,t,i.value)})),sr=(e,t,a,i)=>tV(a(i,t),s=>{if(s)return eU(y.some(i));let l=e.next();return l.done?eU(y.none()):sr(e,t+1,a,l.value)}),sn=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=e[Symbol.iterator](),i=a.next();return i.done?eU(y.none()):sd(a,0,t,i.value)})),sd=(e,t,a,i)=>tV(a(i,t),i=>{if(x.oJ(i))return eU(y.some(i.success));let s=e.next();return s.done?eU(y.none()):sd(e,t+1,a,s.value)}),sc=(0,V.Uf)({op:"While",[V.ee](e,t){return(this[V.a2].step(e),this[V.a2].while())?(t._stack.push(this),this[V.a2].body()):t1},[V._3](e){return this[V.a2].while()?(e._stack.push(this),this[V.a2].body()):t1}}),sp=(0,v.XY)(e=>"function"==typeof e[1],(e,t,a)=>eY(()=>{let i=su(a?.concurrency);if(1===i)return sg(e,t,a);let s=g.Ts(e),l=s.length;if(0===l)return a?.discard?e0:eU([]);let o=a?.discard?void 0:Array(l),r=sy({f:t,out:o},s,{concurrency:i});return r?tp(r,o):eU(o)})),sh=e=>tV(e,e=>{let t=e[Symbol.iterator]().next();return t.done?eT(new V.Xm):eU(t.value)}),sg=(e,t,a)=>eY(()=>{let i=a?.discard?void 0:[],s=e[Symbol.iterator](),l=s.next(),o=0;return tp(sc({while:()=>!l.done,body:()=>t(l.value,o++),step:e=>{i&&i.push(e),l=s.next()}}),i)}),su=e=>"unbounded"===e?1/0:Math.max(1,e??1),sf=()=>e=>{let t=e.onItem,a=e.step,i=(e,t,i,l,o)=>tV(it(o),o=>a(e,t[i],o,i)??s(e,t,i+1,l)??e0),s=(e,s,l=0,o=s.length)=>{for(;l<o;l++){let r=s[l],n=t(e,r,l);if(!tq(n))return i(e,s,l,o,n);let d=a(e,r,n,l);if(d)return"Failure"===d._tag?d:void 0}};return s},sm=e=>{let t=e.onItem,a=e.step;return(e,i,s)=>{let l,o,r,n,d,c=0,p=s.end??i.length,h=s.concurrency,g=!1,u=e=>{let t=(0,V.V2)(e);return n=t,g=!0,o&&o.size>0?tV(i2(eE(Array.from(o))),()=>n??t):t},f=()=>{let s=!1;for(;!n&&c<p;c++){let p=i[c],m=d??t(e,p,c);if(tq(m)){if(n=a(e,p,m,c))break}else{if(!l)return te(e=>{let t;l=eM(),o=new Set,d=m,r=e;try{t=f()}catch(t){return e(u(t))}return t?e(t):eY(()=>(n??=t1,tV(o?eE(o):e0,()=>n?._tag==="Failure"?n:e0)))});d=void 0;let t=sA(l,m,!0,!0,"inherit");if(t._exit){if(n=a(e,p,t._exit,c))break;continue}o.add(t);let i=c;if(t.addObserver(l=>{o.delete(t);try{if(n){if("Failure"===l._tag){let e=l.cause.reasons.filter(e=>"Interrupt"!==e._tag);if(e.length>0){let t=(0,V.b5)(e);n=(0,V.cb)("Failure"===n._tag?(0,V.h2)(n.cause,t):t)}}}else{let t=a(e,p,l,i);t&&(n=t,f())}if(s){let e=f();e&&r(e)}else g&&0===o.size&&r(n??e0)}catch(e){r(u(e))}}),o.size<h)continue;s=!0,c++;return}}if(g=!0,n){if(o&&o.size>0){let e=eS(l);o.forEach(t=>t.interruptUnsafe(l.id,e));return}if(r||"Failure"===n._tag)return n}else if(r)if(!o)return t1;else 0===o.size&&r(e0)};return f()}},sv=()=>e=>sm(e),sy=sm({onItem:(e,t,a)=>e.f(t,a),step(e,t,a,i){if("Failure"===a._tag)return a;e.out&&(e.out[i]=a.value)}}),sw=(0,v.XY)(3,(e,t,a)=>tV(e,e=>t(e)?eU(e):a(e))),sx=(0,v.XY)(3,(e,t,a)=>tV(e,e=>{let i=t(e);return x.N6(i)?a(i.failure):eU(i.success)})),sb=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sx(e,t,a?e=>eT(a(e)):()=>eT(new V.Xm))),sk=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>eY(()=>{let i=[];return tp(sp(e,(e,a)=>{let s=t(e,a);return"boolean"==typeof s?(s&&i.push(e),e0):tE(s,t=>{t&&i.push(e)})},{discard:!0,concurrency:a?.concurrency}),i)})),sM=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=[];for(let i of e){let e=t(i);x.oJ(e)&&a.push(e.success)}return eU(a)})),sC=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>eY(()=>{let i=[];return tp(sp(e,e=>tE(t(e),e=>{x.oJ(e)&&i.push(e.success)}),{discard:!0,concurrency:a?.concurrency}),i)})),sz=eU({}),s_=H.Jr(tE),sL=H.oI(tE,tV),sB=H.zM(tE),sS=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>(0,V.R6)(a=>(eB.interruptChildren??=eA,eU(sA(a,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),sA=(e,t,a=!1,i=!1,s=!1)=>{let l="inherit"===s?e.interruptible:!s,o=new eC(e.context,l);return a?o.evaluate(t):(o._asyncContext=ek(),e.currentDispatcher.scheduleTask(()=>o.evaluate(t),0)),i||o._exit||(e.children().add(o),o._parent=e),o},sP=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>(0,V.R6)(a=>eU(sA(a,e,t?.startImmediately,!0,t?.uninterruptible)))),sV=e=>(0,V.R6)(t=>{let a=t._children&&new Set(t._children),i=t.interruptible;return iO(e,e=>{let s=t._children;if(void 0===s||0===s.size)return e0;a&&(s=z.pb(s,e=>!a.has(e)));let l=t_(eV(s));return i?i8(l):l})}),sH=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>(0,V.R6)(i=>{let s=sA(i,e,a?.startImmediately,!0,a?.uninterruptible);if(!s._exit)if("Closed"!==t.state._tag){let e={};iC(t,e,()=>e4(e=>e===s.id?e0:eF(s))),s.addObserver(()=>iz(t,e))}else s.interruptUnsafe(i.id,eS(i));return eU(s)})),sq=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>tV(iA,a=>sH(e,a,t))),sF=e=>(t,a)=>{let i=new eC(a?.scheduler?u.WQ(e,S._F,a.scheduler):e,a?.uninterruptible!==!0);if(i.evaluate(t),i._exit)return i;if(a?.signal)if(a.signal.aborted)i.interruptUnsafe();else{let e=()=>i.interruptUnsafe();a.signal.addEventListener("abort",e,{once:!0}),i.addObserver(()=>a.signal.removeEventListener("abort",e))}return a?.onFiberStart&&a.onFiberStart(i),i},sI=(0,v.XY)(2,(e,t)=>{if(e._exit)return e;if("Closed"===t.state._tag)return e.interruptUnsafe(e.id),e;let a={};return iC(t,a,()=>eF(e)),e.addObserver(()=>iz(t,a)),e}),sE=sF(u.Ie()),sO=e=>{let t=sF(e);return(e,a)=>{let i=t(e,a);return a?.onExit&&i.addObserver(a.onExit),e=>i.interruptUnsafe(e)}},sU=sO(u.Ie()),sX=e=>{let t=sF(e);return(e,a)=>{let i=t(e,a);return new Promise(e=>{i.addObserver(t=>e(t))})}},sT=sX(u.Ie()),s$=e=>{let t=sX(e);return(e,a)=>t(e,a).then(e=>{if("Failure"===e._tag)throw eo(e.cause);return e.value})},sY=s$(u.Ie()),sG=e=>{let t=sF(e);return e=>{if(tq(e))return e;let a=t(e,{scheduler:new S.FG("sync")});return a._dispatcher?.flush(),a._exit??(0,V.V2)(new lH(a))}},sR=sG(u.Ie()),sD=e=>{let t=sG(e);return e=>{let a=t(e);if("Failure"===a._tag)throw eo(a.cause);return a.value}},sZ=sD(u.Ie()),sj=eU(!0),sN=eU(!1);class sW{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(0===this.waiters.length)return sj;if(void 0===this.scheduled)this.scheduled=this.waiters,e.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let e=0;e<this.waiters.length;e++)this.scheduled.push(this.waiters[e]);return this.waiters=[],sj}flushScheduled=()=>{if(void 0===this.scheduled)return;let e=this.scheduled;this.scheduled=void 0;for(let t=0;t<e.length;t++)e[t](t1)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](t1)}open=(0,V.R6)(e=>this._isOpen?sN:(this._isOpen=!0,this.scheduleUnsafe(e)));release=(0,V.R6)(e=>this._isOpen?sN:this.scheduleUnsafe(e));openUnsafe(){return!this._isOpen&&(this._isOpen=!0,this.flushWaiters(),!0)}await=te(e=>this._isOpen?e(e0):(this.waiters.push(e),e$(()=>{let t=this.waiters.indexOf(e);-1!==t?this.waiters.splice(t,1):void 0!==this.scheduled&&-1!==(t=this.scheduled.indexOf(e))&&this.scheduled.splice(t,1)})));closeUnsafe(){return!!this._isOpen&&(this._isOpen=!1,!0)}close=e$(()=>this.closeUnsafe());whenOpen=e=>tV(this.await,()=>e);isOpen(){return this._isOpen}}let sJ=e=>new sW(e??!1),sK=e=>e$(()=>sJ(e)),sQ=(0,V.R6)(e=>eU(e.getRef(A.sh))),s1=(0,v.XY)(2,(e,t)=>ah(e,A.sh,t)),s0=ah(I.rf),s2=ah(I.nU),s3=BigInt(0),s5={_tag:"Span",spanId:"noop",traceId:"noop",sampled:!1,status:{_tag:"Ended",startTime:s3,endTime:s3,exit:t1},attributes:new Map,links:[],kind:"internal",attribute(){},event(){},end(){},addLinks(){}},s4=e=>e?u.Jt(e.annotations,A.DW)?"Span"===e._tag?s4(y.getOrUndefined(e.parent)):y.none():y.some(e):y.none(),s6=(e,t,a)=>{let i,s=!e.cache.tracerEnabled||a?.annotations&&u.Jt(a.annotations,A.DW),l=a?.parent!==void 0?y.some(a.parent):a?.root?y.none():s4(e.cache.span);if(s){let e;e={name:t,parent:l,annotations:u.WQ(a?.annotations??u.Ie(),A.DW,!0)},i=Object.assign(Object.create(s5),e)}else{let s=e.cache.tracer??A.Vv,o=e.getRef(lh),r=e.getRef(I.nU),n=e.getRef(I.ce),d=e.getRef(I.ls),c=a?.level??e.getRef(A.pX),p=a?.links!==void 0?[...d,...a.links]:0===d.length?[]:d.slice();for(let d in i=s.span({name:t,parent:l,annotations:a?.annotations??u.Ie(),links:p,startTime:r?o.currentTimeNanosUnsafe():s3,kind:a?.kind??"internal",root:a?.root??y.isNone(l),sampled:a?.sampled??((!y.isSome(l)||!1!==l.value.sampled)&&!lU(e.getRef(A.EW),c))}),n)i.attribute(d,n[d]);if(a?.attributes!==void 0)for(let e in a.attributes)i.attribute(e,a.attributes[e])}return i},s7=(e,t)=>(0,V.R6)(a=>eU(s6(a,e,t))),s8=(e,t)=>i2((0,V.R6)(a=>{let i=u.fp(a.context,ig),s=s6(a,e,t??{}),l=a.getRef(lh),o=a.getRef(I.nU);return tp(ik(i,e=>li(s,e,l,o)),s)})),s9=function(){let e="string"!=typeof arguments[0],t=e?arguments[1]:arguments[0],a=O(e?arguments[2]:arguments[1]);if(e){let e=arguments[0];return tV(s8(t,a),t=>lo(e,t,a))}return e=>tV(s8(t,a),t=>lo(e,t,a))},le=I.ce,lt=I.ls,la=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a={})=>{let i=(Array.isArray(t)?t:[t]).map(e=>({span:e,attributes:a}));return al(e,I.ls,e=>[...e,...i])}),li=(e,t,a,i)=>e$(()=>{"Ended"!==e.status._tag&&e.end(i?a.currentTimeNanosUnsafe():s3,t)}),ls=(e,...t)=>{let a=1===t.length?void 0:t[0],i=t[t.length-1];return(0,V.R6)(t=>{let s=s6(t,e,a),l=t.getRef(lh),o=t.getRef(I.nU);return iU(t,e=>li(s,e,l,o)),i(s)})},ll=ah(A.Tv),lo=function(){let e=(0,V.yw)(arguments[0]),t=e?arguments[1]:arguments[0],a=e?arguments[2]:arguments[1],i=v.D_;if("Span"===t._tag){var s,l;a=O(a),s=t.name,l="function"==typeof(l=a?.captureStackTrace)?l:v.MN,i=al(I.vA,e=>({name:s,stack:l,parent:e}))}return e?ll(i(arguments[0]),t):e=>ll(i(e),t)},lr=function(){let e="string"!=typeof arguments[0],t=e?arguments[1]:arguments[0],a=O(arguments[2]);if(e){let e=arguments[0];return ls(t,arguments[2],t=>lo(e,t,a))}let i="function"==typeof arguments[1]?arguments[1]:void 0,s=i?void 0:arguments[1];return(e,...l)=>ls(t,i?i(...l):s,t=>lo(e,t,a))},ln=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,...t)=>al(e,I.ce,e=>{let a=1===t.length?{...e,...t[0]}:{...e};return 1===t.length||F.x(a,t[0],t[1]),a})),ld=(...e)=>(0,V.R6)(t=>{let a=t.currentSpanLocal;if(a)if(1===e.length)for(let[t,i]of Object.entries(e[0]))a.attribute(t,i);else a.attribute(e[0],e[1]);return e0}),lc=(0,V.R6)(e=>{let t=e.currentSpanLocal;return t?eU(t):eT(new V.Xm)}),lp=(c=A.Tv,(0,V.R6)(e=>eG(u.om(e.context,c)))),lh=u.Or("effect/Clock",{defaultValue:()=>new lg});class lg{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=e$(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return lm()}currentTimeNanos=e$(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return lf()}monotonicTimeNanos=e$(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(f.kE(e))}sleepMillis(e){return e<=0?ej:Number.isFinite(e)?te(t=>{let a=e>0x7fffffff?this.sleepMillis(e-0x7fffffff):e0,i=setTimeout(()=>t(a),Math.min(e,0x7fffffff));return e$(()=>clearTimeout(i))}):tt}}let lu=BigInt(1e6),lf=function(){let e=globalThis.process?.hrtime;if("function"==typeof e?.bigint)return()=>e.bigint();if("u">typeof performance&&"function"==typeof performance.now)return()=>BigInt(Math.round(1e6*performance.now()));let t=BigInt(0);return()=>{let e=BigInt(Date.now())*lu;return e>t&&(t=e),t}}(),lm=(h=BigInt(1e9),()=>{let e=lf(),t=BigInt(Date.now())*lu;if(void 0===p)p=t-e;else{let a=p+e;(t>a?t-a:a-t)>h&&(p=t-e)}return p+e}),lv=e=>(0,V.R6)(t=>e(t.getRef(lh))),ly=e=>lv(t=>t.sleep(f.bN(e))),lw=lv(e=>e.currentTimeMillis),lx=lv(e=>e.currentTimeNanos),lb=lv(e=>e.monotonicTimeNanos),lk="~effect/Cause/TimeoutError",lM=e=>(0,w.i5)(e,lk);class lC extends(0,V.rN)("TimeoutError"){[lk]=lk;constructor(e){super({message:e})}}let lz="~effect/Cause/IllegalArgumentError",l_=e=>(0,w.i5)(e,lz);class lL extends(0,V.rN)("IllegalArgumentError"){[lz]=lz;constructor(e){super({message:e})}}let lB="~effect/Cause/ExceededCapacityError",lS=e=>(0,w.i5)(e,lB);class lA extends(0,V.rN)("ExceededCapacityError"){[lB]=lB;constructor(e){super({message:e})}}let lP="~effect/Cause/AsyncFiberError",lV=e=>(0,w.i5)(e,lP);class lH extends(0,V.rN)("AsyncFiberError"){[lP]=lP;constructor(e){super({message:"An asynchronous Effect was executed with Effect.runSync",fiber:e})}}let lq="~effect/Cause/UnknownError",lF=e=>(0,w.i5)(e,lq);class lI extends(0,V.rN)("UnknownError"){[lq]=lq;constructor(e,t){super({message:t,cause:e})}}let lE=u.Or("effect/Console",{defaultValue:()=>globalThis.console}),lO=_.zQ(_.wN,e=>{switch(e){case"All":return Number.MIN_SAFE_INTEGER;case"Fatal":return 5e4;case"Error":return 4e4;case"Warn":return 3e4;case"Info":return 2e4;case"Debug":return 1e4;case"Trace":return 0;case"None":return Number.MAX_SAFE_INTEGER}}),lU=_.yJ(lO),lX=u.Or("effect/Logger/CurrentLoggers",{defaultValue:()=>new Set([lZ,lj])}),lT=u.Or("effect/Logger/LogToStderr",{defaultValue:v.f4}),l$=function(){let e="string"==typeof arguments[0]?[[arguments[0],arguments[1]]]:Object.entries(arguments[0]);return i2((0,V.R6)(t=>{let a=t.getRef(I.iL),i={...a};for(let t=0;t<e.length;t++){let[a,s]=e[t];F.x(i,a,s)}return t.setContext(u.WQ(t.context,I.iL,i)),ik(u.fp(t.context,ig),i=>{let s=t.getRef(I.iL),l={...s};for(let t=0;t<e.length;t++){let[i,o]=e[t];(s[i]===o||Object.is(s[i],o))&&(Object.hasOwn(a,i)?F.x(l,i,a[i]):delete l[i])}return t.setContext(u.WQ(t.context,I.iL,l)),e0})}))},lY={"~effect/Logger":{_Message:v.D_,_Output:v.D_},pipe(){return(0,L.tT)(this,arguments)}},lG=e=>{let t=Object.create(lY);return t.log=e,t},lR=(e,t)=>{let a=e[0].replace(/[\s="]/g,"_");return`${a}=${t-e[1]}ms`},lD=e=>(...t)=>{let a;for(let e=0,i=t.length;e<i;e++){let i=t[e];(0,V.Aj)(i)&&(a?t.splice(e,1):t=t.slice(0,e).concat(t.slice(e+1)),a=a?(0,V.b5)(a.reasons.concat(i.reasons)):i,e--)}return void 0===a&&(a=V.DH),(0,V.R6)(i=>{let s=e??i.cache.logLevel;if(lU(i.cache.minimumLogLevel,s))return e0;let l=i.getRef(lh),o=i.getRef(lX);if(o.size>0){let e=new Date(l.currentTimeMillisUnsafe());for(let l of o)l.log({cause:a,fiber:i,date:e,logLevel:s,message:t})}return e0})},lZ=lG(({cause:e,date:t,fiber:a,logLevel:i,message:s})=>{let l=Array.isArray(s)?s.slice():[s];e.reasons.length>0&&l.push(ef(e));let o=t.getTime(),r=a.getRef(I.d8),n="";for(let e of r)n+=` ${lR(e,o)}`;let d=a.getRef(I.iL);Object.keys(d).length>0&&l.push(d);let c=a.getRef(lE);(a.getRef(lT)?c.error:c.log)(`[${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}] ${i.toUpperCase()} (#${a.id})${n}:`,...l)}),lj=lG(({cause:e,fiber:t,logLevel:a,message:i})=>{let s=t.getRef(lh),l=t.getRef(I.iL),o=t.cache.span;if(void 0===o||"ExternalSpan"===o._tag)return;let r={};for(let[e,t]of Object.entries(l))F.x(r,e,t);r["effect.fiberId"]=t.id,r["effect.logLevel"]=a.toUpperCase(),e.reasons.length>0&&(r["effect.cause"]=ef(e)),o.event((0,C.ZK)(Array.isArray(i)&&1===i.length?i[0]:i),s.currentTimeNanosUnsafe(),r)}),lN=eU(void 0),lW=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>iG(e,e=>(0,V.R6)(a=>(lJ(a,e,t?.defectsOnly),e0)))),lJ=(e,t,a)=>{let i=e.getRef(I.oQ);if(0===i.size||a&&!j(t))return;let s={cause:t,fiber:e,timestamp:e.getRef(lh).currentTimeNanosUnsafe()};i.forEach(e=>e.report(s))}},5844(e,t,a){let i=new WeakSet;a.d(t,{},{J3:i,Xp:e=>{let t=new Set(Reflect.ownKeys(e));if(e.constructor===Object)return t;e instanceof Error&&t.delete("stack");let a=Object.getPrototypeOf(e),i=a;for(;null!==i&&i!==Object.prototype;){let e=Reflect.ownKeys(i);for(let a=0;a<e.length;a++)t.add(e[a]);i=Object.getPrototypeOf(i)}return t.has("constructor")&&"function"==typeof e.constructor&&a===e.constructor.prototype&&t.delete("constructor"),t},j:e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength)})},7258(e,t,a){a.d(t,{},{F:"effect/Metric/FiberRuntimeMetrics"})},7731(e,t,a){var i=a(3332),s=a(1958),l=a(5033),o=a(3952),r=a(4233),n=a(6481),d=a(2449);let c="~effect/Option",p={[c]:{_A:e=>e},...d.fU,[Symbol.iterator](){return new n.B(this)}},h=Object.defineProperty(Object.assign(Object.create(p),{_tag:"Some",_op:"Some",[i.HR](e){return f(e)&&v(e)&&i.aI(this.value,e.value)},[l.HR](){return l.kg(l.tW(this._tag))(l.tW(this.value))},toString(){return`some(${(0,s.GP)(this.value)})`},toJSON(){return{_id:"Option",_tag:this._tag,value:(0,o.aB)(this.value)}}}),"valueOrUndefined",{get(){return this.value}}),g=l.tW("None"),u=Object.assign(Object.create(p),{_tag:"None",_op:"None",valueOrUndefined:void 0,[i.HR]:e=>f(e)&&m(e),[l.HR]:()=>g,toString:()=>"none()",toJSON(){return{_id:"Option",_tag:this._tag}}}),f=e=>(0,r.i5)(e,c),m=e=>"None"===e._tag,v=e=>"Some"===e._tag,y=Object.create(u),w=function(e){this.value=e};w.prototype=h,a.d(t,{},{$I:m,Ru:v,dv:y,oL:f,zN:e=>new w(e)})},2275(e,t,a){function i(e,t,a){"__proto__"===t?Object.defineProperty(e,t,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[t]=a}function s(e,t){for(let a of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,a)&&i(e,a,t[a])}a.d(t,{x:()=>i,z:()=>s})},6712(e,t,a){var i=a(1179),s=a(1594);let l=i.Or("effect/ErrorReporter/CurrentErrorReporters",{defaultValue:()=>new Set}),o=i.Or("effect/References/CurrentStackFrame",{fiberCached:!0,defaultValue:s.MN}),r=i.Or("effect/References/TracerEnabled",{fiberCached:!0,defaultValue:s.ue}),n=i.Or("effect/References/TracerTimingEnabled",{defaultValue:s.ue}),d=i.Or("effect/References/TracerSpanAnnotations",{defaultValue:()=>({})}),c=i.Or("effect/References/TracerSpanLinks",{defaultValue:()=>[]}),p=i.Or("effect/References/CurrentLogAnnotations",{defaultValue:()=>({})}),h=i.Or("effect/References/CurrentLogLevel",{fiberCached:!0,defaultValue:()=>"Info"}),g=i.Or("effect/References/MinimumLogLevel",{fiberCached:!0,defaultValue:()=>"Info"}),u=i.Or("effect/References/UnhandledLogLevel",{defaultValue:()=>"Error"}),f=i.Or("effect/References/CurrentLogSpans",{defaultValue:()=>[]});a.d(t,{},{Gl:h,aG:u,ce:d,d8:f,iL:p,ls:c,nU:n,oQ:l,rf:r,vA:o,zQ:g})},2563(e,t,a){var i=a(3332),s=a(1958),l=a(1594),o=a(5033),r=a(3952),n=a(4233),d=a(6481),c=a(2449),p=a(7731);let h="~effect/Result",g={[h]:{_A:e=>e,_E:e=>e},...c.fU,[Symbol.iterator](){return new d.B(this)}},u=Object.assign(Object.create(g),{_tag:"Success",_op:"Success",[i.HR](e){return m(e)&&y(e)&&i.aI(this.success,e.success)},[o.HR](){return o.kg(o.tW(this._tag))(o.tW(this.success))},toString(){return`success(${(0,s.GP)(this.success)})`},toJSON(){return{_id:"Result",_tag:this._tag,value:(0,r.aB)(this.success)}}}),f=Object.assign(Object.create(g),{_tag:"Failure",_op:"Failure",[i.HR](e){return m(e)&&v(e)&&i.aI(this.failure,e.failure)},[o.HR](){return o.kg(o.tW(this._tag))(o.tW(this.failure))},toString(){return`failure(${(0,s.GP)(this.failure)})`},toJSON(){return{_id:"Result",_tag:this._tag,failure:(0,r.aB)(this.failure)}}}),m=e=>(0,n.i5)(e,h),v=e=>"Failure"===e._tag,y=e=>"Success"===e._tag,w=function(e){this.failure=e};w.prototype=f;let x=e=>new w(e),b=function(e){this.success=e};b.prototype=u;let k=e=>new b(e),M=(0,l.XY)(2,(e,t)=>p.$I(e)?x(t()):k(e.value));a.d(t,{},{L8:e=>y(e)?p.dv:p.zN(e.failure),N6:v,Oz:e=>v(e)?p.dv:p.zN(e.success),Py:k,aI:m,fJ:x,oJ:y,sV:M})},2840(e,t,a){var i=a(1594);function s(e){return e.checks?e.checks[e.checks.length-1].annotations:e.annotations}function l(e){return t=>s(t)?.[e]}let o="~structural",r="~identifier",n="~sentinels",d=l("identifier"),c=l(r),p=l("title"),h=l("description"),g=(0,i.Bj)(e=>{let t=s(e)?.identifier;return"string"==typeof t?t:e.getExpected(g)}),u=new Set([n,o,"representation","arbitraryConstraint","toJsonSchema","toCode","toEquivalence","toFormatter","toCodec","toCodecJson","toCodecStringTree","toCodecIso","toCodecArbitrary"]);a.d(t,{hd:()=>s,ip:()=>l},{C3:o,CD:c,DQ:p,I_:n,KE:d,L1:["title","description","default","examples","readOnly","writeOnly","format","contentEncoding","contentMediaType","contentSchema"],Pk:h,R4:r,UI:u,bo:g,py:"~constructor"})},8253(e,t,a){var i=a(719),s=a(7086);function l(e){let t;for(let a of e.reasons){if(!i.lC(a)||!s.gh(a.error))return;t??=a.error}return t}function o(e,t){let a=l(e);if(void 0===a)throw Error(t,{cause:e});return a}a.d(t,{R:()=>l,q:()=>o})},587(e,t,a){var i=a(6526),s=a(1587);let l=Symbol(),o=i.Py,r=o(l),n=o(l);a.d(t,{},{LO:l,Py:o,Rr:n,e8:e=>"None"===e._tag?r:o(e.value),r2:r,zL:e=>e===l?s.none():s.some(e)})},5340(e,t,a){let i,s=void 0===(i=Object.getOwnPropertyDescriptor(Error,"stackTraceLimit"))?Object.isExtensible(Error):Object.hasOwn(i,"writable")?!0===i.writable:void 0!==i.set;a.d(t,{},{ft:e=>{s&&(Error.stackTraceLimit=e)},jt:()=>Error.stackTraceLimit})},8689(e,t,a){let i,s,l,o,r;function n(e){let t=e.length;for(;--t>=0;)e[t]=0}let d=573,c=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),p=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),h=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),g=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),u=Array(576);n(u);let f=Array(60);n(f);let m=Array(512);n(m);let v=Array(256);n(v);let y=Array(29);n(y);let w=Array(30);function x(e,t,a,i,s){this.static_tree=e,this.extra_bits=t,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=e&&e.length}function b(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}n(w);let k=e=>e<256?m[e]:m[256+(e>>>7)],M=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},C=(e,t,a)=>{e.bi_valid>16-a?(e.bi_buf|=t<<e.bi_valid&65535,M(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=a-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=a)},z=(e,t,a)=>{C(e,a[2*t],a[2*t+1])},_=(e,t)=>{let a=0;do a|=1&e,e>>>=1,a<<=1;while(--t>0)return a>>>1},L=(e,t,a)=>{let i,s,l=Array(16),o=0;for(i=1;i<=15;i++)l[i]=o=o+a[i-1]<<1;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=_(l[t]++,t))}},B=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0},S=e=>{e.bi_valid>8?M(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},A=(e,t,a,i)=>{let s=2*t,l=2*a;return e[s]<e[l]||e[s]===e[l]&&i[t]<=i[a]},P=(e,t,a)=>{let i=e.heap[a],s=a<<1;for(;s<=e.heap_len&&(s<e.heap_len&&A(t,e.heap[s+1],e.heap[s],e.depth)&&s++,!A(t,i,e.heap[s],e.depth));)e.heap[a]=e.heap[s],a=s,s<<=1;e.heap[a]=i},V=(e,t,a)=>{let i,s,l,o,r=0;if(0!==e.last_lit)do i=e.pending_buf[e.d_buf+2*r]<<8|e.pending_buf[e.d_buf+2*r+1],s=e.pending_buf[e.l_buf+r],r++,0===i?z(e,s,t):(z(e,(l=v[s])+256+1,t),0!==(o=c[l])&&C(e,s-=y[l],o),z(e,l=k(--i),a),0!==(o=p[l])&&C(e,i-=w[l],o));while(r<e.last_lit)z(e,256,t)},H=(e,t)=>{let a,i,s,l=t.dyn_tree,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,n=t.stat_desc.elems,c=-1;for(e.heap_len=0,e.heap_max=d,a=0;a<n;a++)0!==l[2*a]?(e.heap[++e.heap_len]=c=a,e.depth[a]=0):l[2*a+1]=0;for(;e.heap_len<2;)l[2*(s=e.heap[++e.heap_len]=c<2?++c:0)]=1,e.depth[s]=0,e.opt_len--,r&&(e.static_len-=o[2*s+1]);for(t.max_code=c,a=e.heap_len>>1;a>=1;a--)P(e,l,a);s=n;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],P(e,l,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,l[2*s]=l[2*a]+l[2*i],e.depth[s]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,l[2*a+1]=l[2*i+1]=s,e.heap[1]=s++,P(e,l,1);while(e.heap_len>=2)e.heap[--e.heap_max]=e.heap[1],((e,t)=>{let a,i,s,l,o,r,n=t.dyn_tree,c=t.max_code,p=t.stat_desc.static_tree,h=t.stat_desc.has_stree,g=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(l=0;l<=15;l++)e.bl_count[l]=0;for(n[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a<d;a++)(l=n[2*n[2*(i=e.heap[a])+1]+1]+1)>f&&(l=f,m++),n[2*i+1]=l,!(i>c)&&(e.bl_count[l]++,o=0,i>=u&&(o=g[i-u]),r=n[2*i],e.opt_len+=r*(l+o),h&&(e.static_len+=r*(p[2*i+1]+o)));if(0!==m){do{for(l=f-1;0===e.bl_count[l];)l--;e.bl_count[l]--,e.bl_count[l+1]+=2,e.bl_count[f]--,m-=2}while(m>0)for(l=f;0!==l;l--)for(i=e.bl_count[l];0!==i;)!((s=e.heap[--a])>c)&&(n[2*s+1]!==l&&(e.opt_len+=(l-n[2*s+1])*n[2*s],n[2*s+1]=l),i--)}})(e,t),L(l,c,e.bl_count)},q=(e,t,a)=>{let i,s,l=-1,o=t[1],r=0,n=7,d=4;for(0===o&&(n=138,d=3),t[(a+1)*2+1]=65535,i=0;i<=a;i++)s=o,o=t[(i+1)*2+1],++r<n&&s===o||(r<d?e.bl_tree[2*s]+=r:0!==s?(s!==l&&e.bl_tree[2*s]++,e.bl_tree[32]++):r<=10?e.bl_tree[34]++:e.bl_tree[36]++,r=0,l=s,0===o?(n=138,d=3):s===o?(n=6,d=3):(n=7,d=4))},F=(e,t,a)=>{let i,s,l=-1,o=t[1],r=0,n=7,d=4;for(0===o&&(n=138,d=3),i=0;i<=a;i++)if(s=o,o=t[(i+1)*2+1],!(++r<n)||s!==o){if(r<d)do z(e,s,e.bl_tree);while(0!=--r)else 0!==s?(s!==l&&(z(e,s,e.bl_tree),r--),z(e,16,e.bl_tree),C(e,r-3,2)):r<=10?(z(e,17,e.bl_tree),C(e,r-3,3)):(z(e,18,e.bl_tree),C(e,r-11,7));r=0,l=s,0===o?(n=138,d=3):s===o?(n=6,d=3):(n=7,d=4)}},I=!1,E=(e,t,a,i)=>{C(e,0+ +!!i,3),S(e),M(e,a),M(e,~a),e.pending_buf.set(e.window.subarray(t,t+a),e.pending),e.pending+=a};var O={_tr_init:e=>{I||((()=>{let e,t,a,o,r,n=Array(16);for(o=0,a=0;o<28;o++)for(y[o]=a,e=0;e<1<<c[o];e++)v[a++]=o;for(v[a-1]=o,r=0,o=0;o<16;o++)for(w[o]=r,e=0;e<1<<p[o];e++)m[r++]=o;for(r>>=7;o<30;o++)for(w[o]=r<<7,e=0;e<1<<p[o]-7;e++)m[256+r++]=o;for(t=0;t<=15;t++)n[t]=0;for(e=0;e<=143;)u[2*e+1]=8,e++,n[8]++;for(;e<=255;)u[2*e+1]=9,e++,n[9]++;for(;e<=279;)u[2*e+1]=7,e++,n[7]++;for(;e<=287;)u[2*e+1]=8,e++,n[8]++;for(L(u,287,n),e=0;e<30;e++)f[2*e+1]=5,f[2*e]=_(e,5);i=new x(u,c,257,286,15),s=new x(f,p,0,30,15),l=new x([],h,0,19,7)})(),I=!0),e.l_desc=new b(e.dyn_ltree,i),e.d_desc=new b(e.dyn_dtree,s),e.bl_desc=new b(e.bl_tree,l),e.bi_buf=0,e.bi_valid=0,B(e)},_tr_stored_block:E,_tr_flush_block:(e,t,a,i)=>{let s,l,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,a=0xf3ffc07f;for(t=0;t<=31;t++,a>>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),H(e,e.l_desc),H(e,e.d_desc),o=(e=>{let t;for(q(e,e.dyn_ltree,e.l_desc.max_code),q(e,e.dyn_dtree,e.d_desc.max_code),H(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*g[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=s&&(s=l)):s=l=a+5,a+4<=s&&-1!==t?E(e,t,a,i):4===e.strategy||l===s?(C(e,2+ +!!i,3),V(e,u,f)):(C(e,4+ +!!i,3),((e,t,a,i)=>{let s;for(C(e,t-257,5),C(e,a-1,5),C(e,i-4,4),s=0;s<i;s++)C(e,e.bl_tree[2*g[s]+1],3);F(e,e.dyn_ltree,t-1),F(e,e.dyn_dtree,a-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),V(e,e.dyn_ltree,e.dyn_dtree)),B(e),i&&S(e)},_tr_tally:(e,t,a)=>(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[(v[a]+256+1)*2]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1),_tr_align:e=>{C(e,2,3),z(e,256,u),16===e.bi_valid?(M(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},U=(e,t,a,i)=>{let s=65535&e,l=e>>>16&65535,o=0;for(;0!==a;){o=a>2e3?2e3:a,a-=o;do l=l+(s=s+t[i++]|0)|0;while(--o)s%=65521,l%=65521}return s|l<<16};let X=new Uint32Array((()=>{let e,t=[];for(var a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?0xedb88320^e>>>1:e>>>1;t[a]=e}return t})());var T=(e,t,a,i)=>{let s=i+a;e^=-1;for(let a=i;a<s;a++)e=e>>>8^X[(e^t[a])&255];return -1^e},$={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Y={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};let{_tr_init:G,_tr_stored_block:R,_tr_flush_block:D,_tr_tally:Z,_tr_align:j}=O,{Z_NO_FLUSH:N,Z_PARTIAL_FLUSH:W,Z_FULL_FLUSH:J,Z_FINISH:K,Z_BLOCK:Q,Z_OK:ee,Z_STREAM_END:et,Z_STREAM_ERROR:ea,Z_DATA_ERROR:ei,Z_BUF_ERROR:es,Z_DEFAULT_COMPRESSION:el,Z_FILTERED:eo,Z_HUFFMAN_ONLY:er,Z_RLE:en,Z_FIXED:ed,Z_DEFAULT_STRATEGY:ec,Z_UNKNOWN:ep,Z_DEFLATED:eh}=Y,eg=573,eu=(e,t)=>(e.msg=$[t],t),ef=e=>(e<<1)-9*(e>4),em=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ev=(e,t,a)=>(t<<e.hash_shift^a)&e.hash_mask,ey=e=>{let t=e.state,a=t.pending;a>e.avail_out&&(a=e.avail_out),0!==a&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+a),e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))},ew=(e,t)=>{D(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ey(e.strm)},ex=(e,t)=>{e.pending_buf[e.pending++]=t},eb=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},ek=(e,t,a,i)=>{let s=e.avail_in;return(s>i&&(s=i),0===s)?0:(e.avail_in-=s,t.set(e.input.subarray(e.next_in,e.next_in+s),a),1===e.state.wrap?e.adler=U(e.adler,t,s,a):2===e.state.wrap&&(e.adler=T(e.adler,t,s,a)),e.next_in+=s,e.total_in+=s,s)},eM=(e,t)=>{let a,i,s=e.max_chain_length,l=e.strstart,o=e.prev_length,r=e.nice_match,n=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,d=e.window,c=e.w_mask,p=e.prev,h=e.strstart+258,g=d[l+o-1],u=d[l+o];e.prev_length>=e.good_match&&(s>>=2),r>e.lookahead&&(r=e.lookahead);do{if(d[(a=t)+o]!==u||d[a+o-1]!==g||d[a]!==d[l]||d[++a]!==d[l+1])continue;l+=2,a++;do;while(d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&l<h)if(i=258-(h-l),l=h-258,i>o){if(e.match_start=t,o=i,i>=r)break;g=d[l+o-1],u=d[l+o]}}while((t=p[t&c])>n&&0!=--s)return o<=e.lookahead?o:e.lookahead},eC=e=>{let t,a,i,s,l,o=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=o+(o-262)){e.window.set(e.window.subarray(o,o+o),0),e.match_start-=o,e.strstart-=o,e.block_start-=o,t=a=e.hash_size;do i=e.head[--t],e.head[t]=i>=o?i-o:0;while(--a)t=a=o;do i=e.prev[--t],e.prev[t]=i>=o?i-o:0;while(--a)s+=o}if(0===e.strm.avail_in)break;if(a=ek(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=a,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=ev(e,e.ins_h,e.window[l+1]);e.insert&&(e.ins_h=ev(e,e.ins_h,e.window[l+3-1]),e.prev[l&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=l,l++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},ez=(e,t)=>{let a,i;for(;;){if(e.lookahead<262){if(eC(e),e.lookahead<262&&t===N)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==a&&e.strstart-a<=e.w_size-262&&(e.match_length=eM(e,a)),e.match_length>=3)if(i=Z(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(0!=--e.match_length)e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=ev(e,e.ins_h,e.window[e.strstart+1]);else i=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=e.strstart<2?e.strstart:2,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2},e_=(e,t)=>{let a,i,s;for(;;){if(e.lookahead<262){if(eC(e),e.lookahead<262&&t===N)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==a&&e.prev_length<e.max_lazy_match&&e.strstart-a<=e.w_size-262&&(e.match_length=eM(e,a),e.match_length<=5&&(e.strategy===eo||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){s=e.strstart+e.lookahead-3,i=Z(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=s&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(0!=--e.prev_length)if(e.match_available=0,e.match_length=2,e.strstart++,i&&(ew(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((i=Z(e,0,e.window[e.strstart-1]))&&ew(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return(e.match_available&&(i=Z(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2};function eL(e,t,a,i,s){this.good_length=e,this.max_lazy=t,this.nice_length=a,this.max_chain=i,this.func=s}let eB=[new eL(0,0,0,0,(e,t)=>{let a=65535;for(65535>e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(eC(e),0===e.lookahead&&t===N)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;let i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,ew(e,!1),0===e.strm.avail_out)||e.strstart-e.block_start>=e.w_size-262&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:(e.strstart>e.block_start&&(ew(e,!1),e.strm.avail_out),1)}),new eL(4,4,8,4,ez),new eL(4,5,16,8,ez),new eL(4,6,32,32,ez),new eL(4,4,16,16,e_),new eL(8,16,32,32,e_),new eL(8,16,128,128,e_),new eL(8,32,128,256,e_),new eL(32,128,258,1024,e_),new eL(32,258,258,4096,e_)];function eS(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=eh,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(2*eg),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),em(this.dyn_ltree),em(this.dyn_dtree),em(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),em(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),em(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var eA=(e,t)=>{let a,i;if(!e||!e.state||t>Q||t<0)return e?eu(e,ea):ea;let s=e.state;if(!e.output||!e.input&&0!==e.avail_in||666===s.status&&t!==K)return eu(e,0===e.avail_out?es:ea);s.strm=e;let l=s.last_flush;if(s.last_flush=t,42===s.status)if(2===s.wrap)e.adler=0,ex(s,31),ex(s,139),ex(s,8),s.gzhead?(ex(s,+!!s.gzhead.text+2*!!s.gzhead.hcrc+4*!!s.gzhead.extra+8*!!s.gzhead.name+16*!!s.gzhead.comment),ex(s,255&s.gzhead.time),ex(s,s.gzhead.time>>8&255),ex(s,s.gzhead.time>>16&255),ex(s,s.gzhead.time>>24&255),ex(s,9===s.level?2:4*(s.strategy>=er||s.level<2)),ex(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(ex(s,255&s.gzhead.extra.length),ex(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=T(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(ex(s,0),ex(s,0),ex(s,0),ex(s,0),ex(s,0),ex(s,9===s.level?2:4*(s.strategy>=er||s.level<2)),ex(s,3),s.status=113);else{let t=eh+(s.w_bits-8<<4)<<8;t|=(s.strategy>=er||s.level<2?0:s.level<6?1:6===s.level?2:3)<<6,0!==s.strstart&&(t|=32),t+=31-t%31,s.status=113,eb(s,t),0!==s.strstart&&(eb(s,e.adler>>>16),eb(s,65535&e.adler)),e.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending!==s.pending_buf_size));)ex(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,ex(s,i)}while(0!==i)s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,ex(s,i)}while(0!==i)s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&ey(e),s.pending+2<=s.pending_buf_size&&(ex(s,255&e.adler),ex(s,e.adler>>8&255),e.adler=0,s.status=113)):s.status=113),0!==s.pending){if(ey(e),0===e.avail_out)return s.last_flush=-1,ee}else if(0===e.avail_in&&ef(t)<=ef(l)&&t!==K)return eu(e,es);if(666===s.status&&0!==e.avail_in)return eu(e,es);if(0!==e.avail_in||0!==s.lookahead||t!==N&&666!==s.status){let a=s.strategy===er?((e,t)=>{let a;for(;;){if(0===e.lookahead&&(eC(e),0===e.lookahead)){if(t===N)return 1;break}if(e.match_length=0,a=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2})(s,t):s.strategy===en?((e,t)=>{let a,i,s,l,o=e.window;for(;;){if(e.lookahead<=258){if(eC(e),e.lookahead<=258&&t===N)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=o[s=e.strstart-1])===o[++s]&&i===o[++s]&&i===o[++s]){l=e.strstart+258;do;while(i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&s<l)e.match_length=258-(l-s),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(a=Z(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2})(s,t):eB[s.level].func(s,t);if((3===a||4===a)&&(s.status=666),1===a||3===a)return 0===e.avail_out&&(s.last_flush=-1),ee;if(2===a&&(t===W?j(s):t!==Q&&(R(s,0,0,!1),t===J&&(em(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),ey(e),0===e.avail_out))return s.last_flush=-1,ee}return t!==K?ee:s.wrap<=0?et:(2===s.wrap?(ex(s,255&e.adler),ex(s,e.adler>>8&255),ex(s,e.adler>>16&255),ex(s,e.adler>>24&255),ex(s,255&e.total_in),ex(s,e.total_in>>8&255),ex(s,e.total_in>>16&255),ex(s,e.total_in>>24&255)):(eb(s,e.adler>>>16),eb(s,65535&e.adler)),ey(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?ee:et)},eP=e=>{if(!e||!e.state)return ea;let t=e.state.status;return 42!==t&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?eu(e,ea):(e.state=null,113===t?eu(e,ei):ee)};let eV=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var eH=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let a=t.shift();if(a){if("object"!=typeof a)throw TypeError(a+"must be non-object");for(let t in a)eV(a,t)&&(e[t]=a[t])}}return e},eq=e=>{let t=0;for(let a=0,i=e.length;a<i;a++)t+=e[a].length;let a=new Uint8Array(t);for(let t=0,i=0,s=e.length;t<s;t++){let s=e[t];a.set(s,i),i+=s.length}return a};let eF=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){eF=!1}let eI=new Uint8Array(256);for(let e=0;e<256;e++)eI[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;eI[254]=eI[254]=1;var eE=e=>{let t,a,i,s,l,o=e.length,r=0;for(s=0;s<o;s++)(64512&(a=e.charCodeAt(s)))==55296&&s+1<o&&(64512&(i=e.charCodeAt(s+1)))==56320&&(a=65536+(a-55296<<10)+(i-56320),s++),r+=a<128?1:a<2048?2:a<65536?3:4;for(t=new Uint8Array(r),l=0,s=0;l<r;s++)(64512&(a=e.charCodeAt(s)))==55296&&s+1<o&&(64512&(i=e.charCodeAt(s+1)))==56320&&(a=65536+(a-55296<<10)+(i-56320),s++),a<128?t[l++]=a:(a<2048?t[l++]=192|a>>>6:(a<65536?t[l++]=224|a>>>12:(t[l++]=240|a>>>18,t[l++]=128|a>>>12&63),t[l++]=128|a>>>6&63),t[l++]=128|63&a);return t},eO=(e,t)=>{let a,i,s=t||e.length,l=Array(2*s);for(i=0,a=0;a<s;){let t=e[a++];if(t<128){l[i++]=t;continue}let o=eI[t];if(o>4){l[i++]=65533,a+=o-1;continue}for(t&=2===o?31:3===o?15:7;o>1&&a<s;)t=t<<6|63&e[a++],o--;if(o>1){l[i++]=65533;continue}t<65536?l[i++]=t:(t-=65536,l[i++]=55296|t>>10&1023,l[i++]=56320|1023&t)}var o=i;if(o<65534&&l.subarray&&eF)return String.fromCharCode.apply(null,l.length===o?l:l.subarray(0,o));let r="";for(let e=0;e<o;e++)r+=String.fromCharCode(l[e]);return r},eU=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let a=t-1;for(;a>=0&&(192&e[a])==128;)a--;return a<0||0===a?t:a+eI[e[a]]>t?a:t},eX=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};let eT=Object.prototype.toString,{Z_NO_FLUSH:e$,Z_SYNC_FLUSH:eY,Z_FULL_FLUSH:eG,Z_FINISH:eR,Z_OK:eD,Z_STREAM_END:eZ,Z_DEFAULT_COMPRESSION:ej,Z_DEFAULT_STRATEGY:eN,Z_DEFLATED:eW}=Y;function eJ(e){let t,a;this.options=eH({level:ej,method:eW,chunkSize:16384,windowBits:15,memLevel:8,strategy:eN},e||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eX,this.strm.avail_out=0;let s=((e,t,a,i,s,l)=>{var o,r;let n;if(!e)return ea;let d=1;if(t===el&&(t=6),i<0?(d=0,i=-i):i>15&&(d=2,i-=16),s<1||s>9||a!==eh||i<8||i>15||t<0||t>9||l<0||l>ed)return eu(e,ea);8===i&&(i=9);let c=new eS;return e.state=c,c.strm=e,c.wrap=d,c.gzhead=null,c.w_bits=i,c.w_size=1<<c.w_bits,c.w_mask=c.w_size-1,c.hash_bits=s+7,c.hash_size=1<<c.hash_bits,c.hash_mask=c.hash_size-1,c.hash_shift=~~((c.hash_bits+3-1)/3),c.window=new Uint8Array(2*c.w_size),c.head=new Uint16Array(c.hash_size),c.prev=new Uint16Array(c.w_size),c.lit_bufsize=1<<s+6,c.pending_buf_size=4*c.lit_bufsize,c.pending_buf=new Uint8Array(c.pending_buf_size),c.d_buf=+c.lit_bufsize,c.l_buf=3*c.lit_bufsize,c.level=t,c.strategy=l,c.method=a,(n=(e=>{if(!e||!e.state)return eu(e,ea);e.total_in=e.total_out=0,e.data_type=ep;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:113,e.adler=+(2!==t.wrap),t.last_flush=N,G(t),ee})(o=e))===ee&&((r=o.state).window_size=2*r.w_size,em(r.head),r.max_lazy_match=eB[r.level].max_lazy,r.good_match=eB[r.level].good_length,r.nice_match=eB[r.level].nice_length,r.max_chain_length=eB[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),n})(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy);if(s!==eD)throw Error($[s]);if(i.header&&(t=this.strm,a=i.header,t&&t.state&&2===t.state.wrap&&(t.state.gzhead=a)),i.dictionary){let e;if(e="string"==typeof i.dictionary?eE(i.dictionary):"[object ArrayBuffer]"===eT.call(i.dictionary)?new Uint8Array(i.dictionary):i.dictionary,(s=((e,t)=>{let a=t.length;if(!e||!e.state)return ea;let i=e.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return ea;if(1===s&&(e.adler=U(e.adler,t,a,0)),i.wrap=0,a>=i.w_size){0===s&&(em(i.head),i.strstart=0,i.block_start=0,i.insert=0);let e=new Uint8Array(i.w_size);e.set(t.subarray(a-i.w_size,a),0),t=e,a=i.w_size}let l=e.avail_in,o=e.next_in,r=e.input;for(e.avail_in=a,e.next_in=0,e.input=t,eC(i);i.lookahead>=3;){let e=i.strstart,t=i.lookahead-2;do i.ins_h=ev(i,i.ins_h,i.window[e+3-1]),i.prev[e&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=e,e++;while(--t)i.strstart=e,i.lookahead=2,eC(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=o,e.input=r,e.avail_in=l,i.wrap=s,ee})(this.strm,e))!==eD)throw Error($[s]);this._dict_set=!0}}function eK(e,t){let a=new eJ(t);if(a.push(e,!0),a.err)throw a.msg||$[a.err];return a.result}eJ.prototype.push=function(e,t){let a,i,s=this.strm,l=this.options.chunkSize;if(this.ended)return!1;for(i=t===~~t?t:!0===t?eR:e$,"string"==typeof e?s.input=eE(e):"[object ArrayBuffer]"===eT.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;;){if(0===s.avail_out&&(s.output=new Uint8Array(l),s.next_out=0,s.avail_out=l),(i===eY||i===eG)&&s.avail_out<=6){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if((a=eA(s,i))===eZ)return s.next_out>0&&this.onData(s.output.subarray(0,s.next_out)),a=eP(this.strm),this.onEnd(a),this.ended=!0,a===eD;if(0===s.avail_out){this.onData(s.output);continue}if(i>0&&s.next_out>0){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(0===s.avail_in)break}return!0},eJ.prototype.onData=function(e){this.chunks.push(e)},eJ.prototype.onEnd=function(e){e===eD&&(this.result=eq(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var eQ=function(e,t){let a,i,s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_=e.state;a=e.next_in,C=e.input,i=a+(e.avail_in-5),s=e.next_out,z=e.output,l=s-(t-e.avail_out),o=s+(e.avail_out-257),r=_.dmax,n=_.wsize,d=_.whave,c=_.wnext,p=_.window,h=_.hold,g=_.bits,u=_.lencode,f=_.distcode,m=(1<<_.lenbits)-1,v=(1<<_.distbits)-1;t:do for(g<15&&(h+=C[a++]<<g,g+=8,h+=C[a++]<<g,g+=8),y=u[h&m];;){if(h>>>=w=y>>>24,g-=w,0==(w=y>>>16&255))z[s++]=65535&y;else if(16&w)for(x=65535&y,(w&=15)&&(g<w&&(h+=C[a++]<<g,g+=8),x+=h&(1<<w)-1,h>>>=w,g-=w),g<15&&(h+=C[a++]<<g,g+=8,h+=C[a++]<<g,g+=8),y=f[h&v];;){if(h>>>=w=y>>>24,g-=w,16&(w=y>>>16&255)){if(b=65535&y,g<(w&=15)&&(h+=C[a++]<<g,(g+=8)<w&&(h+=C[a++]<<g,g+=8)),(b+=h&(1<<w)-1)>r){e.msg="invalid distance too far back",_.mode=30;break t}if(h>>>=w,g-=w,b>(w=s-l)){if((w=b-w)>d&&_.sane){e.msg="invalid distance too far back",_.mode=30;break t}if(k=0,M=p,0===c){if(k+=n-w,w<x){x-=w;do z[s++]=p[k++];while(--w)k=s-b,M=z}}else if(c<w){if(k+=n+c-w,(w-=c)<x){x-=w;do z[s++]=p[k++];while(--w)if(k=0,c<x){x-=w=c;do z[s++]=p[k++];while(--w)k=s-b,M=z}}}else if(k+=c-w,w<x){x-=w;do z[s++]=p[k++];while(--w)k=s-b,M=z}for(;x>2;)z[s++]=M[k++],z[s++]=M[k++],z[s++]=M[k++],x-=3;x&&(z[s++]=M[k++],x>1&&(z[s++]=M[k++]))}else{k=s-b;do z[s++]=z[k++],z[s++]=z[k++],z[s++]=z[k++],x-=3;while(x>2)x&&(z[s++]=z[k++],x>1&&(z[s++]=z[k++]))}}else if((64&w)==0){y=f[(65535&y)+(h&(1<<w)-1)];continue}else{e.msg="invalid distance code",_.mode=30;break t}break}else if((64&w)==0){y=u[(65535&y)+(h&(1<<w)-1)];continue}else if(32&w){_.mode=12;break t}else{e.msg="invalid literal/length code",_.mode=30;break t}break}while(a<i&&s<o)a-=x=g>>3,g-=x<<3,h&=(1<<g)-1,e.next_in=a,e.next_out=s,e.avail_in=a<i?5+(i-a):5-(a-i),e.avail_out=s<o?257+(o-s):257-(s-o),_.hold=h,_.bits=g};let e1=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),e0=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),e2=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),e3=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var e5=(e,t,a,i,s,l,o,r)=>{let n,d,c,p,h,g,u,f,m,v=r.bits,y=0,w=0,x=0,b=0,k=0,M=0,C=0,z=0,_=0,L=0,B=null,S=0,A=new Uint16Array(16),P=new Uint16Array(16),V=null,H=0;for(y=0;y<=15;y++)A[y]=0;for(w=0;w<i;w++)A[t[a+w]]++;for(k=v,b=15;b>=1&&0===A[b];b--);if(k>b&&(k=b),0===b)return s[l++]=0x1400000,s[l++]=0x1400000,r.bits=1,0;for(x=1;x<b&&0===A[x];x++);for(k<x&&(k=x),z=1,y=1;y<=15;y++)if(z<<=1,(z-=A[y])<0)return -1;if(z>0&&(0===e||1!==b))return -1;for(P[1]=0,y=1;y<15;y++)P[y+1]=P[y]+A[y];for(w=0;w<i;w++)0!==t[a+w]&&(o[P[t[a+w]]++]=w);if(0===e?(B=V=o,g=19):1===e?(B=e1,S-=257,V=e0,H-=257,g=256):(B=e2,V=e3,g=-1),L=0,w=0,y=x,h=l,M=k,C=0,c=-1,p=(_=1<<k)-1,1===e&&_>852||2===e&&_>592)return 1;for(;;){u=y-C,o[w]<g?(f=0,m=o[w]):o[w]>g?(f=V[H+o[w]],m=B[S+o[w]]):(f=96,m=0),n=1<<y-C,x=d=1<<M;do s[h+(L>>C)+(d-=n)]=u<<24|f<<16|m;while(0!==d)for(n=1<<y-1;L&n;)n>>=1;if(0!==n?(L&=n-1,L+=n):L=0,w++,0==--A[y]){if(y===b)break;y=t[a+o[w]]}if(y>k&&(L&p)!==c){for(0===C&&(C=k),h+=x,z=1<<(M=y-C);M+C<b&&!((z-=A[M+C])<=0);)M++,z<<=1;if(_+=1<<M,1===e&&_>852||2===e&&_>592)return 1;s[c=L&p]=k<<24|M<<16|h-l}}return 0!==L&&(s[h+L]=y-C<<24|4194304),r.bits=k,0};let{Z_FINISH:e4,Z_BLOCK:e6,Z_TREES:e7,Z_OK:e8,Z_STREAM_END:e9,Z_NEED_DICT:te,Z_STREAM_ERROR:tt,Z_DATA_ERROR:ta,Z_MEM_ERROR:ti,Z_BUF_ERROR:ts,Z_DEFLATED:tl}=Y,to=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function tr(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let tn=e=>{if(!e||!e.state)return tt;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,(e=>{if(!e||!e.state)return tt;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,e8})(e)},td=!0,tc=e=>{if(td){o=new Int32Array(512),r=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(e5(1,e.lens,0,288,o,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;e5(2,e.lens,0,32,r,0,e.work,{bits:5}),td=!1}e.lencode=o,e.lenbits=9,e.distcode=r,e.distbits=5},tp=(e,t,a,i)=>{let s,l=e.state;return null===l.window&&(l.wsize=1<<l.wbits,l.wnext=0,l.whave=0,l.window=new Uint8Array(l.wsize)),i>=l.wsize?(l.window.set(t.subarray(a-l.wsize,a),0),l.wnext=0,l.whave=l.wsize):((s=l.wsize-l.wnext)>i&&(s=i),l.window.set(t.subarray(a-i,a-i+s),l.wnext),(i-=s)?(l.window.set(t.subarray(a-i,a),0),l.wnext=i,l.whave=l.wsize):(l.wnext+=s,l.wnext===l.wsize&&(l.wnext=0),l.whave<l.wsize&&(l.whave+=s))),0};var th=(e,t)=>{let a,i,s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_=0,L=new Uint8Array(4),B=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return tt;12===(a=e.state).mode&&(a.mode=13),o=e.next_out,s=e.output,n=e.avail_out,l=e.next_in,i=e.input,r=e.avail_in,d=a.hold,c=a.bits,p=r,h=n,M=e8;a:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(2&a.wrap&&35615===d){a.check=0,L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0),d=0,c=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&d)<<8)+(d>>8))%31){e.msg="incorrect header check",a.mode=30;break}if((15&d)!==tl){e.msg="unknown compression method",a.mode=30;break}if(d>>>=4,c-=4,k=(15&d)+8,0===a.wbits)a.wbits=k;else if(k>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,e.adler=a.check=1,a.mode=512&d?10:12,d=0,c=0;break;case 2:for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(a.flags=d,(255&a.flags)!==tl){e.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){e.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=d>>8&1),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0,a.mode=3;case 3:for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.head&&(a.head.time=d),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,L[2]=d>>>16&255,L[3]=d>>>24&255,a.check=T(a.check,L,4,0)),d=0,c=0,a.mode=4;case 4:for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.head&&(a.head.xflags=255&d,a.head.os=d>>8),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0,a.mode=5;case 5:if(1024&a.flags){for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.length=d,a.head&&(a.head.extra_len=d),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&((g=a.length)>r&&(g=r),g&&(a.head&&(k=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(l,l+g),k)),512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,a.length-=g),a.length))break a;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===r)break a;g=0;do k=i[l+g++],a.head&&k&&a.length<65536&&(a.head.name+=String.fromCharCode(k));while(k&&g<r)if(512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,k)break a}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===r)break a;g=0;do k=i[l+g++],a.head&&k&&a.length<65536&&(a.head.comment+=String.fromCharCode(k));while(k&&g<r)if(512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,k)break a}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d!==(65535&a.check)){e.msg="header crc mismatch",a.mode=30;break}d=0,c=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}e.adler=a.check=to(d),d=0,c=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,te;e.adler=a.check=1,a.mode=12;case 12:if(t===e6||t===e7)break a;case 13:if(a.last){d>>>=7&c,c-=7&c,a.mode=27;break}for(;c<3;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}switch(a.last=1&d,c-=1,3&(d>>>=1)){case 0:a.mode=14;break;case 1:if(tc(a),a.mode=20,t===e7){d>>>=2,c-=2;break a}break;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}d>>>=2,c-=2;break;case 14:for(d>>>=7&c,c-=7&c;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if((65535&d)!=(d>>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&d,d=0,c=0,a.mode=15,t===e7)break a;case 15:a.mode=16;case 16:if(g=a.length){if(g>r&&(g=r),g>n&&(g=n),0===g)break a;s.set(i.subarray(l,l+g),o),r-=g,l+=g,n-=g,o+=g,a.length-=g;break}a.mode=12;break;case 17:for(;c<14;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(a.nlen=(31&d)+257,c-=5,a.ndist=(31&(d>>>=5))+1,c-=5,a.ncode=(15&(d>>>=5))+4,d>>>=4,c-=4,a.nlen>286||a.ndist>30){e.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;c<3;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.lens[B[a.have++]]=7&d,d>>>=3,c-=3}for(;a.have<19;)a.lens[B[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,C={bits:a.lenbits},M=e5(0,a.lens,0,19,a.lencode,0,a.work,C),a.lenbits=C.bits,M){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;m=(_=a.lencode[d&(1<<a.lenbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(y<16)d>>>=m,c-=m,a.lens[a.have++]=y;else{if(16===y){for(z=m+2;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d>>>=m,c-=m,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}k=a.lens[a.have-1],g=3+(3&d),d>>>=2,c-=2}else if(17===y){for(z=m+3;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=m,c-=m,k=0,g=3+(7&d),d>>>=3,c-=3}else{for(z=m+7;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=m,c-=m,k=0,g=11+(127&d),d>>>=7,c-=7}if(a.have+g>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;g--;)a.lens[a.have++]=k}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,C={bits:a.lenbits},M=e5(1,a.lens,0,a.nlen,a.lencode,0,a.work,C),a.lenbits=C.bits,M){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,C={bits:a.distbits},M=e5(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,C),a.distbits=C.bits,M){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,t===e7)break a;case 20:a.mode=21;case 21:if(r>=6&&n>=258){e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,eQ(e,h),o=e.next_out,s=e.output,n=e.avail_out,l=e.next_in,i=e.input,r=e.avail_in,d=a.hold,c=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;m=(_=a.lencode[d&(1<<a.lenbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(v&&(240&v)==0){for(w=m,x=v,b=y;m=(_=a.lencode[b+((d&(1<<w+x)-1)>>w)])>>>24,v=_>>>16&255,y=65535&_,!(w+m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=w,c-=w,a.back+=w}if(d>>>=m,c-=m,a.back+=m,a.length=y,0===v){a.mode=26;break}if(32&v){a.back=-1,a.mode=12;break}if(64&v){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&v,a.mode=22;case 22:if(a.extra){for(z=a.extra;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.length+=d&(1<<a.extra)-1,d>>>=a.extra,c-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;m=(_=a.distcode[d&(1<<a.distbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if((240&v)==0){for(w=m,x=v,b=y;m=(_=a.distcode[b+((d&(1<<w+x)-1)>>w)])>>>24,v=_>>>16&255,y=65535&_,!(w+m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=w,c-=w,a.back+=w}if(d>>>=m,c-=m,a.back+=m,64&v){e.msg="invalid distance code",a.mode=30;break}a.offset=y,a.extra=15&v,a.mode=24;case 24:if(a.extra){for(z=a.extra;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.offset+=d&(1<<a.extra)-1,d>>>=a.extra,c-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===n)break a;if(g=h-n,a.offset>g){if((g=a.offset-g)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}g>a.wnext?(g-=a.wnext,u=a.wsize-g):u=a.wnext-g,g>a.length&&(g=a.length),f=a.window}else f=s,u=o-a.offset,g=a.length;g>n&&(g=n),n-=g,a.length-=g;do s[o++]=f[u++];while(--g)0===a.length&&(a.mode=21);break;case 26:if(0===n)break a;s[o++]=a.length,n--,a.mode=21;break;case 27:if(a.wrap){for(;c<32;){if(0===r)break a;r--,d|=i[l++]<<c,c+=8}if(h-=n,e.total_out+=h,a.total+=h,h&&(e.adler=a.check=a.flags?T(a.check,s,h,o-h):U(a.check,s,h,o-h)),h=n,(a.flags?d:to(d))!==a.check){e.msg="incorrect data check",a.mode=30;break}d=0,c=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d!==(0|a.total)){e.msg="incorrect length check",a.mode=30;break}d=0,c=0}a.mode=29;case 29:M=e9;break a;case 30:M=ta;break a;case 31:return ti;default:return tt}return e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,(a.wsize||h!==e.avail_out&&a.mode<30&&(a.mode<27||t!==e4))&&tp(e,e.output,e.next_out,h-e.avail_out),p-=e.avail_in,h-=e.avail_out,e.total_in+=p,e.total_out+=h,a.total+=h,a.wrap&&h&&(e.adler=a.check=a.flags?T(a.check,s,h,e.next_out-h):U(a.check,s,h,e.next_out-h)),e.data_type=a.bits+64*!!a.last+128*(12===a.mode)+256*(20===a.mode||15===a.mode),(0===p&&0===h||t===e4)&&M===e8&&(M=ts),M},tg=e=>{if(!e||!e.state)return tt;let t=e.state;return t.window&&(t.window=null),e.state=null,e8},tu=(e,t)=>{let a,i=t.length;return e&&e.state&&(0===(a=e.state).wrap||11===a.mode)?11===a.mode&&U(1,t,i,0)!==a.check?ta:tp(e,t,i,i)?(a.mode=31,ti):(a.havedict=1,e8):tt},tf=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};let tm=Object.prototype.toString,{Z_NO_FLUSH:tv,Z_FINISH:ty,Z_OK:tw,Z_STREAM_END:tx,Z_NEED_DICT:tb,Z_STREAM_ERROR:tk,Z_DATA_ERROR:tM,Z_MEM_ERROR:tC}=Y;function tz(e){this.options=eH({chunkSize:65536,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits)==0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eX,this.strm.avail_out=0;let a=((e,t)=>{if(!e)return tt;let a=new tr;e.state=a,a.window=null;let i=((e,t)=>{let a;if(!e||!e.state)return tt;let i=e.state;return(t<0?(a=0,t=-t):(a=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?tt:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=a,i.wbits=t,tn(e))})(e,t);return i!==e8&&(e.state=null),i})(this.strm,t.windowBits);if(a!==tw||(this.header=new tf,((e,t)=>{if(!e||!e.state)return;let a=e.state;return(2&a.wrap)==0||(a.head=t,t.done=!1)})(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=eE(t.dictionary):"[object ArrayBuffer]"===tm.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw)&&(a=tu(this.strm,t.dictionary))!==tw))throw Error($[a])}function t_(e,t){let a=new tz(t);if(a.push(e),a.err)throw a.msg||$[a.err];return a.result}tz.prototype.push=function(e,t){let a,i,s,l=this.strm,o=this.options.chunkSize,r=this.options.dictionary;if(this.ended)return!1;for(i=t===~~t?t:!0===t?ty:tv,"[object ArrayBuffer]"===tm.call(e)?l.input=new Uint8Array(e):l.input=e,l.next_in=0,l.avail_in=l.input.length;;){for(0===l.avail_out&&(l.output=new Uint8Array(o),l.next_out=0,l.avail_out=o),(a=th(l,i))===tb&&r&&((a=tu(l,r))===tw?a=th(l,i):a===tM&&(a=tb));l.avail_in>0&&a===tx&&l.state.wrap>0&&0!==e[l.next_in];)tn(l),a=th(l,i);switch(a){case tk:case tM:case tb:case tC:return this.onEnd(a),this.ended=!0,!1}if(s=l.avail_out,l.next_out&&(0===l.avail_out||a===tx))if("string"===this.options.to){let e=eU(l.output,l.next_out),t=l.next_out-e,a=eO(l.output,e);l.next_out=t,l.avail_out=o-t,t&&l.output.set(l.output.subarray(e,e+t),0),this.onData(a)}else this.onData(l.output.length===l.next_out?l.output:l.output.subarray(0,l.next_out));if(a!==tw||0!==s){if(a===tx)return a=tg(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===l.avail_in)break}}return!0},tz.prototype.onData=function(e){this.chunks.push(e)},tz.prototype.onEnd=function(e){e===tw&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=eq(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};let{Deflate:tL,deflate:tB,deflateRaw:tS,gzip:tA}={Deflate:eJ,deflate:eK,deflateRaw:function(e,t){return(t=t||{}).raw=!0,eK(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,eK(e,t)},constants:Y},{Inflate:tP,inflate:tV,inflateRaw:tH,ungzip:tq}={Inflate:tz,inflate:t_,inflateRaw:function(e,t){return(t=t||{}).raw=!0,t_(e,t)},ungzip:t_,constants:Y};a.d(t,{Gy:()=>tL,Kc:()=>tB,UD:()=>tV})},117(e,t,a){let i;a.d(t,{x3j:()=>rt,aoY:()=>ve,$BZ:()=>m9,y15:()=>oF,OvW:()=>r1,Txp:()=>r4,Q5o:()=>u6,Hdr:()=>s$,UA7:()=>fm,JHX:()=>rG,yEg:()=>oT,UhG:()=>oI,OFB:()=>m8,Yep:()=>va,z4o:()=>sl,Ahp:()=>vt,txp:()=>u8,rRT:()=>fv});var s=a(2718),l=a(1179),o=a(2842),r=a(4238),n=a(5633),d=a(2109),c=a(7086),p=a(2981);let h=["flowchart","mindmap","sequence","timeline","chart","state-machine","gantt","er","class","org-chart"],g=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function u(e){return e.length<=64&&g.test(e)}let f=s.ukk,m=s.mSG(s.QfV,s.$r1),v=Object.freeze({paper:"#f6f1e7",card:"#fffdf8",ink:"#1a1712",accent:"#8f707f"}),y=Object.freeze({accentColor:v.accent,backgroundColor:v.card});function w(e,t){return e.pipe(s.tiU(o.PyW(t)))}s.xCb(h);let x=s.xCb(["flowchart","mindmap"]),b=s.xCb(["TB","BT","LR","RL"]),k=s.xCb(["straight","orthogonal","curved"]);class M extends s.Xsx("DiagramIconRef")({slug:f.check(s.Pto(g),s.NYj(64))}){}let C=["cloud","datacenter","region","zone","vpc","subnet","cluster","namespace"],z=s.xCb(C);class _ extends s.Xsx("DiagramGroup")({id:f,label:f,parent:s.lqM(f),kind:s.lqM(z)}){}class L extends s.Xsx("DiagramLane")({id:f,label:f}){}let B=["database","queue","document","storage"],S=s.xCb(B);class A extends s.Xsx("DiagramNode")({id:f,label:f,group:s.lqM(f),lane:s.lqM(f),kind:s.lqM(f),shape:s.lqM(S),icon:s.lqM(M),metadata:w(m,{})}){}class P extends A.extend("GraphNode")({description:s.lqM(f)}){}class V extends s.Xsx("DiagramEdge")({id:f,source:f,target:f,label:s.lqM(f),metadata:w(m,{})}){}let H=s.QfV.check(s.Pto(/^#[0-9a-fA-F]{6}$/));class q extends s.Xsx("DiagramStyle")({accentColor:w(H,y.accentColor),backgroundColor:w(H,y.backgroundColor)}){}class F extends s.Xsx("DiagramLayout")({direction:w(b,"LR"),edgeRouting:w(k,"orthogonal")}){}class I extends s.Xsx("IntermediateDiagram")({id:f,title:f,type:w(x,"flowchart"),nodes:s.O31(P).pipe(s.fXn).check(s.tJb(1)),edges:w(s.O31(V).pipe(s.fXn),[]),groups:s.lqM(s.O31(_).pipe(s.fXn)),lanes:s.lqM(s.O31(L).pipe(s.fXn)),layout:w(F,{direction:"LR",edgeRouting:"orthogonal"}),style:w(q,y),metadata:w(m,{})}){}class E extends Error{constructor(e){super(e),this.name="DiagramValidationError"}}let O=e=>{let t=new Set;for(let a of e){if(t.has(a))return a;t.add(a)}};function U(e){let t=O(e.nodes.map(e=>e.id));if(t)throw new E(`Duplicate node id "${t}" is not allowed.`);let a=O(e.edges.map(e=>e.id));if(a)throw new E(`Duplicate edge id "${a}" is not allowed.`);let i=O((e.groups??[]).map(e=>e.id));if(i)throw new E(`Duplicate group id "${i}" is not allowed.`);let s=new Set((e.groups??[]).map(e=>e.id)),l=new Map((e.groups??[]).flatMap(e=>void 0===e.parent?[]:[[e.id,e.parent]]));for(let[e,t]of l){if(!s.has(t))throw new E(`Group "${e}" references missing parent group "${t}".`);let a=new Set([e]);for(let t=l.get(e);void 0!==t;){if(a.has(t))throw new E(`Group "${e}" is nested inside itself.`);a.add(t),t=l.get(t)}}for(let t of e.nodes)if(void 0!==t.group&&!s.has(t.group))throw new E(`Node "${t.id}" references missing group "${t.group}".`);let o=e.lanes??[],r=O(o.map(e=>e.id));if(r)throw new E(`Duplicate lane id "${r}" is not allowed.`);if(o.length>0&&(e.groups??[]).length>0)throw new E("A diagram with lanes cannot also declare groups.");let n=new Set(o.map(e=>e.id));for(let t of e.nodes){if(void 0!==t.lane&&!n.has(t.lane))throw new E(`Node "${t.id}" references missing lane "${t.lane}".`);if(void 0===t.lane&&n.size>0)throw new E(`Node "${t.id}" has no lane.`)}let d=new Set(e.nodes.map(e=>e.id));for(let t of e.edges){if(!d.has(t.source))throw new E(`Edge "${t.id}" references missing source node "${t.source}".`);if(!d.has(t.target))throw new E(`Edge "${t.id}" references missing target node "${t.target}".`);if(t.source===t.target)throw new E(`Edge "${t.id}" cannot connect node "${t.source}" to itself.`)}return e}function X(e){return U(s.svK(I,{errors:"all"})(e))}let T="chart",$=["bar","line","pie"],Y=["vertical","horizontal"],G=s.xCb($),R=s.xCb(Y);class D extends s.Xsx("ChartSeries")({name:s.Qrq(s.ukk),values:s.O31(s.wYs).pipe(s.fXn)}){}class Z extends s.Xsx("ChartDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(T),kind:G,categories:s.O31(s.ukk).pipe(s.fXn,s.Sr8(s.tJb(1))),series:s.O31(D).pipe(s.fXn,s.Sr8(s.tJb(1))),unit:s.Qrq(s.ukk),categoryAxisTitle:s.Qrq(s.ukk),valueAxisTitle:s.Qrq(s.ukk),stacked:s.Qrq(s.v8c),donut:s.Qrq(s.v8c),orientation:s.Qrq(R),style:q.pipe(s.tiU(o.PyW({...y})))}){}let j=e=>e.trim().toLowerCase();function N(e){let t=[],{categories:a,kind:i,series:s}=e,l="pie"===i,o=l?8:40;a.length>o&&t.push({code:"chart_too_large",path:"categories",message:`A ${i} chart supports at most ${o} ${l?"slices":"categories"}.`,hint:l?'Fold the smallest slices into one "Other" slice, or use a bar chart.':"Group categories, or split the data into several charts."}),s.length>6&&t.push({code:"chart_too_large",path:"series",message:"A chart supports at most 6 series.",hint:"Keep the series the request compares, or split them into several charts."}),a.length*s.length>120&&t.push({code:"chart_too_large",path:"series",message:"A chart supports at most 120 values (categories × series).",hint:"Split the data into several charts."});let r=new Set;a.forEach((e,a)=>{r.has(j(e))&&t.push({code:"duplicate_chart_category",path:`categories.[${a}]`,message:`Category "${e}" is listed more than once.`,hint:"List each category once; put its values for every series at the same position."}),r.add(j(e))}),l&&1!==s.length&&t.push({code:"invalid_chart_series",path:"series",message:"A pie chart has exactly one series.",hint:"Use one series of slice values, or a grouped bar chart to compare several series."});let n=new Set;s.forEach((e,i)=>{let o=`series.[${i}]`;s.length>1&&void 0===e.name&&t.push({code:"invalid_chart_series",path:`${o}.name`,message:`Series ${i+1} needs a name for the legend.`,hint:"Name every series when a chart has more than one."}),void 0!==e.name&&(n.has(j(e.name))&&t.push({code:"invalid_chart_series",path:`${o}.name`,message:`Series name "${e.name}" is used more than once.`,hint:"Give each series a distinct name."}),n.add(j(e.name))),e.values.length!==a.length&&t.push({code:"chart_series_mismatch",path:`${o}.values`,message:`Series ${e.name?`"${e.name}"`:i+1} has ${e.values.length} values for ${a.length} categories.`,hint:"Give every series exactly one value per category, in category order."}),l&&e.values.some(e=>e<0)&&t.push({code:"invalid_chart_value",path:`${o}.values`,message:"Pie slice values cannot be negative.",hint:"Use a bar chart for data with negative values."})}),l&&s[0]&&!s[0].values.some(e=>e>0)&&t.push({code:"invalid_chart_value",path:"series.[0].values",message:"A pie chart needs at least one positive slice value.",hint:"Supply the slice values from the request."});let d=(e,a,i,s)=>{a||t.push({code:"invalid_chart_option",path:e,message:i,hint:s})};for(let t of(e.stacked&&d("stacked","bar"===i,"Only bar charts stack.",'Remove stacked, or use kind: "bar".'),e.donut&&d("donut",l,"Only pie charts draw as a donut.",'Remove donut, or use kind: "pie".'),void 0!==e.orientation&&d("orientation","bar"===i,"Only bar charts have an orientation.","Remove orientation for line and pie charts."),["categoryAxisTitle","valueAxisTitle"]))void 0!==e[t]&&d(t,!l,"A pie chart has no axes.",`Remove ${t} from the pie chart.`);return t.slice(0,20)}class W extends E{issues;constructor(e){super(e[0]?.message??"Chart failed validation."),this.issues=e,this.name="ChartValidationError"}}function J(e){let t=N(e);if(t.length)throw new W(t);return e}J(s.svK(Z,{errors:"all"})({id:"quarterly-revenue-chart",title:"Quarterly revenue",type:"chart",kind:"bar",categories:["Q1","Q2","Q3","Q4"],series:[{name:"2025",values:[42,51,47,63]},{name:"2026",values:[48,57,61,72]}],unit:"$M",categoryAxisTitle:"Quarter",valueAxisTitle:"Revenue"}));let K="timeline",Q=["event","milestone"],ee=s.xCb(Q);class et extends s.Xsx("TimelineEvent")({id:s.ukk,label:s.ukk,date:s.Qrq(s.ukk),end:s.Qrq(s.ukk),order:s.Qrq(s.wYs),kind:s.Qrq(ee),lane:s.Qrq(s.ukk),description:s.Qrq(s.ukk)}){}class ea extends s.Xsx("TimelineDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(K),events:s.O31(et).pipe(s.fXn,s.Sr8(s.tJb(1))),lanes:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),today:s.Qrq(s.ukk),style:q.pipe(s.tiU(o.PyW({...y})))}){}let ei=/^(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?(Z|[+-]\d{2}:\d{2}))?)?)?$/u;function es(e,t,a,i=0,s=0,l=0,o=0){let r=new Date(0);return r.setUTCFullYear(e,t-1,a),r.setUTCHours(i,s,l,o),r.getTime()}function el(e){let t=ei.exec(e);if(!t)return;let[,a,i,s,l,o,r,n,d]=t,c=Number(a),p=void 0===i?1:Number(i),h=void 0===s?1:Number(s);if(p<1||p>12||h<1||h>new Date(es(c,p+1,0)).getUTCDate())return;if(void 0===l){let e=void 0!==s?"day":void 0!==i?"month":"year",t=es(c,p,h),a="day"===e?es(c,p,h+1):"month"===e?es(c,p+1,1):es(c+1,1,1);return{granularity:e,start:t,end:a,fields:{year:c,month:p,day:h,hour:0,minute:0,second:0,millisecond:0}}}let g=Number(l),u=Number(o),f=void 0===r?0:Number(r),m=void 0===n?0:Number(n.padEnd(3,"0"));if(g>23||u>59||f>59||void 0===d)return;let v=0;if("Z"!==d){let e=Number(d.slice(1,3)),t=Number(d.slice(4,6));if(e>14||t>59)return;v=(d.startsWith("-")?-1:1)*(60*e+t)}let y=es(c,p,h,g,u,f,m)-6e4*v;return{granularity:"instant",start:y,end:y,fields:{year:c,month:p,day:h,hour:g,minute:u,second:f,millisecond:m},offsetMinutes:v}}let eo="Use YYYY, YYYY-MM, YYYY-MM-DD, or YYYY-MM-DDTHH:mm[:ss] with Z or ±HH:MM, copied from the source.";function er(e){if(e.lanes)return[...e.lanes];let t=[];for(let a of eh(e))void 0===a.lane||t.includes(a.lane)||t.push(a.lane);return t}function en(e){let t=[];(0===e.events.length||e.events.length>60)&&t.push({code:"timeline_too_large",path:"events",message:"Timeline needs 1–60 events.",hint:"Provide at least one event, or split a longer chronology into timelines."});let a=new Set,i=e.events[0]?.date!==void 0,s=void 0!==e.lanes||e.events.some(e=>e.lane);return e.events.forEach((l,o)=>{let r=`events.[${o}]`;a.has(l.id)&&t.push({code:"duplicate_event_id",path:`${r}.id`,message:`Event id "${l.id}" is duplicated.`,hint:"Give each event a unique stable id."}),a.add(l.id);let n=void 0===l.date?void 0:el(l.date);if(void 0===l.date||n||t.push({code:"invalid_timeline_date",path:`${r}.date`,message:`Event "${l.id}" has invalid date "${l.date}".`,hint:eo}),(void 0!==l.date==(void 0!==l.order)||void 0!==l.date!==i)&&t.push({code:"invalid_timeline_order",path:r,message:"Every event must use exactly one chronology field, with the same date or order mode throughout.",hint:"Supply dates for all events, or numeric order for all events; never invent a missing date."}),void 0!==l.end){let e=el(l.end);e?(void 0===l.date||"milestone"===l.kind||n&&e.end<=n.start)&&t.push({code:"invalid_timeline_span",path:`${r}.end`,message:`Span "${l.id}" needs a date, an end on or after it, and no milestone kind.`,hint:"Use end only for dated phases; a milestone is a single point."}):t.push({code:"invalid_timeline_date",path:`${r}.end`,message:`Event "${l.id}" has invalid end "${l.end}".`,hint:eo})}s&&(void 0===l.lane||e.lanes&&!e.lanes.includes(l.lane))&&t.push({code:"invalid_timeline_lane",path:`${r}.lane`,message:`Event "${l.id}" needs one of the timeline's lanes.`,hint:"Give every event a lane listed in lanes, or omit lanes everywhere."})}),e.lanes&&new Set(e.lanes).size!==e.lanes.length&&t.push({code:"invalid_timeline_lane",path:"lanes",message:"Lane names must be unique.",hint:"List each lane once, in top-to-bottom order."}),er(e).length>6&&t.push({code:"timeline_too_large",path:"lanes",message:"Timeline supports at most 6 lanes.",hint:"Merge related tracks or split the chronology into timelines."}),void 0===e.today||i&&void 0!==el(e.today)||t.push({code:"invalid_timeline_date",path:"today",message:`Today "${e.today}" must be a valid date on a dated timeline.`,hint:`${eo} Omit today unless the source states it.`}),t.slice(0,20)}class ed extends E{issues;constructor(e){super(e[0]?.message??"Timeline failed validation."),this.issues=e,this.name="TimelineValidationError"}}function ec(e){let t=en(e);if(t.length)throw new ed(t);return e}function ep(e){return void 0!==e.date?el(e.date)?.start??0/0:e.order??0}function eh(e){return e.events.toSorted((e,t)=>ep(e)-ep(t)||0)}ec(s.svK(ea,{errors:"all"})({id:"release-timeline",title:"Release milestones",type:"timeline",events:[{id:"plan",label:"Scope agreed",date:"2026-09-01"},{id:"beta",label:"Public beta",date:"2026-09-15",description:"Collect feedback from early users."},{id:"release",label:"General availability",date:"2026-10-01",kind:"milestone"}]}));let eg="flowchart",eu=s.xCb(["duplicate_node_id","duplicate_edge_id","missing_edge_source","missing_edge_target","self_loop","missing_start","multiple_starts","missing_end","start_has_incoming","end_has_outgoing","unreachable_node","missing_outgoing_edge","underbranched_decision","unlabeled_decision_branch","duplicate_decision_branch_label","nonterminating_node","flowchart_too_large","duplicate_group_id","unknown_node_group","empty_group","unknown_group_parent","group_cycle","shaped_decision","duplicate_lane_id","unknown_node_lane","empty_lane","lanes_with_groups"]);class ef extends s.Xsx("FlowchartValidationIssueRef")({kind:s.xCb(["diagram","node","edge","group","lane"]),id:s.lqM(s.ukk),path:s.lqM(s.ukk)}){}s.Xsx("FlowchartValidationIssue")({code:eu,ref:s.lqM(ef),message:s.ukk,hint:s.ukk});let em=s.xCb(["start","process","decision","end"]);class ev extends P.extend("FlowchartNode")({kind:em}){}class ey extends V.extend("FlowchartEdge")({label:s.lqM(s.ukk)}){}class ew extends I.extend("FlowchartDiagram")({type:s.uSQ(eg),nodes:s.O31(ev).pipe(s.fXn).check(s.tJb(2)),edges:s.O31(ey).pipe(s.fXn).check(s.tJb(1))}){}function ex(e){let t=new Set,a=new Set;for(let i of e)t.has(i)?a.add(i):t.add(i);return[...a]}function eb(e,t,a){let i=new Set,s=[...e];for(let e=0;e<s.length;e+=1){let l=s[e];if(!(void 0===l||i.has(l)))for(let e of(i.add(l),t.get(l)??[]))s.push(a(e))}return i}function ek(e){let t=[],a=new Set(e.nodes.map(e=>e.id)),{incoming:i,outgoing:s}=function(e){let t=new Map,a=new Map;for(let i of e)t.set(i.target,[...t.get(i.target)??[],i]),a.set(i.source,[...a.get(i.source)??[],i]);return{incoming:t,outgoing:a}}(e.edges);e.nodes.length>24&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"nodes"},message:`Flowchart has ${e.nodes.length} nodes; the supported maximum is 24.`,hint:"Split the workflow or combine lower-signal steps."}),e.edges.length>64&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"edges"},message:`Flowchart has ${e.edges.length} edges; the supported maximum is 64.`,hint:"Split the workflow or remove lower-signal connections."});let l=e.groups??[];for(let a of(l.length>8&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"groups"},message:`Flowchart has ${l.length} groups; the supported maximum is 8.`,hint:"Merge related groups or leave minor steps ungrouped."}),ex(l.map(e=>e.id))))t.push({code:"duplicate_group_id",ref:{kind:"group",id:a,path:"groups"},message:`Group id "${a}" is used more than once.`,hint:"Give every group a stable unique id."});let o=new Set(l.map(e=>e.id));for(let a of e.nodes)void 0===a.group||o.has(a.group)||t.push({code:"unknown_node_group",ref:{kind:"node",id:a.id,path:"nodes.group"},message:`Node "${a.id}" references undeclared group "${a.group}".`,hint:o.size>0?`Set group to a declared group id (${[...o].map(e=>`"${e}"`).join(", ")}) or declare "${a.group}" in groups.`:`Declare "${a.group}" in groups as { id, label }, or remove the node's group.`});t.push(...function(e){let t=e.groups??[],a=new Set(t.map(e=>e.id)),i=new Map(t.flatMap(e=>void 0!==e.parent&&a.has(e.parent)?[[e.id,e.parent]]:[])),s=[],l=0;for(let e of t){if(void 0!==e.parent&&!a.has(e.parent)){s.push({code:"unknown_group_parent",ref:{kind:"group",id:e.id,path:"groups.parent"},message:`Group "${e.id}" references undeclared parent group "${e.parent}".`,hint:`Set parent to the id of the declared group that encloses it (${[...a].map(e=>`"${e}"`).join(", ")}), or remove parent.`});continue}let t=[e.id],o=!1;for(let a=i.get(e.id);void 0!==a;){if(t.includes(a)){o=!0,a===e.id&&s.push({code:"group_cycle",ref:{kind:"group",id:e.id,path:"groups.parent"},message:`Group "${e.id}" is nested inside itself through ${[...t,a].map(e=>`"${e}"`).join(" in ")}.`,hint:"Set each group's parent to the group that encloses it; the outermost group has no parent."});break}t.push(a),a=i.get(a)}o||(l=Math.max(l,t.length))}return l>4&&s.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"groups.parent"},message:`Groups nest ${l} deep; the supported maximum is 4.`,hint:"Drop an intermediate zone, or merge a zone into its parent."}),s}(e));let r=new Set([...e.nodes.map(e=>e.group),...l.map(e=>e.parent)]);for(let e of l.filter(e=>!r.has(e.id)))t.push({code:"empty_group",ref:{kind:"group",id:e.id,path:"groups"},message:`Group "${e.id}" has no nodes.`,hint:"Set group on the nodes it holds, or remove the group."});for(let a of e.nodes)"decision"===a.kind&&void 0!==a.shape&&t.push({code:"shaped_decision",ref:{kind:"node",id:a.id,path:"nodes.shape"},message:`Decision node "${a.id}" cannot draw as a ${a.shape}.`,hint:"Remove shape from the decision; a decision always draws as a diamond."});for(let a of(t.push(...function(e){let t=e.lanes??[];if(0===t.length)return e.nodes.flatMap(e=>void 0===e.lane?[]:[{code:"unknown_node_lane",ref:{kind:"node",id:e.id,path:"nodes.lane"},message:`Node "${e.id}" references undeclared lane "${e.lane}".`,hint:`Declare "${e.lane}" in lanes as { id, label }, or remove the node's lane.`}]);let a=[];for(let i of(t.length>8&&a.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"lanes"},message:`Flowchart has ${t.length} lanes; the supported maximum is 8.`,hint:"Merge related actors into one lane."}),(e.groups??[]).length>0&&a.push({code:"lanes_with_groups",ref:{kind:"diagram",id:e.id,path:"groups"},message:"A flowchart with lanes cannot also declare groups.",hint:"Keep lanes for the actors and remove groups and every node's group."}),ex(t.map(e=>e.id))))a.push({code:"duplicate_lane_id",ref:{kind:"lane",id:i,path:"lanes"},message:`Lane id "${i}" is used more than once.`,hint:"Give every lane a stable unique id."});let i=new Set(t.map(e=>e.id)),s=[...i].map(e=>`"${e}"`).join(", ");for(let t of e.nodes)void 0!==t.lane&&i.has(t.lane)||a.push({code:"unknown_node_lane",ref:{kind:"node",id:t.id,path:"nodes.lane"},message:void 0===t.lane?`Node "${t.id}" has no lane.`:`Node "${t.id}" references undeclared lane "${t.lane}".`,hint:void 0===t.lane?`Set lane to the declared lane id (${s}) of the actor that does this step.`:`Set lane to a declared lane id (${s}) or declare "${t.lane}" in lanes.`});let l=new Set(e.nodes.map(e=>e.lane));for(let e of t.filter(e=>!l.has(e.id)))a.push({code:"empty_lane",ref:{kind:"lane",id:e.id,path:"lanes"},message:`Lane "${e.id}" has no nodes.`,hint:"Set lane on the steps this actor does, or remove the lane."});return a}(e)),ex(e.nodes.map(e=>e.id))))t.push({code:"duplicate_node_id",ref:{kind:"node",id:a,path:"nodes"},message:`Node id "${a}" is used more than once.`,hint:"Give every node a stable unique id."});for(let a of ex(e.edges.map(e=>e.id)))t.push({code:"duplicate_edge_id",ref:{kind:"edge",id:a,path:"edges"},message:`Edge id "${a}" is used more than once.`,hint:"Give every edge a stable unique id."});for(let i of e.edges)a.has(i.source)||t.push({code:"missing_edge_source",ref:{kind:"edge",id:i.id,path:"edges.source"},message:`Edge "${i.id}" references missing source node "${i.source}".`,hint:"Set edge.source to one of the diagram node ids."}),a.has(i.target)||t.push({code:"missing_edge_target",ref:{kind:"edge",id:i.id,path:"edges.target"},message:`Edge "${i.id}" references missing target node "${i.target}".`,hint:"Set edge.target to one of the diagram node ids."}),i.source===i.target&&t.push({code:"self_loop",ref:{kind:"edge",id:i.id},message:`Edge "${i.id}" connects node "${i.source}" to itself.`,hint:"Connect the edge to a different target node."});let n=e.nodes.filter(e=>"start"===e.kind),d=e.nodes.filter(e=>"end"===e.kind);for(let a of(0===n.length?t.push({code:"missing_start",ref:{kind:"diagram",id:e.id,path:"nodes"},message:"Flowchart must contain exactly one start node.",hint:'Mark the first node in the flow with kind: "start".'}):n.length>1&&t.push({code:"multiple_starts",ref:{kind:"diagram",id:e.id,path:"nodes"},message:`Flowchart has ${n.length} start nodes.`,hint:"Keep one start node and change the others to process, decision, or end."}),0===d.length&&t.push({code:"missing_end",ref:{kind:"diagram",id:e.id,path:"nodes"},message:"Flowchart must contain at least one end node.",hint:'Add an end node or mark terminal outcomes with kind: "end".'}),e.nodes)){let e=i.get(a.id)??[],l=s.get(a.id)??[];"start"===a.kind&&e.length>0&&t.push({code:"start_has_incoming",ref:{kind:"node",id:a.id},message:`Start node "${a.id}" cannot have incoming edges.`,hint:"Route the start node only to later nodes."}),"end"===a.kind&&l.length>0&&t.push({code:"end_has_outgoing",ref:{kind:"node",id:a.id},message:`End node "${a.id}" cannot have outgoing edges.`,hint:"End nodes must be terminal outcomes."}),"end"!==a.kind&&0===l.length&&t.push({code:"missing_outgoing_edge",ref:{kind:"node",id:a.id},message:`Node "${a.id}" must have at least one outgoing edge.`,hint:'Connect it to the next step, or mark it as kind: "end".'}),"decision"===a.kind&&t.push(...function(e,t){let a=[];t.length<2&&a.push({code:"underbranched_decision",ref:{kind:"node",id:e.id},message:`Decision node "${e.id}" must have at least two outgoing branches.`,hint:"Add at least two outgoing edges for the decision outcomes."});let i=t.map(e=>e.label?.trim()??"");for(let i of t.filter(e=>!e.label?.trim()))a.push({code:"unlabeled_decision_branch",ref:{kind:"edge",id:i.id,path:"edges.label"},message:`Decision node "${e.id}" has an outgoing branch without a label.`,hint:'Add a short branch label such as "yes", "no", "approved", or "rejected".'});for(let t of ex(i.filter(e=>e.length>0).map(e=>e.toLowerCase())))a.push({code:"duplicate_decision_branch_label",ref:{kind:"node",id:e.id},message:`Decision node "${e.id}" repeats branch label "${t}".`,hint:"Make every outgoing branch label from the same decision unique."});return a}(a,l))}let c=1===n.length?n[0]:void 0;if(c){let a=eb([c.id],s,e=>e.target);for(let i of e.nodes)a.has(i.id)||t.push({code:"unreachable_node",ref:{kind:"node",id:i.id},message:`Node "${i.id}" is not reachable from the start node.`,hint:"Connect every node to the flow that begins at the single start node."});if(d.length>0){let l=eb(d.map(e=>e.id),i,e=>e.source);for(let i of e.nodes)a.has(i.id)&&!l.has(i.id)&&(s.get(i.id)?.length??0)>0&&t.push({code:"nonterminating_node",ref:{kind:"node",id:i.id},message:`Node "${i.id}" cannot reach an end node.`,hint:"Add an eventual exit from this path to an end node; retry loops are valid when they retain an exit."})}}return t.slice(0,20)}class eM extends E{issues;constructor(e){super(e[0]?.message??"Flowchart failed semantic validation."),this.issues=e,this.name="FlowchartValidationError"}}function eC(e){let t=ek(e);if(t.length>0)throw new eM(t);return e}function ez(e){return eC(s.svK(ew,{errors:"all"})(e))}ez({id:"onboarding-flow",title:"Sketchi onboarding decision flow",type:eg,nodes:[{id:"prompt",label:"Prompt received",kind:"start"},{id:"requirements",label:"Extract requirements",kind:"process"},{id:"clear",label:"Scope clear?",kind:"decision"},{id:"draft",label:"Draft typed IR",kind:"process"},{id:"review",label:"Review diagram",kind:"end"}],edges:[{id:"prompt-requirements",source:"prompt",target:"requirements"},{id:"requirements-clear",source:"requirements",target:"clear"},{id:"clear-draft",source:"clear",target:"draft",label:"yes"},{id:"clear-review",source:"clear",target:"review",label:"no"},{id:"draft-review",source:"draft",target:"review"}],layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"pharma-batch-disposition",title:"Pharma batch disposition flow",type:eg,nodes:[{id:"batch-received",label:"Batch received",kind:"start"},{id:"qa-review",label:"QA reviews Certificate of Analysis",kind:"process"},{id:"passes-specs",label:"Passes specs?",kind:"decision"},{id:"final-review",label:"QA Manager final review",kind:"process"},{id:"packaging",label:"Send to packaging",kind:"end"},{id:"investigate",label:"Investigate retesting",kind:"process"},{id:"reject",label:"Reject batch",kind:"end"}],edges:[{id:"batch-qa",source:"batch-received",target:"qa-review"},{id:"qa-specs",source:"qa-review",target:"passes-specs"},{id:"specs-pass",source:"passes-specs",target:"final-review",label:"yes"},{id:"specs-investigate",source:"passes-specs",target:"investigate",label:"retest"},{id:"specs-reject",source:"passes-specs",target:"reject",label:"reject"},{id:"review-packaging",source:"final-review",target:"packaging"},{id:"investigate-review",source:"investigate",target:"final-review"}],layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"deploy-pipeline-logos",title:"Deploy pipeline",type:eg,nodes:[{id:"push",label:"Push to GitHub",kind:"start",icon:{slug:"github"}},{id:"build",label:"Build the Docker image",kind:"process",icon:{slug:"docker"}},{id:"tests",label:"Tests pass?",kind:"decision",icon:{slug:"vitest"}},{id:"fix",label:"Fix the failing tests",kind:"process"},{id:"ship",label:"Ship to Cloudflare Workers",kind:"end",icon:{slug:"cloudflare"}}],edges:[{id:"push-build",source:"push",target:"build"},{id:"build-tests",source:"build",target:"tests"},{id:"tests-ship",source:"tests",target:"ship",label:"yes"},{id:"tests-fix",source:"tests",target:"fix",label:"no"},{id:"fix-build",source:"fix",target:"build"}],layout:{direction:"TB",edgeRouting:"orthogonal"}});let e_="mindmap";class eL extends s.Xsx("MindmapNodeMetadata")({depth:s.Aiz.check(s.OWK(0)),siblingIndex:s.Aiz.check(s.OWK(0))}){}class eB extends A.extend("MindmapNode")({kind:s.xCb(["root","topic"]),metadata:eL}){}class eS extends s.Xsx("MindmapEdgeMetadata")({depth:s.Aiz.check(s.yJO(0)),siblingIndex:s.Aiz.check(s.OWK(0))}){}class eA extends V.extend("MindmapEdge")({metadata:eS}){}class eP extends I.extend("MindmapDiagram")({type:s.uSQ(e_),nodes:s.O31(eB).pipe(s.fXn).check(s.tJb(2)),edges:s.O31(eA).pipe(s.fXn).check(s.tJb(1))}){}function eV(e){U(e);let t=e.nodes.filter(e=>"root"===e.kind);if(1!==t.length)throw new E(`Mindmap must contain exactly one root topic; found ${t.length}.`);let a=t[0];if(!a||0!==a.metadata.depth)throw new E("Mindmap root topic must have depth 0.");let i=new Map,s=new Map(e.nodes.map(e=>[e.id,e])),l=new Map;for(let t of e.edges){i.set(t.target,(i.get(t.target)??0)+1);let e=s.get(t.source)?.metadata.depth,a=s.get(t.target),o=a?.metadata.depth;if(void 0===e||o!==e+1)throw new E(`Mindmap edge "${t.id}" must connect a topic to its immediate child.`);if(!a||t.metadata.depth!==a.metadata.depth||t.metadata.siblingIndex!==a.metadata.siblingIndex)throw new E(`Mindmap edge "${t.id}" metadata must match its child topic.`);l.set(t.source,[...l.get(t.source)??[],a.metadata.siblingIndex])}for(let t of e.nodes){let e=i.get(t.id)??0;if(t.id===a.id?0!==e:1!==e)throw new E(`Mindmap topic "${t.id}" must have ${t.id===a.id?"no parent":"exactly one parent"}.`)}for(let[e,t]of l){let a=t.map((e,t)=>t);if([...t].sort((e,t)=>e-t).some((e,t)=>e!==a[t]))throw new E(`Mindmap children of "${e}" must use contiguous sibling ordering from 0.`)}return e}function eH(e){return eV(s.svK(eP,{errors:"all"})(e))}eH({id:"public-mindmap-capability",title:"Public mindmap generation",type:e_,nodes:[{id:"topic-0",label:"Public mindmaps",kind:"root",metadata:{depth:0,siblingIndex:0}},{id:"topic-0-0",label:"Semantic input",kind:"topic",metadata:{depth:1,siblingIndex:0}},{id:"topic-0-0-0",label:"Nested topics",kind:"topic",metadata:{depth:2,siblingIndex:0}},{id:"topic-0-0-1",label:"Stable ordering",kind:"topic",metadata:{depth:2,siblingIndex:1}},{id:"topic-0-1",label:"Artifact output",kind:"topic",metadata:{depth:1,siblingIndex:1}},{id:"topic-0-1-0",label:"Scene",kind:"topic",metadata:{depth:2,siblingIndex:0}},{id:"topic-0-1-1",label:"Excalidraw",kind:"topic",metadata:{depth:2,siblingIndex:1}}],edges:[{id:"branch-0-0",source:"topic-0",target:"topic-0-0",metadata:{depth:1,siblingIndex:0}},{id:"branch-0-0-0",source:"topic-0-0",target:"topic-0-0-0",metadata:{depth:2,siblingIndex:0}},{id:"branch-0-0-1",source:"topic-0-0",target:"topic-0-0-1",metadata:{depth:2,siblingIndex:1}},{id:"branch-0-1",source:"topic-0",target:"topic-0-1",metadata:{depth:1,siblingIndex:1}},{id:"branch-0-1-0",source:"topic-0-1",target:"topic-0-1-0",metadata:{depth:2,siblingIndex:0}},{id:"branch-0-1-1",source:"topic-0-1",target:"topic-0-1-1",metadata:{depth:2,siblingIndex:1}}],layout:{direction:"LR",edgeRouting:"curved"}});let eq="sequence",eF=["message","return"],eI=["solid","dashed"],eE=":lifeline";function eO(e){return`${e}${eE}`}let eU=s.xCb(eF),eX=s.xCb(eI);class eT extends s.Xsx("SequenceParticipant")({id:s.ukk,label:s.ukk,kind:s.Qrq(s.ukk),icon:s.Qrq(M)}){}class e$ extends s.Xsx("SequenceMessage")({id:s.ukk,source:s.ukk,target:s.ukk,label:s.ukk,type:s.Qrq(eU),style:s.Qrq(eX)}){}class eY extends s.Xsx("SequenceDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(eq),participants:s.O31(eT).pipe(s.fXn,s.Sr8(s.tJb(1))),messages:s.O31(e$).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let eG=s.xCb(["sequence_too_large","duplicate_participant_id","lifeline_id_collision","duplicate_message_id","missing_message_source","missing_message_target"]);function eR(e){let t=[];e.participants.length>12&&t.push({code:"sequence_too_large",path:"participants",message:`Sequence diagram has ${e.participants.length} participants; the supported maximum is 12.`,hint:"Combine minor actors or split the interaction into several diagrams."}),e.messages.length>40&&t.push({code:"sequence_too_large",path:"messages",message:`Sequence diagram has ${e.messages.length} messages; the supported maximum is 40.`,hint:"Split the interaction into phases or drop lower-signal messages."});let a=new Map;for(let i of(e.participants.forEach((e,i)=>{a.has(e.id)?t.push({code:"duplicate_participant_id",path:`participants.[${i}].id`,message:`Participant id "${e.id}" is duplicated.`,hint:"Give every participant a unique stable id and update message references."}):a.set(e.id,i)}),e.participants)){let a=eO(i.id);e.participants.forEach((e,s)=>{(e.id===a||e.id.startsWith(`${a}:`))&&t.push({code:"lifeline_id_collision",path:`participants.[${s}].id`,message:`Participant id "${e.id}" collides with the generated lifeline for "${i.id}".`,hint:`Rename the participant so its id does not start with another participant id followed by ${eE}.`})})}let i=new Set;return e.messages.forEach((e,s)=>{i.has(e.id)&&t.push({code:"duplicate_message_id",path:`messages.[${s}].id`,message:`Message id "${e.id}" is duplicated.`,hint:"Give every message a unique id or omit message ids to generate them deterministically."}),i.add(e.id),a.has(e.source)||t.push({code:"missing_message_source",path:`messages.[${s}].source`,message:`Message source "${e.source}" is not a participant.`,hint:"Use the id of a participant declared in participants."}),a.has(e.target)||t.push({code:"missing_message_target",path:`messages.[${s}].target`,message:`Message target "${e.target}" is not a participant.`,hint:"Use the id of a participant declared in participants."})}),t.slice(0,20)}s.Xsx("SequenceValidationIssue")({code:eG,path:s.ukk,message:s.ukk,hint:s.ukk});class eD extends E{issues;constructor(e){super(e[0]?.message??"Sequence diagram failed semantic validation."),this.issues=e,this.name="SequenceValidationError"}}function eZ(e){let t=eR(e);if(t.length>0)throw new eD(t);return e}function ej(e){return eZ(s.svK(eY,{errors:"all"})(e))}ej({id:"checkout-sequence",title:"Checkout sequence",type:eq,participants:[{id:"customer",label:"Customer"},{id:"store",label:"Store"},{id:"payments",label:"Payments"}],messages:[{id:"checkout",source:"customer",target:"store",label:"Submit checkout"},{id:"charge",source:"store",target:"payments",label:"Charge card"},{id:"charged",source:"payments",target:"store",label:"Payment approved",type:"return"},{id:"receipt",source:"store",target:"customer",label:"Order receipt",type:"return"}]}),ej({id:"api-request-sequence",title:"API request with cache miss",type:eq,participants:[{id:"browser",label:"Browser"},{id:"api",label:"API Worker"},{id:"cache",label:"Cache"},{id:"database",label:"Database"},{id:"analytics",label:"Analytics"}],messages:[{id:"request",source:"browser",target:"api",label:"GET /orders"},{id:"lookup",source:"api",target:"cache",label:"Look up orders"},{id:"miss",source:"cache",target:"api",label:"Cache miss",type:"return"},{id:"query",source:"api",target:"database",label:"Query orders"},{id:"rows",source:"database",target:"api",label:"Order rows",type:"return"},{id:"track",source:"api",target:"analytics",label:"Track request"},{id:"response",source:"api",target:"browser",label:"200 OK",type:"return"}]}),ej({id:"deploy-webhook-logos",title:"Deploy webhook",type:eq,participants:[{id:"developer",label:"Developer"},{id:"github",label:"GitHub",icon:{slug:"github"}},{id:"worker",label:"Cloudflare Worker",icon:{slug:"cloudflare"}},{id:"docker",label:"Docker build",icon:{slug:"docker"}}],messages:[{id:"push",source:"developer",target:"github",label:"git push"},{id:"webhook",source:"github",target:"worker",label:"Push webhook"},{id:"build",source:"worker",target:"docker",label:"Build image"},{id:"digest",source:"docker",target:"worker",label:"Image digest",type:"return"},{id:"accepted",source:"worker",target:"github",label:"202 Accepted",type:"return"}]}),ej({id:"self-message-sequence",title:"Login with credential checks",type:eq,participants:[{id:"browser",label:"Browser"},{id:"idp",label:"Identity Provider"},{id:"users",label:"User Directory"}],messages:[{id:"sign-in",source:"browser",target:"idp",label:"Sign in"},{id:"validate",source:"idp",target:"idp",label:"Validate credentials"},{id:"mfa",source:"idp",target:"idp",label:"Check the one-time code against the enrolled authenticator"},{id:"lookup",source:"idp",target:"users",label:"Look up user"},{id:"profile",source:"users",target:"idp",label:"Profile",type:"return"},{id:"session",source:"idp",target:"browser",label:"Session",type:"return"},{id:"refresh",source:"browser",target:"browser",label:"Refresh the page"}]});let eN="state-machine",eW=["state","final","choice"],eJ=["TB","LR"],eK=s.xCb(eW);class eQ extends s.Xsx("StateMachineState")({id:s.ukk,label:s.Qrq(s.ukk),kind:s.Qrq(eK),parent:s.Qrq(s.ukk),initial:s.Qrq(s.ukk)}){}class e1 extends s.Xsx("StateMachineTransition")({id:s.ukk,source:s.ukk,target:s.ukk,event:s.Qrq(s.ukk),guard:s.Qrq(s.ukk),action:s.Qrq(s.ukk)}){}class e0 extends s.Xsx("StateMachineLayout")({direction:s.xCb(eJ)}){}class e2 extends s.Xsx("StateMachineDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(eN),initial:s.ukk,states:s.O31(eQ).pipe(s.fXn,s.Sr8(s.tJb(1))),transitions:s.O31(e1).pipe(s.fXn,s.tiU(o.PyW([]))),layout:s.Qrq(e0),style:q.pipe(s.tiU(o.PyW({...y})))}){}let e3=s.xCb(["state_machine_too_large","invalid_state_id","duplicate_state_id","duplicate_transition_id","missing_state_label","unknown_initial_state","unknown_parent_state","nested_composite","missing_transition_source","missing_transition_target","final_has_outgoing","composite_member_transition","missing_composite_initial","underbranched_choice","unguarded_choice_branch","unreachable_state"]);function e5(e){return e.kind??"state"}s.Xsx("StateMachineValidationIssue")({code:e3,path:s.ukk,message:s.ukk,hint:s.ukk});let e4=new Set(["end","ended","final","finish","finished","done","stop","stopped","exit","state","node"]);function e6(e){if(void 0!==e.label)return e.label;let t=e5(e);if("choice"!==t){if("final"===t){let t=e.id.replace(/(\p{Ll})(\p{Lu})/gu,"$1 $2").replace(/(\p{Lu})(\p{Lu}\p{Ll})/gu,"$1 $2").split(/[_\s\-\p{N}]+/u).filter(Boolean);if(t.length>0&&t.every(e=>e4.has(e.toLowerCase())))return}return e.id}}function e7(e,t){return e.initial??t.find(t=>t.parent===e.id&&"state"===e5(t))?.id}function e8(e){return{...e,states:e.states.map(t=>{let a=e7(t,e.states);return void 0===t.initial&&void 0!==a?{...t,initial:a}:t})}}function e9(e){return new Set(e.states.flatMap(e=>e.parent?[e.parent]:[]))}function te(e,t){return e.replace(t,"").trim()}function tt(e){e=e8(e);let t=[],a=e9(e);e.states.length>30&&t.push({code:"state_machine_too_large",path:"states",message:`State machine has ${e.states.length} states; the supported maximum is 30.`,hint:"Split the machine into smaller machines or merge minor states."}),e.transitions.length>60&&t.push({code:"state_machine_too_large",path:"transitions",message:`State machine has ${e.transitions.length} transitions; the supported maximum is 60.`,hint:"Move transitions every substate shares onto their composite state."}),a.size>6&&t.push({code:"state_machine_too_large",path:"states",message:`State machine has ${a.size} composite states; the supported maximum is 6.`,hint:"Flatten minor composite states into their parents."});let i=new Map;e.states.forEach((e,a)=>{e.id.includes(":")&&t.push({code:"invalid_state_id",path:`states.[${a}].id`,message:`State id "${e.id}" contains ":".`,hint:"Use letters, digits, hyphens or underscores in state ids."}),i.has(e.id)&&t.push({code:"duplicate_state_id",path:`states.[${a}].id`,message:`State id "${e.id}" is used more than once.`,hint:"Give every state a unique id."}),i.set(e.id,e);let s=e6(e);void 0===s||s.trim()||t.push({code:"missing_state_label",path:`states.[${a}].label`,message:`State "${e.id}" has no label.`,hint:"Omit the label to use the default, or provide a non-blank label."})}),e.states.forEach((e,s)=>{if(void 0!==e.parent){let a=i.get(e.parent);a&&"state"===e5(a)?void 0!==a.parent&&t.push({code:"nested_composite",path:`states.[${s}].parent`,message:`State "${e.id}" sits in "${a.id}", which itself sits in "${a.parent}".`,hint:"Composite states hold states but not other composites; flatten one level."}):t.push({code:"unknown_parent_state",path:`states.[${s}].parent`,message:`State "${e.id}" names "${e.parent}" as its parent, which is not a state.`,hint:"Set parent to the id of a state (not a final state or choice), or remove it."})}if(a.has(e.id)&&void 0===e.initial&&t.push({code:"missing_composite_initial",path:`states.[${s}].initial`,message:`Composite "${e.id}" has no regular substate to enter.`,hint:`Add a regular substate whose parent is "${e.id}", or set initial explicitly to an intended choice substate.`}),void 0!==e.initial){let a=i.get(e.initial);a&&a.parent===e.id&&"final"!==e5(a)||t.push({code:"unknown_initial_state",path:`states.[${s}].initial`,message:`Composite "${e.id}" starts in "${e.initial}", which is not one of its substates.`,hint:`Set initial to a substate whose parent is "${e.id}", or remove it.`})}});let s=i.get(e.initial);s&&void 0===s.parent&&"final"!==e5(s)||t.push({code:"unknown_initial_state",path:"initial",message:`The machine starts in "${e.initial}", which is not a top-level state.`,hint:"Set initial to the id of the top-level state the machine starts in."});let l=new Set,o=new Map;if(e.transitions.forEach((e,s)=>{l.has(e.id)&&t.push({code:"duplicate_transition_id",path:`transitions.[${s}].id`,message:`Transition id "${e.id}" is used more than once.`,hint:"Give every transition a unique id, or omit ids to generate them."}),l.add(e.id),o.set(e.source,(o.get(e.source)??0)+1);let r=i.get(e.source),n=i.get(e.target);r||t.push({code:"missing_transition_source",path:`transitions.[${s}].source`,message:`Transition "${e.id}" leaves "${e.source}", which is not a state.`,hint:"Set source to the id of a declared state."}),n||t.push({code:"missing_transition_target",path:`transitions.[${s}].target`,message:`Transition "${e.id}" enters "${e.target}", which is not a state.`,hint:"Set target to the id of a declared state."}),r&&"final"===e5(r)&&t.push({code:"final_has_outgoing",path:`transitions.[${s}].source`,message:`Transition "${e.id}" leaves final state "${r.id}".`,hint:"A final state ends the machine; leave from the state before it instead."}),r&&n&&(a.has(r.id)&&(n.id===r.id||n.parent===r.id)||a.has(n.id)&&r.parent===n.id)&&t.push({code:"composite_member_transition",path:`transitions.[${s}]`,message:`Transition "${e.id}" joins composite "${a.has(r.id)?r.id:n.id}" to itself or its own substate.`,hint:"Connect substates to each other, or the composite to a state outside it."})}),e.states.forEach((a,i)=>{if("choice"===e5(a)&&(o.get(a.id)??0)<2&&t.push({code:"underbranched_choice",path:`states.[${i}]`,message:`Choice "${a.id}" has fewer than two outgoing transitions.`,hint:"Give a choice two or more outgoing transitions, each with a guard."}),"choice"!==e5(a))return;let s=e.transitions.filter(e=>e.source===a.id).map(e=>e.guard?.replace(/^\s*\[|\]\s*$/gu,"").trim()??"");(s.some(e=>""===e)||s.filter(e=>"else"===e.toLowerCase()).length>1)&&t.push({code:"unguarded_choice_branch",path:`states.[${i}]`,message:`Choice "${a.id}" has a branch without its own guard.`,hint:'Give every branch of a choice a guard; one may be "else".'})}),s){let a=function(e){let t=new Map(e.states.map(e=>[e.id,e])),a=new Set,i=new Set,s=[{id:e.initial,entry:!0}];for(;s.length>0;){let{id:l,entry:o}=s.pop(),r=t.get(l);if(!(!r||a.has(l)&&(!o||i.has(l)))){if(o&&(i.add(l),r.initial&&s.push({id:r.initial,entry:!0})),!a.has(l))for(let t of(a.add(l),r.parent&&s.push({id:r.parent,entry:!1}),e.transitions))t.source===l&&s.push({id:t.target,entry:!0})}}return a}(e);e.states.forEach((e,i)=>{a.has(e.id)||t.push({code:"unreachable_state",path:`states.[${i}]`,message:`State "${e.id}" cannot be reached from the initial state.`,hint:"Add a transition into it, or make it its composite's initial substate."})})}return t.slice(0,20)}s._kM({code:s.uSQ("composite_initial_defaulted"),severity:s.uSQ("warning"),path:s.ukk,message:s.ukk,hint:s.ukk});class ta extends E{issues;constructor(e){super(e[0]?.message??"State machine failed semantic validation."),this.issues=e,this.name="StateMachineValidationError"}}function ti(e){var t=s.svK(e2,{errors:"all"})(e);let a=tt(t);if(a.length>0)throw new ta(a);return e8(t)}ti({id:"order-lifecycle",title:"Order lifecycle",type:eN,initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"cancelled",label:"Cancelled"},{id:"done",kind:"final"}],transitions:[{id:"pay",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge"},{id:"remind",source:"pending",target:"pending",event:"after 24h",action:"email"},{id:"cancel",source:"pending",target:"cancelled",event:"cancel"},{id:"ship",source:"paid",target:"shipped",event:"ship"},{id:"reject",source:"shipped",target:"paid",event:"reject shipment"},{id:"deliver",source:"shipped",target:"done",event:"deliver"},{id:"close",source:"cancelled",target:"done"}]}),ti({id:"media-player",title:"Media player",type:eN,initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"}],transitions:[{id:"play",source:"stopped",target:"active",event:"play"},{id:"pause",source:"playing",target:"paused",event:"pause"},{id:"resume",source:"paused",target:"playing",event:"resume"},{id:"seek",source:"playing",target:"playing",event:"seek",action:"jump"},{id:"stop",source:"active",target:"stopped",event:"stop"}]});let ts="gantt";class tl extends s.Xsx("GanttTask")({id:s.ukk,label:s.ukk,start:s.ukk,end:s.Qrq(s.ukk),duration:s.Qrq(s.wYs),milestone:s.Qrq(s.v8c),phase:s.Qrq(s.ukk),dependsOn:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),progress:s.Qrq(s.wYs)}){}class to extends s.Xsx("GanttDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(ts),tasks:s.O31(tl).pipe(s.fXn,s.Sr8(s.tJb(1))),phases:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),today:s.Qrq(s.ukk),style:q.pipe(s.tiU(o.PyW({...y})))}){}function tr(e){let t=el(e);return t?.granularity==="day"?Math.round(t.start/864e5):void 0}function tn(e){return new Date(864e5*e).toISOString().slice(0,10)}function td(e){return!0===e.milestone||0===e.duration}function tc(e){let t=tr(e.start);if(void 0!==t){if(td(e))return{start:t,end:t,milestone:!0};if(void 0!==e.end){let a=tr(e.end);return void 0===a?void 0:{start:t,end:a+1,milestone:!1}}return void 0===e.duration?void 0:{start:t,end:t+e.duration,milestone:!1}}}function tp(e){if(e.phases)return[...e.phases];let t=[];for(let a of e.tasks)void 0===a.phase||t.includes(a.phase)||t.push(a.phase);return t}function th(e){let t=tp(e);return 0===t.length?[{tasks:e.tasks}]:t.map(t=>({phase:t,tasks:e.tasks.filter(e=>e.phase===t)}))}let tg="Use YYYY-MM-DD, copied from the source.";function tu(e){let t=[],{tasks:a}=e;(0===a.length||a.length>60)&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart needs 1–60 tasks.",hint:"Provide at least one task, or split a longer plan into several charts."});let i=new Set;for(let[e,s]of a.entries())i.has(s.id)&&t.push({code:"duplicate_task_id",path:`tasks.[${e}].id`,message:`Task id "${s.id}" is duplicated.`,hint:"Give each task a unique stable id."}),i.add(s.id);let s=void 0!==e.phases||a.some(e=>void 0!==e.phase),l=0;a.forEach((a,o)=>{let r=`tasks.[${o}]`,n=tr(a.start);void 0===n&&t.push({code:"invalid_gantt_date",path:`${r}.start`,message:`Task "${a.id}" has invalid start "${a.start}".`,hint:tg});let d=void 0===a.end?void 0:tr(a.end);void 0!==a.end&&void 0===d&&t.push({code:"invalid_gantt_date",path:`${r}.end`,message:`Task "${a.id}" has invalid end "${a.end}".`,hint:`${tg} end is the last day, inclusive.`});let c=(e,a,i="")=>t.push({code:"invalid_gantt_span",path:`${r}${i}`,message:e,hint:a});td(a)?(!0===a.milestone&&void 0!==a.duration&&0!==a.duration&&c(`Milestone "${a.id}" cannot have a duration.`,"A milestone is one day: give it start only.",".duration"),void 0!==a.end&&void 0!==d&&void 0!==n&&d!==n&&c(`Milestone "${a.id}" cannot end on another day.`,"A milestone is one day: give it start only, or drop milestone to draw a bar.",".end")):void 0===a.end==(void 0===a.duration)?c(`Task "${a.id}" needs exactly one of end or duration.`,"Give end (last day, inclusive) or duration (calendar days), or set milestone: true."):void 0!==a.duration&&(!Number.isInteger(a.duration)||a.duration<0)?c(`Task "${a.id}" has duration ${a.duration}; durations are whole calendar days.`,"Use a whole number of days counting start, such as 5 for start through start + 4.",".duration"):void 0!==d&&void 0!==n&&d<n?c(`Task "${a.id}" ends before it starts.`,"end is the last day, inclusive, on or after start.",".end"):void 0!==a.duration&&a.duration>36525&&c(`Task "${a.id}" has duration ${a.duration}; a chart spans at most 36525 days.`,"Give the task's real length in calendar days, or split a longer plan into several charts.",".duration"),void 0!==a.progress&&(a.progress<0||a.progress>100||td(a))&&t.push({code:"invalid_gantt_progress",path:`${r}.progress`,message:`Task "${a.id}" has progress ${a.progress}.`,hint:"progress is a percent from 0 to 100, on tasks only, never milestones."}),s&&(void 0===a.phase||e.phases&&!e.phases.includes(a.phase))&&t.push({code:"invalid_gantt_phase",path:`${r}.phase`,message:`Task "${a.id}" needs one of the chart's phases.`,hint:"Give every task a phase listed in phases, or omit phases everywhere."});let p=new Set;(a.dependsOn??[]).forEach((e,s)=>{l+=1;let o=`${r}.dependsOn.[${s}]`;e===a.id?t.push({code:"self_dependency",path:o,message:`Task "${a.id}" depends on itself.`,hint:"List only the tasks that must finish before this one starts."}):i.has(e)?p.has(e)&&t.push({code:"missing_dependency",path:o,message:`Task "${a.id}" lists "${e}" more than once.`,hint:"List each predecessor once."}):t.push({code:"missing_dependency",path:o,message:`Task "${a.id}" depends on unknown task "${e}".`,hint:"Use the id of a task declared in tasks."}),p.add(e)})}),l>120&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart supports at most 120 dependencies.",hint:"Keep the dependencies the plan states, or split it into several charts."});let o=function(e){let t=new Map(e.map(e=>[e.id,e])),a=new Map,i=[],s=e=>{if("done"!==a.get(e)){if("open"===a.get(e))return[...i.slice(i.indexOf(e)),e];for(let l of(a.set(e,"open"),i.push(e),t.get(e)?.dependsOn??[])){if(l===e||!t.has(l))continue;let a=s(l);if(a)return a}i.pop(),a.set(e,"done")}};for(let t of e){let e=s(t.id);if(e)return e.toReversed()}}(a);o&&t.push({code:"gantt_dependency_cycle",path:`tasks.[${a.findIndex(e=>e.id===o[0])}].dependsOn`,message:`Dependencies form a cycle: ${o.join(" → ")}.`,hint:"A task cannot wait, directly or indirectly, for itself. Remove one dependency on the cycle."}),e.phases&&(new Set(e.phases).size!==e.phases.length&&t.push({code:"invalid_gantt_phase",path:"phases",message:"Phase names must be unique.",hint:"List each phase once, in top-to-bottom order."}),e.phases.forEach((e,i)=>{a.some(t=>t.phase===e)||t.push({code:"invalid_gantt_phase",path:`phases.[${i}]`,message:`Phase "${e}" has no tasks.`,hint:"List only phases that tasks name."})})),tp(e).length>12&&t.push({code:"gantt_too_large",path:"phases",message:"A Gantt chart supports at most 12 phases.",hint:"Merge related phases or split the plan into several charts."});let r=void 0===e.today?void 0:tr(e.today);void 0!==e.today&&void 0===r&&t.push({code:"invalid_gantt_date",path:"today",message:`Today "${e.today}" must be a YYYY-MM-DD date.`,hint:`${tg} Omit today unless the source states it.`});let n=[...a.flatMap(e=>{let t=tc(e);return t&&Number.isFinite(t.end)?[t.start,t.end]:[]}),...void 0===r?[]:[r,r+1]];return n.length&&Math.max(...n)-Math.min(...n)>36525&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart spans at most 36525 days, first task through last and Today.",hint:"Check the dates for a typo, or split a longer plan into several charts."}),t.slice(0,20)}class tf extends E{issues;constructor(e){super(e[0]?.message??"Gantt chart failed validation."),this.issues=e,this.name="GanttValidationError"}}function tm(e){let t=tu(e);if(t.length)throw new tf(t);return e}tm(s.svK(to,{errors:"all"})({id:"release-plan",title:"Release plan",type:"gantt",tasks:[{id:"design",label:"Design",start:"2026-03-02",end:"2026-03-06",phase:"Build"},{id:"api",label:"API",start:"2026-03-09",duration:10,phase:"Build",dependsOn:["design"],progress:40},{id:"web",label:"Web app",start:"2026-03-09",end:"2026-03-20",phase:"Build",dependsOn:["design"]},{id:"qa",label:"QA",start:"2026-03-23",duration:5,phase:"Launch",dependsOn:["api","web"]},{id:"release",label:"Release",start:"2026-03-30",milestone:!0,phase:"Launch",dependsOn:["qa"]}]}));let tv="er",ty=["one","zero-or-one","many","one-or-many","zero-or-many"],tw=s.xCb(ty);class tx extends s.Xsx("ErField")({name:s.ukk,type:s.Qrq(s.ukk),pk:s.Qrq(s.v8c),fk:s.Qrq(s.v8c),unique:s.Qrq(s.v8c),nullable:s.Qrq(s.v8c)}){}class tb extends s.Xsx("ErEntity")({id:s.ukk,name:s.Qrq(s.ukk),fields:s.O31(tx).pipe(s.fXn,s.tiU(o.PyW([])))}){}class tk extends s.Xsx("ErRelationship")({id:s.ukk,from:s.ukk,to:s.ukk,fromCardinality:tw,toCardinality:tw,label:s.Qrq(s.ukk)}){}class tM extends s.Xsx("ErDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(tv),entities:s.O31(tb).pipe(s.fXn,s.Sr8(s.tJb(1))),relationships:s.O31(tk).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let tC=s.xCb(["er_too_large","invalid_entity_id","duplicate_entity_id","duplicate_entity_name","duplicate_field_name","er_text_too_long","nullable_primary_key","duplicate_relationship_id","missing_relationship_entity","missing_relationship_field","self_referencing_field"]);function tz(e){return e.name??e.id}function t_(e){let t=e.indexOf(".");return t<0?{entity:e.trim()}:{entity:e.slice(0,t).trim(),field:e.slice(t+1).trim()}}function tL(e){return e.trim().toLowerCase()}function tB(e){let t=[],a=e.entities.reduce((e,t)=>e+t.fields.length,0);e.entities.length>30&&t.push({code:"er_too_large",path:"entities",message:`The diagram has ${e.entities.length} entities; the supported maximum is 30.`,hint:"Split the schema into diagrams by area, or leave out minor lookup tables."}),a>240&&t.push({code:"er_too_large",path:"entities",message:`The diagram has ${a} fields; the supported maximum is 240.`,hint:"Keep the keys and the fields the request names, or split the schema by area."}),e.relationships.length>60&&t.push({code:"er_too_large",path:"relationships",message:`The diagram has ${e.relationships.length} relationships; the supported maximum is 60.`,hint:"Split the schema into diagrams by area."});let i=new Map,s=new Map;e.entities.forEach((e,a)=>{let l=`entities.[${a}]`;/[.:\s]/u.test(e.id)&&t.push({code:"invalid_entity_id",path:`${l}.id`,message:`Entity id "${e.id}" contains a dot, a colon or a space.`,hint:'Use letters, digits, hyphens or underscores in entity ids; relationships write "entity.field".'}),i.has(e.id)&&t.push({code:"duplicate_entity_id",path:`${l}.id`,message:`Entity id "${e.id}" is used more than once.`,hint:"Give every entity a unique id."}),i.set(e.id,e);let o=tz(e),r=s.get(tL(o));void 0!==r&&r!==e.id&&t.push({code:"duplicate_entity_name",path:void 0===e.name?`${l}.id`:`${l}.name`,message:`Entities "${r}" and "${e.id}" are both named "${o}".`,hint:"Give every entity a distinct name, or merge the two."}),s.set(tL(o),e.id),o.length>64&&t.push({code:"er_text_too_long",path:void 0===e.name?`${l}.id`:`${l}.name`,message:`Entity name "${o}" is longer than 64 characters.`,hint:"Shorten the entity name."}),e.fields.length>40&&t.push({code:"er_too_large",path:`${l}.fields`,message:`Entity "${e.id}" has ${e.fields.length} fields; the supported maximum is 40.`,hint:"Keep the keys and the fields the request names."});let n=new Set;e.fields.forEach((a,i)=>{let s=`${l}.fields.[${i}]`;for(let[i,l]of(n.has(tL(a.name))&&t.push({code:"duplicate_field_name",path:`${s}.name`,message:`Entity "${e.id}" has more than one field named "${a.name}".`,hint:"List each field once."}),n.add(tL(a.name)),[["name",a.name],["type",a.type]]))void 0!==l&&(l.length>64||/\n/u.test(l))&&t.push({code:"er_text_too_long",path:`${s}.${i}`,message:`Field ${i} "${l}" of "${e.id}" is longer than 64 characters or spans lines.`,hint:`Write the field ${i} on one line of at most 64 characters.`});a.pk&&a.nullable&&t.push({code:"nullable_primary_key",path:`${s}.nullable`,message:`Primary key "${e.id}.${a.name}" is marked nullable.`,hint:"A primary key is never empty; drop nullable from it."})})});let l=new Set;return e.relationships.forEach((e,a)=>{let s=`relationships.[${a}]`;l.has(e.id)&&t.push({code:"duplicate_relationship_id",path:`${s}.id`,message:`Relationship id "${e.id}" is used more than once.`,hint:"Give every relationship a unique id, or omit ids to generate them."}),l.add(e.id);let[o,r]=["from","to"].map(a=>{let l=t_(e[a]),o=i.get(l.entity);return o?void 0===l.field||o.fields.some(e=>tL(e.name)===tL(l.field))?l:void t.push({code:"missing_relationship_field",path:`${s}.${a}`,message:`Relationship "${e.id}" names field "${l.field}", which "${o.id}" does not have.`,hint:`Name one of the fields of "${o.id}", add the field, or name the entity alone.`}):void t.push({code:"missing_relationship_entity",path:`${s}.${a}`,message:`Relationship "${e.id}" ${"from"===a?"starts":"ends"} at "${l.entity}", which is not an entity.`,hint:'Set it to an entity id, or "entity.field" for the column the relationship runs through.'})});o?.field!==void 0&&r?.field!==void 0&&o.entity===r.entity&&tL(o.field)===tL(r.field)&&t.push({code:"self_referencing_field",path:s,message:`Relationship "${e.id}" joins "${o.entity}.${o.field}" to itself.`,hint:"A self-reference runs from the foreign key to the key it references, such as employees.manager_id to employees.id."})}),t.slice(0,20)}s.Xsx("ErValidationIssue")({code:tC,path:s.ukk,message:s.ukk,hint:s.ukk});class tS extends E{issues;constructor(e){super(e[0]?.message??"ER diagram failed semantic validation."),this.issues=e,this.name="ErValidationError"}}function tA(e){var t=s.svK(tM,{errors:"all"})(e);let a=tB(t);if(a.length>0)throw new tS(a);return t}tA({id:"shop-schema",title:"Shop schema",type:tv,entities:[{id:"customers",fields:[{name:"id",type:"uuid",pk:!0},{name:"email",type:"text",unique:!0},{name:"name",type:"text"}]},{id:"orders",fields:[{name:"id",type:"uuid",pk:!0},{name:"customer_id",type:"uuid",fk:!0},{name:"placed_at",type:"timestamptz"},{name:"shipped_at",type:"timestamptz",nullable:!0}]},{id:"order_items",fields:[{name:"order_id",type:"uuid",pk:!0,fk:!0},{name:"product_id",type:"uuid",pk:!0,fk:!0},{name:"quantity",type:"int"}]},{id:"products",fields:[{name:"id",type:"uuid",pk:!0},{name:"sku",type:"text",unique:!0},{name:"price",type:"numeric(10,2)"}]}],relationships:[{id:"places",from:"customers.id",to:"orders.customer_id",fromCardinality:"one",toCardinality:"zero-or-many",label:"places"},{id:"contains",from:"orders.id",to:"order_items.order_id",fromCardinality:"one",toCardinality:"one-or-many"},{id:"ordered-as",from:"products.id",to:"order_items.product_id",fromCardinality:"one",toCardinality:"zero-or-many"}]}),tA({id:"org-schema",title:"Org schema",type:tv,entities:[{id:"employees",fields:[{name:"id",type:"int",pk:!0},{name:"manager_id",type:"int",fk:!0,nullable:!0},{name:"department_id",type:"int",fk:!0},{name:"name",type:"text"}]},{id:"departments",fields:[{name:"id",type:"int",pk:!0},{name:"head_id",type:"int",fk:!0,unique:!0,nullable:!0},{name:"name",type:"text",unique:!0}]}],relationships:[{id:"reports-to",from:"employees.id",to:"employees.manager_id",fromCardinality:"zero-or-one",toCardinality:"zero-or-many",label:"manages"},{id:"works-in",from:"departments.id",to:"employees.department_id",fromCardinality:"one",toCardinality:"one-or-many"},{id:"heads",from:"employees.id",to:"departments.head_id",fromCardinality:"zero-or-one",toCardinality:"zero-or-one",label:"heads"}]});let tP={PK:"pk",FK:"fk",UK:"unique",UQ:"unique",UNIQUE:"unique",NULL:"nullable",NULLABLE:"nullable","?":"nullable"};function tV(e){let t=e.trim().split(/\s+/u).filter(Boolean),a={},i=e=>tP[e.toUpperCase()];for(;t.length>1;){let e=t.at(-1);if("NULL"===e.toUpperCase()&&t.at(-2)?.toUpperCase()==="NOT"){t.splice(-2,2);continue}let s=i(e)??(e.length>1&&e.endsWith("?")?i(e.slice(0,-1)):void 0);if(!s)break;a[s]=!0,e.length>1&&e.endsWith("?")&&(a.nullable=!0),t.pop()}for(;t.length>1&&/^(?:PK|FK|UK)$/u.test(t[0]);)a[i(t.shift())]=!0;let s=t.shift()??e.trim(),l=t.join(" ");return l.endsWith("?")&&(l=l.slice(0,-1).trim(),a.nullable=!0),!l&&s.length>1&&s.endsWith("?")&&(s=s.slice(0,-1),a.nullable=!0),{name:s,...l?{type:l}:{},...a}}let tH={1:"one","1..1":"one","exactly-one":"one","one-and-only-one":"one","only-one":"one","mandatory-one":"one","0..1":"zero-or-one","0-1":"zero-or-one","0-or-1":"zero-or-one",optional:"zero-or-one","optional-one":"zero-or-one","one-or-zero":"zero-or-one","at-most-one":"zero-or-one","*":"many",n:"many",m:"many",multiple:"many","1..*":"one-or-many","1..n":"one-or-many","1-n":"one-or-many","1+":"one-or-many","at-least-one":"one-or-many","one-or-more":"one-or-many","many-mandatory":"one-or-many","0..*":"zero-or-many","0..n":"zero-or-many","0-n":"zero-or-many","0+":"zero-or-many","zero-or-more":"zero-or-many","optional-many":"zero-or-many","many-optional":"zero-or-many"};function tq(e){if("string"!=typeof e)return e;let t=e.trim().toLowerCase().replace(/[\s_]+/gu,"-");return ty.includes(t)?t:tH[t]??e}let tF=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),tI="class",tE=["class","abstract","interface","enum"],tO=s.xCb(tE),tU=["public","private","protected","package"],tX=s.xCb(tU),tT={public:"+",private:"-",protected:"#",package:"~"},t$=["inheritance","realization","composition","aggregation","association","dependency"],tY=s.xCb(t$);function tG(e){return"inheritance"===e||"realization"===e}function tR(e){return"association"===e||"composition"===e||"aggregation"===e}class tD extends s.Xsx("ClassAttribute")({name:s.ukk,type:s.Qrq(s.ukk),visibility:s.Qrq(tX),static:s.Qrq(s.v8c)}){}class tZ extends s.Xsx("ClassParameter")({name:s.ukk,type:s.Qrq(s.ukk)}){}class tj extends s.Xsx("ClassMethod")({name:s.ukk,params:s.O31(tZ).pipe(s.fXn,s.tiU(o.PyW([]))),returns:s.Qrq(s.ukk),visibility:s.Qrq(tX),static:s.Qrq(s.v8c),abstract:s.Qrq(s.v8c)}){}class tN extends s.Xsx("ClassNode")({id:s.ukk,name:s.Qrq(s.ukk),kind:s.Qrq(tO),stereotype:s.Qrq(s.ukk),attributes:s.O31(tD).pipe(s.fXn,s.tiU(o.PyW([]))),methods:s.O31(tj).pipe(s.fXn,s.tiU(o.PyW([])))}){}class tW extends s.Xsx("ClassRelationship")({id:s.ukk,kind:tY,from:s.ukk,to:s.ukk,fromMultiplicity:s.Qrq(s.ukk),toMultiplicity:s.Qrq(s.ukk),fromRole:s.Qrq(s.ukk),toRole:s.Qrq(s.ukk),navigable:s.Qrq(s.v8c),label:s.Qrq(s.ukk)}){}class tJ extends s.Xsx("ClassDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(tI),classes:s.O31(tN).pipe(s.fXn,s.Sr8(s.tJb(1))),relationships:s.O31(tW).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let tK=s.xCb(["class_too_large","invalid_class_id","duplicate_class_id","duplicate_class_name","duplicate_member","class_text_too_long","duplicate_relationship_id","missing_relationship_class","inheritance_cycle","invalid_inheritance","invalid_realization","invalid_multiplicity","misplaced_end_label"]);function tQ(e){return e.name??e.id}function t1(e){return e.kind??"class"}s.Xsx("ClassValidationIssue")({code:tK,path:s.ukk,message:s.ukk,hint:s.ukk});let t0={class:void 0,abstract:"abstract",interface:"interface",enum:"enumeration"};function t2(e){return e?`${tT[e]} `:""}function t3(e){return`${t2(e.visibility)}${e.name.trim()}${e.type?`: ${e.type.trim()}`:""}${e.static?" {static}":""}`}function t5(e){let t=e.params.map(e=>`${e.name.trim()}${e.type?`: ${e.type.trim()}`:""}`).join(", "),a=[e.abstract&&"{abstract}",e.static&&"{static}"].filter(Boolean);return`${t2(e.visibility)}${e.name.trim()}(${t})${e.returns?`: ${e.returns.trim()}`:""}${a.length>0?` ${a.join(" ")}`:""}`}function t4(e){return e.trim().toLowerCase()}let t6=/^(\d+|\*)(?:\.\.(\d+|\*))?$/u;function t7(e){let t=[],a=e.classes.reduce((e,t)=>e+t.attributes.length+t.methods.length,0);e.classes.length>30&&t.push({code:"class_too_large",path:"classes",message:`The diagram has ${e.classes.length} classes; the supported maximum is 30.`,hint:"Split the model into diagrams by package, or leave out minor classes."}),a>300&&t.push({code:"class_too_large",path:"classes",message:`The diagram has ${a} members; the supported maximum is 300.`,hint:"Keep the members the request names, or split the model by package."}),e.relationships.length>60&&t.push({code:"class_too_large",path:"relationships",message:`The diagram has ${e.relationships.length} relationships; the supported maximum is 60.`,hint:"Split the model into diagrams by package."});let i=new Map,s=new Map;e.classes.forEach((e,a)=>{let l=`classes.[${a}]`;/[:\s]/u.test(e.id)&&t.push({code:"invalid_class_id",path:`${l}.id`,message:`Class id "${e.id}" contains a colon or a space.`,hint:"Use letters, digits, dots, hyphens or underscores in class ids, and put the shown name in name."}),i.has(e.id)&&t.push({code:"duplicate_class_id",path:`${l}.id`,message:`Class id "${e.id}" is used more than once.`,hint:"Give every class a unique id."}),i.set(e.id,e);let o=tQ(e),r=void 0===e.name?`${l}.id`:`${l}.name`,n=s.get(t4(o));for(let[a,i,d]of(void 0!==n&&n!==e.id&&t.push({code:"duplicate_class_name",path:r,message:`Classes "${n}" and "${e.id}" are both named "${o}".`,hint:"Give every class a distinct name, or merge the two."}),s.set(t4(o),e.id),[["name",o,64],["stereotype",e.stereotype,64]]))void 0!==i&&(!(i.length<=d)||/\n/u.test(i))&&t.push({code:"class_text_too_long",path:"name"===a?r:`${l}.stereotype`,message:`The ${a} of "${e.id}" is longer than ${d} characters or spans lines.`,hint:`Write the ${a} on one line of at most ${d} characters.`});let d=e.attributes.length+e.methods.length;d>30&&t.push({code:"class_too_large",path:l,message:`Class "${e.id}" has ${d} members; the supported maximum is 30.`,hint:"Keep the members the request names."});let c=new Set,p=(a,i,s,o)=>{let r=`${l}.${a}.[${i}]`;c.has(o)&&t.push({code:"duplicate_member",path:r,message:`Class "${e.id}" lists ${"attributes"===a?"attribute":"method"} "${s}" more than once.`,hint:"List each member once; overloads differ in their parameters."}),c.add(o),(s.length>96||/\n/u.test(s))&&t.push({code:"class_text_too_long",path:r,message:`Member "${s}" of "${e.id}" is longer than 96 characters or spans lines.`,hint:"Write each member on one line of at most 96 characters."})};e.attributes.forEach((e,t)=>p("attributes",t,t3(e),`a:${t4(e.name)}`)),e.methods.forEach((e,t)=>p("methods",t,t5(e),`m:${t4(e.name)}(${e.params.map(e=>t4(e.type??e.name)).join(",")})`))});let l=new Set,o=new Map,r=new Set;e.relationships.forEach((e,a)=>{let s=`relationships.[${a}]`;l.has(e.id)&&t.push({code:"duplicate_relationship_id",path:`${s}.id`,message:`Relationship id "${e.id}" is used more than once.`,hint:"Give every relationship a unique id, or omit ids to generate them."}),l.add(e.id);let[n,d]=["from","to"].map(a=>{let l=i.get(e[a].trim());return l||t.push({code:"missing_relationship_class",path:`${s}.${a}`,message:`Relationship "${e.id}" ${"from"===a?"starts":"ends"} at "${e[a]}", which is not a class.`,hint:"Set it to the id of one of the classes."}),l}),{kind:c}=e;if(n&&d&&tG(c)){let e=`${c}\0${n.id}\0${d.id}`,[a,i]=[t1(n),t1(d)];r.has(e)?t.push({code:"inheritance"===c?"invalid_inheritance":"invalid_realization",path:s,message:`"${n.id}" ${"inheritance"===c?"extends":"implements"} "${d.id}" more than once.`,hint:"Draw each generalization once."}):n.id===d.id?t.push({code:"inheritance_cycle",path:s,message:`"${n.id}" ${"inheritance"===c?"extends":"implements"} itself.`,hint:"A class extends or implements another class, never itself."}):"inheritance"===c&&"interface"===a!=("interface"===i)?t.push({code:"invalid_inheritance",path:s,message:"interface"===a?`Interface "${n.id}" extends "${d.id}", which is not an interface.`:`"${n.id}" extends interface "${d.id}".`,hint:"interface"===a?"An interface extends only interfaces; make the class implement the interface instead (a realization from the class to the interface).":'A class implements an interface: use kind "realization" from the class to the interface.'}):"realization"===c&&("interface"===a||"interface"!==i)&&t.push({code:"invalid_realization",path:s,message:"interface"===a?`Interface "${n.id}" implements "${d.id}".`:`"${n.id}" implements "${d.id}", which is not an interface.`,hint:"interface"===a?'An interface extends another interface: use kind "inheritance".':'Mark "to" as kind "interface", or use kind "inheritance" to extend a class.'}),r.add(e),n.id!==d.id&&o.set(n.id,[...o.get(n.id)??[],d.id])}let p=tR(c);for(let a of["from","to"])for(let i of[`${a}Multiplicity`,`${a}Role`]){let a=e[i];void 0!==a&&(p?a.length>64||/\n/u.test(a)?t.push({code:"class_text_too_long",path:`${s}.${i}`,message:`"${a}" at an end of "${e.id}" is longer than 64 characters or spans lines.`,hint:"Write it on one short line."}):i.endsWith("Multiplicity")&&!function(e){let t=t6.exec(e.trim());if(!t)return!1;let[,a,i]=t;return void 0===i||"*"!==a&&("*"===i||Number(a)<=Number(i))}(a)?t.push({code:"invalid_multiplicity",path:`${s}.${i}`,message:`Multiplicity "${a}" of "${e.id}" is not a UML multiplicity.`,hint:'Write a bound or a range: "1", "0..1", "*", "1..*", "0..*" or "2..4".'}):"fromMultiplicity"!==i||"composition"!==c||["1","0..1","1..1"].includes(a.trim())||t.push({code:"invalid_multiplicity",path:`${s}.${i}`,message:`Composition "${e.id}" gives its whole "${e.from}" multiplicity "${a}".`,hint:'A part belongs to one whole at a time: write "1" or "0..1", or use an aggregation for a shared part.'}):t.push({code:"misplaced_end_label",path:`${s}.${i}`,message:`${"dependency"===c?"A dependency":`An ${c}`} "${e.id}" has a ${i.endsWith("Role")?"role":"multiplicity"}.`,hint:"Only associations, compositions and aggregations carry multiplicities and roles; drop it."}))}void 0===e.navigable||p||t.push({code:"misplaced_end_label",path:`${s}.navigable`,message:`${"dependency"===c?"A dependency":`An ${c}`} "${e.id}" is marked navigable.`,hint:"dependency"===c?"A dependency always draws its arrow; drop navigable.":"Only associations, compositions and aggregations take navigable; drop it."}),void 0!==e.label&&e.label.length>64&&t.push({code:"class_text_too_long",path:`${s}.label`,message:`The label of "${e.id}" is longer than 64 characters.`,hint:"Shorten the label."})});let n=new Map,d=(e,t)=>{for(let a of(n.set(e,1),o.get(e)??[])){if(1===n.get(a))return[...t.slice(t.indexOf(a)),a];if(void 0===n.get(a)){let e=d(a,[...t,a]);if(e)return e}}n.set(e,2)};for(let e of o.keys()){if(n.has(e))continue;let a=d(e,[e]);if(a){t.push({code:"inheritance_cycle",path:"relationships",message:`Inheritance runs in a cycle: ${a.join(" → ")}.`,hint:"A class never extends one of its own subclasses; drop or reverse one generalization."});break}}return t.slice(0,20)}class t8 extends E{issues;constructor(e){super(e[0]?.message??"Class diagram failed semantic validation."),this.issues=e,this.name="ClassValidationError"}}function t9(e){var t=s.svK(tJ,{errors:"all"})(e);let a=t7(t);if(a.length>0)throw new t8(a);return t}let ae={"+":"public","-":"private","#":"protected","~":"package",public:"public",private:"private",protected:"protected",package:"package",internal:"package"};function at(e){let t=e.trim(),a={};for(;;){let e=/^([+\-#~])\s*/u.exec(t);if(e&&!a.visibility){a.visibility=ae[e[1]],t=t.slice(e[0].length);continue}let i=/^(public|private|protected|package|internal|static|abstract)\s+/iu.exec(t);if(!i)break;let s=i[1].toLowerCase();"static"===s?a.static=!0:"abstract"===s?a.abstract=!0:a.visibility=ae[s],t=t.slice(i[0].length)}for(;;){let e=/\s*(?:\{(static|abstract)\}|([$*]))$/iu.exec(t);if(!e||0===e.index)break;let i=(e[1]??e[2]).toLowerCase();"static"===i||"$"===i?a.static=!0:a.abstract=!0,t=t.slice(0,e.index)}return{rest:t.trim(),modifiers:a}}function aa(e){let t=e.indexOf(":");if(t<0)return{name:e.trim()};let[a,i]=[e.slice(0,t).trim(),e.slice(t+1).trim()];return{name:a||e.trim(),...a&&i?{type:i}:{}}}function ai(e){let t=[],a=0,i=0;for(let s=0;s<e.length;s+=1){let l=e[s];"<([{".includes(l)?a+=1:">)]}".includes(l)?a=Math.max(0,a-1):","===l&&0===a&&(t.push(e.slice(i,s)),i=s+1)}return t.push(e.slice(i)),t.map(e=>e.trim()).filter(Boolean)}function as(e){let{rest:t,modifiers:a}=at(e),{visibility:i,static:s}=a;return{...aa(t),...i?{visibility:i}:{},...s?{static:!0}:{}}}function al(e){let{rest:t,modifiers:a}=at(e),i=t.indexOf("("),s=function(e,t){if(t<0)return -1;let a=0;for(let i=t;i<e.length;i+=1)if("("===e[i])a+=1;else if(")"===e[i]&&0==(a-=1))return i;return -1}(t,i),l={...a.visibility?{visibility:a.visibility}:{},...a.static?{static:!0}:{},...a.abstract?{abstract:!0}:{}};if(i<0||s<i){let{name:e,type:a}=aa(t);return{name:e,params:[],...a?{returns:a}:{},...l}}let o=t.slice(s+1).replace(/^\s*:\s*/u,"").trim();return{name:t.slice(0,i).trim()||t,params:ai(t.slice(i+1,s)).map(aa),...o?{returns:o}:{},...l}}let ao={extends:"inheritance",inherits:"inheritance",generalization:"inheritance","is-a":"inheritance",implements:"realization",realizes:"realization","interface-realization":"realization",composes:"composition","composed-of":"composition",aggregates:"aggregation","uses-a":"dependency",uses:"dependency",depends:"dependency","depends-on":"dependency",associates:"association"},ar={one:"1","exactly-one":"1","zero-or-one":"0..1",optional:"0..1",many:"*",n:"*",m:"*","zero-or-many":"0..*","zero-or-more":"0..*","one-or-many":"1..*","one-or-more":"1..*"},an=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function ad(e){if(!an(e))return e;let t=(e,t)=>{let a;if("string"==typeof e)return t?al(e):as(e);if(!an(e))return e;let i={...e};if(void 0!==i.visibility&&(i.visibility="string"==typeof(a=i.visibility)?ae[a.trim().toLowerCase()]??a:a),t){void 0===i.returns&&void 0!==i.returnType&&(i.returns=i.returnType,delete i.returnType);let e=i.params??i.parameters;delete i.parameters,"string"==typeof e?i.params=ai(e).map(aa):Array.isArray(e)&&(i.params=e.map(e=>"string"==typeof e?aa(e):e))}return i},a=Array.isArray(e.classes)?e.classes.map(e=>{if(!an(e))return e;let{values:a,...i}=e,s=Array.isArray(i.attributes)?i.attributes:Array.isArray(a)?a:i.attributes;return{...i,...void 0===i.kind&&Array.isArray(a)?{kind:"enum"}:{},...Array.isArray(s)?{attributes:s.map(e=>t(e,!1))}:void 0===s?{}:{attributes:s},...Array.isArray(i.methods)?{methods:i.methods.map(e=>t(e,!0))}:{},..."string"==typeof i.kind?{kind:"enumeration"===i.kind.trim().toLowerCase()?"enum":i.kind.trim().toLowerCase()}:{}}}):e.classes,i=Array.isArray(e.relationships)?e.relationships.map(e=>{if(!an(e))return e;let{source:t,target:a,type:i,...s}=e,l={...s,from:s.from??t,to:s.to??a,kind:function(e){if("string"!=typeof e)return e;let t=e.trim().toLowerCase().replace(/[\s_]+/gu,"-");return t$.includes(t)?t:ao[t]??e}(s.kind??i)};for(let e of["fromMultiplicity","toMultiplicity"])void 0!==l[e]&&(l[e]=function(e){if("number"==typeof e&&Number.isInteger(e)&&e>=0)return String(e);if("string"!=typeof e)return e;let t=e.trim(),a=ar[t.toLowerCase().replace(/[\s_]+/gu,"-")];return a||t.replace(/\s*\.\.\s*/gu,"..").replace(/(^|\.\.)[nm]$/iu,"$1*")}(l[e]));for(let e of["from","to","kind"])void 0===l[e]&&delete l[e];return l}):e.relationships;return{...e,...void 0===a?{}:{classes:a},...void 0===i?{}:{relationships:i}}}t9({id:"shapes",title:"Shapes",type:tI,classes:[{id:"Drawable",kind:"interface",methods:[{name:"draw",params:[{name:"ctx",type:"Canvas"}],returns:"void"}]},{id:"Shape",kind:"abstract",attributes:[{name:"x",type:"double",visibility:"protected"},{name:"y",type:"double",visibility:"protected"}],methods:[{name:"area",returns:"double",visibility:"public",abstract:!0},{name:"moveTo",params:[{name:"x",type:"double"},{name:"y",type:"double"}],returns:"void",visibility:"public"}]},{id:"Circle",attributes:[{name:"radius",type:"double",visibility:"private"}],methods:[{name:"area",returns:"double",visibility:"public"}]},{id:"Rectangle",attributes:[{name:"width",type:"double",visibility:"private"},{name:"height",type:"double",visibility:"private"}],methods:[{name:"area",returns:"double",visibility:"public"}]},{id:"Square",methods:[{name:"of",params:[{name:"side",type:"double"}],returns:"Square",visibility:"public",static:!0}]},{id:"Canvas",attributes:[{name:"MAX_SHAPES",type:"int",visibility:"public",static:!0}],methods:[{name:"add",params:[{name:"shape",type:"Shape"}],returns:"void",visibility:"public"}]}],relationships:[{id:"shape-draws",kind:"realization",from:"Shape",to:"Drawable"},{id:"circle-is-shape",kind:"inheritance",from:"Circle",to:"Shape"},{id:"rectangle-is-shape",kind:"inheritance",from:"Rectangle",to:"Shape"},{id:"square-is-rectangle",kind:"inheritance",from:"Square",to:"Rectangle"},{id:"canvas-holds",kind:"aggregation",from:"Canvas",to:"Shape",fromMultiplicity:"1",toMultiplicity:"0..*",toRole:"shapes"}]});let ac="org-chart";class ap extends s.Xsx("OrgPerson")({id:s.ukk,name:s.ukk,title:s.Qrq(s.ukk),department:s.Qrq(s.ukk),manager:s.Qrq(s.ukk),assistant:s.Qrq(s.v8c),avatar:s.Qrq(s.v8c)}){}class ah extends s.Xsx("OrgDottedLine")({id:s.ukk,report:s.ukk,manager:s.ukk,label:s.Qrq(s.ukk)}){}class ag extends s.Xsx("OrgChartDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(ac),people:s.O31(ap).pipe(s.fXn,s.Sr8(s.tJb(1))),dottedLines:s.O31(ah).pipe(s.fXn,s.tiU(o.PyW([]))),groupByDepartment:s.Qrq(s.v8c),forest:s.Qrq(s.v8c),style:q.pipe(s.tiU(o.PyW({...y})))}){}let au=s.xCb(["org_chart_too_large","invalid_person_id","duplicate_person_id","org_text_too_long","unknown_manager","self_manager","reporting_cycle","multiple_roots","invalid_assistant","duplicate_dotted_line_id","invalid_dotted_line"]);function af(e){return e.people.filter(e=>void 0===e.manager)}function am(e){let t=new Map;for(let a of e.people){if(void 0===a.manager)continue;let e=t.get(a.manager)??[];e.push(a),t.set(a.manager,e)}return t}function av(e){let t=[],a=(e,a,i,s)=>t.push({code:e,path:a,message:i,hint:s}),{people:i,dottedLines:s}=e;i.length>100&&a("org_chart_too_large","people",`An org chart holds at most 100 people; this one has ${i.length}.`,"Draw each division as its own chart, or keep the levels the request asks for."),s.length>24&&a("org_chart_too_large","dottedLines",`An org chart holds at most 24 dotted lines; this one has ${s.length}.`,"Keep the dotted-line reports the request states.");let l=new Set;i.forEach((e,t)=>{let i=`people.[${t}]`;e.id.includes(":")&&a("invalid_person_id",`${i}.id`,`Person id "${e.id}" contains a colon.`,"Use a short id without colons, such as ada or vp-eng."),l.has(e.id)&&a("duplicate_person_id",`${i}.id`,`Person id "${e.id}" is used more than once.`,"Give each person a unique id; two people with one name need two ids."),l.add(e.id);let s=(t,s,l)=>{void 0!==s&&s.trim().length>l&&a("org_text_too_long",`${i}.${t}`,`The ${t} of "${e.id}" is longer than ${l} characters.`,`Shorten the ${t} to at most ${l} characters.`)};s("name",e.name,60),s("title",e.title,80),s("department",e.department,40)});let o=am(e);i.forEach((e,t)=>{let i=`people.[${t}]`;if(void 0===e.manager){e.assistant&&a("invalid_assistant",`${i}.assistant`,`Assistant "${e.id}" has no manager.`,"Set manager to the person they assist.");return}e.manager===e.id?a("self_manager",`${i}.manager`,`"${e.id}" is their own manager.`,"Set manager to the person they report to, or omit it for the top person."):l.has(e.manager)||a("unknown_manager",`${i}.manager`,`Manager "${e.manager}" of "${e.id}" is not a person in the chart.`,"Use the id of a person in people, or add the manager as a person."),e.assistant&&(o.get(e.id)?.length??0)>0&&a("invalid_assistant",`${i}.assistant`,`Assistant "${e.id}" has reports of their own.`,"An assistant sits beside their manager with no reports; drop assistant: true to draw them as a manager.")});let r=function(e){let t=new Map(e.map(e=>[e.id,e.manager])),a=new Set;for(let i of e){let e=[],s=new Set,l=i.id;for(;void 0!==l&&t.has(l)&&!a.has(l);){if(s.has(l))return[...e.slice(e.indexOf(l)),l];s.add(l),e.push(l),l=t.get(l)}for(let t of e)a.add(t)}}(i);r&&a("reporting_cycle",`people.[${i.findIndex(e=>e.id===r[0])}].manager`,`Reporting lines run in a cycle: ${r.join(" → ")}.`,"Every chain of managers ends at a top person with no manager; remove one manager on the cycle.");let n=af(e);n.length>1&&!0!==e.forest&&a("multiple_roots",`people.[${i.indexOf(n[1])}].manager`,`${n.length} people have no manager: ${n.slice(0,4).map(e=>`"${e.id}"`).join(", ")}${n.length>4?", …":""}.`,"Give everyone but the top person a manager, or set forest: true to draw separate trees.");let d=new Map(i.map(e=>[e.id,e]));if(!r&&n.length>0){let e=new Map,t=a=>{let i=e.get(a.id);if(void 0!==i)return i;let s=void 0===a.manager?void 0:d.get(a.manager),l=s&&s.id!==a.id?t(s)+1:1;return e.set(a.id,l),l},s=Math.max(...i.map(t));s>12&&a("org_chart_too_large","people",`Reporting chains run ${s} levels deep; an org chart draws at most 12.`,"Draw the deepest teams as charts of their own.")}let c=new Set,p=new Set;return s.forEach((e,t)=>{let i=`dottedLines.[${t}]`;for(let t of(c.has(e.id)&&a("duplicate_dotted_line_id",`${i}.id`,`Dotted line id "${e.id}" is used more than once.`,"Give each dotted line a unique id."),c.add(e.id),["report","manager"]))l.has(e[t])||a("invalid_dotted_line",`${i}.${t}`,`Dotted line "${e.id}" names unknown ${t} "${e[t]}".`,"Use the ids of two people in the chart.");e.report===e.manager?a("invalid_dotted_line",i,`Dotted line "${e.id}" joins "${e.report}" to themselves.`,"A dotted line joins a person to a second manager."):d.get(e.report)?.manager===e.manager&&a("invalid_dotted_line",i,`"${e.report}" already reports to "${e.manager}" on a solid line.`,"Draw a dotted line only to a second manager, outside the solid reporting line.");let s=`${e.report}\0${e.manager}`;p.has(s)&&a("invalid_dotted_line",i,`"${e.report}" has two dotted lines to "${e.manager}".`,"Draw each dotted-line report once."),p.add(s),void 0!==e.label&&e.label.trim().length>40&&a("org_text_too_long",`${i}.label`,`The label of dotted line "${e.id}" is longer than 40 characters.`,"Shorten the label to at most 40 characters.")}),t.slice(0,20)}s.Xsx("OrgChartValidationIssue")({code:au,path:s.ukk,message:s.ukk,hint:s.ukk});class ay extends E{issues;constructor(e){super(e[0]?.message??"Org chart failed semantic validation."),this.issues=e,this.name="OrgChartValidationError"}}function aw(e){let t=av(e);if(t.length>0)throw new ay(t);return e}function ax(e){return aw(s.svK(ag,{errors:"all"})(e))}let ab=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function ak(e,t){let a;for(let i of t)void 0===a&&void 0!==e[i]&&(a=e[i]),delete e[i];return a}let aM=["manager","reportsTo","managerId","manager_id","reports_to","parent","boss"],aC=["title","role","position","jobTitle","job_title"],az=["department","team","dept","division","group"],a_=["dottedLines","dottedLine","dottedLineTo","dottedManager","dottedManagers"];function aL(e){if(!ab(e))return e;let{employees:t,members:a,reportingLines:i,reports:s,edges:l,...o}=e,r=o.people??t??a,n=[],d=new Map;if(Array.isArray(r)){for(let e of r)if(ab(e)){for(let t of["directReports","reports"])if(Array.isArray(e[t]))for(let a of e[t])"string"!=typeof a||d.has(a)||d.set(a,e.id)}}let c=Array.isArray(r)?r.map(e=>{if(!ab(e))return e;let t={...e};Array.isArray(t.directReports)&&delete t.directReports,Array.isArray(t.reports)&&delete t.reports;let a=ak(t,aM)??d.get(t.id),i=ak(t,aC),s=ak(t,az),l=ak(t,a_),o=t.name??t.label;for(let e of(delete t.label,("assistant"===t.kind||"assistant"===t.type)&&(t.assistant=!0,delete t.kind,delete t.type),Array.isArray(l)?l:void 0===l?[]:[l]))n.push(ab(e)?{report:t.id,...e}:{report:t.id,manager:e});return{...t,...void 0===o?{}:{name:o},...null==a||""===a?{}:{manager:a},...void 0===i||""===i?{}:{title:i},...void 0===s||""===s?{}:{department:s}}}):r,p=[i,s,l].find(Array.isArray),h=Array.isArray(c)&&p?c.map(e=>{if(!ab(e)||void 0!==e.manager)return e;let t=p.find(t=>ab(t)&&(t.report??t.to??t.target)===e.id&&!0!==t.dotted),a=ab(t)?t.manager??t.from??t.source:void 0;return void 0===a?e:{...e,manager:a}}):c,g=(p??[]).filter(e=>ab(e)&&!0===e.dotted),u=o.dottedLines,f=[...Array.isArray(u)?u:null==u?[]:[u],...n,...g.map(({dotted:e,...t})=>({report:t.report??t.to??t.target,manager:t.manager??t.from??t.source,...void 0===t.label?{}:{label:t.label}}))],m=new Set(f.flatMap(e=>ab(e)&&"string"==typeof e.id?[e.id]:[])),v=f.map(e=>{if(!ab(e))return e;let{from:t,to:a,source:i,target:s,person:l,employee:o,...r}=e,n={...r,report:r.report??t??i??l??o,manager:r.manager??a??s};for(let e of["report","manager"])void 0===n[e]&&delete n[e];if("string"!=typeof n.id||0===n.id.length){let e=`${String(n.report)}-dotted-${String(n.manager)}`.replace(/[^\w-]+/gu,"-"),t=e;for(let a=2;m.has(t);a+=1)t=`${e}-${a}`;m.add(t),n.id=t}return n});return{...o,...void 0===h?{}:{people:h},...void 0===u&&0===v.length?{}:{dottedLines:v}}}ax({id:"startup-team",title:"Startup team",type:ac,people:[{id:"ada",name:"Ada Lovelace",title:"Chief Executive Officer",department:"Executive"},{id:"grace",name:"Grace Hopper",title:"Executive Assistant",department:"Executive",manager:"ada",assistant:!0},{id:"linus",name:"Linus Torvalds",title:"Chief Technology Officer",department:"Engineering",manager:"ada"},{id:"margaret",name:"Margaret Hamilton",title:"Engineering Manager",department:"Engineering",manager:"linus"},{id:"ken",name:"Ken Thompson",title:"Platform Engineer",department:"Engineering",manager:"linus"},{id:"radia",name:"Radia Perlman",title:"Head of Product",department:"Product",manager:"ada"},{id:"don",name:"Don Norman",title:"Product Designer",department:"Product",manager:"radia"}],dottedLines:[{id:"ken-to-radia",report:"ken",manager:"radia"}]});let aB=[0,.25,.5,.75,1];function aS(e){return Math.round(100*e)/100}function aA(e){let[t,a,i,s]=e;return aB.map(e=>{let l=1-e,[o,r,n,d]=[l*l*l,3*l*l*e,3*l*e*e,e*e*e];return{x:aS(o*t.x+r*a.x+n*i.x+d*s.x),y:aS(o*t.y+r*a.y+n*i.y+d*s.y)}})}let aP=new Intl.Segmenter(void 0,{granularity:"grapheme"}),aV=/\p{Emoji_Presentation}|\uFE0F|\p{Regional_Indicator}|\u20E3/u,aH=/^[\uFE00-\uFE0F\u200B-\u200D\u2060]+$/u;function aq(e){return Array.from(aP.segment(e),e=>e.segment)}function aF(e){var t;return aH.test(e)?0:aV.test(e)?130:(t=e.codePointAt(0)??0)>=4352&&t<=4447||t>=11904&&t<=12350||t>=12353&&t<=13311||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=40960&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=131072&&t<=262141?100:62}function aI(e){return aq(e).reduce((e,t)=>e+aF(t),0)}function aE(e,t){return Math.max(...e.split("\n").map(e=>(function(e,t){let a=0,i=0;for(let t of aq(e)){let e=aF(t);62===e?a+=1:i+=e}return a*t*.62+i*t/100})(e,t)))}function aO(e,t,a){let i=aE(e,t);return Math.max(1,Math.min(a,Math.ceil(i)),Math.ceil(i-t))}function aU(e,t,a){return Math.max(aO(e,t,a),Math.ceil(aE(e,t)))}function aX(e,t){return e.split("\n").flatMap(e=>(function(e,t){if(aI(e)<=t)return[e];let a=[],i="";for(let s of e.split(" ")){if(aI(s)>t){i&&(a.push(i),i=""),a.push(...function(e,t){let a=(function(e){let t=[],a="";for(let i of aq(e)){if(!(aF(i)>62)){a+=i;continue}a&&t.push(a),t.push(i),a=""}return a&&t.push(a),t})(e).flatMap(e=>aI(e)>t?function(e,t){let a=Math.max(t,1488);return aI(e)<=a?[e]:e.split(/(?<=[/\-_.])(?=.)|(?<=\p{Ll})(?=\p{Lu})/u).flatMap(e=>aI(e)<=a?[e]:function(e,t){let a=[],i="",s=0;for(let l of aq(e)){let e=aF(l);i&&s+e>t&&(a.push(i),i="",s=0),i+=l,s+=e}return i&&a.push(i),a}(e,t))}(e,t):[e]),i=[],s="";for(let e of a){if(aI(e)>t){s&&i.push(s),i.push(e),s="";continue}s&&aI(s+e)>t&&(i.push(s),s=""),s+=e}return s&&i.push(s),i}(s,t));continue}let e=i?`${i} ${s}`:s;if(aI(e)<=t){i=e;continue}a.push(i),i=s}return i&&a.push(i),a})(e,t)).join("\n")}function aT(e,t,a){return aX(e,Math.floor(100*t/a+1e-6))}let a$=Object.freeze({maxDimension:16384,maxElements:600,maxGroupsPerElement:16,maxLayouts:128,maxLayers:64,maxPointsPerElement:256,maxSerializedBytes:15e5,maxTextLength:4096,maxZOrderEntries:600}),aY=Object.freeze({boundTextPadding:5,gap:4,maxAssetBytes:65536,maxSize:64,maxTotalAssetBytes:786432,minSize:16}),aG=["cylinder","pipe","document","bucket"];function aR(e){return aG.includes(e)}let aD={cylinder:12,pipe:12,document:5,bucket:12};function aZ(e){return Math.round(.08*e)}function aj(e,t,a,i,s,l,o=12){return Array.from({length:o+1},(r,n)=>{let d=s+(l-s)*n/o;return{x:Math.round((e+a*Math.cos(d))*100)/100,y:Math.round((t+i*Math.sin(d))*100)/100}})}function aN(e,t,a,i=12,s=0){let{x:l,y:o,width:r,height:n}=e,d=l+r/2,c=o+n/2;if(a){let e=o+t,a=o+n-t;return{back:aj(d,e,r/2,t,0,-Math.PI,i),front:aj(d,e,r/2,t,Math.PI,0,i),end:aj(d,a,r/2-s,t,Math.PI,0,i),sides:[[{x:l,y:e},{x:l+s,y:a}],[{x:l+r,y:e},{x:l+r-s,y:a}]]}}let p=l+r-t,h=l+t;return{back:aj(p,c,t,n/2,-Math.PI/2,Math.PI/2,i),front:aj(p,c,t,n/2,-Math.PI/2,-(3*Math.PI)/2,i),end:aj(h,c,t,n/2,Math.PI/2,3*Math.PI/2,i),sides:[[{x:h,y:o},{x:p,y:o}],[{x:h,y:o+n},{x:p,y:o+n}]]}}function aW(e,t){let{x:a,y:i,width:s,height:l}=e;return Array.from({length:17},(e,o)=>{let r=1-o/16;return{x:Math.round((a+s*r)*100)/100,y:Math.round((i+l-t*(1-Math.cos(4*Math.PI*r)))*100)/100}})}function aJ(e,t,a){let{x:i,y:s,width:l,height:o}=e,r=aD[e.shape],n=i+l/2,d=s+o/2,c=(e,t)=>r*Math.sqrt(Math.max(0,1-(Math.min(Math.abs(e),t)/t)**2));if("pipe"===e.shape)return"left"===t?{x:i+r-c(a.y-d,o/2),y:a.y}:"right"===t?{x:i+l-r+c(a.y-d,o/2),y:a.y}:a;if("document"===e.shape){if("bottom"!==t)return a;let e=Math.min(1,Math.max(0,(a.x-i)/l));return{x:a.x,y:s+o-r*(1-Math.cos(4*Math.PI*e))}}let p="bucket"===e.shape?aZ(l):0,[h,g]=[s+r,s+o-r];if("top"===t)return{x:a.x,y:h-c(a.x-n,l/2)};if("bottom"===t)return{x:a.x,y:g+c(a.x-n,l/2-p)};if(0===p)return a;let u=p*(Math.min(g,Math.max(h,a.y))-h)/(g-h);return{x:"left"===t?i+u:i+l-u,y:a.y}}function aK(e,t,a=1){let i=aQ(e);return i.slice(1).some((e,s)=>{let l=i[s],[o,r]=[e.x-l.x,e.y-l.y],n=Math.max(0,Math.min(1,((t.x-l.x)*o+(t.y-l.y)*r)/(o*o+r*r||1)));return Math.hypot(t.x-l.x-n*o,t.y-l.y-n*r)<=a})}function aQ(e){let{x:t,y:a,width:i}=e,s=aD[e.shape];if("document"===e.shape)return[{x:t,y:a},{x:t+i,y:a},...aW(e,s),{x:t,y:a}];let{back:l,end:o}=aN(e,s,"pipe"!==e.shape,24,"bucket"===e.shape?aZ(i):0);return[...l,...o,l[0]]}let a1=["zone","sequence-lifeline","sequence-activation","timeline-marker","chart-mark","state-marker","gantt-mark","er-table","er-optional","class-box","swimlane","swimlane-header"],a0=["sequence-lifeline","sequence-activation","timeline-marker","chart-mark","er-optional","swimlane","zone"],a2={"chart-mark":"Chart mark","class-box":"Class box","er-optional":"Optional relationship end","er-table":"Entity table","gantt-mark":"Gantt mark","sequence-activation":"Sequence activation","sequence-lifeline":"Sequence lifeline","state-marker":"State marker",swimlane:"Swimlane","swimlane-header":"Swimlane header","timeline-marker":"Timeline marker",zone:"Zone"};function a3(e){let t=new Set;for(let a of e){if(t.has(a))return a;t.add(a)}}function a5(e){return"x"in e&&"y"in e}let a4=new TextEncoder;function a6(e){return a4.encode(e).byteLength}function a7(e){let t=aY.boundTextPadding;if("ellipse"===e.shape||"circle"===e.shape){let a=1-Math.SQRT1_2;return{x:t+e.width/2*a,y:t+e.height/2*a}}return"diamond"===e.shape?{x:t+e.width/4,y:t+e.height/4}:"pipe"===e.shape?{x:t+2*aD.pipe,y:t}:"bucket"===e.shape?{x:t+aZ(e.width),y:t+2*aD.bucket}:"cylinder"===e.shape||"document"===e.shape?{x:t,y:t+2*aD[e.shape]}:{x:t,y:t}}function a8(e){let t=2*aY.boundTextPadding;return"ellipse"===e.shape||"circle"===e.shape?{width:Math.round(e.width/2*Math.SQRT2)-t,height:Math.round(e.height/2*Math.SQRT2)-t}:"diamond"===e.shape?{width:Math.round(e.width/2)-t,height:Math.round(e.height/2)-t}:"pipe"===e.shape?{width:e.width-t-4*aD.pipe,height:e.height-t}:"cylinder"===e.shape||"document"===e.shape?{width:e.width-t,height:e.height-t-4*aD[e.shape]}:"bucket"===e.shape?{width:e.width-t-2*aZ(e.width),height:e.height-t-4*aD.bucket}:{width:e.width-t,height:e.height-t}}function a9(e){return e?e.size+2*aY.gap:0}function ie(e){let t=new Map(e.layers.map(e=>[e.id,e]));return e=>!e.layerId||t.get(e.layerId)?.visible!==!1}function it(e,t){let a=new Map;for(let[i,s]of e.elements.entries())"text"===s.type&&s.containerId&&t(s)&&a.set(s.containerId,{element:s,index:i});return a}function ia(e,t,a){let i=t?.text??e.label,s=t?.fontSize??16,l=t?t.maxWidth??160:Math.max(1,e.width-24),o=i.split("\n"),r=aE(i,s),n=Math.max(1,Math.min(l,r)),d=Math.ceil(o.length*s*1.35);if(aO(i,s,l)-s+24>e.width)return!0;if(a||aR(e.shape)){let t=a8(e);return r>t.width||d+a9(a)>t.height}return n+24>e.width||d+18>e.height}function ii(e){let t=[];0===e.elements.length&&t.push({code:"empty_canvas",message:"CanvasSpec must contain at least one element.",path:"elements"}),e.elements.length>a$.maxElements&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxElements} elements.`,path:"elements"}),e.layers.length>a$.maxLayers&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxLayers} layers.`,path:"layers"}),e.layouts.length>a$.maxLayouts&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxLayouts} layout primitives.`,path:"layouts"}),(e.width>a$.maxDimension||e.height>a$.maxDimension)&&t.push({code:"limit_exceeded",message:`Canvas dimensions may not exceed ${a$.maxDimension}.`,path:"width"});let a=a3(e.elements.map(e=>e.id));a&&t.push({code:"duplicate_element_id",elementId:a,message:`Duplicate element id "${a}" is not allowed.`,path:"elements"});let i=a3(e.layers.map(e=>e.id));i&&t.push({code:"duplicate_layer_id",message:`Duplicate layer id "${i}" is not allowed.`,path:"layers"});let s=a3(e.zOrder);s&&t.push({code:"duplicate_z_order_element",elementId:s,message:`zOrder contains duplicate element "${s}".`,path:"zOrder"}),e.zOrder.length>a$.maxZOrderEntries&&t.push({code:"limit_exceeded",message:`zOrder exceeds ${a$.maxZOrderEntries} entries.`,path:"zOrder"});let l=new Map(e.elements.map(e=>[e.id,e])),o=e.elements.filter(e=>"node"===e.type),r=iu(e.elements),n=a3([...o.map(e=>e.nodeId),...e.elements.flatMap(e=>"frame"===e.type&&void 0!==e.nodeId?[e.nodeId]:[])]);n&&t.push({code:"invalid_binding",message:`Duplicate nodeId "${n}" makes connector bindings ambiguous.`,path:"elements"});let d=a3(e.elements.flatMap(e=>"arrow"===e.type?[e.edgeId]:[]));d&&t.push({code:"invalid_binding",message:`Duplicate edgeId "${d}" makes connector selection ambiguous.`,path:"elements"});let c=a3(e.elements.flatMap(e=>"text"===e.type&&e.containerId?[e.containerId]:[]));c&&t.push({code:"invalid_binding",elementId:c,message:`Container "${c}" has more than one bound text element.`,path:"elements"});let p=new Set(e.layers.map(e=>e.id)),h=ie(e),g=it(e,h);t.push(...function(e){let t=[],a=0;for(let[i,s]of Object.entries(e.icons??{})){let e=a6(s.svg);a+=e,e>aY.maxAssetBytes&&t.push({code:"limit_exceeded",message:`Icon asset "${i}" exceeds ${aY.maxAssetBytes} bytes.`,path:`icons.${i}`})}return a>aY.maxTotalAssetBytes&&t.push({code:"limit_exceeded",message:`Icon assets exceed ${aY.maxTotalAssetBytes} bytes per canvas.`,path:"icons"}),t}(e)),e.elements.forEach((a,i)=>{let s,o;if(t.push(...(s=[],o=`elements[${i}]`,"width"in a&&"height"in a&&(!(a.width>0)||!(a.height>0))&&s.push({code:"invalid_geometry",elementId:a.id,message:`Element "${a.id}" must have positive width and height.`,path:o}),"points"in a&&void 0!==a.points&&a.points.length>a$.maxPointsPerElement&&s.push({code:"limit_exceeded",elementId:a.id,message:`Element "${a.id}" exceeds ${a$.maxPointsPerElement} points.`,path:`${o}.points`}),"text"in a&&a.text.length>a$.maxTextLength&&s.push({code:"limit_exceeded",elementId:a.id,message:`Text element "${a.id}" exceeds ${a$.maxTextLength} characters.`,path:`${o}.text`}),"node"===a.type&&"polygon"===a.shape&&(!a.points||a.points.length<3)&&s.push({code:"invalid_polygon",elementId:a.id,message:`Polygon "${a.id}" requires at least three points.`,path:`${o}.points`}),a.groupIds&&a.groupIds.length>a$.maxGroupsPerElement&&s.push({code:"limit_exceeded",elementId:a.id,message:`Element "${a.id}" exceeds ${a$.maxGroupsPerElement} groups.`,path:`${o}.groupIds`}),s)),"node"===a.type&&t.push(...function(e,t,a){let i=t.icon;if(!i)return[];let s=`elements[${a}].icon`,l=[];return t.rendererRole&&l.push({code:"invalid_icon",elementId:t.id,message:`${a2[t.rendererRole]} "${t.id}" cannot carry an icon.`,path:s}),u(i.slug)?e.icons&&Object.hasOwn(e.icons,i.slug)||l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" references icon "${i.slug}" without an embedded asset.`,path:`${s}.slug`}):l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" has an invalid icon slug "${i.slug}".`,path:`${s}.slug`}),(!Number.isFinite(i.size)||i.size<aY.minSize||i.size>aY.maxSize)&&l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" icon size must be ${aY.minSize}-${aY.maxSize}.`,path:`${s}.size`}),l}(e,a,i)),"node"===a.type&&"polygon"!==a.shape&&h(a)){let e=g.get(a.id);(e||void 0===a.rendererRole)&&ia(a,e?.element,a.icon)&&t.push({code:"label_overflow",elementId:e?.element.id??a.id,message:`Label does not fit inside node "${a.id}" without changing its geometry.`,path:e?`elements[${e.index}].text`:`elements[${i}].label`})}if(a.frameId){let e=l.get(a.frameId);e&&"frame"===e.type||t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" references missing frame "${a.frameId}".`,path:`elements[${i}].frameId`})}if(a.layerId&&!p.has(a.layerId)&&t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" references missing layer "${a.layerId}".`,path:`elements[${i}].layerId`}),a.groupIds&&a3(a.groupIds)&&t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" contains duplicate group ids.`,path:`elements[${i}].groupIds`}),"text"===a.type&&a.containerId){let e=l.get(a.containerId);e&&("node"===e.type||"arrow"===e.type)||t.push({code:"invalid_binding",elementId:a.id,message:`Text "${a.id}" references unsupported container "${a.containerId}".`,path:`elements[${i}].containerId`})}if("arrow"===a.type&&(r.has(a.sourceNodeId)||t.push({code:"invalid_binding",elementId:a.id,message:`Connector "${a.id}" references missing source "${a.sourceNodeId}".`,path:`elements[${i}].sourceNodeId`}),r.has(a.targetNodeId)||t.push({code:"invalid_binding",elementId:a.id,message:`Connector "${a.id}" references missing target "${a.targetNodeId}".`,path:`elements[${i}].targetNodeId`})),"line"===a.type)for(let[e,s]of[["startBinding",a.startBinding],["endBinding",a.endBinding]]){let o=s?l.get(s.elementId):void 0;s&&(!o||"node"!==o.type&&"frame"!==o.type)&&t.push({code:"invalid_binding",elementId:a.id,message:`Line "${a.id}" references missing binding "${s.elementId}".`,path:`elements[${i}].${e}`})}});let f=new Set(e.zOrder);for(let a of e.elements)f.has(a.id)||t.push({code:"missing_z_order_element",elementId:a.id,message:`Element "${a.id}" is missing from zOrder.`,path:"zOrder"});for(let a of e.zOrder)l.has(a)||t.push({code:"unknown_z_order_element",elementId:a,message:`zOrder references missing element "${a}".`,path:"zOrder"});for(let[a,i]of e.layouts.entries())for(let e of i.ids){let i=l.get(e);i&&a5(i)||t.push({code:"unknown_layout_target",elementId:e,message:`Layout references missing or non-positioned element "${e}".`,path:`layouts[${a}].ids`})}for(let a of e.elements.filter(e=>"frame"===e.type)){let e=new Set([a.id]),i=a.frameId;for(;i;){if(e.has(i)){t.push({code:"invalid_composition",elementId:a.id,message:`Frame "${a.id}" participates in a frame nesting cycle.`,path:"elements"});break}e.add(i);let s=l.get(i);i=s?.type==="frame"?s.frameId:void 0}}return t}function is(e){if("text"===e.type){let t=e.text.split("\n");return{x:e.x,y:e.y,width:e.maxWidth??aE(e.text,e.fontSize),height:t.length*e.fontSize*(e.lineHeight??1.35)}}return{x:e.x,y:e.y,width:e.width,height:e.height}}function il(e,t){let a=new Map(e.map(e=>[e.id,e]));return t.flatMap(e=>{let t=a.get(e);return t&&a5(t)?[t]:[]})}function io(e,t){return e.map(e=>{var a,i;let s=t.get(e.id);return s?(a=s.x,i=s.y,a5(e)?{...e,x:a,y:i}:e):e})}function ir(e,t){return"x"===t?e.x:e.y}function id(e,t){return"x"===t?e.width:e.height}function ic(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function ip(e,t){let a=ic(e),i=t.x-a.x,s=t.y-a.y,[l,o]=Math.abs(i)>=Math.abs(s)?[i>=0?"right":"left",{x:i>=0?e.x+e.width:e.x,y:a.y}]:[s>=0?"bottom":"top",{x:a.x,y:s>=0?e.y+e.height:e.y}];return"type"in e&&"node"===e.type&&aR(e.shape)?aJ({...e,shape:e.shape},l,o):o}function ih(e,t){let a=t.width/2,i=t.height/2,s=(e.x-t.x-a)/a,l=(e.y-t.y-i)/i,o="node"===t.type?t.shape:"rectangle";if("node"===t.type&&aR(t.shape))return aK({...t,shape:t.shape},e,1);let r=.5/Math.min(a,i);if("ellipse"===o||"circle"===o)return Math.abs(Math.hypot(s,l)-1)<=r;if("diamond"===o)return Math.abs(Math.abs(s)+Math.abs(l)-1)<=r;let n=(e,t,a)=>e>=t-.5&&e<=a+.5,d=(e,t)=>.5>=Math.abs(e-t);return n(e.y,t.y,t.y+t.height)&&(d(e.x,t.x)||d(e.x,t.x+t.width))||n(e.x,t.x,t.x+t.width)&&(d(e.y,t.y)||d(e.y,t.y+t.height))}function ig(e,t){let a=ip(e,ic(t)),i=ip(t,ic(e)),s=ic(e),l=ic(t),o=Math.abs(l.x-s.x)>=Math.abs(l.y-s.y),r=o?"x":"y",n=(i[r]-a[r])/2,d=(e,t)=>o?{x:e.x+t,y:e.y}:{x:e.x,y:e.y+t};return aA([a,d(a,n),d(i,-n),i])}function iu(e){return new Map(e.flatMap(e=>"node"===e.type||"frame"===e.type&&void 0!==e.nodeId?[[e.nodeId,e]]:[]))}function im(e,t=.01){let a=[];for(let i=0;i<e.length-1;i+=1){let s=e[i],l=e[i+1];if(!s||!l)continue;let o=Math.abs(s.y-l.y)<=t,r=Math.abs(s.x-l.x)<=t;if(!o&&!r)continue;let n=Math.min(o?s.x:s.y,o?l.x:l.y),d=Math.max(o?s.x:s.y,o?l.x:l.y);d-n<=t||a.push({min:n,max:d,orientation:o?"horizontal":"vertical",staticCoordinate:o?s.y:s.x,segmentIndex:i,isFirstSegment:0===i,isLastSegment:i===e.length-2})}return a}function iv(e,t){return Math.min(e.max,t.max)-Math.max(e.min,t.min)}function iy(e,t,a=.01){return e.orientation===t.orientation&&Math.abs(e.staticCoordinate-t.staticCoordinate)<=a&&iv(e,t)>a}function iw(e,t,a=.01){let i="horizontal"===e.orientation,s=i?t.y:t.x,l=s+(i?t.height:t.width),o=i?t.x:t.y,r=o+(i?t.width:t.height);return e.staticCoordinate>s+a&&e.staticCoordinate<l-a&&Math.min(e.max,r)-Math.max(e.min,o)>a}function ix(e,t){return e.isFirstSegment&&t.isFirstSegment&&null!==e.startBindingId&&e.startBindingId===t.startBindingId||e.isLastSegment&&t.isLastSegment&&null!==e.endBindingId&&e.endBindingId===t.endBindingId}function ib(e,t,a,i=0){let s=-1/0;for(let l of t)for(let t of e)l.x0<t.x1+i&&t.x0<l.x1+i&&(s=Math.max(s,t.y1+a-l.y0));return s}function ik(e,t,a,i=0){let s=-1/0;for(let l of t)for(let t of e)l.y0<t.y1+i&&t.y0<l.y1+i&&(s=Math.max(s,t.x1+a-l.x0));return s}function iM(e,t,a="characters"){let i=0x811c9dc5;for(let t=0;t<e.length;t+=1)i^=e.charCodeAt(t),i=Math.imul(i,0x1000193),"characters"===a&&(e.codePointAt(t)??0)>65535&&(t+=1);return"seed"===t?Math.abs(i)||1:(i>>>0).toString(16).padStart(8,"0")}s.gPz([ew,eP,eY,ea,Z,e2,to,tM,tJ,ag]);let iC={id:"multi-stage-rework",title:"Rework earlier stages",nodes:[{id:"start",label:"Received",kind:"start"},...["Intake","Validate","Assemble","Review","Rework","Release"].map((e,t)=>({id:String(t),label:e,kind:5===t?"end":"process"}))],edges:[{id:"start",source:"start",target:"0"},...Array.from({length:5},(e,t)=>({id:`e${t}`,source:String(t),target:String(t+1)})),...Array.from({length:4},(e,t)=>({id:`back${t}`,source:"4",target:String(t),...0===t?{label:"Retry"}:{}}))]},iz={id:"two-stage-retry",title:"Revisit earlier checks",nodes:[{id:"s",label:"Received",kind:"start"},...["Prepare","Inspect","Review","Rework"].map((e,t)=>({id:["a","b","c","d"][t],label:e,kind:"process"})),{id:"end",label:"Released",kind:"end"}],edges:[["s","a"],["a","b"],["b","c"],["c","d"],["d","end"],["d","a"],["d","b"]].map(([e,t],a)=>({id:`e${a}`,source:e,target:t}))};function i_(e){return ez({...e,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}})}function iL(e,t="TB"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}function iB(e){return ez({...e,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}})}function iS(e){return ti({...e,type:eN})}ez({id:"package-chain",title:"Request to hosted artifact",nodes:[{id:"app",label:"App request",kind:"start"},{id:"agent",label:"Agent / orchestration",kind:"process"},{id:"core",label:"Core diagram model",kind:"process"},{id:"renderer",label:"Renderer",kind:"process"},{id:"export",label:"Excalidraw export",kind:"process"},{id:"host",label:"Artifact hosting / storage",kind:"process"},{id:"response",label:"Hosted artifact response",kind:"end"}],edges:[{id:"request",source:"app",target:"agent",label:"Request contract"},{id:"build",source:"agent",target:"core",label:"Semantic builder input"},{id:"validate",source:"core",target:"renderer",label:"Validated diagram spec"},{id:"render",source:"renderer",target:"export",label:"CanvasSpec scene"},{id:"store",source:"export",target:"host",label:"Exported artifact bundle"},{id:"respond",source:"host",target:"response",label:"Artifact ID + hosted URLs"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"scope-bypass",title:"Diagram request",nodes:[{id:"received",label:"Prompt received",kind:"start"},{id:"requirements",label:"Extract requirements",kind:"process"},{id:"scope",label:"Is the scope clear?",kind:"decision"},{id:"draft",label:"Draft typed IR",kind:"process"},{id:"review",label:"Review",kind:"end"}],edges:[{id:"extract",source:"received",target:"requirements"},{id:"assess",source:"requirements",target:"scope"},{id:"clear",source:"scope",target:"draft",label:"Yes"},{id:"unclear",source:"scope",target:"review",label:"No"},{id:"submit",source:"draft",target:"review"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"rollout-failures",title:"Feature flag rollout",nodes:[{id:"ready",label:"Flag is ready",kind:"start"},{id:"internal",label:"Enable internally",kind:"process"},{id:"internal-health",label:"Internal checks healthy?",kind:"decision"},{id:"beta",label:"Enable beta cohort",kind:"process"},{id:"beta-health",label:"Beta checks healthy?",kind:"decision"},{id:"ramp",label:"Ramp to all users",kind:"process"},{id:"complete",label:"Rollout complete",kind:"end"},{id:"rollback",label:"Roll back the feature",kind:"end"}],edges:[{id:"enable",source:"ready",target:"internal"},{id:"check-internal",source:"internal",target:"internal-health"},{id:"internal-healthy",source:"internal-health",target:"beta",label:"Healthy"},{id:"internal-fail",source:"internal-health",target:"rollback",label:"Fail"},{id:"check-beta",source:"beta",target:"beta-health"},{id:"beta-healthy",source:"beta-health",target:"ramp",label:"Healthy"},{id:"beta-unhealthy",source:"beta-health",target:"rollback",label:"Unhealthy"},{id:"finish",source:"ramp",target:"complete"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"cache-lookup",title:"Answer a question from the cache or the model",nodes:[{id:"host",label:"App receives the question",kind:"start"},{id:"page",label:"Page sends the question to the API",kind:"process"},{id:"auth",label:"Authenticate the user",kind:"process"},{id:"limit",label:"Apply the rate limit",kind:"process"},{id:"cache",label:"Check the answer cache",kind:"process"},{id:"hit",label:"Cache hit?",kind:"decision"},{id:"cached",label:"Return the cached answer",kind:"end"},{id:"model",label:"Call the language model",kind:"process"},{id:"store",label:"Store the answer in the cache",kind:"process"},{id:"log",label:"Log any errors",kind:"process"},{id:"answer",label:"Return the answer",kind:"end"}],edges:[{id:"ask",source:"host",target:"page"},{id:"verify",source:"page",target:"auth"},{id:"throttle",source:"auth",target:"limit"},{id:"lookup",source:"limit",target:"cache"},{id:"check",source:"cache",target:"hit"},{id:"hit-yes",source:"hit",target:"cached",label:"Yes"},{id:"hit-no",source:"hit",target:"model",label:"No"},{id:"keep",source:"model",target:"store"},{id:"trace",source:"store",target:"log"},{id:"reply",source:"log",target:"answer"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"release-fan-in",title:"Fix release",nodes:[{id:"confirmed",label:"Bug confirmed",kind:"start"},{id:"security",label:"Security impact?",kind:"decision"},{id:"triage",label:"Security triage",kind:"process"},{id:"hotfix",label:"Hotfix branch",kind:"process"},{id:"priority",label:"High priority?",kind:"decision"},{id:"sprint",label:"Sprint backlog",kind:"process"},{id:"release",label:"Release fix",kind:"end"},{id:"backlog",label:"Regular backlog",kind:"end"}],edges:[{id:"assess",source:"confirmed",target:"security"},{id:"secure",source:"security",target:"triage",label:"Yes"},{id:"branch",source:"triage",target:"hotfix"},{id:"ship-hotfix",source:"hotfix",target:"release"},{id:"prioritize",source:"security",target:"priority",label:"No"},{id:"plan",source:"priority",target:"sprint",label:"Yes"},{id:"ship-sprint",source:"sprint",target:"release"},{id:"defer",source:"priority",target:"backlog",label:"No"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"stability-fan-in",title:"Incident remediation",nodes:[{id:"evidence",label:"Collect evidence",kind:"start"},{id:"cause",label:"Classify root cause",kind:"decision"},{id:"rollback",label:"Roll back deploy",kind:"process"},{id:"hotfix",label:"Prepare hotfix",kind:"process"},{id:"provider",label:"Escalate to provider",kind:"process"},{id:"stable",label:"Service stable?",kind:"decision"},{id:"monitor",label:"Monitor service",kind:"end"},{id:"escalate",label:"Escalate unstable service",kind:"process"},{id:"fresh",label:"Collect fresh evidence",kind:"process"}],edges:[{id:"classify",source:"evidence",target:"cause"},{id:"deploy",source:"cause",target:"rollback",label:"Deploy"},{id:"code",source:"cause",target:"hotfix",label:"Code"},{id:"vendor",source:"cause",target:"provider",label:"Provider"},{id:"check-rollback",source:"rollback",target:"stable"},{id:"check-hotfix",source:"hotfix",target:"stable"},{id:"check-provider",source:"provider",target:"stable"},{id:"healthy",source:"stable",target:"monitor",label:"Yes"},{id:"unhealthy",source:"stable",target:"escalate",label:"No"},{id:"gather",source:"escalate",target:"fresh"},{id:"retry",source:"fresh",target:"cause"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"renewal-retry",title:"Subscription renewal",nodes:[{id:"due",label:"Renewal due",kind:"start"},{id:"charge",label:"Charge payment",kind:"process"},{id:"paid",label:"Payment succeeded?",kind:"decision"},{id:"renew",label:"Renew subscription",kind:"end"},{id:"remind",label:"Send reminder",kind:"process"},{id:"updated",label:"Payment updated?",kind:"decision"},{id:"pause",label:"Pause subscription",kind:"end"}],edges:[{id:"bill",source:"due",target:"charge"},{id:"confirm",source:"charge",target:"paid"},{id:"renewed",source:"paid",target:"renew",label:"Yes"},{id:"declined",source:"paid",target:"remind",label:"No"},{id:"wait",source:"remind",target:"updated"},{id:"retry",source:"updated",target:"charge",label:"Yes"},{id:"expired",source:"updated",target:"pause",label:"No"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"cancellation-convergence",title:"Subscription cancellation",nodes:[{id:"requested",label:"Member requests cancellation",kind:"start"},{id:"reason",label:"Collect the cancellation reason",kind:"process"},{id:"eligible",label:"Eligible for a retention offer?",kind:"decision"},{id:"offer",label:"Present retention offer",kind:"process"},{id:"accepted",label:"Offer accepted?",kind:"decision"},{id:"keep",label:"Retain member",kind:"end"},{id:"confirm",label:"Confirm cancellation",kind:"process"},{id:"close",label:"Close account",kind:"end"}],edges:[{id:"record",source:"requested",target:"reason"},{id:"check",source:"reason",target:"eligible"},{id:"offer-save",source:"eligible",target:"offer",label:"Yes"},{id:"not-eligible",source:"eligible",target:"confirm",label:"No"},{id:"decide",source:"offer",target:"accepted"},{id:"kept",source:"accepted",target:"keep",label:"Yes"},{id:"declined",source:"accepted",target:"confirm",label:"No"},{id:"close-account",source:"confirm",target:"close"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"shared-feedback-returns",title:"Revisit earlier checks",nodes:[{id:"start",label:"Received",kind:"start"},{id:"a",label:"Intake",kind:"process"},{id:"b",label:"Inspect",kind:"process"},{id:"c",label:"Review",kind:"process"},{id:"d",label:"Approve",kind:"process"},{id:"end",label:"Released",kind:"end"}],edges:[{id:"entry",source:"start",target:"a"},{id:"ab",source:"a",target:"b"},{id:"bc",source:"b",target:"c"},{id:"cd",source:"c",target:"d"},{id:"release",source:"d",target:"end"},{id:"ba",source:"b",target:"a"},{id:"ca",source:"c",target:"a",label:"Retry"},{id:"da",source:"d",target:"a"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({...iz,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"feedback-chain",title:"Repeat inspection",nodes:[{id:"start",label:"Received",kind:"start"},{id:"a",label:"Prepare",kind:"process"},{id:"b",label:"Inspect",kind:"process"},{id:"c",label:"Approve",kind:"process"},{id:"end",label:"Released",kind:"end"}],edges:[{id:"start",source:"start",target:"a"},{id:"ab",source:"a",target:"b"},{id:"bc",source:"b",target:"c"},{id:"ca",source:"c",target:"a",label:"Retry"},{id:"end",source:"c",target:"end"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({...iC,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"feedback-skip-stubs",title:"Retry with skipped stages",nodes:[{id:"0",label:"Step 0",kind:"start"},{id:"1",label:"Step 1",kind:"process"},{id:"2",label:"Step 2",kind:"process"},{id:"3",label:"Step 3",kind:"process"},{id:"4",label:"Step 4",kind:"process"},{id:"5",label:"Step 5",kind:"end"}],edges:[{id:"e0",source:"0",target:"1"},{id:"e1",source:"1",target:"2"},{id:"e2",source:"2",target:"3"},{id:"e3",source:"3",target:"4",label:"Path 3"},{id:"e4",source:"4",target:"5"},{id:"e5",source:"3",target:"5"},{id:"feedback",source:"4",target:"1"},{id:"e7",source:"2",target:"4"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"decision-feedback",title:"Retry a failed attempt",nodes:[{id:"start",label:"Start",kind:"start"},{id:"attempt",label:"Attempt",kind:"process"},{id:"check",label:"Success?",kind:"decision"},{id:"done",label:"Done",kind:"end"}],edges:[{id:"start",source:"start",target:"attempt"},{id:"check",source:"attempt",target:"check"},{id:"yes",source:"check",target:"done",label:"Yes"},{id:"feedback",source:"check",target:"attempt",label:"Retry"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"review-feedback",title:"Review feedback",nodes:[{id:"start",label:"Received",kind:"start"},{id:"prepare",label:"Prepare submission",kind:"process"},{id:"review",label:"Ready?",kind:"decision"},{id:"revise",label:"Request changes",kind:"process"},{id:"done",label:"Accepted",kind:"end"}],edges:[{id:"start",source:"start",target:"prepare"},{id:"review",source:"prepare",target:"review"},{id:"no",source:"review",target:"revise",label:"No"},{id:"feedback",source:"revise",target:"prepare",label:"Changes ready"},{id:"yes",source:"review",target:"done",label:"Yes"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"wait-retry",title:"Wait and retry",nodes:[{id:"start",label:"Join queue",kind:"start"},{id:"responds",label:"Responds?",kind:"decision"},{id:"leave",label:"Leave queue",kind:"end"},{id:"ready",label:"Ready?",kind:"decision"},{id:"done",label:"Continue",kind:"end"},{id:"wait",label:"Keep waiting",kind:"process"}],edges:[{id:"start",source:"start",target:"responds"},{id:"leave",source:"responds",target:"leave",label:"No"},{id:"ready",source:"responds",target:"ready",label:"Yes"},{id:"done",source:"ready",target:"done",label:"Yes"},{id:"wait",source:"ready",target:"wait",label:"No"},{id:"feedback",source:"wait",target:"responds"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"content-moderation-flow",title:"Content moderation flow",nodes:[{id:"report",label:"Report received",kind:"start"},{id:"scan",label:"Automated scan runs",kind:"process"},{id:"severe",label:"Severe harm detected?",kind:"decision"},{id:"remove",label:"Remove content",kind:"process"},{id:"escalate",label:"Escalate to safety",kind:"process"},{id:"violation",label:"Policy violation?",kind:"decision"},{id:"restore_none",label:"Restore content",kind:"end"},{id:"review",label:"Human review",kind:"process"},{id:"action",label:"Action needed?",kind:"decision"},{id:"limit",label:"Limit content",kind:"end"},{id:"restore_review",label:"Restore content",kind:"end"},{id:"closed_severe",label:"Severe case closed",kind:"end"}],edges:[{id:"edge-1",source:"report",target:"scan"},{id:"edge-2",source:"scan",target:"severe"},{id:"edge-3",source:"severe",target:"remove",label:"Yes"},{id:"edge-4",source:"severe",target:"violation",label:"No"},{id:"edge-5",source:"remove",target:"escalate"},{id:"edge-6",source:"escalate",target:"closed_severe"},{id:"edge-7",source:"violation",target:"restore_none",label:"No"},{id:"edge-8",source:"violation",target:"review",label:"Yes"},{id:"edge-9",source:"review",target:"action"},{id:"edge-10",source:"action",target:"limit",label:"Yes"},{id:"edge-11",source:"action",target:"restore_review",label:"No"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"data-import-validation",title:"Data import validation",nodes:[{id:"upload",label:"File uploaded",kind:"start"},{id:"parse",label:"Parse file",kind:"process"},{id:"parse_ok",label:"Parsing succeeded?",kind:"decision"},{id:"reject",label:"Reject file",kind:"process"},{id:"rejected_end",label:"File rejected",kind:"end"},{id:"validate",label:"Validate schema",kind:"process"},{id:"schema_ok",label:"Schema valid?",kind:"decision"},{id:"mapping_errors",label:"Return mapping errors",kind:"process"},{id:"mapping_end",label:"Mapping errors returned",kind:"end"},{id:"dedupe",label:"Deduplicate records",kind:"process"},{id:"dup_found",label:"Duplicates found?",kind:"decision"},{id:"merge",label:"Merge duplicates",kind:"process"},{id:"import",label:"Import records",kind:"process"},{id:"done",label:"Import complete",kind:"end"}],edges:[{id:"edge-1",source:"upload",target:"parse"},{id:"edge-2",source:"parse",target:"parse_ok"},{id:"edge-3",source:"parse_ok",target:"reject",label:"No"},{id:"edge-4",source:"reject",target:"rejected_end"},{id:"edge-5",source:"parse_ok",target:"validate",label:"Yes"},{id:"edge-6",source:"validate",target:"schema_ok"},{id:"edge-7",source:"schema_ok",target:"mapping_errors",label:"No"},{id:"edge-8",source:"mapping_errors",target:"mapping_end"},{id:"edge-9",source:"schema_ok",target:"dedupe",label:"Yes"},{id:"edge-10",source:"dedupe",target:"dup_found"},{id:"edge-11",source:"dup_found",target:"merge",label:"Yes"},{id:"edge-12",source:"merge",target:"import"},{id:"edge-13",source:"dup_found",target:"import",label:"No"},{id:"edge-14",source:"import",target:"done"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"incident-escalation-flowchart",title:"Incident Escalation Flowchart",nodes:[{id:"alert",label:"Monitoring creates alert",kind:"start"},{id:"ack",label:"Responder acknowledges alert",kind:"process"},{id:"severity",label:"Severity?",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor_low",label:"Monitoring: low-severity incident",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve_bridge",label:"Resolve incident",kind:"end"},{id:"fix",label:"Fix available?",kind:"decision"},{id:"resolve_fix",label:"Resolve incident (fix found)",kind:"end"},{id:"escalate",label:"Escalate to incident bridge",kind:"process"},{id:"resolved_low",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High"},{id:"edge-4",source:"severity",target:"triage",label:"Medium"},{id:"edge-5",source:"severity",target:"monitor_low",label:"Low"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve_bridge"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve_fix",label:"Yes"},{id:"edge-11",source:"fix",target:"escalate",label:"No"},{id:"edge-12",source:"escalate",target:"bridge"},{id:"edge-13",source:"monitor_low",target:"resolved_low"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"invoice-approval",title:"Invoice approval",nodes:[{id:"received",label:"Invoice received",kind:"start"},{id:"match_po",label:"Match invoice to purchase order",kind:"process"},{id:"po_matched",label:"Invoice matches PO?",kind:"decision"},{id:"exception_review",label:"Route to exception review",kind:"process"},{id:"exception_resolved",label:"Exception resolved?",kind:"decision"},{id:"reject",label:"Reject invoice",kind:"end"},{id:"over_threshold",label:"Amount over approval threshold?",kind:"decision"},{id:"director_approval",label:"Director approval before payment",kind:"process"},{id:"schedule_payment",label:"Schedule payment",kind:"process"},{id:"paid",label:"Payment scheduled",kind:"end"}],edges:[{id:"e1",source:"received",target:"match_po"},{id:"e2",source:"match_po",target:"po_matched"},{id:"e3",source:"po_matched",target:"over_threshold",label:"Yes"},{id:"e4",source:"po_matched",target:"exception_review",label:"No"},{id:"e5",source:"exception_review",target:"exception_resolved"},{id:"e6",source:"exception_resolved",target:"over_threshold",label:"Yes"},{id:"e7",source:"exception_resolved",target:"reject",label:"No"},{id:"e8",source:"over_threshold",target:"director_approval",label:"Yes"},{id:"e9",source:"over_threshold",target:"schedule_payment",label:"No"},{id:"e10",source:"director_approval",target:"schedule_payment"},{id:"e11",source:"schedule_payment",target:"paid"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"loan-underwriting",title:"Loan Application Underwriting",nodes:[{id:"submit",label:"Application submitted",kind:"start"},{id:"verify_id",label:"Verify identity",kind:"process"},{id:"id_ok",label:"Identity verified?",kind:"decision"},{id:"credit_review",label:"Credit review",kind:"process"},{id:"credit_ok",label:"Credit acceptable?",kind:"decision"},{id:"manual_uw",label:"Manual underwriting",kind:"process"},{id:"exception",label:"Exception approved?",kind:"decision"},{id:"income",label:"Income verification",kind:"process"},{id:"approve",label:"Loan approved",kind:"end"},{id:"decline",label:"Decline application",kind:"end"}],edges:[{id:"e1",source:"submit",target:"verify_id"},{id:"e2",source:"verify_id",target:"id_ok"},{id:"e3",source:"id_ok",target:"credit_review",label:"Yes"},{id:"e4",source:"id_ok",target:"decline",label:"No"},{id:"e5",source:"credit_review",target:"credit_ok"},{id:"e6",source:"credit_ok",target:"income",label:"Yes"},{id:"e7",source:"credit_ok",target:"manual_uw",label:"No"},{id:"e8",source:"manual_uw",target:"exception"},{id:"e9",source:"exception",target:"income",label:"Yes"},{id:"e10",source:"exception",target:"decline",label:"No"},{id:"e11",source:"income",target:"approve"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"patient-intake-scheduling",title:"Patient Intake Scheduling",nodes:[{id:"request",label:"Patient requests appointment",kind:"start"},{id:"collect",label:"Clinic collects intake information",kind:"process"},{id:"urgent",label:"Urgent symptoms?",kind:"decision"},{id:"triage",label:"Nurse triage",kind:"process"},{id:"same_day",label:"Schedule same-day appointment",kind:"process"},{id:"insurance",label:"Is insurance valid?",kind:"decision"},{id:"routine",label:"Schedule routine appointment",kind:"process"},{id:"self_pay_q",label:"Patient accepts self-pay?",kind:"decision"},{id:"self_pay",label:"Schedule routine care (self-pay)",kind:"process"},{id:"billing",label:"Refer to billing",kind:"process"},{id:"end_same_day",label:"Same-day visit booked",kind:"end"},{id:"end_routine",label:"Routine visit booked",kind:"end"},{id:"end_self_pay",label:"Self-pay visit booked",kind:"end"},{id:"end_billing",label:"Billing referral made",kind:"end"}],edges:[{id:"e1",source:"request",target:"collect"},{id:"e2",source:"collect",target:"urgent"},{id:"e3",source:"urgent",target:"triage",label:"Yes"},{id:"e4",source:"triage",target:"same_day"},{id:"e5",source:"same_day",target:"end_same_day"},{id:"e6",source:"urgent",target:"insurance",label:"No"},{id:"e7",source:"insurance",target:"routine",label:"Valid"},{id:"e8",source:"routine",target:"end_routine"},{id:"e9",source:"insurance",target:"self_pay_q",label:"Invalid"},{id:"e10",source:"self_pay_q",target:"self_pay",label:"Yes"},{id:"e11",source:"self_pay",target:"end_self_pay"},{id:"e12",source:"self_pay_q",target:"billing",label:"No"},{id:"e13",source:"billing",target:"end_billing"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"pharma-batch-disposition",title:"Pharma Batch Disposition",nodes:[{id:"received",label:"Batch received",kind:"start"},{id:"coa_review",label:"QA reviews Certificate of Analysis (CoA)",kind:"process"},{id:"spec_check",label:"Batch passes specs?",kind:"decision"},{id:"final_review",label:"QA Manager final review",kind:"process"},{id:"packaging",label:"Packaging",kind:"process"},{id:"released",label:"Packaged batch released",kind:"end"},{id:"investigation",label:"Investigation",kind:"process"},{id:"rejected",label:"Reject batch",kind:"end"}],edges:[{id:"e1",source:"received",target:"coa_review"},{id:"e2",source:"coa_review",target:"spec_check"},{id:"e3",source:"spec_check",target:"final_review",label:"Pass"},{id:"e4",source:"spec_check",target:"investigation",label:"Retest"},{id:"e5",source:"spec_check",target:"rejected",label:"Reject"},{id:"e6",source:"final_review",target:"packaging"},{id:"e7",source:"packaging",target:"released"},{id:"e8",source:"investigation",target:"final_review",label:"Returns to final review"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"warehouse-reorder-flow",title:"Warehouse reorder flow",nodes:[{id:"count",label:"Stock count updated",kind:"start"},{id:"reorder_check",label:"Inventory below reorder point?",kind:"decision"},{id:"monitor",label:"Monitor stock",kind:"process"},{id:"monitor_end",label:"Stock monitoring continues",kind:"end"},{id:"check_supplier",label:"Check supplier availability",kind:"process"},{id:"supplier_check",label:"Supplier available?",kind:"decision"},{id:"substitute",label:"Use substitute supplier",kind:"process"},{id:"create_po",label:"Create purchase order",kind:"process"},{id:"await_delivery",label:"Await delivery",kind:"process"},{id:"reorder_end",label:"Reorder cycle complete",kind:"end"}],edges:[{id:"e1",source:"count",target:"reorder_check"},{id:"e2",source:"reorder_check",target:"monitor",label:"No"},{id:"e3",source:"monitor",target:"monitor_end"},{id:"e4",source:"reorder_check",target:"check_supplier",label:"Yes"},{id:"e5",source:"check_supplier",target:"supplier_check"},{id:"e6",source:"supplier_check",target:"create_po",label:"Yes"},{id:"e7",source:"supplier_check",target:"substitute",label:"No"},{id:"e8",source:"substitute",target:"create_po"},{id:"e9",source:"create_po",target:"await_delivery"},{id:"e10",source:"await_delivery",target:"reorder_end"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),i_({id:"loan-application-underwriting",title:"Loan Application Underwriting",nodes:[{id:"submitted",label:"Application submitted",kind:"start"},{id:"identity",label:"Verify identity",kind:"process"},{id:"identity_decision",label:"Identity verified?",kind:"decision"},{id:"identity_decline",label:"Decline application",kind:"end"},{id:"credit",label:"Credit review",kind:"process"},{id:"credit_decision",label:"Acceptable credit?",kind:"decision"},{id:"manual",label:"Manual underwriting",kind:"process"},{id:"exception",label:"Exception approved?",kind:"decision"},{id:"exception_decline",label:"Decline application",kind:"end"},{id:"income",label:"Income verification",kind:"process"},{id:"approved",label:"Approve loan",kind:"end"}],edges:[{id:"edge-1",source:"submitted",target:"identity"},{id:"edge-2",source:"identity",target:"identity_decision"},{id:"edge-3",source:"identity_decision",target:"identity_decline",label:"Failed"},{id:"edge-4",source:"identity_decision",target:"credit",label:"Verified"},{id:"edge-5",source:"credit",target:"credit_decision"},{id:"edge-6",source:"credit_decision",target:"income",label:"Acceptable"},{id:"edge-7",source:"credit_decision",target:"manual",label:"Unacceptable"},{id:"edge-8",source:"manual",target:"exception"},{id:"edge-9",source:"exception",target:"income",label:"Yes"},{id:"edge-10",source:"exception",target:"exception_decline",label:"No"},{id:"edge-11",source:"income",target:"approved"}],layout:{direction:"TB"}}),i_({id:"invoice-approval-flowchart",title:"Invoice approval flowchart",nodes:[{id:"received",label:"Invoice received",kind:"start"},{id:"match",label:"Match to purchase order",kind:"process"},{id:"matches",label:"Matches purchase order?",kind:"decision"},{id:"review",label:"Exception review",kind:"process"},{id:"resolved",label:"Exception resolved?",kind:"decision"},{id:"reject",label:"Reject invoice",kind:"end"},{id:"threshold",label:"Amount over approval threshold?",kind:"decision"},{id:"director",label:"Director approval",kind:"process"},{id:"schedule",label:"Schedule payment",kind:"process"},{id:"payment",label:"Payment",kind:"end"}],edges:[{id:"edge-1",source:"received",target:"match"},{id:"edge-2",source:"match",target:"matches"},{id:"edge-3",source:"matches",target:"review",label:"No"},{id:"edge-4",source:"review",target:"resolved"},{id:"edge-5",source:"resolved",target:"reject",label:"No — unresolved"},{id:"edge-6",source:"resolved",target:"threshold",label:"Yes — resolved"},{id:"edge-7",source:"matches",target:"threshold",label:"Yes — matched"},{id:"edge-8",source:"threshold",target:"director",label:"Yes — over threshold"},{id:"edge-9",source:"threshold",target:"schedule",label:"No — at or below threshold"},{id:"edge-10",source:"director",target:"schedule"},{id:"edge-11",source:"schedule",target:"payment"}],layout:{direction:"TB"}}),i_({id:"identifier-labels",title:"Identifier labels",nodes:[{id:"call",label:"buildSequenceDiagram",kind:"start"},{id:"check",label:"Layout renderer-independent?",kind:"decision"},{id:"export",label:"exportToExcalidrawScene(spec)",kind:"process"},{id:"fetch",label:"Fetch https://playground.sketchi.app/api/v1/artifacts/download",kind:"process"},{id:"cjk",label:"品質保証レビュー承認待ち",kind:"process"},{id:"done",label:"Ship 🚀 release",kind:"end"}],edges:[{id:"e1",source:"call",target:"check"},{id:"e2",source:"check",target:"export",label:"renderer-independent"},{id:"e3",source:"check",target:"fetch",label:"buildSequenceDiagram"},{id:"e4",source:"export",target:"cjk",label:"品質保証レビュー承認待ち"},{id:"e5",source:"fetch",target:"done",label:"https://example.com/api/v1/artifacts/download"},{id:"e6",source:"cjk",target:"done",label:"🚀🚀 shipped"}],layout:{direction:"TB"}}),i_({id:"multiline-labels",title:"Multi-line labels",nodes:[{id:"request",label:"Refund requested",kind:"start"},{id:"eligible",label:"Refund within the policy window?",kind:"decision"},{id:"provider",label:"Ask the payment provider",kind:"process"},{id:"confirmed",label:"Provider confirmed?",kind:"decision"},{id:"refund",label:"Issue the refund",kind:"process"},{id:"deny",label:"Explain the decision to the customer",kind:"end"},{id:"closed",label:"Refund closed",kind:"end"}],edges:[{id:"e1",source:"request",target:"eligible"},{id:"e2",source:"eligible",target:"provider",label:"Yes, within the window and eligible for a full refund"},{id:"e3",source:"eligible",target:"deny",label:"No — outside\nthe policy window"},{id:"e4",source:"provider",target:"confirmed",label:"Request sent to the provider"},{id:"e5",source:"confirmed",target:"refund",label:"Confirmed by the provider"},{id:"e6",source:"confirmed",target:"provider",label:"Retry after the provider\nconfirms the hold"},{id:"e7",source:"refund",target:"closed"}],layout:{direction:"TB"}}),i_({id:"competing-branch-labels",title:"Competing branch labels",nodes:[{id:"triage",label:"Triage the report",kind:"start"},{id:"kind",label:"Which kind of report?",kind:"decision"},{id:"bug",label:"Reproduce the bug",kind:"process"},{id:"feature",label:"Log the feature",kind:"process"},{id:"question",label:"Answer the question",kind:"process"},{id:"duplicate",label:"Link the duplicate",kind:"process"},{id:"reproduced",label:"Reproduced?",kind:"decision"},{id:"fix",label:"Fix and verify",kind:"process"},{id:"closed",label:"Close the report",kind:"end"}],edges:[{id:"e1",source:"triage",target:"kind"},{id:"e2",source:"kind",target:"bug",label:"Unexpected behavior"},{id:"e3",source:"kind",target:"feature",label:"Enhancement"},{id:"e4",source:"kind",target:"question",label:"Unanswered question"},{id:"e5",source:"kind",target:"duplicate",label:"Duplicate"},{id:"e6",source:"bug",target:"reproduced"},{id:"e7",source:"reproduced",target:"fix",label:"Reproduced"},{id:"e8",source:"reproduced",target:"bug",label:"Unreproducible"},{id:"e9",source:"fix",target:"closed"},{id:"e10",source:"feature",target:"closed"},{id:"e11",source:"question",target:"closed"},{id:"e12",source:"duplicate",target:"closed"}],layout:{direction:"TB"}}),iL({id:"grouped-approval",title:"Expense approval by team",groups:[{id:"employee",label:"Employee"},{id:"manager",label:"Manager"},{id:"finance",label:"Finance"}],nodes:[{id:"incurred",label:"Expense incurred",kind:"start"},{id:"submit",label:"Submit expense report",kind:"process",group:"employee"},{id:"review",label:"Review the report",kind:"process",group:"manager"},{id:"approved",label:"Approved?",kind:"decision",group:"manager"},{id:"revise",label:"Revise the report",kind:"process",group:"employee"},{id:"verify",label:"Verify receipts",kind:"process",group:"finance"},{id:"pay",label:"Pay the employee",kind:"process",group:"finance"},{id:"paid",label:"Expense paid",kind:"end"}],edges:[{id:"e1",source:"incurred",target:"submit"},{id:"e2",source:"submit",target:"review"},{id:"e3",source:"review",target:"approved"},{id:"e4",source:"approved",target:"verify",label:"yes"},{id:"e5",source:"approved",target:"revise",label:"no"},{id:"e6",source:"revise",target:"submit"},{id:"e7",source:"verify",target:"pay"},{id:"e8",source:"pay",target:"paid"}]}),iL({id:"three-zone-service",title:"Request path across network zones",groups:[{id:"internet",label:"Public internet"},{id:"edge",label:"Edge network"},{id:"private",label:"Private subnet"}],nodes:[{id:"browser",label:"Browser sends request",kind:"start",group:"internet"},{id:"cdn",label:"CDN serves cache",kind:"process",group:"edge"},{id:"cached",label:"Cache hit?",kind:"decision",group:"edge"},{id:"waf",label:"WAF filters traffic",kind:"process",group:"edge"},{id:"api",label:"API handles request",kind:"process",group:"private"},{id:"db",label:"Query the database",kind:"process",group:"private"},{id:"response",label:"Response returned",kind:"end"}],edges:[{id:"e1",source:"browser",target:"cdn"},{id:"e2",source:"cdn",target:"cached"},{id:"e3",source:"cached",target:"response",label:"hit"},{id:"e4",source:"cached",target:"waf",label:"miss"},{id:"e5",source:"waf",target:"api"},{id:"e6",source:"api",target:"db"},{id:"e7",source:"db",target:"response"}]},"LR"),iL({id:"mixed-membership",title:"Order fulfilment with partial grouping",groups:[{id:"warehouse",label:"Warehouse"},{id:"shipping",label:"Shipping partner"}],nodes:[{id:"order",label:"Order placed",kind:"start"},{id:"fraud",label:"Fraud check passed?",kind:"decision"},{id:"pick",label:"Pick items",kind:"process",group:"warehouse"},{id:"pack",label:"Pack the order",kind:"process",group:"warehouse"},{id:"label",label:"Print shipping label",kind:"process",group:"warehouse"},{id:"collect",label:"Collect parcel",kind:"process",group:"shipping"},{id:"deliver",label:"Deliver to customer",kind:"end",group:"shipping"},{id:"cancel",label:"Cancel the order",kind:"end"}],edges:[{id:"e1",source:"order",target:"fraud"},{id:"e2",source:"fraud",target:"pick",label:"yes"},{id:"e3",source:"fraud",target:"cancel",label:"no"},{id:"e4",source:"pick",target:"pack"},{id:"e5",source:"pack",target:"label"},{id:"e6",source:"label",target:"collect"},{id:"e7",source:"collect",target:"deliver"}]}),iL({id:"scattered-members",title:"Incident handling across on-call and support",groups:[{id:"support",label:"Customer support desk and escalation team"},{id:"oncall",label:"On-call"},{id:"comms",label:"Comms"}],nodes:[{id:"report",label:"Customer reports issue",kind:"start",group:"support"},{id:"triage",label:"Triage the report",kind:"process",group:"support"},{id:"outage",label:"Outage?",kind:"decision"},{id:"page",label:"Page on-call",kind:"process",group:"oncall"},{id:"mitigate",label:"Mitigate impact",kind:"process",group:"oncall"},{id:"fixed",label:"Fixed?",kind:"decision",group:"oncall"},{id:"status",label:"Post status update",kind:"process",group:"comms"},{id:"reply",label:"Reply to customer",kind:"process",group:"support"},{id:"closed",label:"Ticket closed",kind:"end",group:"support"}],edges:[{id:"e1",source:"report",target:"triage"},{id:"e2",source:"triage",target:"outage"},{id:"e3",source:"outage",target:"page",label:"yes"},{id:"e4",source:"outage",target:"reply",label:"no"},{id:"e5",source:"page",target:"mitigate"},{id:"e6",source:"mitigate",target:"fixed"},{id:"e7",source:"fixed",target:"status",label:"yes"},{id:"e8",source:"fixed",target:"mitigate",label:"not yet"},{id:"e9",source:"status",target:"reply"},{id:"e10",source:"reply",target:"closed"}]}),iL({id:"many-groups",title:"Release train across teams",groups:[{id:"product",label:"Product"},{id:"web",label:"Web team"},{id:"mobile",label:"Mobile team"},{id:"qa",label:"QA"},{id:"ops",label:"Ops"},{id:"marketing",label:"Marketing"}],nodes:[{id:"plan",label:"Plan the release",kind:"start",group:"product"},{id:"web-build",label:"Build web app",kind:"process",group:"web"},{id:"mobile-build",label:"Build mobile app",kind:"process",group:"mobile"},{id:"store",label:"Submit to app stores",kind:"process",group:"mobile"},{id:"test",label:"Regression tests",kind:"process",group:"qa"},{id:"pass",label:"Tests pass?",kind:"decision",group:"qa"},{id:"deploy",label:"Deploy to production",kind:"process",group:"ops"},{id:"announce",label:"Announce the release",kind:"end",group:"marketing"}],edges:[{id:"e1",source:"plan",target:"web-build"},{id:"e2",source:"plan",target:"mobile-build"},{id:"e3",source:"mobile-build",target:"store"},{id:"e4",source:"web-build",target:"test"},{id:"e5",source:"store",target:"test"},{id:"e6",source:"test",target:"pass"},{id:"e7",source:"pass",target:"deploy",label:"yes"},{id:"e8",source:"pass",target:"web-build",label:"no"},{id:"e9",source:"deploy",target:"announce"}]}),iL({id:"single-group",title:"Payment retries inside the billing service",groups:[{id:"billing",label:"Billing service"}],nodes:[{id:"charge",label:"Charge the card",kind:"start",group:"billing"},{id:"ok",label:"Charge succeeded?",kind:"decision",group:"billing"},{id:"wait",label:"Wait and retry",kind:"process",group:"billing"},{id:"receipt",label:"Send receipt",kind:"end",group:"billing"}],edges:[{id:"e1",source:"charge",target:"ok"},{id:"e2",source:"ok",target:"receipt",label:"yes"},{id:"e3",source:"ok",target:"wait",label:"no"},{id:"e4",source:"wait",target:"ok"}]}),iB({id:"incident-escalation",title:"Incident escalation",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor",label:"Monitoring",kind:"process"},{id:"mitigate",label:"Mitigates impact",kind:"process"},{id:"comms",label:"Sends customer communications",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"resolved",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolved"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolved",label:"Yes"},{id:"edge-11",source:"fix",target:"bridge",label:"No — escalate"},{id:"edge-12",source:"monitor",target:"resolved"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident escalation flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor",label:"Monitoring low severity incidents",kind:"process"},{id:"mitigate",label:"Mitigates impact",kind:"process"},{id:"comms",label:"Sends customer communications",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"escalate",label:"Escalate to the incident bridge",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"Yes"},{id:"edge-11",source:"fix",target:"escalate",label:"No"},{id:"edge-12",source:"escalate",target:"bridge"},{id:"edge-13",source:"monitor",target:"resolve"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident escalation flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"},{id:"triage",label:"Triage queue",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"monitor",label:"Monitoring low severity incidents",kind:"process"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"Yes"},{id:"edge-11",source:"fix",target:"bridge",label:"No — escalate"},{id:"edge-12",source:"monitor",target:"resolve"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident Escalation Flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges the alert",kind:"process"},{id:"sev",label:"Severity?",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"},{id:"triage",label:"Triage queue",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"mon",label:"Monitoring",kind:"process"},{id:"resolved",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"sev"},{id:"edge-3",source:"sev",target:"bridge",label:"high"},{id:"edge-4",source:"sev",target:"triage",label:"medium"},{id:"edge-5",source:"sev",target:"mon",label:"low"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"yes"},{id:"edge-11",source:"fix",target:"bridge",label:"no, escalate"},{id:"edge-12",source:"mon",target:"resolved"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"subscription-renewal-dunning",title:"Subscription renewal dunning",nodes:[{id:"due",label:"A renewal is due",kind:"start"},{id:"charge",label:"Charges payment",kind:"process"},{id:"success",label:"Payment succeeds?",kind:"decision"},{id:"renew",label:"Renew the subscription",kind:"end"},{id:"reminder",label:"Send a reminder",kind:"process"},{id:"updated",label:"Payment was updated?",kind:"decision"},{id:"expired",label:"Grace period has expired?",kind:"decision"},{id:"pause",label:"Pause the subscription",kind:"end"},{id:"another",label:"Send another reminder",kind:"process"}],edges:[{id:"edge-1",source:"due",target:"charge"},{id:"edge-2",source:"charge",target:"success"},{id:"edge-3",source:"success",target:"renew",label:"Yes"},{id:"edge-4",source:"success",target:"reminder",label:"No"},{id:"edge-5",source:"reminder",target:"updated"},{id:"edge-6",source:"updated",target:"charge",label:"Yes — retry charge"},{id:"edge-7",source:"updated",target:"expired",label:"No"},{id:"edge-8",source:"expired",target:"pause",label:"Yes"},{id:"edge-9",source:"expired",target:"another",label:"No"},{id:"edge-10",source:"another",target:"updated"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"subscription-renewal-dunning",title:"Subscription renewal dunning",nodes:[{id:"due",label:"A renewal is due",kind:"start"},{id:"charge",label:"Charges payment",kind:"process"},{id:"success",label:"Payment succeeds?",kind:"decision"},{id:"renew",label:"Renew the subscription",kind:"end"},{id:"reminder",label:"Send a reminder",kind:"process"},{id:"updated",label:"Payment was updated?",kind:"decision"},{id:"expired",label:"Grace period has expired?",kind:"decision"},{id:"pause",label:"Pause the subscription",kind:"end"}],edges:[{id:"edge-1",source:"due",target:"charge"},{id:"edge-2",source:"charge",target:"success"},{id:"edge-3",source:"success",target:"renew",label:"Yes"},{id:"edge-4",source:"success",target:"reminder",label:"No"},{id:"edge-5",source:"reminder",target:"updated"},{id:"edge-6",source:"updated",target:"charge",label:"Yes — retry the charge"},{id:"edge-7",source:"updated",target:"expired",label:"No"},{id:"edge-8",source:"expired",target:"pause",label:"Yes"},{id:"edge-9",source:"expired",target:"reminder",label:"No — send another reminder"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"patient-intake-scheduling",title:"Patient Intake Scheduling",nodes:[{id:"request",label:"Patient requests an appointment",kind:"start"},{id:"intake",label:"Clinic collects intake information",kind:"process"},{id:"urgent",label:"Are there urgent symptoms?",kind:"decision"},{id:"triage",label:"Nurse triage",kind:"process"},{id:"same-day",label:"Same-day appointment",kind:"end"},{id:"insurance",label:"Is insurance valid?",kind:"decision"},{id:"routine",label:"Schedule a routine appointment",kind:"end"},{id:"self-pay",label:"Does the patient accept self-pay?",kind:"decision"},{id:"billing",label:"Refer to billing",kind:"end"}],edges:[{id:"edge-1",source:"request",target:"intake"},{id:"edge-2",source:"intake",target:"urgent"},{id:"edge-3",source:"urgent",target:"triage",label:"Yes"},{id:"edge-4",source:"triage",target:"same-day"},{id:"edge-5",source:"urgent",target:"insurance",label:"No"},{id:"edge-6",source:"insurance",target:"routine",label:"Valid"},{id:"edge-7",source:"insurance",target:"self-pay",label:"Invalid"},{id:"edge-8",source:"self-pay",target:"routine",label:"Yes"},{id:"edge-9",source:"self-pay",target:"billing",label:"No"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"procurement-vendor-approval",title:"Procurement vendor approval",nodes:[{id:"need",label:"Business need is identified",kind:"start"},{id:"quotes",label:"Quotes are collected",kind:"process"},{id:"preferred",label:"Is there a preferred vendor?",kind:"decision"},{id:"bid",label:"Run a competitive bid",kind:"process"},{id:"risk",label:"Risk assessment",kind:"process"},{id:"acceptable",label:"Is risk acceptable?",kind:"decision"},{id:"reject",label:"Reject the vendor",kind:"end"},{id:"legal",label:"Legal review",kind:"process"},{id:"approved",label:"Does legal approve?",kind:"decision"},{id:"renegotiate",label:"Renegotiate terms",kind:"process"},{id:"contract",label:"Create the contract",kind:"end"}],edges:[{id:"edge-1",source:"need",target:"quotes"},{id:"edge-2",source:"quotes",target:"preferred"},{id:"edge-3",source:"preferred",target:"risk",label:"Yes"},{id:"edge-4",source:"preferred",target:"bid",label:"No"},{id:"edge-5",source:"bid",target:"risk"},{id:"edge-6",source:"risk",target:"acceptable"},{id:"edge-7",source:"acceptable",target:"reject",label:"No"},{id:"edge-8",source:"acceptable",target:"legal",label:"Yes"},{id:"edge-9",source:"legal",target:"approved"},{id:"edge-10",source:"approved",target:"contract",label:"Yes"},{id:"edge-11",source:"approved",target:"renegotiate",label:"No"},{id:"edge-12",source:"renegotiate",target:"legal"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"procurement-vendor-approval",title:"Procurement Vendor Approval",nodes:[{id:"need",label:"A business need is identified",kind:"start"},{id:"quotes",label:"Quotes are collected",kind:"process"},{id:"preferred",label:"Is there a preferred vendor?",kind:"decision"},{id:"bid",label:"Run a competitive bid",kind:"process"},{id:"risk",label:"Risk assessment",kind:"process"},{id:"acceptable",label:"Is risk acceptable?",kind:"decision"},{id:"reject",label:"Reject the vendor",kind:"end"},{id:"legal",label:"Legal review",kind:"process"},{id:"approve",label:"Does legal approve?",kind:"decision"},{id:"contract",label:"Create the contract",kind:"end"},{id:"renegotiate",label:"Renegotiate terms",kind:"process"}],edges:[{id:"edge-1",source:"need",target:"quotes"},{id:"edge-2",source:"quotes",target:"preferred"},{id:"edge-3",source:"preferred",target:"risk",label:"Yes"},{id:"edge-4",source:"preferred",target:"bid",label:"No"},{id:"edge-5",source:"bid",target:"risk"},{id:"edge-6",source:"risk",target:"acceptable"},{id:"edge-7",source:"acceptable",target:"reject",label:"No"},{id:"edge-8",source:"acceptable",target:"legal",label:"Yes"},{id:"edge-9",source:"legal",target:"approve"},{id:"edge-10",source:"approve",target:"contract",label:"Yes"},{id:"edge-11",source:"approve",target:"renegotiate",label:"No"},{id:"edge-12",source:"renegotiate",target:"legal"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"restaurant-waitlist",title:"Restaurant waitlist",nodes:[{id:"arrives",label:"Party arrives",kind:"start"},{id:"quote",label:"Host quotes a wait time",kind:"process"},{id:"available",label:"Table available?",kind:"decision"},{id:"seat",label:"Seat the party",kind:"end"},{id:"add",label:"Add the party to the waitlist",kind:"process"},{id:"notified",label:"Party notified",kind:"process"},{id:"responds",label:"Party responds?",kind:"decision"},{id:"remove",label:"Remove the party from the list",kind:"end"},{id:"ready",label:"Table ready?",kind:"decision"},{id:"waiting",label:"Keeps waiting",kind:"process"}],edges:[{id:"edge-1",source:"arrives",target:"quote"},{id:"edge-2",source:"quote",target:"available"},{id:"edge-3",source:"available",target:"seat",label:"Available"},{id:"edge-4",source:"available",target:"add",label:"Not available"},{id:"edge-5",source:"add",target:"notified"},{id:"edge-6",source:"notified",target:"responds"},{id:"edge-7",source:"responds",target:"remove",label:"No response"},{id:"edge-8",source:"responds",target:"ready",label:"Responds"},{id:"edge-9",source:"ready",target:"seat",label:"Ready"},{id:"edge-10",source:"ready",target:"waiting",label:"Not ready"},{id:"edge-11",source:"waiting",target:"responds"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"restaurant-waitlist",title:"Restaurant waitlist",nodes:[{id:"arrives",label:"A party arrives",kind:"start"},{id:"quote",label:"Host quotes a wait time",kind:"process"},{id:"available",label:"Is a table available?",kind:"decision"},{id:"seat",label:"Seat the party",kind:"end"},{id:"add",label:"Add the party to the waitlist",kind:"process"},{id:"notify",label:"Notify the party",kind:"process"},{id:"responds",label:"Does the party respond?",kind:"decision"},{id:"remove",label:"Remove the party from the list",kind:"end"},{id:"ready",label:"Is the table ready?",kind:"decision"},{id:"wait",label:"Keep waiting",kind:"process"}],edges:[{id:"edge-1",source:"arrives",target:"quote"},{id:"edge-2",source:"quote",target:"available"},{id:"edge-3",source:"available",target:"seat",label:"Yes"},{id:"edge-4",source:"available",target:"add",label:"No"},{id:"edge-5",source:"add",target:"notify"},{id:"edge-6",source:"notify",target:"responds"},{id:"edge-7",source:"responds",target:"remove",label:"No response"},{id:"edge-8",source:"responds",target:"ready",label:"Responds"},{id:"edge-9",source:"ready",target:"seat",label:"Ready"},{id:"edge-10",source:"ready",target:"wait",label:"Not ready"},{id:"edge-11",source:"wait",target:"responds",label:"Check response again"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"expense-approval-process",title:"Expense Approval Process",nodes:[{id:"submit",label:"Employee submits an expense report",kind:"start",group:"employee"},{id:"review",label:"Manager reviews the report",kind:"process",group:"manager"},{id:"approved",label:"Is it approved?",kind:"decision",group:"manager"},{id:"revise",label:"Employee revises the report",kind:"process",group:"employee"},{id:"resubmit",label:"Employee resubmits it for review",kind:"process",group:"employee"},{id:"verify",label:"Finance verifies the receipts",kind:"process",group:"finance"},{id:"pay",label:"Finance pays the employee",kind:"end",group:"finance"}],edges:[{id:"edge-1",source:"submit",target:"review"},{id:"edge-2",source:"review",target:"approved"},{id:"edge-3",source:"approved",target:"revise",label:"Rejected"},{id:"edge-4",source:"revise",target:"resubmit"},{id:"edge-5",source:"resubmit",target:"review"},{id:"edge-6",source:"approved",target:"verify",label:"Approved"},{id:"edge-7",source:"verify",target:"pay"}],groups:[{id:"employee",label:"Employee"},{id:"manager",label:"Manager"},{id:"finance",label:"Finance"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"content-moderation",title:"Content moderation",nodes:[{id:"report",label:"Report is received",kind:"start"},{id:"scan",label:"Automated scan runs",kind:"process"},{id:"severe",label:"Severe harm detected?",kind:"decision"},{id:"remove",label:"Remove the content",kind:"process"},{id:"escalate",label:"Escalate to safety",kind:"end"},{id:"violation",label:"Policy violation?",kind:"decision"},{id:"restore",label:"Restore content",kind:"end"},{id:"review",label:"Human review",kind:"process"},{id:"action",label:"Action needed?",kind:"decision"},{id:"limit",label:"Limits content",kind:"end"}],edges:[{id:"edge-1",source:"report",target:"scan"},{id:"edge-2",source:"scan",target:"severe"},{id:"edge-3",source:"severe",target:"remove",label:"Yes"},{id:"edge-4",source:"remove",target:"escalate"},{id:"edge-5",source:"severe",target:"violation",label:"No"},{id:"edge-6",source:"violation",target:"restore",label:"No"},{id:"edge-7",source:"violation",target:"review",label:"Yes"},{id:"edge-8",source:"review",target:"action"},{id:"edge-9",source:"action",target:"limit",label:"Yes"},{id:"edge-10",source:"action",target:"restore",label:"No"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iS({id:"media-player",title:"Media player",initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"},{id:"ended",kind:"final"}],transitions:[{id:"transition-1-stopped-active",source:"stopped",target:"active",event:"play"},{id:"transition-2-playing-paused",source:"playing",target:"paused",event:"pause"},{id:"transition-3-paused-playing",source:"paused",target:"playing",event:"resume"},{id:"transition-4-playing-playing",source:"playing",target:"playing",event:"seek",action:"jump to position"},{id:"transition-5-active-stopped",source:"active",target:"stopped",event:"stop"},{id:"transition-6-stopped-ended",source:"stopped",target:"ended",event:"eject"}]}),iS({id:"media-player",title:"Media player",initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"},{id:"final",kind:"final"}],transitions:[{id:"transition-1-stopped-active",source:"stopped",target:"active",event:"play"},{id:"transition-2-playing-paused",source:"playing",target:"paused",event:"pause"},{id:"transition-3-paused-playing",source:"paused",target:"playing",event:"resume"},{id:"transition-4-playing-playing",source:"playing",target:"playing",event:"seek",action:"jump to position"},{id:"transition-5-active-stopped",source:"active",target:"stopped",event:"stop"},{id:"transition-6-stopped-final",source:"stopped",target:"final",event:"eject"}]}),iS({id:"network-connection",title:"Network connection",initial:"disconnected",states:[{id:"disconnected",label:"Disconnected"},{id:"connecting",label:"Connecting"},{id:"connected",label:"Connected",initial:"idle"},{id:"idle",label:"Idle",parent:"connected"},{id:"streaming",label:"Streaming",parent:"connected"},{id:"retry_choice",kind:"choice"},{id:"failed",label:"Failed"},{id:"end",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"disconnected",target:"connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"connecting",target:"connected",event:"handshake ok"},{id:"transition-3-connecting-retry-choice",source:"connecting",target:"retry_choice",event:"timeout"},{id:"transition-4-retry-choice-connecting",source:"retry_choice",target:"connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retry-choice-failed",source:"retry_choice",target:"failed",guard:"no retries left"},{id:"transition-6-failed-end",source:"failed",target:"end"},{id:"transition-7-idle-streaming",source:"idle",target:"streaming",event:"start stream"},{id:"transition-8-streaming-idle",source:"streaming",target:"idle",event:"stop stream"},{id:"transition-9-connected-disconnected",source:"connected",target:"disconnected",event:"Disconnect"}]}),iS({id:"network-connection",title:"Network Connection",initial:"Disconnected",states:[{id:"Disconnected",label:"Disconnected"},{id:"Connecting",label:"Connecting"},{id:"Connected",label:"Connected",initial:"Idle"},{id:"Idle",label:"Idle",parent:"Connected"},{id:"Streaming",label:"Streaming",parent:"Connected"},{id:"RetryCheck",label:"Retry?",kind:"choice"},{id:"Failed",label:"Failed"},{id:"End",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"Disconnected",target:"Connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"Connecting",target:"Connected",event:"handshake ok"},{id:"transition-3-connecting-retrycheck",source:"Connecting",target:"RetryCheck",event:"timeout"},{id:"transition-4-retrycheck-connecting",source:"RetryCheck",target:"Connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retrycheck-failed",source:"RetryCheck",target:"Failed",guard:"no retries left"},{id:"transition-6-failed-end",source:"Failed",target:"End"},{id:"transition-7-idle-streaming",source:"Idle",target:"Streaming",event:"start stream"},{id:"transition-8-streaming-idle",source:"Streaming",target:"Idle",event:"stop stream"},{id:"transition-9-connected-disconnected",source:"Connected",target:"Disconnected",event:"Disconnect"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iS({id:"order-lifecycle",title:"Order lifecycle",initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"delivered",label:"Delivered"},{id:"cancelled",label:"Cancelled"},{id:"refunded",label:"Refunded"},{id:"end",kind:"final"}],transitions:[{id:"transition-1-pending-paid",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge card"},{id:"transition-2-pending-cancelled",source:"pending",target:"cancelled",event:"cancel"},{id:"transition-3-paid-shipped",source:"paid",target:"shipped",event:"ship"},{id:"transition-4-paid-cancelled",source:"paid",target:"cancelled",event:"cancel",action:"refund payment"},{id:"transition-5-shipped-delivered",source:"shipped",target:"delivered",event:"deliver"},{id:"transition-6-shipped-paid",source:"shipped",target:"paid",event:"return to sender"},{id:"transition-7-delivered-refunded",source:"delivered",target:"refunded",event:"request return",guard:"within 30 days",action:"issue refund"},{id:"transition-8-delivered-end",source:"delivered",target:"end"},{id:"transition-9-cancelled-end",source:"cancelled",target:"end"},{id:"transition-10-refunded-end",source:"refunded",target:"end"}]}),iS({id:"order-lifecycle",title:"Order lifecycle",initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"delivered",label:"Delivered"},{id:"cancelled",label:"Cancelled",kind:"final"},{id:"refunded",label:"Refunded",kind:"final"},{id:"end",label:"Lifecycle ended",kind:"final"}],transitions:[{id:"transition-1-pending-paid",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge card"},{id:"transition-2-pending-cancelled",source:"pending",target:"cancelled",event:"cancel"},{id:"transition-3-paid-shipped",source:"paid",target:"shipped",event:"ship"},{id:"transition-4-paid-cancelled",source:"paid",target:"cancelled",event:"cancel",action:"refund payment"},{id:"transition-5-shipped-delivered",source:"shipped",target:"delivered",event:"deliver"},{id:"transition-6-shipped-paid",source:"shipped",target:"paid",event:"return to sender"},{id:"transition-7-delivered-refunded",source:"delivered",target:"refunded",event:"request return",guard:"within 30 days",action:"issue refund"},{id:"transition-8-delivered-end",source:"delivered",target:"end"}]}),iS({id:"network-connection",title:"Network Connection",initial:"Disconnected",states:[{id:"Disconnected",label:"Disconnected"},{id:"Connecting",label:"Connecting"},{id:"Connected",label:"Connected",initial:"Idle"},{id:"Idle",label:"Idle",parent:"Connected"},{id:"Streaming",label:"Streaming",parent:"Connected"},{id:"RetryCheck",label:"Retry check",kind:"choice"},{id:"Failed",label:"Failed",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"Disconnected",target:"Connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"Connecting",target:"Connected",event:"handshake ok"},{id:"transition-3-connecting-retrycheck",source:"Connecting",target:"RetryCheck",event:"timeout"},{id:"transition-4-retrycheck-connecting",source:"RetryCheck",target:"Connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retrycheck-failed",source:"RetryCheck",target:"Failed",guard:"no retries left"},{id:"transition-6-idle-streaming",source:"Idle",target:"Streaming",event:"start stream"},{id:"transition-7-streaming-idle",source:"Streaming",target:"Idle",event:"stop stream"},{id:"transition-8-connected-disconnected",source:"Connected",target:"Disconnected",event:"Disconnect"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"state-machine"});let iA=20*Math.PI/180;function iP(e){return 2e3/(Math.max(e.width,e.height,1)+40)}function iV(e){let t=[];for(let a of e){let e=t.at(-1);if(e&&.01>=Math.hypot(a.x-e.x,a.y-e.y))continue;let i=t.at(-2);if(i&&e&&.01>=Math.abs((e.x-i.x)*(a.y-e.y)-(e.y-i.y)*(a.x-e.x))&&(e.x-i.x)*(a.x-e.x)+(e.y-i.y)*(a.y-e.y)>0){t[t.length-1]=a;continue}t.push(a)}return t}function iH(e){let t=[];for(let a=0;a<e.length-1;a+=1){let i=e[a],s=e[a+1],l=.01>=Math.abs(i.y-s.y);!l&&Math.abs(i.x-s.x)>.01||t.push({horizontal:l,at:l?i.y:i.x,min:Math.min(l?i.x:i.y,l?s.x:s.y),max:Math.max(l?i.x:i.y,l?s.x:s.y),first:0===a,last:a===e.length-2})}return t}function iq(e,t){let a=iV(e.points),i=a[0],s=a.at(-1);if(!i||!s)return[];let l=new Map;for(let e=1;e<a.length-2;e+=1){let[o,r,n,d]=[a[e-1],a[e],a[e+1],a[e+2]],c={x:r.x-o.x,y:r.y-o.y},p={x:n.x-r.x,y:n.y-r.y},h={x:d.x-n.x,y:d.y-n.y},g=[c,p,h].every(e=>.01>=Math.abs(e.x)||.01>=Math.abs(e.y)),u=.01>=Math.abs(c.x*h.y-c.y*h.x)&&c.x*h.x+c.y*h.y>0,f=.01>=Math.abs(c.x*p.x+c.y*p.y),m=Math.hypot(p.x,p.y);g&&u&&f&&!(m*t>=150)&&(!l.has("end")&&Math.hypot(s.x-n.x,s.y-n.y)*t<=90&&2*m<=Math.hypot(c.x,c.y)?l.set("end",m):!l.has("start")&&Math.hypot(r.x-i.x,r.y-i.y)*t<=90&&2*m<=Math.hypot(h.x,h.y)&&l.set("start",m))}return[...l].map(([t,a])=>({kind:"endpoint-jog",arrowIds:[e.id],endpoint:t,message:`Arrow "${e.id}" steps ${a.toFixed(1)} units sideways near its ${"end"===t?"arrowhead":"start"}.`}))}function iF(e,t,a,i,s){return t.some(t=>i.some(i=>{if(t.horizontal!==i.horizontal||Math.abs(t.at-i.at)*s>=24)return!1;let l=Math.min(t.max,i.max)-Math.max(t.min,i.min);return!(l*s<30)&&!((t.first&&i.first&&e.sourceId&&e.sourceId===a.sourceId||t.last&&i.last&&e.targetId&&e.targetId===a.targetId)&&l*s<=90)}))}function iI(e){if(!1===e.endArrowhead)return;let t=e.points.filter((e,t,a)=>0===t||Math.hypot(e.x-a[t-1].x,e.y-a[t-1].y)>.01),a=t.at(-1),i=t.at(-2);if(!a||!i)return;let s=Math.hypot(a.x-i.x,a.y-i.y),l=Math.min(25,Math.max(s,e.headRun??0)/2),o=(a.x-i.x)/s,r=(a.y-i.y)/s,n=e=>({x:a.x-l*(o*Math.cos(e)-r*Math.sin(e)),y:a.y-l*(r*Math.cos(e)+o*Math.sin(e))});return[a,n(iA),n(-iA)]}function iE(e,t,a){let i=a.x-t.x,s=a.y-t.y,l=0===i&&0===s?0:Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*s)/(i*i+s*s)));return Math.hypot(e.x-(t.x+l*i),e.y-(t.y+l*s))}function iO(e,t,a,i){let s=(e,t,a)=>(t.x-e.x)*(a.y-e.y)-(t.y-e.y)*(a.x-e.x);return s(e,t,a)*s(e,t,i)<0&&s(a,i,e)*s(a,i,t)<0}function iU(e,t){let a=e.flatMap((a,i)=>e.slice(i+1).flatMap(e=>{let i,s;return[iF(a,iH(iV(a.points)),e,iH(iV(e.points)),t)?{kind:"near-coincident-corridor",arrowIds:[a.id,e.id],message:`Arrows "${a.id}" and "${e.id}" run side by side closer than 24 px.`}:void 0,(i=iI(a),s=iI(e),i&&s&&(function(e,t){let a=e=>e.map((t,a)=>[t,e[(a+1)%e.length]]),i=1/0;for(let[s,l]of a(e))for(let[e,o]of a(t)){if(iO(s,l,e,o))return 0;i=Math.min(i,iE(s,e,o),iE(l,e,o),iE(e,s,l),iE(o,s,l))}return i}(i,s)-2)*t<8?{kind:"touching-arrowheads",arrowIds:[a.id,e.id],message:`Arrowheads of "${a.id}" and "${e.id}" touch.`}:void 0)].filter(e=>void 0!==e)}));return[...e.flatMap(e=>iq(e,t)),...a.filter(e=>"near-coincident-corridor"===e.kind),...a.filter(e=>"touching-arrowheads"===e.kind)]}function iX(e,t,a){let i=1/0;for(let[s,l]of a.entries()){let o=a[(s+1)%a.length];if(iO(e,t,l,o))return 0;i=Math.min(i,iE(e,l,o),iE(t,l,o),iE(l,e,t),iE(o,e,t))}return i}function iT(e,t){let a=24/t+2,i=e.map(e=>{let t=iI(e);return{arrow:e,bounds:i$([...e.points,...t??[]]),head:t,headBounds:t?i$(t):void 0,runs:iH(iV(e.points))}});return e=>{let s=iH(iV(e.points)),l=i$(e.points,a),o=e.points.slice(1).map((t,i)=>{let s=e.points[i];return{bounds:i$([s,t],a),from:s,to:t}}),r=i.filter(({arrow:t,bounds:a})=>t.id!==e.id&&iY(l,a)),n=new Set(r.filter(({arrow:a,runs:i})=>iF(e,s,a,i,t)).map(({arrow:e})=>e.id));return{arrowheadsCrossed:new Set(r.filter(({head:e,headBounds:a})=>e&&o.some(({bounds:i,from:s,to:l})=>iY(i,a)&&(iX(s,l,e)-2)*t<8)).map(({arrow:e})=>e.id)).size,corridors:n.size,jogs:iq(e,t).length}}}function i$(e,t=0){let a=e.map(e=>e.x),i=e.map(e=>e.y);return{maxX:Math.max(...a)+t,maxY:Math.max(...i)+t,minX:Math.min(...a)-t,minY:Math.min(...i)-t}}function iY(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}let iG=Object.freeze({clearance:4,fontSize:14,height:21}),iR=/[@%MW]/u,iD=/[A-Z0-9mw#$&_~]/u,iZ=new Intl.Segmenter(void 0,{granularity:"grapheme"});function ij(e){let{fontSize:t}=iG,a=0;for(let{segment:i}of iZ.segment(e))a+=iR.test(i)?1.02*t:iD.test(i)?.86*t:/^[\x20-\x7e]$/u.test(i)?aE(i,t):Math.max(.86*t,aE(i,t));return Math.ceil(a)}function iN(e){let{clearance:t,height:a}=iG,i=ij(e.name??"Frame");return{x:e.x-t,y:e.y-a-t,width:i+2*t,height:a+t-1}}function iW(e,t,a,i){return tA({id:e,title:t,type:"er",entities:a.map(([e,t])=>({id:e,fields:t.map(tV)})),relationships:i.map(([e,t,a,i,s],l)=>({id:`r${l+1}`,from:e,to:t,fromCardinality:a,toCardinality:i,...s?{label:s}:{}}))})}iW("marketplace-schema","Marketplace schema",[["users",["id uuid PK","email text UK","name text","created_at timestamptz"]],["profiles",["user_id uuid PK FK","bio text?","avatar_url text?"]],["addresses",["id uuid PK","user_id uuid FK","line1 text","city text","country char(2)"]],["sellers",["id uuid PK","user_id uuid FK UK","payout_account text","verified_at timestamptz?"]],["stores",["id uuid PK","seller_id uuid FK","name text","slug text UK"]],["categories",["id uuid PK","parent_id uuid FK?","name text","slug text UK"]],["products",["id uuid PK","store_id uuid FK","title text","price numeric(10,2)","status text"]],["product_categories",["product_id uuid PK FK","category_id uuid PK FK"]],["product_images",["id uuid PK","product_id uuid FK","url text","position int"]],["inventory",["product_id uuid PK FK","on_hand int","reserved int","updated_at timestamptz"]],["orders",["id uuid PK","user_id uuid FK","address_id uuid FK","status text","placed_at timestamptz"]],["order_items",["order_id uuid PK FK","product_id uuid PK FK","quantity int","unit_price numeric(10,2)"]],["payments",["id uuid PK","order_id uuid FK","amount numeric(10,2)","provider text","paid_at timestamptz?"]],["refunds",["id uuid PK","payment_id uuid FK","amount numeric(10,2)","reason text?"]],["carriers",["id uuid PK","name text UK","tracking_url text"]],["shipments",["id uuid PK","order_id uuid FK","carrier_id uuid FK","tracking_code text?","shipped_at timestamptz?"]],["reviews",["id uuid PK","product_id uuid FK","user_id uuid FK","rating int","body text?"]],["coupons",["id uuid PK","code text UK","percent_off int","expires_at timestamptz?"]],["order_coupons",["order_id uuid PK FK","coupon_id uuid PK FK"]],["wishlist_items",["user_id uuid PK FK","product_id uuid PK FK","added_at timestamptz"]]],[["users.id","profiles.user_id","one","zero-or-one"],["users.id","addresses.user_id","one","zero-or-many"],["users.id","sellers.user_id","one","zero-or-one"],["sellers.id","stores.seller_id","one","one-or-many","runs"],["categories.id","categories.parent_id","zero-or-one","zero-or-many","contains"],["stores.id","products.store_id","one","zero-or-many","lists"],["products.id","product_categories.product_id","one","one-or-many"],["categories.id","product_categories.category_id","one","zero-or-many"],["products.id","product_images.product_id","one","zero-or-many"],["products.id","inventory.product_id","one","zero-or-one"],["users.id","orders.user_id","one","zero-or-many","places"],["addresses.id","orders.address_id","one","zero-or-many"],["orders.id","order_items.order_id","one","one-or-many"],["products.id","order_items.product_id","one","zero-or-many"],["orders.id","payments.order_id","one","zero-or-many"],["payments.id","refunds.payment_id","one","zero-or-many"],["orders.id","shipments.order_id","one","zero-or-many"],["carriers.id","shipments.carrier_id","one","zero-or-many"],["products.id","reviews.product_id","one","zero-or-many"],["users.id","reviews.user_id","one","zero-or-many","writes"],["orders.id","order_coupons.order_id","one","zero-or-many"],["coupons.id","order_coupons.coupon_id","one","zero-or-many"],["users.id","wishlist_items.user_id","one","zero-or-many"],["products.id","wishlist_items.product_id","one","zero-or-many"]]),iW("threaded-comments","Threaded comments",[["comments",["id int PK","parent_id int FK?","quoted_id int FK?","author_id int FK","body text"]],["authors",["id int PK","mentor_id int FK?","handle text UK"]]],[["comments.id","comments.parent_id","zero-or-one","zero-or-many","replies"],["comments.id","comments.quoted_id","zero-or-one","zero-or-many","quotes"],["authors.id","comments.author_id","one","zero-or-many"],["authors.id","authors.mentor_id","zero-or-one","zero-or-many","mentors"]]),iW("tag-fans","Tags everywhere",[["tags",["id int PK","name text UK"]],["posts",["id int PK","title text"]],["products",["id int PK","sku text UK"]],["users",["id int PK","email text UK"]],["events",["id int PK","starts_at timestamptz"]],["post_tags",["post_id int PK FK","tag_id int PK FK"]],["product_tags",["product_id int PK FK","tag_id int PK FK"]],["user_tags",["user_id int PK FK","tag_id int PK FK"]],["event_tags",["event_id int PK FK","tag_id int PK FK"]]],[["posts.id","post_tags.post_id","one","zero-or-many"],["tags.id","post_tags.tag_id","one","zero-or-many"],["products.id","product_tags.product_id","one","zero-or-many"],["tags.id","product_tags.tag_id","one","zero-or-many"],["users.id","user_tags.user_id","one","zero-or-many"],["tags.id","user_tags.tag_id","one","zero-or-many"],["events.id","event_tags.event_id","one","zero-or-many"],["tags.id","event_tags.tag_id","one","zero-or-many"]]),iW("saas-workspace","SaaS workspace",[["organizations",["id uuid PK","name text"]],["users",["id uuid PK","email text UK","name text"]],["memberships",["organization_id uuid PK FK","user_id uuid PK FK","role text"]],["projects",["id uuid PK","organization_id uuid FK","name text"]],["tasks",["id uuid PK","project_id uuid FK","assignee_id uuid? FK","title text","due_on date?"]],["comments",["id uuid PK","task_id uuid FK","author_id uuid FK","body text"]],["labels",["id uuid PK","organization_id uuid FK","name text"]],["task_labels",["task_id uuid PK FK","label_id uuid PK FK"]],["plans",["id uuid PK","name text UK","monthly_price numeric"]],["subscriptions",["id uuid PK","organization_id uuid FK UK","plan_id uuid FK","renews_on date"]],["invoices",["id uuid PK","subscription_id uuid FK","amount numeric","paid_at timestamptz?"]],["api_keys",["id uuid PK","organization_id uuid FK","created_by uuid FK","token_hash text UK"]]],[["organizations.id","memberships.organization_id","one","one-or-many"],["users.id","memberships.user_id","one","zero-or-many"],["organizations.id","projects.organization_id","one","zero-or-many"],["projects.id","tasks.project_id","one","zero-or-many"],["users.id","tasks.assignee_id","zero-or-one","zero-or-many"],["tasks.id","comments.task_id","one","zero-or-many"],["users.id","comments.author_id","one","zero-or-many"],["organizations.id","labels.organization_id","one","zero-or-many"],["tasks.id","task_labels.task_id","one","zero-or-many"],["labels.id","task_labels.label_id","one","zero-or-many"],["organizations.id","subscriptions.organization_id","one","zero-or-one"],["plans.id","subscriptions.plan_id","one","zero-or-many"],["subscriptions.id","invoices.subscription_id","one","zero-or-many"],["organizations.id","api_keys.organization_id","one","zero-or-many"],["users.id","api_keys.created_by","one","zero-or-many"]]);let iJ=e=>t9(ad({type:"class",...e}));function iK(e,t="LR"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}iJ({id:"library-model",title:"Library model",classes:[{id:"Library",attributes:["- name: String"],methods:["+ search(q: String): List<Item>"]},{id:"Branch",attributes:["- address: String"]},{id:"Item",kind:"abstract",attributes:["# id: UUID","# title: String"],methods:["+ loanPeriod(): int {abstract}"]},{id:"Book",attributes:["- isbn: String","- pages: int"],methods:["+ loanPeriod(): int"]},{id:"DVD",attributes:["- minutes: int"],methods:["+ loanPeriod(): int"]},{id:"Magazine",attributes:["- issue: int"],methods:["+ loanPeriod(): int"]},{id:"EBook",attributes:["- fileSize: long"]},{id:"Author",attributes:["- name: String"]},{id:"Publisher",attributes:["- name: String"]},{id:"Member",attributes:["- memberId: String","- name: String"],methods:["+ borrow(i: Item): Loan","+ reserve(i: Item): Reservation"]},{id:"StudentMember",attributes:["- school: String"]},{id:"StaffMember",attributes:["- department: String"]},{id:"Loan",attributes:["- due: Date","- returned: Date"],methods:["+ isOverdue(): bool"]},{id:"Reservation",attributes:["- placed: Date"]},{id:"Fine",attributes:["- amount: Money"],methods:["+ pay(): void"]},{id:"Librarian",attributes:["- staffId: String"],methods:["+ checkOut(l: Loan): void"]},{id:"Notifier",kind:"interface",methods:["+ send(m: Member, text: String): void"]},{id:"EmailNotifier",methods:["+ send(m: Member, text: String): void"]},{id:"SmsNotifier",methods:["+ send(m: Member, text: String): void"]},{id:"Catalog",methods:["+ add(i: Item): void","+ find(isbn: String): Book"]}],relationships:[{kind:"composition",from:"Library",to:"Branch",fromMultiplicity:"1",toMultiplicity:"1..*"},{kind:"composition",from:"Library",to:"Catalog",fromMultiplicity:"1",toMultiplicity:"1"},{kind:"aggregation",from:"Catalog",to:"Item",fromMultiplicity:"1",toMultiplicity:"0..*",toRole:"items"},{kind:"inheritance",from:"Book",to:"Item"},{kind:"inheritance",from:"DVD",to:"Item"},{kind:"inheritance",from:"Magazine",to:"Item"},{kind:"inheritance",from:"EBook",to:"Book"},{kind:"association",from:"Book",to:"Author",fromMultiplicity:"*",toMultiplicity:"1..*",toRole:"authors"},{kind:"association",from:"Book",to:"Publisher",fromMultiplicity:"*",toMultiplicity:"1"},{kind:"inheritance",from:"StudentMember",to:"Member"},{kind:"inheritance",from:"StaffMember",to:"Member"},{kind:"association",from:"Member",to:"Loan",fromMultiplicity:"1",toMultiplicity:"0..*",navigable:!0},{kind:"association",from:"Loan",to:"Item",fromMultiplicity:"*",toMultiplicity:"1",navigable:!0},{kind:"association",from:"Member",to:"Reservation",fromMultiplicity:"1",toMultiplicity:"0..*"},{kind:"association",from:"Reservation",to:"Item",fromMultiplicity:"*",toMultiplicity:"1"},{kind:"composition",from:"Loan",to:"Fine",fromMultiplicity:"1",toMultiplicity:"0..1"},{kind:"dependency",from:"Librarian",to:"Loan",label:"checks out"},{kind:"realization",from:"EmailNotifier",to:"Notifier"},{kind:"realization",from:"SmsNotifier",to:"Notifier"},{kind:"dependency",from:"Loan",to:"Notifier"},{kind:"association",from:"Librarian",to:"Branch",fromMultiplicity:"*",toMultiplicity:"1"}].map((e,t)=>({id:`r${t+1}`,...e}))}),iJ({id:"vehicles",title:"Vehicles",classes:[{id:"Vehicle",kind:"abstract",attributes:["# wheels: int","# maxSpeed: double"],methods:["+ move(): void {abstract}"]},...["Car","Truck","Bicycle","Motorcycle","Bus","Tram","Scooter","Van"].map(e=>({id:e,methods:["+ move(): void"]})),{id:"Engine",attributes:["- power: int"]},{id:"Electric",kind:"interface",methods:["+ charge(): void"]}],relationships:[...["Car","Truck","Bicycle","Motorcycle","Bus","Tram","Scooter","Van"].map(e=>({id:`${e}-is-vehicle`,kind:"inheritance",from:e,to:"Vehicle"})),{id:"car-engine",kind:"composition",from:"Car",to:"Engine",fromMultiplicity:"1",toMultiplicity:"1"},{id:"tram-electric",kind:"realization",from:"Tram",to:"Electric"},{id:"scooter-electric",kind:"realization",from:"Scooter",to:"Electric"}]}),iJ({id:"widgets",title:"Widgets",classes:[{id:"Component",kind:"interface",methods:["+ render(): Node"]},{id:"Widget",kind:"abstract",attributes:["# id: String"]},{id:"Control",kind:"abstract",attributes:["# enabled: bool"]},{id:"ButtonBase",kind:"abstract",methods:["+ click(): void {abstract}"]},{id:"IconButton",attributes:["- icon: Icon"],methods:["+ click(): void"]},{id:"Clickable",kind:"interface",methods:["+ click(): void"]},{id:"Theme",attributes:["- palette: Map<String, Color>"]}],relationships:[{id:"widget-component",kind:"realization",from:"Widget",to:"Component"},{id:"control-widget",kind:"inheritance",from:"Control",to:"Widget"},{id:"button-control",kind:"inheritance",from:"ButtonBase",to:"Control"},{id:"icon-button",kind:"inheritance",from:"IconButton",to:"ButtonBase"},{id:"icon-clickable",kind:"realization",from:"IconButton",to:"Clickable"},{id:"widget-theme",kind:"dependency",from:"Widget",to:"Theme"},{id:"icon-theme",kind:"association",from:"IconButton",to:"Theme",toMultiplicity:"0..1",toRole:"override"}]}),iJ({id:"org",title:"Organization",classes:[{id:"Employee",attributes:["- name: String","- title: String"],methods:["+ reports(): List<Employee>"]},{id:"Department",attributes:["- name: String"]}],relationships:[{id:"manages",kind:"association",from:"Employee",to:"Employee",fromMultiplicity:"0..1",toMultiplicity:"0..*",fromRole:"manager",toRole:"reports"},{id:"mentors",kind:"association",from:"Employee",to:"Employee",fromMultiplicity:"0..1",toMultiplicity:"0..*",fromRole:"mentor",toRole:"mentees"},{id:"works-in",kind:"association",from:"Employee",to:"Department",fromMultiplicity:"*",toMultiplicity:"1",label:"works in"}]}),iJ({id:"strategy",title:"Strategy",classes:[{id:"Checkout",methods:["+ total(cart: Cart): Money"]},{id:"PricingStrategy",kind:"interface",methods:["+ price(cart: Cart): Money"]},{id:"Cart",attributes:["- items: List<Item>"]},{id:"Regular",methods:["+ price(cart: Cart): Money"]},{id:"Sale",methods:["+ price(cart: Cart): Money"]}],relationships:[{id:"uses",kind:"aggregation",from:"Checkout",to:"PricingStrategy",fromMultiplicity:"1",toMultiplicity:"1",toRole:"strategy"},{id:"prices",kind:"dependency",from:"PricingStrategy",to:"Cart"},{id:"totals",kind:"dependency",from:"Checkout",to:"Cart"},{id:"regular",kind:"realization",from:"Regular",to:"PricingStrategy"},{id:"sale",kind:"realization",from:"Sale",to:"PricingStrategy"}]}),iK({id:"order-fulfilment-lanes",title:"Order fulfilment",lanes:[{id:"customer",label:"Customer"},{id:"sales",label:"Sales"},{id:"warehouse",label:"Warehouse"},{id:"billing",label:"Billing"}],nodes:[{id:"place",label:"Place order",kind:"start",lane:"customer"},{id:"review",label:"Review order",kind:"process",lane:"sales"},{id:"stock",label:"Items in stock?",kind:"decision",lane:"sales"},{id:"backorder",label:"Notify backorder",kind:"end",lane:"sales"},{id:"pick",label:"Pick items",kind:"process",lane:"warehouse"},{id:"pack",label:"Pack the order",kind:"process",lane:"warehouse"},{id:"ship",label:"Ship the order",kind:"process",lane:"warehouse"},{id:"invoice",label:"Send invoice",kind:"process",lane:"billing"},{id:"pay",label:"Pay the invoice",kind:"process",lane:"customer"},{id:"record",label:"Record payment",kind:"end",lane:"billing"}],edges:[{id:"e1",source:"place",target:"review"},{id:"e2",source:"review",target:"stock"},{id:"e3",source:"stock",target:"backorder",label:"no"},{id:"e4",source:"stock",target:"pick",label:"yes"},{id:"e5",source:"pick",target:"pack"},{id:"e6",source:"pack",target:"ship"},{id:"e7",source:"ship",target:"invoice"},{id:"e8",source:"invoice",target:"pay"},{id:"e9",source:"pay",target:"record"}]}),iK({id:"hiring-lanes",title:"Hiring process",lanes:[{id:"candidate",label:"Candidate"},{id:"recruiter",label:"Recruiter"},{id:"manager",label:"Hiring manager"}],nodes:[{id:"apply",label:"Submit application",kind:"start",lane:"candidate"},{id:"screen",label:"Screen the résumé",kind:"process",lane:"recruiter"},{id:"qualified",label:"Qualified?",kind:"decision",lane:"recruiter"},{id:"decline",label:"Receive rejection",kind:"end",lane:"candidate"},{id:"schedule",label:"Schedule interview",kind:"process",lane:"recruiter"},{id:"interview",label:"Attend interview",kind:"process",lane:"candidate"},{id:"assess",label:"Assess the candidate",kind:"process",lane:"manager"},{id:"hire",label:"Hire?",kind:"decision",lane:"manager"},{id:"offer",label:"Send offer",kind:"process",lane:"recruiter"},{id:"accept",label:"Accept offer",kind:"end",lane:"candidate"}],edges:[{id:"e1",source:"apply",target:"screen"},{id:"e2",source:"screen",target:"qualified"},{id:"e3",source:"qualified",target:"decline",label:"no"},{id:"e4",source:"qualified",target:"schedule",label:"yes"},{id:"e5",source:"schedule",target:"interview"},{id:"e6",source:"interview",target:"assess"},{id:"e7",source:"assess",target:"hire"},{id:"e8",source:"hire",target:"offer",label:"yes"},{id:"e9",source:"hire",target:"schedule",label:"another round"},{id:"e10",source:"offer",target:"accept"}]},"TB"),iK({id:"incident-response-lanes",title:"Incident response",lanes:[{id:"oncall",label:"On-call"},{id:"sre",label:"SRE"},{id:"comms",label:"Comms"}],nodes:[{id:"alert",label:"Alert fires",kind:"start",lane:"oncall"},{id:"triage",label:"Triage the alert",kind:"process",lane:"oncall"},{id:"page",label:"Page the SRE",kind:"process",lane:"oncall"},{id:"status",label:"Post status update",kind:"process",lane:"comms"},{id:"investigate",label:"Investigate",kind:"process",lane:"sre"},{id:"mitigate",label:"Apply mitigation",kind:"process",lane:"sre"},{id:"resolved",label:"Resolved?",kind:"decision",lane:"oncall"},{id:"close",label:"Publish resolution",kind:"end",lane:"comms"}],edges:[{id:"e1",source:"alert",target:"triage"},{id:"e2",source:"triage",target:"page"},{id:"e3",source:"page",target:"investigate"},{id:"e4",source:"investigate",target:"mitigate"},{id:"e5",source:"mitigate",target:"status"},{id:"e6",source:"status",target:"resolved"},{id:"e7",source:"resolved",target:"investigate",label:"no"},{id:"e8",source:"resolved",target:"close",label:"yes"}]}),iK({id:"skip-lanes",title:"Purchase request",lanes:[{id:"requester",label:"Requester"},{id:"procurement",label:"Procurement"},{id:"finance",label:"Finance"},{id:"vendor",label:"Vendor"}],nodes:[{id:"request",label:"Raise purchase request",kind:"start",lane:"requester"},{id:"budget",label:"Within budget?",kind:"decision",lane:"finance"},{id:"quotes",label:"Collect quotes",kind:"process",lane:"procurement"},{id:"compare",label:"Compare vendors",kind:"process",lane:"procurement"},{id:"terms",label:"Check payment terms",kind:"process",lane:"finance"},{id:"order",label:"Place purchase order",kind:"process",lane:"procurement"},{id:"deliver",label:"Deliver goods",kind:"process",lane:"vendor"},{id:"receive",label:"Receive goods",kind:"end",lane:"requester"},{id:"denied",label:"Request denied",kind:"end",lane:"requester"}],edges:[{id:"e1",source:"request",target:"budget"},{id:"e2",source:"budget",target:"quotes",label:"yes"},{id:"e3",source:"budget",target:"denied",label:"no"},{id:"e4",source:"quotes",target:"compare"},{id:"e5",source:"quotes",target:"terms"},{id:"e6",source:"compare",target:"order"},{id:"e7",source:"terms",target:"order"},{id:"e8",source:"order",target:"deliver"},{id:"e9",source:"deliver",target:"receive"}]}),iK({id:"single-lane",title:"Ticket handling",lanes:[{id:"support",label:"Support desk"}],nodes:[{id:"open",label:"Ticket opened",kind:"start",lane:"support"},{id:"answer",label:"Answer the customer",kind:"process",lane:"support"},{id:"solved",label:"Solved?",kind:"decision",lane:"support"},{id:"escalate",label:"Escalate",kind:"process",lane:"support"},{id:"close",label:"Close the ticket",kind:"end",lane:"support"}],edges:[{id:"e1",source:"open",target:"answer"},{id:"e2",source:"answer",target:"solved"},{id:"e3",source:"solved",target:"close",label:"yes"},{id:"e4",source:"solved",target:"escalate",label:"no"},{id:"e5",source:"escalate",target:"answer"}]},"TB");let iQ=["Customer","Support","Billing","Engineering","QA","Release"],i1=["Report the problem","Triage the ticket","Check the account","Reproduce the bug","Write a fix","Review the change","Run regression tests","Approve the release","Ship the fix","Confirm with customer"],i0=Array.from({length:30}).reduce((e,t,a)=>{let i=e.at(-1)??0,s=[0,1,1,0,2,-1,1,0,-1,-2][a%10],l=i+s;return[...e,l<0||l>5?i-s:l]},[]);X({id:"six-lanes-thirty-steps",title:"Thirty steps across six lanes",type:"flowchart",lanes:iQ.map((e,t)=>({id:`l${t}`,label:e})),nodes:Array.from({length:30},(e,t)=>({id:`s${t}`,label:`${i1[t%i1.length]} ${t}`,kind:0===t?"start":29===t?"end":t%7==3?"decision":"process",lane:`l${i0[t]}`})),edges:[...Array.from({length:29},(e,t)=>({id:`e${t}`,source:`s${t}`,target:`s${t+1}`,...t%7==3?{label:"yes"}:{}})),...Array.from({length:30},(e,t)=>t).filter(e=>e%7==3&&e<28).map(e=>({id:`b${e}`,source:`s${e}`,target:`s${e%2==0?e+2:e-2}`,label:"no"}))],layout:{direction:"LR",edgeRouting:"orthogonal"}}),X({id:"cross-lane-loops",title:"Loops across lanes",type:"flowchart",lanes:iQ.slice(0,4).map((e,t)=>({id:`l${t}`,label:e})),nodes:Array.from({length:14},(e,t)=>({id:`n${t}`,label:`${i1[t%i1.length]} ${t}`,kind:0===t?"start":13===t?"end":t%3==2?"decision":"process",lane:`l${3*t%4}`})),edges:[...Array.from({length:13},(e,t)=>({id:`e${t}`,source:`n${t}`,target:`n${t+1}`,...t%3==2?{label:"yes"}:{}})),...[2,5,8,11].map(e=>({id:`loop${e}`,source:`n${e}`,target:`n${Math.max(1,e-2-e%2)}`,label:"retry"}))],layout:{direction:"LR",edgeRouting:"orthogonal"}});let i2=["Ada","Grace","Alan","Barbara","Edsger","Frances","Donald","Hedy","John","Katherine","Leslie","Mary","Niklaus","Radia","Tim","Shafi","Vint","Lynn","Ken","Sophie"],i3=["Lovelace","Hopper","Turing","Liskov","Dijkstra","Allen","Knuth","Lamarr","Backus","Johnson","Lamport","Keller","Wirth","Perlman","Berners-Lee","Goldwasser","Cerf","Conway","Thompson","Wilson"],i5=["Engineering","Product","Sales","Marketing","Operations","Finance"],i4=["Chief Executive Officer","Vice President","Director","Engineering Manager","Team Lead","Senior Engineer","Engineer"];function i6(e){return`${i2[e%i2.length]} ${i3[(7*e+Math.floor(e/i2.length))%i3.length]}`}function i7(e,t,a,i={}){let s=[{id:"p0",name:i6(0),title:i4[0],department:"Executive"}],l=[{id:"p0",department:"Executive"}];for(let[e,t]of a.entries()){let a=[];l.forEach((i,l)=>{let o=t[l%t.length];for(let t=0;t<o;t+=1){let l=s.length,o=0===e?i5[t%i5.length]:i.department,r={id:`p${l}`,department:o};s.push({id:r.id,name:i6(l),title:i4[Math.min(e+1,i4.length-1)],department:o,manager:i.id}),a.push(r)}}),l=a}return ax(aL({id:e,title:t,type:ac,people:s,...i}))}function i8(e,t="LR"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}i7("eighty-people","Eighty people",[[6],[3,2,4],[3,4,2,3,3,3,4,3,2,3,4,3,2,3,3,3,4,3]]),i7("twenty-reports","Twenty reports",[[1],[20]]),i7("six-levels","Six levels deep",[[2],[2,1],[1,2],[2,1],[1,2]]),i7("department","Department of twenty-five",[[3],[8,6,7]]),i7("wide-top","Twelve vice presidents",[[12],[2,3,1]]),ax(aL({id:"three-boards",title:"Three boards",type:ac,forest:!0,people:[{id:"a",name:"North Board",title:"Chair"},{id:"a1",name:"Ada Lovelace",title:"Member",manager:"a"},{id:"a2",name:"Alan Turing",title:"Member",manager:"a"},{id:"b",name:"South Board",title:"Chair"},{id:"b1",name:"Grace Hopper",title:"Member",manager:"b"},{id:"c",name:"West Board",title:"Chair"}]})),i7("regions","Departments as regions",[[4],[3,2,1,4],[0,2,1]],{groupByDepartment:!0}),i8({id:"aws-three-tier",title:"AWS three-tier app",groups:[{id:"region",label:"us-east-1",kind:"region"},{id:"vpc",label:"VPC 10.0.0.0/16",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Database subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"users",label:"Users",kind:"start"},{id:"alb",label:"Application Load Balancer",kind:"process",group:"public"},{id:"web",label:"ECS web service",kind:"process",group:"private"},{id:"api",label:"ECS API service",kind:"process",group:"private"},{id:"rds",label:"RDS PostgreSQL",kind:"end",shape:"database",group:"data"},{id:"s3",label:"S3 assets bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb"},{id:"e2",source:"alb",target:"web"},{id:"e3",source:"alb",target:"api"},{id:"e4",source:"web",target:"rds"},{id:"e5",source:"api",target:"rds"},{id:"e6",source:"api",target:"s3"}]}),i8({id:"kubernetes-cluster",title:"Kubernetes cluster",groups:[{id:"cluster",label:"GKE cluster",kind:"cluster"},{id:"edge",label:"ingress-nginx",kind:"namespace",parent:"cluster"},{id:"frontend",label:"frontend",kind:"namespace",parent:"cluster"},{id:"backend",label:"backend",kind:"namespace",parent:"cluster"}],nodes:[{id:"client",label:"Browser",kind:"start"},{id:"ingress",label:"Ingress controller",kind:"process",group:"edge"},{id:"web-svc",label:"web Service",kind:"process",group:"frontend"},{id:"web-pods",label:"web Pods",kind:"process",group:"frontend"},{id:"api-svc",label:"api Service",kind:"process",group:"backend"},{id:"api-pods",label:"api Pods",kind:"process",group:"backend"},{id:"worker",label:"worker Pods",kind:"process",group:"backend"},{id:"queue",label:"RabbitMQ jobs queue",kind:"process",shape:"queue"},{id:"db",label:"Cloud SQL Postgres",kind:"end",shape:"database"}],edges:[{id:"e1",source:"client",target:"ingress"},{id:"e2",source:"ingress",target:"web-svc"},{id:"e3",source:"web-svc",target:"web-pods"},{id:"e4",source:"web-pods",target:"api-svc"},{id:"e5",source:"api-svc",target:"api-pods"},{id:"e6",source:"api-pods",target:"db"},{id:"e7",source:"api-pods",target:"queue"},{id:"e8",source:"queue",target:"worker"},{id:"e9",source:"worker",target:"db"}]},"TB"),i8({id:"hybrid-cloud",title:"Hybrid on-prem and cloud",groups:[{id:"onprem",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",kind:"zone",parent:"onprem"},{id:"aws",label:"AWS",kind:"cloud"},{id:"region",label:"eu-west-1",kind:"region",parent:"aws"},{id:"vpc",label:"Production VPC",kind:"vpc",parent:"region"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"staff",label:"Office staff",kind:"start",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"oracle",label:"Oracle database",kind:"end",shape:"database",group:"onprem"},{id:"vpn",label:"Site-to-site VPN",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"private"},{id:"orders",label:"Order queue",kind:"process",shape:"queue",group:"region"},{id:"sync",label:"Sync function",kind:"process",group:"region"},{id:"dynamo",label:"Orders table",kind:"end",shape:"database",group:"region"},{id:"invoice",label:"Invoice archive",kind:"end",shape:"document",group:"region"}],edges:[{id:"e1",source:"staff",target:"erp"},{id:"e2",source:"erp",target:"oracle"},{id:"e3",source:"erp",target:"vpn"},{id:"e4",source:"vpn",target:"api"},{id:"e5",source:"api",target:"orders"},{id:"e6",source:"orders",target:"sync"},{id:"e7",source:"sync",target:"dynamo"},{id:"e8",source:"sync",target:"invoice"}]}),i8({id:"kinded-flat",title:"Two availability zones",groups:[{id:"az-a",label:"us-east-1a",kind:"zone"},{id:"az-b",label:"us-east-1b",kind:"zone"}],nodes:[{id:"lb",label:"Network Load Balancer",kind:"start"},{id:"app-a",label:"App server A",kind:"process",group:"az-a"},{id:"db-a",label:"Primary database",kind:"end",shape:"database",group:"az-a"},{id:"app-b",label:"App server B",kind:"process",group:"az-b"},{id:"db-b",label:"Standby replica",kind:"end",shape:"database",group:"az-b"}],edges:[{id:"e1",source:"lb",target:"app-a"},{id:"e2",source:"lb",target:"app-b"},{id:"e3",source:"app-a",target:"db-a"},{id:"e4",source:"app-b",target:"db-b"}]},"TB"),i8({id:"hybrid-cloud-labeled",title:"Hybrid setup: on-prem data center to AWS",groups:[{id:"dc",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",parent:"dc",kind:"zone"},{id:"aws",label:"AWS cloud",kind:"cloud"},{id:"reg",label:"eu-west-1",parent:"aws",kind:"region"},{id:"vpc",label:"Production VPC",parent:"reg",kind:"vpc"},{id:"priv",label:"Private subnet",parent:"vpc",kind:"subnet"}],nodes:[{id:"staff",label:"Office staff enter orders",kind:"start",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"ora",label:"Oracle database",kind:"end",group:"dc",shape:"database"},{id:"vpn",label:"Site-to-site VPN gateway",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"priv"},{id:"q",label:"Order queue",kind:"process",group:"reg",shape:"queue"},{id:"sync",label:"Sync function",kind:"process",group:"reg"},{id:"tbl",label:"Orders table",kind:"end",group:"reg",shape:"database"},{id:"arc",label:"Invoice archive (PDF)",kind:"end",group:"reg",shape:"document"}],edges:[{id:"edge-1",source:"staff",target:"erp"},{id:"edge-2",source:"erp",target:"ora",label:"stores records"},{id:"edge-3",source:"erp",target:"vpn",label:"sends orders"},{id:"edge-4",source:"vpn",target:"api"},{id:"edge-5",source:"api",target:"q"},{id:"edge-6",source:"q",target:"sync"},{id:"edge-7",source:"sync",target:"tbl",label:"writes orders"},{id:"edge-8",source:"sync",target:"arc",label:"saves invoice PDF"}]}),i8({id:"hybrid-cloud-described",title:"Hybrid order processing — on-premises to AWS",groups:[{id:"dc",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",parent:"dc"},{id:"aws",label:"AWS cloud",kind:"cloud"},{id:"region",label:"eu-west-1",parent:"aws",kind:"region"},{id:"vpc",label:"Production VPC",parent:"region",kind:"vpc"},{id:"private",label:"Private subnet",parent:"vpc",kind:"subnet"}],nodes:[{id:"staff",label:"Office staff",kind:"start",description:"Enter orders",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"oracle",label:"Oracle database",kind:"end",description:"Stores records",icon:{slug:"oracle"},group:"dc",shape:"database"},{id:"vpn",label:"Site-to-site VPN gateway",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"private"},{id:"queue",label:"Order queue",kind:"process",group:"region",shape:"queue"},{id:"sync",label:"Sync function",kind:"process",group:"region"},{id:"table",label:"Orders table",kind:"end",group:"region",shape:"database"},{id:"archive",label:"Invoice archive",kind:"end",description:"Each invoice saved as a PDF document",group:"region",shape:"storage"}],edges:[{id:"edge-1",source:"staff",target:"erp",label:"Enter orders"},{id:"edge-2",source:"erp",target:"oracle",label:"Stores records"},{id:"edge-3",source:"erp",target:"vpn",label:"Sends orders"},{id:"edge-4",source:"vpn",target:"api",label:"Passes orders"},{id:"edge-5",source:"api",target:"queue",label:"Puts each order"},{id:"edge-6",source:"queue",target:"sync",label:"Takes orders"},{id:"edge-7",source:"sync",target:"table",label:"Writes orders"},{id:"edge-8",source:"sync",target:"archive",label:"Saves invoice PDFs"}]}),i8({id:"aws-three-tier-described",title:"AWS three-tier app",groups:[{id:"region",label:"us-east-1",kind:"region"},{id:"vpc",label:"VPC",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Database subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"users",label:"Users",kind:"start",description:"Send requests"},{id:"alb",label:"Application Load Balancer",kind:"process",group:"public"},{id:"web",label:"Web service",kind:"process",description:"ECS Fargate",group:"private"},{id:"api",label:"API service",kind:"process",description:"ECS Fargate, two tasks behind the load balancer",group:"private"},{id:"rds",label:"RDS PostgreSQL",kind:"end",shape:"database",icon:{slug:"postgresql"},description:"Multi-AZ primary",group:"data"},{id:"s3",label:"S3 bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb",label:"requests"},{id:"e2",source:"alb",target:"web",label:"routes"},{id:"e3",source:"alb",target:"api",label:"routes"},{id:"e4",source:"web",target:"rds",label:"queries"},{id:"e5",source:"api",target:"rds",label:"queries"},{id:"e6",source:"api",target:"s3",label:"stores uploads"}]}),X({id:"depth-four",title:"Two availability zones, four zones deep",type:"flowchart",groups:[{id:"region",label:"us-west-2",kind:"region"},{id:"vpc",label:"VPC",kind:"vpc",parent:"region"},{id:"az-a",label:"us-west-2a",kind:"zone",parent:"vpc"},{id:"az-b",label:"us-west-2b",kind:"zone",parent:"vpc"},{id:"public-a",label:"Public subnet A",kind:"subnet",parent:"az-a"},{id:"private-a",label:"Private subnet A",kind:"subnet",parent:"az-a"},{id:"public-b",label:"Public subnet B",kind:"subnet",parent:"az-b"},{id:"private-b",label:"Private subnet B",kind:"subnet",parent:"az-b"}],nodes:[{id:"users",label:"Users",kind:"start"},{id:"alb",label:"Load balancer",kind:"process",group:"vpc"},{id:"web-a",label:"Web server A",kind:"process",group:"public-a"},{id:"web-b",label:"Web server B",kind:"process",group:"public-b"},{id:"app-a",label:"App server A",kind:"process",group:"private-a"},{id:"app-b",label:"App server B",kind:"process",group:"private-b"},{id:"db-a",label:"Primary database",kind:"end",shape:"database",group:"private-a"},{id:"db-b",label:"Standby database",kind:"end",shape:"database",group:"private-b"},{id:"s3",label:"Backups bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb"},{id:"e2",source:"alb",target:"web-a"},{id:"e3",source:"alb",target:"web-b"},{id:"e4",source:"web-a",target:"app-a"},{id:"e5",source:"web-b",target:"app-b"},{id:"e6",source:"app-a",target:"db-a"},{id:"e7",source:"app-b",target:"db-b"},{id:"e8",source:"db-a",target:"db-b",label:"replicates"},{id:"e9",source:"db-a",target:"s3",label:"backs up"}],layout:{direction:"LR",edgeRouting:"orthogonal"}}),X({id:"thirty-services",title:"Thirty services in eight zones",type:"flowchart",groups:[{id:"aws",label:"AWS",kind:"cloud"},{id:"region",label:"us-east-1",kind:"region",parent:"aws"},{id:"vpc",label:"Production VPC",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"app",label:"App subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Data subnet",kind:"subnet",parent:"vpc"},{id:"onprem",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",kind:"zone",parent:"onprem"}],nodes:[["Customers"],["CloudFront CDN","aws"],["WAF rules","region"],["Route 53 DNS","region"],["Load balancer","public"],["NAT gateway","public"],["Bastion host","public"],["Web frontend","app"],["Auth service","app"],["Catalog service","app"],["Cart service","app"],["Checkout service","app"],["Payments service","app"],["Session cache","data","database"],["Catalog database","data","database"],["Orders database","data","database"],["Order events","region","queue"],["Email worker","vpc"],["Invoice renderer","vpc"],["Invoice PDFs","region","document"],["Analytics stream","region","queue"],["Data warehouse","aws","database"],["VPN gateway","vpc"],["Corporate VPN","corp"],["ERP sync","corp"],["ERP system","corp"],["Finance team","corp"],["Mainframe ledger","onprem","database"],["Audit log","onprem","document"],["Partners"]].map(([e,t,a],i)=>({id:`s${i}`,label:e,kind:0===i?"start":"process",...t?{group:t}:{},...a?{shape:a}:{}})),edges:[[0,1],[1,2],[2,4],[3,4],[0,3],[4,7],[5,7],[6,8],[7,8],[7,9],[7,10],[10,11],[11,12],[8,13],[9,14],[11,15],[12,15],[11,16],[16,17],[16,18],[18,19],[16,20],[20,21],[12,22],[22,23],[23,24],[24,25],[25,26],[25,27],[24,28],[29,22]].map(([e,t],a)=>({id:`e${a}`,source:`s${e}`,target:`s${t}`})),layout:{direction:"LR",edgeRouting:"orthogonal"}});let i9=/[,;]\s*(?:id|label|kind|group|source|target|title|direction|nodes|edges)\s*:?\s*$/i;function se(e){let t=e.trim();for(;;){let e=t.replace(i9,"").trim();if(e===t)return t;t=e}}class st extends s.Xsx("ContractSchemaIssue")({code:sx("custom"),issueTag:s.xCb(["Filter","InvalidType","InvalidValue","MissingKey","UnexpectedKey","Forbidden","OneOf","AnyOf"]),astKind:s.Qrq(s.QfV),missingKeyCode:s.Qrq(s.uSQ("invalid_type")),message:s.QfV,path:s.O31(s.pHd)},{identifier:void 0}){}class sa extends s.rNF()("ContractSchemaError",{issues:s.O31(s.O3D(st))}){}let si=e=>{var t;if("InvalidType"!==e._tag)return c.vp(e);let a=c.bZ(e)?e.input:void 0;return`Invalid input: expected ${t=e.ast,d.Kg(t)?"string":d.Et(t)?"number":d.Lm(t)?"boolean":d.tF(t)?"array":d.RP(t)?"object":d.c$(t)?JSON.stringify(t.literal):"value"}, received ${null===a?"null":Array.isArray(a)?"array":typeof a}`},ss=c.ID({leafHook:si});function sl(e){let t,a;return new sa({issues:(t=[],((a=(e,i,s)=>{switch(e._tag){case"Pointer":return a(e.issue,[...i,...e.path],s);case"Encoding":return a(e.issue,i,s);case"Composite":for(let t of e.issues)a(t,i,e.ast);return;case"AnyOf":if(e.issues.length>0){for(let t of e.issues)a(t,i,e.ast);return}break;case"Filter":if(void 0===c.VY(e)&&"InvalidValue"!==e.issue._tag)return a(e.issue,i,s)}let l="ast"in e?e.ast:s,o="MissingKey"===e._tag&&e.annotations?.[sc]==="invalid_type"?"invalid_type":void 0,r=l&&d.mi(l)&&l.types.every(d.c$)?"LiteralUnion":l?._tag,n=l?.annotations?.[sd],p="string"==typeof n?[...i,n]:i;for(let a of ss(e).issues)t.push({code:"custom",issueTag:e._tag,...o?{missingKeyCode:o}:{},...r?{astKind:r}:{},message:a.message,path:p})})(e.issue,[]),t.length>1&&t.every(e=>"source"===e.path[0]))?[{code:"custom",issueTag:"AnyOf",astKind:"Union",message:"Invalid input",path:["source"]}]:t)})}let so=new Set(["x-sketchi-default","x-sketchi-one-of","const","exclusiveMaximum","exclusiveMinimum","maximum","maxLength","maxItems","minimum","minItems","minLength","pattern"]),sr="x-sketchi-default",sn="x-sketchi-one-of",sd="codeModeDiscriminator",sc="codeModeMissingKeyCode";function sp(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function sh(e){let t=s._oz(s.AxX(e),{includeAnnotationKey:e=>so.has(e),onExcessProperty:"error"});return function e(t){if(Array.isArray(t))return t.map(e);if(!sp(t))return t;let a=Object.fromEntries(Object.entries(t).map(([t,a])=>[t,e(a)])),i=!0===a[sn];delete a[sn],i&&Array.isArray(a.anyOf)&&(a.oneOf=a.anyOf,delete a.anyOf);let s=a.allOf;if(Array.isArray(s)){let e=[];for(let t of s)sp(t)&&Object.hasOwn(t,sr)?a.default=t[sr]:e.push(t);0===e.length?delete a.allOf:a.allOf=e}return a}({$schema:"https://json-schema.org/draft/2020-12/schema",...t.schema,...0===Object.keys(t.definitions).length?{}:{$defs:t.definitions}})}function sg(){return s.QfV.check(s.tJb(1,{message:"Too small: expected string to have >=1 characters"}))}function su(e){return s.O31(e).pipe(s.fXn).check(s.tJb(1,{message:"Too small: expected array to have >=1 items"}))}function sf(e){return s.Qrq(e)}function sm(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected string, received undefined"}))}function sv(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected object, received undefined"}))}function sy(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected array, received undefined"}))}function sw(e){return s.xCb(e).annotate({message:`Invalid option: expected one of ${e.map(e=>JSON.stringify(e)).join("|")}`})}function sx(e){return sM(e,s.QfV)}function sb(e){return sM(e,s.wNn)}function sk(e){return sM(e,s.v8c)}function sM(e,t){let a=s.hzj()([],()=>(t,a,i)=>t===e?o.PyW(e):o.fJG(new c.eE(a,t,i)),{message:`Invalid literal value, expected ${JSON.stringify(e)}`,toCodecJson:()=>s.nfo()(t.annotate({const:e}),{decode:p.pd(()=>e),encode:p.pd(e=>e)})});return s.uSQ(e).pipe(s.GLL(a))}let sC=sg(),sz=sm(sC),s_=s.wYs,sL=s.wNn.check(s.MIs(),s.yJO(0,{message:"Too small: expected number to be >0"})),sB=/^#[0-9a-fA-F]{6}$/u;function sS(e){return s.QfV.annotate(void 0===e?{}:{default:e}).check(s.Pto(sB,{message:`Invalid string: must match pattern /${sB.source}/`}))}let sA=sS(),sP=["excalidraw","scene","png"],sV=["excalidraw","scene"],sH=Object.assign(sw(sP),{options:sP}),sq=Object.assign(sw(sV),{options:sV});class sF extends s.Xsx("ArtifactProvenance")({sourceArtifactId:sz.pipe(s.Wa3)},{identifier:void 0}){}let sI=["missing_field","invalid_type","invalid_enum","invalid_color","duplicate_node_id","duplicate_edge_id","missing_edge_source","missing_edge_target","self_loop","missing_start","multiple_starts","missing_end","start_has_incoming","end_has_outgoing","unreachable_node","nonterminating_node","missing_outgoing_edge","underbranched_decision","unlabeled_decision_branch","duplicate_decision_branch_label","disconnected_graph","flowchart_too_large","duplicate_group_id","unknown_node_group","empty_group","unknown_group_parent","group_cycle","shaped_decision","duplicate_lane_id","unknown_node_lane","empty_lane","lanes_with_groups","mindmap_too_deep","mindmap_too_large","sequence_too_large","invalid_timeline_date","duplicate_event_id","invalid_timeline_order","timeline_too_large","invalid_timeline_span","invalid_timeline_lane","chart_too_large","chart_series_mismatch","duplicate_chart_category","invalid_chart_series","invalid_chart_value","invalid_chart_option","state_machine_too_large","invalid_state","unknown_initial_state","invalid_composite","composite_initial_defaulted","final_has_outgoing","underbranched_choice","gantt_too_large","invalid_gantt_date","invalid_gantt_span","invalid_gantt_phase","invalid_gantt_progress","gantt_dependency_cycle","gantt_schedule_conflict","er_too_large","invalid_entity","invalid_field","unknown_relationship_field","invalid_relationship","class_too_large","invalid_class","invalid_member","invalid_generalization","org_chart_too_large","invalid_person","invalid_reporting_line","request_too_large","generic_label","label_too_long","quality_below_threshold","render_failed","png_unavailable","text_overflow","arrow_binding_invalid","arrow_overlap","export_invalid_scene","storage_read_failed","storage_write_failed","unsupported_artifact_format","patch_source_unavailable","unknown_patch_target","unsupported_patch_operation","patch_preserve_connectivity_failed","patch_output_invalid","duplicate_element_id","duplicate_layer_id","invalid_canvas_binding","invalid_canvas_composition","invalid_canvas_geometry","invalid_polygon","canvas_limit_exceeded","invalid_z_order","unknown_layout_target","unknown_icon","invalid_canvas_icon","icon_dropped"],sE=Object.assign(sw(sI),{options:sI}),sO=sw(["request","diagram","node","edge","group","lane","element","layer","artifact"]),sU=sw(["input","canvas","flowchart","mindmap","quality","render","export","storage"]);class sX extends s.Xsx("CodeModeIssueRef")({kind:sO,id:sf(sC),path:sf(sC)},{identifier:void 0}){}class sT extends s.Xsx("CodeModeIssue")({code:sE,severity:sw(["error","warning"]),stage:sU,ref:sf(sX),message:sz,hint:sz},{identifier:void 0}){}let s$=sT,sY=["start","process","decision","end"],sG=Object.assign(sw(sY),{options:sY}),sR=["setDefaultStyle","setStyle","setShape","translate","replaceText","rerouteEdges","insert","remove","replace","reorder","group","ungroup"];Object.assign(sw(sR),{options:sR});let sD=sm(sg().check(s.NYj(128,{message:"Too big: expected string to have <=128 characters"})));class sZ extends s.Xsx("NodeIconSpec")({slug:sD},{identifier:void 0}){}class sj extends s.Xsx("FlowchartSpecNode")({id:sz,label:sz,kind:sG,description:sf(sC),icon:sf(sZ),group:sf(sC),lane:sf(sC),shape:sf(sw(B))},{identifier:void 0}){}class sN extends s.Xsx("FlowchartSpecLane")({id:sz,label:sz},{identifier:void 0}){}class sW extends s.Xsx("FlowchartSpecGroup")({id:sz,label:sz,parent:sf(sC),kind:sf(sw(C))},{identifier:void 0}){}class sJ extends s.Xsx("FlowchartSpecEdge")({id:sf(sC),source:sz,target:sz,label:sf(sC)},{identifier:void 0}){}let sK=sw(["TB","LR"]),sQ=sK.annotate({default:"TB"}).pipe(s.E$i(o.PyW("TB")));class s1 extends s.Xsx("FlowchartSpecLayout")({direction:sQ},{identifier:void 0}){}let s0=y.accentColor,s2=sS(s0).pipe(s.E$i(o.PyW(s0))),s3=y.backgroundColor,s5=sS(s3).pipe(s.E$i(o.PyW(s3)));class s4 extends s.Xsx("FlowchartSpecStyle")({accentColor:s2,backgroundColor:s5},{identifier:void 0}){}let s6=[],s7=s.O31(sJ).pipe(s.fXn).annotate({default:s6}).pipe(s.E$i(o.PyW(s6))),s8={direction:"TB"},s9=s1.annotate({default:s8}).pipe(s.E$i(o.PyW(s8)),s.usV({[sr]:s8})),le={accentColor:y.accentColor,backgroundColor:y.backgroundColor},lt=s4.annotate({default:le}).pipe(s.E$i(o.PyW(le)),s.usV({[sr]:le}));class la extends s.Xsx("FlowchartSpec")({id:sf(sC),title:sz,nodes:sy(su(sj)),edges:s7,groups:sf(s.O31(sW).pipe(s.fXn)),lanes:sf(s.O31(sN).pipe(s.fXn)),layout:s9,style:lt},{identifier:void 0}){}class li extends s.Xsx("SequenceParticipantSpec")({id:sz,label:sz,kind:sf(sC),icon:sf(sZ)},{identifier:void 0}){}class ls extends s.Xsx("SequenceMessageSpec")({id:sf(sC),source:sz,target:sz,label:sz,type:sf(sw(eF)),style:sf(sw(eI))},{identifier:void 0}){}let ll=[],lo=s.O31(ls).pipe(s.fXn).annotate({default:ll}).pipe(s.E$i(o.PyW(ll)));class lr extends s.Xsx("SequenceDiagramSpec")({id:sf(sC),title:sz,participants:sy(su(li)),messages:lo,style:lt},{identifier:void 0}){}class ln extends s.Xsx("TimelineEventSpec")({id:sz,label:sz,date:sf(sC),end:sf(sC),order:sf(s_),kind:sf(sw(Q)),lane:sf(sC),description:sf(sC)},{identifier:void 0}){}class ld extends s.Xsx("TimelineSpec")({id:sf(sC),title:sz,events:sy(su(ln)),lanes:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:lt},{identifier:void 0}){}class lc extends s.Xsx("ChartSeriesSpec")({name:sf(sC),values:sy(s.O31(s_).pipe(s.fXn))},{identifier:void 0}){}class lp extends s.Xsx("ChartSpec")({id:sf(sC),title:sz,kind:sw($),categories:sy(su(sC)),series:sy(su(lc)),unit:sf(sC),categoryAxisTitle:sf(sC),valueAxisTitle:sf(sC),stacked:sf(s.v8c),donut:sf(s.v8c),orientation:sf(sw(Y)),style:lt},{identifier:void 0}){}class lh extends s.Xsx("StateMachineStateSpec")({id:sz,label:sf(sC),kind:sf(sw(eW)),parent:sf(sC),initial:sf(sC)},{identifier:void 0}){}class lg extends s.Xsx("StateMachineTransitionSpec")({id:sf(sC),source:sz,target:sz,event:sf(sC),guard:sf(sC),action:sf(sC)},{identifier:void 0}){}class lu extends s.Xsx("StateMachineSpecLayout")({direction:sw(eJ)},{identifier:void 0}){}let lf=[],lm=s.O31(lg).pipe(s.fXn).annotate({default:lf}).pipe(s.E$i(o.PyW(lf)));class lv extends s.Xsx("StateMachineSpec")({id:sf(sC),title:sz,initial:sz,states:sy(su(lh)),transitions:lm,layout:sf(lu),style:lt},{identifier:void 0}){}class ly extends s.Xsx("GanttTaskSpec")({id:sz,label:sz,start:sz,end:sf(sC),duration:sf(s_),milestone:sf(s.v8c),phase:sf(sC),dependsOn:sf(s.O31(sC).pipe(s.fXn)),progress:sf(s_)},{identifier:void 0}){}class lw extends s.Xsx("GanttSpec")({id:sf(sC),title:sz,tasks:sy(su(ly)),phases:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:lt},{identifier:void 0}){}class lx extends s.Xsx("ErFieldSpec")({name:sz,type:sf(sC),pk:sf(s.v8c),fk:sf(s.v8c),unique:sf(s.v8c),nullable:sf(s.v8c)},{identifier:void 0}){}let lb=[];class lk extends s.Xsx("ErEntitySpec")({id:sz,name:sf(sC),fields:s.O31(s.gPz([sC,lx])).pipe(s.fXn).annotate({default:lb}).pipe(s.E$i(o.PyW(lb)))},{identifier:void 0}){}class lM extends s.Xsx("ErRelationshipSpec")({id:sf(sC),from:sz,to:sz,fromCardinality:sw(ty),toCardinality:sw(ty),label:sf(sC)},{identifier:void 0}){}let lC=[],lz=s.O31(lM).pipe(s.fXn).annotate({default:lC}).pipe(s.E$i(o.PyW(lC)));class l_ extends s.Xsx("ErSpec")({id:sf(sC),title:sz,entities:sy(su(lk)),relationships:lz,style:lt},{identifier:void 0}){}class lL extends s.Xsx("ClassAttributeSpec")({name:sz,type:sf(sC),visibility:sf(sw(tU)),static:sf(s.v8c)},{identifier:void 0}){}class lB extends s.Xsx("ClassParameterSpec")({name:sz,type:sf(sC)},{identifier:void 0}){}let lS=[];class lA extends s.Xsx("ClassMethodSpec")({name:sz,params:s.O31(s.gPz([sC,lB])).pipe(s.fXn).annotate({default:lS}).pipe(s.E$i(o.PyW(lS))),returns:sf(sC),visibility:sf(sw(tU)),static:sf(s.v8c),abstract:sf(s.v8c)},{identifier:void 0}){}let lP=[],lV=[];class lH extends s.Xsx("ClassNodeSpec")({id:sz,name:sf(sC),kind:sf(sw(tE)),stereotype:sf(sC),attributes:s.O31(s.gPz([sC,lL])).pipe(s.fXn).annotate({default:lP}).pipe(s.E$i(o.PyW(lP))),methods:s.O31(s.gPz([sC,lA])).pipe(s.fXn).annotate({default:lV}).pipe(s.E$i(o.PyW(lV)))},{identifier:void 0}){}class lq extends s.Xsx("ClassRelationshipSpec")({id:sf(sC),kind:sw(t$),from:sz,to:sz,fromMultiplicity:sf(sC),toMultiplicity:sf(sC),fromRole:sf(sC),toRole:sf(sC),navigable:sf(s.v8c),label:sf(sC)},{identifier:void 0}){}let lF=[],lI=s.O31(lq).pipe(s.fXn).annotate({default:lF}).pipe(s.E$i(o.PyW(lF)));class lE extends s.Xsx("ClassSpec")({id:sf(sC),title:sz,classes:sy(su(lH)),relationships:lI,style:lt},{identifier:void 0}){}class lO extends s.Xsx("OrgPersonSpec")({id:sz,name:sz,title:sf(sC),department:sf(sC),manager:sf(sC),assistant:sf(s.v8c),avatar:sf(s.v8c)},{identifier:void 0}){}class lU extends s.Xsx("OrgDottedLineSpec")({id:sf(sC),report:sz,manager:sz,label:sf(sC)},{identifier:void 0}){}let lX=[],lT=s.O31(lU).pipe(s.fXn).annotate({default:lX}).pipe(s.E$i(o.PyW(lX)));class l$ extends s.Xsx("OrgChartSpec")({id:sf(sC),title:sz,people:sy(su(lO)),dottedLines:lT,groupByDepartment:sf(s.v8c),forest:sf(s.v8c),style:lt},{identifier:void 0}){}let lY=sf(su(sH)),lG=sf(s.O31(sq).pipe(s.fXn)),lR=sf(s.wNn.check(s.MIs(),s.OWK(0,{message:"Too small: expected number to be >=0"}),s.biW(10,{message:"Too big: expected number to be <=10"})));class lD extends s.Xsx("BuildFlowchartOptions")({artifactFormats:lY,inlineArtifacts:lG,minQualityScore:lR},{identifier:void 0}){}sf(lD);class lZ extends s.Xsx("BuildFlowchartRequest")({requestId:sf(sC),spec:sv(la),options:sf(lD)},{identifier:void 0}){}let lj=la.mapFields(({id:e,title:t,nodes:a,edges:i,groups:s,lanes:l,layout:o})=>({id:e,title:t,nodes:a,edges:i,groups:s,lanes:l,layout:o})),lN=s._kM({requestId:sf(sC),spec:sv(lj)}),lW=s.rcy(lN,{leafHook:si,parseOptions:{errors:"all"}}),lJ=Object.assign(lW,{"~standard":{...lW["~standard"],jsonSchema:{input:()=>sh(lN),output:()=>sh(lN)}}}),lK=Object.assign(lZ,{omit:e=>lJ});class lQ extends s.Xsx("BuildSequenceDiagramRequest")({requestId:sf(sC),spec:sv(lr),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(lr.mapFields(({id:e,title:t,participants:a,messages:i})=>({id:e,title:t,participants:a,messages:i})))});class l1 extends s.Xsx("BuildTimelineRequest")({requestId:sf(sC),spec:sv(ld),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(ld.mapFields(({id:e,title:t,events:a,lanes:i,today:s})=>({id:e,title:t,events:a,lanes:i,today:s})))});class l0 extends s.Xsx("BuildChartRequest")({requestId:sf(sC),spec:sv(lp),options:sf(lD)},{identifier:void 0}){}let l2=lp.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l2)});class l3 extends s.Xsx("BuildStateMachineRequest")({requestId:sf(sC),spec:sv(lv),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(lv.mapFields(({id:e,title:t,initial:a,states:i,transitions:s,layout:l})=>({id:e,title:t,initial:a,states:i,transitions:s,layout:l})))});class l5 extends s.Xsx("BuildGanttRequest")({requestId:sf(sC),spec:sv(lw),options:sf(lD)},{identifier:void 0}){}let l4=lw.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l4)});class l6 extends s.Xsx("BuildErDiagramRequest")({requestId:sf(sC),spec:sv(l_),options:sf(lD)},{identifier:void 0}){}let l7=l_.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l7)});class l8 extends s.Xsx("BuildClassDiagramRequest")({requestId:sf(sC),spec:sv(lE),options:sf(lD)},{identifier:void 0}){}let l9=lE.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l9)});class oe extends s.Xsx("BuildOrgChartRequest")({requestId:sf(sC),spec:sv(l$),options:sf(lD)},{identifier:void 0}){}let ot=l$.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(ot)});let oa=s.QfV.check(s.tJb(1,{message:"Too small: expected string to have >=1 characters"}),s.HNH(function(e){let t=se(e);return t.length>0&&!/^(?:""|''|``)$/.test(t)},{message:"Must contain semantic text after normalization."})),oi=sv(s.DYE(()=>os).annotate({identifier:"__schema0"})),os=s._kM({label:sm(oa),children:s.Qrq(s.O31(oi).pipe(s.fXn))});class ol extends s.Xsx("MindmapSpecLayout")({direction:sw(["LR","RL"]).annotate({default:"LR"}).pipe(s.E$i(o.PyW("LR")))},{identifier:void 0}){}let oo={direction:"LR"},or=ol.annotate({default:oo}).pipe(s.E$i(o.PyW(oo)),s.usV({[sr]:oo})),on=s._kM({id:sf(sC),title:sm(oa),root:oi,layout:or,style:lt});class od extends s.Xsx("MindmapSpec")(on,{identifier:void 0}){}let oc=s._kM({requestId:sf(sC),spec:sv(on),options:sf(lD)});s.Xsx("BuildMindmapRequest")(oc,{identifier:void 0});class op extends s.Xsx("ScenePoint")({x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3)},{identifier:void 0}){}let oh={frameId:sf(sC).pipe(s.Wa3),groupIds:sf(s.O31(sC).pipe(s.fXn).annotate({maxItems:a$.maxGroupsPerElement})).pipe(s.Wa3),layerId:sf(sC).pipe(s.Wa3),locked:sf(s.v8c).pipe(s.Wa3),opacity:sf(s.wNn.check(s.MIs(),s.Bt9({minimum:0,maximum:100}))).pipe(s.Wa3),zIndex:sf(s.Aiz).pipe(s.Wa3)},og={fillColor:sf(sA).pipe(s.Wa3),fillStyle:sf(sw(["cross-hatch","hachure","solid"])).pipe(s.Wa3),roughness:sf(sw([0,1,2])).pipe(s.Wa3),strokeColor:sf(sA).pipe(s.Wa3),strokeStyle:sf(sw(["dashed","dotted","solid"])).pipe(s.Wa3),strokeWidth:sf(sw([1,2,4])).pipe(s.Wa3)},ou=s.T9y(sw(["arrow","bar","circle","diamond","triangle","crowfoot_one","crowfoot_many","crowfoot_one_or_many","triangle_outline","diamond_outline"])),of=s.O31(op).pipe(s.fXn).check(s.tJb(2,{message:"Too small: expected array to have >=2 items"}),s.NYj(a$.maxPointsPerElement,{message:`Too big: expected array to have <=${a$.maxPointsPerElement} items`}));class om extends s.Xsx("CanvasNodeIcon")({slug:sD.pipe(s.Wa3),size:s.wNn.check(s.MIs(),s.Bt9({minimum:aY.minSize,maximum:aY.maxSize},{message:`Expected a number between ${aY.minSize} and ${aY.maxSize}`})).pipe(s.Wa3)},{identifier:void 0}){}class ov extends s.Xsx("CanvasIconAsset")({name:s.QfV,svg:s.QfV},{identifier:void 0}){}class oy extends s.Xsx("NodeSceneElement")({...oh,...og,type:sx("node"),id:sz,nodeId:sz,kind:sf(sC),icon:sf(om).pipe(s.Wa3),rendererRole:sf(sw(a1)),shape:sw(["rectangle","ellipse","diamond","circle","polygon",...aG]).pipe(s.Wa3),points:sf(of).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3),label:sz.pipe(s.Wa3)},{identifier:void 0}){}class ow extends s.Xsx("TextSceneElement")({...oh,type:sx("text"),id:sz,containerId:sf(sC),textColor:sf(sA).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),text:sz.pipe(s.Wa3),fontSize:sL,fontFamily:sf(sw(["hand","mono","sans"])),lineHeight:sf(sL),maxWidth:sf(sL),textAlign:sf(sw(["center","left","right"])),verticalAlign:sf(sw(["bottom","middle","top"]))},{identifier:void 0}){}class ox extends s.Xsx("ArrowSceneElement")({...oh,...og,type:sx("arrow"),id:sz,edgeId:sz,sourceNodeId:sz,targetNodeId:sz.pipe(s.Wa3),startArrowhead:sf(ou).pipe(s.Wa3),endArrowhead:sf(ou).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3),points:sy(of).pipe(s.Wa3),curved:sf(s.v8c).pipe(s.Wa3),label:sf(sC).pipe(s.Wa3)},{identifier:void 0}){}class ob extends s.Xsx("CanvasLineBinding")({elementId:sz,focus:sf(s_),gap:sf(s_)},{identifier:void 0}){}class ok extends s.Xsx("LineSceneElement")({...oh,...og,type:sx("line"),id:sz,points:sy(of).pipe(s.Wa3),startBinding:sf(ob).pipe(s.Wa3),endBinding:sf(ob).pipe(s.Wa3),startArrowhead:sf(ou).pipe(s.Wa3),endArrowhead:sf(ou).pipe(s.Wa3),label:sf(sC).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3)},{identifier:void 0}){}class oM extends s.Xsx("FrameSceneElement")({...oh,...og,type:sx("frame"),id:sz,nodeId:sf(sC),name:sf(sC).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3)},{identifier:void 0}){}class oC extends s.Xsx("CanvasLayer")({id:sz,name:sf(sC),locked:sf(s.v8c),visible:sf(s.v8c)},{identifier:void 0}){}let oz=sy(su(sC));class o_ extends s.Xsx("CanvasFlowLayout")({type:sw(["row","column","stack"]),ids:oz,x:sf(s_),y:sf(s_),gap:sf(s_)},{identifier:void 0}){}class oL extends s.Xsx("CanvasGridLayout")({type:sx("grid"),ids:oz,columns:s.Aiz.check(s.OWK(1,{message:"Too small: expected number to be >=1"})),x:sf(s_),y:sf(s_),columnGap:sf(s_),rowGap:sf(s_)},{identifier:void 0}){}class oB extends s.Xsx("CanvasAlignLayout")({type:sx("align"),ids:oz,axis:sw(["x","y"]),alignment:sw(["center","end","start"])},{identifier:void 0}){}class oS extends s.Xsx("CanvasDistributeLayout")({type:sx("distribute"),ids:oz,axis:sw(["x","y"]),gap:sf(s_)},{identifier:void 0}){}let oA=s.gPz([oy,ow,ox,ok,oM],{mode:"oneOf"}).annotate({[sn]:!0}),oP=s.gPz([o_,oL,oB,oS],{mode:"oneOf"}),oV=s.O31(oC).pipe(s.fXn).annotate({default:[],maxItems:a$.maxLayers}).pipe(s.E$i(o.PyW([]))),oH=s.O31(oP).pipe(s.fXn).annotate({default:[],maxItems:a$.maxLayouts}).pipe(s.E$i(o.PyW([]))),oq=s.O31(sC).pipe(s.fXn).annotate({default:[],maxItems:a$.maxZOrderEntries}).pipe(s.E$i(o.PyW([])));class oF extends s.Xsx("CanvasSpec")({kind:sx("canvas"),version:sb(1),diagramId:sz,title:sz,width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3),accentColor:sA.pipe(s.Wa3),backgroundColor:sA.pipe(s.Wa3),elements:sy(s.O31(oA).pipe(s.fXn).annotate({maxItems:a$.maxElements})),icons:sf(s.mSG(s.QfV,ov)).pipe(s.Wa3),layers:oV,layouts:oH,zOrder:oq},{identifier:void 0}){}let oI=oF;class oE extends s.Xsx("CreateCanvasRequest")({requestId:sf(sC),spec:sv(oF),options:sf(lD)},{identifier:void 0}){}let oO=s.mSG(s.QfV,s.$r1).check(s.HNH(e=>"string"==typeof e.id&&e.id.length>0&&"string"==typeof e.type&&e.type.length>0,{message:"Invalid input"}));class oU extends s.Xsx("ExcalidrawScene")({appState:s.mSG(s.QfV,s.$r1),elements:s.O31(oO).pipe(s.fXn)},{identifier:void 0}){}class oX extends oU.extend("ExcalidrawFile")({files:s.mSG(s.QfV,s.$r1),source:sz,type:sx("excalidraw"),version:sb(2)},{identifier:void 0}){}let oT=oX;class o$ extends s.Xsx("GetArtifactRequest")({artifactId:sz,format:sf(sH),inline:sf(s.v8c)},{identifier:void 0}){}class oY extends s.Xsx("DiagramSelector")({ids:sf(s.O31(sC).pipe(s.fXn)),nodeIds:sf(s.O31(sC).pipe(s.fXn)),edgeIds:sf(s.O31(sC).pipe(s.fXn)),kinds:sf(s.O31(sG).pipe(s.fXn)),labels:sf(s.O31(sC).pipe(s.fXn)),scope:sf(sw(["all","nodes","edges"]))},{identifier:void 0}){}class oG extends s.Xsx("DiagramStylePatch")({strokeColor:sf(sA),fillColor:sf(sA),textColor:sf(sA),backgroundColor:sf(sA)},{identifier:void 0}){}let oR=["rectangle","diamond","ellipse","circle","polygon"],oD=Object.assign(sw(oR),{options:oR});class oZ extends s.Xsx("SetDefaultStyleOperation")({op:sx("setDefaultStyle"),style:sv(oG)},{identifier:void 0}){}class oj extends s.Xsx("SetStyleOperation")({op:sx("setStyle"),selector:sv(oY),style:sv(oG)},{identifier:void 0}){}class oN extends s.Xsx("SetShapeOperation")({op:sx("setShape"),selector:sv(oY),shape:oD},{identifier:void 0}){}class oW extends s.Xsx("TranslateOperation")({op:sx("translate"),selector:sv(oY),dx:s_,dy:s_},{identifier:void 0}){}class oJ extends s.Xsx("ReplaceTextOperation")({op:sx("replaceText"),selector:sv(oY),text:sz},{identifier:void 0}){}class oK extends s.Xsx("RerouteEdgesOperation")({op:sx("rerouteEdges"),selector:sf(oY)},{identifier:void 0}){}let oQ=sy(su(sC));class o1 extends s.Xsx("InsertElementsOperation")({op:sx("insert"),elements:sy(su(oA)),beforeId:sf(sC),afterId:sf(sC)},{identifier:void 0}){}class o0 extends s.Xsx("RemoveElementsOperation")({op:sx("remove"),selector:sv(oY)},{identifier:void 0}){}class o2 extends s.Xsx("ReplaceElementOperation")({op:sx("replace"),id:sz,element:sv(oA)},{identifier:void 0}){}class o3 extends s.Xsx("ReorderElementsOperation")({op:sx("reorder"),ids:oQ,beforeId:sf(sC),afterId:sf(sC)},{identifier:void 0}){}class o5 extends s.Xsx("GroupElementsOperation")({op:sx("group"),ids:oQ,groupId:sz},{identifier:void 0}){}class o4 extends s.Xsx("UngroupElementsOperation")({op:sx("ungroup"),ids:oQ,groupId:sf(sC)},{identifier:void 0}){}let o6=s.gPz([oZ,oj,oN,oW,oJ,oK,o1,o0,o2,o3,o5,o4],{mode:"oneOf"}).annotate({[sn]:!0,[sd]:"op",message:`Invalid discriminator value. Expected ${sR.map(e=>`'${e}'`).join(" | ")}`});class o7 extends s.Xsx("ArtifactPatchSource")({artifactId:sz,format:sf(sx("scene"))},{identifier:void 0}){}class o8 extends s.Xsx("InlineScenePatchSource")({scene:sv(oF)},{identifier:void 0}){}let o9=s.gPz([o7,o8]).annotate({message:"Invalid input"});class re extends s.Xsx("ApplyDiagramPatchOptions")({artifactFormats:lY,inlineArtifacts:lG,preserveConnectivity:sf(s.v8c)},{identifier:void 0}){}sf(re);class rt extends s.Xsx("ApplyDiagramPatchRequest")({requestId:sf(sC),source:o9.annotateKey({messageMissingKey:"Invalid input"}),operations:sy(su(o6)),options:sf(re),intent:sf(sC)},{identifier:void 0}){}class ra extends s.Xsx("NormalizedMindmapTopic")({id:sC,label:sC,children:s.O31(s.DYE(()=>ra)).pipe(s.fXn)},{identifier:void 0}){}let ri=s._kM({id:sC,title:sC,nodes:s.O31(sj).pipe(s.fXn),edges:s.O31(sJ.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),groups:s.Qrq(s.O31(sW).pipe(s.fXn)),lanes:s.Qrq(s.O31(sN).pipe(s.fXn)),layout:s._kM({direction:sK}),style:s._kM({accentColor:sA,backgroundColor:sA})}),rs=s._kM({id:sC,title:sC,root:ra,layout:s._kM({direction:sw(["LR","RL"])}),style:s._kM({accentColor:sA,backgroundColor:sA})}),rl=s._kM({id:sC,title:sC,participants:s.O31(li).pipe(s.fXn),messages:s.O31(ls.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),ro=s._kM({id:sC,title:sC,events:s.O31(ln).pipe(s.fXn),lanes:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:s._kM({accentColor:sA,backgroundColor:sA})}),rr=s._kM({id:sC,title:sC,initial:sC,states:s.O31(lh).pipe(s.fXn),transitions:s.O31(lg.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),layout:sf(lu),style:s._kM({accentColor:sA,backgroundColor:sA})}),rn=lw.mapFields(e=>({...e,id:sC,title:sC,style:s._kM({accentColor:sA,backgroundColor:sA})})),rd=s._kM({id:sC,title:sC,entities:s.O31(s._kM({id:sC,name:sf(sC),fields:s.O31(lx).pipe(s.fXn)})).pipe(s.fXn),relationships:s.O31(lM.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),rc=s._kM({id:sC,title:sC,classes:s.O31(s._kM({id:sC,name:sf(sC),kind:sf(sw(tE)),stereotype:sf(sC),attributes:s.O31(lL).pipe(s.fXn),methods:s.O31(lA.mapFields(e=>({...e,params:s.O31(lB).pipe(s.fXn)}))).pipe(s.fXn)})).pipe(s.fXn),relationships:s.O31(lq.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),rp=s._kM({id:sC,title:sC,people:s.O31(lO).pipe(s.fXn),dottedLines:s.O31(lU.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),groupByDepartment:sf(s.v8c),forest:sf(s.v8c),style:s._kM({accentColor:sA,backgroundColor:sA})}),rh=lp.mapFields(e=>({...e,id:sC,title:sC,style:s._kM({accentColor:sA,backgroundColor:sA})})),rg=s._kM({code:s.QfV,passed:s.v8c,severity:sw(["error","warning"]),message:s.QfV,refs:s.O31(sX).pipe(s.fXn)}),ru=s._kM({accepted:s.v8c,score:s.wNn,threshold:s.wNn,summary:s._kM({nodeCount:s.wNn,edgeCount:s.wNn}),checks:s.O31(rg).pipe(s.fXn)}),rf=s._kM({format:sH,mimeType:s.QfV,url:sf(s.QfV),expiresAt:sf(s.QfV),inline:sf(s.$r1),sizeBytes:sf(s.wNn)}),rm=s._kM({artifactId:s.QfV,diagramId:s.QfV,formats:s.O31(rf).pipe(s.fXn),provenance:sf(sF)}),rv=s._kM({artifactId:sf(s.QfV),diagramId:sf(s.QfV),formats:sf(s.O31(rf).pipe(s.fXn))});class ry extends s.Xsx("BuildFlowchartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:ri,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rw extends s.Xsx("BuildFlowchartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_flowchart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(ri),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([ry,rw]);class rx extends s.Xsx("BuildMindmapAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rs,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rb extends s.Xsx("BuildMindmapRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_mindmap","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rs),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rx,rb]);class rk extends s.Xsx("BuildSequenceDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rl,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rM extends s.Xsx("BuildSequenceDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_sequence","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rl),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rk,rM]);class rC extends s.Xsx("BuildTimelineAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:ro,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rz extends s.Xsx("BuildTimelineRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_timeline","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(ro),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rC,rz]);class r_ extends s.Xsx("BuildChartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rh,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rL extends s.Xsx("BuildChartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_chart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rh),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([r_,rL]);class rB extends s.Xsx("BuildStateMachineAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rr,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rS extends s.Xsx("BuildStateMachineRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_state_machine","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rr),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rB,rS]);class rA extends s.Xsx("BuildGanttAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rn,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rP extends s.Xsx("BuildGanttRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_gantt","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rn),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rA,rP]);class rV extends s.Xsx("BuildErDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rd,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rH extends s.Xsx("BuildErDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_er_diagram","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rd),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rV,rH]);class rq extends s.Xsx("BuildClassDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rc,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rF extends s.Xsx("BuildClassDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_class_diagram","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rc),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rq,rF]);class rI extends s.Xsx("BuildOrgChartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rp,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rE extends s.Xsx("BuildOrgChartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_org_chart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rp),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rI,rE]);class rO extends s.Xsx("GetArtifactAccepted")({ok:sk(!0),artifactId:s.QfV,diagramId:s.QfV,format:sH,mimeType:s.QfV,url:sf(s.QfV),expiresAt:sf(s.QfV),inline:sf(s.$r1),sizeBytes:sf(s.wNn),provenance:sf(sF)},{identifier:void 0}){}class rU extends s.Xsx("GetArtifactRejected")({ok:sk(!1),status:sw(["invalid_input","not_found","format_unavailable","expired","storage_failed"]),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rO,rU]);class rX extends s.Xsx("ApplyDiagramPatchAccepted")({ok:sk(!0),status:sx("accepted"),patchId:s.QfV,requestId:sf(s.QfV),sourceArtifactId:sf(s.QfV),artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rT extends s.Xsx("ApplyDiagramPatchRejected")({ok:sk(!1),status:sw(["invalid_input","source_unavailable","target_not_found","unsupported_operation","connectivity_changed","render_failed","export_failed","storage_failed"]),patchId:sf(s.QfV),requestId:sf(s.QfV),sourceArtifactId:sf(s.QfV),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rX,rT]);class r$ extends s.Xsx("CreateCanvasAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:oF,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rY extends s.Xsx("CreateCanvasRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_canvas","limit_exceeded","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(oF),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}let rG=s.gPz([r$,rY]),rR=120,rD=1,rZ=25;class rj extends s.Xsx("SearchIconsRequest")({q:sm(sg().check(s.NYj(rR,{message:`Too big: expected string to have <=${rR} characters`}))),limit:sf(s.Aiz.check(s.Bt9({minimum:rD,maximum:rZ},{message:`Expected an integer between ${rD} and ${rZ}`})))},{identifier:void 0}){}class rN extends s.Xsx("SearchIconsMatch")({slug:s.QfV,name:s.QfV,collection:s.QfV,match:sw(["exact","vendor","weak"])},{identifier:void 0}){}class rW extends s.Xsx("SearchIconsAccepted")({ok:sk(!0),status:sx("accepted"),query:s.QfV,icons:s.O31(rN).pipe(s.fXn),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rJ extends s.Xsx("SearchIconsRejected")({ok:sk(!1),status:sw(["invalid_input"]),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rW,rJ]);let rK=s.xCb(["read","readManifest","write"]);class rQ extends s.rNF()("CodeModeArtifactStorageError",{cause:s.kld(),message:s.QfV,operation:rK}){}class r1 extends l.kl()("@sketchi/diagram-agent/CodeModeArtifactStorage"){}let r0={excalidraw:"application/vnd.excalidraw+json",png:"image/png",scene:"application/vnd.sketchi.scene+json"};function r2(e){return"excalidraw"===e||"scene"===e}function r3(e){return{format:e.format,mimeType:e.mimeType,sizeBytes:e.sizeBytes}}function r5(e){return new TextEncoder().encode(JSON.stringify(e)).length}let r4=n.QZ(r1)(o.Q56(o.OH5(function(){let e=new Map,t=new Map;return{close:o.OH5(()=>{t.clear(),e.clear()}),storage:{read:o.fn("codeMode.artifacts.memory.read")(function*(e,a){return yield*o.OH5(()=>{let i=t.get(`${e}:${a}`);return i?{...i,data:structuredClone(i.data)}:null})}),readManifest:o.fn("codeMode.artifacts.memory.readManifest")(function*(t){return yield*o.OH5(()=>{let a=e.get(t);return a?structuredClone(a):null})}),write:o.fn("codeMode.artifacts.memory.write")(function*(a){var i;let s=yield*r.Ru;return yield*o.SvU({try:()=>{var i;let l=a.formats.map(r3),o=a.provenance?structuredClone(a.provenance):void 0,r={artifactId:a.artifactId,diagramId:a.diagramId,formats:l,...o?{provenance:o}:{},createdAt:new Date(s).toISOString()};for(let i of(e.set(a.artifactId,r),a.formats))t.set(`${a.artifactId}:${i.format}`,{...i,data:structuredClone(i.data)});let n=a.formats.map(e=>{var t;return t=a.inlineFormats,{format:e.format,mimeType:e.mimeType,...r2(e.format)&&t.includes(e.format)?{inline:e.data}:{},sizeBytes:e.sizeBytes}});return{artifactId:(i={artifactId:a.artifactId,diagramId:a.diagramId,formats:n,...a.provenance?{provenance:structuredClone(a.provenance)}:{}}).artifactId,diagramId:i.diagramId,formats:i.formats,...i.provenance?{provenance:i.provenance}:{}}},catch:(i="write",e=>{var t;return rQ.make({cause:e,message:(t="Artifact storage failed.",e instanceof Error?e.message:t),operation:i})})})})}}}),e=>e.close).pipe(o.TjK(e=>e.storage)));function r6(e,t="storage_write_failed"){return{code:t,severity:"error",stage:"storage",message:e,hint:"Retry the request; if it keeps failing, inspect the artifact store binding."}}let r7="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",r8=r7.slice(10),r9=new Map;function ne(e){let t=r9.get(e);if(void 0===t){t=new Uint8Array(256);for(let a=0;a<e.length;a++)t[e.charCodeAt(a)]=a;r9.set(e,t)}return t}function nt(e,t,a,i){let s=a[0];if(null!=t&&e>=t)throw Error(e+" >= "+t);if(e.slice(-1)===s||t&&t.slice(-1)===s)throw Error("trailing zero");if(t){let l=0;for(;(e[l]||s)===t[l];)l++;if(l>0)return t.slice(0,l)+nt(e.slice(l),t.slice(l),a,i)}let l=e?i[e.charCodeAt(0)]:0,o=null!=t?i[t.charCodeAt(0)]:a.length;return o-l>1?a[Math.round(.5*(l+o))]:t&&t.length>1?t.slice(0,1):a[l]+nt(e.slice(1),null,a,i)}function na(e,t,a){if(e.length!==ni(e[0],t,a))throw Error("invalid integer part of order key: "+e)}function ni(e,t,a){let i=a[e.charCodeAt(0)];if(t[i]===e){let e=t.length/2;return i<e?e-i+1:i-e+2}throw Error("invalid order key head: "+e)}function ns(e,t,a){let i=ni(e[0],t,a);if(i>e.length)throw Error("invalid order key: "+e);return e.slice(0,i)}function nl(e,t,a,i){if(nn(e,t,a))throw Error("invalid order key: "+e);let s=ns(e,a,i);if(e.slice(s.length).slice(-1)===t[0])throw Error("invalid order key: "+e)}function no(e,t,a,i,s){na(e,i,s);let l=e[0],o=t[0],r="";for(let i=e.length-1;i>=1;i--){let s=a[e.charCodeAt(i)]+1;if(s!==t.length)return l+e.slice(1,i)+t[s]+r;r=o+r}let n=s[l.charCodeAt(0)];if(n===i.length-1)return null;let d=i[n+1],c=ni(d,i,s)-ni(l,i,s);return d+(c>0?r+o:c<0?r.slice(1):r)}let nr=new Map;function nn(e,t,a){let i=nr.get(a);void 0===i&&(i=new Map,nr.set(a,i));let s=t.charCodeAt(0),l=i.get(s);return void 0===l&&(l=a[0]+t[0].repeat(a.length/2),i.set(s,l)),e===l}function nd(e){for(let t=1;t<e.length;t++)if(e.charCodeAt(t-1)>=e.charCodeAt(t))return!1;return!0}function nc(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!1;return!0}let np=new Set,nh=new Set,ng=new Set(["rectangle","ellipse","diamond"]),nu=v.ink;function nf(e){return"number"==typeof e&&Number.isFinite(e)?e:null}function nm(e){if(!Array.isArray(e)||e.length<2)return null;let t=nf(e[0]),a=nf(e[1]);return null===t||null===a?null:[t,a]}function nv(e){let t=nf(e.x),a=nf(e.y),i=nf(e.width),s=nf(e.height);return null===t||null===a||null===i||null===s?null:{x:t,y:a,width:i,height:s}}function ny(e){return 1e-4>Math.abs(e-.5)?.5001:e}function nw(e,t){let a=nv(e);return a&&0!==a.width&&0!==a.height?[ny((t.x-a.x)/a.width),ny((t.y-a.y)/a.height)]:null}function nx(e,t){return{elementId:e?.id??"",focus:0,gap:0,fixedPoint:e?nw(e,t):null}}function nb(e,t){let a=iM(e,"seed");return{id:e,angle:0,fillStyle:t&&"fillStyle"in t?t.fillStyle??"solid":"solid",frameId:t?.frameId??null,groupIds:[...t?.groupIds??[]],index:null,isDeleted:!1,link:null,locked:t?.locked??!1,opacity:t?.opacity??100,roughness:t&&"roughness"in t?t.roughness??1:1,seed:a,strokeStyle:t&&"strokeStyle"in t?t.strokeStyle??"solid":"solid",strokeWidth:t&&"strokeWidth"in t?t.strokeWidth??2:2,updated:1,version:1,versionNonce:a+1}}function nk(e){var t;let a,i=e.wrap?aT(e.text,e.maxWidth,e.fontSize):e.text,s=e.wrap?aU(i,e.fontSize,e.maxWidth):aO(i,e.fontSize,e.maxWidth),l=e.element?.lineHeight??1.35,o=function(e,t,a=1.35){return Math.ceil(e.split("\n").length*t*a)}(i,e.fontSize,l),r=e.element?.verticalAlign;return{...nb(e.id,e.element),...void 0===e.locked?{}:{locked:e.locked},type:"text",x:e.x-s/2,y:e.container&&("bottom"===r||"top"===r)?(t=e.container,a=t.y+a7(t).y,"top"===r?a:a+a8(t).height-o):e.y-o/2,width:s,height:o,backgroundColor:"transparent",boundElements:null,containerId:e.containerId??null,fontFamily:e.element?.fontFamily==="mono"?3:e.element?.fontFamily==="sans"?2:5,fontSize:e.fontSize,lineHeight:l,originalText:e.text,roundness:null,strokeColor:e.textColor??nu,text:i,textAlign:e.element?.textAlign??"center",verticalAlign:e.element?.verticalAlign??"middle",autoResize:!(e.wrap&&!e.containerId)}}function nM(e){return aR(e.shape)?`${e.id}:shape`:`${e.id}:logo`}function nC(e){return e.points[e.points.length-1]??e.points[0]}function nz(e,t,a){if(!e)return null;let i=t.get(e.elementId);return i?{elementId:e.elementId,focus:e.focus??0,gap:e.gap??0,fixedPoint:nw(i,a)}:null}function n_(e){return"node"===e.type}function nL(e){return"text"===e.type}function nB(e){return"arrow"===e.type}function nS(e){return"line"===e.type}function nA(e){return"frame"===e.type}function nP(e,t){let a=e[t];if(!(a&&"object"==typeof a))return null;let i=a.elementId;return"string"==typeof i?i:null}function nV(e){let t=nf(e.x)??0,a=nf(e.y)??0,i=nP(e,"startBinding"),s=nP(e,"endBinding"),l=Array.isArray(e.points)?e.points.map(nm).filter(e=>null!==e).map(([e,i])=>({x:t+e,y:a+i})):[];return im(l).map(t=>({...t,arrowId:e.id,startBindingId:i,endBindingId:s,startCoordinate:"horizontal"===t.orientation?l[t.segmentIndex].x:l[t.segmentIndex].y,endCoordinate:"horizontal"===t.orientation?l[t.segmentIndex+1].x:l[t.segmentIndex+1].y,route:l}))}function nH(e){if(ng.has(e.type)||"frame"===e.type)return!0;let t=e.customData;return"line"===e.type&&null!==t&&"object"==typeof t&&"polygon"===t.sketchiShape}function nq(e,t,a){return e>=t-.01&&e<=a+.01}function nF(e,t){return .01>=Math.abs(e-t)}let nI=[1,2,5];function nE(e){return Math.max(0,-Math.floor(Math.log10(e)+1e-9))}function nO(e,t){let a=Number(e.toFixed(t));return Object.is(a,-0)?0:a}function nU(e,t,a=5,i=8){let s,l=Math.min(e,t),o=Math.max(e,t);l===o&&(0===l?o=1:l>0?l=0:o=0);let r=Math.floor(Math.log10((o-l)/Math.max(1,a)));for(let e=r-1;e<=r+1;e+=1)for(let t of nI){let r=t*10**e,n=nE(r),d=nO(Math.floor(l/r+1e-9)*r,n),c=nO(Math.ceil(o/r-1e-9)*r,n),p=Math.round((c-d)/r);if(p<1||p>i)continue;let h=Math.abs(p-a),g=s?Math.abs(s.intervals-a):1/0;(h<g||h===g&&s&&r>s.step)&&(s={step:r,min:d,max:c,intervals:p})}if(!s)throw Error(`No tick step covers ${l}..${o}.`);let n=nE(s.step),d=Array.from({length:s.intervals+1},(e,t)=>nO(s.min+t*s.step,n));return{min:s.min,max:s.max,step:s.step,ticks:d,decimals:n}}function nX(e,t,a){let i=t?nO(e.min-e.step,e.decimals):e.min,s=a?nO(e.max+e.step,e.decimals):e.max,l=Math.round((s-i)/e.step);return{...e,min:i,max:s,ticks:Array.from({length:l+1},(t,a)=>nO(i+a*e.step,e.decimals))}}function nT(e,t){let a=Math.min(...e),i=Math.max(...e);if(t||a<=0!=i<=0)return{low:Math.min(0,a),high:Math.max(0,i)};let s=Math.max(Math.abs(a),Math.abs(i));return i-a>s/6?{low:Math.min(0,a),high:Math.max(0,i)}:{low:a,high:i}}let n$=/^[$€£¥₹₩₽₺₪₦฿]+/u,nY=/^(?:[%‰°]|(?:[kKMBT]|bn|MM|x)(?!\p{L}))/u;function nG(e){if(!e)return{prefix:"",suffix:""};let t=n$.exec(e)?.[0]??"",a=e.slice(t.length);return t?{prefix:t,suffix:a}:{prefix:"",suffix:nY.test(a)?a:` ${a}`}}function nR(e){let[t="",a="0"]=Math.abs(e).toString().split("e");return Math.max(0,(t.split(".")[1]?.length??0)-Number(a))}let nD=new Map;function nZ(e,t){let a=nD.get(t);return a||(a=new Intl.NumberFormat("en-US",{minimumFractionDigits:t,maximumFractionDigits:t}),nD.set(t,a)),a.format(e)}let nj=[{size:1e12,letter:"T"},{size:1e9,letter:"B"},{size:1e6,letter:"M"},{size:1e3,letter:"k"}];function nN(e,t,a){return`${t?"-":""}${a.prefix}${e}${a.suffix}`}function nW(e){return!/^(?:[kKMBT]|bn|MM)/u.test(e.suffix)}function nJ(e,t,a=nR(e)){let i=e<0,s=Math.abs(e);if(s>=1e6&&0===a&&nW(t)){let e=nj.find(e=>s>=e.size),a=Number((s/e.size).toPrecision(12));if(Number(a.toPrecision(3))===a)return nN(`${nZ(a,nR(a))}${e.letter}`,i,t)}return s>0&&a>6?nN(s.toExponential(),i,t):nN(nZ(s,a),i,t)}let nK=e=>Math.round(100*e)/100;function nQ(e,t,a,i=2){let s=new Map;for(let l of e){if("line"!==l.type||!a(l.id)||2!==l.points.length)continue;let[e,o]=l.points,r=.01>Math.abs(e.y-o.y);if(!r&&Math.abs(e.x-o.x)>=.01)continue;let n=r?e.y:e.x,d=r?Math.min(e.x,o.x):Math.min(e.y,o.y),c=r?Math.max(e.x,o.x):Math.max(e.y,o.y),p=t.filter(e=>r?e.top-i<n&&n<e.bottom+i:e.left-i<n&&n<e.right+i).map(e=>r?[e.left-i,e.right+i]:[e.top-i,e.bottom+i]).filter(([e,t])=>t>d&&e<c).toSorted((e,t)=>e[0]-t[0]);if(!p.length)continue;let h=[],g=d;for(let[e,t]of p)e>g&&h.push([g,Math.min(e,c)]),g=Math.max(g,t);g<c&&h.push([g,c]),s.set(l.id,h.filter(([e,t])=>t-e>=1).map(([e,t],a)=>({...l,id:0===a?l.id:`${l.id}:${a}`,points:r?[{x:nK(e),y:n},{x:nK(t),y:n}]:[{x:n,y:nK(e)},{x:n,y:nK(t)}]})))}return s}let n1="chart-mark",n0=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#6250d6","#e34948"],n2=v.ink,n3="#4c4639",n5="#e6dfd2",n4="#8c826f",n6=3*Math.PI/180,n7=20*Math.PI/180;function n8(e,t){return{text:e,width:Math.ceil(aE(e,t)),height:Math.ceil(e.split("\n").length*t*1.35)}}function n9(e,t,a){return n8(aT(e,Math.max(1,t),a),a)}function de(e){return Math.round(100*e)/100}function dt(e,t,a=0){return e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a}function da(e,t,a,i){let s=e.map((e,t)=>t).toSorted((t,a)=>e[t].preferred-e[a].preferred),l=Array.from({length:e.length},()=>0),o=t;for(let t of s){let a=e[t],s=Math.max(a.preferred-a.size/2,o);l[t]=s,o=s+a.size+i}let r=a;for(let t of s.toReversed()){let a=e[t],s=Math.min(l[t],r-a.size);l[t]=s,r=s-i}return l}function di(e){let t=t=>{let a=Number.parseInt(e.slice(t,t+2),16)/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*t(1)+.7152*t(3)+.0722*t(5)}function ds(e,t){return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}function dl(e){let t=di(e);return ds(t,di(n2))>=ds(t,1)?n2:"#ffffff"}function dr(e,t){let a=[...n0.slice(0,e)];return t&&7===e&&(a[6]=n0[7]),a}class dn{surface;elements=[];layers={back:[],middle:[],front:[]};textBoxes=[];constructor(e){this.surface=e}push(e,t){this.elements.push(e),this.layers[t].push(e.id)}zOrder(){return[...this.layers.back,...this.layers.middle,...this.layers.front]}breakRulesUnderText(e,t=2){let a=nQ(this.elements,this.textBoxes.map(e=>e.box),e,t);if(!a.size)return;let i=this.elements.flatMap(e=>a.get(e.id)??[e]);for(let e of(this.elements.splice(0,this.elements.length,...i),Object.values(this.layers))){let t=e.flatMap(e=>a.get(e)?.map(e=>e.id)??[e]);e.splice(0,e.length,...t)}}text(e,t,a,i,s,l,o="center",r={}){let n={left:a,top:i,right:a+t.width,bottom:i+t.height};return this.push({type:"text",id:e,x:de(a+t.width/2),y:de(i+t.height/2),text:t.text,fontSize:s,maxWidth:t.width,textAlign:o,textColor:l,...r},"front"),this.textBoxes.push({id:e,box:n}),n}line(e,t,a,i,s="back"){this.push({type:"line",id:e,points:[{x:de(t.x),y:de(t.y)},{x:de(a.x),y:de(a.y)}],roughness:0,strokeWidth:1,...i},s)}mark(e,t,a,i,s,l="middle"){this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:n1,shape:t,x:de(a.x),y:de(a.y),width:de(Math.max(a.width,.5)),height:de(Math.max(a.height,.5)),label:i,roughness:0,fillStyle:"solid",strokeWidth:1,...s},l)}polygon(e,t,a,i,s="middle"){let l=t.map(e=>e.x),o=t.map(e=>e.y),r=Math.min(...l),n=Math.min(...o),d=t.map(e=>({x:de(e.x-r),y:de(e.y-n)}));this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:n1,shape:"polygon",points:[d[0],d[1],d[2],...d.slice(3)],x:de(r),y:de(n),width:de(Math.max(Math.max(...l)-r,.5)),height:de(Math.max(Math.max(...o)-n,.5)),label:a,roughness:0,fillStyle:"solid",strokeWidth:1,...i},s)}bounds(){let e=1/0,t=1/0,a=-1/0,i=-1/0,s=(s,l,o,r)=>{e=Math.min(e,s),t=Math.min(t,l),a=Math.max(a,o),i=Math.max(i,r)};for(let e of this.elements)if("line"===e.type||"arrow"===e.type)for(let t of e.points)s(t.x,t.y,t.x,t.y);else if("text"===e.type){let t=e.maxWidth??aE(e.text,e.fontSize),a=e.text.split("\n").length*e.fontSize*1.35;s(e.x-t/2,e.y-a/2,e.x+t/2,e.y+a/2)}else s(e.x,e.y,e.x+e.width,e.y+e.height);return{left:e,top:t,right:a,bottom:i}}}function dd(e,t,a){let i=e.bounds(),s=Math.max(i.right-i.left,320),l=i.top-16;if(a.legend&&t.series.length>1){let o=t.series.map((e,t)=>{let i=n9(e.name??`Series ${t+1}`,200,14),s="line"===a.legend?26:12;return{index:t,text:i,keyWidth:s,width:s+6+i.width}}),r=[[]],n=0;for(let e of o){let t=r.at(-1);t.length&&n+18+e.width>s?(r.push([e]),n=e.width):(n+=18*!!t.length+e.width,t.push(e))}let d=r.map(e=>Math.max(...e.map(e=>e.text.height))),c=l-d.reduce((e,t)=>e+t,0)-(r.length-1)*6;l=c-12,r.forEach((t,s)=>{let l=d[s],o=c+l/2,r=i.left;for(let i of t){let t=a.colors[i.index],s={groupIds:[`chart:legend:${i.index}`]};"line"===a.legend?(e.line(`chart:legend:${i.index}:line`,{x:r,y:o},{x:r+i.keyWidth,y:o},{strokeColor:t,strokeWidth:2,...s},"middle"),dc(e,`chart:key:${i.index}`,i.index,r+i.keyWidth/2,o,t,i.text.text,s)):e.mark(`chart:key:${i.index}`,"rectangle",{x:r,y:o-6,width:12,height:12},i.text.text,{fillColor:t,strokeColor:t,...s}),e.text(`chart:legend:${i.index}:label`,i.text,r+i.keyWidth+6,o-i.text.height/2,14,n2,"left",s),r+=i.width+18}c+=l+6})}let o=1===t.series.length?t.series[0]?.name:void 0,r=e=>e?.toLowerCase().includes(o.toLowerCase())===!0;if(o&&!r(t.title)&&!r(t.valueAxisTitle)){let t=n9(o,Math.max(s,360),14);e.text("chart:subtitle",t,i.left,l-t.height,14,n3,"left"),l-=t.height+6}let n=n9(t.title,Math.max(s,360),20);e.text("chart:title",n,i.left,l-n.height,20,n2,"left")}function dc(e,t,a,i,s,l,o,r={}){let n={strokeColor:e.surface,strokeWidth:1,fillColor:l,...r},d=a%6;if(3===d||5===d)return e.polygon(t,3===d?[{x:i,y:s-6.5},{x:i+6.5,y:s+5.2},{x:i-6.5,y:s+5.2}]:[{x:i-6.5,y:s-5.2},{x:i+6.5,y:s-5.2},{x:i,y:s+6.5}],o,n,"front"),{left:i-6.5,top:s-6.5,right:i+6.5,bottom:s+6.5};let c=2===d?13:1===d?10:11,p={x:i-c/2,y:s-c/2,width:c,height:c};return e.mark(t,1===d?"rectangle":2===d?"diamond":"ellipse",p,o,4===d?{strokeColor:l,strokeWidth:2,fillColor:e.surface,...r}:n,"front"),{left:p.x,top:p.y,right:p.x+c,bottom:p.y+c}}function dp(e,t){return e.series[t]?.name??e.title}function dh(e,t){return{scale:e,labels:e.ticks.map(a=>n8(function(e,t,a){let i=Math.max(Math.abs(t.min),Math.abs(t.max)),s=e<0,l=Math.abs(e);if(0===l)return nN("0",!1,nW(a)?a:{...a,suffix:""});if(i>=1e4&&nW(a)){let e=nj.find(e=>i>=e.size),o=Math.max(0,nE(t.step/e.size));return nN(`${nZ(l/e.size,o)}${e.letter}`,s,a)}return nN(nZ(l,t.decimals),s,a)}(a,e,t),13))}}function dg(e){let t=!0===e.stacked&&e.series.length>1,a=nG(e.unit),i=Math.max(...e.series.flatMap(e=>e.values.map(nR))),s=e.categories.map((t,i)=>e.series.map(e=>{let t=e.values[i];return{value:t,text:n8(nJ(t,a),12)}})),l=e.categories.map((t,s)=>{let l=e.series.map(e=>e.values[s]),o=l.filter(e=>e>0).reduce((e,t)=>e+t,0),r=l.filter(e=>e<0).reduce((e,t)=>e+t,0),n=e=>({value:e,text:n8(nJ(Number(e.toFixed(i)),a,i),12)});return{...o>0||0===r?{up:n(o)}:{},...r<0?{down:n(r)}:{}}}),o=t?l.flatMap(e=>[e.up?.value??0,e.down?.value??0]):e.series.flatMap(e=>e.values);return{diagram:e,stacked:t,parts:a,colors:dr(e.series.length,!1),labels:s,totals:l,domain:nT(o,!0)}}function du(e,t,a,i){let s=t;for(let t of e){let e=Math.max(s,Math.max(...t.split(/\s+/u).map(e=>n8(e,14).width))+10);for(;e<i&&n9(t,e-10,14).text.split("\n").length>a;)e+=4;s=Math.max(s,e)}return s}function df(e){let t=e.stacked?1:e.diagram.series.length,a=Math.min(96,720/e.diagram.categories.length),i=1===t?Math.max(16,Math.min(44,Math.round(.6*a))):Math.max(10,Math.round(Math.min(64,.75*a)/t)),s=Math.max(...e.stacked?e.totals.flatMap(e=>[e.up?.text.width??0,e.down?.text.width??0]):e.labels.flat().map(e=>e.text.width)),l=e=>t*e+(t-1)*2;if(1===t)return{bars:t,thickness:i,band:Math.max(l(i)+20,a,s+8)};let o=Math.max(i,s+2);return{bars:t,thickness:o,band:Math.max(l(o)+16,a)}}function dm(e,t,a,i,s=5){let l=nU(e.low,e.high,s);for(let e=0;e<2;e+=1){let e=t/(l.max-l.min),s=a(l,e),o=i(l,e);if(!s&&!o)break;l=nX(l,o,s)}return l}function dv(e,t,a){let i=Math.max(1,Math.ceil(Math.abs(a-t)/n6));return Array.from({length:i+1},(s,l)=>{let o=t+(a-t)*l/i;return{x:e*Math.cos(o),y:e*Math.sin(o)}})}function dy(e,t,a){let i=Math.cos(t),s=Math.sin(t),l=Math.max(0,Math.min(a,e.x*i+e.y*s));return Math.hypot(e.x-l*i,e.y-l*s)}let dw=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function dx(e){let t=new Date(864e5*e);return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),weekday:(t.getUTCDay()+6)%7}}function db(e,t,a=1){let i=new Date(0);return i.setUTCFullYear(e,t-1,a),Math.round(i.getTime()/864e5)}let dk=[{unit:"day",step:1},{unit:"week",step:1},{unit:"month",step:1},{unit:"quarter",step:1},{unit:"year",step:1},{unit:"year",step:2},{unit:"year",step:5},{unit:"year",step:10},{unit:"year",step:20},{unit:"year",step:25},{unit:"year",step:50}];function dM(e,t,a,i,s,l=1/0){let o=[];for(let r=function(e,t,a){let i=dx(e);switch(t){case"day":return e;case"week":return e-i.weekday;case"month":return db(i.year,i.month);case"quarter":return db(i.year,i.month-(i.month-1)%3);case"year":return db(i.year-(i.year%a+a)%a,1)}}(e,a,i);r<t;){if(o.length>=l)return;let e=function(e,t,a){let i=dx(e);switch(t){case"day":return e+1;case"week":return e+7;case"month":return db(i.year,i.month+1);case"quarter":return db(i.year,i.month+3);case"year":return db(i.year+a,1)}}(r,a,i);o.push({start:r,end:e,label:s(r)}),r=e}return o}function dC(e){return e%2==0?16:12}let dz=[0,6,12,18,24,30],d_=[1,0,-1,0],dL=[0,1,0,-1];function dB(e,t,a){return{x:e.x+d_[t]*a,y:e.y+dL[t]*a}}function dS(e){let t=e.map(e=>Math.round(100*e)/100).toSorted((e,t)=>e-t);return t.filter((e,a)=>0===a||e-t[a-1]>.01)}class dA{costs=new Float64Array(1024);reachedAt=new Float64Array(1024);orders=new Float64Array(1024);states=new Int32Array(1024);length=0;order=0;cost=0;reached=0;get size(){return this.length}push(e,t,a){this.length===this.costs.length&&this.grow();let i=this.order++,s=this.length++;for(;s>0;){let t=s-1>>1;if(!dP(e,i,this.costs[t],this.orders[t]))break;this.move(t,s),s=t}this.place(s,e,t,i,a)}pop(){let e=this.states[0];this.cost=this.costs[0],this.reached=this.reachedAt[0];let t=--this.length;if(t>0){let e=this.costs[t],a=this.reachedAt[t],i=this.orders[t],s=this.states[t],l=0;for(;;){let a=2*l+1;if(a>=t)break;let s=a+1,o=s<t&&dP(this.costs[s],this.orders[s],this.costs[a],this.orders[a])?s:a;if(!dP(this.costs[o],this.orders[o],e,i))break;this.move(o,l),l=o}this.place(l,e,a,i,s)}return e}move(e,t){this.costs[t]=this.costs[e],this.reachedAt[t]=this.reachedAt[e],this.orders[t]=this.orders[e],this.states[t]=this.states[e]}place(e,t,a,i,s){this.costs[e]=t,this.reachedAt[e]=a,this.orders[e]=i,this.states[e]=s}grow(){let e=2*this.costs.length,t=(t,a)=>{let i=a(e);return i.set(t),i};this.costs=t(this.costs,e=>new Float64Array(e)),this.reachedAt=t(this.reachedAt,e=>new Float64Array(e)),this.orders=t(this.orders,e=>new Float64Array(e)),this.states=t(this.states,e=>new Int32Array(e))}}function dP(e,t,a,i){return e<a-1e-9||1e-9>=Math.abs(e-a)&&t<i}function dV(e,t,a,i){let{box:s}=e;if(e.parallel&&s.right-s.left>=s.bottom-s.top!==i)return!1;let l=Math.max(0,e.clearance-.01),o=Math.max(0,(e.sideClearance??e.clearance)-.01);return i?Math.min(a,s.right+o)-Math.max(t,s.left-o)>.01:Math.min(a,s.bottom+l)-Math.max(t,s.top-l)>.01}function dH(e,t,a){return e.filter(({box:e,clearance:i,sideClearance:s})=>{let l=Math.max(0,i-.01),o=Math.max(0,(s??i)-.01);return a?t>e.top-l&&t<e.bottom+l:t>e.left-o&&t<e.right+o})}function dq(e){return .01>Math.abs(e.from.y-e.to.y)}function dF(e,t,a,i=5){let s=.01>Math.abs(e.y-t.y);if(s!==dq(a)||(s?Math.abs(e.y-a.from.y):Math.abs(e.x-a.from.x))>=i)return!1;let[l,o]=s?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],[r,n]=s?[Math.min(a.from.x,a.to.x),Math.max(a.from.x,a.to.x)]:[Math.min(a.from.y,a.to.y),Math.max(a.from.y,a.to.y)];return Math.min(o,n)-Math.max(l,r)>-i}function dI(e,t,a){if(!a)return!1;let i=.01>Math.abs(e.y-t.y);return i===dq(a)&&(i?.01>Math.abs(e.y-a.from.y):.01>Math.abs(e.x-a.from.x))}let dE={best:new Float64Array(0),previous:new Int32Array(0),stamp:new Int32Array(0),epoch:0,steps:new Float64Array(0),stepStamp:new Int32Array(0),estimates:new Float64Array(0),estimateStamp:new Int32Array(0),gridEpoch:0};function dO(e){let t=function(e){let t;for(let a of e.sources)for(let i of e.targets){if(a.direction!==i.direction)continue;let s=a.direction%2==0?(i.x-a.x)*d_[a.direction]:(i.y-a.y)*dL[a.direction];if(!(a.direction%2==0?.01>Math.abs(a.y-i.y):.01>Math.abs(a.x-i.x))||s<(a.lead??8)+dC(i.direction))continue;let l=e.obstacles.some(e=>!e.own&&function(e,t,a){let i=.01>Math.abs(t.y-a.y);return 0!==dH([e],i?t.y:t.x,i).length&&dV(e,i?Math.min(t.x,a.x):Math.min(t.y,a.y),i?Math.max(t.x,a.x):Math.max(t.y,a.y),i)}(e,a,i))||e.routed.some(t=>!e.trunks?.has(t)&&!e.joins?.has(t)&&dF(a,i,t)),o=a.cost+i.cost+s;l||t&&!(o<t.cost)||(t={cost:o,points:[a,i]})}return t?.points}(e);if(t)return t;let a=[...e.sources,...e.targets],i=(e,t)=>({left:Math.min(...a.map(e=>e.x))-e,right:Math.max(...a.map(e=>e.x))+e,top:Math.min(...a.map(e=>e.y))-t,bottom:Math.max(...a.map(e=>e.y))+t}),s={separation:5,lanes:e.lanes,splits:[.5],crossingCost:e.crossingCost??30},{behind:l}=e,o=void 0===l?s:{...s,behind:l},r={...o,separation:2.5,lanes:e.denseLanes,splits:[.25,.5,.75],crossingCost:2},n=i(200,90),d=i(800,360),{reach:c}=e,p=c?{left:Math.min(d.left,c.left),right:Math.max(d.right,c.right),top:Math.min(d.top,e.top),bottom:Math.max(d.bottom,e.bottom)}:d,h=e.budget,g=e.kinkBudget,u=(t,a,i)=>{if(h&&h.remaining<=0)return;let s=function(e,t,a){var i;let{routed:s}=e,{separation:l}=a,o=e.pastTrunk??new Map,r=[...e.obstacles,...o.keys()],n=e.sources.map(e=>dB(e,e.direction,e.lead??8)),d=e.targets.map(e=>dB(e,(e.direction+2)%4,dC(e.direction))),c=[...e.sources,...e.targets,...n,...d],p=8+dz.at(-1)+10,h=r.filter(({box:e})=>e.right>=t.left-p&&e.left<=t.right+p&&e.bottom>=t.top-p&&e.top<=t.bottom+p),g=[...h.filter(({box:e})=>e.bottom>=t.top&&e.top<=t.bottom).flatMap(({box:e,clearance:t,sideClearance:a})=>[e.left-Math.max(a??t,5),e.right+Math.max(a??t,5)]),...(e.besides??[]).filter(e=>e.bottom>=t.top&&e.top<=t.bottom).flatMap(e=>[e.left-15,e.right+15])].filter(e=>e>=t.left&&e<=t.right),u=c.map(e=>e.x),f=Math.max(t.left,Math.min(...u,...g))-8,m=Math.min(t.right,Math.max(...u,...g))+8,v=dS([...u,...g,...dz.flatMap(e=>[f-e,m+e])]),y=dS([...v,...v.slice(1).flatMap((e,t)=>{let i=v[t];return e-i>4*l?a.splits.map(t=>i+(e-i)*t):[]})]),w=dS([...c.map(e=>e.y),...a.lanes.filter(e=>e>=t.top&&e<=t.bottom)]).filter(t=>t>=e.top&&t<=e.bottom),x=new Map(y.map((e,t)=>[e,t])),b=new Map(w.map((e,t)=>[e,t])),k=e=>{let t=x.get(Math.round(100*e.x)/100),a=b.get(Math.round(100*e.y)/100);return void 0===t||void 0===a?void 0:a*y.length+t},M=[],C=e=>M[e]??={x:y[e%y.length],y:w[Math.floor(e/y.length)]},z=p+12,_=s.filter(e=>Math.max(e.from.x,e.to.x)>=t.left-z&&Math.min(e.from.x,e.to.x)<=t.right+z&&Math.max(e.from.y,e.to.y)>=t.top-z&&Math.min(e.from.y,e.to.y)<=t.bottom+z),L=_.filter(dq),B=_.filter(e=>!dq(e)),S=(e.edges??[]).filter(e=>e.right>=t.left&&e.left<=t.right&&e.bottom>=t.top-7&&e.top<=t.bottom+7),A=(e.sides??[]).filter(e=>e.right>=t.left-15&&e.left<=t.right+15&&e.bottom>=t.top&&e.top<=t.bottom),P=new Map,V=new Map,H=(t,a)=>{let i=a?P:V,s=i.get(t);if(!s){let[o,r]=a?[L,B]:[B,L],n=e=>Math.abs(a?e.from.y-t:e.from.x-t);s={obstacles:dH(h,t,a),routed:[...o.filter(e=>n(e)<l),...r.filter(e=>a?t>Math.min(e.from.y,e.to.y)&&t<Math.max(e.from.y,e.to.y):t>Math.min(e.from.x,e.to.x)&&t<Math.max(e.from.x,e.to.x))],beside:o.filter(t=>12>n(t)&&!e.kin?.has(t)),edges:a?S.filter(e=>t<=e.top&&e.top-t<7||t>=e.bottom&&t-e.bottom<7):A.filter(e=>t<=e.left&&e.left-t<14.99||t>=e.right&&t-e.right<14.99)},i.set(t,s)}return s},q=(e,t)=>{let a=.01>Math.abs(e.y-t.y);return H(a?e.y:e.x,a)},F=(t,a,i=!1,s=!1,r=q(t,a))=>{let n=.01>Math.abs(t.y-a.y),d=n?Math.min(t.x,a.x):Math.min(t.y,a.y),c=n?Math.max(t.x,a.x):Math.max(t.y,a.y);return!r.obstacles.some(e=>!(i&&e.own)&&!(s&&dI(t,a,o.get(e)))&&dV(e,d,c,n))&&!r.routed.some(o=>!(s&&e.trunks?.has(o))&&!(i&&e.joins?.has(o))&&dF(t,a,o,l))},{behind:I}=a,E=e.targets.map(e=>e.cost+dC(e.direction)),O=Float64Array.from(d,e=>e.x),U=Float64Array.from(d,e=>e.y),X=(e,t,a)=>{let i=1/0;for(let s=0;s<O.length;s+=1){let l=O[s]-e,o=U[s]-t,r=l*d_[a]+o*dL[a],n=Math.abs(l*dL[a])+Math.abs(o*d_[a])<.01?r>-.01?0:2:r>-.01?1:2,d=Math.abs(l)+Math.abs(o)+24*n+E[s];d<i&&(i=d)}return i},{steps:T,stepStamp:$,estimates:Y,estimateStamp:G,gridEpoch:R}=(i=y.length*w.length*4,dE.stepStamp.length<i&&(dE.steps=new Float64Array(i),dE.stepStamp=new Int32Array(i),dE.estimates=new Float64Array(i),dE.estimateStamp=new Int32Array(i)),dE.gridEpoch>=0x40000000&&(dE.stepStamp.fill(0),dE.estimateStamp.fill(0),dE.gridEpoch=0),dE.gridEpoch+=1,dE),D=new Map,Z=new Map;e.targets.forEach((e,t)=>{let a=d[t],i=k(a);if(void 0===i||!F(a,e,!0))return;D.set(i,[...D.get(i)??[],e]);let s=4*i+e.direction;Z.set(s,Math.min(Z.get(s)??1/0,E[t]))});let j=(e,t,a,i)=>{let s=4*e+a;if(!i&&$[s]===R)return T[s];let l=N(C(e),C(t),a,i)??1/0;return i||($[s]=R,T[s]=l),l},N=(t,i,s,l)=>{let o=H(s%2==0?t.y:t.x,s%2==0);if(!F(t,i,!1,l,o))return;let r=2===s?a.crossingCost*(e.backCrossingFactor??8):a.crossingCost;return Math.abs(i.x-t.x)+Math.abs(i.y-t.y)+(void 0===I?0:4*Math.max(0,Math.min(I,Math.max(t.x,i.x))-Math.min(t.x,i.x)))+(s%2==0?2:1)*((e,t,a=q(e,t))=>{if(0===a.edges.length)return 0;let i=.01>Math.abs(e.y-t.y),s=i?Math.min(e.x,t.x):Math.min(e.y,t.y),l=i?Math.max(e.x,t.x):Math.max(e.y,t.y),o=0;for(let e of a.edges)o+=i?Math.max(0,Math.min(l,e.right)-Math.max(s,e.left)):Math.max(0,Math.min(l,e.bottom)-Math.max(s,e.top));return o})(t,i,o)+(r?((t,a,i=q(t,a))=>{let s=0;for(let l of i.routed)(function(e,t,a){let i=.01>Math.abs(e.y-t.y);if(i===dq(a))return!1;let[s,l,o,r]=i?[e,t,a.from,a.to]:[a.from,a.to,e,t],n=o.x,d=s.y;return n>Math.min(s.x,l.x)+.01&&n<Math.max(s.x,l.x)-.01&&d>Math.min(o.y,r.y)+.01&&d<Math.max(o.y,r.y)-.01})(t,a,l)&&(s+=e.lastRuns?.has(l)?4:1);return s})(t,i,o)*r:0)+2*((e,t,a=q(e,t))=>{if(0===a.beside.length)return 0;let i=.01>Math.abs(e.y-t.y),s=i?Math.min(e.x,t.x):Math.min(e.y,t.y),l=i?Math.max(e.x,t.x):Math.max(e.y,t.y),o=0;for(let e of a.beside){let[t,a]=i?[Math.min(e.from.x,e.to.x),Math.max(e.from.x,e.to.x)]:[Math.min(e.from.y,e.to.y),Math.max(e.from.y,e.to.y)];o+=Math.max(0,Math.min(l,a)-Math.max(s,t))}return o})(t,i,o)},W=y.length,J=w.length;return(t,a,i)=>{var s;let l,{best:o,previous:r,stamp:d,epoch:c}=(s=y.length*w.length*12,dE.stamp.length<s&&(dE.best=new Float64Array(s),dE.previous=new Int32Array(s),dE.stamp=new Int32Array(s)),dE.epoch>=0x40000000&&(dE.stamp.fill(0),dE.epoch=0),dE.epoch+=1,dE),p=e=>d[e]===c?o[e]:1/0,h=(e,t)=>{let a=e%3;if(0===a)return!1;let i=e-a,s=2!==a||Z.has(i/3)?0:40;return p(i+0)<=t+s+1e-9||2===a&&p(i+1)<=t+s+1e-9},g=new dA,u=new Map;e.sources.forEach((e,t)=>{let a=n[t],i=k(a);if(void 0===i||!F(e,a,!0,!0))return;let s=(4*i+e.direction)*3+0,l=e.cost+(e.lead??8);l<p(s)&&(d[s]=c,o[s]=l,r[s]=-1,u.set(s,e),g.push(l+X(a.x,a.y,e.direction),l,s))});let f=a,m=(e,t,a,i,s)=>{let l;if(t>=p(e)-1e-9||h(e,t))return;let n=(G[l=4*i+s]!==R&&(G[l]=R,Y[l]=X(y[i%y.length],w[Math.floor(i/y.length)],s)),Y[l]);e%3==2&&(n=Math.min(40+n,Z.get(4*i+s)??1/0)),t+n>=f||(d[e]=c,o[e]=t,r[e]=a,u.delete(e),g.push(t+n,t,e))},v=0;for(;g.size>0&&v++<i;){let e=g.pop(),a=g.cost,i=g.reached;if(a>=f)break;let s=p(e);if(i>s+1e-6||h(e,s))continue;let o=e%3,r=Math.floor(e/12),n=Math.floor(e/3)%4,d=r%W,c=(r-d)/W,u=y[d],v=w[c],x=40*(2===o);for(let t of D.get(r)??[]){if((t.direction+2)%4===n)continue;let a=s+t.cost+dC(t.direction)+(t.direction===n?0:24+x);a<f&&(l={state:e,port:t},f=a)}let b=d+d_[n],k=c+dL[n];if(2!==o&&b>=0&&b<W&&k>=0&&k<J){let t=k*W+b,a=(4*t+n)*3+o;if(s+(Math.abs(y[b]-u)+Math.abs(w[k]-v))<p(a)-1e-9){let i=j(r,t,n,0===o);1/0!==i&&m(a,s+i,e,t,n)}}for(let a=1;a<=3;a+=2){let i=(n+a)%4,l=s+24+x,o=0,r=d,h=c;for(;;){let a=r+d_[i],s=h+dL[i];if(a<0||a>=W||s<0||s>=J)break;let n=Math.abs(y[a]-y[r])+Math.abs(w[s]-w[h]),d=s*W+a,c=(4*d+i)*3;if(Math.min(p(c),p(c+1))<=l+n+1e-9)break;let g=j(h*W+r,d,i,!1);if(1/0===g)break;l+=g,o+=n,r=a,h=s;let u=!t||o>=28;if(m(c+(u?1:2),l,e,d,i),u)break}}}if(!l)return{expansions:v};let x=f,b=[l.port],M=l.state;for(b.push(dB(l.port,(l.port.direction+2)%4,dC(l.port.direction)));M>=0;){b.push(C(Math.floor(M/12)));let e=u.get(M);if(e){b.push(e);break}M=r[M]}return{points:function(e){let t=[];for(let a of e){let e=t.at(-1);if(e&&.01>Math.abs(e.x-a.x)&&.01>Math.abs(e.y-a.y))continue;let i=t.at(-2);i&&e&&(.01>Math.abs(i.x-e.x)&&.01>Math.abs(e.x-a.x)||.01>Math.abs(i.y-e.y)&&.01>Math.abs(e.y-a.y))?t[t.length-1]=a:t.push(a)}return t}(b.toReversed()),cost:x,expansions:v}}}(e,t,a),l=s(!1,1/0,Math.min(12e3,e.limit??12e3));if(h&&(h.remaining-=l.expansions),!l.points)return;let o=dU(l.points);if(!i||!g||g.remaining<=0||0===o)return l.points;let r=s(!0,l.cost+o-1e-6,Math.min(12e3,2*l.expansions,g.remaining));return g.remaining-=r.expansions,r.points??l.points};return(e.wide?void 0:u(n,o,!0))??u(p,o,!0)??u(p,r,!1)}function dU(e){let t=dX(e),a=0;for(let{from:e,to:i}of t.slice(1,-1))Math.abs(i.x-e.x)+Math.abs(i.y-e.y)<28&&(a+=40);return a}function dX(e){return e.slice(1).map((t,a)=>({from:e[a],to:t}))}function dT(e,t,a){let i=e.at(-1),s=e.at(-2),l=Math.min(1,t/Math.max(Math.abs(i.x-s.x)+Math.abs(i.y-s.y),.01)),o={x:i.x+(s.x-i.x)*l,y:i.y+(s.y-i.y)*l};return{left:Math.min(o.x,i.x)-a,right:Math.max(o.x,i.x)+a,top:Math.min(o.y,i.y)-a,bottom:Math.max(o.y,i.y)+a}}let d$=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dY=(e,t=2)=>String(e).padStart(t,"0");function dG(e){let t,a=new Map;for(let t of[...e.events.flatMap(e=>[e.date,e.end]),e.today]){let e=void 0===t?void 0:el(t);void 0!==t&&e&&a.set(t,e)}if(0===a.size)return{events:new Map};let i=new Set([...a.values()].flatMap(e=>void 0===e.offsetMinutes?[]:[e.offsetMinutes])),s=1===i.size?[...i][0]??0:0,l=i.size>0?function(e){if(0===e)return"UTC";let t=Math.abs(e);return`UTC${e<0?"-":"+"}${dY(Math.floor(t/60))}:${dY(t%60)}`}(s):void 0,o=new Map([...a].map(([e,t])=>[e,function(e,t){if("instant"!==e.granularity)return{granularity:e.granularity,...e.fields};let a=new Date(e.start+6e4*t);return{granularity:"instant",year:a.getUTCFullYear(),month:a.getUTCMonth()+1,day:a.getUTCDate(),hour:a.getUTCHours(),minute:a.getUTCMinutes(),second:a.getUTCSeconds(),millisecond:a.getUTCMilliseconds()}}(t,s)])),r=[...o.values()],n=r[0],d=r.some(e=>"instant"===e.granularity)&&r.every(e=>("day"===e.granularity||"instant"===e.granularity)&&e.year===n.year&&e.month===n.month&&e.day===n.day),c=r.some(e=>e.year!==n.year),p=r.some(e=>"instant"===e.granularity&&e.second>0),h=r.some(e=>"instant"===e.granularity&&e.millisecond>0),g=e=>`${dY(e.hour)}:${dY(e.minute)}${p||h?`:${dY(e.second)}`:""}${h?`.${dY(e.millisecond,3)}`:""}`,u=e=>`${d$[e.month-1]} ${e.day}`,f=(e,t)=>{if(d)return"instant"===e.granularity?g(e):u(e);let a=t?` ${e.year}`:"";switch(e.granularity){case"year":return String(e.year);case"month":return`${d$[e.month-1]}${a}`;case"day":return`${u(e)}${t?`, ${e.year}`:""}`;case"instant":return`${u(e)}${t?`, ${e.year}`:""}, ${g(e)}`}},m=(e,t,a)=>{if(d)return`${f(e,!1)}–${f(t,!1)}`;if(e.year!==t.year)return`${f(e,!0)} – ${f(t,!0)}`;let i=a&&"year"!==t.granularity?`, ${t.year}`:"";return"day"===e.granularity&&"day"===t.granularity&&e.month===t.month?`${u(e)}–${t.day}${i}`:"month"===e.granularity&&"month"===t.granularity?`${d$[e.month-1]} – ${d$[t.month-1]}${a?` ${t.year}`:""}`:`${f(e,!1)} – ${f(t,!1)}${i}`},v=new Map;for(let a of eh(e)){let e=void 0===a.date?void 0:o.get(a.date);if(!e)continue;let i=void 0===a.end?void 0:o.get(a.end),s=e.year!==t?.year||"month"===e.granularity&&"month"!==t.granularity;v.set(a.id,i?m(e,i,s):f(e,s)),t=i??e}let y=d?`${u(n)}, ${n.year}${l?` \xb7 ${l}`:""}`:l?`Times in ${l}`:void 0,w=void 0===e.today?void 0:o.get(e.today);return{...y?{header:y}:{},events:v,...w?{today:`Today \xb7 ${f(w,c)}`}:{}}}let dR={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:2629746e3,year:31556952e3},dD=v.ink,dZ="#4c4639",dj="#cbbfa9",dN="#c0392b",dW=[12,24];function dJ(e,t){let a=[e.left-8,e.right+8];return t?[e.left-15,...a,e.right+15]:a}let dK=[0,-6,6],dQ=[-3,3];function d1(e,t){return{text:e,width:Math.ceil(aE(e,t)),height:Math.ceil(e.split("\n").length*t*1.35)}}function d0(e,t,a){let i=d1(e,a);return i.width<=t?i:d1(aT(e,Math.max(1,t),a),a)}function d2(e){return Math.round(100*e)/100}class d3{elements=[];layers={back:[],middle:[],front:[]};textBoxes=[];push(e,t){this.elements.push(e),this.layers[t].push(e.id)}zOrder(){return[...this.layers.back,...this.layers.middle,...this.layers.front]}text(e,t,a,i,s,l,o="left",r={}){let n={left:a,top:i,right:a+t.width,bottom:i+t.height};return this.push({type:"text",id:e,x:d2(a+t.width/2),y:d2(i+t.height/2),text:t.text,fontSize:s,maxWidth:t.width,textAlign:o,textColor:l,...r},"front"),this.textBoxes.push(n),n}line(e,t,a,i="back"){let[s,l,...o]=t.map(e=>({x:d2(e.x),y:d2(e.y)}));this.push({type:"line",id:e,points:[s,l,...o],roughness:0,strokeWidth:1,...a},i)}mark(e,t,a,i,s){this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:"gantt-mark",shape:t,x:d2(a.x),y:d2(a.y),width:d2(d2(a.x+a.width)-d2(a.x)),height:d2(d2(a.y+a.height)-d2(a.y)),label:i,roughness:0,fillStyle:"solid",strokeWidth:1,...s},"middle")}breakRulesUnderText(e,t=this.textBoxes){let a=nQ(this.elements,t,e);if(!a.size)return;let i=this.elements.flatMap(e=>a.get(e.id)??[e]);for(let e of(this.elements.splice(0,this.elements.length,...i),Object.values(this.layers))){let t=e.flatMap(e=>a.get(e)?.map(e=>e.id)??[e]);e.splice(0,e.length,...t)}}bounds(){let e=1/0,t=1/0,a=-1/0,i=-1/0,s=(s,l,o,r)=>{e=Math.min(e,s),t=Math.min(t,l),a=Math.max(a,o),i=Math.max(i,r)};for(let e of this.elements)if("line"===e.type||"arrow"===e.type)for(let t of e.points)s(t.x,t.y,t.x,t.y);else if("text"===e.type){let t=e.maxWidth??aE(e.text,e.fontSize),a=e.text.split("\n").length*e.fontSize*1.35;s(e.x-t/2,e.y-a/2,e.x+t/2,e.y+a/2)}else s(e.x,e.y,e.x+e.width,e.y+e.height);return{left:e,top:t,right:a,bottom:i}}}let d5=[7,19,31],d4=[6,16,26];function d6(e,t,a,i,s=[]){let l=(e.top+e.bottom)/2,o=e=>40*(1===e!==a);if(t){let t=(e.left+e.right)/2,a=(e.right-e.left)/4;return[{x:e.right,y:l,direction:0,cost:2},{x:t,y:e.bottom,direction:1,cost:o(1)},{x:t,y:e.top,direction:3,cost:o(3)},...[-1,1].map(t=>({x:e.right-a,y:l+t*a,direction:0,cost:8})),{x:t+a,y:e.bottom-a,direction:1,cost:6+o(1)},{x:t+a,y:e.top+a,direction:3,cost:6+o(3)},{x:t-a,y:e.bottom-a,direction:1,cost:16+o(1)},{x:t-a,y:e.top+a,direction:3,cost:16+o(3)},...s.filter(t=>t>e.left+2&&t<e.right-2).flatMap(e=>{let i=2*a-Math.abs(e-t),s=(e<t?16:6)+3;return[{x:e,y:l+i,direction:1,cost:s+o(1)},{x:e,y:l-i,direction:3,cost:s+o(3)}]})]}let r=d4.filter(t=>e.right-t>=e.left+3),n=Array.from({length:6},(t,a)=>e.right-6-2.5*a).filter(t=>t>=e.left+2),d=r.length>=3?r.map(t=>e.right-t):n.length?n:[(e.left+e.right)/2],c=void 0!==i&&i>e.left+1&&i<e.right-1?[i]:[],p=s.filter(t=>t>=Math.max(e.left+2,e.right-32)&&t<=e.right-2&&d.every(e=>Math.abs(e-t)>=1));return[...c.flatMap(t=>[{x:t,y:e.bottom,direction:1,cost:o(1)},{x:t,y:e.top,direction:3,cost:o(3)}]),...d.map((t,a)=>({x:t,y:e.bottom,direction:1,cost:o(1)+3*a})),...p.flatMap(t=>[{x:t,y:e.bottom,direction:1,cost:o(1)+3},{x:t,y:e.top,direction:3,cost:o(3)+3}]),...e.right-e.left>=8?[{x:e.right,y:l,direction:0,cost:2}]:[],...d.map((t,a)=>({x:t,y:e.top,direction:3,cost:o(3)+3*a}))]}function d7(e,t=!1){let a=!t&&.01>Math.abs(e.at(-1).y-e.at(-2).y);return dT(e,a?40:12,4.5)}function d8(e){let t=new Set;for(let a of dX(e)){let e=ce(a);if(t.has((e+2)%4))return!0;t.add(e)}return!1}function d9(e,t,a,i=!1){let s=d7(t,i),l=dX(e),o=dX(t),r=a.leaving&&dI(l[0].from,l[0].to,o[0])?d7(t,!0):s,n=a.arriving&&function(e,t){let[a,i]=[e.at(-1),t.at(-1)];return .01>Math.hypot(a.x-i.x,a.y-i.y)}(e,t),d=0;return l.forEach((e,t)=>{let i=t===l.length-1;!(n&&i)&&ct(e,0===t?r:s)&&(d+=1),o.forEach((i,s)=>{!(a.leaving&&0===t&&0===s||a.arriving&&t===l.length-1&&s===o.length-1)&&cl(e.from,e.to,i,2)&&function(e,t){let a=.01>Math.abs(e.from.y-e.to.y),i=e=>a?[Math.min(e.from.x,e.to.x),Math.max(e.from.x,e.to.x)]:[Math.min(e.from.y,e.to.y),Math.max(e.from.y,e.to.y)],[s,l]=i(e),[o,r]=i(t);return Math.min(l,r)-Math.max(s,o)}(e,i)>1&&(d+=1)})}),d}function ce({from:e,to:t}){return .01>Math.abs(e.y-t.y)?t.x>e.x?0:2:t.y>e.y?1:3}function ct(e,t){let{from:a,to:i}=e;return Math.max(a.x,i.x)>t.left&&Math.min(a.x,i.x)<t.right&&Math.max(a.y,i.y)>t.top&&Math.min(a.y,i.y)<t.bottom}function ca(e){return e.replaceAll("%","%25").replaceAll(":","%3A")}let ci=[2.5,2,.3,.05,0];function cs(e,t,a=1){return[e,...Array.from({length:Math.max(0,Math.floor(t/a))},(e,t)=>(t+1)*a).flatMap(t=>[e+t,e-t])]}function cl(e,t,a,i){let s=.01>Math.abs(e.y-t.y);if(s!==.01>Math.abs(a.from.y-a.to.y)||(s?Math.abs(e.y-a.from.y):Math.abs(e.x-a.from.x))>=i)return!1;let[l,o]=s?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],[r,n]=s?[Math.min(a.from.x,a.to.x),Math.max(a.from.x,a.to.x)]:[Math.min(a.from.y,a.to.y),Math.max(a.from.y,a.to.y)];return Math.min(o,n)-Math.max(l,r)>0}let co={forward:!0,clear:!0},cr={forward:!1,clear:!1},cn={forward:!1,clear:!0};function cd(e,t,{forward:a,clear:i}){var s;let l,o,r,n,d,c,p,h,g,u=i?32:24,f=new Map(e.tasks.map(e=>[e.id,tc(e)])),m=th(e),v=void 0===e.today?void 0:tr(e.today),y=[...f.values()],w=Math.min(...y.map(e=>e.start),v??1/0),x=Math.max(...y.map(e=>e.milestone?e.start+1:e.end),void 0===v?-1/0:v+1),b=(l=new Map(e.tasks.map(e=>[e.id,tc(e)])),o=th(e).flatMap((e,t)=>{if(void 0===e.phase)return[];let a=e.tasks.map(e=>l.get(e.id));return[{index:t,name:e.phase,start:Math.min(...a.map(e=>e.start)),end:Math.max(...a.map(e=>Math.max(e.end,e.start+1)))}]}),r=e=>`\0phase:${e}`,n=(e,t,a,i)=>({id:e,label:t,date:tn(a),...i-a>1?{end:tn(i-1)}:{}}),c=dG(d={id:e.id,title:e.title,type:"timeline",events:[...o.map(e=>n(r(e.index),e.name,e.start,e.end)),...e.tasks.map(e=>{let t=l.get(e.id);return n(e.id,e.label,t.start,t.end)})],...e.today?{today:e.today}:{},style:e.style}),p=new Set(d.events.flatMap(e=>[e.date,e.end].flatMap(e=>void 0===e?[]:[e.slice(0,4)]))),h=e=>{if(p.size<2)return c.events.get(e)??"";let t=d.events.find(t=>t.id===e);return dG({...d,events:[t]}).events.get(e)??""},{tasks:new Map(e.tasks.map(e=>{let t=h(e.id);return[e.id,void 0===e.progress?t:`${t} \xb7 ${e.progress}%`]})),phases:new Map(o.map(e=>[e.name,h(r(e.index))])),...c.today?{today:c.today}:{}}),k=(e,a)=>{let i=d0(e.label,260,14);return{task:e,schedule:f.get(e.id),color:a,label:i,caption:d1(b.tasks.get(e.id),12),height:Math.max(t,i.height+16)}},M=[],C=0;m.forEach((e,t)=>{let a=n0[t%n0.length];if(void 0!==e.phase){let a=d0(e.phase,220,15),i=d1(b.phases.get(e.phase),12),s=Math.max(40,a.height+16);M.push({kind:"phase",top:C,height:s,phase:{index:t,name:a,caption:i}}),C+=s}for(let t of e.tasks){let e=k(t,a);M.push({kind:"task",top:C,height:e.height,task:e}),C+=e.height}});let z=C,_=M.filter(e=>"task"===e.kind).length,L=12*!!M.some(e=>"phase"===e.kind),B=Math.max(Math.max(...M.map(e=>e.task?L+e.task.label.width:0))+20+Math.max(...M.map(e=>(e.task?e.task.caption:e.phase.caption).width)),...M.map(e=>e.phase?e.phase.name.width+10+e.phase.caption.width:0)),S=-16-B,A=function(e,t,a=960){let i=Math.max(t,e+1);for(let{unit:t,step:s}of dk){let l="year"===t&&50===s,o=dM(e,i,t,s,e=>(function(e,t,a){let i=dx(e);switch(t){case"day":return String(i.day);case"week":return`${dw[i.month-1]} ${i.day}`;case"month":return dw[i.month-1];case"quarter":return`Q${Math.floor((i.month-1)/3)+1}`;case"year":return 1===a?String(i.year):`${i.year}–${String(i.year+a-1)}`}})(e,t,s),l?1/0:36);if(!o)continue;let r=o[0].start,n=o.at(-1).end,d=Math.min(56,a/(n-r));if(!o.every(e=>aE(e.label,12)+8<=(e.end-e.start)*d)&&!l)continue;let c=("year"===t?[]:"day"===t?dM(r,n,"month",1,e=>`${dw[dx(e).month-1]} ${dx(e).year}`):dM(r,n,"year",1,e=>String(dx(e).year)))??[],p=new Set(o.map(e=>e.start)),h="month"===t?"week":"quarter"===t?"month":void 0,g=h&&("week"===h?7:28)*d>=12?(dM(r,n,h,1,()=>"")??[]).map(e=>e.start).filter(e=>e>r&&!p.has(e)):[];return{unit:t,step:s,start:r,end:n,pxPerDay:d,cells:o,minor:g,bands:c.map(e=>({start:Math.max(e.start,r),end:Math.min(e.end,n),label:e.label}))}}throw Error("unreachable: half-century ticks always fit")}(w,x,Math.max(640,Math.min(960,2.2*(Math.ceil(27*!!e.title.length)+14+18*(void 0!==v)+44+z+44*(_>=16)+80)-80-B-16-u))),P=Math.max(0,...y.map(e=>e.milestone?15-(e.start+.5-A.start)*A.pxPerDay:0)),V=e=>u+P+(e-A.start)*A.pxPerDay,H=V(A.end),q=new d3,F=[{box:{left:S-32,right:-2,top:0,bottom:z},clearance:0}],I=new Map;for(let e of M){if("phase"!==e.kind)continue;let{index:t,name:a,caption:i}=e.phase,s=e.top+e.height/2,l={groupIds:[`gantt:phase:${t}`]};q.text(`gantt:phase:${t}`,a,S,s-a.height/2,15,dD,"left",l),q.text(`gantt:phase-caption:${t}`,i,-16-i.width,s-i.height/2,12,dZ,"right",l)}for(let e of M){if("task"!==e.kind)continue;let{task:t,schedule:a,color:i,label:s,caption:l}=e.task,o=e.top+e.height/2,r=a.milestone?V(a.start+.5)-13:V(a.start),n=a.milestone?V(a.start+.5)+13:Math.max(V(a.end),V(a.start)+2),d=`gantt:task:${t.id}`,c={groupIds:[d]},p={groupIds:[`gantt:row:${t.id}`]},h=a.milestone?{left:r,right:n,top:o-13,bottom:o+13}:{left:r,right:n,top:o-11,bottom:o+11};I.set(t.id,h),q.mark(d,a.milestone?"diamond":"rectangle",{x:h.left,y:h.top,width:h.right-h.left,height:h.bottom-h.top},t.label,a.milestone?{fillColor:dD,strokeColor:dD,...c}:{fillColor:i,strokeColor:i,...c});let g=t.progress??0,u=function(e){let t=t=>{let a=Number.parseInt(e.slice(t,t+2),16);return Math.round(a+(Number.parseInt(dD.slice(t,t+2),16)-a)*.35).toString(16).padStart(2,"0")};return`#${t(1)}${t(3)}${t(5)}`}(i),f=h.left+(h.right-h.left)*g/100;!a.milestone&&f-h.left>=1&&q.mark(`gantt:progress:${t.id}`,"rectangle",{x:h.left,y:h.top,width:f-h.left,height:h.bottom-h.top},`${t.label} \xb7 ${g}%`,{fillColor:u,strokeColor:u,...c}),q.text(`gantt:label:${t.id}`,s,S+L,o-s.height/2,14,dD,"left",p),q.text(`gantt:caption:${t.id}`,l,-16-l.width,o-l.height/2,12,dZ,"right",p)}let E=[...I].filter(([e])=>!f.get(e).milestone),O=new Map(M.flatMap((e,t)=>e.task?[[e.task.task.id,t]]:[])),U=M.slice(1).map(e=>e.top),X=U.flatMap(e=>dK.map(t=>e+t)),T=M.slice(1).flatMap(e=>[...dK,...dQ].map(t=>e.top+t)),$=e.tasks.flatMap((e,t)=>(e.dependsOn??[]).map((a,i)=>({from:a,to:e.id,taskIndex:t,order:i}))).toSorted((e,t)=>Math.abs(O.get(e.to)-O.get(e.from))-Math.abs(O.get(t.to)-O.get(t.from))||O.get(e.to)-O.get(t.to)||O.get(e.from)-O.get(t.from)||e.taskIndex-t.taskIndex||e.order-t.order),Y=void 0===v?void 0:V(v+.5),G=void 0===Y?[]:[{from:{x:Y,y:0},to:{x:Y,y:z}}],R=$.map(()=>void 0),D=[...G],Z=new Map,j=new Map,N=new Map,W=[],J=[],K=new Set,Q=new Set,ee=new Map,et=new Set,ea=Math.min(16e4,Math.max(12e3,6e3*$.length)),ei={remaining:ea},es=Math.min(48e3,1500*$.length),el={remaining:es},eo=Math.min(24e3,1e3*$.length),er={remaining:eo},en=0,ed=0,ec=new WeakSet,ep=new Map;for(let{from:e,to:t}of $)ep.set(e,(ep.get(e)??new Set).add(O.get(t)>O.get(e)?1:3));let eh=(e,t)=>{let a=dX(t);D.push(...a),K.add(a.at(-1)),Q.add(a[0]),j.set(e.from,[...j.get(e.from)??[],...a]),N.set(e.to,[...N.get(e.to)??[],...a]);let i={box:d7(t,!0),clearance:0};W.push({from:e.from,trunk:a[0],keepOut:{box:d7(t),clearance:0},arrowhead:i}),J.push({from:e.from,trunk:a[0],keepOut:{box:dT(t,.01>Math.abs(t.at(-1).y-t.at(-2).y)?40:12,6),clearance:0},arrowhead:i}),ee.set(e.to,ee.get(e.to)-1),Z.set(e.to,[...Z.get(e.to)??[],t.at(-1)])},eg=()=>{for(let e of(D.splice(0,D.length,...G),[Z,j,N,ee]))e.clear();for(let e of(W.length=0,J.length=0,K.clear(),Q.clear(),$))ee.set(e.to,(ee.get(e.to)??0)+1);$.forEach((e,t)=>{let a=R[t];a&&eh(e,a)})};eg();let eu=(e,t=ei)=>{var s;let l,o,r,n;en+=1;let d=Math.min(12e3,t.remaining),c={remaining:d},p=I.get(e.from),h=I.get(e.to),g=f.get(e.from).milestone,u=f.get(e.to).milestone,m=O.get(e.to)>O.get(e.from),v=e=>(e.left+e.right)/2,y=t=>(O.get(t)-O.get(e.from))*(O.get(e.to)-O.get(t))>0,w=Z.get(e.to)??[],x=function(e,t,a,i=[],s=!1){let l=(e.top+e.bottom)/2,o=e=>40*(1===e!==a),r=e=>4*(-1===e!==a);if(t){let t=(e.left+e.right)/2,a=(e.right-e.left)/4,n=i=>(e.bottom-e.top)/2*(1-Math.abs(i-t)/(2*a)),d=i.filter(e=>Math.abs(e-t)>=1&&Math.abs(e-t)<=2*a-4),c=e=>24+6*(Math.abs(e-t)>a);return[{x:e.left,y:l,direction:0,cost:16*!!s},{x:t,y:e.top,direction:1,cost:2+o(1)},{x:t,y:e.bottom,direction:3,cost:2+o(3)},...[-1,1].map(t=>({x:e.left+a,y:l+t*a,direction:0,cost:s?r(t):16})),{x:t-a,y:e.top+a,direction:1,cost:16+o(1)},{x:t-a,y:e.bottom-a,direction:3,cost:16+o(3)},...d.flatMap(e=>[{x:e,y:l-n(e),direction:1,cost:c(e)+o(1)},{x:e,y:l+n(e),direction:3,cost:c(e)+o(3)}])]}let n=d5.filter(t=>e.left+t<=e.right-3),d=n.length?n.map(t=>e.left+t):[(e.left+e.right)/2],c=i.filter(t=>t>e.left+1&&t<e.right-1);return[{x:e.left,y:l,direction:0,cost:24*!!s},...[-1,1].map(t=>({x:e.left,y:l+7*t,direction:0,cost:s?r(t):24})),...c.flatMap(t=>[{x:t,y:e.top,direction:1,cost:o(1)},{x:t,y:e.bottom,direction:3,cost:o(3)}]),...d.map((t,a)=>({x:t,y:e.top,direction:1,cost:20+o(1)+3*a})),...d.map((t,a)=>({x:t,y:e.bottom,direction:3,cost:20+o(3)+3*a}))]}(h,u,m,u?[...g?[v(p)]:[],...[...I].flatMap(([e,t])=>a&&y(e)?dJ(t,a):[])]:g?[v(p)]:p.right-p.left>=8&&p.right+8<=h.left+d5.at(-1)?[p.right+8]:[],(ee.get(e.to)>1||w.length>0)&&(!u||et.has(e.to))),b=e=>void 0===Y||(e.direction%2==0?Y<e.x-16-5||Y>e.x+5:Math.abs(e.x-Y)>=5),k=(e,t)=>w.every(a=>Math.hypot(a.x-e.x,a.y-e.y)>=t),C=e=>{let t=dC(e.direction),a=dT([{x:e.x-(0===e.direction?t:0),y:e.y-(1===e.direction?t:3===e.direction?-t:0)},e],t,6);return!D.some(e=>ct(e,a))},_=[...ep.get(e.to)??[]].flatMap(e=>d6(h,u,1===e).find(t=>t.direction===e)??[]),L=e=>{if(e.direction%2==0){let t=d7([{x:e.x-16,y:e.y},e]);return _.every(e=>!ct({from:e,to:{x:e.x,y:e.y+(1===e.direction?1:-1)*8}},t))}return _.every(t=>t.direction!==(e.direction+2)%4||Math.abs(t.x-e.x)>=8)},B=function(e,t,a){let i=(e.top+e.bottom)/2,s=(e.left+e.right)/2,l=e=>40*(1===e!==a),o=(e,t)=>Array.from({length:Math.max(0,Math.floor((t-e)/3))+1},(t,a)=>e+3*a);if(t){let t=(e.right-e.left)/2,a=(e.bottom-e.top)/2,r=(e,l)=>i+l*a*(1-Math.abs(e-s)/t);return[...o(e.top+3,e.bottom-3).map(e=>({x:s-t*(1-Math.abs(e-i)/a),y:e,direction:0,cost:30})),...o(e.left+3,s).flatMap(e=>[{x:e,y:r(e,-1),direction:1,cost:40+l(1)},{x:e,y:r(e,1),direction:3,cost:40+l(3)}])]}return[...o(e.top+3,e.bottom-3).map(t=>({x:e.left,y:t,direction:0,cost:30+Math.abs(t-i)})),...o(e.left+3,e.right-3).flatMap(t=>[{x:t,y:e.top,direction:1,cost:40+l(1)+(t-e.left)/4},{x:t,y:e.bottom,direction:3,cost:40+l(3)+(t-e.left)/4}])]}(h,u,m),S=[[x,e=>b(e)&&k(e,11)&&C(e)&&L(e)],[x,e=>b(e)&&k(e,6)&&C(e)&&L(e)],[B,e=>b(e)&&k(e,3)&&C(e)&&L(e)],[x,e=>b(e)&&k(e,1)&&C(e)],[x,e=>k(e,1)&&C(e)],[B,e=>k(e,1)&&C(e)]].map(([e,t])=>e.filter(t)).find(e=>e.length>0)??x,A=g?v(p)-(p.right-p.left)/4:Math.max(p.left+2,p.right-d4.at(-1)),P=(N.get(e.to)??[]).filter(e=>{let t=ce(e);return K.has(e)&&e.from.x>=A-.5&&(t%2==0||1===t===m)}),V=(j.get(e.from)??[]).filter(e=>Q.has(e)),H=new Map(V.map(e=>{let t=ce(e),a=t%2==1&&1===t!==m;return[`${e.from.x},${e.from.y},${t}`,{...e.from,direction:t,cost:40*!!a}]})),q=[...[...I].flatMap(([t,a])=>{let i,s,l,o,r,n;return t!==e.from&&t!==e.to?[{box:a,clearance:4,sideClearance:8}]:f.get(t).milestone?[{box:(i=(a.right-a.left)/4,s=(a.bottom-a.top)/4,{left:a.left+i,right:a.right-i,top:a.top+s,bottom:a.bottom-s}),clearance:3,own:!0},...(l=(a.top+a.bottom)/2,o=(a.left+a.right)/2,r=(a.right-a.left)/8,n=(a.bottom-a.top)/8,[{left:a.left,right:a.right,top:l-n,bottom:l+n},{left:o-r,right:o+r,top:a.top,bottom:a.bottom}]).map(e=>({box:e,clearance:.5,own:!0})),...[{...a,bottom:a.top},{...a,top:a.bottom},{...a,right:a.left},{...a,left:a.right}].map(e=>({box:e,clearance:3,own:!0,parallel:!0}))]:[{box:a,clearance:3,own:!0}]}),...F],$={sources:[...H.values(),...g||p.right-p.left<8?[]:(u?[v(h)]:d5.some(e=>h.left+e<=h.right-3)?d5.filter(e=>h.left+e<=h.right-3).map(e=>h.left+e):[v(h)]).filter(e=>e-p.right>=3&&e-p.right<8).map(e=>({x:p.right,y:(p.top+p.bottom)/2,direction:0,cost:2,lead:e-p.right})),...d6(p,g,m,u?v(h):void 0,[...u?[h.left-19,h.left+(h.right-h.left)/4-19]:[h.left-19,...d5.filter(e=>h.left+e<=h.right-3).map(e=>h.left+e)],...[...I].flatMap(([t,i])=>t===e.from||t===e.to?[]:dJ(i,a))])],targets:S,obstacles:[...q,...J.map(t=>t.from===e.from?t.arrowhead:t.keepOut),...[...ee.keys()].flatMap(t=>t===e.to?[]:(e=>{let t=ee.get(e)??0;if(t<=0)return[];let a=I.get(e),i=(a.top+a.bottom)/2,s=(a.right-a.left)/4,l=f.get(e).milestone,o=l?[{x:a.left,y:i},{x:a.left+s,y:i-s},{x:a.left+s,y:i+s}]:[0,-7,7].map(e=>({x:a.left,y:i+e})),r=Z.get(e)??[],[n,...d]=o;return(t+r.length>1?[...d,n]:o).filter(e=>r.every(t=>Math.hypot(t.x-e.x,t.y-e.y)>=3)).slice(0,t).map(e=>({left:e.x-16-6,right:e.x+6*!!l,top:e.y-6,bottom:e.y+6}))})(t).map(e=>({box:e,clearance:0})))],behind:Math.min(p.left,h.left-16-8-5)-16,lanes:X,denseLanes:T,routed:D,kin:new Set([...j.get(e.from)??[],...N.get(e.to)??[]]),lastRuns:K,trunks:new Set(V),pastTrunk:new Map(J.flatMap(t=>t.from===e.from?[[t.keepOut,t.trunk]]:[])),edges:E.flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]),...a?{sides:E.flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]),besides:E.flatMap(([e,t])=>y(e)?[t]:[])}:{},top:1,bottom:z-1,budget:c,kinkBudget:el},G=t=>dO(t)??dO({...t,obstacles:[...q,...W.map(t=>t.from===e.from?t.arrowhead:t.keepOut)],pastTrunk:new Map(W.flatMap(t=>t.from===e.from?[[t.keepOut,t.trunk]]:[]))}),R=G($),ea=(t,a)=>[...I].every(([i,s])=>i===e.from||i===e.to||t<=s.left-8||t>=s.right+8||(m?s.top-4>=a||s.bottom<=p.bottom:s.bottom+4<=a||s.top>=p.top)),es=[...d6(p,g,m).map(e=>e.x),p.right+8,...[...I].flatMap(([,e])=>dJ(e,a))],eo=a&&R&&d8(R)?P.flatMap(e=>(function(e,t){let a=ce(e),i=t=>Math.abs(e.to.x-t.x)+Math.abs(e.to.y-t.y),s=[{...e.from,direction:a,cost:48+i(e.from)}];if(a%2==0)return s;for(let a of t){let t={x:e.from.x,y:a};if((a-e.from.y)*(e.to.y-a)<=0||5>Math.abs(a-e.from.y)||23>i(t))continue;let l=48+i(t);s.push({...t,direction:0,cost:l},{...t,direction:2,cost:l})}return s})(e,U).filter(t=>(({x:e,y:t,direction:a})=>a%2==1?e>=A-.5&&ea(e,t):es.some(i=>i>=A-.5&&i<=p.right+8+.5&&(0===a?i<=e-16:i>=e+16)&&ea(i,t)))(t)&&!D.some(a=>a!==e&&!(K.has(a)&&.01>Math.hypot(a.to.x-e.to.x,a.to.y-e.to.y))&&cl(t,e.to,a,5)))):[];if(eo.length>0&&er.remaining>0){let e=Math.min(1e3,er.remaining),t={remaining:e};l=G({...$,targets:[...S,...eo],joins:new Set(P),budget:t,limit:e,kinkBudget:{remaining:0}}),er.remaining-=e-t.remaining}let eh=l&&(o=(s=l).at(-1),r=(e,t,a)=>e>=Math.min(t,a)-.01&&e<=Math.max(t,a)+.01,(n=P.find(({from:e,to:t})=>Math.hypot(t.x-o.x,t.y-o.y)>1&&r(o.x,e.x,t.x)&&r(o.y,e.y,t.y)))?dI(s.at(-2),o,n)?[...s.slice(0,-1),n.to]:[...s,n.to]:s),eg=eh&&!d8(eh)?eh:R,eu=eg&&(a?(t=>{if(t.length<4||ee.get(e.to)>1||!d8(t))return t;let[a,i,s]=t.slice(-3);if(Math.abs(i.x-s.x)>=.01||Math.abs(a.y-i.y)>=.01||i.x>=a.x-.01)return t;let l=s.y>i.y?1:3;for(let e of S.filter(e=>e.direction===l&&.01>Math.abs(e.y-s.y)&&e.x<s.x-1).toSorted((e,t)=>e.x-t.x)){if(er.remaining<=0)break;let i=Math.min(1e3,er.remaining),s={remaining:i},l=dO({...$,sources:[{...a,direction:2,cost:0}],targets:[e],budget:s,limit:i,kinkBudget:{remaining:0}});if(er.remaining-=i-s.remaining,l?.length===3&&.01>Math.abs(l[1].y-a.y))return[...t.slice(0,-2),l[1],e]}return t})(eg):eg);if(t.remaining-=d-c.remaining,eu)return eu;ed+=1;let ef=function(e){let{source:t,target:a,routed:i}=e,s=e.heads.map(({box:e})=>e),l=i.filter(e=>.01>Math.abs(e.from.y-e.to.y)),o=i.filter(e=>Math.abs(e.from.y-e.to.y)>=.01),r=([t,a,i])=>{let r=.01>Math.abs(t.y-a.y),n=r?t.y:t.x,d=r?Math.min(t.x,a.x):Math.min(t.y,a.y),c=r?Math.max(t.x,a.x):Math.max(t.y,a.y),p=1/0;for(let t of r?l:o){if(i&&e.siblings.has(t))continue;let a=Math.abs((r?t.from.y:t.from.x)-n);if(a>=p)continue;let s=r?Math.min(t.from.x,t.to.x):Math.min(t.from.y,t.to.y);Math.min(c,r?Math.max(t.from.x,t.to.x):Math.max(t.from.y,t.to.y))-Math.max(d,s)>0&&(p=a)}let h=ci.findIndex(e=>p>=e);return s.some(e=>ct({from:t,to:a},e))?Math.max(h,3):h},n=(e,t,a=()=>!0)=>{let i;for(let s of e){let e=t(s).map(e=>r(e)),l=100*Math.max(...e,+!a(s))+e.reduce((e,t)=>e+t,0);if((!i||l<i.score)&&(i={candidate:s,score:l}),0===l)break}return i.candidate},d=(t.left+t.right)/2,c=(t.right-t.left)/2,p=a=>e.sourceMilestone?cs(d,c-4,.5).map(e=>({x:e,y:(1===a?t.bottom:t.top)-a*Math.abs(e-d)})):cs(Math.max(d,t.right-6),Math.min(2*c,12),.5).filter(e=>e>=t.left+.5&&e<=t.right-.5).map(e=>({x:e,y:1===a?t.bottom:t.top})),h=e=>[...cs(e,8),...cs(e,8,.5),...cs(e+.1,8,.1)],g=(t,a)=>e.marks.every(e=>e.right<=1.5||e.left>=a||t<=e.top-4||t>=e.bottom+4),u=h(e.sourceRow.top+e.sourceRow.height).filter(a=>a>=t.bottom+2&&a<=e.rowsBottom-1),f=h(e.sourceRow.top).filter(a=>a<=t.top-2&&a>=e.rowsTop+1),m=e=>[...p(1).map(t=>[t,u.filter(a=>!e||g(a,t.x))]),...p(-1).map(t=>[t,f.filter(a=>!e||g(a,t.x))])].filter(([,e])=>e.length>0),v=m(!0),[y,w]=n(v.length>0?v:m(!1),([e,t])=>[[e,{x:e.x,y:t[0]},!0],[{x:e.x,y:t[0]},{x:12,y:t[0]}]]),x=n(w,e=>[[y,{x:y.x,y:e},!0],[{x:y.x,y:e},{x:12,y:e}]]),b=(a.top+a.bottom)/2,k=(a.bottom-a.top)/2,M=(a.right-a.left)/(a.bottom-a.top),C=n(cs(b,k-(e.targetMilestone?4:3)).map(t=>({x:e.targetMilestone?a.left+Math.abs(t-b)*M:a.left,y:t})),e=>[[{x:12,y:e.y},e]],t=>{let a=dT([{x:t.x-16,y:t.y},t],16,4.5);return e.taken.every(e=>Math.hypot(e.x-t.x,e.y-t.y)>=3)&&!i.some(e=>ct(e,a))}),z=10.5,_=n([...cs(12,10.5,.5),...cs(12.1,z-.1,.1)],e=>[[{x:y.x,y:x},{x:e,y:x}],[{x:e,y:x},{x:e,y:C.y}],[{x:e,y:C.y},C]]);return[y,{x:y.x,y:x},{x:_,y:x},{x:_,y:C.y},C]}({marks:i?[...I].flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]):[],source:p,sourceMilestone:g,sourceRow:M[O.get(e.from)],target:h,targetMilestone:u,rowsTop:0,rowsBottom:z,routed:D,heads:W.map(e=>e.keepOut),taken:w,siblings:new Set(V)});return ec.add(ef),ef};$.forEach((e,t)=>{let a=eu(e);R[t]=a,eh(e,a)});let ef=(e,t)=>({leaving:$[e].from===$[t].from,arriving:$[e].to===$[t].to}),em=e=>{let t=R[e],a=0;return R.forEach((i,s)=>{if(s===e||!i)return;let l=ef(e,s);a+=d9(t,i,l)+d9(i,t,l)}),a},ev=new Map;$.forEach((e,t)=>ev.set(e.to,[...ev.get(e.to)??[],t]));let ey=e=>dX(e).reduce((e,{from:t,to:a})=>e+Math.abs(a.x-t.x)+Math.abs(a.y-t.y),0),ew=e=>{let t=dX(R[e]),a=0;return R.forEach((i,s)=>{if(s!==e&&i)for(let e of dX(i))for(let i of t)(function(e,t){let a=e=>.01>Math.abs(e.from.y-e.to.y);if(a(e)===a(t))return!1;let[i,s]=a(e)?[e,t]:[t,e],l=s.from.x,o=i.from.y;return l>Math.min(i.from.x,i.to.x)+.01&&l<Math.max(i.from.x,i.to.x)-.01&&o>Math.min(s.from.y,s.to.y)+.01&&o<Math.max(s.from.y,s.to.y)-.01})(i,e)&&(a+=1)}),a},ex=e=>({conflicts:e.reduce((e,t)=>e+em(t),0),drawn:e.reduce((e,t)=>{let a=R[t];return e+ey(a)+24*(a.length-2)+dU(a)+60*ew(t)},0)}),eb=(e,t)=>e.conflicts<t.conflicts||e.conflicts===t.conflicts&&e.drawn<t.drawn-1e-6,ek=e=>e.some(e=>em(e)>0||ew(e)>0)||e.reduce((e,t)=>{let a=R[t],[i,s]=[a[0],a.at(-1)];return e+ey(a)-Math.abs(s.x-i.x)-Math.abs(s.y-i.y)},0)>60;for(let[e,t]of ev){if(t.length<2||!ek(t))continue;let a=[{order:t.toReversed(),split:!1},...f.get(e).milestone?[{order:t,split:!0}]:[]],i={routes:t.map(e=>R[e]),standing:ex(t),split:!1};for(let s of a){if(ei.remaining<=0||s.split&&(t.forEach((e,t)=>R[e]=i.routes[t]),!t.some(e=>ew(e)>0||dU(R[e])>0)))break;for(let e of t)R[e]=void 0;for(let t of(eg(),s.split&&et.add(e),s.order)){let e=eu($[t]);R[t]=e,eh($[t],e)}et.delete(e);let a=ex(t);eb(a,i.standing)&&(i={routes:t.map(e=>R[e]),standing:a,split:s.split})}t.forEach((e,t)=>R[e]=i.routes[t]),i.split&&et.add(e),eg()}let eM={remaining:48e3},eC=0,ez=e=>{if(eC>=2*$.length)return;eC+=1;let t=R[e];R[e]=void 0,eg();let a=eu($[e],eM);return R[e]=t,eg(),a},e_=(e,t)=>{let a,i=[e,t],s=ex(i);for(let e of i){let t=ez(e);if(!t)continue;let l=R[e];R[e]=t,eg();let o=ex(i);o.conflicts<s.conflicts&&eb(o,s)&&(s=o,a={index:e,points:t}),R[e]=l,eg()}return!!a&&(R[a.index]=a.points,eL[a.index]=eL[a.index]+1,eg(),!0)},eL=$.map(()=>0),eB=new Set;for(let e=0;e<2;e+=1){let e=!1;if(R.forEach((t,a)=>{R.forEach((t,i)=>{let s=R[a];if(i===a||!s||!t||0===d9(s,t,ef(a,i)))return;let l=`${a}.${eL[a]}:${i}.${eL[i]}`;!eB.has(l)&&(eB.add(l),e_(a,i)&&(e=!0))})}),!e)break}for(let e of $.map((e,t)=>({id:`gantt:dependency:${ca(e.from)}:${ca(e.to)}`,...e,points:R[t]})).map(e=>{let[t,...a]=(function(e){var t;let a,i,s=e.at(-1),l=e.at(-2),o=Math.abs(s.x-l.x)+Math.abs(s.y-l.y),r=(a=(t=e).at(-1),i=t.at(-2),.01>Math.abs(a.y-i.y)?16:12);if(o<=r+1)return[...e];let n=r/o;return[...e.slice(0,-1),{x:s.x+(l.x-s.x)*n,y:s.y+(l.y-s.y)*n},s]})(e.points).map(e=>({x:d2(e.x),y:d2(e.y)}));return{type:"arrow",id:e.id,edgeId:e.id,sourceNodeId:`gantt:task:${e.from}`,targetNodeId:`gantt:task:${e.to}`,points:[t,...a],strokeColor:"#5c5345",strokeWidth:1,roughness:0,endArrowhead:"triangle"}}))q.push(e,"front");let eS=e=>{let t="top"===e?"":"-bottom",a="top"===e?-22:z,i="top"===e?a-22:a+22;A.cells.forEach((e,i)=>{let s=d1(e.label,12);q.text(`gantt:tick${t}:${i}`,s,(V(e.start)+V(e.end))/2-s.width/2,a+(22-s.height)/2,12,dZ,"center")}),A.bands.forEach((e,a)=>{let s,l=V(e.end)-V(e.start)-8,o=((s=/^([A-Z][a-z]{2}) \d{4}$/u.exec(e.label))?[e.label,s[1]]:/^\d{4}$/u.test(e.label)?[e.label,`’${e.label.slice(2)}`]:[e.label]).map(e=>d1(e,13)).find(e=>e.width<=l);o&&q.text(`gantt:band${t}:${a}`,o,(V(e.start)+V(e.end))/2-o.width/2,i+(22-o.height)/2,13,dD,"center"),a>0&&q.line(`gantt:band-edge${t}:${a}`,[{x:V(e.start),y:i+3},{x:V(e.start),y:i+22-3}],{strokeColor:dj})}),q.line(`gantt:axis${t}`,[{x:V(A.start),y:"top"===e?0:z},{x:H,y:"top"===e?0:z}],{strokeColor:"#8c826f"})},eA=(g=q.elements.length,eS("top"),q.elements.length-g),eP=-44;if(void 0!==Y){let e=d1(b.today??"Today",12);eP-=18,q.text("gantt:today-label",e,Math.min(Math.max(Y-e.width/2,V(A.start)),Math.max(V(A.start),H-e.width)),eP+(18-e.height)/2,12,dN,"center")}let eV=d0(e.title,Math.max(H-S,360),20);q.text("gantt:title",eV,S,eP-14-eV.height,20,dD,"left");let eH=new Set([A.start,A.end,...A.bands.map(e=>e.start)]),eq=[...A.cells.map(e=>e.start),A.end],eF=_>=16,eI=[!0,!1].flatMap(e=>[{grid:eq,minor:!0,bottom:eF},{grid:eq,minor:!1,bottom:eF},{grid:eq,minor:!1,bottom:!1},{grid:eq.filter(e=>eH.has(e)),minor:!1,bottom:eF},{grid:eq.filter(e=>eH.has(e)),minor:!1,bottom:!1},{grid:[A.start,A.end],minor:!1,bottom:!1}].map(t=>({...t,rowRules:e}))),eE=e=>{let t=e.bottom?z+22:z,a=(e,t,a,i,s)=>({type:"line",id:e,points:[{x:d2(t),y:d2(a)},{x:d2(t),y:d2(i)}],roughness:0,strokeWidth:1,...s});return[...e.rowRules?[...M.slice(1).map(e=>e.top),z].map((e,t)=>({type:"line",id:`gantt:row-rule:${t}`,points:[{x:d2(S),y:d2(e)},{x:d2(H),y:d2(e)}],roughness:0,strokeWidth:1,strokeColor:"#ebe4d8"})):[],...e.minor?A.minor.map(e=>a(`gantt:minor:${tn(e)}`,V(e),0,z,{strokeColor:"#f0ebe1"})):[],...e.grid.map(e=>a(`gantt:grid:${tn(e)}`,V(e),-22,t,{strokeColor:eH.has(e)?dj:"#e6dfd2"})),...void 0===Y?[]:[a("gantt:today",Y,eP+18,t,{strokeColor:dN,strokeStyle:"dashed"})]]},eO=[...I.values()].map(e=>({left:e.left-5,right:e.right+5,top:e.top-1,bottom:e.bottom+1})),eU=e=>e?[...q.textBoxes,...eO]:q.textBoxes,eX=e=>"gantt:today"===e,[eT,e$]=[!0,!1].flatMap(e=>eI.map(t=>[t,e])).find(([e,t])=>{let a=eE(e),i=new Map([...nQ(a,q.textBoxes,e=>!eX(e)),...nQ(a,eU(t),eX)]),s=a.reduce((e,t)=>e+(i.get(t.id)?.length??1),0);return q.elements.length+s+(e.bottom?eA:0)<=a$.maxElements})??[eI.at(-1),!1];for(let e of(eT.bottom&&eS("bottom"),eE(eT)))q.push(e,"gantt:today"===e.id?"middle":"back");q.breakRulesUnderText(e=>e.startsWith("gantt:grid:")||e.startsWith("gantt:minor:")||e.startsWith("gantt:row-rule:")||e.startsWith("gantt:axis")||e.startsWith("gantt:band-edge")),q.breakRulesUnderText(eX,eU(e$));let eY=q.bounds(),eG=40-eY.left,eR=40-eY.top,eD=e=>({x:d2(e.x+eG),y:d2(e.y+eR)}),eZ=q.elements.map(e=>{if("line"===e.type){let[t,a,...i]=e.points.map(eD);return{...e,points:[t,a,...i]}}if("arrow"===e.type){let[t,...a]=e.points.map(eD);return{...e,points:[t,...a]}}return{...e,x:d2(e.x+eG),y:d2(e.y+eR)}}),ej=R.reduce((e,t,a)=>e+R.reduce((e,i,s)=>s===a?e:e+d9(t,i,ef(a,s),!0),0),0);return{scene:{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:Math.ceil(eY.right-eY.left+80),height:Math.ceil(eY.bottom-eY.top+80),accentColor:e.style.accentColor,backgroundColor:e.style.backgroundColor,elements:eZ,layers:[],layouts:[],zOrder:q.zOrder()},crossings:R.reduce((e,t,a)=>e+ew(a),0)/2,findings:function(e,t,a,i){let[s,l,o,r,n]=[0,0,0,0,0];for(let{from:a,to:d,points:c}of e){i.has(c)&&(n+=1),d8(c)&&(s+=1);let e=dX(c),p=e.map(({from:e,to:t})=>Math.abs(t.x-e.x)+Math.abs(t.y-e.y)),h=p.reduce((e,t)=>e+t,0),g=p[0]??0;for(let t=1;t<e.length-1;t+=1){let e=p[t];(g<=46||h-g-e<=46)&&e<40?o+=1:e<28&&(l+=1),g+=e}for(let{from:i,to:s}of e)if(!(Math.abs(i.x-s.x)>=.01))for(let[e,l]of t)e!==a&&e!==d&&14.99>Math.min(Math.abs(i.x-l.left),Math.abs(i.x-l.right))&&Math.min(Math.max(i.y,s.y),l.bottom)-Math.max(Math.min(i.y,s.y),l.top)>1&&(r+=1)}return{conflicts:a,fallbacks:n,detours:s,kinks:l,jogs:o,traces:r}}(R.map((e,t)=>({...$[t],points:e})),E,ej,ec),clear:(s=R.map((e,t)=>({...$[t],points:e})),s.every(({from:e,to:t,points:a})=>dX(a).every(({from:a,to:i})=>{let s=.01>Math.abs(a.x-i.x);return[...I].every(([l,o])=>!!(l===e||l===t||(s?Math.min(Math.max(a.y,i.y),o.bottom)-Math.max(Math.min(a.y,i.y),o.top):Math.min(Math.max(a.x,i.x),o.right)-Math.max(Math.min(a.x,i.x),o.left))<=1)||(s?Math.max(o.left-a.x,a.x-o.right):Math.max(o.top-a.y,a.y-o.bottom))>=(s?8:4)-.02)}))),work:{layouts:1,placements:en,expansions:ea-ei.remaining+48e3-eM.remaining+es-el.remaining+eo-er.remaining,corridors:ed,conflicts:ej}}}let cc="timeline-marker",cp=22,ch=6,cg="#4c4639",cu="#c0392b",cf=[{stroke:"",ink:"#6a4e5c",wash:"#efe6ec"},{stroke:"#1f44c9",ink:"#1a39a8",wash:"#e6eafb"},{stroke:"#1c7a4d",ink:"#15613c",wash:"#def0e5"},{stroke:"#9a6a1f",ink:"#7a5216",wash:"#f6e8cf"}];function cm(e,t,a,i){let s=function(e,t){let a=e=>e.split("\n").length,i=aT(e,200,t);if(1===a(i))return i;let s=t,l=200;for(;l-s>1;){let o=Math.floor((s+l)/2);a(aT(e,o,t))<=a(i)?l=o:s=o}return aT(e,l,t)}(t,a);return{id:e,text:s,fontSize:a,color:i,width:Math.ceil(Math.max(aE(s,a),aO(s,a,200))),height:Math.ceil(s.split("\n").length*a*1.35)}}let cv=[{lookahead:!0,coverPenalty:0},{lookahead:!0,coverPenalty:80},{lookahead:!1,coverPenalty:0},{lookahead:!1,coverPenalty:240}];function cy(e){return e.span?6:("milestone"===e.event.kind?18:12)/2}let cw=[{fontSize:20,textWidth:160,padX:0,padY:0,strokeWidth:2},{fontSize:16,textWidth:180,padX:16,padY:11,strokeWidth:2},{fontSize:14,textWidth:150,padX:12,padY:9,strokeWidth:1}];function cx(e){return cw[Math.min(e,cw.length-1)]}function cb(e,t,a){return{x0:e.x0+t,x1:e.x1+t,y0:e.y0+a,y1:e.y1+a}}function ck(e,t,a){return{boxes:e,places:t,folded:a,top:Math.min(...e.map(e=>e.y0)),bottom:Math.max(...e.map(e=>e.y1)),outer:Math.max(...e.map(e=>e.x1))}}function cM(e,t){return 1===e.places.size&&1===t.places.size?14:28}function cC(e,t=0){return e.reduce((a,i,s)=>a+(i.bottom-i.top)+(0===s?0:cM(e[s-1],i)+t),0)}function cz(e){let t=e.flatMap(e=>[e.x,e.x+e.topic.width]),a=e.flatMap(e=>[e.y,e.y+e.topic.height]);return(Math.max(...t)-Math.min(...t)+40)/(Math.max(...a)-Math.min(...a)+40)}function c_(e){return Math.round(100*e)/100}function cL(e){let[t,,,a]=e;return .5>Math.abs(a.y-t.y)?[{x:c_(t.x),y:c_(t.y)},{x:c_(a.x),y:c_(a.y)}]:aA(e)}function cB(e,t){return{x:1===t?e.x:e.x+e.width,y:e.y+e.height/2}}let cS={circle:24,bucket:28,cylinder:28,diamond:20,document:28,ellipse:24,pipe:28,polygon:28,rectangle:28},cA={database:"cylinder",queue:"pipe",document:"document",storage:"bucket"};function cP(e,t){let a=aX(e,t),i=a.split("\n"),s=aE(a,14),l=Math.ceil(14*i.length*1.35),o=Math.ceil(s+36),r=Math.ceil(l+28);return{text:a,textHeight:l,textWidth:s,width:o,height:r}}function cV(e,t,a){let i=2*aY.boundTextPadding,s="diamond"===e?2:"ellipse"===e||"circle"===e?Math.SQRT2:1,l=Math.ceil((t+i)*s),o=Math.ceil((a+i)*s);for(;a8({height:o,shape:e,width:l}).width<t;)l+=1;for(;a8({height:o,shape:e,width:l}).height<a;)o+=1;return{width:l,height:o}}let cH={bucket:220,circle:260,cylinder:264,diamond:240,document:264,ellipse:260,pipe:240,polygon:264,rectangle:264};function cq(e){return Math.floor(100*e/12)}function cF(e,t){let a=cq(("diamond"===t?744:1116)*14/100),i=cq(cH[t]),s=e=>e.split("\n").length,l=aX(e,a);for(let o=a;s(l)>("diamond"===t||"ellipse"===t||"circle"===t?1:2)&&o<i;)l=aX(e,o=Math.min(i,o+62));let o=s(l);return{text:l,lines:o,width:aE(l,12),height:Math.ceil(12*o*1.25)}}let cI={initial:20,final:28};function cE(e,t){let a=Math.max(e.width,e.height,t);return{...e,width:a,height:a}}function cO(e){return void 0===e.kind?void 0:cI[e.kind]}function cU(e){return"decision"===e||"choice"===e}function cX(e,t=184,a=1116){let i=function(e){if(void 0!==e.shape)return cA[e.shape];let t=e.kind?.toLowerCase();return"start"===t||"end"===t?"ellipse":"initial"===t||"final"===t?"circle":cU(t)?"diamond":"rectangle"}(e),s=cO(e);if(void 0!==s||"choice"===e.kind&&!e.label){let t=s??44;return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},shape:i,x:0,y:0,width:t,height:t,label:""}}let l="diamond"===i?744:a,o=cP(e.label,l),r=e.icon?{slug:e.icon.slug,size:cS[i]}:void 0,n=aR(i)?aD[i]:0,d="diamond"===i?32:"ellipse"===i?20:"pipe"===i?4*n:0,c="diamond"===i?32:"cylinder"===i||"document"===i||"bucket"===i?3*n:0,[p,h]="state"===e.kind?[136,56]:[t,72];if(e.description){let t=cF(e.description,i),a=cP(e.label,Math.max(l,Math.floor(100*t.width/14))),s=Math.max(a.textWidth,t.width),o=cV(i,s,a.textHeight+2*Math.max(a9(r),2+t.height+4));return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...r?{icon:r}:{},shape:i,x:0,y:0,width:Math.max(p,Math.ceil(s+36)+d,o.width),height:Math.max(h,o.height),label:a.text}}let g=r||"diamond"===i||n>0?cV(i,o.textWidth,o.textHeight+a9(r)):{height:0,width:0};return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...r?{icon:r}:{},shape:i,x:0,y:0,width:Math.max(p,o.width+d,g.width),height:r?Math.max(h,g.height):Math.max(h,o.height+c,g.height),label:o.text}}function cT(e){let t=new Map,a=new Map;for(let i of e)t.set(i.target,[...t.get(i.target)??[],i]),a.set(i.source,[...a.get(i.source)??[],i]);return{incoming:t,outgoing:a}}function c$(e){return new Map(e.map((e,t)=>[e.id,t]))}function cY(e,t,a){let i=new Map,s=new Set;function l(e){for(let t of(i.set(e,"visiting"),a.get(e)??[])){let e=i.get(t.target);if("visiting"===e){s.add(t.id);continue}e||l(t.target)}i.set(e,"visited")}let o=e.nodes.find(e=>0===(t.get(e.id)??[]).length)??e.nodes[0];for(let t of(o&&l(o.id),e.nodes))i.has(t.id)||l(t.id);return s}let cG=new WeakMap;function cR(e){let t=cG.get(e);if(t||(cQ(e),t=cG.get(e)))return t;let a=cT(e.edges);return t=cY(e,a.incoming,a.outgoing),cG.set(e,t),t}let cD=new WeakMap,cZ="\0group:",cj=iG.fontSize;function cN(e,t){let a=[];for(let i=t;void 0!==i;i=e.parentOf.get(i))a.push(i);return a}function cW(e,t,a){let i=new Set(cN(e,e.groupOf.get(a)));return cN(e,e.groupOf.get(t)).find(e=>i.has(e))}let cJ=new WeakMap;function cK(e){return`${cZ}${e}`}function cQ(e){let t=cJ.get(e);if(void 0!==t)return t??void 0;let a=new Map((e.groups??[]).flatMap(e=>void 0===e.parent?[]:[[e.id,e.parent]])),i=new Set;for(let t of e.nodes)for(let e=t.group;void 0!==e&&!i.has(e);e=a.get(e))i.add(e);let s=(e.groups??[]).filter(e=>i.has(e.id));if(0===s.length)return void cJ.set(e,null);let l=new Set(s.map(e=>e.id)),o=new Map([...a].filter(([e,t])=>l.has(e)&&l.has(t))),r=s.some(e=>void 0!==e.parent||void 0!==e.kind),n=new Map(e.nodes.flatMap(e=>void 0!==e.group&&l.has(e.group)?[[e.id,e.group]]:[])),d=new Set(e.nodes.map(e=>e.id)),c=new Set(e.edges.flatMap(e=>[e.source,e.target].filter(e=>!d.has(e)&&l.has(e)))),p=e=>{let t=[];for(let a=c.has(e)?e:n.get(e);void 0!==a;a=o.get(a))t.push(a);return t},h=(e,t)=>{let a=p(t),i=void 0===e?a.length:a.indexOf(e);if(!(i<0||0===i&&c.has(t)))return 0===i?t:cK(a[i-1])},g=(e,t)=>({id:t,label:e.label,kind:"process",metadata:{}}),u=cT(e.edges),f=cY(e,u.incoming,u.outgoing),m=new Set(e.edges.flatMap(e=>e.source===e.target?[e.id]:[])),v=s.map(t=>{let a=s.filter(e=>o.get(e.id)===t.id),i=e.edges.flatMap(e=>{let[a,i]=[h(t.id,e.source),h(t.id,e.target)];return void 0===a||void 0===i||a===i&&a!==e.source?[]:[a===e.source&&i===e.target?e:{...e,source:a,target:i}]}),l=[];for(let i of e.nodes){let e=h(t.id,i.id);if(void 0===e||l.some(t=>t.id===e))continue;let s=a.find(t=>cK(t.id)===e);l.push(s?g(s,e):i)}let n={...e,groups:[],nodes:l,edges:i},d={...n,layout:{...e.layout,direction:c7[e.layout.direction]}},c=new Set(i.flatMap(e=>f.has(e.id)?[e.id]:[]));if(a.length>0){let e={...n,edges:i.filter(e=>!c.has(e.id))},t=cT(e.edges);for(let a of cY(e,t.incoming,t.outgoing))c.add(a)}for(let e of(cG.set(n,c),cG.set(d,c),c))m.add(e);if(r){let a=function(e,t,a,i){let s=e=>void 0!==i(e),l=new Map;for(let t of e.edges)s(t.source)||s(t.target)||l.set(t.source,[...l.get(t.source)??[],t.target]);let o=e=>{let t=new Set([e]);for(let e of t)for(let a of l.get(e)??[])t.add(a);return t},r=new Map;for(let e of t.edges)a.has(e.id)||r.set(e.source,[...r.get(e.source)??[],e.target]);let n=(e,t)=>{let a=new Set([e]);for(let e of a)for(let t of r.get(e)??[])a.add(t);return a.has(t)},d=[];for(let t of e.edges){if(!s(t.source)||s(t.target))continue;let a=o(t.target);for(let l of e.edges){if(s(l.source)||!s(l.target)||!a.has(l.source))continue;let[e,o]=[i(t.source),i(l.target)];!(e===o||d.some(([t,a])=>t===e&&a===o))&&(n(o,e)||(d.push([e,o]),r.set(e,[...r.get(e)??[],o])))}}return d}(e,n,c,e=>h(t.id,e));a.length>0&&(cD.set(n,a),cD.set(d,a))}let p=new Set(e.edges.flatMap(e=>{let[a,i]=[h(t.id,e.source),h(t.id,e.target)];return void 0===a&&void 0!==i?[i]:void 0===i&&void 0!==a?[a]:[]}));return{across:d,children:a.map(e=>e.id),crossing:p,diagram:n,group:t}}),y=[],w=new Set;for(let t of e.nodes){let e=h(void 0,t.id);if(w.has(e))continue;w.add(e);let a=p(t.id).at(-1);y.push(void 0===a?t:g(s.find(e=>e.id===a),e))}let x=e=>h(void 0,e)??e,b=e.edges.filter(e=>x(e.source)!==x(e.target)),k={...e,groups:[],nodes:y,edges:b.map(e=>({...e,source:x(e.source),target:x(e.target)}))},M=cT(k.edges),C=cY(k,M.incoming,M.outgoing);for(let e of(cG.set(k,C),C))m.add(e);cG.set(e,m);let z={composites:c,crossEdges:b,groupOf:n,groups:v,parentOf:o,top:k,zoned:r};return cJ.set(e,z),z}function c1(e,t,a){let i=c$(e.nodes),s=new Map(e.nodes.map(e=>[e.id,0])),l=new Map(e.nodes.map(e=>[e.id,0]));for(let t of e.edges)a.has(t.id)||s.set(t.target,(s.get(t.target)??0)+1);let o=[];for(let t of e.nodes)(s.get(t.id)??0)===0&&o.push(t.id);let r=new Set;for(let e=0;e<o.length;e+=1){let n=o[e];if(!n||r.has(n))continue;r.add(n);let d=l.get(n)??0;for(let r of t.outgoing.get(n)??[]){if(a.has(r.id))continue;l.set(r.target,Math.max(l.get(r.target)??0,d+1));let t=(s.get(r.target)??0)-1;s.set(r.target,t),0===t&&function(e,t,a,i){let s=a.get(t)??Number.MAX_SAFE_INTEGER,l=e.findIndex((e,t)=>t>i&&(a.get(e)??Number.MAX_SAFE_INTEGER)>s);-1===l?e.push(t):e.splice(l,0,t)}(o,r.target,i,e)}}for(let i of e.nodes)!function e(i){if(r.has(i))return l.get(i)??0;let s=0;for(let l of t.incoming.get(i)??[])a.has(l.id)||(s=Math.max(s,e(l.source)+1));return r.add(i),l.set(i,s),s}(i.id);return l}let c0=new WeakMap,c2={TB:"bottom",BT:"top",LR:"right",RL:"left"};function c3(e,t,a,i,s=184,l=1116){return new Map(e.nodes.map(e=>{let o=cX(e,s,l),r=t.get(e.id),n={...o,width:Math.max(o.width,r?.width??0),height:Math.max(o.height,r?.height??0)},d=(a.outgoing.get(e.id)??[]).filter(t=>t.target!==e.id),c=(a.incoming.get(e.id)??[]).filter(t=>t.source!==e.id).length+d.length,p=!cU(e.kind)&&d.length>1&&d.some(e=>e.label)?Math.max(18,...d.map(e=>{let t=hp(e.label??"");return(i?t.width:t.height)+24})):18,h=d.filter(e=>e.label),g=void 0!==cO(e)?0:"state"===e.kind?32+h.reduce((e,t)=>{let a=hp(t.label);return e+(i?a.width:a.height)+24},0)+Math.max(0,c-h.length-1)*pq:32+Math.max(0,c-1)*p;return[e.id,"choice"!==e.kind||e.label?{...n,...i?{width:Math.max(n.width,g)}:{height:Math.max(n.height,g)}}:cE(n,g)]}))}function c5(e,t,a,i=!1){let s="TB"===e.layout.direction||"BT"===e.layout.direction,[l,o]=s?["left","right"]:["top","bottom"],r=(e,t)=>Math.max(112,(a.get(pB(e.nodeId,o))??0)+(a.get(pB(t.nodeId,l))??0)+18),n=cT(e.edges),d=c3(e,t,n,s),c=cR(e),p=function(e,t,a){let i=cD.get(e);if(!i)return t;for(let s=!0,l=0;s&&l<=e.nodes.length;l+=1){for(let[e,a]of(s=!1,i))t.get(a)<t.get(e)&&(t.set(a,t.get(e)),s=!0);for(let i of e.edges)!a.has(i.id)&&i.source!==i.target&&t.get(i.target)<t.get(i.source)+1&&(t.set(i.target,t.get(i.source)+1),s=!0)}return t}(e,c1(e,n,c),c),h=Array.from((function(e,t,a,i,s,l=!1){var o,r,n,d;let c,p,h=c$(e.nodes),g=new Map;for(let i of e.nodes){let e=a.get(i.id)??0,s=t.get(i.id);s&&g.set(e,[...g.get(e)??[],s])}for(let e=0;e<4;e+=1)for(let e of Array.from(g.keys()).sort((e,t)=>e-t)){let t=g.get(e);if(!t||t.length<2)continue;let a=new Map;(g.get(e-1)??[]).forEach((e,t)=>{a.set(e.nodeId,t)});let l=new Map;(g.get(e+1)??[]).forEach((e,t)=>{l.set(e.nodeId,t)});let o=e=>{let t=[...(i.incoming.get(e.nodeId)??[]).filter(e=>!s.has(e.id)).map(e=>a.get(e.source)).filter(e=>void 0!==e),...(i.outgoing.get(e.nodeId)??[]).filter(e=>!s.has(e.id)).map(e=>l.get(e.target)).filter(e=>void 0!==e)];return 0===t.length?h.get(e.nodeId)??Number.MAX_SAFE_INTEGER:t.reduce((e,t)=>e+t,0)/t.length};g.set(e,[...t].sort((e,t)=>{let a=o(e)-o(t);return Math.abs(a)>.001?a:(h.get(e.nodeId)??Number.MAX_SAFE_INTEGER)-(h.get(t.nodeId)??Number.MAX_SAFE_INTEGER)}))}return l?(o=g,r=e,n=a,d=s,(c=c0.get(r))||(c=function(e,t,a,i){let s=new Map,l=new Set,o=(e,t,a)=>s.set(a,[...s.get(a)??[],[e,t]]);for(let s of t.edges){let[t,r]=i.has(s.id)?[s.target,s.source]:[s.source,s.target],[n,d]=(a.get(t)??0)<=(a.get(r)??0)?[t,r]:[r,t],c=a.get(n)??0,p=a.get(d)??0;if(c===p)continue;let h=n;for(let t=c+1;t<p;t+=1){let a=`\0${s.id}\0${t}`;l.add(a);let i=e.get(t-1),r=e.get(t);r.splice(Math.round((i.indexOf(h)+.5)/i.length*r.length),0,a),o(h,a,t-1),h=a}o(h,d,p-1)}let r=new Map,n=t=>e.get(t)?.forEach((e,t)=>r.set(e,t)),d=[...e.keys()].sort((e,t)=>e-t);d.forEach(n);let c=e=>{let t=s.get(e)??[],a=0;for(let[e,[i,s]]of t.entries())for(let[l,o]of t.slice(e+1))(r.get(i)-r.get(l))*(r.get(s)-r.get(o))<0&&(a+=1);return a},p=()=>d.reduce((e,t)=>e+c(t),0),h=p(),g=()=>new Map([...e].map(([e,t])=>[e,t.filter(e=>!l.has(e))])),u=g();if(0===h)return u;let f=new Map;for(let e of s.values())for(let[t,a]of e){let e=f.get(t)??{above:[],below:[]};e.below.push(a),f.set(t,e);let i=f.get(a)??{above:[],below:[]};i.above.push(t),f.set(a,i)}let m={crossings:h,order:u};for(let t=0;t<8&&m.crossings>0;t+=1){let a=t%2==0;for(let t of a?d.slice(1):d.slice(0,-1).reverse()){let i=e.get(t),s=new Map(i.map((e,t)=>{let i=(a?f.get(e)?.above:f.get(e)?.below)??[];return[e,i.length>0?i.reduce((e,t)=>e+r.get(t),0)/i.length:t]}));i.sort((e,t)=>s.get(e)-s.get(t)),n(t)}for(let t=!0;t;)for(let a of(t=!1,d)){let i=e.get(a);for(let e=0;e+1<i.length;e+=1){let s=c(a-1)+c(a);[i[e],i[e+1]]=[i[e+1],i[e]],n(a),c(a-1)+c(a)<s?t=!0:([i[e],i[e+1]]=[i[e+1],i[e]],n(a))}}let i=p();i<m.crossings&&(m={crossings:i,order:g()})}return m.order}(new Map([...o].map(([e,t])=>[e,t.map(e=>e.nodeId)])),r,n,d),c0.set(r,c)),p=new Map([...o.values()].flat().map(e=>[e.nodeId,e])),new Map([...o.keys()].map(e=>[e,(c.get(e)??[]).flatMap(e=>p.has(e)?[p.get(e)]:[])]))):g})(e,d,p,n,c,i).entries()).sort(([e],[t])=>e-t).map(([e,t])=>({breadth:t.reduce((e,a,i)=>e+(s?a.width:a.height)+(i>0?r(t[i-1],a):0),0),depth:Math.max(...t.map(e=>s?e.height:e.width)),rank:e,shapes:t})),g=c2[e.layout.direction],u=(e,t)=>Math.max(0,...e.map(e=>a.get(pB(e.nodeId,t))??0));return{feedbackEdges:c,gapAfter:h.map((t,i)=>{let l=s?0:Math.max(0,...e.edges.filter(e=>t.shapes.some(t=>t.nodeId===e.source)&&e.label&&e.source!==e.target).map(e=>hp(e.label,cU(d.get(e.source)?.kind)).width+16+72)),o=h[i+1];return Math.max(96,l,o&&a.size>0?u(t.shapes,g)+u(o.shapes,pF[g])+18:0)}),gapBetween:r,highSide:o,lowSide:l,rankByNodeId:p,rankMetrics:h,reachOf:u,vertical:s}}let c4={bandOf:new Map,continuations:new Set},c6={crossingRepair:!1,reorder:!1,wrap:c4},c7={TB:"LR",BT:"LR",LR:"TB",RL:"TB"};function c8(e,t){let[a,i]=e>t?[e,t]:[t,e];return(a+40)/(i+40)}function c9(e,t,a=0,i){let s;if("orthogonal"!==e.layout.edgeRouting||cQ(e)||pl(e))return c4;let{feedbackEdges:l,gapAfter:o,rankByNodeId:r,rankMetrics:n}=c5(e,i?.sizes??new Map,new Map,t),d="TB"===e.layout.direction||"BT"===e.layout.direction,c=(e,t)=>n.slice(e,t+1).reduce((e,t)=>e+t.depth,0)+o.slice(e,t).reduce((e,t)=>e+t,0),p=(e,t)=>Math.max(...n.slice(e,t+1).map(e=>e.breadth)),h=n.length-1,g=c8(c(0,h),p(0,h)),u=e=>Math.max(...n[e].shapes.map(e=>i?.weights.get(e.nodeId)??1)),f=(e,t)=>{let a=0;for(let i=e;i<=t;i+=1)a+=u(i);return a};if(5>f(0,h)||c(0,h)<=p(0,h))return c4;let m=new Map(e.nodes.map(e=>[e.id,e.kind])),v=e=>r.get(e)??0,y=new Map;for(let[t,a]of n.entries()){let s=e.edges.filter(e=>Math.min(v(e.source),v(e.target))<=a.rank&&Math.max(v(e.source),v(e.target))>a.rank),[o]=s;(i?s.length>=1:1===s.length)&&o&&s.every(e=>!l.has(e.id)&&v(e.source)===a.rank&&v(e.target)===a.rank+1&&!cU(m.get(e.source)))&&y.set(t,o.id)}let w=new Map(e.edges.map(e=>[e.id,e.label])),x=(e,t)=>{let a=w.get(y.get(t)??""),i=a?hp(a):void 0,s=t===h?0:Math.max(36,i?d?Math.max(40,i.height+24):i.width+16:0);return c(e,t)+36*(e>0)+s},b=[...y.keys(),h].sort((e,t)=>e-t),k=i?1:2,M=e=>{let t,i=(s,l)=>{if(s.length===e-1){if(f(l+1,h)<k)return;let e=[...s,h],i=e.map((t,a)=>x(0===a?0:e[a-1]+1,t)),o=Math.max(...i);if(Math.min(...i)<a*o)return;let r=i.reduce((e,t)=>e+t**2,0);(!t||o<t.longest||o===t.longest&&r<t.squares)&&(t={ends:e,longest:o,squares:r});return}for(let e of b)e!==h&&e>l&&f(l+1,e)>=k&&i([...s,e],e)};return i([],-1),t},[C,z]=i?[i.bands,Math.min(i.bands,b.length)]:[2,Math.min(6,b.length)];for(let e=C;e<=z;e+=1){let t=new Map;for(let e of b)f(0,e)>=k&&e<h&&t.set(e,{ends:[e],longest:x(0,e),squares:x(0,e)**2});for(let a=2;a<=e;a+=1){let i=new Map;for(let s of b)if(a===e?s===h:s!==h)for(let[e,a]of[...t].reverse()){if(s<=e||f(e+1,s)<k)continue;let t=x(e+1,s),l={ends:[...a.ends,s],longest:Math.max(a.longest,t),squares:a.squares+t**2},o=i.get(s);(!o||l.longest<o.longest||l.longest===o.longest&&l.squares<o.squares)&&i.set(s,l)}t=i}let i=a>0?M(e):t.get(h);if(!i)continue;let l=[0,...i.ends.slice(0,-1).map(e=>e+1)].reduce((e,t,a)=>e+p(t,i.ends[a]),0)+(e-1)*144,o=c8(i.longest,l);if((!s||o<s.aspect)&&(s={aspect:o,ends:i.ends}),o<=2)break}if(!s||s.aspect>=g)return c4;let _=new Map,L=0;for(let[e,t]of n.entries()){for(let e of t.shapes)_.set(e.nodeId,L);s.ends.includes(e)&&e!==h&&(L+=1)}return{bandOf:_,continuations:new Set(s.ends.filter(e=>e!==h).map(e=>y.get(e))),...i?{under:!0}:{}}}function pe(e,t=new Map,a=new Map,{compactGaps:i,reorder:s,wrap:l}=c6,o=new Map){let{gapAfter:r,gapBetween:n,highSide:d,lowSide:c,rankMetrics:p,reachOf:h,vertical:g}=c5(e,t,a,s),u=[];for(let[e,t]of p.entries()){let a=l.bandOf.get(t.shapes[0].nodeId)??0;(u[a]??=[]).push({index:e,metric:t})}let f=[],m=l.under?function(e,t,a,i){let s=new Map,l=t.map(e=>{let t=0;for(let{index:i,metric:l}of e){for(let e of l.shapes)s.set(e.nodeId,t+l.depth);t+=l.depth+a[i]}return t-a[e.at(-1).index]}),o=Math.max(...l),r=[0];for(let a=1;a<t.length;a+=1){let t=e.edges.flatMap(e=>i.get(e.source)===a-1&&i.get(e.target)===a?[s.get(e.source)+r[a-1]-l[a]]:[]);r.push(Math.max(0,Math.min(Math.max(0,...t),o-l[a])))}return r}(e,u,r,l.bandOf):[],v=48;for(let[e,t]of u.entries()){let a=Math.max(...t.map(({metric:e})=>e.breadth)),s=48+(m[e]??0);for(let{index:e,metric:l}of t){let[t]=1===l.shapes.length?l.shapes:[],d=v+Math.max(0,a-l.breadth)/2-(t?o.get(t.nodeId)??0:0);for(let[e,t]of l.shapes.entries()){let a=l.shapes[e+1];g?(f.push({...t,x:d,y:s+Math.max(0,l.depth-t.height)/2}),d+=t.width):(f.push({...t,x:s+Math.max(0,l.depth-t.width)/2,y:d}),d+=t.height),a&&(d+=n(t,a))}s+=l.depth+Math.min(i?.get(e)??1/0,r[e])}let l=u[e+1];l&&(v+=a+Math.max(144,h(t.flatMap(({metric:e})=>e.shapes),d)+h(l.flatMap(({metric:e})=>e.shapes),c)+72))}if("BT"===e.layout.direction){let e=Math.max(...f.map(e=>e.y+e.height));return f.map(t=>({...t,y:48+e-t.y-t.height}))}if("RL"===e.layout.direction){let e=Math.max(...f.map(e=>e.x+e.width));return f.map(t=>({...t,x:48+e-t.x-t.width}))}return f}function pt(e,t=new Map,a=new Map,i=c6,s=new Map){if(pl(e))return function(e,t,a,i=c4){let s=e.lanes,{direction:l}=e.layout,{along:o,across:r,backSide:n,breadth:d,columnCount:c,columnOf:p,columns:h,content:g,depth:u,depthOf:f,forwardSide:m,gapAfter:v,headerSize:y,laneIndex:w,laneOf:x,offset:b,padding:k,poolBreadth:M,reach:C,shapes:z,vertical:_,wrapped:L}=po(e,t,a),B=p.map(e=>i.bandOf.get(e[0]?.nodeId??"")??0),S=Math.max(0,...B)+1,A=Array.from({length:S},(e,t)=>t),P=Math.max(48,...A.map(e=>C(p[B.indexOf(e)]??[],n)+ps)),V=Math.max(48,...A.map(e=>C(p[B.lastIndexOf(e)]??[],m)+ps)),H="RL"===l||"BT"===l,[q,F]=H?[V,P]:[P,V],I=48+y+q,E=[],O=I,U=0;for(let[e,t]of u.entries())e>0&&B[e]!==B[e-1]&&(O=I),E.push(O),O+=t,U=Math.max(U,O-I),e<c-1&&B[e+1]===B[e]&&(O+=v[e]);let X=I+U,T=X+F,$=A.map(t=>[...i.continuations].filter(a=>{let s=e.edges.find(e=>e.id===a);return void 0!==s&&i.bandOf.get(s.source)===t})),Y=[];for(let e of(O=48,A))Y.push(O),O+=M+pr($[e].length);let G=(e,t)=>Y[e]+d.slice(0,t).reduce((e,t)=>e+t,0),R=e.nodes.map(e=>{let t=z.get(e.id),a=w.get(e.lane),i=h.get(e.id),s=E[i]+(u[i]-t[f])/2,l=H?I+X-s-t[f]:s,n=G(B[i],a)+k[a].low+(d[a]-k[a].low-k[a].high-g[a])/2+b.get(e.id);return{...t,[o]:l,[r]:n}}),D=(e,t,a,i)=>_?{x:a,y:e,width:i,height:t}:{x:e,y:a,width:t,height:i},Z=function(e,t,a){let i=new Map;for(let s of e){let e=`lane:${encodeURIComponent(s.id)}`,l=e=>Array.from({length:t},(t,a)=>0===a?e:`${e}:${a+1}`).some(e=>a.has(e)||a.has(`${e}:header`)),o=e;for(let t=1;l(o);t+=1)o=`${e}@${t}`;i.set(s.id,o)}return i}(s,S,new Set(e.nodes.map(e=>e.id))),j=A.flatMap(e=>s.map((t,a)=>({box:D(48,T-48,G(e,a),d[a]),elementId:0===e?Z.get(t.id):`${Z.get(t.id)}:${e+1}`,header:D(48,y,G(e,a),d[a]),id:t.id,label:t.label,pool:e,text:L[a].text}))),N=A.map(e=>D(48,T-48,Y[e],M));return{lanes:{continuations:i.continuations,frames:j,laneOf:x,pool:pa(N),pools:N,vertical:_},nodes:R}}(e,t,a,i.wrap);let l=cQ(e);return l?function(e,t,a,i,s,l){let o="TB"===e.layout.direction||"BT"===e.layout.direction,{zoned:r}=t,n=28*!r,d=new Map(a),c=new Map(i),p=new Map(t.groups.map(e=>[e.group.id,e])),h=new Map,g=new Map,u=s.groupsAcross&&!r?new Set(t.groups.map(e=>e.group.id)):new Set,f=({across:e,children:a,crossing:m,diagram:v,group:y})=>{for(let e of a)f(p.get(e));let w=pe(u.has(y.id)?e:v,d,c,{...c6,reorder:s.reorder,wrap:s.zoneWraps?.get(y.id)??c4},g),x=pa(w),b=(e,t)=>"top"===t?e.y-x.y:"bottom"===t?x.y+x.height-e.y-e.height:"left"===t?e.x-x.x:x.x+x.width-e.x-e.width,k=e=>Math.max(r?24:40,...w.map(t=>(c.get(pB(t.nodeId,e))??0)-b(t,e)+18))+(l.get(y.id)??0),M=ij(y.label),C=r?12+M+iG.clearance:M+2*iG.clearance,z=w.filter(e=>m.has(e.nodeId)&&.01>=b(e,"top")).map(e=>e.x-x.x+e.width/2-36),_={top:k("top")+36*!!r,bottom:k("bottom"),right:k("right"),left:o&&z.length>0?Math.max(k("left"),C+18-Math.min(...z)):k("left")},L={content:x,group:y,height:x.height+_.top+_.bottom,nodes:w,padding:_,width:Math.max(x.width+_.left+_.right,r?C+12:M+2*iG.clearance+16,(i.get(pB(y.id,"top"))??0)>0&&t.composites.has(y.id)?M+2*iG.clearance+36+16+t.crossEdges.filter(e=>e.source===y.id||e.target===y.id).length*pq:0)};h.set(y.id,L);let B=cK(y.id);d.set(B,{width:L.width,height:L.height+n}),r&&g.set(B,o?(L.padding.left-L.padding.right)/2:(L.padding.top-L.padding.bottom)/2);let S=(L.width-L.content.width-L.padding.left-L.padding.right)/2,A=(e,t)=>"top"===t?e.y-L.content.y+L.padding.top+n:"bottom"===t?L.content.y+L.content.height-e.y-e.height+L.padding.bottom:"left"===t?e.x-L.content.x+L.padding.left+S:L.content.x+L.content.width-e.x-e.width+L.padding.right+S;for(let e of["top","right","bottom","left"]){let a=Math.max(0,t.composites.has(y.id)?(i.get(pB(y.id,e))??0)-("top"===e?n:0):0,...w.map(t=>(c.get(pB(t.nodeId,e))??0)-A(t,e)));a>0&&c.set(pB(B,e),a)}};for(let e of t.groups)t.parentOf.has(e.group.id)||f(e);let m=s.zoneWraps?.get("")??c4,v=pe(t.top,d,c,{...s,wrap:m},g),y=new Map;for(let e of v)e.nodeId.startsWith(cZ)||y.set(e.nodeId,{nodes:[e]});let w=new Map,x=(e,t,a)=>{let i=h.get(e),s={x:t.x,y:t.y+n,width:t.width,height:t.height-n};w.set(e,s);let l=s.x+i.padding.left+(s.width-i.content.width-i.padding.left-i.padding.right)/2-i.content.x,o=s.y+i.padding.top+(s.height-i.content.height-i.padding.top-i.padding.bottom)/2-i.content.y;for(let e of i.nodes){let t={...e,x:e.x+l,y:e.y+o};e.nodeId.startsWith(cZ)?x(e.nodeId.slice(cZ.length),t,a):a.push(t)}return s};for(let e of t.groups){if(t.parentOf.has(e.group.id))continue;let a=cK(e.group.id),i=v.find(e=>e.nodeId===a),s=[],l=x(e.group.id,i,s),o=t.groups.flatMap(({group:a})=>a.id!==e.group.id&&pi(t,a.id).at(-1)===e.group.id?[a.id]:[]);y.set(a,{frame:l,...o.length>0?{nested:new Map(o.map(e=>[e,w.get(e)]))}:{},nodes:s})}for(let[e,a]of(function(e,t,a,i=new Map){let{crossEdges:s,top:l}=e,o=cR(l),r=c1(l,cT(l.edges),o),n=new Map;for(let e of l.nodes){let t=r.get(e.id)??0;n.set(t,[...n.get(t)??[],e.id])}let d=a?"x":"y",c=a?"width":"height",p=Math.max(0,...i.values())+1,h=e=>{let a=[...t].filter(([t])=>(i.get(t)??0)===e).map(([,e])=>e.frame??e.nodes[0]);return{start:Math.min(...a.map(e=>e[d])),end:Math.max(...a.map(e=>e[d]+e[c]))}},g=Array.from({length:p},(e,t)=>0===t?0:h(t).start-h(t-1).end),u=e=>(n.get(e)??[]).reduce((e,a)=>{let i=t.get(a);return e+(i.frame??i.nodes[0])[c]},0),f=[...n.keys()].sort((e,t)=>e-t),m=f.reduce((e,t)=>u(t)>u(e)?t:e),v=a=>{let i=e.composites.has(a)?t.get(cK(a)).frame:[...t.values()].flatMap(e=>e.nodes).find(e=>e.nodeId===a);return i[d]+i[c]/2},y=(e,a)=>{let i=t.get(e);for(let[e,t]of(i.nodes=i.nodes.map(e=>({...e,[d]:e[d]+a})),i.frame&&(i.frame={...i.frame,[d]:i.frame[d]+a}),i.nested??[]))i.nested.set(e,{...t,[d]:t[d]+a})},w=e=>i.get(n.get(e)?.[0]??"")??0,x=(e,t,a)=>{let[i]=n.get(e)??[];if(!i||1!==n.get(e).length||w(e)!==w(t))return;let d=l.edges.find(e=>!o.has(e.id)&&(a?e.target:e.source)===i&&r.get(a?e.source:e.target)===t);if(!d)return;let c=s[l.edges.indexOf(d)],[p,h]=a?[c.target,c.source]:[c.source,c.target];y(i,v(h)-v(p))},b=a=>{let i=n.get(a);if(!e.zoned||i.length<2)return;let r=e=>t.get(e).frame??t.get(e).nodes[0],p=new Map(i.map(e=>[e,l.edges.flatMap((t,a)=>{let l=s[a],[r,n]=t.source===e?[l.source,l.target]:[l.target,l.source];if(t.source!==e&&t.target!==e||i.includes(t.source===e?t.target:t.source))return[];let d=v(n);return o.has(t.id)&&t.source===e?[d,d]:[d]})])),h=[...i].sort((e,t)=>r(e)[d]-r(t)[d]),g=e=>e.reduce((e,t)=>e+t,0)/e.length,u=e=>p.get(e).length>0?g(p.get(e)):r(e)[d]+r(e)[c]/2,f=[...h].sort((e,t)=>u(e)-u(t)),m=h.slice(1).map((e,t)=>{let a=r(h[t]);return r(e)[d]-a[d]-a[c]}),w=i.flatMap(e=>p.get(e)),x=f.reduce((e,t)=>e+r(t)[c],0)+m.reduce((e,t)=>e+t,0),b=w.length>0?g(w)-x/2:r(h[0])[d];for(let[e,t]of f.entries())y(t,b-r(t)[d]),b+=r(t)[c]+(m[e]??0)};for(let e of f.filter(e=>e>m))x(e,e-1,!0),b(e);for(let e of f.filter(e=>e<m).reverse())x(e,e+1,!1),b(e);for(let e=1;e<p;e+=1){let a=h(e-1).end+g[e]-h(e).start;for(let[s]of t)(i.get(s)??0)===e&&y(s,a)}}(t,y,o,m.bandOf),y))for(let[t,i]of(a.frame&&w.set(e.slice(cZ.length),a.frame),a.nested??[]))w.set(t,i);let b=[...y.values()].flatMap(e=>e.nodes),k=c$(e.nodes);b.sort((e,t)=>k.get(e.nodeId)-k.get(t.nodeId));let M=(r?[...t.groups].sort((e,a)=>pi(t,e.group.id).length-pi(t,a.group.id).length):t.groups).map(({group:e})=>{let t=w.get(e.id);return{box:t,elementId:`group:${e.id}`,id:e.id,...r&&void 0!==e.kind?{kind:e.kind}:{},label:e.label,labelBox:r?function(e,t){let{clearance:a,height:i}=iG;return{x:e.x+12-a,y:e.y+(36-i)/2-a,width:ij(t)+2*a,height:i+2*a}}(t,e.label):iN({...t,name:e.label})}});return{groups:{across:u,composites:t.composites,frames:M,groupOf:t.groupOf,parentOf:t.parentOf,zoned:r},nodes:b}}(e,l,t,a,i,s):{nodes:pe(e,t,a,i)}}function pa(e){let t=Math.min(...e.map(e=>e.x)),a=Math.min(...e.map(e=>e.y));return{x:t,y:a,width:Math.max(...e.map(e=>e.x+e.width))-t,height:Math.max(...e.map(e=>e.y+e.height))-a}}function pi(e,t){let a=[];for(let i=t;void 0!==i;i=e.parentOf.get(i))a.push(i);return a}let ps=36;function pl(e){return(e.lanes??[]).length>0}function po(e,t,a){let i=e.lanes,{direction:s}=e.layout,l="TB"===s||"BT"===s,[o,r]=l?["y","x"]:["x","y"],[n,d]=l?["height","width"]:["width","height"],[c,p]=l?["left","right"]:["top","bottom"],h=c2[s],g=pF[h],u=(e,t)=>a.get(pB(e,t))??0,f=cT(e.edges),m=l?c3(e,t,f,l):c3(e,t,f,l,144,744),v=function(e){let t=e.lanes??[],a=new Map(t.map((e,t)=>[e.id,t])),i=new Map(e.nodes.map(e=>[e.id,a.get(e.lane??"")??0])),s=cR(e),l=e.edges.filter(e=>!s.has(e.id)&&e.source!==e.target),o=new Set,r=new Set;for(let e of l){let[t,a]=[i.get(e.source),i.get(e.target)],s=`${e.source}\0${a}`;1!==Math.abs(t-a)||r.has(s)||(r.add(s),o.add(e.id))}let n=new Map(e.nodes.map(e=>[e.id,[]])),d=new Map(e.nodes.map(e=>[e.id,[]]));for(let e of l)n.get(e.target).push(e),d.get(e.source).push(e);let c=c$(e.nodes),p=new Map(e.nodes.map(e=>[e.id,n.get(e.id).length])),h=e.nodes.filter(e=>0===p.get(e.id)).map(e=>e.id),g=new Map,u=new Map;for(;h.length>0;){h.sort((e,t)=>c.get(e)-c.get(t));let e=h.shift(),a=i.get(e),s=t.map((t,a)=>Math.max(-1,...n.get(e).map(e=>u.get(e.source)[a]))),l=s[a]+1;for(let t of n.get(e))l=Math.max(l,g.get(t.source)+ +!o.has(t.id));for(let t of(g.set(e,l),s[a]=l,u.set(e,s),d.get(e))){let e=p.get(t.target)-1;p.set(t.target,e),0===e&&h.push(t.target)}}return g}(e),y=new Map(i.map((e,t)=>[e.id,t])),w=new Map(e.nodes.map(e=>[e.id,e.lane])),x=Math.max(0,...v.values())+1,b=i.map(()=>Array.from({length:x},()=>[]));for(let t of e.nodes)b[y.get(t.lane)][v.get(t.id)].push(t.id);let k=cR(e),M=new Map(e.nodes.map(e=>[e.id,[]]));for(let t of e.edges)k.has(t.id)||t.source===t.target||(M.get(t.source).push(t.target),M.get(t.target).push(t.source));let C=c$(e.nodes),z=e=>{let t=b[y.get(w.get(e))][v.get(e)];return y.get(w.get(e))+(t.indexOf(e)+.5)/t.length};for(let e=0;e<4;e+=1)for(let e of b)for(let t of e){if(t.length<2)continue;let e=new Map(t.map(e=>{let t=M.get(e);return[e,t.length>0?t.reduce((e,t)=>e+z(t),0)/t.length:z(e)]}));t.sort((t,a)=>e.get(t)-e.get(a)||C.get(t)-C.get(a))}let _=Array.from({length:x},(t,a)=>e.nodes.filter(e=>v.get(e.id)===a).map(e=>m.get(e.id))),L=_.map(e=>Math.max(0,...e.map(e=>e[n]))),B=(e,t)=>Math.max(0,...e.map(e=>u(e.nodeId,t))),S=_.map((t,i)=>{let s=new Set(t.map(e=>e.nodeId)),o=l?0:Math.max(0,...e.edges.filter(e=>s.has(e.source)&&e.label&&(v.get(e.target)??0)>i).map(e=>hp(e.label,cU(m.get(e.source)?.kind)).width+16+72)),r=_[i+1];return Math.max(72,o,r&&a.size>0?B(t,h)+B(r,g)+18:0)}),A=(e,t)=>Math.max(112,u(e,p)+u(t,c)+18),P=e=>e.reduce((t,a,i)=>t+m.get(a)[d]+(i>0?A(e[i-1],a):0),0),V=b.map(e=>Math.max(0,...e.map(P))),H=new Map;for(let[e,t]of b.entries())for(let a of t){let t=(V[e]-P(a))/2;for(let[e,i]of a.entries())e>0&&(t+=A(a[e-1],i)),H.set(i,t),t+=m.get(i)[d]}let q=b.map((e,t)=>{let a=e.flat(),i=e=>Math.max(32,...a.map(a=>{let i=e===c?H.get(a):V[t]-H.get(a)-m.get(a)[d];return u(a,e)-i+ps}));return{low:i(c),high:i(p)}}),F=i.map(e=>pn(e.label)),I=l?0:Math.max(...F.map(e=>e.textWidth))+32,E=b.map((e,t)=>Math.max(q[t].low+V[t]+q[t].high,l?pn(i[t].label).longestWord+32:F[t].textHeight+32)),O=i.map((e,t)=>l?pn(e.label,E[t]-32):F[t]),U=l?Math.max(44,...O.map(e=>e.textHeight+32)):Math.ceil(I),X=E.reduce((e,t)=>e+t,0);return{along:o,across:r,backSide:g,breadth:E,columnCount:x,columnOf:_,columns:v,content:V,depth:L,depthOf:n,forwardSide:h,gapAfter:S,headerSize:U,laneIndex:y,laneOf:w,offset:H,padding:q,poolBreadth:X,reach:B,shapes:m,vertical:l,wrapped:O}}function pr(e){return Math.max(144,72+(e+1)*18)}function pn(e,t){let a=void 0===t?aX(e,868):aT(e,t,16),i=a.split("\n");return{longestWord:Math.max(...e.split(/\s+/u).map(e=>aE(e,16))),text:a,textHeight:Math.ceil(16*i.length*1.35),textWidth:Math.ceil(aE(a,16))}}function pd(e,t){return{type:"node",id:e,nodeId:e,shape:"rectangle",label:"",x:t.x,y:t.y,width:t.width,height:t.height}}function pc(e){return(e?.frames??[]).flatMap(t=>e.composites.has(t.id)?[{...pd(t.elementId,t.box),kind:"composite",label:t.label,nodeId:t.id}]:[])}function pp(e){let t=28*!e?.zoned;return(e?.frames??[]).map(e=>pd(e.elementId,{...e.box,y:e.box.y-t,height:e.box.height+t}))}let ph="group-outline:",pg=`${ph}lane:`;function pu(e){return im([{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height},{x:e.x,y:e.y}])}function pf(e,t){return e.x>=t.x-.01&&e.x<=t.x+t.width+.01&&e.y>=t.y-.01&&e.y<=t.y+t.height+.01}function pm(e){return e.elementId}function pv(e,t=!1){return e?[...e.frames.map(e=>pd(`lane-header:${pm(e)}`,e.header)),...(t?[]:e.pools).flatMap(({x:e,y:t,width:a,height:i},s)=>[pd(`lane-wall:${s}:top`,{x:e-4,y:t-4,width:a+8,height:4}),pd(`lane-wall:${s}:bottom`,{x:e-4,y:t+i,width:a+8,height:4}),pd(`lane-wall:${s}:left`,{x:e-4,y:t-4,width:4,height:i+8}),pd(`lane-wall:${s}:right`,{x:e+a,y:t-4,width:4,height:i+8})])]:[]}function py(e){return e.pools.flatMap((t,a)=>{var i,s,l;let o,r,n;return i=t,s=e.frames.filter(e=>e.pool===a),l=e.vertical,o=s[0].header,r=[...s.map(e=>l?e.box.x:e.box.y),l?i.x+i.width:i.y+i.height],n=l?[i.y,o.y+o.height,i.y+i.height]:[i.x,o.x+o.width,i.x+i.width],[...r.flatMap(e=>im(l?[{x:e,y:i.y},{x:e,y:i.y+i.height}]:[{x:i.x,y:e},{x:i.x+i.width,y:e}])),...n.flatMap(e=>im(l?[{x:i.x,y:e},{x:i.x+i.width,y:e}]:[{x:e,y:i.y},{x:e,y:i.y+i.height}]))]})}function pw(e){return e?[pd("lanes",e.pool)]:[]}function px(e,t){let{source:a,target:i}=e,[s,l]=t.vertical?["y","height"]:["x","width"];return t.laneOf.get(a.nodeId)!==t.laneOf.get(i.nodeId)&&pO(e.sourceEdge)===s&&e.targetEdge===pF[e.sourceEdge]&&Math.min(a[s]+a[l],i[s]+i[l])-Math.max(a[s],i[s])>.01}function pb(e,t){let[a,i]=t.vertical?["y","height"]:["x","width"];for(let s of e){let{source:e,target:l}=s;if(pS(s)||t.continuations.has(s.edge.id)||t.laneOf.get(e.nodeId)===t.laneOf.get(l.nodeId)||Math.min(e[a]+e[i],l[a]+l[i])-Math.max(e[a],l[a])<=.01)continue;let o=t.vertical?pM(l).x>pM(e).x:pM(l).y>pM(e).y;s.sourceEdge=t.vertical?o?"right":"left":o?"bottom":"top",s.targetEdge=pF[s.sourceEdge]}}function pk(e,t=!1){return{type:"text",id:`label:${e.nodeId}`,containerId:e.id,...t&&e.groupIds?{groupIds:[...e.groupIds]}:{},x:e.x+e.width/2,y:e.y+e.height/2,text:e.label,fontSize:14,maxWidth:Math.max(1,e.width-36),...e.icon&&!t?{verticalAlign:"bottom"}:{}}}function pM(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function pC(e,t,a){let i=pM(e),s=pM(t),l=s.x-i.x,o=s.y-i.y,r=e.kind?.toLowerCase();if("LR"===a||"RL"===a)return l>=0?{sourceEdge:"right",targetEdge:"left"}:{sourceEdge:"left",targetEdge:"right"};if(o<0)return!(Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)>.01)&&Math.abs(l)>Math.abs(o)?{sourceEdge:l>0?"right":"left",targetEdge:"bottom"}:{sourceEdge:"top",targetEdge:"bottom"};let n=cU(r)&&o>e.height+96;return cU(r)&&o>0&&(0!==l||n)?{sourceEdge:l<0?"left":"right",targetEdge:"top"}:o>0?{sourceEdge:"bottom",targetEdge:"top"}:Math.abs(l)>Math.abs(o)?l>0?{sourceEdge:"right",targetEdge:"left"}:{sourceEdge:"left",targetEdge:"right"}:{sourceEdge:"top",targetEdge:"bottom"}}function pz(e,t,a){return Math.min(a,Math.max(t,e))}function p_(e,t,a=0){let i;if(aR(e.shape))return aJ({...e,shape:e.shape},t,p_({...e,shape:"rectangle"},t,a));let s=(i="top"===t||"bottom"===t?e.width/2-16:e.height/2-16)>0?pz(a,-i,i):0,l=pM(e),o=e.width/2,r=e.height/2;if("diamond"===e.shape&&o>0&&r>0){if("top"===t||"bottom"===t){let e=l.x+s,a=r*(1-Math.abs(s)/o);return{x:e,y:"top"===t?l.y-a:l.y+a}}let e=l.y+s,a=o*(1-Math.abs(s)/r);return{x:"left"===t?l.x-a:l.x+a,y:e}}if(("ellipse"===e.shape||"circle"===e.shape)&&o>0&&r>0){if("top"===t||"bottom"===t){let e=l.x+s,a=r*Math.sqrt(Math.max(0,1-(s/o)**2));return{x:e,y:"top"===t?l.y-a:l.y+a}}let e=l.y+s,a=o*Math.sqrt(Math.max(0,1-(s/r)**2));return{x:"left"===t?l.x-a:l.x+a,y:e}}switch(t){case"top":return{x:e.x+e.width/2+s,y:e.y};case"right":return{x:e.x+e.width,y:e.y+e.height/2+s};case"bottom":return{x:e.x+e.width/2+s,y:e.y+e.height};case"left":return{x:e.x,y:e.y+e.height/2+s}}}function pL(e){return`${e.edgeId}:${e.endpoint}`}function pB(e,t){return`${e}:${t}`}function pS(e){return e.edge.source===e.edge.target}function pA(e,t){let[a,i]="source"===t?[e.sourceEdge,e.targetEdge]:[e.targetEdge,e.sourceEdge];return pI[i][pO(a)]}function pP(e,t){let a="source"===t?e.sourceEdge:e.targetEdge;return pS(e)?1e9*pA(e,t):pM("source"===t?e.target:e.source)[pO(a)]}function pV(e,t){return e.find(e=>e.edge.id===t)?.pair??0}function pH(e,t=!1){let a=new Map;for(let t of e){let e=pB(t.source.nodeId,t.sourceEdge),i=pB(t.target.nodeId,t.targetEdge);a.set(e,[...a.get(e)??[],{edgeId:t.edge.id,endpoint:"source",coordinate:pP(t,"source")}]),a.set(i,[...a.get(i)??[],{edgeId:t.edge.id,endpoint:"target",coordinate:pP(t,"target")}])}let i=new Map;for(let s of a.values()){let a=s.filter(e=>"source"===e.endpoint),l=a.map(t=>e.find(e=>e.edge.id===t.edgeId)).filter(e=>e.edge.label),o=a.length>1&&l.length>0&&(!cU(l[0].source.kind)||t&&l.length>1)?Math.max(18,...l.map(e=>{let t=hp(e.edge.label);return("top"===e.sourceEdge||"bottom"===e.sourceEdge?t.width:t.height)+24})):18;s.sort((t,a)=>t.coordinate-a.coordinate||pV(e,t.edgeId)-pV(e,a.edgeId)).forEach((e,t)=>{i.set(pL(e),(t-(s.length-1)/2)*18*o/18)})}return i}let pq=36,pF={top:"bottom",right:"left",bottom:"top",left:"right"},pI={top:{x:0,y:-1},right:{x:1,y:0},bottom:{x:0,y:1},left:{x:-1,y:0}};function pE(e){return"source"===e.endpoint?e.route.sourceEdge:e.route.targetEdge}function pO(e){return"top"===e||"bottom"===e?"x":"y"}function pU(e,t){return("x"===pO(t)?e.width:e.height)/2-16}function pX(e,t){return"source"===e.endpoint?hn(e.route,t,36):hr(e.route,t,36)}let pT={desired:0,high:1/0,low:-1/0,priority:0};function p$(e,t,a=!1,i=pq){let s=pH(e,t),l=new Map;for(let t of e)for(let e of["source","target"]){let a=pB(t[e].nodeId,"source"===e?t.sourceEdge:t.targetEdge);l.set(a,[...l.get(a)??[],{endpoint:e,key:pL({edgeId:t.edge.id,endpoint:e}),route:t}])}let o=[...l.values()].sort((e,t)=>t.length-e.length);for(let e=0;e<3;e+=1)for(let e of o){let o=pE(e[0]),r=e[0].route[e[0].endpoint],n=new Map(e.map(e=>[e,function(e,t,a){let i=function(e,t,a){let i={endpoint:"source"===e.endpoint?"target":"source",key:pL({edgeId:e.route.edge.id,endpoint:"source"===e.endpoint?"target":"source"}),route:e.route},s=e.route[e.endpoint],l=pE(e),o=pE(i),r=pO(l),n=pI[l];if(pS(e.route)){let t=pA(e.route,e.endpoint)*Math.max(0,pU(s,l));return{desired:t,high:t,low:t,priority:2}}let d=p_(s,l,t.get(e.key)??0),c=p_(e.route[i.endpoint],o,t.get(i.key)??0),p=(c.x-d.x)*n.x+(c.y-d.y)*n.y;if(pO(o)!==r&&p>=pX(e,d)){let e=ha(c,o,pX(i,c)),t=pI[o][r],a=e[r]-pM(s)[r];return{desired:0,high:t<0?a:1/0,lane:t*p,low:t>0?a:-1/0,priority:1}}let h=(e,t)=>(function(e,t){switch(e.shape){case"rectangle":return!1;case"cylinder":return"top"===t||"bottom"===t;case"pipe":return"left"===t||"right"===t;case"document":return"bottom"===t;default:return!0}})(e.route[e.endpoint],t)&&a.get(pB(e.route[e.endpoint].nodeId,t))?.length===1,g=o===pF[l]&&p>0;if(h(e,l)&&!(g&&"target"===e.endpoint&&h(i,o)))return{desired:0,high:0,low:0,priority:2};let u=c[r]-pM(s)[r];return g&&Math.abs(u)<=pU(s,l)?{desired:u,high:u,low:u,priority:2}:pT}(e,t,a),s=e.route[e.endpoint];if("composite"!==s.kind||"top"!==pE(e))return i;let l=iN({...s,name:s.label}),o=l.x+l.width+18-pM(s).x;return{...i,desired:Math.max(o,i.desired),low:Math.max(o,i.low),high:Math.max(o,i.high),priority:3}}(e,s,l)])),d=function(e,t,a,i){let s=e=>{let t="source"===e.endpoint?"target":"source";if(!i||pS(e.route))return pP(e.route,e.endpoint);let s=e.route[t],l="source"===t?e.route.sourceEdge:e.route.targetEdge,o=pL({edgeId:e.route.edge.id,endpoint:t});return ha(p_(s,l,a.get(o)??0),l,36)[pO(pE(e))]},l=[...e].sort((e,t)=>s(e)-s(t)||(e.route.pair??0)-(t.route.pair??0));for(let e of[1,-1]){let a=l.map((e,a)=>({index:a,lane:t.get(e).lane,slot:e})).filter(({lane:t})=>void 0!==t&&Math.sign(t)===e),i=[...a].sort((e,t)=>e.lane-t.lane);a.forEach(({index:e},t)=>{l[e]=i[t].slot})}return l}(e,n,s,a),c=d.filter(e=>"source"===e.endpoint),p=c.filter(e=>e.route.edge.label),h=c.length>1&&p.length>0&&(!cU(p[0].route.source.kind)||t&&p.length>1)?Math.max(...p.map(e=>{let t=hp(e.route.edge.label);return("x"===pO(o)?t.width:t.height)+24})):0;"state"===r.kind&&function(e){for(let[t,a]of e.entries()){let{route:i}=a;if("source"!==a.endpoint||void 0!==i.pair||pS(i))continue;let s=0===t?-1:t===e.length-1?1:void 0;e.length>1&&void 0!==s?i.labelSide=s:delete i.labelSide}}(d);let g=function(e,t,a){let i=e.map((e,a)=>t.slice(0,a).reduce((e,t)=>e+t,0)),s=i.at(-1)??0;if(s>2*a)return i.map(e=>e-s/2);let l=e.map(()=>-1/0),o=e.map(()=>1/0),r=()=>{let e=l.map((e,t)=>Math.max(e-i[t],-a)),t=o.map((e,t)=>Math.min(e-i[t],a-s));for(let t=1;t<e.length;t+=1)e[t]=Math.max(e[t],e[t-1]);for(let e=t.length-2;e>=0;e-=1)t[e]=Math.min(t[e],t[e+1]);return{highs:t,lows:e}};for(let{index:t}of e.map((e,t)=>({index:t,priority:e.priority})).filter(({priority:e})=>e>0).sort((e,t)=>t.priority-e.priority||e.index-t.index)){l[t]=e[t].low,o[t]=e[t].high;let{highs:a,lows:i}=r();i.some((e,t)=>e>a[t]+.01)&&(l[t]=-1/0,o[t]=1/0)}let{highs:n,lows:d}=r();return(function(e,t,a){let i=[];for(let[s,l]of e.entries())for(i.push({count:1,high:a[s],low:t[s],sum:l,value:pz(l,t[s],Math.max(t[s],a[s]))});i.length>1&&i.at(-2).value>i.at(-1).value;){let e=i.pop(),t=i.at(-1);t.count+=e.count,t.sum+=e.sum,t.low=Math.max(t.low,e.low),t.high=Math.min(t.high,e.high),t.value=pz(t.sum/t.count,t.low,Math.max(t.low,t.high))}return i.flatMap(e=>Array(e.count).fill(e.value))})(e.map((e,t)=>e.desired-i[t]),d,n).map((e,t)=>e+i[t])}(d.map(e=>n.get(e)),d.slice(1).map((e,t)=>Math.max("state"===r.kind?function(e,t,a){let i=(e,t)=>{let{route:i}=e,s="x"===pO(a);if("source"!==e.endpoint||!i.edge.label||pS(i)||pY(i)!==t)return 0;let l=hp(i.edge.label,cU(i.source.kind));return(s?l.width:l.height)+24};return Math.max(i(e,1),i(t,-1))}(d[t],e,o):h,"target"===e.endpoint||"target"===d[t].endpoint?i:18)),pU(r,o));d.forEach((e,t)=>s.set(e.key,g[t]))}return s}function pY(e){let t="left"===e.sourceEdge||"right"===e.sourceEdge;return e.labelSide??e.pair??(t?-1:1)}function pG(e,t){let{edge:a,source:i,sourceEdge:s,target:l,targetEdge:o}=e;return{start:p_(i,s,t.get(pL({edgeId:a.id,endpoint:"source"}))??0),end:p_(l,o,t.get(pL({edgeId:a.id,endpoint:"target"}))??0)}}function pR(e,t,a){let i=0,s=1;for(let[l,o]of[["x","width"],["y","height"]]){let r=a[l]+.01,n=a[l]+a[o]-.01,d=t[l]-e[l];if(.01>=Math.abs(d)){if(e[l]<=r||e[l]>=n)return!1}else{let t=(r-e[l])/d,a=(n-e[l])/d;i=Math.max(i,Math.min(t,a)),s=Math.min(s,Math.max(t,a))}}return i<s}function pD(e,t,a,i){let s=(a.x-pM(e).x)/(e.width/2),l=(a.y-pM(e).y)/(e.height/2),o="ellipse"===e.shape||"circle"===e.shape?{x:s/e.width,y:l/e.height}:"diamond"===e.shape?{x:Math.sign(s)/e.width,y:Math.sign(l)/e.height}:{x:"left"===t?-1:+("right"===t),y:"top"===t?-1:+("bottom"===t)};return(o.x*(i.x-a.x)+o.y*(i.y-a.y))/Math.hypot(o.x,o.y)>=-.01}function pZ(e,t,a,i=!1){let s=new Map,l=cR(t),o="TB"===t.layout.direction||"BT"===t.layout.direction?["right","left","top","bottom"]:["bottom","top","left","right"],r=pH(e);for(let n of e.filter(e=>l.has(e.edge.id)||i&&(e=>{let{start:t,end:i}=pG(e,r);return!pD(e.source,e.sourceEdge,t,i)||!pD(e.target,e.targetEdge,i,t)||a.some(a=>a!==e.source&&a!==e.target&&pR(t,i,a))})(e))){let i,d={sourceEdge:n.sourceEdge,targetEdge:n.targetEdge},c=pL({edgeId:n.edge.id,endpoint:"source"}),p=pL({edgeId:n.edge.id,endpoint:"target"}),h=[d,...o.map(e=>({sourceEdge:e,targetEdge:e})),...o.flatMap(e=>o.map(t=>({sourceEdge:e,targetEdge:t})))],g=[!1,!0].flatMap(e=>h.map(t=>({...t,spread:e}))),u=!1;for(let t of g){Object.assign(n,{sourceEdge:t.sourceEdge,targetEdge:t.targetEdge});let s=new Map(r),l=(e,a,i)=>{let l=("top"===a||"bottom"===a?e.width:e.height)/2-16;return t.spread?[s.get(i)??0,-l,l]:[s.get(i)??0]},o=l(n.source,n.sourceEdge,c),d=l(n.target,n.targetEdge,p);for(let l of o){for(let o of d){s.set(c,l),s.set(p,o);let{start:d,end:h}=pG(n,s);if(!pD(n.source,n.sourceEdge,d,h)||!pD(n.target,n.targetEdge,h,d)||a.some(e=>e!==n.source&&e!==n.target&&pR(d,h,e))||e.some(e=>{if(e===n)return!1;let{start:t,end:a}=pG(e,s);return[[n.source,d,e.source,t],[n.source,d,e.target,a],[n.target,h,e.source,t],[n.target,h,e.target,a]].some(([e,t,a,i])=>e===a&&.01>=Math.hypot(t.x-i.x,t.y-i.y))||function(e,t,a,i){let s=t.x-e.x,l=t.y-e.y,o=Math.hypot(s,l);if(o<=.01)return!1;let r=t=>Math.abs(s*(t.y-e.y)-l*(t.x-e.x))/o;if(r(a)>.01||r(i)>.01)return!1;let n=t=>((t.x-e.x)*s+(t.y-e.y)*l)/o,d=n(a),c=n(i);return Math.min(o,Math.max(d,c))-Math.max(0,Math.min(d,c))>.01}(d,h,t,a)}))continue;let g=hg(e,s),f=g.find(e=>e.nodeId===`branch-label:${n.edge.id}`);if(!(f&&pR(d,h,f))&&(i??={sides:t,sourceOffset:l,targetOffset:o},!g.some(e=>e.nodeId!==`branch-label:${n.edge.id}`&&pR(d,h,e)))){r.set(c,l),r.set(p,o),u=!0;break}}if(u)break}if(u)break}if(u||l.has(n.edge.id)){if(!u)if(Object.assign(n,i?.sides??d),i)r.set(c,i.sourceOffset),r.set(p,i.targetOffset);else{let e="TB"===t.layout.direction||"BT"===t.layout.direction,i=e?"x":"y",l=e?"width":"height",o=pM(n.source)[i],r=Math.max(...a.flatMap(e=>[Math.abs(e[i]-o),Math.abs(e[i]+e[l]-o)]));s.set(n.source.nodeId,{width:n.source.width,height:n.source.height,[l]:2*(r+16+18)})}}else Object.assign(n,i?.sides??d),i&&(r.set(c,i.sourceOffset),r.set(p,i.targetOffset))}return{offsets:r,minimumSizes:s}}function pj(e,t,a=!1){let i=new Map;for(let s of e){let{start:e,end:l}=pG(s,t);for(let[t,a,o]of[[s.source,s.sourceEdge,hn(s,e,36)],[s.target,s.targetEdge,hr(s,l,36)]]){let r=ha(t===s.source?e:l,a,o),n="left"===a?t.x-r.x:"right"===a?r.x-t.x-t.width:"top"===a?t.y-r.y:r.y-t.y-t.height,d=pB(t.nodeId,a);i.set(d,Math.max(i.get(d)??0,n))}if(s.edge.label&&(a||pS(s))){let t=s.source,a=hu(hh(s,e),hp(s.edge.label,cU(t.kind)));for(let[e,s]of[["left",t.x-a.x],["right",a.x+a.width-t.x-t.width],["top",t.y-a.y],["bottom",a.y+a.height-t.y-t.height]]){let a=pB(t.nodeId,e);s>0&&i.set(a,Math.max(i.get(a)??0,s))}}}return i}let pN=new WeakSet;function pW(e){let t=[];for(let a of e){let e=t[t.length-1];e&&e.x===a.x&&e.y===a.y||t.push(a)}let a=t[0];return a?[a,...t.slice(1)]:[{x:0,y:0}]}function pJ(e,t){return e.x>=t.x&&e.x<=t.x+t.width&&e.y>=t.y&&e.y<=t.y+t.height}function pK(e,t,a){let i,s="horizontal"===e.orientation,[l,o]=s?[t.width/2,t.height/2]:[t.height/2,t.width/2],r=s?t.x+l:t.y+l,n=Math.abs(e.staticCoordinate-(s?t.y+o:t.x+o));if("ellipse"===t.shape||"circle"===t.shape){let[e,t]=[l+a,o+a];if(n>=t)return!1;i=e*Math.sqrt(1-(n/t)**2)}else if("diamond"===t.shape){let e=1+a*Math.hypot(1/l,1/o);if(n>=o*e)return!1;i=l*(e-n/o)}else{if(n>=o+a)return!1;i=l+a}return e.min<r+i-.01&&e.max>r-i+.01}function pQ(e,t){return e.id.startsWith("node:")&&!t.has(e.nodeId)}function p1(e,t,a){return im(e).filter(e=>t.some(t=>pQ(t,a)&&p0(e,t))).length}function p0(e,t){let[a,i,s,l]="horizontal"===e.orientation?[t.y,t.height,t.x,t.width]:[t.x,t.width,t.y,t.height];return(.01>=Math.abs(e.staticCoordinate-a)||.01>=Math.abs(e.staticCoordinate-a-i))&&Math.min(e.max,s+l)-Math.max(e.min,s)>.01}function p2(e,t,a){let i=0;for(let[s,l]of im(e).entries())for(let o of t)!(a.has(o.nodeId)&&(0===s&&pJ(e[0],o)||s===e.length-2&&pJ(e.at(-1),o)))&&iw(l,o)&&(i+=1);return i}function p3(e,t,a){let i=0;for(let s of im(e))for(let e of t)pQ(e,a)&&!iw(s,e)&&pK(s,e,12)&&(i+=1);return i}function p5(e){let t=0;for(let a=0;a<e.length-1;a+=1){let i=e[a],s=e[a+1];i&&s&&(t+=Math.abs(s.x-i.x)+Math.abs(s.y-i.y))}return t}function p4(e){return im(e.points).map(t=>{let[a,i]=[e.points[t.segmentIndex],e.points[t.segmentIndex+1]];return{...t,arrowId:e.arrowId,startBindingId:e.sourceNodeId,endBindingId:e.targetNodeId,from:"horizontal"===t.orientation?a.x:a.y,to:"horizontal"===t.orientation?i.x:i.y}})}function p6(e){return e.flatMap(e=>p4({arrowId:e.id,points:e.points,sourceNodeId:e.sourceNodeId,targetNodeId:e.targetNodeId}))}function p7(e,t,a){let i=p4({arrowId:`edge:${a.edge.id}`,points:e,sourceNodeId:a.edge.source,targetNodeId:a.edge.target}),s=0;for(let e of i)for(let i of t)e.arrowId===i.arrowId||!iy(e,i)||void 0!==a.pinned&&function(e,t){let a=e.isFirstSegment&&t.isFirstSegment&&e.startBindingId===t.startBindingId;return ix(e,t)&&.01>=Math.abs((a?e.from:e.to)-(a?t.from:t.to))&&Math.sign(e.to-e.from)===Math.sign(t.to-t.from)}(e,i)||(s+=1);return s}function p8(e,t){let a=p4({arrowId:`edge:${t.edge.id}`,points:e,sourceNodeId:t.edge.source,targetNodeId:t.edge.target}),i=0;for(let e=0;e<a.length;e+=1){let t=a[e];if(t)for(let s=e+1;s<a.length;s+=1){let e=a[s];e&&iy(t,e)&&(i+=1)}}return i}function p9(e){let t=e[0],a=e[e.length-1];if(!t||!a)return 0;let i=e.map(e=>e.x),s=e.map(e=>e.y),l=0;return a.x<t.x?l+=Math.max(0,Math.max(...i)-t.x):a.x>t.x&&(l+=Math.max(0,t.x-Math.min(...i))),a.y<t.y?l+=Math.max(0,Math.max(...s)-t.y):a.y>t.y&&(l+=Math.max(0,t.y-Math.min(...s))),l}function he(e){let t=e[0],a=e[e.length-1];if(!t||!a)return 0;let i=e.map(e=>e.x),s=e.map(e=>e.y),l=0;return a.x<t.x?l+=Math.max(0,a.x-Math.min(...i)):a.x>t.x&&(l+=Math.max(0,Math.max(...i)-a.x)),a.y<t.y?l+=Math.max(0,a.y-Math.min(...s)):a.y>t.y&&(l+=Math.max(0,Math.max(...s)-a.y)),l}function ht(e,t,a){switch(a){case"top":return t.x===e.x&&e.y-t.y>=36;case"right":return t.y===e.y&&t.x-e.x>=36;case"bottom":return t.x===e.x&&t.y-e.y>=36;case"left":return t.y===e.y&&e.x-t.x>=36}}function ha(e,t,a){switch(t){case"top":return{x:e.x,y:e.y-a};case"right":return{x:e.x+a,y:e.y};case"bottom":return{x:e.x,y:e.y+a};case"left":return{x:e.x-a,y:e.y}}}function hi(e,t){return 0===t.length?0:im(e).filter(e=>t.some(t=>t.orientation===e.orientation&&Math.abs(t.staticCoordinate-e.staticCoordinate)<(t.arrowId.startsWith(pg)?24:8)&&iv(t,e)>8)).length}function hs(e,t,a,i,s,l=!1){let o=e[0];if(!o)return[{x:0,y:0}];let r=e=>{let o,r,n,d,c,p=s.quality?.({id:`edge:${i.edge.id}`,points:e,sourceId:i.edge.source,targetId:i.edge.target})??{arrowheadsCrossed:0,corridors:0,jogs:0};return[-(o=e[0],r=e[1],n=e[e.length-1],d=e[e.length-2],c=0,r&&ht(o,r,i.sourceEdge)&&(c+=1),d&&n&&ht(n,d,i.targetEdge)&&(c+=1),c),p2(e,t,a),...l?[p1(e,t,a)]:[],p8(e,i),p7(e,s.segments,i),s.heads?p.arrowheadsCrossed:0,hi(e,s.outlines),p.corridors,s.heads?0:p.arrowheadsCrossed,s.crossings?.route(e,`edge:${i.edge.id}`)??0,p9(e),he(e),p.jogs,p5(e),s.quality?im(e).filter((e,t,a)=>t>0&&e.orientation!==a[t-1].orientation).length:0]},n=(e,t)=>{for(let a=0;a<e.length;a+=1){let i=(e[a]??0)-(t[a]??0);if(0!==i)return i<0}return!1},d=o,c=r(o);for(let t of e.slice(1)){let e=r(t);n(e,c)&&(d=t,c=e)}return d}function hl(e,t,a,i){switch(a){case"left":return i+t.x-e.x;case"right":return i+e.x+e.width-t.x;case"top":return i+t.y-e.y;case"bottom":return i+e.y+e.height-t.y}}function ho(e,t){return e.runs?.[t]??e.endRun??0}function hr(e,t,a){return hl(e.target,t,e.targetEdge,Math.max(a,ho(e,"target")))}function hn(e,t,a){let i=e.edge.label&&!pS(e)?"left"===e.sourceEdge||"right"===e.sourceEdge?hp(e.edge.label,cU(e.source.kind)).width+16:Math.max(40,hp(e.edge.label,cU(e.source.kind)).height+24):0;return hl(e.source,t,e.sourceEdge,Math.max(a,ho(e,"source")+Math.min(i,function(e,t){if("choice"!==e.source.kind||e.targetEdge!==pF[e.sourceEdge])return 1/0;let a=pI[e.sourceEdge],i=0===a.x?"y":"x",s=a[i],[l,o]="x"===i?["y","height"]:["x","width"];if(t[l]>=e.target[l]&&t[l]<=e.target[l]+e.target[o])return 1/0;let r=((s>0?e.target[i]:e.target[i]+e.target["x"===i?"width":"height"])-t[i])*s-36-18;return r>36?r:1/0}(e,t))))}function hd(e,t,a=!1){let i="TB"===t||"BT"===t;if(!i&&!a)return;let s=i?"x":"y",l=i?"y":"x",[o,r]=i?["left","right"]:["top","bottom"],n="TB"===t?"bottom":"BT"===t?"top":"LR"===t?"right":"left";for(let t of new Set(e.filter(e=>cU(e.source.kind)).map(e=>e.source))){let a=e.filter(e=>e.source===t).sort((e,t)=>pM(e.target)[s]-pM(t.target)[s]||pM(e.target)[l]-pM(t.target)[l]||e.index-t.index);a.length<2||a.forEach((e,i)=>{let d=a.filter(e=>1>Math.abs(pM(e.target)[s]-pM(t)[s])).sort((e,a)=>Math.abs(pM(e.target)[l]-pM(t)[l])-Math.abs(pM(a.target)[l]-pM(t)[l]))[0],c=2===a.length&&e===d,p=2===a.length&&void 0!==d&&!c;e.sourceEdge=c?n:p?pM(e.target)[s]<pM(t)[s]?o:r:0===i?o:i===a.length-1?r:n})}}function hc(e,t){let a=aT(e,t,13);return{width:aU(a,13,t),height:Math.ceil(13*a.split("\n").length*1.35)}}function hp(e,t=!1){return hc(e,t?80:160)}function hh(e,t){let a=hp(e.edge.label??"",cU(e.source.kind)),i=ha(t,e.sourceEdge,hn(e,t,36)),s="left"===e.sourceEdge||"right"===e.sourceEdge;if(pS(e)){let t=ha(p_(e.target,e.targetEdge),e.targetEdge,36),l=pI[e.sourceEdge];return s?{x:i.x+l.x*(a.width/2+8),y:(i.y+t.y)/2}:{x:(i.x+t.x)/2,y:i.y+l.y*(a.height/2+5)}}let l=pY(e),o=ha(t,e.sourceEdge,ho(e,"source"));return{x:(o.x+i.x)/2+(s?0:l*(a.width/2+8)),y:(o.y+i.y)/2+(s?l*(a.height/2+5):0)}}function hg(e,t){return e.filter(e=>e.edge.label).map(e=>{let a=p_(e.source,e.sourceEdge,t.get(pL({edgeId:e.edge.id,endpoint:"source"}))??0),i=hh(e,a),s=hp(e.edge.label,cU(e.source.kind)),l=s.width+12;return{...e.source,id:`branch-label:${e.edge.id}`,nodeId:`branch-label:${e.edge.id}`,x:i.x-l/2,y:i.y-s.height/2-4,width:l,height:s.height+8,shape:"rectangle"}})}function hu(e,t){return{x:e.x-t.width/2,y:e.y-t.height/2,width:t.width,height:t.height}}function hf(e,t){return e.x<t.x+t.width&&t.x<e.x+e.width&&e.y<t.y+t.height&&t.y<e.y+e.height}function hm(e,t){return{x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}}function hv(e,t){let[a,i,s,l]="horizontal"===t.orientation?[t.min,t.max,t.staticCoordinate,t.staticCoordinate]:[t.staticCoordinate,t.staticCoordinate,t.min,t.max];return Math.hypot(Math.max(0,e.x-i,a-e.x-e.width),Math.max(0,e.y-l,s-e.y-e.height))}function hy(e,t){return Math.min(1/0,...t.map(t=>hv(e,t)))}function hw(e,t,a){return Math.max(0,hy(e,t)+8-hy(e,a))}function hx(e,t,a={start:0,end:0}){let i=[],s=p5(e),l=0;for(let o of im(e)){if(l>240)break;let r=e[o.segmentIndex],n=e[o.segmentIndex+1],d=o.max-o.min,c="horizontal"===o.orientation,p=c?t.width/2+4:t.height/2+4;for(let e=Math.min(p,d/2);e<=d-Math.min(p,d/2)&&!(l+e>240);e+=12){if(a.start>0&&l+e-p<a.start||a.end>0&&l+e+p>s-a.end)continue;let o=e/d,h={x:r.x+(n.x-r.x)*o,y:r.y+(n.y-r.y)*o};for(let e of[1,-1])i.push(c?{x:h.x,y:h.y-e*(t.height/2+5)}:{x:h.x+e*(t.width/2+8),y:h.y})}l+=d}return i}function hb(e){return e?{start:ho(e,"source"),end:ho(e,"target")}:{start:0,end:0}}function hk(e,t,a,i,s=!0,l){return hM(e,t,a,i,s,l).labels}function hM(e,t,a,i,s=!0,l){let o=[],r=0,n=e.map(e=>im(e.points)),d=[...a,...(i?.frames??[]).map(e=>pd(`group-label:${e.id}`,e.labelBox)),...(l?.frames??[]).map(e=>pd(`lane-header:${pm(e)}`,e.header))],c=[...(i?.frames??[]).flatMap(e=>pu(e.box)),...l?py(l):[]],p=pa([...a,...pp(i),...pw(l),...e.flatMap(e=>e.points.map(e=>({...e,width:0,height:0})))]),h=[],g=e.map((e,a)=>e.label?hp(e.label,cU(t[a]?.source.kind)):void 0),u=e.map((e,a)=>e.label?hh(t[a],e.points[0]):void 0);for(let[a,i]of e.entries()){let e=g[a],l=u[a];if(!e||!l)continue;let o=u.flatMap((e,t)=>e&&t!==a&&!h.some(e=>e.index===t)?[hu(e,g[t])]:[]),v=[...n.flatMap((e,t)=>t===a?[]:e),...c],y=(t,i=0)=>(function(e,t,a,i,s){let l=hm(e,3),o=hm(e,8);return t.filter(e=>iw(e,l)).length+a.filter(e=>iw(e,o)).length+i.filter(t=>(function(e,t){let[a,i]=[t.x+t.width/2,t.y+t.height/2],s=Math.max(e.x,Math.min(a,e.x+e.width))-a,l=Math.max(e.y,Math.min(i,e.y+e.height))-i,[o,r]=[Math.abs(s)/(t.width/2),Math.abs(l)/(t.height/2)];return"diamond"===t.shape?o+r<1:"ellipse"===t.shape||"circle"===t.shape?o*o+r*r<1:o<1&&r<1})(e,t)).length+s.filter(e=>hf(l,e)).length})(hm(hu(t,e),i),n[a],v,d,[...o,...h.map(e=>e.box)]),w=l,x=y(l);if(x>0)for(let s of hx(i.points,e,hb(t[a]))){let e=y(s);if(e<x&&([w,x]=[s,e]),0===x)break}else{var f,m;if(s&&(f=hu(l,e),hw(f,n[a],v)>0)){let s=t=>hw(hu(t,e),n[a],v),o=(m=hu(l,e),hw(m,n[a],n.flatMap((e,t)=>t===a?[]:e))>0),r=hx(i.points,e,hb(t[a])).filter(t=>{var a;return o||(a=hu(t,e),a.x>=p.x-.01&&a.y>=p.y-.01&&a.x+a.width<=p.x+p.width+.01&&a.y+a.height<=p.y+p.height+.01)});w=r.find(e=>0===y(e,6)&&0===s(e))??r.filter(e=>0===y(e)).reduce((e,t)=>s(t)<s(e)?t:e,l)}}r+=x,u[a]=w,h.push({box:hu(w,e),index:a})}let v=[];for(let[a,i]of e.entries()){let s=u[a];if(!i.label||!s)continue;let l=hu(s,g[a]),r=n[a],d=hw(l,r,[...n.flatMap((e,t)=>t===a?[]:e),...c]);d>0&&v.push({box:l,own:hy(l,r),index:a,shortfall:d});let p=[`branch:${i.edgeId}`],h=function(e,t){let[a]=t.toSorted((t,a)=>hv(e,t)-hv(e,a));if(a&&"vertical"===a.orientation&&!(a.max<=e.y)&&!(a.min>=e.y+e.height)){if(e.x>=a.staticCoordinate)return"left";if(e.x+e.width<=a.staticCoordinate)return"right"}}(l,r);o.push({type:"text",id:`${i.id}:label`,text:i.label,fontSize:13,x:s.x,y:s.y,maxWidth:cU(t[a]?.source.kind)?80:160,...h?{textAlign:h}:{},groupIds:p}),e[a]={...i,groupIds:p}}return{labels:o,touches:r,shortfalls:v}}function hC(e,t){let a=new Map([["horizontal",[]],["vertical",[]]]);for(let t of e)a.get(t.orientation).push(t);for(let e of a.values())e.sort((e,t)=>e.staticCoordinate-t.staticCoordinate);return(e,i)=>{let s=a.get(e.orientation),l=Math.max(t,.02),o=0,r=s.length;for(;o<r;){let t=o+r>>1;s[t].staticCoordinate<e.staticCoordinate-l?o=t+1:r=t}let n=0,d=0;for(let a=o;a<s.length&&s[a].staticCoordinate<=e.staticCoordinate+l;a+=1){let l=s[a];l.arrowId!==i&&(iy(e,l)?n+=1:Math.abs(l.staticCoordinate-e.staticCoordinate)<t&&iv(e,l)>.01&&(d+=1))}return{beside:d,overlaps:n}}}function hz(e){return e.every((t,a)=>0===a||.01>=Math.abs(t.x-e[a-1].x)||.01>=Math.abs(t.y-e[a-1].y))}function h_(e,t){if(t.length!==e.length||!hz(t))return!1;let a=(e,t,a)=>({dx:e[a].x-e[t].x,dy:e[a].y-e[t].y}),i=e.length-1;return[[0,1],[i,i-1]].every(([i,s])=>{let[l,o]=[a(e,i,s),a(t,i,s)],r=Math.abs(l.dx)+Math.abs(l.dy);return Math.sign(o.dx)===Math.sign(l.dx)&&Math.sign(o.dy)===Math.sign(l.dy)&&Math.abs(o.dx)+Math.abs(o.dy)>=Math.min(r,36)-.01})}function hL(e,t,a,i,s,l=e.map((e,t)=>t),o=new Map){var r,n;let d=[...hg(e,a),...e.filter(pS).map(e=>{let{start:t,end:i}=pG(e,a),s=pa([t,i,ha(t,e.sourceEdge,hn(e,t,36)),ha(i,e.targetEdge,hr(e,i,36))].map(e=>({...e,width:0,height:0})));return pd(`loop:${e.edge.id}`,hm(s,9))})],c="orthogonal"===t?e.flatMap(e=>{let{start:t,end:i}=pG(e,a),s={type:"arrow",id:`edge:${e.edge.id}`,edgeId:e.edge.id,sourceNodeId:e.edge.source,targetNodeId:e.edge.target},l={...s,points:[ha(i,e.targetEdge,hr(e,i,36)),i]};return pN.add(l),[{...s,endArrowhead:null,points:[t,ha(t,e.sourceEdge,hn(e,t,36))]},l]}):[],p=[...(r=s.groups,(r?.frames??[]).map(e=>{let{x:t,y:a,width:i,height:s}=e.box,l=`${ph}${e.id}`;return{type:"arrow",id:l,edgeId:l,sourceNodeId:"",targetNodeId:"",endArrowhead:null,points:[{x:t,y:a},{x:t+i,y:a},{x:t+i,y:a+s},{x:t,y:a+s},{x:t,y:a}]}})),...(n=s.lanes)?py(n).map((e,t)=>{let a=`${pg}${t}`,[i,s]="horizontal"===e.orientation?[{x:e.min,y:e.staticCoordinate},{x:e.max,y:e.staticCoordinate}]:[{x:e.staticCoordinate,y:e.min},{x:e.staticCoordinate,y:e.max}];return{type:"arrow",id:a,edgeId:a,sourceNodeId:"",targetNodeId:"",endArrowhead:null,points:[i,s]}}):[]],h=pv(s.lanes),g=pv(s.lanes,!0),u=[];for(let r of l.map(t=>e[t])){let e=o.get(r.edge.id);if(e){u.push(e);continue}u.push(function(e,t,a,i,s,l){let{edge:o}=e,{start:r,end:n}=pG(e,a),d="orthogonal"===t?function(e,t,a,i,s,{avoidCrossings:l,clearHeads:o,readerScale:r,guided:n,bandOf:d,groups:c,lanes:p}){let h=Math.abs(a.x-t.x)>=Math.abs(a.y-t.y),g=new Set([e.source.nodeId,e.target.nodeId]),u=d?.get(e.source.nodeId),f=void 0===u?i:i.filter(e=>d.get(e.nodeId)===u),m=Math.min(...f.map(e=>e.x)),v=Math.max(...f.map(e=>e.x+e.width)),y=Math.min(...f.map(e=>e.y)),w=Math.max(...f.map(e=>e.y+e.height)),x="left"===e.sourceEdge||"left"===e.targetEdge||pM(e.target).x<pM(e.source).x,b=pM(e.target).y<pM(e.source).y,k=18*e.index,M=m-56-k,C=v+56+k,z=y-48-k,_=w+48+k,L=e.index%4*18/2,B=Math.min(e.source.x,e.target.x)-56-L,S=Math.max(e.source.x+e.source.width,e.target.x+e.target.width)+56+L,A=Math.min(e.source.y,e.target.y)-48-L,P=Math.max(e.source.y+e.source.height,e.target.y+e.target.height)+48+L,V=36+e.index%4*18,H=void 0===r?[V]:[...new Set([V,36])],q=(i,s)=>{let l=s>0?ha(t,e.sourceEdge,hn(e,t,36)):t,o=s>0?ha(a,e.targetEdge,hr(e,a,s)):a;return pW([t,l,{x:i,y:l.y},{x:i,y:o.y},o,a])},F=(i,s)=>{let l=s>0?ha(t,e.sourceEdge,hn(e,t,36)):t,o=s>0?ha(a,e.targetEdge,hr(e,a,s)):a;return pW([t,l,{x:l.x,y:i},{x:o.x,y:i},o,a])},I=[[b?A:P,F],[b?P:A,F],[b?z:_,F],[b?_:z,F]],E=[[x?B:S,q],[x?S:B,q],[x?M:C,q],[x?C:M,q]],[O,U]=h?[I,E]:[E,I],X=[...O.slice(0,2),...U.slice(0,2),...O.slice(2),...U.slice(2)],T=ha(t,e.sourceEdge,hn(e,t,36)),$=ha(a,e.targetEdge,hr(e,a,36)),Y=e.lane,G=Y?H.map(e=>Y.vertical?q(Y.at,e):F(Y.at,e)):[],R=(void 0!==e.pinned||void 0!==p&&px(e,p))&&e.targetEdge===pF[e.sourceEdge],D="left"===e.sourceEdge||"right"===e.sourceEdge?[{x:(T.x+$.x)/2,y:T.y},{x:(T.x+$.x)/2,y:$.y}]:[{x:T.x,y:(T.y+$.y)/2},{x:$.x,y:(T.y+$.y)/2}],Z=[...G,pW([t,a]),pW([t,T,{x:T.x,y:$.y},$,a]),pW([t,T,{x:$.x,y:T.y},$,a]),...R?[pW([t,T,...D,$,a])]:[],...X.flatMap(([e,t])=>H.map(a=>t(e,a)))],j=function(e,t,a=!1,i=!1){let s,l,o=e.some(e=>e.id.startsWith(pg))?e.filter(e=>!e.id.startsWith(pg)):e,r=o.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId,endArrowhead:null!==e.endArrowhead,...i&&pN.has(e)?{headRun:50}:{}}));return{...void 0===t?{}:{...a?{crossings:function(e){let t={horizontal:[],vertical:[]};for(let a of e){if(a.id.startsWith(ph))continue;let e=hT(a.points);for(let i=0;i+1<e.length;i+=1){let[s,l]=[e[i],e[i+1]],o=.01>=Math.abs(s.y-l.y);if(!o&&Math.abs(s.x-l.x)>.01)continue;let[r,n]=o?[s.x,l.x]:[s.y,l.y];.01>=Math.abs(n-r)||t[o?"horizontal":"vertical"].push({arrowId:a.id,at:o?s.y:s.x,min:Math.min(r,n),max:Math.max(r,n)})}}for(let e of Object.values(t))e.sort((e,t)=>e.at-t.at);let a=(e,a,i,s,l,o)=>{let r=t["horizontal"===e?"vertical":"horizontal"],n=0,d=r.length;for(;n<d;){let e=n+d>>1;r[e].at<=i+.01?n=e+1:d=e}let c=0;for(let e=n;e<r.length;e+=1){let t=r[e];if(o?t.at>s+.01:t.at>=s-.01)break;t.arrowId!==l&&a>t.min+.01&&a<t.max-.01&&(c+=1)}return c};return{step:(e,t,i,s,l)=>a(e,t,Math.min(i,s),Math.max(i,s),l,!0),route:(e,t)=>{let i=hT(e),s=0;for(let e=0;e+1<i.length;e+=1){let[l,o]=[i[e],i[e+1]],r=.01>=Math.abs(l.y-o.y);if(!r&&Math.abs(l.x-o.x)>.01)continue;let[n,d]=r?[Math.min(l.x,o.x),Math.max(l.x,o.x)]:[Math.min(l.y,o.y),Math.max(l.y,o.y)];s+=a(r?"horizontal":"vertical",r?l.y:l.x,n,d,t,!1)}return s}}}(o)}:{},...i?{heads:(s=8/t+2,l=r.flatMap(e=>{let t=iI(e);return t?[{bounds:i$(t,s),head:t,id:e.id}]:[]}),(e,a,i)=>{let s=i$([e,a]),o=new Set;for(let r of l)r.id!==i&&!o.has(r.id)&&iY(s,r.bounds)&&(iX(e,a,r.head)-2)*t<8&&o.add(r.id);return o.size})}:{},quality:iT(r,t)},outlines:p6(e.filter(e=>e.id.startsWith(ph))),segments:p6(o)}}(s,r,l,o),N=c?.zoned===!0,W=hs(Z,i,g,e,j,N),J=void 0===r?0:24/r,K=J?hs([W,...function(e,t,a,i){let s=`edge:${a.edge.id}`,l=[];for(let a of im(e))if(!a.isFirstSegment&&!a.isLastSegment){for(let o of t)if(!(o.arrowId===s||o.orientation!==a.orientation||Math.abs(o.staticCoordinate-a.staticCoordinate)>=i||.01>=iv(a,o)))for(let t of[o.staticCoordinate-i-1,o.staticCoordinate+i+1]){let i=e.map((e,i)=>i===a.segmentIndex||i===a.segmentIndex+1?"horizontal"===a.orientation?{x:e.x,y:t}:{x:t,y:e.y}:e);l.push(pW(i))}}return l}(W,j.segments,e,J)],i,g,e,j,N):W,Q=t=>j.quality?.({id:`edge:${e.edge.id}`,points:t,sourceId:e.edge.source,targetId:e.edge.target})??{arrowheadsCrossed:0,corridors:0,jogs:0},ee=N&&p1(K,i,g)>0,et=p2(K,i,g)||p8(K,e)||p7(K,j.segments,e)||void 0!==j.heads&&Q(K).arrowheadsCrossed||hi(K,j.outlines),ea=void 0!==e.pinned&&p9(K)+he(K)>0;if(et||ee||Q(K).corridors||ea){let l=function(e,t,a,i,s,l,o,r,n,d=0,c=1/0,p=!0,h,g=!1,u){let f,m,v,y,w=e=>[...new Set([18,Math.max(18,d+1)])].flatMap(t=>[e-t,e+t]),x=[...new Set([a.x,i.x,...s.flatMap(e=>[e.x-18,e.x+e.width+18]),...o.flatMap(e=>e.points.flatMap(e=>w(e.x)))])].sort((e,t)=>e-t),b=[...new Set([a.y,i.y,...s.flatMap(e=>[e.y-18,e.y+e.height+18]),...o.flatMap(e=>e.points.flatMap(e=>w(e.y)))])].sort((e,t)=>e-t),k=(e,t,a)=>(e*b.length+t)*2+a,M=`edge:${l.edge.id}`,C=hC(r,d),[z,_]=[!1,!0].map(e=>n.filter(t=>t.arrowId.startsWith(pg)===e)),L=z.length>0?hC(z,8):void 0,B=_.length>0?hC(_,24):void 0,S=[...im([e,a]),...im([i,t])],A=(e,t)=>p?Math.abs(x[e]-i.x)+Math.abs(b[t]-i.y):0,P=x.indexOf(a.x),V=b.indexOf(a.y),H={x:P,y:V,axis:+(e.x===a.x),cost:0,estimate:A(P,V)},q=(e,t)=>{let a="x"===t?"width":"height",i=[],l=g?-.01:.01;return o=>i[o]??=s.filter(i=>e[o]>i[t]+l&&e[o]<i[t]+i[a]-l)},[F,I]=[q(x,"x"),q(b,"y")],E=(f=[],m=0,v=(e,t)=>e.item.estimate<t.item.estimate||e.item.estimate===t.item.estimate&&e.order>t.order,y=(e,t)=>{[f[e],f[t]]=[f[t],f[e]]},{get size(){return f.length},push(e){f.push({item:e,order:m++});for(let e=f.length-1;e>0;){let t=e-1>>1;if(!v(f[e],f[t]))break;y(e,t),e=t}},pop(){let e=f[0],t=f.pop();if(f.length>0){f[0]=t;for(let e=0;;){let t=2*e+1,a=t+1,i=e;if(t<f.length&&v(f[t],f[i])&&(i=t),a<f.length&&v(f[a],f[i])&&(i=a),i===e)break;y(e,i),e=i}}return e.item}});E.push(H);let O=new Map([[k(H.x,H.y,H.axis),0]]),U=new Map;for(let a=0;E.size&&a<c;a+=1){let a=E.pop();if(a.cost!==O.get(k(a.x,a.y,a.axis)))continue;let s={x:x[a.x],y:b[a.y]};if(s.x===i.x&&s.y===i.y){let i=[];for(let e=a;e;e=e.previous)i.unshift({x:x[e.x],y:b[e.y]});return pW([e,...i.filter((e,t)=>0===t||t===i.length-1||(i[t-1].x!==e.x||e.x!==i[t+1].x)&&(i[t-1].y!==e.y||e.y!==i[t+1].y)),t])}for(let[e,t,i]of[[-1,0,0],[1,0,0],[0,-1,1],[0,1,1]]){let l=a.x+e,o=a.y+t;if(l<0||o<0||l>=x.length||o>=b.length)continue;let r={x:x[l],y:b[o]},n=(Math.min(l,a.x)*b.length+Math.min(o,a.y))*2+i;if(!U.has(n)){let e=im([s,r],0)[0],t=im([s,r])[0],{beside:l,overlaps:o}=t?C(t,M):{beside:0,overlaps:0},d=t&&L?L(t,M):void 0,c=t&&B?B(t,M):void 0;U.set(n,(0===i?I(a.y):F(a.x)).some(t=>iw(e,t)||g&&t.id.startsWith("node:")&&p0(e,t))||S.some(t=>iy(e,t))?void 0:Math.abs(r.x-s.x)+Math.abs(r.y-s.y)+1e4*o+1e3*l+(d?(d.beside+d.overlaps)*1e3:0)+(c?(c.beside+c.overlaps)*1e3:0)+(u?1e4*u(s,r,M):0)+(h&&t?320*h.step(t.orientation,t.staticCoordinate,t.min,t.max,M):0))}let d=U.get(n);if(void 0===d)continue;let c=a.cost+d+24*(i!==a.axis),p=k(l,o,i);c>=(O.get(p)??1/0)||(O.set(p,c),E.push({x:l,y:o,axis:i,cost:c,estimate:c+A(l,o),previous:a}))}}}(t,a,T,$,i,e,s,j.segments,j.outlines,et?0:J,et?1/0:5e3,n,j.crossings,N,j.heads);if(l)return hs([K,l],i,g,e,j,N)}return K}(e,r,n,i,s,l):pW([r,n]),c=e.pinned?pW(hT(d)):d;return{type:"arrow",id:`edge:${o.id}`,edgeId:o.id,sourceNodeId:o.source,targetNodeId:o.target,points:c,...o.label?{label:o.label}:{}}}(r,t,a,[...i,...d.filter(e=>e.nodeId!==`branch-label:${r.edge.id}`&&e.nodeId!==`loop:${r.edge.id}`),...function(e,t){if(!e)return[];let a=new Set([...cN(e,e.groupOf.get(t.source.nodeId)),...cN(e,e.groupOf.get(t.target.nodeId))]),i=cW(e,t.source.nodeId,t.target.nodeId);return e.frames.flatMap(e=>{let t=pd(`group-label:${e.id}`,e.labelBox);if(e.id===i){let{x:a,y:i,width:s,height:l}=e.box;return[t,pd(`group-wall:${e.id}:top`,{x:a-4,y:i-4,width:s+8,height:4}),pd(`group-wall:${e.id}:bottom`,{x:a-4,y:i+l,width:s+8,height:4}),pd(`group-wall:${e.id}:left`,{x:a-4,y:i-4,width:4,height:l+8}),pd(`group-wall:${e.id}:right`,{x:a+s,y:i-4,width:4,height:l+8})]}return a.has(e.id)?[t]:[t,pd(e.elementId,e.box)]})}(s.groups,r),...s.lanes?.continuations.has(r.edge.id)?g:h],[...p,...c,...u],s))}return e.map(e=>u.find(t=>t.edgeId===e.edge.id))}function hB(e,t,a,i,s){let l=cR(a),o=new Set(e.flatMap(e=>[pB(e.source.nodeId,e.sourceEdge),pB(e.target.nodeId,e.targetEdge)])),r=[];for(let[a,n]of t.entries()){let d=e[a];if(l.has(d.edge.id)||d.pinned?.target!==void 0||!("hooked"===s?iU([{id:n.id,points:n.points}],i).some(e=>"endpoint-jog"===e.kind&&"end"===e.endpoint):t.some(e=>e!==n&&h$(n.points,e.points,n.points.length-3,!1)>0)))continue;let c=im(n.points),p=c.at(-1),h=c.findLast(e=>e.orientation!==p?.orientation);if(!p||!h)continue;let g=n.points[h.segmentIndex],u=n.points[h.segmentIndex+1],f="horizontal"===h.orientation?u.x>g.x?"left":"right":u.y>g.y?"top":"bottom";f===d.targetEdge||o.has(pB(d.target.nodeId,f))||(r.push({route:d,side:d.targetEdge}),o.add(pB(d.target.nodeId,f)),d.targetEdge=f)}return r}function hS(e,t,a,i){let s,l=e.flatMap(e=>im(e.points).map(t=>{let a=e.points[t.segmentIndex],i=e.points[t.segmentIndex+1];return{...t,arrowId:e.id,startBindingId:e.sourceNodeId,endBindingId:e.targetNodeId,from:"horizontal"===t.orientation?a.x:a.y,to:"horizontal"===t.orientation?i.x:i.y}})),o=[];for(let[e,a]of l.entries()){for(let t of l.slice(e+1)){if(a.arrowId===t.arrowId||!iy(a,t))continue;let e=a.isFirstSegment&&t.isFirstSegment&&a.startBindingId===t.startBindingId;ix(a,t)&&.01>=Math.abs((e?a.from:a.to)-(e?t.from:t.to))&&Math.sign(a.to-a.from)===Math.sign(t.to-t.from)||o.push([a.arrowId,t.arrowId])}for(let e of t)e.nodeId!==a.startBindingId&&e.nodeId!==a.endBindingId&&iw(a,e)&&o.push([a.arrowId])}let r=a?[...o,...function(e,t){let a=[],i=t.frames.map(e=>pu(e.box));for(let s of e){let e=im(s.points),l=new Set([...cN(t,t.groupOf.get(s.sourceNodeId)),...cN(t,t.groupOf.get(s.targetNodeId))]),o=new Set(cN(t,cW(t,s.sourceNodeId,s.targetNodeId)));for(let[r,n]of t.frames.entries()){let t=l.has(n.id);(e.some(e=>iw(e,n.labelBox)||!t&&iw(e,n.box)||i[r].some(t=>t.orientation===e.orientation&&8>Math.abs(t.staticCoordinate-e.staticCoordinate)&&iv(t,e)>8))||o.has(n.id)&&s.points.some(e=>!pf(e,n.box)))&&a.push([s.id])}}return a}(e,a)]:o;return i?[...r,...(s=py(i),e.flatMap(e=>im(e.points).some(e=>i.frames.some(t=>iw(e,t.header))||s.some(t=>t.orientation===e.orientation&&8>Math.abs(t.staticCoordinate-e.staticCoordinate)&&iv(t,e)>8))||e.points.some(e=>!pf(e,i.pool))?[[e.id]]:[]))]:r}function hA(e,t){let a=new Map(t.map(e=>[e.nodeId,e])),i=0;for(let t of e)for(let[e,s,l]of[[t.sourceNodeId,t.points[0],t.points[1]],[t.targetNodeId,t.points.at(-1),t.points.at(-2)]]){let t=a.get(e);if(!t||!s||!l)continue;if(aR(t.shape)){let e=e=>Math.max(Math.abs(e.x-pM(t).x)/(t.width/2),Math.abs(e.y-pM(t).y)/(t.height/2));e({x:s.x+(l.x-s.x)*1e-4,y:s.y+(l.y-s.y)*1e-4})<e(s)-1e-9&&(i+=1);continue}let o=(s.x+(l.x-s.x)*1e-4-pM(t).x)/(t.width/2),r=(s.y+(l.y-s.y)*1e-4-pM(t).y)/(t.height/2);("diamond"===t.shape?Math.abs(o)+Math.abs(r):"ellipse"===t.shape||"circle"===t.shape?Math.hypot(o,r):Math.max(Math.abs(o),Math.abs(r)))<1-1e-6&&(i+=1)}return i}function hP(e){return e.flatMap(e=>{if("arrow"===e.type||"line"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??e.text.length)/2,a=e.text.split("\n").length*e.fontSize*1.35/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]})}function hV(e,t,a){return{x:e.x+t,y:e.y+a}}let hH={ports:!1,reader:!1,sides:!1,repair:!1};function hq(e,t){let a=t?cQ(e):void 0;if(!a||!t)return new Set;let i=new Map([["",a.top],...a.groups.map(e=>[e.group.id,e.diagram])]);return new Set([...t].flatMap(([e,{bandOf:t}])=>i.get(e).edges.filter(e=>(t.get(e.source)??0)!==(t.get(e.target)??0)).map(e=>e.id)))}function hF(e){let{edgeArrows:t,groups:a,nodeShapes:i,routedEdges:s}=e,l=new Set;if(!a)return l;let o=new Map(t.map(e=>[e.id,e]));for(let e of hS(t,i,a))for(let t of e){let e=o.get(t);for(let t of e?[e.sourceNodeId,e.targetNodeId]:[]){let e=a.groupOf.get(t);void 0!==e&&l.add(e)}}let r=hk([...t],s,i,a,!1),n=a.frames.flatMap(e=>pu(e.box));for(let e of r){let t=o.get(e.id.slice(0,-6)),i=t?a.groupOf.get(t.sourceNodeId):void 0,s=hu(e,hc(e.text,e.maxWidth??160));if(a.zoned)for(let e of a.frames)(pu(e.box).some(e=>iw(e,s))||hf(s,e.labelBox))&&l.add(e.id);void 0!==i&&(n.some(e=>iw(e,s))||a.frames.some(e=>hf(s,e.labelBox)))&&l.add(i)}return l}function hI(e,t,a,i){let s="TB"===i||"BT"===i,l=e=>s?{low:e.x,high:e.x+e.width}:{low:e.y,high:e.y+e.height},o=e=>s?{low:e.y,high:e.y+e.height}:{low:e.x,high:e.x+e.width},[r,n,d,c]=[l(e),l(t),o(t),o(e)];return a.some(a=>{if(a.nodeId===e.nodeId||a.nodeId===t.nodeId)return!1;let i=o(a),{low:s,high:p}=l(a);return i.low<d.high&&d.low<i.high&&i.low<c.high&&c.low<i.high&&s>Math.min(r.high,n.high)-.01&&p<Math.max(r.low,n.low)+.01})}function hE(e,t,a=c6){let i=hU(e,t,a,new Map);if(!i.groups)return i;let s=e=>hS(e.edgeArrows,e.nodeShapes,e.groups).length+hF(e).size,l=new Map,o=s(i);for(let r=0;r<3&&o>0;r+=1){let r=hF(i);if(0===r.size)break;let n=hU(e,t,a,l=new Map([...l,...[...r].map(e=>[e,(l.get(e)??0)+36])])),d=s(n);d<o&&([i,o]=[n,d])}return i}function hO(e,t){for(let a of e)for(let e of["source","target"]){let i=a.pinned?.[e];void 0!==i&&t.set(pL({edgeId:a.edge.id,endpoint:e}),i)}return t}function hU(e,t,a,i){let s,l,o="orthogonal"===e.layout.edgeRouting,{anchors:r,endRun:n,placement:d}=h0.get(e)??{},c=i=>hO(i,t.ports?p$(i,t.repair,a.crossingRepair,pl(e)?54:pq):pH(i,t.repair)),{wrap:p}=a,h=hq(e,a.zoneWraps),{groups:g,lanes:u,nodes:f}=d?{nodes:e.nodes.map(e=>{let t=d.get(e.id);if(!t)throw Error(`Cannot render node "${e.id}" without a placement.`);return{...cX(e),x:t.x,y:t.y,width:t.width,height:t.height}})}:pt(e,new Map,new Map,a,i),{direction:m}=e.layout,v=e=>void 0!==e&&void 0!==g&&g.across.has(e),y=e=>v(g?.groupOf.get(e))?c7[m]:m,w=e=>g&&v(cW(g,e.source,e.target))?c7[m]:m,x=new Map([...f,...pc(g)].map(e=>[e.nodeId,e])),b=e.edges.map((e,t)=>(function(e,t,a,i,s=!1){let l=a.get(e.source),o=a.get(e.target);if(!l||!o)throw Error(`Cannot render edge "${e.id}" with unresolved nodes.`);let{sourceEdge:r,targetEdge:n}=s?{sourceEdge:c2[i],targetEdge:pF[c2[i]]}:pC(l,o,i);return{edge:e,index:t,source:l,sourceEdge:r,target:o,targetEdge:n}})(e,t,x,w(e),p.continuations.has(e.id)));for(let e of b)if(h.has(e.edge.id)){let{source:t,target:i}=e,s={LR:i.x>=t.x+t.width,RL:i.x+i.width<=t.x,TB:i.y>=t.y+t.height,BT:i.y+i.height<=t.y}[m],l=c2[c7[m]],o=!0===a.aroundRanks&&!s&&hI(t,i,f,m);e.sourceEdge=s||o?c2[m]:l,e.targetEdge=o?c2[m]:pF[l]}if(n)for(let e of b)e.endRun=n;u&&pb(b,u);let k=o&&t.ports;for(let e of new Set(b.map(e=>y(e.source.nodeId))))hd(b.filter(t=>y(t.source.nodeId)===e),e,k);if(u&&o?!function(e,t,a){let[i,s]=t.vertical?["x","y"]:["y","x"],l=c2[a],o=pI[l][s],r=e=>t.vertical?e<0?"left":"right":e<0?"top":"bottom";for(let a of new Set(e.filter(e=>cU(e.source.kind)).map(e=>e.source))){let n=e.filter(e=>e.source===a&&!pS(e));if(n.length>3)continue;let d=e=>t.laneOf.get(e.target.nodeId)===t.laneOf.get(a.nodeId)?0:Math.sign(pM(e.target)[i]-pM(a)[i]),c=e=>(pM(e.target)[s]-pM(a)[s])*o,p=t.vertical?"height":"width",h=e=>Math.min(a[s]+a[p],e.target[s]+e.target[p])-Math.max(a[s],e.target[s])>.01,g=new Set,u=[];for(let e of[-1,1]){let t=n.filter(t=>d(t)===e).sort((e,t)=>Number(h(t))-Number(h(e))||c(e)-c(t));t[0]&&(t[0].sourceEdge=r(e),g.add(r(e))),u.push(...t.slice(1))}for(let e of(u.push(...n.filter(e=>0===d(e))),u.sort((e,t)=>c(e)-c(t)))){let t=0>c(e)?[r(1),r(-1),l]:[l,r(-1),r(1)];e.sourceEdge=t.find(e=>!g.has(e))??l,g.add(e.sourceEdge)}}}(b,u,m):o&&!p.lineBreaks&&function(e,t,a,i){let s=c2[c7[i]],l=pF[s],[o,r,n]="TB"===i||"BT"===i?["y","height","x"]:["x","width","y"],d=e=>a.bandOf.get(e.nodeId)??0,c=(e,a)=>t.some(t=>t.nodeId!==e.nodeId&&d(t)===d(e)&&Math.min(t[o]+t[r],e[o]+e[r])-Math.max(t[o],e[o])>.01&&a*(pM(t)[n]-pM(e)[n])>0);for(let t of e){if(!a.continuations.has(t.edge.id))continue;c(t.source,1)||a.leaveForward?.has(t.edge.id)||(t.sourceEdge=s);let{target:o}=t;if(c(o,-1))continue;let r=e.filter(e=>e.source.nodeId===o.nodeId);if(r.some(e=>e.sourceEdge===l)&&cU(o.kind)){let[e,t]=[...r].sort((e,t)=>pM(e.target)[n]-pM(t.target)[n]);if(2!==r.length||pM(t.target)[n]-pM(o)[n]<1)continue;e.sourceEdge=c2[i],t.sourceEdge=s}r.every(e=>e.sourceEdge!==l)&&(t.targetEdge=l)}}(b,f,p,m),o){for(let t of(!function(e,t){let a=new Map;for(let i of e.filter(pS)){let s=t(i),l=pF[c2[s]],o=t=>e.filter(e=>!pS(e)&&(e.source===i.source&&e.sourceEdge===t||e.target===i.source&&e.targetEdge===t)).length,r=[..."TB"===s||"BT"===s?["right","left"]:["bottom","top"]].sort((e,t)=>o(e)-o(t)),n=[...r.map(e=>[e,l]),...r.map(e=>[e,c2[s]])],d=a.get(i.source.nodeId)??new Set,[c,p]=n.find(([e,t])=>!d.has(`${e}:${t}`))??n[0];d.add(`${c}:${p}`),a.set(i.source.nodeId,d),i.sourceEdge=c,i.targetEdge=p}}(b,e=>w(e.edge)),!function(e,t,a=()=>t.layout.direction){let i=cR(t);for(let t of e.filter(e=>i.has(e.edge.id)&&!pS(e))){let i=a(t),s="LR"===i||"RL"===i,l=s?pM(t.source).y<pM(t.target).y:pM(t.source).x<pM(t.target).x,o=[...s?l?["top","bottom"]:["bottom","top"]:l?["left","right"]:["right","left"],...s?["left","right"]:["top","bottom"]],r=new Set(e.filter(e=>e!==t&&e.source===t.target).map(e=>e.sourceEdge)),n=new Set(e.filter(e=>e!==t&&e.target===t.source).map(e=>e.targetEdge)),d=new Set(e.filter(e=>e!==t&&e.target===t.target).map(e=>e.targetEdge)),c=new Set(e.filter(e=>e!==t&&e.source===t.source).map(e=>e.sourceEdge)),p=cU(t.source.kind)?[t.sourceEdge,...o]:o;t.targetEdge=o.find(e=>!r.has(e)&&!d.has(e))??o.find(e=>!r.has(e))??t.targetEdge,t.sourceEdge=p.find(e=>!n.has(e)&&(!cU(t.source.kind)||!c.has(e))&&(t.source!==t.target||e!==t.targetEdge))??t.sourceEdge}}(b,e,e=>w(e.edge)),h0.get(e)?.pairedReturns&&function(e,t,a,i,s){for(let l of e){if(!t.has(l.edge.id)||pS(l)||s?.has(l.edge.id))continue;let o=e.find(e=>void 0===e.pair&&!s?.has(e.edge.id)&&!t.has(e.edge.id)&&e.source===l.target&&e.target===l.source&&e.targetEdge===pF[e.sourceEdge]);if(!o)continue;let[r,n]=[pM(l.source),pM(l.target)],d=new Set([l.source.nodeId,l.target.nodeId]),c=new Set([...d].flatMap(e=>i?cN(i,i.groupOf.get(e)??e):[e]));[...a.filter(e=>!d.has(e.nodeId)),...(i?.frames??[]).filter(e=>!c.has(e.id)).map(e=>pd(e.elementId,e.box))].some(e=>pR(r,n,e))||(l.sourceEdge=o.targetEdge,l.targetEdge=o.sourceEdge,o.pair=-1,l.pair=1)}}(b,cR(e),f,g,a.unpairedReturns),b)){let e=a.sides?.get(t.edge.id);e?.sourceEdge&&(t.sourceEdge=e.sourceEdge),e?.targetEdge&&(t.targetEdge=e.targetEdge)}u&&a.separateRoles&&function(e,t){let a=c2[t],i="TB"===t||"BT"===t?["left","right"]:["top","bottom"];for(let t of e){if(pS(t)||void 0!==t.pinned)continue;let s=t.source,l=t=>e.some(e=>e.target===s&&e.targetEdge===t),o=a=>e.some(e=>e!==t&&e.source===s&&e.sourceEdge===a);if(!l(t.sourceEdge))continue;let r=[a,...i].filter(e=>!l(e));t.sourceEdge=r.find(e=>!o(e))??r[0]??t.sourceEdge}}(b,m),r&&function(e,t){for(let a of e)for(let e of["source","target"]){let i=t.get(pL({edgeId:a.edge.id,endpoint:e}));i&&("source"===e?a.sourceEdge=i.side:a.targetEdge=i.side,a.pinned={...a.pinned,[e]:i.offset},void 0!==i.run&&(a.runs={...a.runs,[e]:i.run}))}}(b,r),s=c(b),l=function(e,t){let a=new Map;for(let i of e)for(let e of["source","target"]){let s=i[e];if(void 0!==cO(s))continue;let l="source"===e?i.sourceEdge:i.targetEdge,o="top"===l||"bottom"===l?"width":"height",r=2*(16+Math.abs(t.get(pL({edgeId:i.edge.id,endpoint:e}))??0));if(r<=(a.get(s.nodeId)?.[o]??s[o]))continue;let n=a.get(s.nodeId)??{width:s.width,height:s.height};n[o]=r,a.set(s.nodeId,"choice"!==s.kind||s.label?n:cE(n,0))}return a}(b,s)}else{let a=pZ(b,e,f,t.repair);s=a.offsets,l=a.minimumSizes}let M=o&&!d&&(t.repair||g||u)?u?pj(b.filter(e=>e.edge.label||!px(e,u)),s,!0):pj(b,s):new Map;if(!d&&(l.size>0||M.size>0)){({groups:g,lanes:u,nodes:f}=pt(e,l,M,a,i));let r=new Map([...f,...pc(g)].map(e=>[e.nodeId,e]));for(let t of b)t.source=r.get(t.source.nodeId),t.target=r.get(t.target.nodeId),o||Object.assign(t,pC(t.source,t.target,e.layout.direction));o?s=c(b):(u&&pb(b,u),hd(b,e.layout.direction,k),s=pZ(b,e,f,t.repair).offsets)}f=function(e,t,a,i){let s=new Map;for(let l of t){if(void 0===cO(l))continue;let o=e.filter(e=>e.source===l||e.target===l),r=o[0];if(1!==o.length||!r||pS(r))continue;let n=r.source===l?"target":"source",d=r[n],c="source"===n?r.sourceEdge:r.targetEdge;if(("source"===n?r.targetEdge:r.sourceEdge)!==pF[c])continue;let p=pO(c),h="x"===p?"width":"height",g=p_(d,c,i.get(pL({edgeId:r.edge.id,endpoint:n}))??0),u={...l,[p]:g[p]-l[h]/2},f=hm(u,18),m=a?.groupOf.get(l.nodeId),v=a?.frames.find(e=>e.id===m),y=new Set(a?cN(a,m):[]);t.every(e=>e===l||!hf(f,s.get(e.nodeId)??e))&&(a?.frames??[]).every(e=>y.has(e.id)||!hf(f,e.box)&&!hf(f,e.labelBox))&&(!v||f.x>=v.box.x&&f.y>=v.box.y&&f.x+f.width<=v.box.x+v.box.width&&f.y+f.height<=v.box.y+v.box.height)&&s.set(l.nodeId,u)}if(0===s.size)return t;for(let t of e)t.source=s.get(t.source.nodeId)??t.source,t.target=s.get(t.target.nodeId)??t.target;return t.map(e=>s.get(e.nodeId)??e)}(b,f,g,s),u?function(e,t,a){let i=t.vertical?"x":"y",s=t.vertical?"width":"height",l=e.filter(e=>a.continuations.has(e.edge.id));for(let e of l){let o=a.bandOf.get(e.source.nodeId)??0,[r,n]=[t.pools[o],t.pools[o+1]];if(!n)continue;let d=l.filter(e=>(a.bandOf.get(e.source.nodeId)??0)===o);e.lane={at:(r[i]+r[s]+n[i])/2+(d.indexOf(e)-(d.length-1)/2)*18,vertical:t.vertical}}}(b,u,p):function(e,t,a,i){let s="TB"===i||"BT"===i,[l,o]=s?["x","width"]:["y","height"];for(let i of e){if(!a.continuations.has(i.edge.id))continue;let e=a.bandOf.get(i.source.nodeId)??0,r=e=>t.filter(t=>(a.bandOf.get(t.nodeId)??0)===e);i.lane={at:(Math.max(...r(e).map(e=>e[l]+e[o]))+Math.min(...r(e+1).map(e=>e[l])))/2,vertical:s}}}(b,f,p,m);let C=[...f,...pp(g),...pw(u)],z=iP({width:Math.max(...C.map(e=>e.x+e.width))-Math.min(...C.map(e=>e.x)),height:Math.max(...C.map(e=>e.y+e.height))-Math.min(...C.map(e=>e.y))}),_={guided:t.repair,...t.reader?{readerScale:z}:{},...p.continuations.size>0?{bandOf:p.bandOf}:{},...g?{groups:g}:{},...u?{lanes:u}:{},...a.avoidCrossings?{avoidCrossings:!0}:{},...a.clearHeads?{clearHeads:!0}:{}},L=hL(b,e.layout.edgeRouting,s,f,_);if(o&&t.sides){let t=hB(b,L,e,z,"hooked");if(t.length>0){let e=c(b),a=hL(b,"orthogonal",e,f,_),[i,l]=[L,a].map(e=>{var t,a,i;let s;return t=f,a=g,i=u,s=iU(e.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),z).length,{hard:hS(e,t,a,i).length,reader:s}});if(l.hard<=i.hard&&l.reader<i.reader)[L,s]=[a,e];else for(let{route:e,side:a}of t)e.targetEdge=a}let i=a.crossingRepair?hB(b,L,e,z,"crossed"):[];if(i.length>0){let e=c(b),t=hL(b,"orthogonal",e,f,_);if(hS(t,f,g,u).length<=hS(L,f,g,u).length&&hZ({edgeArrows:t,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f},{edgeArrows:L,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f},!0,!1))[L,s]=[t,e];else for(let{route:e,side:t}of i)e.targetEdge=t}}return o&&t.repair&&(L=function(e,t,a,i,s){let l=hS(e,i,s.groups,s.lanes),o=t.map((e,t)=>t);for(let r=0;r<4&&l.length>0;r+=1){let r=e=>o.findIndex(a=>`edge:${t[a].edge.id}`===e),[n,d]=l[0],[c,p]=void 0===d?[0,r(n)]:[Math.min(r(n),r(d)),Math.max(r(n),r(d))];if(p<=c)break;let h=[...o];h.splice(c,0,...h.splice(p,1));let g=hL(t,"orthogonal",a,i,s,h),u=hS(g,i,s.groups,s.lanes);if(u.length>=l.length)break;[e,l,o]=[g,u,h]}return e}(L,b,s,f,_)),{edgeArrows:L,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f,portOffsets:s,routeOptions:_,routedEdges:b}}function hX(e,t,a=[]){let i=[...e.flatMap(e=>[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]),...t.flatMap(e=>e.points),...a.flatMap(e=>{let{width:t,height:a}=hc(e.text,e.maxWidth??160);return[{x:e.x-t/2,y:e.y-a/2},{x:e.x+t/2,y:e.y+a/2}]})];return{width:Math.max(...i.map(e=>e.x))-Math.min(...i.map(e=>e.x)),height:Math.max(...i.map(e=>e.y))-Math.min(...i.map(e=>e.y))}}function hT(e){return e.filter((t,a)=>{let[i,s]=[e[a-1],e[a+1]];return!i||!s||!(.01>=Math.abs(i.x-t.x)&&.01>=Math.abs(t.x-s.x)||.01>=Math.abs(i.y-t.y)&&.01>=Math.abs(t.y-s.y))})}function h$(e,t,a=0,i=!0){let s=i?hT(e.slice(Math.max(0,a))):e.slice(Math.max(0,a)),l=i?hT(t):t,o=(e,t,a)=>e>Math.min(t,a)+.01&&e<Math.max(t,a)-.01,r=(e,t)=>.01>=Math.abs(e.y-t.y)&&Math.abs(e.x-t.x)>.01,n=(e,t)=>.01>=Math.abs(e.x-t.x)&&Math.abs(e.y-t.y)>.01,d=0;for(let e=0;e<s.length-1;e+=1)for(let t=0;t<l.length-1;t+=1){let[a,i,c,p]=[s[e],s[e+1],l[t],l[t+1]],[h,g]=r(a,i)&&n(c,p)?[[a,i],[c,p]]:n(a,i)&&r(c,p)?[[c,p],[a,i]]:[];h&&g&&o(g[0].x,h[0].x,h[1].x)&&o(h[0].y,g[0].y,g[1].y)&&(d+=1)}return d}function hY(e,t=!0){return e.reduce((a,i,s)=>a+e.slice(s+1).reduce((e,a)=>e+h$(i.points,a.points,0,t),0),0)}function hG(e,t,a=!0){let i=iP(hX(t,e)),s=e.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),l=iT(s,i);return iU(s,i).filter(e=>a||"endpoint-jog"!==e.kind).length+s.filter(e=>l(e).arrowheadsCrossed>0).length}function hR(e){return e.filter(e=>{let[t,a]=[e.points[0],e.points.at(-1)],i=Math.abs(a.x-t.x)+Math.abs(a.y-t.y);return p5(e.points)>2*i+72+96}).length}function hD(e){let t=[...e.nodeShapes,...pp(e.groups),...pw(e.lanes)],a=e.edgeArrows.map(e=>({id:e.id,edgeId:e.edgeId,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId,endArrowhead:null!==e.endArrowhead})),i=iT(a,iP(hX(t,e.edgeArrows)));return new Set(a.filter(e=>i(e).arrowheadsCrossed>0).map(e=>e.edgeId))}function hZ(e,t,a=!1,i=!0,s=!1,l=!0){let[o,r]=[e,t].map(e=>hY(e.edgeArrows,i)),[n,d]=[e,t].map(e=>hX([...e.nodeShapes,...pp(e.groups),...pw(e.lanes)],e.edgeArrows)),[c,p]=[n,d].map(({width:e,height:t})=>c8(e,t));return(a?o<r:o<=r)&&(c<2.45||c<=p+.01||s&&(({width:e,height:t})=>Math.max(e,t))(n)<=(({width:e,height:t})=>Math.max(e,t))(d)+.01)&&hG(e.edgeArrows,[...e.nodeShapes,...pp(e.groups),...pw(e.lanes)],l)<=hG(t.edgeArrows,[...t.nodeShapes,...pp(t.groups),...pw(t.lanes)],l)}function hj(e){return e.edgeArrows.filter((t,a)=>{let i=e.routedEdges[a],s=im(hT(t.points)).slice(1,-1);return["source","target"].some(e=>{let t=i[e],a="source"===e?i.sourceEdge:i.targetEdge;return s.some(e=>{let[i,s,l,o]="horizontal"===e.orientation?[t.y,t.height,t.x,t.width]:[t.x,t.width,t.y,t.height],r=e.staticCoordinate<i?i-e.staticCoordinate:e.staticCoordinate-i-s;return("horizontal"===e.orientation?e.staticCoordinate<i?"top":"bottom":e.staticCoordinate<i?"left":"right")!==a&&r>0&&r<72&&e.min<l+o&&e.max>l})})}).length}function hN(e){let t=e.map(e=>hT(e.points)),a=[],i=(e,t,a)=>e>Math.min(t,a)+.01&&e<Math.max(t,a)-.01;for(let[e,s]of t.entries())for(let[l,o]of t.slice(e+1).entries())for(let t=0;t+1<s.length;t+=1)for(let r=0;r+1<o.length;r+=1){let[n,d,c,p]=[s[t],s[t+1],o[r],o[r+1]],[h,g]=.01>=Math.abs(n.y-d.y)&&.01>=Math.abs(c.x-p.x)?[[n,d],[c,p]]:.01>=Math.abs(n.x-d.x)&&.01>=Math.abs(c.y-p.y)?[[c,p],[n,d]]:[];h&&g&&i(g[0].x,h[0].x,h[1].x)&&i(h[0].y,g[0].y,g[1].y)&&a.push({first:e,second:e+1+l,at:{x:g[0].x,y:h[0].y}})}return a}function hW(e,t,a,i,s){let l=a,o=new Set,[r,n]=[6,24];for(let a=!0;a&&r>0;){a=!1;let d=hY(l.layout.edgeArrows),c=hN(l.layout.edgeArrows).flatMap(({first:t,second:a,at:i})=>(function(e,t,a,i,s,l){let o="TB"===i.layout.direction||"BT"===i.layout.direction,r=o?"y":"x",n=e=>pO(e)===r?pF[e]:e,d=cR(i),c=e=>!pS(e)&&void 0===e.pair&&void 0===e.pinned,p=e=>"source"===e?"sourceEdge":"targetEdge",h=(e,t,a)=>{if(pO(a)===r)return!0;let i=pM(e[t])[r],s=pM(e["source"===t?"target":"source"])[r];return pI[a][r]*(s-i)>.01},g=[],u=(e,t)=>f.get(e.edge.id)?.[p(t)]??e[p(t)],f=new Map,m=e=>{f=e,[...e].every(([e,t])=>{let a=l.find(t=>t.edge.id===e);return h(a,"source",t.sourceEdge??a.sourceEdge)&&h(a,"target",t.targetEdge??a.targetEdge)})&&!(pl(i)&&[...f.keys()].some(e=>{let t=l.find(t=>t.edge.id===e);return["source","target"].some(e=>{let a="source"===e?"target":"source",i=t[e],s=u(t,e);return l.some(e=>e!==t&&e[a]===i&&u(e,a)===s)})}))&&g.push(e)},v=o?["left","right"]:["top","bottom"];for(let a of[e,t].filter(c))if(d.has(a.edge.id))for(let e of[...v].sort((e,t)=>e===n(a.sourceEdge)?-1:+(t===n(a.sourceEdge))))(a.sourceEdge!==e||a.targetEdge!==e)&&m(new Map([[a.edge.id,{sourceEdge:e,targetEdge:e}]]));if(c(e)&&c(t))for(let a of["source","target"])for(let i of["source","target"]){let[s,l]=[e[p(a)],t[p(i)]];e[a].nodeId===t[i].nodeId&&s!==l&&m(new Map([[e.edge.id,{[p(a)]:l}],[t.edge.id,{[p(i)]:s}]]))}for(let a of new Set([e,t].map(e=>e.source))){if(!cU(a.kind))continue;let e=l.filter(e=>e.source===a&&c(e)&&!d.has(e.edge.id));if(e.length<2||e.length>3)continue;let t=e=>e.length<=1?[[...e]]:e.flatMap((a,i)=>t([...e.slice(0,i),...e.slice(i+1)]).map(e=>[a,...e]));for(let a of t(e.map(e=>e.sourceEdge))){let t=new Map(e.flatMap((e,t)=>a[t]===e.sourceEdge?[]:[[e.edge.id,{sourceEdge:a[t]}]]));t.size>0&&m(t)}}for(let{endpoint:i,route:l}of[e,t].filter(c).flatMap(e=>["source","target"].map(t=>{let{start:i,end:l}=pG(e,s),o="source"===t?i:l;return{endpoint:t,route:e,distance:Math.abs(o.x-a.x)+Math.abs(o.y-a.y)}})).sort((e,t)=>e.distance-t.distance)){let e=l[p(i)],t=pM(l[i]),a=pM(l["source"===i?"target":"source"]);for(let s of new Set([Math.abs(a.x-t.x)>Math.abs(a.y-t.y)?a.x>t.x?"right":"left":a.y>t.y?"bottom":"top",n(e),"top","right","bottom","left"]))s!==e&&m(new Map([[l.edge.id,{[p(i)]:s}]]))}return g})(l.layout.routedEdges[t],l.layout.routedEdges[a],i,e,l.layout.portOffsets??new Map,l.layout.routedEdges)),p=3;for(let h of c){if(0===r||0===p||0===n)break;let c=new Map(l.arrangement.sides);for(let[e,t]of h)c.set(e,{...c.get(e),...t});let g=JSON.stringify([...c].sort(([e],[t])=>e<t?-1:1));if(o.has(g)||(o.add(g),n-=1,function(e,t,a){let{layout:i}=e;if(!i.portOffsets||!i.routeOptions)return 0;let s=i.routedEdges.map(e=>({...e,...t.get(e.edge.id)})),l=hO(s,a.ports?p$(s,a.repair,e.arrangement.crossingRepair,i.lanes?54:pq):pH(s,a.repair)),o=new Set(s.flatMap(e=>t.has(e.edge.id)||["source","target"].some(t=>{let a=pL({edgeId:e.edge.id,endpoint:t});return l.get(a)!==i.portOffsets.get(a)})?[e.edge.id]:[])),r=(e,t)=>{let a=new Map(e.flatMap(e=>t.has(e.edgeId)?[]:[[e.edgeId,e]])),o=s.map((e,a)=>({index:a,again:t.has(e.edge.id)})).sort((e,t)=>Number(e.again)-Number(t.again)).map(({index:e})=>e);return hL(s,"orthogonal",l,i.nodeShapes,{...i.routeOptions,avoidCrossings:!0},o,a)},n=r(i.edgeArrows,o),d=new Set(hN(n).flatMap(({first:e,second:t})=>{let[a,i]=[s[e].edge.id,s[t].edge.id];return o.has(a)===o.has(i)?[]:[o.has(a)?i:a]}));return 0===d.size?hY(n):Math.min(hY(n),hY(r(n,d)))}(l,h,t)>=d))continue;[r,p]=[r-1,p-1];let u={...l.arrangement,sides:c,avoidCrossings:!0},f=hE(e,t,u),m=i(f);if(!s(l.defects,m)&&hZ(f,l.layout,!0,!0,!0)&&hj(f)<=hj(l.layout)){l={arrangement:u,defects:m,layout:f},a=!0;break}}}return l}let hJ={initial:"circle",final:"circle","final-core":"circle",choice:"diamond"},hK={initial:"Initial state",final:"Final state","final-core":"Final state",choice:"Choice"},hQ="#4c4639",h1={subnet:"#f6f1e7",namespace:"#efe6ec"},h0=new WeakMap;function h2(e,t={}){var a,i,s;let l,o,r,n,d,c,p;h0.set(e,t);let h=e=>[hS(e.edgeArrows,e.nodeShapes,e.groups,e.lanes).length,hA(e.edgeArrows,e.nodeShapes)],g=(e,t)=>e[0]<t[0]||e[0]===t[0]&&e[1]<t[1],u="orthogonal"===e.layout.edgeRouting?[{ports:!0,reader:!0,sides:!0,repair:!0},{ports:!0,reader:!0,sides:!1,repair:!0},{ports:!0,reader:!1,sides:!1,repair:!0},{ports:!1,reader:!1,sides:!1,repair:!0},hH]:[{...hH,repair:!0},hH],f=(t=>{let[a,...i]=u,s=hE(e,a,t),l=h(s);for(let a of i){if(0===l[0]&&0===l[1])break;let i=hE(e,a,t),o=h(i);g(o,l)&&([s,l]=[i,o])}return{arrangement:t,defects:l,layout:s}})(c6),m=void 0===t.placement,v=(e,t)=>[hY(e.edgeArrows,t),hG(e.edgeArrows,[...e.nodeShapes,...pp(e.groups),...pw(e.lanes)])],y=(e,t,a)=>{let[i,s]=[e,t].map(e=>v(e,a));return hZ(e,t,!1,a)&&i.some((e,t)=>e<s[t])},w=(t,a,i=!1)=>{let s=hE(e,u[0],t),l=h(s);return!g(f.defects,l)&&(i?y(s,f.layout,!1):hZ(s,f.layout,a,!1))&&(f={arrangement:t,defects:l,layout:s}),s},x="orthogonal"===e.layout.edgeRouting,b=m&&x&&e.edges.length<=24;b&&hY(f.layout.edgeArrows,!1)>0&&w({...f.arrangement,crossingRepair:!0},!1),b&&hY(f.layout.edgeArrows,!1)>0&&function(e){if(pl(e))return!1;let t=cQ(e);return(t?[t.top,...t.groups.map(e=>e.diagram)]:[e]).some(e=>{let[t,a]=[!1,!0].map(t=>c5(e,new Map,new Map,t).rankMetrics.map(e=>e.shapes.map(e=>e.nodeId).join("\n")).join("\n\n"));return t!==a})}(e)&&w({...f.arrangement,reorder:!0},!0);let k="TB"===e.layout.direction||"BT"===e.layout.direction,M=e=>{let t=hX([...e.nodeShapes,...pp(e.groups),...pw(e.lanes)],e.edgeArrows,[...hk([...e.edgeArrows],e.routedEdges,e.nodeShapes,e.groups,!1,e.lanes)]),[a,i]=k?[t.height,t.width]:[t.width,t.height],s=(a+40)/(i+40),l=28e3/(Math.max(a,i)+40);return{aspect:s,balance:k&&s<4&&l>=14?.6:0,size:t,tooLong:s>=4||s>=2.45&&(k||a>=1200)}},{aspect:C,balance:z,tooLong:_}=M(f.layout),L=m&&x&&_?pl(e)?C>=4?function(e){let t,{columnCount:a,columns:i,depth:s,gapAfter:l,headerSize:o,poolBreadth:r}=po(e,new Map,new Map);if(a<4)return c4;let n=cR(e),d=Array.from({length:a-1},(t,a)=>{let s=e.edges.filter(e=>{let[t,s]=(e=>{let[t,a]=[i.get(e.source),i.get(e.target)];return[Math.min(t,a),Math.max(t,a)]})(e);return t<=a&&s>a});return s.some(e=>n.has(e.id))||s.length>2?void 0:s.map(e=>e.id)}),c=(e,t)=>o+96+s.slice(e,t+1).reduce((e,t)=>e+t,0)+l.slice(e,t).reduce((e,t)=>e+t,0),p=a-1,h=c8(c(0,p),r),g=(e,t)=>!t||e.longest<t.longest-.01||.01>=Math.abs(e.longest-t.longest)&&(e.carried<t.carried||e.carried===t.carried&&e.squares<t.squares);for(let e=2;e<=6;e+=1){let a,i=new Map;for(let e=1;e<p;e+=1)void 0!==d[e]&&i.set(e,{cuts:[e],longest:c(0,e),carried:d[e].length,squares:c(0,e)**2});for(let t=2;t<e;t+=1){let e=new Map;for(let[t,a]of i)for(let i=t+2;i<p;i+=1){if(void 0===d[i])continue;let s=c(t+1,i),l={cuts:[...a.cuts,i],longest:Math.max(a.longest,s),carried:a.carried+d[i].length,squares:a.squares+s**2};g(l,e.get(i))&&e.set(i,l)}i=e}for(let[e,t]of i){if(p<e+2)continue;let i=c(e+1,p),s={...t,longest:Math.max(t.longest,i),squares:t.squares+i**2};g(s,a)&&(a=s)}if(!a)continue;let s=e*r+(e-1)*pr(2),l=c8(a.longest,s);if((!t||l<t.aspect)&&(t={aspect:l,cuts:a.cuts}),l<=2)break}return!t||t.aspect>=h?c4:{bandOf:new Map(e.nodes.map(e=>{let a;return[e.id,(a=i.get(e.id),t.cuts.filter(e=>e<a).length)]})),continuations:new Set(t.cuts.flatMap(e=>d[e]))}}(e):c4:c9(e,f.arrangement.reorder,z):c4,B=(e,t=!1)=>{let a;for(let i of b&&!f.arrangement.crossingRepair?[!0,!1]:[f.arrangement.crossingRepair]){if(0===e.continuations.size||f.arrangement.wrap===e)break;a=w({...f.arrangement,crossingRepair:i,wrap:e},!1,t)}return a},S=B(L);if(S&&!pl(e)){let t=f.arrangement.wrap===L;if(!t||v(f.layout,!1).some(e=>e>0)){let a=function(e,t,a){let i=c2[c7[a]],[s,l]="TB"===a||"BT"===a?["x","width"]:["y","height"],o=new Set;for(let a of e.routedEdges){if(!t.continuations.has(a.edge.id)||a.sourceEdge!==i)continue;let{source:r}=a,n=r[s]+r[l];e.edgeArrows.some(e=>e.targetNodeId===r.nodeId&&e.edgeId!==a.edge.id&&e.points.slice(-3).some(e=>e[s]>n+.01))&&o.add(a.edge.id)}return o}(S,L,e.layout.direction);a.size>0&&B({...L,leaveForward:a},t),(f.arrangement.wrap===L||0===f.arrangement.wrap.continuations.size)&&B({...L,lineBreaks:!0},t)}}let A=cQ(e),P=m&&x&&_&&void 0!==A&&!A.zoned;for(let e of b&&!f.arrangement.crossingRepair?[!0,!1]:[f.arrangement.crossingRepair]){if(!P||f.arrangement.groupsAcross)break;w({...f.arrangement,crossingRepair:e,groupsAcross:!0},!1)}let V=e=>[hY(e.edgeArrows,!1),hG(e.edgeArrows,[...e.nodeShapes,...pp(e.groups)]),M(e).aspect],H=(e,t)=>{let a=e.findIndex((e,a)=>e!==t[a]);return a>=0&&e[a]<t[a]};for(let t=0;t<2&&m&&x&&A?.zoned;t+=1){let t,a=M(f.layout);if(!a.tooLong)break;let i=f;for(let s of function(e,t,a,i,s){let l=new Map([["",t.top],...t.groups.map(e=>[e.group.id,e.diagram])]),o=function(e){let t=new Map(e.groups.map(e=>[e.group.id,e])),a=new Map,i=e=>{for(let a of e.children)i(t.get(a));let{rankMetrics:s}=c5(e.diagram,new Map,new Map),l=s.reduce((e,t)=>e+Math.max(...t.shapes.map(e=>a.get(e.nodeId)??1)),0);return a.set(cK(e.group.id),Math.max(2,l)),l};for(let t of e.groups)e.parentOf.has(t.group.id)||i(t);return a}(t),r=t=>{let i=pt(e,new Map,new Map,{...a,zoneWraps:t});return{bounds:pa([...i.nodes,...pp(i.groups)]),placed:i}},n=new Map(a.zoneWraps??[]),d=r(n),[c,p]=[s.width/d.bounds.width,s.height/d.bounds.height],h=e=>{let{bounds:t,placed:a}=r(e);return{aspect:c8(t.width*c,t.height*p),placed:a}},g=(e,t)=>{let[a,i]=[e,t].map(e=>e.aspect<=2);return a!==i?a?-1:1:a&&e.bands-t.bands||e.aspect-t.aspect},u=n.size,f=h(n),m=[];for(;f.aspect>2;){let e=new Map([...f.placed.nodes.map(e=>[e.nodeId,e]),...(f.placed.groups?.frames??[]).map(e=>[cK(e.id),e.box])]),t=[];for(let[s,r]of l)if(!n.has(s))for(let l=2;l<=6;l+=1){let d=c9(r,a.reorder,i,{bands:l,sizes:e,weights:o});if(0===d.bandOf.size)continue;let c=new Map([...n,[s,d]]);if(t.push({...h(c),bands:l,next:c}),t.at(-1).aspect<=2)break}let s=t.filter(e=>e.aspect<f.aspect).sort(g),[r]=s;if(!r)break;n.size===u&&m.push(...s.slice(1,3).map(e=>e.next)),n=r.next,f=r}return n.size>u?[n,...m]:[]}(e,A,i.arrangement,a.balance,a.size)){let a={...i.arrangement,crossingRepair:b||i.arrangement.crossingRepair,zoneWraps:s},l=hE(e,u[0],a),o=!a.avoidCrossings&&hY(l.edgeArrows,!1)>hY(i.layout.edgeArrows,!1),r=o?{...a,avoidCrossings:!0}:a,n=o?hE(e,u[0],r):l,d=h(n);if(g(i.defects,d)||!hZ(n,i.layout,!1,!1,!1,!1))continue;let c=V(n);(!t||H(c,t.score))&&(t={arrangement:r,defects:d,layout:n,score:c});let[p,f]=V(i.layout);if(c[0]<=p&&c[1]<=f)break}if(!t)break;f=t}let q=hq(e,f.arrangement.zoneWraps);if(f.arrangement.zoneWraps&&!f.arrangement.aroundRanks&&f.layout.routedEdges.some(({edge:t,source:a,target:i})=>q.has(t.id)&&hI(a,i,f.layout.nodeShapes,e.layout.direction))){let t={...f.arrangement,aroundRanks:!0},a=hE(e,u[0],t),i=h(a),s=({edgeArrows:e})=>e.reduce((e,t)=>e+p5(t.points),0);!g(f.defects,i)&&hZ(a,f.layout,!1,!1)&&hj(a)<=hj(f.layout)&&hR(a.edgeArrows)<=hR(f.layout.edgeArrows)&&s(a)<s(f.layout)-.01&&(f={arrangement:t,defects:i,layout:a})}m&&x&&pl(e)&&w({...f.arrangement,separateRoles:!0},!1);let F=t=>{let a=hY(t.layout.edgeArrows);return b&&a>0&&a<=6?hW(e,u[0],t,h,g):t},I=f;f=F(f);let{wrap:E}=I.arrangement;if(b&&!pl(e)&&E.continuations.size>0&&!E.lineBreaks&&hY(f.layout.edgeArrows)>0){let t={...I.arrangement,wrap:{...E,lineBreaks:!0}},a=hE(e,u[0],t),i=F({arrangement:t,defects:h(a),layout:a});!g(f.defects,i.defects)&&y(i.layout,f.layout,!0)&&(f=i)}if(t.pairedReturns&&hY(f.layout.edgeArrows)>0){let t=f,a=new Map(f.layout.edgeArrows.map(e=>[e.edgeId,e])),i=new Set;for(let e of f.layout.routedEdges){let t=a.get(e.edge.id);if(void 0!==e.pair&&t&&f.layout.edgeArrows.some(e=>e!==t&&hY([t,e])>0))for(let t of f.layout.routedEdges)void 0!==t.pair&&(t.edge.id===e.edge.id||t.edge.source===e.edge.target&&t.edge.target===e.edge.source)&&i.add(t.edge.id)}if(i.size>0){w({...f.arrangement,unpairedReturns:i},!0);let a=hY(f.layout.edgeArrows);f!==t&&b&&a>0&&a<=6&&(f=hW(e,u[0],f,h,g));let s=new Set(f.layout.routedEdges.filter(e=>void 0!==e.pair).map(e=>e.edge.id));t.layout.routedEdges.some(e=>void 0!==e.pair&&!i.has(e.edge.id)&&!s.has(e.edge.id))&&(f=t)}}let O=e=>x?function(e){let{groups:t,lanes:a,nodeShapes:i,routedEdges:s}=e,l=e.edgeArrows,o=e=>hM([...e],s,i,t,!0,a);if(0===o(l).shortfalls.length)return e;let r=[...i,...pp(t),...pw(a)],n=e=>{let s=o(e);return{labels:s,shortfall:s.shortfalls.reduce((e,t)=>e+t.shortfall,0),touches:s.touches,crossings:hY(e),defects:hS(e,i,t,a).length,findings:hG(e,r),nodeFindings:hG(e,i),inward:hA(e,i),near:e.reduce((e,t)=>e+p3(t.points,i,new Set([t.sourceNodeId,t.targetNodeId])),0)}},d=n(l);for(let e=0;e<3&&d.shortfall>0;e+=1){let e=!1;for(let t of d.labels.shortfalls){for(let[a,i]of l.entries())if(a!==t.index){for(let s of function(e,t){let{box:a,own:i}=t,s=hT(e),l=[];for(let e of[6,1].map(e=>i+8+e))for(let t of im(s)){if(t.isFirstSegment||t.isLastSegment||hv(a,t)>=e)continue;let[i,o]="horizontal"===t.orientation?[a.y,a.height]:[a.x,a.width];for(let a of[i-e,i+o+e]){let e=s.map((e,i)=>i===t.segmentIndex||i===t.segmentIndex+1?"horizontal"===t.orientation?{x:e.x,y:a}:{x:a,y:e.y}:e);h_(s,e)&&l.push(pW(e))}}return l}(i.points,t)){if(!hz(s))continue;let t=l.map((e,t)=>t===a?{...e,points:s}:e),i=n(t);if(i.shortfall<d.shortfall&&i.defects<=d.defects&&i.crossings<=d.crossings&&i.findings<=d.findings&&i.nodeFindings<=d.nodeFindings&&i.inward<=d.inward&&i.near<=d.near&&i.touches<=d.touches){[l,d,e]=[t,i,!0];break}}if(e)break}if(e)break}if(!e)break}return l===e.edgeArrows?e:{...e,edgeArrows:l}}(function(e){let t,{groups:a,lanes:i,nodeShapes:s,routedEdges:l}=e,o=e.edgeArrows,r=[...s,...pp(a),...pw(i)],n=e=>({crossings:hY(e),defects:hS(e,s,a,i).length,findings:hG(e,r),inward:hA(e,s),labels:hM([...e],l,s,a,!0,i).touches});for(let[a,i]of e.edgeArrows.entries()){let e=new Set([i.sourceNodeId,i.targetNodeId]),l=p3(i.points,s,e);if(0!==l)for(let r of(t??=n(o),function(e,t,a){let i=hT(e),s=[];for(let e of im(i))if(!e.isFirstSegment&&!e.isLastSegment)for(let l of t){if(!pQ(l,a)||iw(e,l)||!pK(e,l,12))continue;let[t,o]="horizontal"===e.orientation?[l.y,l.height]:[l.x,l.width];for(let a of[t-12-1,t+o+12+1]){let t=i.map((t,i)=>i===e.segmentIndex||i===e.segmentIndex+1?"horizontal"===e.orientation?{x:t.x,y:a}:{x:a,y:t.y}:t);h_(i,t)&&s.push(pW(t))}}return s}(i.points,s,e))){if(!hz(r)||p3(r,s,e)>=l)continue;let i=o.map((e,t)=>t===a?{...e,points:r}:e),d=n(i);if(d.defects<=t.defects&&d.crossings<=t.crossings&&d.findings<=t.findings&&d.inward<=t.inward&&d.labels<=t.labels){[o,t]=[i,d];break}}}return o===e.edgeArrows?e:{...e,edgeArrows:o}}(e)):e,U=O(f.layout),X=({edgeArrows:e,groups:t,lanes:a,nodeShapes:i,routedEdges:s})=>{let{shortfalls:l,touches:o}=hM([...e],s,i,t,!0,a);return[o,l.reduce((e,t)=>e+t.shortfall,0)]};for(let t of m&&x&&k&&!A&&!pl(e)&&0===f.arrangement.wrap.continuations.size&&M(U).aspect>=2.3?[!1,!0]:[]){let a=function(e,t,a,i=!1){let{rankMetrics:s}=c5(e,new Map,new Map,a),l=new Map(t.nodeShapes.map(e=>[e.nodeId,e])),o=s.map(({shapes:e})=>{let t=e.map(e=>l.get(e.nodeId));return{top:Math.min(...t.map(e=>e.y)),bottom:Math.max(...t.map(e=>e.y+e.height))}}),r=t.edgeArrows.flatMap(e=>e.points.slice(1).flatMap((t,a)=>{let i=e.points[a];return .01>=Math.abs(t.y-i.y)&&Math.abs(t.x-i.x)>.01?[t.y]:[]})),n=new Map;for(let e=0;e<o.length-1;e+=1){let[t,a]=[o[e],o[e+1]],[s,l]=t.bottom<=a.top?[t.bottom,a.top]:[a.bottom,t.top],d=new Set(r.filter(e=>e>s+.01&&e<l-.01)).size;0===d?n.set(e,56):i||n.set(e,72+(d-1)*18)}return n}(e,U,f.arrangement.reorder,t);if(0===a.size)continue;let i={...f.arrangement,compactGaps:a},s=hE(e,u[0],i),l=F({arrangement:i,defects:h(s),layout:s}),o=O(l.layout),r=new Map(U.edgeArrows.map(e=>[e.id,p5(e.points)]));if(!g(f.defects,l.defects)&&hZ(o,U,!1,!0)&&o.edgeArrows.every(e=>p5(e.points)<=r.get(e.id)+.01)&&hj(o)<=hj(U)&&hR(o.edgeArrows)<=hR(U.edgeArrows)&&X(o).every((e,t)=>e<=X(U)[t])&&M(o).aspect<M(U).aspect){f=l,U=o;break}}let T=e=>{let{width:t,height:a}=hX([...e.nodeShapes,...pp(e.groups),...pw(e.lanes)],e.edgeArrows,hk([...e.edgeArrows],e.routedEdges,e.nodeShapes,e.groups,!0,e.lanes));return Math.max(t,a)},$=x?hD(U):new Set,Y=[];if($.size>0&&U.portOffsets&&U.routeOptions){let{edgeArrows:e,nodeShapes:t,portOffsets:a,routeOptions:i,routedEdges:s}=U,l=s.map((e,t)=>t),o=e=>+!!$.has(s[e].edge.id);Y.push(O({...U,edgeArrows:hL(s,"orthogonal",a,t,{...i,clearHeads:!0},l.sort((e,t)=>o(e)-o(t)),new Map(e.filter(e=>!$.has(e.edgeId)).map(e=>[e.edgeId,e])))}))}if(b&&$.size>0){let t={...f.arrangement,clearHeads:!0},a=hE(e,u[0],t);Y.push(O(F({arrangement:t,defects:h(a),layout:a}).layout))}let G=e=>[hD(e).size,...v(e,!0)],R=U;for(let e of Y.filter(e=>{let[t,a]=[e,U].map(h),[i,s]=[e,U].map(X);return!g(a,t)&&hD(e).size<hD(U).size&&hZ(e,U,!1,!0,!0)&&T(e)<=T(U)+.01&&hR(e.edgeArrows)<=hR(U.edgeArrows)&&i.every((e,t)=>e<=s[t])}))(U===R||H(G(e),G(U)))&&(U=e);let{groups:D,lanes:Z,routedEdges:j}=U,N=[...U.edgeArrows],W=new Map(e.nodes.flatMap(e=>e.description?[[e.id,e.description]]:[])),J=(a=U.nodeShapes,o=(l=a.map(e=>W.has(e.nodeId)?{...e,groupIds:[`${e.id}:described`,...e.groupIds??[]]}:e)).filter(e=>e.label).flatMap(e=>{let t,a,i=W.get(e.nodeId);return i?[pk(e,!0),(t=cF(i,e.shape),a=Math.ceil(14*e.label.split("\n").length*1.35),{type:"text",id:`description:${e.nodeId}`,...e.groupIds?{groupIds:[...e.groupIds]}:{},textColor:"#5f574c",x:e.x+e.width/2,y:e.y+e.height/2+a/2+2+t.height/2,text:t.text,fontSize:12,lineHeight:1.25,maxWidth:Math.ceil(t.width)})]:[pk(e)]}),{nodes:l,texts:o}),K={arrows:N,frames:[],labels:[...J.texts,...hk(N,j,U.nodeShapes,D,!0,Z)],nodes:J.nodes},Q=D&&!D.zoned?function(e,t){let a=new Map(e.frames.map(e=>[e.id,e])),i=t=>{let i=e.groupOf.get(t);return void 0===i?void 0:a.get(i)},s=new Map(t.labels.map(e=>[e.id,e])),l=new Map;for(let e of t.arrows){let t=i(e.sourceNodeId);if(!t||t!==i(e.targetNodeId))continue;let a=s.get(`${e.id}:label`),o=a?hc(a.text,a.maxWidth??160):void 0;(!a||!o||[{x:a.x-o.width/2,y:a.y-o.height/2},{x:a.x+o.width/2,y:a.y+o.height/2}].every(e=>pf(e,t.box)))&&e.points.every(e=>pf(e,t.box))&&l.set(e.id,t.elementId)}let o=new Map(t.nodes.flatMap(e=>{let t=i(e.nodeId);return t?[[e.id,t.elementId]]:[]}));return{arrows:t.arrows.map(e=>{let t=l.get(e.id);return t?{...e,frameId:t}:e}),frames:e.frames.map(t=>({type:"frame",id:t.elementId,name:t.label,...e.composites.has(t.id)?{nodeId:t.id}:{},...t.box})),labels:t.labels.map(e=>{let t=e.containerId?o.get(e.containerId):e.id.startsWith("description:")?o.get(`node:${e.id.slice(12)}`):l.get(e.id.slice(0,-6));return t?{...e,frameId:t}:e}),nodes:t.nodes.map(e=>{let t=o.get(e.id);return t?{...e,frameId:t}:e})}}(D,K):K,{arrows:ee,frames:et,labels:ea}=Q,ei=Q.nodes.flatMap(t=>(function(e,t){if(e.label)return[e];let a={...e,label:hK[e.kind??""]??"Marker",rendererRole:"state-marker"};if("initial"===e.kind)return[{...a,fillColor:t,fillStyle:"solid"}];if("final"!==e.kind)return[a];let i=[`marker:${e.nodeId}`,...e.groupIds??[]];return[{...a,groupIds:i},{...a,id:`${e.id}:core`,nodeId:`${e.nodeId}:core`,kind:"final-core",groupIds:i,x:e.x+6,y:e.y+6,width:e.width-12,height:e.height-12,fillColor:t,fillStyle:"solid"}]})(t,e.style.accentColor)),es=Z?Z.frames.flatMap(e=>{let t=pm(e),a={type:"node",id:`${t}:header`,nodeId:`${t}:header`,kind:"lane-header",rendererRole:"swimlane-header",shape:"rectangle",...e.header,label:e.text,fillColor:"#f6f1e7",fillStyle:"solid",roughness:0,strokeWidth:1,locked:!0};return[{type:"node",id:t,nodeId:t,kind:"lane",rendererRole:"swimlane",shape:"rectangle",...e.box,label:e.label,roughness:0,strokeWidth:1,locked:!0},a,{type:"text",id:`${t}:label`,containerId:a.id,x:a.x+a.width/2,y:a.y+a.height/2,text:e.text,fontSize:16,maxWidth:Math.max(1,a.width-32),locked:!0}]}):D?.zoned?(i=e.style.accentColor,D.frames.flatMap(e=>{var t;let a,s=Math.max(1,e.box.width-24);return[{type:"node",id:e.elementId,nodeId:e.elementId,kind:e.kind??"zone",rendererRole:"zone",shape:"rectangle",...e.box,label:e.label,...(t=e.kind,a=void 0===t?void 0:h1[t],{strokeColor:"cloud"===t||"datacenter"===t?hQ:i,strokeStyle:"cloud"===t||"region"===t||"namespace"===t?"dashed":"zone"===t?"dotted":"solid",strokeWidth:"cloud"===t||"datacenter"===t||"vpc"===t||"cluster"===t?2:1,...a?{fillColor:a,fillStyle:"solid"}:{}}),roughness:0,locked:!0},{type:"text",id:`zone-label:${e.id}`,x:e.box.x+12+aO(e.label,cj,s)/2,y:e.box.y+18,text:e.label,fontSize:cj,maxWidth:s,textAlign:"left",textColor:hQ,locked:!0}]})):[],el=(c=Math.max(0,48-(d={x:Math.min(...(n=hP(s=[...es,...et,...ee,...ei,...ea])).map(e=>e.x)),y:Math.min(...n.map(e=>e.y))}).x),p=Math.max(0,48-d.y),0===c&&0===p?[...s]:s.map(e=>"arrow"===e.type?{...e,points:function(e,t,a){let[i,...s]=e;return[hV(i,t,a),...s.map(e=>hV(e,t,a))]}(e.points,c,p)}:"line"===e.type?{...e,points:function(e,t,a){let[i,s,...l]=e;return[hV(i,t,a),hV(s,t,a),...l.map(e=>hV(e,t,a))]}(e.points,c,p)}:{...e,x:e.x+c,y:e.y+p})),eo={width:Math.max(...(r=hP(el)).map(e=>e.x))+48,height:Math.max(...r.map(e=>e.y))+48},er=[...es.map(e=>e.id),...et.map(e=>e.id),...ei.map(e=>e.id),...ea.map(e=>e.id),...ee.map(e=>e.id)];return{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:eo.width,height:eo.height,accentColor:e.style.accentColor,backgroundColor:e.style.backgroundColor,elements:el,layers:[],layouts:[],zOrder:er}}function h3(e,t){if(!t.nodeId.endsWith(eE)||t.id!==`node:${t.nodeId}`||"rectangle"!==t.shape||2!==t.width||t.height<120)return!1;let a=t.nodeId.slice(0,-eE.length);if(0===a.length)return!1;let i=e.elements.find(e=>"node"===e.type&&e.id===`node:${a}`&&e.nodeId===a);return!!i&&.01>=Math.abs(t.x+t.width/2-(i.x+i.width/2))&&t.y>=i.y+i.height-.01}let h5=":initial";function h4(e,t,a,i){let s=0,l=new Map,o=new Map,r=(e,a,i)=>{let s=2*e+ +(a>=t[e]);l.set(s,(l.get(s)??0)+1);let r=1e6*s+Math.round(2*i);o.set(r,(o.get(r)??0)+1)};for(let{parent:a,child:l,link:o}of e.pairs)s+=function(e,t,a){let i=t-e;return 1===i?0:-1===i?.4:0===i?a:2.5*(Math.abs(i)-1)+.4*(i<0)}(t[a],t[l],i),r(a,t[l],o.parentY),r(l,t[a],o.childY);for(let e of l.values())s+=.4*e*(e-1)/2;for(let e of o.values())s+=+Math.max(0,e-2);let n=new Map,d=new Map;for(let[a,i]of e.tables.entries()){let e=t[a];n.set(e,(n.get(e)??-56)+i.height+56),d.set(e,Math.max(d.get(e)??0,i.width))}for(let e of n.values()){let t=Math.max(0,e-a.height)/a.unit;s+=1.5*t*t}let c=Math.max(0,[...d.values()].reduce((e,t)=>e+t,0)+150*Math.max(0,d.size-1)-a.width)/a.column;return s+1.5*c*c}function h6(e){let t=new Map([...new Set(e)].sort((e,t)=>e-t).map((e,t)=>[e,t]));return e.map(e=>t.get(e))}function h7(e){let t=e.tables.map(()=>new Set);for(let{parent:a,child:i}of e.pairs)t[a].add(i),t[i].add(a);return t}function h8(e,t,a,i){let s=h7(e),l=e.tables.map((e,t)=>t).sort((e,t)=>s[t].size-s[e].size||e-t),o=i(t);for(let e=0;e<a;e+=1){let e=!1;for(let a of l){let l=t[a],r=new Set([l-2,l-1,l+1,l+2]);for(let e of s[a])for(let a of[-1,0,1])r.add(t[e]+a);if(0===s[a].size)for(let e of t)r.add(e);r.delete(l);let n=l;for(let e of[...r].sort((e,t)=>e-t)){t[a]=e;let s=i(t);s<o-1e-9&&([n,o]=[e,s])}t[a]=n,n!==l&&(e=!0)}if(!e)break}}function h9(e,t){let a=[...t],i=e.tables.map(e=>e.height),s=e.tables.map(()=>void 0),l=[];for(let{parent:o,child:r,link:n}of e.pairs){let[e,d]=[t[o],t[r]];if(1>=Math.abs(d-e)){l.push({a:o,b:r,aY:n.parentY,bY:n.childY});continue}let c=Math.sign(d-e),p={item:o,y:n.parentY};for(let t=e+c;t!==d;t+=c){let e=a.length;a.push(t),i.push(4),s.push({parent:o,y:n.parentY}),l.push({a:p.item,b:e,aY:p.y,bY:2}),p={item:e,y:2}}l.push({a:p.item,b:r,aY:p.y,bY:n.childY})}return{column:a,height:i,corridor:s,segments:l}}function ge(e,t,a){let i=[t,a].filter(t=>void 0!==e.corridor[t]).length;return 2===i?20:1===i?26:56}function gt(e,t){let a=[],i=0;for(let[s,l]of t.entries())s>0&&(i+=ge(e,t[s-1],l)),a.push(i),i+=e.height[l];return a}function ga(e,t){let a=e.column.map(()=>0);for(let i of t)gi(e,a,i);return a}function gi(e,t,a){let i=gt(e,a),s=a.length>0?i.at(-1)+e.height[a.at(-1)]:0;for(let[e,l]of a.entries())t[l]=i[e]-s/2}function gs(e,t){let a=new Map,i=new Map,s=[],l=(e,t,a)=>{let s=2*e+ +!!t,l=i.get(s);l?l.push(a):i.set(s,[a])};for(let{a:i,b:o,aY:r,bY:n}of e.segments){let[d,c]=[e.column[i],e.column[o]],[p,h]=[t[i]+r,t[o]+n];if(d===c){s.push(d,Math.min(p,h),Math.max(p,h));continue}l(d,c>d,p),l(c,d>c,h);let g=Math.min(d,c),u=a.get(g),f=d<c?[p,h]:[h,p];u?u.push(...f):a.set(g,f)}let o=0;for(let e of a.values())for(let t=0;t<e.length;t+=2)for(let a=t+2;a<e.length;a+=2)(e[t]-e[a])*(e[t+1]-e[a+1])<0&&(o+=1);for(let e=0;e<s.length;e+=3){let[t,a,l]=[s[e],s[e+1],s[e+2]],r=e=>{let s=0;for(let o of i.get(2*t+e)??[])o>a&&o<l&&(s+=1);return s};o+=Math.min(r(0),r(1))}return o}function gl(e){let t=e.column.map(()=>[]);for(let{a,b:i,aY:s,bY:l}of e.segments)t[a].push({other:i,ownY:s,otherY:l}),t[i].push({other:a,ownY:l,otherY:s});return t}function go(e,t=!0){let a=Array.from({length:Math.max(...e.column)+1},()=>[]);for(let[t,i]of e.column.entries())a[i].push(t);let i=gl(e),s=ga(e,a),l={columns:a.map(e=>[...e]),crossings:gs(e,s)};for(let t=0;t<8&&l.crossings>0;t+=1){let o=[...a.keys()];for(let l of(t%2==1&&o.reverse(),o)){let t=new Map;for(let o of a[l]){let a=0,r=0;for(let{other:t,ownY:n,otherY:d}of i[o]){let i=e.column[t]===l?.5:1;a+=i*(s[t]+d-n),r+=i}t.set(o,r>0?a/r:s[o])}a[l]=[...a[l]].sort((e,a)=>t.get(e)-t.get(a)||s[e]-s[a]),gi(e,s,a[l])}let r=gs(e,s);r<l.crossings&&(l={columns:a.map(e=>[...e]),crossings:r})}s=ga(e,a=l.columns);let o=gs(e,s);for(let i=t&&o>0;i;)for(let t of(i=!1,a))for(let s=0;s+1<t.length;s+=1){[t[s],t[s+1]]=[t[s+1],t[s]];let l=gs(e,ga(e,a));l<o?(o=l,i=!0):[t[s],t[s+1]]=[t[s+1],t[s]]}return{columns:a,top:ga(e,a),crossings:o}}let gr={one:"crowfoot_one","zero-or-one":"crowfoot_one",many:"crowfoot_many","one-or-many":"crowfoot_one_or_many","zero-or-many":"crowfoot_many"};function gn(e){return"one"===e||"zero-or-one"===e}let gd=e=>Math.ceil(Math.max(0,...e.map(e=>aE(e,14))));function gc(e,t){return t.get(e.link[e.end].entity).y+e.row}function gp(e,t){return t.get(e.link[e.end].entity).y+e.y}function gh(e,t){return 1>Math.abs(e.x+e.width/2-(t.x+t.width/2))}function gg(e,t,a){return gh(e.get(t.link[t.end].entity),e.get(a.link[a.end].entity))}function gu(e,t){let a=t.get(e.link[e.end].entity),i=[...t.values()].filter(e=>gh(e,a));return"left"===e.side?a.x-Math.min(...i.map(e=>e.x)):Math.max(...i.map(e=>e.x+e.width))-(a.x+a.width)}function gf(e,t){return e.find(e=>e.link===t.link&&e!==t)}function gm(e){let t=new Map;for(let a of e){if("top"===a.side)continue;let e=`${a.link[a.end].entity}\0${a.side}\0${a.row}`;t.set(e,[...t.get(e)??[],a])}return[...t.values()]}function gv(e,t){let a=e.flatMap(e=>{let a=t.sides.get(e.relationship.id);return["parent","child"].map(t=>({link:e,end:t,side:a[t],row:e[t].y,y:e[t].y}))});for(let t of e){if(t.parent.entity!==t.child.entity)continue;let[e,i]=a.filter(e=>e.link===t);e&&i&&e.row===i.row&&(i.side="top")}return a}function gy(e,t,a,i,s){let l=function(e,t){let a=gm(e),i=e=>(20===e.row?40:28)/2-3,s=new Map;for(let l of a){if(l.length<2)continue;let a=a=>gc(gf(e,a),t)-gc(a,t),o=l.filter(e=>0>a(e)).sort((e,t)=>a(e)-a(t)),r=l.filter(e=>a(e)>0).sort((e,t)=>a(e)-a(t)),n=[...o,...l.filter(e=>0===a(e)),...r],d=Math.min(22,2*i(l[0])/(n.length-1));n.forEach((e,t)=>{e.y=e.row+(t-(n.length-1)/2)*d});let c=(e,a)=>s.set(e,gu(e,t)+48+32*a);o.forEach(c),r.toReversed().forEach(c)}for(let s of a){if(s.length>1)continue;let a=s[0],l=gf(e,a);if(l.side===a.side||"top"===l.side)continue;let o=gp(l,t)-(gc(a,t)-a.row);Math.abs(o-a.row)<=i(a)&&(a.y=o)}for(let a of e)"top"!==a.side&&!s.has(a)&&gu(a,t)>0&&s.set(a,gu(a,t)+48);let l=new Map;for(let t of e){if("top"===t.side)continue;let e=`${t.link[t.end].entity}\0${t.side}`;l.set(e,[...l.get(e)??[],t])}for(let e of l.values()){let{height:a}=t.get(e[0].link[e[0].end].entity);!function(e,t,a){if(e.length<2)return;let i=(t,a)=>e[a].row===e[a-1].row?t:Math.max(t,9),s=s=>{let l=-1/0;for(let[o,r]of e.entries())if((l=Math.max(t(r),o>0?l+i(s,o):l))>a(r)+1e-9)return!1;return!0},[l,o]=[0,22];if(s(o))l=o;else for(let e=0;e<24;e+=1){let e=(l+o)/2;s(e)?l=e:o=e}let r=e.map(a);for(let t=e.length-2;t>=0;t-=1)r[t]=Math.min(r[t],r[t+1]-i(l,t+1));let n=-1/0;for(let[a,s]of e.entries()){let e=a>0?n+i(l,a):-1/0;s.y=Math.min(Math.max(s.y,t(s),e),r[a]),n=s.y}}(e.sort((e,t)=>e.row-t.row||e.y-t.y),e=>Math.max(e.row-i(e),16),e=>Math.min(e.row+i(e),a-16))}return s}(s,i.boxes);!function(e,t,a){let i=e.filter(e=>"parent"===e.end).flatMap(a=>{let i=gf(e,a);return a.side===i.side&&"top"!==a.side&&gg(t,a,i)?[{parent:a,child:i}]:[]}).sort((e,a)=>Math.abs(gp(e.parent,t)-gp(e.child,t))-Math.abs(gp(a.parent,t)-gp(a.child,t))),s=[];for(let{parent:e,child:l}of i){let[i,o]=[t.get(e.link.parent.entity),t.get(e.link.child.entity)],r=e=>(a.get(e)??gu(e,t)+48)-gu(e,t),n=Math.max(r(e),r(l)),[d,c]=[gp(e,t),gp(l,t)].sort((e,t)=>e-t),p=s.filter(a=>a.end.side===e.side&&gg(t,a.end,e)&&a.top<=c&&d<=a.bottom);if("left"===e.side){let r=Math.min(i.x-gu(e,t)-n,...p.map(e=>e.tip-32));a.set(e,i.x-r),a.set(l,o.x-r),s.push({end:e,top:d,bottom:c,tip:r})}else{let r=Math.max(i.x+i.width+gu(e,t)+n,...p.map(e=>e.tip+32));a.set(e,r-i.x-i.width),a.set(l,r-o.x-o.width),s.push({end:e,top:d,bottom:c,tip:r})}}}(s,i.boxes,l);let o=new Map(s.map(e=>{var a,i;let o=t.get(e.link[e.end].entity),r="top"===e.side?("left"===(a=s,i=e.link,a.find(e=>e.link===i&&"parent"===e.end)?.side??"right")?-1:1)*(o.width/2-28):e.y-o.height/2,n=l.get(e);return[`${e.link.relationship.id}:${"parent"===e.end?"source":"target"}`,{side:e.side,offset:r,...void 0===n?{}:{run:n}}]}));return h2({id:e.id,title:e.title,type:"flowchart",nodes:e.entities.map(e=>({id:e.id,label:tz(e),kind:"entity",metadata:{}})),edges:a.map(e=>({id:e.relationship.id,source:e.parent.entity,target:e.child.entity,metadata:{},...e.relationship.label?{label:e.relationship.label}:{}})),layout:{direction:"LR",edgeRouting:"orthogonal"},style:e.style,metadata:{}},{placement:i.boxes,anchors:o,endRun:48})}let gw=[...["layered","hub"].flatMap(e=>[1.6,1.1,.7,.5].map(t=>({start:e,aspect:t,sameColumn:1}))),{aspect:.5,sameColumn:0}];function gx(e){let t=e.elements.filter(e=>"arrow"===e.type),a=Math.max(e.width/e.height,e.height/e.width);return hY(t)+iU(t.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:e.width,height:e.height})).length+(a>2?4*(a-2):0)+t.reduce((e,t)=>e+function(e){let[t,a]=[e.points[0],e.points.at(-1)],i=0;for(let[t,a]of e.points.slice(1).entries())i+=Math.abs(a.x-e.points[t].x)+Math.abs(a.y-e.points[t].y);return Math.max(0,i/(Math.abs(a.x-t.x)+Math.abs(a.y-t.y)+96+200)-1)}(t),0)+function(e){let t=new Map;for(let a of e)for(let[e,i]of[[a.sourceNodeId,a.points[0]],[a.targetNodeId,a.points.at(-1)]]){let a=`${e}\0${Math.round(i.x)}`;t.set(a,[...t.get(a)??[],i.y])}let a=0;for(let e of t.values()){e.sort((e,t)=>e-t);let t=!1;for(let[i,s]of e.slice(1).entries()){let l=s-e[i]<21.99;l&&(a+=t?.25:1),t=l}}return a}(t)+function(e,t){let a=new Map(e.elements.flatMap(e=>"node"===e.type?[[e.nodeId,e]]:[])),i=0;for(let e of t){let[t,s]=[a.get(e.sourceNodeId),a.get(e.targetNodeId)];if(t&&s&&(!(t.x<s.x+s.width)||!(s.x<t.x+t.width)))for(let[t,a,s]of[[e.points[0],e.points[1],e.points.at(-1)],[e.points.at(-1),e.points.at(-2),e.points[0]]])(a.x-t.x)*(s.x-t.x)<0&&(i+=1)}return i}(e,t)+gb*function(e,t){let a=e.elements.flatMap(e=>"node"===e.type?[e]:[]),i=new Map(a.map(e=>[e.nodeId,e])),s=0;for(let e of t){let[t,l]=[i.get(e.sourceNodeId),i.get(e.targetNodeId)];if(!t||!l||t===l||!(t.x<l.x+l.width&&l.x<t.x+t.width))continue;let[o,r]=[Math.min(t.y+t.height,l.y+l.height),Math.max(t.y,l.y)];s+=a.filter(e=>e!==t&&e!==l&&e.y>=o&&e.y+e.height<=r&&e.x<Math.max(t.x+t.width,l.x+l.width)&&Math.min(t.x,l.x)<e.x+e.width).length}return s}(e,t)}let gb=.25;function gk(e,t,a,i,s,l=32){let o=e.points,[r,n]="start"===t?[o[0],o[1]]:[o.at(-1),o.at(-2)],d=n?Math.hypot(n.x-r.x,n.y-r.y):1,[c,p]=n?[(n.x-r.x)/d,(n.y-r.y)/d]:[1,0],h={x:r.x+c*l,y:r.y+p*l};return{type:"node",id:`node:${a}:optional:${i}`,nodeId:`${a}:optional:${i}`,kind:"optional",rendererRole:"er-optional",shape:"circle",x:h.x-6,y:h.y-6,width:12,height:12,label:"Optional end",fillColor:s.style.backgroundColor,fillStyle:"solid",strokeColor:s.style.accentColor,groupIds:[`table:${a}`]}}function gM(e,t,a,i,s){let l=0;for(let{parent:a,child:i}of e.generalizations){let e=t[i]-t[a];if(e<1)return 1/0;l+=2.5*(e-1)}let o=e.boxes.map(()=>0);for(let{a,b:r,whole:n}of e.others){let e=Math.abs(t[a]-t[r]);0===e?(o[a]+=1,o[r]+=1):l+=i+2.5*(e-1),n&&t[a]>t[r]&&(l+=s)}for(let e of o)l+=1.5*Math.max(0,e-2);let r=e.boxes.map((e,t)=>t),n=e=>r[e]===e?e:r[e]=n(r[e]);for(let{a,b:i}of e.others){if(t[a]!==t[i])continue;let[e,s]=[n(a),n(i)];e===s?l+=1.5:r[e]=s}let d=new Map,c=new Map;for(let[a,i]of e.boxes.entries()){let e=t[a];d.set(e,(d.get(e)??-64)+i.width+64),c.set(e,Math.max(c.get(e)??0,i.height))}for(let e of d.values()){let t=Math.max(0,e-a.width)/a.column;l+=1.5*t*t}let p=Math.max(0,[...c.values()].reduce((e,t)=>e+t,0)+130*Math.max(0,c.size-1)-1.2*a.height)/a.unit;return l+1.5*p*p}function gC(e,t,a,i){let s=[a,i].filter(t=>e.corridor[t]).length;return 2===s?28:1===s?Math.max(30,t.get(a<i?`${a}:${i}`:`${i}:${a}`)??0):Math.max(64,t.get(a<i?`${a}:${i}`:`${i}:${a}`)??0)}function gz(e,t,a){let i=[];for(let[s,l]of a.entries()){if(0===s){i.push(0);continue}let o=a[s-1],r=i[s-1]+e.width[o]+gC(e,t,o,l);for(let[o,n]of a.slice(0,s-1).entries()){let a=t.get(n<l?`${n}:${l}`:`${l}:${n}`);void 0!==a&&(r=Math.max(r,i[o]+e.width[n]+a))}i.push(r)}return i}function g_(e,t,a){let i=e.row.map(()=>0);for(let s of a){let a=gz(e,t,s),l=s.length>0?a.at(-1)+e.width[s.at(-1)]:0;for(let[t,o]of s.entries())i[o]=a[t]+e.width[o]/2-l/2}return i}function gL(e,t,a){let i=new Map;for(let{upper:t,lower:s}of e.segments){let l=i.get(e.row[t])??[];l.push({upper:a[t],lower:a[s]}),i.set(e.row[t],l)}let s=0;for(let e of i.values())for(let[t,a]of e.entries())for(let i of e.slice(t+1))(a.upper-i.upper)*(a.lower-i.lower)<0&&(s+=1);let l=new Map;for(let e of t)for(let[t,a]of e.entries())l.set(a,t);let o=e.flats.map(({a:t,b:a})=>{let[i,s]=[l.get(t),l.get(a)].sort((e,t)=>e-t);return{row:e.row[t],low:i,high:s}});for(let a of o){let i=t[a.row];for(let t=a.low+1;t<a.high;t+=1)e.corridor[i[t]]||(s+=1)}for(let[e,t]of o.entries())for(let a of o.slice(e+1))t.row===a.row&&(t.low<a.low&&a.low<t.high&&t.high<a.high||a.low<t.low&&t.low<a.high&&a.high<t.high)&&(s+=1);return s}function gB(e,t){let a=[];for(let[i,s]of e.entries()){let e=t[i];for(a.push({count:1,weight:e,sum:s*e});a.length>1;){let e=a.at(-1),t=a.at(-2);if(t.sum/t.weight<=e.sum/e.weight)break;a.pop(),t.count+=e.count,t.weight+=e.weight,t.sum+=e.sum}}return a.flatMap(e=>Array(e.count).fill(e.sum/e.weight))}function gS(e,t){return e.find(e=>e.link===t.link&&e!==t)}let gA=e=>"top"===e||"bottom"===e;function gP(e,t){let a=(e,t)=>e>t.min+.5&&e<t.max-.5,i=(e,t)=>t.some(t=>.5>Math.abs(e-t)),s=0;for(let i of t.upper)a(i,e)&&(s+=1);for(let i of e.lower)a(i,t)&&(s+=1);for(let a of e.lower)i(a,t.upper)&&(s+=1e3);return s}let gV={inheritance:{stroke:"solid",from:null,to:"triangle_outline"},realization:{stroke:"dashed",from:null,to:"triangle_outline"},composition:{stroke:"solid",from:"diamond",to:null},aggregation:{stroke:"solid",from:"diamond_outline",to:null},association:{stroke:"solid",from:null,to:null},dependency:{stroke:"dashed",from:null,to:"arrow"}},gH=e=>e.length>0?12+22*e.length:14;function gq(e,t){return[e["from"===t?"fromMultiplicity":"toMultiplicity"],e["from"===t?"fromRole":"toRole"]].flatMap(e=>e?[e.trim()]:[])}let gF=e=>Math.ceil(aE(e,13))+2,gI="label-room:",gE=[{wholeBelow:1.5},{},{aspect:1.1},{between:1}];function gO(e,t,a){return e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a}let gU=(e,t,a)=>({x:e.x+t,y:e.y+a}),gX=(e,t,a)=>({...e,x:e.x+t,y:e.y+a}),gT=(e,t,a)=>({x0:e.x0+t,x1:e.x1+t,y0:e.y0+a,y1:e.y1+a}),g$=e=>({x0:e.x,x1:e.x+e.width,y0:e.y,y1:e.y+e.height});function gY(e){let t=e.filter((t,a)=>0===a||Math.abs(t.x-e[a-1].x)>.01||Math.abs(t.y-e[a-1].y)>.01);return t.filter((e,a)=>{if(0===a||a===t.length-1)return!0;let i=t[a-1],s=t[a+1],l=.01>Math.abs(i.x-e.x)&&.01>Math.abs(e.x-s.x),o=.01>Math.abs(i.y-e.y)&&.01>Math.abs(e.y-s.y);return!l&&!o})}function gG(e){return e.slice(1).map((t,a)=>{let i=e[a];return{x0:Math.min(i.x,t.x)-1,x1:Math.max(i.x,t.x)+1,y0:Math.min(i.y,t.y)-1,y1:Math.max(i.y,t.y)+1}})}function gR(){return{boxes:[],cards:new Map,links:[],regions:[],rows:new Map,attach:0,tails:[],top:0}}function gD(e,t,a){e.cards.set(t,a),e.boxes.push(g$(a))}function gZ(e,t,a,i){let s=gY(i);e.links.push({manager:t,report:a,points:s}),e.boxes.push(...gG(s))}function gj(e,t,a,i){for(let[s,l]of t.cards)e.cards.set(s,gX(l,a,i));for(let[s,l]of(e.boxes.push(...t.boxes.map(e=>gT(e,a,i))),e.links.push(...t.links.map(e=>({...e,points:e.points.map(e=>gU(e,a,i))}))),e.regions.push(...t.regions.map(e=>({...e,frame:gX(e.frame,a,i)}))),t.rows))e.rows.set(s,l)}function gN(e){return{x0:Math.min(...e.map(e=>e.x0)),x1:Math.max(...e.map(e=>e.x1)),y0:Math.min(...e.map(e=>e.y0)),y1:Math.max(...e.map(e=>e.y1))}}let gW=e=>0===e.reports.length&&0===e.assistants.length,gJ=e=>0===e.assistants.length&&e.reports.length>0&&e.reports.every(gW),gK=e=>e.reports.length>=2&&e.reports.some(gJ)&&e.reports.every(e=>gW(e)||gJ(e))&&e.reports.every(e=>void 0===e.region);function gQ(e,t,a=5){let i=gR(),s=void 0===t&&e.length>=a,l=0;e.forEach((a,o)=>{let r=t??(s&&o%2==0?-1:1),n=1===r?18:-18-a.width;gD(i,a.id,{x:n,y:l,width:a.width,height:a.height});let d=l+a.height/2;i.tails.push({report:a.id,points:[{x:0,y:d},{x:1===r?n:n+a.width,y:d}]}),s&&1!==r&&o!==e.length-1||(l+=a.height+14)});let o=Math.max(...i.tails.map(e=>e.points[0].y));return i.boxes.push({x0:-1,x1:1,y0:-28,y1:o}),i}function g1(e,t,a,i,s,l,o){for(let r of s)gZ(e,t,r.report,[a,...i,...r.points.map(e=>gU(e,l,o))])}function g0(e,t,a){let i=0;for(let s=t;s<a;s+=1)i+=e[s];return i+24*Math.max(0,a-t-1)}function g2(e,t,a){let i={split:t,half:g0(e,t,a),imbalance:g0(e,t,a)};for(let s=t+1;s<a;s+=1){let l=g0(e,t,s),o=g0(e,s,a),r=Math.max(l,o),n=Math.abs(l-o);(r<i.half-1e-9||r<i.half+1e-9&&n<i.imbalance-1e-9)&&(i={split:s,half:r,imbalance:n})}return i}function g3(e,t=[]){let a=[];for(let i of e){let e=ik(t,i.block.boxes,24,8),s=Number.isFinite(e)?e:0===a.length?0:-1/0,l=Number.isFinite(s)?s:Math.max(...t.map(e=>e.x1))+24-gN(i.block.boxes).x0;a.push(l),t.push(...i.block.boxes.map(e=>gT(e,l,0)))}return a}function g5(e){let t=gN(e.boxes);return t.x1-t.x0}function g4(e,t){let a=e.map(e=>(function e(t,a,i,s){let l=gR(),{width:o,height:r}=t;gD(l,t.id,{x:-o/2,y:0,width:o,height:r}),l.tails.push({report:t.id,points:[{x:0,y:0}]});let n={x:0,y:r},d=t.reports.length>0&&t.reports.every(gW)&&(void 0!==s||t.reports.length>=a.stackMin&&t.reports.length<=20),c=d&&(void 0!==s||t.reports.length<a.twoColumns),p=r,h=gK(t)?a.outline.get(t.id):void 0,g=c||1===h||2===h&&t.reports.length<3;if(t.assistants.forEach((e,a)=>{let i=g||a%2==0?1:-1,s=r+16+(g?a:Math.floor(a/2))*(e.height+14),o=1===i?22:-22-e.width;gD(l,e.id,{x:o,y:s,width:e.width,height:e.height});let d=s+e.height/2;gZ(l,t.id,e.id,[n,{x:0,y:d},{x:1===i?o:o+e.width,y:d}]),p=Math.max(p,s+e.height)}),0===t.reports.length)return l;let u=i||void 0!==t.region;if(d){let e=s??1,i=gQ(t.reports,c?e:void 0,a.twoColumns),n=c?e*(-o/2+20):0,d=p+18;return gj(l,{...i,links:[],regions:[],rows:new Map,tails:[]},n,d),g1(l,t.id,{x:n,y:r},[],i.tails,n,d),l}if(void 0!==h){let i=2===h&&t.reports.length>=3,s=i?0:-o/2+20,n=new Map([[1,p+18],[-1,p+18]]);return t.reports.forEach((o,d)=>{let c=i&&d%2==0?-1:1,p=n.get(c),h=e(o,a,u,c),g=s+c*(18+o.width/2);gj(l,h,g,p);let f=p+o.height/2;gZ(l,t.id,o.id,[{x:s,y:r},{x:s,y:f},{x:g-c*o.width/2,y:f}]),n.set(c,p+gN(h.boxes).y1+14)}),l}let f=t.reports.filter(gW),m=f.length>=a.stackMin,v=Math.ceil(f.length/20),y=[];for(let i of t.reports){if(m&&gW(i)){if(i===f[0])for(let e=0;e<v;e+=1){let t=gQ(f.slice(Math.round(e*f.length/v),Math.round((e+1)*f.length/v)),void 0,a.twoColumns);y.push({block:t,width:g5(t)})}continue}let t=e(i,a,u),s=u?t:function(e,t){if(!t.region)return e;let a=gN(e.boxes),i={x0:Math.min(a.x0-20,e.attach-10-t.region.nameWidth-8),x1:a.x1+20,y0:a.y0-20,y1:a.y1+20},s=i.y0-21-4;return{...e,boxes:[{...i,x0:i.x0-10,x1:i.x1+10,y0:s}],regions:[...e.regions,{root:t.id,label:t.region.label,frame:{x:i.x0,y:i.y0,width:i.x1-i.x0,height:i.y1-i.y0},members:[...e.cards.keys()]}],top:s}}(t,i);y.push({block:s,width:g5(s),root:i.id})}let w=Math.max(1,Math.min(a.rows.get(t.id)??1,y.length)),x=function(e,t,a){let i,s=e.length,l=(e,t)=>!t||e.half<t.half-1e-9||e.half<t.half+1e-9&&e.imbalance<t.imbalance-1e-9,o=Array.from({length:a+1},()=>Array.from({length:s+1},()=>void 0));o[0][0]={half:0,imbalance:0,cut:0};for(let e=1;e<a;e+=1)for(let i=e;i<=s-(a-e);i+=1)for(let a=e-1;a<i;a+=1){let s=o[e-1][a];if(!s)continue;let r=g2(t,a,i),n={half:Math.max(s.half,r.half),imbalance:s.imbalance+r.imbalance,cut:a};l(n,o[e][i])&&(o[e][i]=n)}for(let e=a-1;e<s;e+=1){let r=o[a-1][e];if(!r)continue;let n={half:Math.max(r.half,g0(t,e,s)/2),imbalance:r.imbalance,cut:e};l(n,i)&&(i=n)}let r=[e.slice(i.cut)],n=i.cut;for(let t=a-1;t>=1;t-=1){let a=o[t][n].cut;r.unshift(e.slice(a,n)),n=a}return r}(y,y.map(e=>e.width),w),b=p,k=0;x.forEach((e,a)=>{let i;if(a===x.length-1){i=g3(e);let t=e.map((e,t)=>i[t]+e.block.attach),a=(Math.min(...t)+Math.max(...t))/2;i=i.map(e=>e-a)}else{let{split:t}=g2(e.map(e=>e.width),0,e.length),a={x0:-1,x1:1,y0:-1e6,y1:1e6};i=[...function(e,t){let a=Array.from({length:e.length},()=>0);for(let i=e.length-1;i>=0;i-=1){let s=e[i],l=function(e,t,a=0){let i=1/0;for(let s of t)for(let t of e)s.y0<t.y1+a&&t.y0<s.y1+a&&(i=Math.min(i,t.x0-24-s.x1));return i}(t,s.block.boxes,8),o=Number.isFinite(l)?l:Math.min(...t.map(e=>e.x0))-24-gN(s.block.boxes).x1;a[i]=o,t.push(...s.block.boxes.map(e=>gT(e,o,0)))}return a}(e.slice(0,t),[a]),...g3(e.slice(t),[a])]}let s=Math.max(0,...e.map(e=>-e.block.top)),o=b+28,r=b+56+s,d=[];e.forEach((e,a)=>{let s=i[a];gj(l,e.block,s,r),g1(l,t.id,n,[{x:0,y:o},{x:s+e.block.attach,y:o}],e.block.tails,s,r),d.push(...e.block.boxes.map(e=>gT(e,s,r)))});let c=gN(d);k=Math.max(k,c.x1-c.x0),b=c.y1});let M=y.reduce((e,t)=>t.width>e.width?t:e);return l.rows.set(t.id,{width:k,widestItem:M.width,widest:M.root,items:y.length,rows:x.length}),l})(e,t,!1)),i=gR(),s=[];for(let e of a){let t=ik(s,e.boxes,64,8),a=Number.isFinite(t)?t:0;gj(i,e,a,0),s.push(...e.boxes.map(e=>gT(e,a,0)))}let l=gN(g6(i)),o=gR();return gj(o,i,-l.x0,-l.y0),o}function g6(e){return[...[...e.cards.values()].map(g$),...e.links.flatMap(e=>gG(e.points)),...e.regions.map(e=>({...g$(e.frame),y0:e.frame.y-21-4}))]}function g7(e){let t,a,i;return Math.max(1,Math.max((i=((a=gN(g6(e))).x1-a.x0+40)/(a.y1-a.y0+40))/2.4,.45/i))*Math.max(1,((t=gN(g6(e))).x1-t.x0+80)*(t.y1-t.y0+80+64)/56e5)}let g8="#6250d6",g9=[14,22,30],ue=[8,18,26,36];function ut(e,t,a){let i=(e,t)=>Number.parseInt(e.slice(t,t+2),16);return`#${[1,3,5].map(s=>Math.round(i(t,s)+(i(e,s)-i(t,s))*a).toString(16).padStart(2,"0")).join("")}`}function ua(e,t,a){let i=e=>e.split("\n").length,s=aT(e,t,a);if(1===i(s))return s;let l=a,o=t;for(;o-l>1;){let t=Math.floor((l+o)/2);i(aT(e,t,a))<=i(s)?o=t:l=t}return aT(e,o,a)}let ui=e=>void 0===e?0:e.split("\n").length,us=(e,t)=>Math.ceil(ui(e)*t*1.25),ul=(e,t=0)=>({left:e.x-t,top:e.y-t,right:e.x+e.width+t,bottom:e.y+e.height+t});function uo(e,t,a){let{x:i,y:s,width:l,height:o}=e;return[{x:i+l,y:s+o/2,outward:0,cost:0},{x:i,y:s+o/2,outward:2,cost:0},{x:i+l,y:s+o/4,outward:0,cost:4},{x:i,y:s+o/4,outward:2,cost:4},{x:i+3*l/4,y:s+o,outward:1,cost:6},{x:i+l/4,y:s+o,outward:1,cost:6},{x:i+3*l/4,y:s,outward:3,cost:6},{x:i+l/4,y:s,outward:3,cost:6}].filter(e=>!t.some(t=>Math.abs(t.x-e.x)+Math.abs(t.y-e.y)<14)).map(e=>({x:e.x,y:e.y,direction:a?(e.outward+2)%4:e.outward,cost:e.cost}))}function ur(e,t){let a=0;for(let i of dX(e)){let e=.01>Math.abs(i.to.y-i.from.y);for(let s of t){if(e===.01>Math.abs(s.to.y-s.from.y))continue;let[t,l]=e?[i,s]:[s,i],o=l.from.x,r=t.from.y;o>Math.min(t.from.x,t.to.x)+.5&&o<Math.max(t.from.x,t.to.x)-.5&&r>Math.min(l.from.y,l.to.y)+.5&&r<Math.max(l.from.y,l.to.y)-.5&&(a+=1)}}return a}function un(e,t){let a=dX(e);return 24*Math.max(0,a.length-1)+a.reduce((e,t)=>e+Math.abs(t.to.x-t.from.x)+Math.abs(t.to.y-t.from.y),0)+500*ur(e,t)}let ud=(e,t,a)=>e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a;function uc(e,t,a,i){return ud({left:Math.min(e.x,t.x),right:Math.max(e.x,t.x),top:Math.min(e.y,t.y),bottom:Math.max(e.y,t.y)},a,i)}function up(e,t,a,i,s,l){if(0===e.dottedLines.length)return{arrows:[],labels:[],straight:0};let o=new Map;for(let e of s){let t=e.points[0],a=e.points.at(-1);o.set(e.sourceNodeId,[...o.get(e.sourceNodeId)??[],t]),o.set(e.targetNodeId,[...o.get(e.targetNodeId)??[],a])}let r=s.flatMap(e=>dX(e.points)),n=[...t.values()].flatMap(e=>[e.y,e.y+e.height]),d=e=>[...t.values()].flatMap(t=>e.flatMap(e=>[t.y-e,t.y+t.height+e])),c=[...t.values()],p=c.flatMap(e=>{let t=c.filter(t=>t.y>=e.y+e.height&&t.x<e.x+e.width&&e.x<t.x+t.width).map(e=>e.y);return 0===t.length?[]:[(e.y+e.height+Math.min(...t))/2]}),h=a.map(e=>iN(e)),g=Math.min(...n,...h.map(e=>e.y)),u=Math.max(...n,...a.map(e=>e.y+e.height)),f=[...h.map(e=>e.y-10),...a.flatMap(e=>[e.y+e.height+14,e.y+e.height+24]),g-24,u+24],m=[...d(g9),...p,...f],v=[...d([...g9,...ue]),...p,...f],y=g-60-10*e.dottedLines.length,w=u+60,x={left:Math.min(...c.map(e=>e.x),...a.map(e=>e.x))-60,right:Math.max(...c.map(e=>e.x+e.width),...a.map(e=>e.x+e.width))+60},b={remaining:Math.min(4e5,48e3*e.dottedLines.length)},k=[],M=[],C=[],z=0,_=0,L=a.flatMap(e=>dX([{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height},{x:e.x,y:e.y}])),B=(e,t)=>{let a,i=dX(t).toSorted((e,t)=>Math.abs(t.to.x-t.from.x)+Math.abs(t.to.y-t.from.y)-(Math.abs(e.to.x-e.from.x)+Math.abs(e.to.y-e.from.y))),s=[...r,...dX(t)],l=aE(e,13),o=[1,2,3].map(t=>{let a=1===t?e:ua(e,Math.ceil(l/t)+13,13),i=aU(a,13,Math.ceil(aE(a,13)));return{text:a,width:i,height:Math.ceil(13*ui(a)*1.35)}}).flatMap(({text:e,width:t,height:a},l)=>i.flatMap(i=>{let o=.01>Math.abs(i.to.y-i.from.y);return[.5,.3,.7,.15,.85].flatMap(r=>{let n={x:i.from.x+(i.to.x-i.from.x)*r,y:i.from.y+(i.to.y-i.from.y)*r};return[6,14,30,50,80].flatMap(i=>(o?[-1,1].map(e=>({left:n.x-t/2,right:n.x+t/2,top:e<0?n.y-i-a:n.y+i,bottom:e<0?n.y-i:n.y+i+a})):[1,-1].map(e=>({left:e>0?n.x+i:n.x-i-t,right:e>0?n.x+i+t:n.x-i,top:n.y-a/2,bottom:n.y+a/2}))).map(a=>({text:e,width:t,rect:a,offset:i,form:l,score:100*c.filter(e=>ud(a,ul(e),4)).length+100*h.filter(e=>ud(a,ul(e),2)).length+10*L.filter(e=>uc(e.from,e.to,a,3)).length+10*C.filter(e=>ud(a,e,4)).length+s.filter(e=>uc(e.from,e.to,a,3)).length})))})})).reduce((e,t)=>t.score<e.score||t.score===e.score&&(t.offset<e.offset||t.offset===e.offset&&t.form<e.form)?t:e);return{text:o.text,width:o.width,rect:o.rect,covers:(a=o.rect,c.some(e=>ud(a,ul(e),0))||h.some(e=>ud(a,ul(e),0)))}},S=(e,t,a)=>{let i=Math.min(g,...C.map(e=>e.top),...[...r,...dX(a)].flatMap(e=>[e.from.y,e.to.y]))-8,s=e.rect.bottom-e.rect.top;return{...e,rect:{left:t-e.width/2,right:t+e.width/2,top:i-s,bottom:i},covers:!1}};for(let[s,n]of e.dottedLines.entries()){let d=t.get(n.report),c=t.get(n.manager),u=new Set([i.get(n.report),i.get(n.manager)]),L=i.get(n.report)===i.get(n.manager)?i.get(n.report):void 0,A=(e,i)=>[...[...t].map(([t,a])=>({box:ul(a),clearance:e,...t===n.report||t===n.manager?{own:!0}:{}})),...h.map(e=>({box:ul(e),clearance:2})),...a.filter(e=>!u.has(e.id)).map(t=>({box:ul(t),clearance:Math.min(e,8)})),...a.filter(e=>i||L===e.id).flatMap(e=>[{...e,height:0},{...e,y:e.y+e.height,height:0},{...e,width:0},{...e,x:e.x+e.width,width:0}].map(t=>({box:ul(t),clearance:8,...L===e.id?{}:{parallel:!0}})))],P=uo(d,o.get(n.report)??[],!1),V=uo(c,o.get(n.manager)??[],!0),H=[d,c],q=[...f,...m.filter(e=>H.some(t=>e>t.y-120&&e<t.y+t.height+120))],F=(e,t,a={sources:P,targets:V},i=!1)=>t.flatMap(t=>{let s={remaining:Math.min(b.remaining,12e3)},l=dO({...a,obstacles:e,...t,routed:r,top:y,bottom:w,reach:x,...i?{wide:!0,crossingCost:500,backCrossingFactor:1}:{},budget:s});return b.remaining-=Math.min(b.remaining,12e3)-s.remaining,l?[gY(l)]:[]}).reduce((e,t)=>!e||un(t,r)<un(e,r)?t:e,void 0),I=F(A(6,!0),[{lanes:[...p,...f],denseLanes:m},{lanes:m,denseLanes:v}])??F(A(6,!0),[{lanes:q,denseLanes:q}])??F(A(3,!1),[{lanes:v,denseLanes:v}]),E=e.dottedLines.length-1-s,O=l&&I&&ur(I,r)>0&&b.remaining>=12e3+48e3*E?F(A(6,!0),[{lanes:[...p,...f],denseLanes:m}],void 0,!0):void 0,U=O&&I&&un(O,r)<un(I,r)?O:I,X=()=>{let e=Math.min(g-24-10*z,...r.flatMap(e=>[e.from.y-10,e.to.y-10])),t=(t,a)=>[0,-1,1,-2,2,-4,4].map(i=>({x:t.x+t.width/2+48*i,y:e,direction:a,cost:8*Math.abs(i)})),a=[{lanes:[...q,e],denseLanes:[...q,e]}],i=F(A(6,!0),a,{sources:P,targets:t(d,3)}),s=i&&F(A(6,!0),a,{sources:t(c,1),targets:V});return i&&s?gY([...i,...s]):void 0},T=U?void 0:X();T&&(z+=1),U||T||(_+=1);let $=gY(U??T??function(e,t){let a=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),[i,s]=[a(e),a(t)],l=(e,t,a)=>{let i=t.x-a.x,s=t.y-a.y,l=Math.min(0===i?1/0:e.width/2/Math.abs(i),0===s?1/0:e.height/2/Math.abs(s));return{x:a.x+i*l,y:a.y+s*l}};return[l(e,s,i),l(t,i,s)]}(d,c)).map(({x:e,y:t})=>({x:e,y:t})),Y=n.label?.trim(),G=void 0===Y?void 0:B(Y,$);if(void 0!==Y&&G?.covers&&!T&&b.remaining>=12e3+48e3*E){let e=X(),t=e&&B(Y,e);e&&t&&!t.covers&&(z+=1,$=e.map(({x:e,y:t})=>({x:e,y:t})),G=t)}G?.covers&&(G=S(G,$[0].x,$)),r.push(...dX($)),o.set(n.report,[...o.get(n.report)??[],$[0]]),o.set(n.manager,[...o.get(n.manager)??[],$.at(-1)]),k.push({type:"arrow",id:`edge:dotted:${n.id}`,edgeId:`dotted:${n.id}`,sourceNodeId:n.report,targetNodeId:n.manager,points:$,startArrowhead:null,endArrowhead:"arrow",strokeColor:g8,strokeStyle:"dashed",strokeWidth:2,roughness:0}),void 0!==G&&(C.push(G.rect),M.push({type:"text",id:`text:dotted:${n.id}`,x:(G.rect.left+G.rect.right)/2,y:(G.rect.top+G.rect.bottom)/2,text:G.text,fontSize:13,lineHeight:1.25,maxWidth:G.width,textColor:g8}))}return{arrows:k,labels:M,straight:_}}var uh=a(664);a(3614);var ug=a(1594),uu=a(6297),uf=a(7258),um=a(2275),uv=a(2860),uy=a(1554),uw=a(4233);let ux=l.Or("effect/Metric/CurrentMetricAttributes",{defaultValue:()=>({})}),ub=l.Or("effect/Metric/MetricRegistry",{defaultValue:()=>new Map}),uk="~effect/Metric";class uM{[uk]=uk;#e;#t="";id;description;attributes;constructor(e,t,a){this.id=e,this.description=t,this.attributes=a}valueUnsafe(e){return this.hook(e).get(e)}modifyUnsafe(e,t){return this.hook(t).modify(e,t)}updateUnsafe(e,t){return this.hook(t).update(e,t)}hook(e){var t;let a,i=l.Jt(e,ux);i!==this.#e&&(this.#e=i,this.#t=(t=this,a=Object.entries(uP(this.attributes,i)).sort((e,t)=>e[0]<t[0]?-1:+(e[0]>t[0])),JSON.stringify([t.type,t.id,t.description,a])));let s=l.Jt(e,ub),o=s.get(this.#t);return uw.b0(o)&&(o={id:this.id,type:this.type,description:this.description,attributes:Object.keys(i).length>0?uP(this.attributes,i):this.attributes,hooks:this.createHooks()},s.set(this.#t,o)),o.hooks}pipe(){return(0,uy.tT)(this,arguments)}}let uC=BigInt(0);class uz extends uM{type="Counter";#a;#i;constructor(e,t){super(e,t?.description,uV(t?.attributes)),this.#a=t?.bigint??!1,this.#i=t?.incremental??!1}createHooks(){let e=this.#a?uC:0,t=this.#i?this.#a?e=>e>=uC:e=>e>=0:e=>!0;return uA(()=>({count:e,incremental:this.#i}),a=>{t(a)&&(e+=a)})}}class u_ extends uM{type;metric;valueUnsafe;updateUnsafe;modifyUnsafe;constructor(e,t,a,i){super(e.id,e.description,e.attributes),this.metric=e,this.valueUnsafe=t,this.updateUnsafe=a,this.modifyUnsafe=i,this.type=e.type}createHooks(){return this.metric.createHooks()}}let uL=(e,t)=>new uz(e,t),uB=(0,ug.XY)(2,(e,t)=>uu.sxi(a=>uu.OH5(()=>e.updateUnsafe(t,a)))),uS=(0,ug.XY)(2,(e,t)=>{var a;let i,s,o=(a=t,s={},e=>{let t=l.Jt(e,ux);return t!==i&&(i=t,s=uP(t,a)),l.WQ(e,ux,s)});return new u_(e,t=>e.valueUnsafe(o(t)),(t,a)=>e.updateUnsafe(t,o(a)),(t,a)=>e.modifyUnsafe(t,o(a)))});function uA(e,t,a){return{get:e,update:t,modify:a??t}}function uP(e,t){return{...uV(e),...uV(t)}}function uV(e){return uw.EA(e)&&Array.isArray(e)?e.reduce((e,[t,a])=>(um.x(e,t,a),e),{}):e}uf.F,uf.F,ug.MN;var uH=a(1587),uq=(a(6526),a(719),a(2707));let uF=[["artifactId","sketchi.artifact_id"],["attemptId","sketchi.attempt_id"],["projectId","sketchi.project_id"],["requestId","sketchi.request_id"],["runId","sketchi.run_id"],["scenarioId","sketchi.scenario_id"],["traceId","sketchi.trace_id"]],uI=new Set(["artifact_count","artifact_format","artifact_kind","attempt","cache_mode","duration_ms","error_category","error_tag","failure_category","format_count","method","model","operation","outcome","provider","request_kind","retry_kind","sink","status","status_code","surface","timeout_kind","timeout_ms"]),uE=([...uF.map(([,e])=>e),...uI],{metric:()=>void 0}),uO=l.Or("@sketchi/observability/TelemetryExporter",{defaultValue:()=>uE}),uU=l.Or("@sketchi/observability/TelemetryCorrelation",{defaultValue:()=>({})});function uX(e){let t=e?.trim();if(t&&!(t.length>128)&&/^[A-Za-z0-9][A-Za-z0-9._:-]*$/.test(t))return t}function uT(e,t){return o.JkU(function*(){let a={...yield*uU,...function(e){let t={};for(let[a]of uF){let i=uX(e[a]);i&&(t[a]=i)}return t}(t)},i=function(e){let t={};for(let[a,i]of uF){let s=e[a];s&&(t[i]=s)}return t}(a);return yield*e.pipe(o.PfK(uU,a),o.Muk(i),o.swY(i))})}l.Or("@sketchi/observability/TelemetryResource",{defaultValue:()=>({serviceName:"sketchi"})});let u$=o.fn(function*(e,t,a={}){let i=function(e){let t={artifact_kind:e.artifactKind,failure_category:e.failureCategory,operation:e.operation,outcome:e.outcome,provider:e.provider,retry_kind:e.retryKind,sink:e.sink,surface:e.surface,timeout_kind:e.timeoutKind},a={};for(let[e,i]of Object.entries(t)){let t=uX(i);t&&(a[e]=t)}return a}(a);yield*uB(uS(e,i),t);let s=yield*uO,l=uH.getOrUndefined((yield*o._32.pipe(o.uKv)));yield*o.OH5(()=>s.metric({attributes:i,metric:e.id,metricType:e.type,...l?{spanId:l.spanId,traceId:l.traceId}:{},value:t}))});uq.W1;var uY=a(9315),uG=a(8713),uR=a(4733);let uD=new Set([...JSON.parse('["access","ace","active","addresses","administration","adobe","advanced","affinity","agent","agents","alloy","amazon","amp","analysis","analyzer","and","android","angular","apple","appliance","application","approvals","arc","armor","arrow","artifact","artifacts","asset","assist","assistant","assured","atom","audit","augment","authority","authorization","automatic","automation","autopilot","aware","axiom","azure","babel","balancing","bare","bash","basic","batch","bedrock","big","billing","binary","blitz","bolt","branching","brave","brunch","build","builder","business","c","capture","carbon","catalog","center","certificate","channel","checkpoints","chrome","chromium","cipher","clerk","cloud","code","codex","cohere","collaboration","command","composer","compute","computing","configuration","connect","connection","connectivity","connectors","console","contact","container","containers","context","contour","control","convex","copilot","core","crystal","cursor","custom","cypress","dart","dashboard","data","database","databases","db","debugger","default","deploy","deployed","deployment","design","designer","developer","director","directory","discovery","disk","distributed","document","dolphin","domains","dovetail","drizzle","early","edge","elastic","electron","elixir","ember","enforcement","engine","enterprise","error","expo","external","financial","firefly","firewall","fireworks","flask","fleet","flora","flow","flutter","flux","for","form","foundry","framer","frameworks","free","functions","fusion","game","gateway","generic","go","google","goose","graph","graphite","gulp","health","healthcare","home","hub","hybrid","hyper","hyperbolic","id","identity","ideogram","ids","illustrator","inception","inference","inflection","insights","insomnia","inspection","integration","intelligence","interconnect","inventory","jest","job","jobs","justifications","key","lab","labeling","lambda","language","launcher","layers","learning","legacy","less","linear","liquid","lit","load","local","lockup","logging","logic","logs","loss","lovable","lunacy","machine","machinery","magic","make","managed","management","manager","map","maps","marionette","markdown","marketing","marketplace","media","mesh","metal","migrate","migration","mixed","mobile","model","modeling","module","mongoose","monitoring","monocle","moonshot","motion","my","native","natural","neon","net","network","networking","next","nomad","notepad","notes","notion","nova","object","objective","obsidian","on","opera","operations","optimization","optimized","oracle","packaging","packer","palm","pandas","panel","partner","passport","patch","payload","performance","permissions","perplexity","persistent","phishing","phoenix","pipeline","platform","playwright","plus","poetry","policy","pool","portal","positron","postman","preferences","premium","preparation","presto","prettier","prevention","private","processing","producer","project","protection","protractor","providers","proxy","pulsar","puppeteer","putty","python","quantum","quasar","query","quiver","quotas","r","racket","rails","railway","rancher","react","real","reality","realm","recommendations","reflex","registry","release","render","replicate","reporting","resend","resource","restricted","retail","retention","rider","risk","router","routes","routing","ruby","rules","run","runway","rust","safari","sanity","sass","scanner","scheduler","search","secret","security","segment","selenium","sense","sentry","series","servers","service","services","sharp","shell","showcase","sketch","slack","slate","snowflake","solidity","solution","solutions","spanner","spark","speech","spring","stability","standard","stimulus","storage","storybook","stream","structured","studio","stylus","sublime","subversion","suite","support","swagger","swift","sync","systems","tables","tailwind","tasks","templates","test","text","threads","threat","tier","tiers","time","to","together","tomcat","tools","topology","trace","tracker","traffic","training","transfer","translation","trial","tutorials","twitter","type","types","typescript","unified","unity","unstructured","upgrade","upstage","user","vagrant","value","vapor","vault","vertex","video","view","vim","virtual","vision","visual","vortex","voyage","web","windsurf","wolfram","workbook","workflow","workflows","workload","workloads","workshop","world","yarn","yoga","zed"]'),"antigravity","api","dataflow","datastore","datastream","filestore","genomics","json","memorystore","meta","nitro","observability","onboarding","ontology","profiler","pubsub","pwa","remix","serverless","submodel","turbo"]),uZ=/[A-Za-z0-9.+#]+/gu;function uj(e){return[...e.matchAll(uZ)].map(([e])=>e.replace(/^\.+|\.+$/gu,"")).filter(Boolean).map(e=>e.toLocaleLowerCase())}function uN(e){return/[0-9.+#]/u.test(e)||e.length>=3&&!uD.has(e)}function uW(e){return e.trim().toLocaleLowerCase().replace(/\s+/gu," ")}function uJ(e,t){return e.some(e=>uW(e).includes(t))}function uK(e,t){let a=uW(e.slug),i=uW(e.name),s=uW(e.collection),l=uW((0,uR.y)(e.collection));return a===t?0:i.startsWith(t)?1:uJ(e.aliases,t)?2:a.includes(t)||i.includes(t)||uJ(e.keywords,t)?3:s.includes(t)||l.includes(t)?4:null}let uQ=new Set(["cloud-platforms","cloud-vendors"]);function u1(e){return e.toLocaleLowerCase().replace(/[^a-z0-9+#]/gu,"")}let u0=new WeakMap,u2=new Set(["app","cluster","database","db","icon","logo","server","service"]);function u3(e,t){let a=uj(t),i=[a,a.filter(e=>!u2.has(e))].map(e=>u1(e.join(""))),s=[e.slug,e.name,...e.aliases];if(s.some(e=>i.includes(u1(e))))return"exact";let l=new Set(a.flatMap((e,t)=>a.slice(t).map((e,i)=>u1(a.slice(t,t+i+1).join("")))));return s.some(e=>""!==u1(e)&&l.has(u1(e)))?"vendor":"weak"}let u5=new Map([["aks",["azure","kubernetes"]],["amazon",["aws"]],["aws",["amazon","amazon web services"]],["eks",["aws","kubernetes"]],["gcp",["google cloud"]],["gke",["google kubernetes engine","google cloud","kubernetes"]],["google cloud",["gcp"]],["google kubernetes engine",["gke","google cloud","kubernetes"]],["k8s",["kubernetes"]]]),u4=new Set([...u5].flatMap(([e,t])=>[e,...t].map(u1)));class u6 extends s.rNF()("CodeModeIconLoadError",{cause:s.kld(),message:s.QfV,slug:s.QfV}){}function u7(e){return{collection:e.collection,name:e.name,slug:e.slug}}function u8(e){let t=e.icons.filter(uG.nC),a=new Map(t.map(e=>[e.slug,e])),i=new Map(t.map(e=>[e.slug,u7(e)]));return{get:e=>i.get(e),isStrayVendorLogo:(e,t)=>{let i,s=a.get(e);return void 0!==s&&(uQ.has(s.collection)||[s.slug,s.name,...s.aliases].some(e=>u4.has(u1(e))))&&(i=uj(t),[t,...i.flatMap((e,t)=>i.slice(t).flatMap((e,a)=>{let s=i.slice(t,t+a+1).join(" ");return u5.get(s)??[]}))]).every(e=>"weak"===u3(s,e))},search:(e,a)=>(function(e,t={}){let a=uW(t.query??""),i=t.collection?.trim(),s=Math.max(0,t.limit??1/0),l=e.flatMap(e=>{if(i&&e.collection!==i)return[];let t=function(e,t){if(0===t.length)return 5;let a=uK(e,t);if(null!==a)return a;let i=t.split(/\s+/u);if(1===i.length)return null;let s=0;for(let t of i){let a=uK(e,t);if(null===a)return null;s=Math.max(s,a)}return s}(e,a);return null===t?[]:[{icon:e,rank:t}]}).sort((e,t)=>e.rank-t.rank||e.icon.name.localeCompare(t.icon.name)||e.icon.slug.localeCompare(t.icon.slug));return(l.length>0?l:function(e,t,a){let i=uj(t),s=function(e){let t=u0.get(e);if(t)return t;let a=new Map;for(let t of e)for(let e of new Set([t.slug,t.name,...t.aliases].map(u1))){if(!e)continue;let i=a.get(e)??[];i.push(t),a.set(e,i)}return u0.set(e,a),a}(e),l=new Map;for(let e=Math.min(4,i.length);e>0;e-=1)for(let t=0;t+e<=i.length;t+=1){let o=i.slice(t,t+e),r=o.some(uN);for(let i of s.get(u1(o.join("")))??[]){let s=uQ.has(i.collection);if(l.has(i.slug)||!r&&!s||a&&i.collection!==a)continue;let n=uK(i,o.join(" "))??6;l.set(i.slug,{icon:i,length:e,start:t,termRank:n,vendor:s})}}return[...l.values()].sort((e,t)=>t.length-e.length||Number(e.vendor)-Number(t.vendor)||e.start-t.start||e.termRank-t.termRank||e.icon.name.localeCompare(t.icon.name)||e.icon.slug.localeCompare(t.icon.slug)).map(({icon:e})=>({icon:e,rank:6}))}(e,a,i)).slice(0,s)})(t,{limit:a,query:e}).map(({icon:t})=>({...u7(t),match:u3(t,e)})),loadSvg:e.loadSvg,slugLookup:e.slugLookup}}function u9(e){return se(e).toLowerCase()}function fe(e){var t;let a;return{code:"unknown_icon",severity:"warning",stage:"input",...e.ref?{ref:e.ref}:{},message:e.message,hint:e.catalog?(a=function(e,t){let a=t.split(/[-_\s]+/u).filter(Boolean),i=new Set,s=[];for(let t of[a.join(" "),...a])if(t){for(let a of e.search(t,3))i.has(a.slug)||(i.add(a.slug),s.push(a));if(s.length>=3)break}return s.slice(0,3)}(t=e.catalog,e.slug)).length>0?`Use an exact slug, for example ${a.map(e=>`"${e.slug}" (${e.name})`).join(", ")}, or look one up with ${t.slugLookup}.`:`Look up an exact slug with ${t.slugLookup}, or omit icon.`:"This Sketchi runtime has no icon catalog; omit icon or retry on a host with logos."}}function ft(e,t,a={noun:"node",path:"nodes"}){let i=[],s=e.map(e=>{if(!e.icon)return e;let s=u9(e.icon.slug),l={kind:"node",id:e.id,path:`${a.path}.icon.slug`},o=u(s)?t?.get(s):void 0;if(o&&!t?.isStrayVendorLogo(s,e.label))return{...e,icon:{slug:s}};i.push(o?{code:"icon_dropped",severity:"warning",stage:"input",ref:l,message:`Icon "${s}" on ${a.noun} "${e.id}" is a vendor logo, but the label "${e.label}" does not name ${o.name}; the ${a.noun} renders without a logo.`,hint:`Put a vendor's logo only on a ${a.noun} whose label names that vendor ("Cloudflare Workers" takes cloudflare); other ${a.noun}s take their product's own logo or none.`}:fe({catalog:t,message:`Icon "${e.icon.slug}" on ${a.noun} "${e.id}" is not a Sketchi node logo; the ${a.noun} renders without a logo.`,ref:l,slug:s}));let{icon:r,...n}=e;return n});return{issues:i,nodes:s}}let fa=o.fn("codeMode.icons.embedScene")(function*(e,t){let a=e.elements.map(e=>"node"===e.type&&e.icon?{...e,icon:{...e.icon,slug:u9(e.icon.slug)}}:e),i=new Map([...new Set(a.flatMap(e=>"node"===e.type&&e.icon?[e.icon.slug]:[]))].flatMap(e=>{let a=u(e)?t?.get(e):void 0;return a?[[e,a]]:[]})),s=new Map((yield*o.jJl([...i.values()],e=>t?t.loadSvg(e).pipe(o.TjK(e=>(0,uG.Bn)(e)),o.TjK(t=>[e.slug,{name:e.name,svg:t}]),o.Tyx(t=>o.FFw("Code Mode icon asset unavailable",{slug:e.slug,cause:t}).pipe(o.as(void 0)))):o.PyW(void 0),{concurrency:8})).flatMap(e=>e?[e]:[])),l=function(e,t){let a=new Map,i=[],s=ie(e),l=it(e,s),o=0,r=e.elements.map((e,r)=>{if("node"!==e.type||!e.icon)return e;let n=e.icon,d=t=>(i.push({elementId:e.id,index:r,reason:t,slug:n.slug}),function(e){let{icon:t,...a}=e;return a}(e)),c=a.get(n.slug),p=c??(u(n.slug)?t(n.slug):void 0);if("string"!=typeof p?.svg||a6(p.svg)>aY.maxAssetBytes)return d("unavailable");if(e.rendererRole)return d("lifeline");if("polygon"!==e.shape&&s(e)){let t=l.get(e.id)?.element;if(ia(e,t,n)&&!ia(e,t,void 0))return d("no_room")}if(!c){let e=a6(p.svg);if(o+e>aY.maxTotalAssetBytes)return d("budget");o+=e,a.set(n.slug,{name:p.name,svg:p.svg})}return e}),{icons:n,...d}=e;return{dropped:i,scene:a.size>0?{...d,elements:r,icons:Object.fromEntries(a)}:{...d,elements:r}}}({...e,elements:a},e=>s.get(e));return{issues:l.dropped.map(e=>(function(e){let{dropped:t}=e,a={kind:"element",id:t.elementId,path:`elements[${t.index}].icon${"unavailable"===t.reason?".slug":""}`},i=`Icon "${t.slug}" on node "${t.elementId}"`;if("unavailable"===t.reason&&!e.known)return fe({catalog:e.catalog,message:`${i} is not a Sketchi node logo; the node renders without a logo.`,ref:a,slug:t.slug});let s=e.element?.type==="node"?a9(e.element.icon):0,l={budget:{message:`${i} exceeds the per-diagram logo budget; the node renders without a logo.`,hint:"Use fewer distinct logos in one diagram."},lifeline:{message:`Sequence lifeline or activation "${t.elementId}" cannot carry a logo; the logo was dropped.`,hint:"Put logos on nodes or sequence participants, not on lifelines."},no_room:{message:`${i} does not fit above its label; the node renders without a logo.`,hint:`Make node "${t.elementId}" about ${s}px taller or shorten its label to keep the logo.`},unavailable:{message:`${i} could not be loaded; the node renders without a logo.`,hint:"Retry the request; if the logo stays unavailable, omit icon."}}[t.reason];return{code:"icon_dropped",severity:"warning",stage:"input",ref:a,message:l.message,hint:l.hint}})({catalog:t,dropped:e,element:a[e.index],known:i.has(e.slug)})),scene:l.scene}}),fi=/^(node|step|item|box|thing|process|task)\s*\d*$/i,fs=/^(diagram|untitled|flowchart|chart|sketch)$/i;function fl(e){return e.map(e=>({kind:"node",id:e.id}))}function fo(e){if(void 0===e)return;let t=se(e);return t.length>0?t:void 0}let fr={start:"start",begin:"start",entry:"start",process:"process",task:"process",action:"process",step:"process",activity:"process",operation:"process",decision:"decision",condition:"decision",question:"decision",choice:"decision",gateway:"decision",end:"end",stop:"end",finish:"end",exit:"end",final:"end"},fn=new Set(["terminal","terminator","terminus"]),fd=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),fc=["excalidraw","scene"],fp=["scene"],fh=uL("sketchi_codemode_requests",{description:"Code Mode boundary requests by terminal outcome",incremental:!0}),fg=uL("sketchi_codemode_failures",{description:"Code Mode boundary failures by typed status",incremental:!0}),fu=uL("sketchi_codemode_artifacts",{description:"Code Mode artifacts accepted at workflow boundaries",incremental:!0}),ff=new class e extends uM{type="Histogram";#s;constructor(e,t){super(e,t?.description,uV(t?.attributes)),this.#s=t.boundaries}createHooks(){let e=this.#s,t=e.length,a=new Uint32Array(t+1),i=new Float64Array(t),s=0,l=0,o=Number.MAX_VALUE,r=-Number.MAX_VALUE;return uh.Tj(uh.di(e,uv.wN),(e,t)=>{i[t]=e}),uA(()=>({buckets:(()=>{let e=uh.CN(t),s=0;for(let l=0;l<t;l++){let t=i[l];s+=a[l],e[l]=[t,s]}return e})(),count:s,min:o,max:r,sum:l}),e=>{let n=0,d=t;for(;n!==d;){let t=Math.floor(n+(d-n)/2);e<=i[t]?d=t:n=t,d===n+1&&(e<=i[n]?d=n:n=d)}a[n]=a[n]+1,s+=1,l+=e,e<o&&(o=e),e>r&&(r=e)})}}("sketchi_codemode_duration_ms",{description:"Code Mode boundary duration in milliseconds",boundaries:(i=[1,5,10,25,50,100,250,500,1e3,2500,5e3,1e4],uh.BC(uh.pb(new Set(i),e=>e>0),1/0))});class fm extends l.kl()("@sketchi/diagram-agent/CodeModeRuntimeEnvironment"){}function fv(e={}){return n.Py(fm,{createId:e.createId??f1,...e.icons?{icons:e.icons}:{},...e.renderer?{renderer:e.renderer}:{},...e.defaultPng?{defaultPng:e.defaultPng}:{},...e.artifactUrl?{artifactUrl:e.artifactUrl}:{}})}function fy(e){return null===e||"object"!=typeof e||Array.isArray(e)?void 0:Object.fromEntries(Object.entries(e))}function fw(e){return{...e,type:"timeline"}}function fx(e){return{...e,type:"chart"}}function fb(e){return{...e,type:"gantt"}}n.Py(fm,{createId:f1});let fk={gantt_too_large:"gantt_too_large",duplicate_task_id:"duplicate_node_id",invalid_gantt_date:"invalid_gantt_date",invalid_gantt_span:"invalid_gantt_span",invalid_gantt_phase:"invalid_gantt_phase",invalid_gantt_progress:"invalid_gantt_progress",missing_dependency:"missing_edge_source",self_dependency:"self_loop",gantt_dependency_cycle:"gantt_dependency_cycle"};function fM(e){return{id:e.id,title:e.title,type:"sequence",participants:e.participants,messages:e.messages,style:e.style}}let fC={sequence_too_large:"sequence_too_large",duplicate_participant_id:"duplicate_node_id",lifeline_id_collision:"duplicate_node_id",duplicate_message_id:"duplicate_edge_id",missing_message_source:"missing_edge_source",missing_message_target:"missing_edge_target"},fz={missing_message_source:"Use the id of a participant declared in spec.participants.",missing_message_target:"Use the id of a participant declared in spec.participants."};function f_(e){return{...e,type:"state-machine"}}let fL={state_machine_too_large:"state_machine_too_large",invalid_state_id:"invalid_state",duplicate_state_id:"duplicate_node_id",duplicate_transition_id:"duplicate_edge_id",missing_state_label:"invalid_state",unknown_initial_state:"unknown_initial_state",unknown_parent_state:"invalid_composite",nested_composite:"invalid_composite",missing_transition_source:"missing_edge_source",missing_transition_target:"missing_edge_target",final_has_outgoing:"final_has_outgoing",composite_member_transition:"invalid_composite",missing_composite_initial:"invalid_composite",underbranched_choice:"underbranched_choice",unguarded_choice_branch:"unlabeled_decision_branch",unreachable_state:"unreachable_node"};function fB(e){return{...e,type:"er"}}let fS={er_too_large:"er_too_large",invalid_entity_id:"invalid_entity",duplicate_entity_id:"duplicate_node_id",duplicate_entity_name:"invalid_entity",duplicate_field_name:"invalid_field",er_text_too_long:"label_too_long",nullable_primary_key:"invalid_field",duplicate_relationship_id:"duplicate_edge_id",missing_relationship_entity:"missing_edge_target",missing_relationship_field:"unknown_relationship_field",self_referencing_field:"invalid_relationship"};function fA(e){return{...e,type:"class"}}let fP={class_too_large:"class_too_large",invalid_class_id:"invalid_class",duplicate_class_id:"duplicate_node_id",duplicate_class_name:"invalid_class",duplicate_member:"invalid_member",class_text_too_long:"label_too_long",duplicate_relationship_id:"duplicate_edge_id",missing_relationship_class:"missing_edge_target",inheritance_cycle:"invalid_generalization",invalid_inheritance:"invalid_generalization",invalid_realization:"invalid_generalization",invalid_multiplicity:"invalid_relationship",misplaced_end_label:"invalid_relationship"};function fV(e){return{...e,type:"org-chart"}}let fH={org_chart_too_large:"org_chart_too_large",invalid_person_id:"invalid_person",duplicate_person_id:"duplicate_node_id",org_text_too_long:"label_too_long",unknown_manager:"missing_edge_source",self_manager:"invalid_reporting_line",reporting_cycle:"invalid_reporting_line",multiple_roots:"invalid_reporting_line",invalid_assistant:"invalid_person",duplicate_dotted_line_id:"duplicate_edge_id",invalid_dotted_line:"invalid_reporting_line"};class fq extends s.rNF()("CodeModeArtifactRenderFailed",{cause:s.kld(),message:s.QfV}){}class fF extends s.rNF()("CodeModeArtifactRendererNotConfigured",{message:s.QfV}){}let fI=s._kM({issues:s.O31(s.O3D(s$)).pipe(s.fXn)});class fE extends s.rNF()("ArtifactExportFailure",{status:s.uSQ("export_failed"),issues:fI.fields.issues}){}class fO extends s.rNF()("ArtifactStorageFailure",{status:s.uSQ("storage_failed"),cause:s.kld(),issues:fI.fields.issues}){}function fU(e,t,a){class i extends s.rNF()(e,{message:s.QfV,status:t,context:a}){constructor(e){super({...e,message:e.context.issues[0]?.message??e.status},{disableChecks:!0})}}return i}let fX=fU("BuildFlowchartFailure",rw.fields.status,rw.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fT=fU("BuildMindmapFailure",rb.fields.status,rb.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),f$=fU("BuildSequenceDiagramFailure",rM.fields.status,rM.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fY=fU("BuildStateMachineFailure",rS.fields.status,rS.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fG=fU("BuildErDiagramFailure",rH.fields.status,rH.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fR=fU("BuildClassDiagramFailure",rF.fields.status,rF.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fD=fU("BuildOrgChartFailure",rE.fields.status,rE.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fZ=fU("BuildTimelineFailure",rz.fields.status,rz.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fj=fU("BuildChartFailure",rL.fields.status,rL.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fN=fU("BuildGanttFailure",rP.fields.status,rP.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fW=fU("CreateCanvasFailure",rY.fields.status,rY.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fJ=fU("GetArtifactFailure",rU.fields.status,rU.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fK=fU("SearchIconsFailure",rJ.fields.status,rJ.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields}))),fQ=fU("ApplyDiagramPatchFailure",rT.fields.status,rT.mapFields(({ok:e,status:t,...a})=>({...a,...fI.fields})));function f1(e){return`${e}_${globalThis.crypto.randomUUID()}`}function f0(e){return{code:e.code,severity:e.severity??"error",stage:e.stage,...e.ref?{ref:e.ref}:{},message:e.message,hint:e.hint}}function f2(e){return 0===e.length?"input":e.map(e=>"number"==typeof e?`[${e}]`:String(e)).join(".")}function f3(e){let t=f2(e.path);return f5(t)?"unsupported_patch_operation":"InvalidType"===e.issueTag||"MissingKey"===e.issueTag&&"invalid_type"===e.missingKeyCode?"invalid_type":"LiteralUnion"===e.astKind&&"AnyOf"===e.issueTag?"invalid_enum":t.toLowerCase().includes("color")?"invalid_color":"input"===t?"invalid_type":"missing_field"}function f5(e){return/^operations\.\[\d+\]\.op$/.test(e)}function f4(e){return f5(e)?`Use one of: ${sR.join(", ")}. For label edits, use replaceText with selector plus text.`:"source"===e?"Pass source: { artifactId } from an accepted build or patch, or source: { scene } for inline Sketchi scene patching.":`Fix ${e} so it matches the Code Mode API contract.`}let f6=/^spec\.nodes\.\[\d+\]\.kind$/;function f7(e){return f6.test(e)?'Set kind to "start" (the single entry), "process" (a step), "decision" (a node whose outgoing edges carry branch labels) or "end" (an outcome).':f4(e)}function f8(e,t=f4){let a=e.issues.slice(0,20).map(e=>{let a=f2(e.path);return f0({code:f3(e),stage:"input",ref:{kind:"request",path:a},message:e.message,hint:t(a)})});return e.issues.length>20&&a.push(f0({code:"invalid_type",stage:"input",ref:{kind:"request",path:"input"},message:`${e.issues.length-20} additional input issues were omitted.`,hint:"Fix the summarized request shape before retrying."})),a}function f9(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)}function me(e){if(void 0===e)return;let t=se(e);return t.length>0?t:void 0}function mt(e){return e.checks.map(e=>{var t;return f0({code:"generic_label"===(t=e.code)||"label_too_long"===t||"disconnected_graph"===t?t:"quality_below_threshold",severity:e.severity,stage:"quality",message:e.message,hint:"error"===e.severity?"Repair the structural issue and call buildFlowchart again.":"Improve the labels or scope before styling the artifact."})})}function ma(e){return e?.artifactFormats??fc}function mi(e){return e?.inlineArtifacts??fp}let ms=o.fn("codeMode.artifacts.exportFormats")(function*(e){let t=[];for(let i of e.formats){var a;let s;if("png"===i&&e.defaultPng){let t=e.defaultPng.deadlineMillis-(yield*r.Ru);if(t<=0){e.defaultPng.onUnavailable("Default PNG delivery budget exhausted.");continue}let a=yield*ml(e,i).pipe(o.wRz(t),o.Ket);if(uY.N6(a)){e.defaultPng.onUnavailable("TimeoutError"===a.failure._tag?"Default PNG rendering exceeded its delivery budget.":a.failure.message);continue}s=a.success}else s=yield*ml(e,i);t.push({format:i,mimeType:r0[i],data:s,sizeBytes:(a=s)instanceof ArrayBuffer||a instanceof Uint8Array?a.byteLength:r5(a)})}return t});function ml(e,t){return"scene"===t?o.PyW(e.scene):"excalidraw"===t?o.PyW(function(e,t={}){return{type:"excalidraw",version:2,source:t.source??"https://sketchi.app",elements:e.elements,appState:e.appState,files:e.files??{}}}(e.excalidraw)):e.renderer?e.renderer.renderPng({scene:e.scene,excalidraw:e.excalidraw}).pipe(o.xm_(e=>fq.make({cause:e,message:e.message}))):o.fJG(fF.make({message:"PNG artifact rendering is not configured for this runtime."}))}function mo(e){return e.map(e=>f0({code:"overlapping-arrow-segment"===e.code?"arrow_overlap":"text-overflow"===e.code?"text_overflow":e.code.includes("binding")||e.code.includes("bound")||e.code.includes("endpoint")?"arrow_binding_invalid":"export_invalid_scene",stage:"export",ref:e.elementId?{kind:"artifact",id:e.elementId}:{kind:"artifact"},message:e.message,hint:"Inspect the rendered scene and retry with a simpler layout or patch."}))}function mr(e){return e.slice(0,20).map(e=>f0({code:function(e){switch(e.code){case"duplicate_element_id":return"duplicate_element_id";case"duplicate_layer_id":return"duplicate_layer_id";case"empty_canvas":case"invalid_geometry":case"label_overflow":return"invalid_canvas_geometry";case"invalid_binding":return"invalid_canvas_binding";case"invalid_composition":return"invalid_canvas_composition";case"invalid_icon":return"invalid_canvas_icon";case"invalid_polygon":return"invalid_polygon";case"limit_exceeded":return"canvas_limit_exceeded";case"missing_z_order_element":case"duplicate_z_order_element":case"unknown_z_order_element":return"invalid_z_order";case"unknown_layout_target":return"unknown_layout_target"}}(e),stage:"canvas",ref:e.elementId?{kind:"element",id:e.elementId,path:e.path}:{kind:"diagram",path:e.path},message:e.message,hint:"Repair the referenced CanvasSpec field and call createCanvas again."}))}function mn(e){return mo(e.filter(e=>"overlapping-arrow-segment"!==e.code&&"arrow-segment-through-node"!==e.code))}function md(e){let t=[];for(let d of e.elements){if("arrow"===d.type){let e=d.points[0],a=d.points[1],i=d.points.slice(2);if(!e||!a)return null;let s=[e,a,...i];t.push({...d,type:"arrow",id:d.id,edgeId:d.edgeId,sourceNodeId:d.sourceNodeId,targetNodeId:d.targetNodeId,...d.strokeColor?{strokeColor:d.strokeColor}:{},...d.strokeStyle?{strokeStyle:d.strokeStyle}:{},...d.textColor?{textColor:d.textColor}:{},points:s,...d.label?{label:d.label}:{}});continue}if("node"===d.type){var a,i,s,l,o,r,n;let c=d.points;if("polygon"===d.shape&&(!c||!c[0]||!c[1]||!c[2]))return null;t.push({type:"node",id:d.id,nodeId:d.nodeId,...d.kind?{kind:d.kind}:{},...d.icon?{icon:{slug:d.icon.slug,size:d.icon.size}}:{},shape:d.shape,...d.fillColor?{fillColor:d.fillColor}:{},...d.strokeColor?{strokeColor:d.strokeColor}:{},x:d.x,y:d.y,width:d.width,height:d.height,label:d.label,...d.frameId?{frameId:d.frameId}:{},...d.groupIds?{groupIds:[...d.groupIds]}:{},...d.layerId?{layerId:d.layerId}:{},...void 0!==d.locked?{locked:d.locked}:{},...void 0!==d.opacity?{opacity:d.opacity}:{},...void 0!==d.zIndex?{zIndex:d.zIndex}:{},...d.fillStyle?{fillStyle:d.fillStyle}:{},...void 0!==d.roughness?{roughness:d.roughness}:{},...d.strokeStyle?{strokeStyle:d.strokeStyle}:{},...void 0!==d.strokeWidth?{strokeWidth:d.strokeWidth}:{},..."sequence-lifeline"===d.rendererRole&&h3(e,d)||"sequence-activation"===d.rendererRole&&function(e,t){let a=`${eE}:activation:`,i=t.nodeId.indexOf(a);if(i<=0||i+a.length===t.nodeId.length||t.id!==`node:${t.nodeId}`||"rectangle"!==t.shape||12!==t.width)return!1;let s=t.nodeId.slice(0,i+eE.length),l=e.elements.find(e=>"node"===e.type&&e.id===`node:${s}`&&e.nodeId===s);if(!l||!h3(e,l))return!1;let o=l.x+l.width/2,r=(t.x-(o-6))/6,n=e.elements.filter(e=>"node"===e.type&&e.nodeId.startsWith(`${s}:activation:`)).length;return r>=-.01&&.01>=Math.abs(r-Math.round(r))&&Math.round(r)<n&&t.y>=l.y-.01&&t.y+t.height<=l.y+l.height+.01}(e,d)||"timeline-marker"===d.rendererRole&&(a=d).nodeId.startsWith("event:")&&a.id===`node:${a.nodeId}`&&a.height<=18&&void 0===a.icon||"chart-mark"===d.rendererRole&&(i=d).nodeId.startsWith("chart:")&&i.id===`node:${i.nodeId}`&&void 0===i.icon||"gantt-mark"===d.rendererRole&&((s=d).nodeId.startsWith("gantt:task:")||s.nodeId.startsWith("gantt:progress:"))&&s.id===`node:${s.nodeId}`&&void 0===s.icon||"state-marker"===d.rendererRole&&void 0!==(l=d).kind&&hJ[l.kind]===l.shape&&void 0===l.icon||"er-table"===d.rendererRole&&"rectangle"===(o=d).shape&&void 0===o.icon&&o.id===`node:${o.nodeId}`||"er-optional"===d.rendererRole&&("circle"===(r=d).shape||"ellipse"===r.shape)&&void 0===r.icon&&r.nodeId.includes(":optional:")&&24>=Math.max(r.width,r.height)||"class-box"===d.rendererRole&&"rectangle"===(n=d).shape&&void 0===n.icon&&n.id===`node:${n.nodeId}`||("swimlane"===d.rendererRole||"swimlane-header"===d.rendererRole||"zone"===d.rendererRole)&&"rectangle"===d.shape&&!d.icon?{rendererRole:d.rendererRole}:{},...d.textColor?{textColor:d.textColor}:{},..."polygon"===d.shape&&c?.[0]&&c[1]&&c[2]?{points:[c[0],c[1],c[2],...c.slice(3)]}:{}});continue}if("line"===d.type){let e=d.points[0],a=d.points[1];if(!e||!a)return null;t.push({...d,points:[e,a,...d.points.slice(2)]});continue}t.push(structuredClone(d))}return{kind:e.kind,version:e.version,diagramId:e.diagramId,title:e.title,width:e.width,height:e.height,accentColor:e.accentColor,backgroundColor:e.backgroundColor,elements:t,layers:structuredClone(e.layers),layouts:structuredClone(e.layouts),zOrder:[...e.zOrder]}}function mc(e){let{icons:t,...a}=e;return a}function mp(e){return structuredClone(e)}function mh(e){return e.elements.flatMap(e=>"arrow"===e.type?[`arrow:${e.id}:${e.sourceNodeId}->${e.targetNodeId}`]:"line"===e.type?[`line:${e.id}:${e.startBinding?.elementId??""}->${e.endBinding?.elementId??""}`]:[]).sort()}function mg(e){return e.elements.filter(e=>"node"===e.type)}function mu(e){return e.elements.filter(e=>"text"===e.type)}function mf(e){return e.elements.filter(e=>"arrow"===e.type)}function mm(e,t){if(!e||0===e.length||!t)return!1;let a=t.trim().toLowerCase();return e.some(e=>e.trim().toLowerCase()===a)}function mv(e,t){let a=t?.scope??"all",i=!!(t&&((t.ids?.length??0)>0||(t.nodeIds?.length??0)>0||(t.edgeIds?.length??0)>0||(t.kinds?.length??0)>0||(t.labels?.length??0)>0)),s=new Set(t?.ids??[]),l=new Set(t?.nodeIds??[]),o=new Set(t?.edgeIds??[]),r=new Set(t?.kinds??[]),n=mg(e).filter(e=>"edges"!==a&&(!t||!i||s.has(e.id)||l.has(e.nodeId)||!!e.kind&&[...r].some(t=>t===e.kind)||mm(t.labels,e.label))),d=mf(e).filter(e=>"nodes"!==a&&(!t||!i||s.has(e.id)||o.has(e.edgeId)||mm(t.labels,e.label))),c=new Set(n.map(e=>e.id)),p=new Set(d.map(e=>e.id));return{arrows:d,nodes:n,texts:mu(e).filter(e=>t&&i?s.has(e.id)||!!e.containerId&&c.has(e.containerId)||!!e.containerId&&p.has(e.containerId)||mm(t.labels,e.text):"nodes"===a?!!e.containerId&&c.has(e.containerId):"edges"!==a||!!e.containerId&&p.has(e.containerId))}}function my(e){return f0({code:"unknown_patch_target",stage:"flowchart",ref:{kind:"request",path:"operations.selector"},message:`Patch operation "${e.op}" did not match any scene element.`,hint:"Use nodeIds, edgeIds, ids, kinds, labels, or scope values that exist in the accepted artifact."})}function mw(e,t){return mu(e).find(e=>e.containerId===t||e.id===`${t}:label`)}function mx(e,t){let a=mw(e,t.id),i=function(e){let t=e[0],a=e[e.length-1];if(t&&a)return{x:(t.x+a.x)/2,y:(t.y+a.y)/2-10}}(t.points);if(a&&!a.containerId){let e=t.points[0];if(!e)return;let i=t.points.find(t=>t.x!==e.x||t.y!==e.y);if(!i)return;let s=aT(a.text,a.maxWidth??160,a.fontSize),l=aU(s,a.fontSize,a.maxWidth??160),o=Math.ceil(s.split("\n").length*a.fontSize*1.35);a.x=(e.x+i.x)/2+(e.x===i.x?l/2+8:0),a.y=(e.y+i.y)/2-(e.y===i.y?o/2+5:0);return}a&&i&&(a.x=i.x,a.y=i.y)}function mb(e,t){let a=new Set(t);for(let t of mf(e))(a.has(t.sourceNodeId)||a.has(t.targetNodeId))&&mC(e,t)}function mk(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function mM(e,t,a){let i=mk(e),s=mk(t),l=s.x-i.x,o=s.y-i.y;return 0===l&&0===o?{x:i.x,y:"source"===a?e.y+e.height:e.y}:Math.abs(l)>Math.abs(o)?l>=0?{x:e.x+e.width,y:i.y}:{x:e.x,y:i.y}:o>=0?{x:i.x,y:e.y+e.height}:{x:i.x,y:e.y}}function mC(e,t){let a=new Map(mg(e).map(e=>[e.nodeId,e])),i=a.get(t.sourceNodeId),s=a.get(t.targetNodeId);if(!i||!s)return[f0({code:"patch_output_invalid",stage:"render",ref:{kind:"edge",id:t.edgeId},message:`Arrow "${t.id}" references a node that is not in the scene.`,hint:"Rebuild the diagram with buildFlowchart or buildMindmap before applying visual patches."})];if(t.curved)return t.points=ig(i,s).map(e=>({...e})),mx(e,t),[];let l=mM(i,s,"source"),o=mM(s,i,"target");if(Math.abs(o.y-l.y)>=Math.abs(o.x-l.x)){let e=(l.y+o.y)/2;t.points=[l,{x:l.x,y:e},{x:o.x,y:e},o]}else{let e=(l.x+o.x)/2;t.points=[l,{x:e,y:l.y},{x:e,y:o.y},o]}return mx(e,t),[]}function mz(e){let t=e.width,a=e.height;for(let i of e.elements)if("arrow"===i.type||"line"===i.type)for(let e of i.points)t=Math.max(t,e.x),a=Math.max(a,e.y);else"text"===i.type?(t=Math.max(t,i.x+(i.maxWidth??0)),a=Math.max(a,i.y+i.fontSize)):(t=Math.max(t,i.x+i.width),a=Math.max(a,i.y+i.height));e.width=t+48,e.height=a+48}function m_(e,t,a){if(!t||!a){if(t){let a=e.indexOf(t);return a>=0?a:void 0}if(a){let t=e.indexOf(a);return t>=0?t+1:void 0}return e.length}}function mL(e,t){return[f0({code:"patch_output_invalid",stage:"canvas",ref:{kind:"request",path:"operations"},message:t,hint:`Repair the ${e.op} operation and preserve unique, stable element ids.`})]}let mB=o.fn("codeMode.patch.resolveSource")(function*(e){if("scene"in e.source)return{scene:mp(e.source.scene)};let t=yield*r1,a=yield*t.readManifest(e.source.artifactId).pipe(o.xm_(e=>new fQ({status:"storage_failed",context:{issues:[r6(e.message,"storage_read_failed")]}})));if(!a||a.artifactId!==e.source.artifactId||!a.formats.some(e=>"scene"===e.format))return yield*new fQ({status:"source_unavailable",context:{issues:[f0({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Artifact "${e.source.artifactId}" does not have a valid source manifest.`,hint:"Rebuild with the appropriate build operation and patch the accepted artifact id."})]}});let i=yield*t.read(e.source.artifactId,"scene").pipe(o.xm_(e=>new fQ({status:"storage_failed",context:{issues:[r6(e.message,"storage_read_failed")]}})));if(!i)return yield*new fQ({status:"source_unavailable",context:{issues:[f0({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Scene artifact "${e.source.artifactId}" is not available.`,hint:"Call buildFlowchart or buildMindmap first, then patch the accepted artifact id."})]}});let l=s.q$Z(oI,{errors:"all",reportInput:!0})(i.data);return uY.oJ(l)?{scene:mp(l.success),sourceArtifactId:e.source.artifactId}:yield*new fQ({status:"source_unavailable",context:{issues:[f0({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Scene artifact "${e.source.artifactId}" could not be decoded.`,hint:"Rebuild with the appropriate build operation and patch the new artifact."})]}})});function mS(e){return e?{requestId:e}:{}}function mA(e){let t=mc(e);return{diagramId:e.diagramId,formats:[{format:"scene",mimeType:r0.scene,inline:t,sizeBytes:r5(t)}]}}function mP(e){return{ok:!1,status:e.status,...e.context}}function mV(e,t){return r6(e.message,t)}let mH=o.fn("codeMode.artifacts.exportAndStore")(function*(e){let t=yield*fm,a=yield*r1,{excalidraw:i,validation:s}=yield*o.OH5(()=>{let t=function(e){let t,a,i,s,l,o,r,n=(t=new Map(e.layers.map(e=>[e.id,e])),i=new Set((a=e.elements.filter(e=>{let a=e.layerId?t.get(e.layerId):void 0;return a?.visible!==!1})).flatMap(e=>"node"===e.type||"frame"===e.type&&void 0!==e.nodeId?[e.nodeId]:[])),l=new Set((s=a.filter(e=>"arrow"!==e.type||i.has(e.sourceNodeId)&&i.has(e.targetNodeId))).flatMap(e=>"text"===e.type?[]:[e.id])),r=new Set((o=s.filter(e=>"text"!==e.type||!e.containerId||l.has(e.containerId))).map(e=>e.id)),o.map(e=>{let a=e.layerId?t.get(e.layerId):void 0,{frameId:i,...s}=e;return{...e.frameId&&!r.has(e.frameId)?s:e,...a?.locked===!0?{locked:!0}:{}}})),{textElements:d,generatedLabelSourceIds:c}=function(e){let t=e.filter(n_),a=e.filter(nL),i=new Set(e.map(e=>e.id)),s=new Map,l=new Set(a.flatMap(e=>e.containerId?[e.containerId]:[]));for(let e of t){if(l.has(e.id)||e.rendererRole)continue;let t=`__sketchi_node_label__${e.id}`,o=t,r=2;for(;i.has(o);)o=`${t}:${r}`,r+=1;i.add(o),s.set(o,e.id),a.push({type:"text",id:o,containerId:e.id,...e.frameId?{frameId:e.frameId}:{},...e.groupIds?{groupIds:[...e.groupIds]}:{},...e.layerId?{layerId:e.layerId}:{},...void 0!==e.locked?{locked:e.locked}:{},...void 0!==e.opacity?{opacity:e.opacity}:{},...e.textColor?{textColor:e.textColor}:{},x:e.x+e.width/2,y:e.y+e.height/2,text:e.label,fontSize:16,maxWidth:Math.max(1,e.width-24)})}return{textElements:a,generatedLabelSourceIds:s}}(n),p={},h=new Map(c),g=function(e,t,a,i,s){var l,o,r,n;let d=t.filter(n_),c=new Set([...t.map(e=>e.id),...a.map(e=>e.id)]),p=new Map,h=new Map;for(let e of a)e.containerId&&h.set(e.containerId,e);let g=t.filter(nB),u=t.filter(nS),f=function(e,t,a,i){let s=new Map,l=new Map([...e.map(e=>[e.nodeId,e.id]),...t.flatMap(e=>void 0===e.nodeId?[]:[[e.nodeId,e.id]])]);for(let e of a)for(let t of[e.sourceNodeId,e.targetNodeId]){let a=l.get(t);a&&s.set(a,[...s.get(a)??[],e.id])}for(let e of i)for(let t of[e.startBinding,e.endBinding])t&&s.set(t.elementId,[...s.get(t.elementId)??[],e.id]);return s}(d,t.filter(nA),g,u),m=new Map,v=[];for(let t of d){let a=h.get(t.id),n=function(e){let t=e.shape.height,a="circle"===e.shape.shape?"ellipse":e.shape.shape,i=[...e.text&&"polygon"!==e.shape.shape?[{id:e.text.id,type:"text"}]:[],...e.arrowIds.map(e=>({id:e,type:"arrow"}))];if("polygon"===e.shape.shape){let t=e.shape.points??[{x:e.shape.width/2,y:0},{x:e.shape.width,y:e.shape.height},{x:0,y:e.shape.height}],[a]=t;return{...nb(e.shape.id,e.shape),type:"line",x:e.shape.x,y:e.shape.y,width:e.shape.width,height:e.shape.height,backgroundColor:e.shape.fillColor??"transparent",boundElements:e.arrowIds.map(e=>({id:e,type:"arrow"})),customData:{sketchiShape:"polygon",...e.shape.rendererRole?{sketchiRendererRole:e.shape.rendererRole}:{}},endArrowhead:null,endBinding:null,lastCommittedPoint:null,points:[...t,a].map(e=>[e.x,e.y]),roundness:null,startArrowhead:null,startBinding:null,strokeColor:e.shape.strokeColor??e.scene.accentColor}}return aR(e.shape.shape)?{...nb(e.shape.id,e.shape),groupIds:[nM(e.shape),...e.shape.groupIds??[]],type:"rectangle",x:e.shape.x,y:e.shape.y,width:e.shape.width,height:t,backgroundColor:"transparent",boundElements:i.length>0?i:null,customData:{sketchiShape:e.shape.shape},roundness:null,strokeColor:"transparent"}:{...nb(e.shape.id,e.shape),type:a,x:e.shape.x,y:e.shape.y,width:e.shape.width,height:t,backgroundColor:e.shape.fillColor??"transparent",boundElements:i.length>0?i:null,roundness:"rectangle"===a&&"chart-mark"!==e.shape.rendererRole&&"gantt-mark"!==e.shape.rendererRole&&"er-table"!==e.shape.rendererRole&&"class-box"!==e.shape.rendererRole&&"swimlane"!==e.shape.rendererRole&&"swimlane-header"!==e.shape.rendererRole&&"zone"!==e.shape.rendererRole?{type:3}:null,strokeColor:e.shape.strokeColor??e.scene.accentColor,...e.shape.rendererRole?{customData:{sketchiRendererRole:e.shape.rendererRole}}:{}}}({scene:e,shape:t,arrowIds:f.get(t.id)??[],...a?{text:a}:{}});if(m.set(t.nodeId,n),v.push(n),aR(t.shape)){let a=function(e){let{shape:t}=e;if(!aR(t.shape))return[];let a={...t,shape:t.shape};return[...t.fillColor?[{fill:t.fillColor,points:aQ(a),smooth:!1}]:[],...(function(e){let{x:t,y:a,width:i,height:s}=e,l=aD[e.shape];if("document"===e.shape)return[{points:[{x:t,y:a+s},{x:t,y:a},{x:t+i,y:a},{x:t+i,y:a+s}],smooth:!1},{points:aW(e,l),smooth:!0}];let o=aN(e,l,"pipe"!==e.shape,12,"bucket"===e.shape?aZ(i):0);return[{points:o.back,smooth:!0},{points:o.front,smooth:!0},...o.sides.map(e=>({points:e,smooth:!1})),{points:o.end,smooth:!0}]})(a).map(e=>({...e,fill:void 0}))].map((a,i)=>{let[s]=a.points,l=a.points.map(e=>e.x),o=a.points.map(e=>e.y);return{...nb(e.id(i),t),groupIds:[nM(t),...t.groupIds??[]],type:"line",x:s.x,y:s.y,width:Math.max(...l)-Math.min(...l),height:Math.max(...o)-Math.min(...o),backgroundColor:a.fill??"transparent",boundElements:null,customData:{sketchiShapeStroke:t.shape},endArrowhead:null,endBinding:null,lastCommittedPoint:null,points:a.points.map(e=>[e.x-s.x,e.y-s.y]),roughness:t.roughness??0,roundness:a.smooth?{type:2}:null,startArrowhead:null,startBinding:null,strokeColor:a.fill?"transparent":t.strokeColor??e.scene.accentColor}})}({id:e=>(function(e,t,a){let i=`${e.id}:stroke-${t}`,s=i,l=2;for(;a.has(s);)s=`${i}-${l}`,l+=1;return a.add(s),s})(t,e,c),scene:e,shape:t});for(let e of a)s.set(e.id,t.id);v.push(...a),p.set(t.id,t)}let d=t.icon&&e.icons&&Object.hasOwn(e.icons,t.icon.slug)?e.icons[t.icon.slug]:void 0;if(!t.icon||"string"!=typeof d?.svg)continue;let g=(l=t.icon.slug,o=d.svg,`sketchi-icon-${l}-${iM(o,"hex","utf16")}`),u=function(e,t){let a=`${e.id.replace(/[^\w-]/gu,"-")}-icon`,i=a,s=2;for(;t.has(i);)i=`${a}-${s}`,s+=1;return t.add(i),i}(t,c),y=function(e){let t=function(e){if(!e.icon)return;let t=a7(e);return{x:e.x+(e.width-e.icon.size)/2,y:e.y+t.y+aY.gap,width:e.icon.size,height:e.icon.size}}(e.node);return t&&e.node.icon?{...nb(e.id,e.node),groupIds:[nM(e.node),...e.node.groupIds??[]],type:"image",x:t.x,y:t.y,width:t.width,height:t.height,backgroundColor:"transparent",boundElements:null,crop:null,customData:{sketchiNodeIcon:e.node.icon.slug},fileId:e.fileId,roundness:null,scale:[1,1],status:"saved",strokeColor:"transparent"}:null}({fileId:g,id:u,node:t});y&&(i[g]??=(r=d.svg,{id:g,mimeType:"image/svg+xml",dataURL:`data:image/svg+xml;base64,${function(e){let t=new TextEncoder().encode(e),a="";for(let e=0;e<t.length;e+=32768)a+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(a)}(r)}`,created:1,lastRetrieved:1}),n.groupIds=[nM(t),...t.groupIds??[]],s.set(u,t.id),p.set(t.id,t),v.push(y))}for(let a of t.filter(nA)){let t={...nb((n={element:a,scene:e}).element.id,n.element),type:"frame",x:n.element.x,y:n.element.y,width:n.element.width,height:n.element.height,backgroundColor:n.element.fillColor??"transparent",boundElements:null,name:n.element.name??null,roundness:null,strokeColor:n.element.strokeColor??n.scene.accentColor},i=f.get(a.id)??[];t.boundElements=i.length?i.map(e=>({id:e,type:"arrow"})):null,void 0!==a.nodeId&&m.set(a.nodeId,t),v.push(t)}for(let e of a){let t=d.find(t=>t.id===e.containerId&&"polygon"!==t.shape),a=g.some(t=>t.id===e.containerId),i=g.find(t=>e.id===`${t.id}:label`),s=e.containerId&&(t||a),l=e.textColor??i?.textColor,o=nk({...t?{container:t}:{},element:e,id:e.id,...s?{containerId:e.containerId}:{},fontSize:e.fontSize,maxWidth:e.maxWidth??160,...l?{textColor:l}:{},text:e.text,wrap:a||!!i,x:e.x,y:e.y}),r=t?p.get(t.id):void 0;r&&(o.groupIds=[nM(r),...e.groupIds??[]]),v.push(o)}for(let t of g){let i=h.get(t.id)??a.find(e=>e.id===`${t.id}:label`);v.push(function(e){let t=e.arrow.points[0],a=nC(e.arrow),i=!0!==e.arrow.curved&&(e.arrow.points.length>2||[e.sourceShape,e.targetShape].some(e=>e?.type==="frame"||function(e){let t=e?.customData;if(null===t||"object"!=typeof t)return!1;let a=t.sketchiRendererRole;return"er-table"===a||"class-box"===a}(e)));return{...nb(e.arrow.id,e.arrow),type:"arrow",x:t.x,y:t.y,width:a.x-t.x,height:a.y-t.y,backgroundColor:"transparent",boundElements:e.text?e.text.containerId===e.arrow.id?[{id:e.text.id,type:"text"}]:null:e.arrow.label?[{id:`${e.arrow.id}:label`,type:"text"}]:null,elbowed:i,endArrowhead:void 0===e.arrow.endArrowhead?"arrow":e.arrow.endArrowhead,endBinding:nx(e.targetShape,a),...i?{fixedSegments:[],startIsSpecial:null,endIsSpecial:null}:{},points:e.arrow.points.map(e=>[e.x-t.x,e.y-t.y]),roundness:i?null:{type:2},startArrowhead:e.arrow.startArrowhead??null,startBinding:nx(e.sourceShape,t),strokeColor:e.arrow.strokeColor??e.scene.accentColor,strokeStyle:e.arrow.strokeStyle??"solid"}}({arrow:t,scene:e,sourceShape:m.get(t.sourceNodeId),targetShape:m.get(t.targetNodeId),...i?{text:i}:{}}));let s=t.label&&!i?function(e){if(!e.arrow.label)return null;let t=e.arrow.points[0],a=nC(e.arrow);return nk({id:`${e.arrow.id}:label`,containerId:e.arrow.id,fontSize:13,...void 0===e.arrow.locked?{}:{locked:e.arrow.locked},maxWidth:160,...e.arrow.textColor?{textColor:e.arrow.textColor}:{},text:e.arrow.label,wrap:!0,x:(t.x+a.x)/2,y:(t.y+a.y)/2-10})}({arrow:t}):null;s&&v.push(s)}let y=new Map(v.map(e=>[e.id,e]));for(let t of u)if(v.push(function(e){let[t,...a]=e.element.points,i=a[a.length-1]??t,s=void 0!==e.element.startArrowhead||void 0!==e.element.endArrowhead||void 0!==e.element.startBinding||void 0!==e.element.endBinding,l=s&&e.element.points.length>2;return{...nb(e.element.id,e.element),type:s?"arrow":"line",x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y,backgroundColor:e.element.fillColor??"transparent",boundElements:null,...s?{elbowed:l}:{},endArrowhead:e.element.endArrowhead??null,endBinding:nz(e.element.endBinding,e.elementsById,i),...l?{fixedSegments:[],startIsSpecial:null,endIsSpecial:null}:{},points:e.element.points.map(e=>[e.x-t.x,e.y-t.y]),roundness:e.element.points.length>2&&!l?{type:2}:null,startArrowhead:e.element.startArrowhead??null,startBinding:nz(e.element.startBinding,e.elementsById,t),strokeColor:e.element.strokeColor??e.scene.accentColor}}({element:t,elementsById:y,scene:e})),t.label){let e=t.points[0],a=t.points[t.points.length-1]??e;v.push(nk({id:`${t.id}:label`,fontSize:13,...void 0===t.locked?{}:{locked:t.locked},maxWidth:160,...t.textColor?{textColor:t.textColor}:{},text:t.label,wrap:!0,x:(e.x+a.x)/2,y:(e.y+a.y)/2-10}))}return v}(e,n,d,p,h),u=new Map(e.zOrder.map((e,t)=>[e,t])),f=e=>{if(u.has(e.id))return e.id;let t=h.get(e.id);return t||(e.id.endsWith(":label")?e.id.slice(0,-6):e.id)};g.sort((e,t)=>(u.get(f(e))??Number.MAX_SAFE_INTEGER)-(u.get(f(t))??Number.MAX_SAFE_INTEGER));let m=null;for(let e of g){let t=function(e,t,a,i){if(void 0!==i){var s=i;if(!nh.has(s)){if(s.length<2||s.length%2!=0||!nd(s))throw Error("intDigits must be an even number of at least 2 characters in strictly ascending character code order: "+s);if(!nc(s))throw Error("intDigits must be single-byte (char code 0-255): "+s);nh.add(s)}}else i=a??r8;if(void 0!==a){var l=a;if(!np.has(l)){if(l.length<2||!nd(l))throw Error("digits must be at least 2 characters in strictly ascending character code order: "+l);if(!nc(l))throw Error("digits must be single-byte (char code 0-255): "+l);np.add(l)}}else a=r7;let o=ne(a),r=ne(i);if(null!=e&&nl(e,a,i,r),null!=t&&nl(t,a,i,r),null!=e&&null!=t&&e>t){let a=e;e=t,t=a}if(null==e){if(null==t)return i[i.length/2]+a[0];let e=ns(t,i,r),s=t.slice(e.length);if(nn(e,a,i))return e+nt("",s,a,o);if(e<t)return e;let l=function(e,t,a,i,s){na(e,i,s);let l=e[0],o=t[t.length-1],r="";for(let i=e.length-1;i>=1;i--){let s=a[e.charCodeAt(i)]-1;if(-1!==s)return l+e.slice(1,i)+t[s]+r;r=o+r}let n=s[l.charCodeAt(0)];if(0===n)return null;let d=i[n-1],c=ni(d,i,s)-ni(l,i,s);return d+(c>0?r+o:c<0?r.slice(1):r)}(e,a,o,i,r);if(null==l)throw Error("cannot decrement any more");return l}if(null==t){let t=ns(e,i,r),s=e.slice(t.length),l=no(t,a,o,i,r);return null==l?t+nt(s,null,a,o):l}let n=ns(e,i,r),d=e.slice(n.length),c=ns(t,i,r),p=t.slice(c.length);if(n===c)return n+nt(d,p,a,o);let h=no(n,a,o,i,r);if(null==h)throw Error("cannot increment any more");return h<t?h:n+nt(d,null,a,o)}(m,null);e.index=t,m=t}return{appState:{viewBackgroundColor:e.backgroundColor,zoom:{value:Math.max(.42,Math.round(100*Math.min(1,860/Math.max(e.width,1),340/Math.max(e.height,1)))/100)}},elements:g,files:p}}(e.scene);return{excalidraw:t,validation:function(e){let t=[],a=new Map(e.elements.map(e=>[e.id,e])),i=new Set(e.elements.filter(nH).map(e=>e.id));for(let s of(0===e.elements.length&&t.push({code:"empty-scene",message:"Excalidraw scene must contain at least one shape."}),e.elements)){if("image"!==s.type||"string"==typeof s.fileId&&e.files&&Object.hasOwn(e.files,s.fileId)||t.push({code:"missing-image-file",elementId:s.id,message:`Image "${s.id}" references a file missing from the scene.`}),"arrow"===s.type){let e=!0===s.elbowed;for(let l of((Array.isArray(s.points)?s.points:[]).length>2&&!e&&!function(e){let t=e.roundness;return!0!==e.elbowed&&null!==t&&"object"==typeof t&&2===t.type}(s)&&t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Arrow "${s.id}" has an orthogonal route but is not marked elbowed.`}),e&&null!==s.fixedSegments&&!Array.isArray(s.fixedSegments)&&t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Elbow arrow "${s.id}" is missing fixedSegments metadata.`}),["startBinding","endBinding"])){if(null===s[l]||void 0===s[l])continue;let o=nP(s,l);if(!(o&&i.has(o))){t.push({code:"missing-arrow-binding",elementId:s.id,message:`Arrow "${s.id}" has invalid ${l}.`});continue}let r=a.get(o);r&&!function(e,t,a){let i=e.boundElements;return!!Array.isArray(i)&&i.some(e=>!!(e&&"object"==typeof e)&&e.id===t&&e.type===a)}(r,s.id,"arrow")&&t.push({code:"missing-bound-arrow",elementId:r.id,message:`Shape "${r.id}" does not include bound arrow "${s.id}".`});let n=function(e,t){let a=nf(e.x)??0,i=nf(e.y)??0,s=Array.isArray(e.points)?e.points.map(nm).filter(e=>!!e):[],l="startBinding"===t?s[0]:s[s.length-1];return l?{x:a+l[0],y:i+l[1]}:null}(s,l);if(r&&n&&!function(e,t){let a=nv(t);if(!a)return!1;let i=t.customData&&"object"==typeof t.customData?t.customData.sketchiShape:void 0;if("string"==typeof i&&aR(i))return aK({...a,shape:i},e);if("diamond"===t.type){let t=a.width/2,i=a.height/2;if(0===t||0===i)return!1;let s=a.x+t,l=a.y+i;return nF(Math.abs(e.x-s)/t+Math.abs(e.y-l)/i,1)}if("ellipse"===t.type){let t=a.width/2,i=a.height/2;if(0===t||0===i)return!1;let s=a.x+t,l=a.y+i;return nF(((e.x-s)/t)**2+((e.y-l)/i)**2,1)}let s=(nF(e.x,a.x)||nF(e.x,a.x+a.width))&&nq(e.y,a.y,a.y+a.height),l=(nF(e.y,a.y)||nF(e.y,a.y+a.height))&&nq(e.x,a.x,a.x+a.width);return s||l}(n,r)&&t.push({code:"arrow-endpoint-off-shape",elementId:s.id,message:`Arrow "${s.id}" ${l} endpoint does not land on "${r.id}".`}),r&&n&&e){let e=function(e,t){let a=e[t];return a&&"object"==typeof a?nm(a.fixedPoint):null}(s,l);e&&function(e,t,a){let i=nv(a);if(!i)return!1;let s=1e-4>Math.abs(e[0]-.5001)?.5:e[0],l=1e-4>Math.abs(e[1]-.5001)?.5:e[1];return nF(i.x+s*i.width,t.x)&&nF(i.y+l*i.height,t.y)}(e,n,r)||t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Elbow arrow "${s.id}" has invalid ${l} fixedPoint metadata.`})}}}if("text"===s.type){let e=s.containerId;if("string"!=typeof e)continue;let i=a.get(e);if(!i){t.push({code:"missing-container",elementId:s.id,message:`Text "${s.id}" references missing container "${e}".`});continue}let l=("number"==typeof s.width?s.width:0)-("number"==typeof s.fontSize?s.fontSize:0),o="number"==typeof s.height?s.height:0,r="number"==typeof i.width?i.width:0,n="number"==typeof i.height?i.height:0;nH(i)&&(l+24>r||o+18>n)&&t.push({code:"text-overflow",elementId:s.id,message:`Text "${s.id}" does not fit inside "${e}".`})}}return t.push(...function(e){let t=e.filter(e=>"arrow"===e.type).flatMap(nV),a=e.filter(nH),i=new Map(e.flatMap(e=>"string"==typeof e.frameId?[[e.id,e.frameId]]:[])),s=[],l=new Set;for(let e of t)for(let t of a){if(function(e){let t=e.customData;if(null===t||"object"!=typeof t)return!1;let a=t.sketchiRendererRole;return a0.some(e=>e===a)}(t)||t.id===e.startBindingId||t.id===e.endBindingId||function(e,t,a){return"frame"===e.type&&[t.arrowId,t.startBindingId,t.endBindingId].some(t=>null!==t&&a.get(t)===e.id)}(t,e,i))continue;let a=nv(t);if(!a||!iw(e,a))continue;let o=`${e.arrowId}:${e.segmentIndex}:${t.id}`;l.has(o)||(l.add(o),s.push({code:"arrow-segment-through-node",elementId:e.arrowId,message:`Arrow "${e.arrowId}" passes through shape "${t.id}".`}))}return s}(e.elements)),t.push(...function(e){let t=e.filter(e=>"arrow"===e.type).flatMap(nV),a=[],i=new Set;for(let e=0;e<t.length;e+=1){let s=t[e];if(s)for(let l=e+1;l<t.length;l+=1){let e=t[l];if(!e||s.arrowId===e.arrowId||function(e,t){if(!ix(e,t))return!1;let a=e.isFirstSegment&&t.isFirstSegment&&null!==e.startBindingId&&e.startBindingId===t.startBindingId;return .01>=Math.abs((a?e.startCoordinate:e.endCoordinate)-(a?t.startCoordinate:t.endCoordinate))&&Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||function(e,t){if(null===e.startBindingId||e.startBindingId!==t.startBindingId||e.segmentIndex!==t.segmentIndex)return!1;for(let a=0;a<=e.segmentIndex;a+=1){let i=e.route[a],s=t.route[a];if(!i||!s||Math.abs(i.x-s.x)>.01||Math.abs(i.y-s.y)>.01)return!1}return Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||function(e,t){let[a,i]=[e.route.at(-1),t.route.at(-1)];if(null===e.endBindingId||e.endBindingId!==t.endBindingId||!a||!i||Math.abs(a.x-i.x)>.01||Math.abs(a.y-i.y)>.01)return!1;let s=e=>e.route.slice(e.segmentIndex).every(t=>"horizontal"===e.orientation?.01>=Math.abs(t.y-e.route[e.segmentIndex].y):.01>=Math.abs(t.x-e.route[e.segmentIndex].x));return s(e)&&s(t)&&Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||!iy(s,e))continue;let o=[s.arrowId,String(s.segmentIndex),e.arrowId,String(e.segmentIndex)].sort().join(":");i.has(o)||(i.add(o),a.push({code:"overlapping-arrow-segment",elementId:s.arrowId,message:`Arrow "${s.arrowId}" overlaps arrow "${e.arrowId}".`}))}}return a}(e.elements)),{ok:0===t.length,issues:t}}(t)}}).pipe(o.fRP("codeMode.artifacts.exportValidate")),l=e.validationIssues(s.issues);if(l.length>0)return yield*new fE({status:"export_failed",issues:l});let r=yield*ms({formats:e.formats,scene:e.scene,excalidraw:i,renderer:t.renderer,defaultPng:t.defaultPng}).pipe(o.xm_(e=>new fE({status:"export_failed",issues:[f0({code:"render_failed",stage:"export",..."CodeModeArtifactRendererNotConfigured"===e._tag?{ref:{kind:"artifact",path:"options.artifactFormats"}}:{},message:e.message,hint:"CodeModeArtifactRendererNotConfigured"===e._tag?"Use the hosted Studio Code Mode runtime with its Cloudflare Browser Run binding, or omit png from artifactFormats.":"Retry the request; if it keeps failing, inspect the configured renderer."})]}))),n=yield*o.OH5(()=>t.createId("artifact"));var d=yield*uT(a.write({artifactId:n,diagramId:e.scene.diagramId,formats:r,inlineFormats:e.inlineFormats,...e.provenance?{provenance:e.provenance}:{}}).pipe(o.fRP("codeMode.artifacts.store")),{artifactId:n,...e.requestId?{requestId:e.requestId}:{}}).pipe(o.xm_(e=>new fO({status:"storage_failed",cause:e,issues:[mV(e,"storage_write_failed")]}))),c=t.artifactUrl;if(!c)return d;let p=d.formats.map(e=>({...e,url:c({artifactId:d.artifactId,format:e.format})}));return{...d,formats:p}}),mq=o.fn("codeMode.buildMindmap.workflow")(function*(e){var t,a;let i,l,r,n,d,c,p,h,g,u=function(e){let t=fy(fy(fy(e)?.spec)?.root);if(!t)return[];let a=[{depth:0,topic:t}],i=1;for(;a.length>0;){let e=a.pop();if(!e)continue;if(e.depth>8)return[f0({code:"mindmap_too_deep",stage:"mindmap",ref:{kind:"request",path:"spec.root.children"},message:"Mindmap depth exceeds the supported maximum of 8.",hint:"Combine overly deep topics into a shallower hierarchy."})];let t=e.topic.children;if(Array.isArray(t)){if((i+=t.length)>100)return[f0({code:"mindmap_too_large",stage:"mindmap",ref:{kind:"request",path:"spec.root"},message:"Mindmap exceeds the supported maximum of 100 topic slots.",hint:"Split this hierarchy into smaller focused mindmaps."})];for(let i=t.length-1;i>=0;i-=1){let s=fy(t[i]);s&&a.push({depth:e.depth+1,topic:s})}}}return[]}(e);if(u.length>0)return yield*new fT({status:"invalid_mindmap",context:{issues:u}});let f=s.q$Z(oc,{errors:"all",reportInput:!0})(e);if(!uY.oJ(f))return yield*new fT({status:"invalid_input",context:{issues:f8(sl(f.failure))}});let m=yield*fm,v=f.success,w=yield*o.OH5(()=>m.createId("build")),x=(t=v.spec,i=(e,t)=>({id:`topic-${t.join("-")}`,label:se(e.label),children:(e.children??[]).map((e,a)=>i(e,[...t,a]))}),l=se(t.title),{id:me(t.id)??(f9(l)||"sketchi-mindmap"),title:l,root:i(t.root,[0]),layout:{direction:t.layout.direction},style:{...y}}),b={buildId:w,...mS(v.requestId),normalizedSpec:x},k=(r=0,n=0,(d=(e,t)=>{r+=1,n=Math.max(n,t),e.children.forEach(e=>d(e,t+1))})(x.root,0),p=[],(c={count:r,depth:n}).count<2&&p.push(f0({code:"disconnected_graph",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:"Mindmap root must contain at least one child topic.",hint:"Add one or more nested topics under spec.root.children."})),c.depth>8&&p.push(f0({code:"mindmap_too_deep",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:`Mindmap depth ${c.depth} exceeds the supported maximum of 8.`,hint:"Combine overly deep topics into a shallower hierarchy."})),c.count>100&&p.push(f0({code:"mindmap_too_large",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:`Mindmap has ${c.count} topics; the supported maximum is 100.`,hint:"Split this hierarchy into smaller focused mindmaps."})),p);if(k.length>0)return yield*new fT({status:"invalid_mindmap",context:{...b,issues:k}});let M=yield*o.SvU({try:()=>{var e;let t,a,i;return e={id:x.id,title:x.title,root:x.root,direction:x.layout.direction,style:y},t=[],a=[],(i=(e,s,l)=>{let o=s.join("-"),r=s.length-1,n={depth:r,siblingIndex:s.at(-1)};t.push({id:`topic-${o}`,label:e.label,kind:0===r?"root":"topic",metadata:n}),l&&a.push({id:`branch-${o}`,source:l,target:`topic-${o}`,metadata:n}),e.children?.forEach((e,t)=>i(e,[...s,t],`topic-${o}`))})(e.root,[0]),eH({id:e.id,title:e.title,type:e_,nodes:t,edges:a,layout:{direction:e.direction??"LR",edgeRouting:"curved"},...e.style?{style:{...e.style}}:{}})},catch:e=>new fT({status:"invalid_mindmap",context:{...b,issues:[f0({code:"disconnected_graph",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:e instanceof Error?e.message:"Mindmap failed core validation.",hint:"Repair the nested topic hierarchy and call buildMindmap again."})]}})}),C=(a=v.options?.minQualityScore??8,{accepted:(g=Math.max(0,10-2*(h=M.nodes.filter(e=>/^(topic|branch|item|mindmap)$/i.test(e.label.trim()))).length))>=a,score:g,threshold:a,summary:{nodeCount:M.nodes.length,edgeCount:M.edges.length},checks:h.map(e=>({code:"generic_label",passed:!1,severity:"warning",message:`Topic "${e.label}" is too generic.`,refs:[{kind:"node",id:e.id}]}))}),z={...b,quality:C};if(!C.accepted)return yield*new fT({status:"quality_failed",context:{...z,issues:mt(C)}});let _=yield*o.SvU({try:()=>{let e,t,a,i,s,l,o,r,n,d,c,p,h,g,u,f,m;return i=Math.round(40-Math.min(...(a=function(e,t){let a=a=>{var i;let s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_,L;return l=function(e){let t=e.length,a=1/0,i=Math.ceil(e.length/2);for(let s=1;s<=e.length;s+=1){let l=Math.abs(cC(e.slice(0,s))-cC(e.slice(s)));(l<a-1e-6||1e-6>=Math.abs(l-a)&&Math.abs(s-i)<Math.abs(t-i))&&(t=s,a=l)}return t}(s=e.children.map(e=>(function e(t,a){let i={x0:0,x1:t.width,y0:-t.height/2,y1:t.height/2};if(0===t.children.length)return ck([i],new Map([[t.id,{x:0,y:0}]]),new Set);let s=t.depth>=a,l=t.depth<=1?14:8,o=t.children.map(t=>e(t,a)),r=48*!!s,n=s?[i]:[],d=[];for(let e of o){let t=e.boxes.map(e=>cb(e,r,0)),a=d.length>0?ib(n,t,l,8):s?Math.max(ib(n,t,12,8),i.y1+12-e.top):0;d.push(a),n.push(...t.map(e=>cb(e,0,a)))}let c=d[0],p=d.at(-1),h=new Set(o.flatMap(e=>[...e.folded]));s&&h.add(t.id);let g=s?0:t.width+44+Math.min(40,.08*(p-c)),u=s?0:(c+p)/2,f=new Map([[t.id,{x:0,y:0}]]);o.forEach((e,t)=>{for(let[a,i]of e.places)f.set(a,{x:i.x+r+g,y:i.y+d[t]-u})});let m=s?{x0:20,x1:r,y0:i.y1,y1:p}:{x0:t.width,x1:g,y0:c-u,y1:p-u};return ck([i,m,...(s?n.slice(1):n).map(e=>cb(e,g,-u))],f,h)})(e,a))),r=(o=s.map((e,t)=>t)).slice(0,l),n=o.slice(l).toReversed(),d=r.map(e=>s[e]),c=n.map(e=>s[e]),p=e.width/2,h=e.height/2,g=p+72,f=(u=e=>Math.max(p,...e.map(e=>g+e.outer)))(d)+u(c),m=Math.max(e.height,cC(d),cC(c)),y=Math.max(0,(v=(f+40)/1.8-40)-m),w=(f+40)/2.4-40,x=e=>e[0]?e[0].bottom-e[0].top:void 0,b=d.length<=1&&c.length<=1?function(e,t,a,i){let s=a=>{let s=[[-i/2,i/2],...void 0===e?[]:[[-a-e/2,-a+e/2]],...void 0===t?[]:[[a-t/2,a+t/2]]];return Math.max(...s.map(([,e])=>e))-Math.min(...s.map(([e])=>e))},l=0,o=(Math.max(e??0,t??0)+i)/2+28;if(s(o)<=a)return o;if(s(l)>=a)return 0;for(let e=0;e<24;e+=1){let e=(l+o)/2;s(e)<a?l=e:o=e}return o}(x(d),x(c),w,e.height):0,M=[],(k=(e,a,i)=>{var s;let l,o,r=t=>Math.max(0,t-cC(e))/(e.length-1),n=e.length>1?Math.max(Math.min(120,r(v)),r(w)):0,d=(l=[],o=i-cC(e,s=y>0?n:0)/2,e.forEach((t,a)=>{a>0&&(o+=cM(e[a-1],t)+s),l.push(o-t.top),o+=t.bottom-t.top}),l);return e.map((e,i)=>({block:e,side:t?-a:a,y:d[i],inner:g}))})(d,1,-b).forEach((e,t)=>M[r[t]]=e),k(c,-1,b).forEach((e,t)=>M[n[t]]=e),C=Math.max(...M.map(e=>Math.abs(e.y))),i=M.map(e=>{if(0===C)return e;let t=.6*(e.y/C)**2,a=e.y+e.block.bottom>-h-28&&e.y+e.block.top<h+28;return{...e,inner:a?Math.max(g-72*t,p+44):Math.max(g-t*g,44)}}),_=[z={topic:e,parent:void 0,branch:-1,side:1,folded:!1,x:-e.width/2,y:-e.height/2}],L=(e,t,a,i)=>{let s=a.block.places.get(e.id),l=a.inner+s.x,o={topic:e,parent:t,branch:i,side:a.side,folded:-1!==t.branch&&a.block.folded.has(t.topic.id),x:1===a.side?l:-l-e.width,y:a.y+s.y-e.height/2};for(let t of(_.push(o),e.children))L(t,o,a,i)},e.children.forEach((e,t)=>L(e,z,i[t],t)),_},i=a(1/0);for(let t=function e(t){return Math.max(t.depth,...t.children.map(e))}(e)-1;t>=1&&!(cz(i)<=2.4+.01);t-=1){let e=a(t);cz(e)<cz(i)&&(i=e)}return i}(t=function(e){let t=new Map;for(let a of e.edges){let e=t.get(a.source)??[];e.push({id:a.target,index:a.metadata.siblingIndex}),t.set(a.source,e)}let a=new Map(e.nodes.map(e=>[e.id,e])),i=(e,s)=>{let l=a.get(e),{fontSize:o,textWidth:r,padX:n,padY:d}=cx(s),c=function(e,t,a){let i=e=>e.split("\n").length,s=aT(e,t,a);if(1===i(s))return s;let l=a,o=t;for(;o-l>1;){let t=Math.floor((l+o)/2);i(aT(e,t,a))<=i(s)?o=t:l=t}return aT(e,o,a)}(l.label,r,o),p=Math.ceil(Math.max(aE(c,o),aO(c,o,r))),h=Math.ceil(c.split("\n").length*o*1.35),g=0===s?function(e,t){let a=Math.ceil((e+36)*Math.SQRT2),i=Math.ceil((t+20)*Math.SQRT2);for(;a8({shape:"ellipse",width:a,height:i}).width<e+18;)a+=1;for(;a8({shape:"ellipse",width:a,height:i}).height<t+10;)i+=1;return{width:a,height:i}}(p,h):{width:p+2*n,height:h+2*d};return{id:e,depth:s,text:c,fontSize:o,...g,children:(t.get(e)??[]).toSorted((e,t)=>e.index-t.index).map(e=>i(e.id,s+1))}};return i(e.nodes.find(e=>"root"===e.kind).id,0)}(e=eV(M)),"RL"===e.layout.direction)).map(e=>e.x))),s=Math.round(40-Math.min(...a.map(e=>e.y))),l=e.style.accentColor,o=e.style.backgroundColor,r=e=>-1===e.branch?l:n0[e.branch%n0.length],n=e=>-1===e.branch?{}:{groupIds:[`branch:${t.children[e.branch].id}`]},d=a.map(e=>{var t;let a,{topic:l}=e,d=[.18,.16,.06][l.depth];return{type:"node",id:`node:${l.id}`,nodeId:l.id,kind:0===l.depth?"root":"topic",shape:0===l.depth?"ellipse":"rectangle",x:Math.round(e.x)+i,y:Math.round(e.y)+s,width:l.width,height:l.height,label:l.text,strokeColor:r(e),strokeWidth:cx(l.depth).strokeWidth,...void 0===d?{}:{fillColor:(t=r(e),a=(e,t)=>Number.parseInt(e.slice(t,t+2),16),`#${[1,3,5].map(e=>Math.round(a(o,e)+(a(t,e)-a(o,e))*d).toString(16).padStart(2,"0")).join("")}`),fillStyle:"solid"},...n(e)}}),c=a.map((e,t)=>({type:"text",id:`label:${e.topic.id}`,containerId:d[t].id,x:d[t].x+e.topic.width/2,y:d[t].y+e.topic.height/2,text:e.topic.text,fontSize:e.topic.fontSize,maxWidth:Math.max(1,e.topic.width-24),...n(e)})),p=new Map(d.map(e=>[e.nodeId,e])),h=function(e,t){let a=e.width/2,i=e.height/2,s=new Map;for(let l of[1,-1]){let o=t.filter(e=>e.side===l).map(t=>{let s=cB(t.shape,l),o=Math.atan2((s.y-e.y-i)/i,l*(s.x-e.x-a)/a);return{id:t.shape.nodeId,angle:o}}).toSorted((e,t)=>e.angle-t.angle),r=o[0]?.angle??0,n=o.at(-1)?.angle??0;o.forEach((e,t)=>{let a=1===o.length?e.angle:r+(n-r)*t/(o.length-1);s.set(e.id,(e.angle+a)/2)})}return s}(d[0],a.flatMap((e,t)=>1===e.topic.depth?[{shape:d[t],side:e.side}]:[])),g=new Map(e.edges.map(e=>[e.target,e.id])),u=a.flatMap((e,t)=>{if(!e.parent)return[];let{topic:a}=e,i=g.get(a.id),s=function(e,t,a,i){let s=a.side,l=cB(e,s);if(void 0!==i){let e=t.width/2,a=t.height/2,o={x:t.x+e+s*e*Math.cos(i),y:t.y+a+a*Math.sin(i)};return cL([o,{x:o.x+.4*(l.x-o.x),y:o.y+.4*(l.y-o.y)},{x:l.x-.5*s*Math.abs(l.x-o.x),y:l.y},l])}if(a.folded){let e={x:1===s?t.x+20:t.x+t.width-20,y:t.y+t.height};return cL([e,{x:e.x,y:e.y+.5*(l.y-e.y)},{x:l.x-.5*s*Math.abs(l.x-e.x),y:l.y},l])}let o={x:1===s?t.x+t.width:t.x,y:t.y+t.height/2},r=.5*Math.abs(l.x-o.x);return cL([o,{x:o.x+s*r,y:o.y},{x:l.x-s*r,y:l.y},l])}(d[t],p.get(e.parent.topic.id),e,h.get(a.id));return[{type:"arrow",id:`edge:${i}`,edgeId:i,sourceNodeId:e.parent.topic.id,targetNodeId:a.id,points:s,...s.length>2?{curved:!0}:{},endArrowhead:null,strokeColor:r(e),strokeWidth:1===a.depth?4:2,...-1===e.parent.branch?{}:n(e)}]}),f=Math.max(...d.map(e=>e.x+e.width)),m=Math.max(...d.map(e=>e.y+e.height)),{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:f+40,height:m+40,accentColor:l,backgroundColor:o,elements:[...u,...d,...c],layers:[],layouts:[],zOrder:[...u,...d,...c].map(e=>e.id)}},catch:e=>new fT({status:"render_failed",context:{...z,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:x.id},message:e instanceof Error?e.message:"Unable to render mindmap scene.",hint:"Simplify the hierarchy or retry with a smaller mindmap."})]}})}).pipe(o.fRP("codeMode.buildMindmap.render")),L={...z,partial:mA(_)},B=yield*mH({scene:_,formats:ma(v.options),inlineFormats:mi(v.options),...v.requestId?{requestId:v.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fT({status:e.status,context:{..."export_failed"===e.status?L:{...z,partial:{diagramId:_.diagramId}},issues:e.issues}})));return{ok:!0,status:"accepted",buildId:w,...mS(v.requestId),normalizedSpec:x,quality:C,artifact:B,issues:[]}}),mF=o.fn("codeMode.buildSequenceDiagram.workflow")(function*(e){var t,a;let i,l=s.q$Z(lQ,{errors:"all",reportInput:!0})(e);if(!uY.oJ(l))return yield*new f$({status:"invalid_input",context:{issues:f8(sl(l.failure))}});let r=yield*fm,n=l.success,d=yield*o.OH5(()=>r.createId("build")),c=(i=se((t=n.spec).title),{id:me(t.id)??(f9(i)||"sketchi-sequence"),title:i,participants:t.participants.map(e=>({id:se(e.id),label:se(e.label),...e.kind?{kind:se(e.kind)}:{},...e.icon?{icon:{slug:e.icon.slug}}:{}})),messages:t.messages.map((e,t)=>({id:me(e.id)??`message-${t+1}-${f9(e.source)}-${f9(e.target)}`,source:se(e.source),target:se(e.target),label:se(e.label),...e.type?{type:e.type}:{},...e.style?{style:e.style}:{}})),style:{...y}}),p=ft(c.participants,r.icons,{noun:"participant",path:"participants"}),h={...c,participants:p.nodes},g={buildId:d,...mS(n.requestId),normalizedSpec:h},u=eR(fM(h)).map(e=>f0({code:fC[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:fz[e.code]??e.hint}));if(u.length>0)return yield*new f$({status:"invalid_sequence",context:{...g,issues:u}});let f={accepted:10>=(a=n.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:h.participants.length,edgeCount:h.messages.length},checks:[]},m={...g,quality:f};if(!f.accepted)return yield*new f$({status:"quality_failed",context:{...m,issues:mt(f)}});let v=yield*o.SvU({try:()=>(function(e){let t=eZ(e),a=new Map(t.participants.map(e=>[e.id,aT(e.label,156,14)])),i=Math.max(180,...[...a.values()].map(e=>Math.ceil(aE(e,14))+24)),s=i+140,l=t.participants.reduce((e,t)=>Math.max(e,Math.ceil(14*(a.get(t.id)??t.label).split("\n").length*1.35)+18+a9(t.icon?{slug:t.icon.slug,size:28}:void 0)),72),o=48+l,r=o+64,n=new Map(t.messages.flatMap(e=>{let t;return e.source===e.target?[[e.id,{width:aU(t=aT(e.label,160,13),13,160),height:Math.ceil(13*t.split("\n").length*1.35)}]]:[]})),d=e=>{let t=n.get(e);return t?Math.max(32,t.height):0},c=[],p=r;for(let e of t.messages)c.push(p),p+=88+d(e.id);let h=t.messages.at(-1),g=(h?(c.at(-1)??r)+d(h.id):r)-o+56,u=function(e){let t=new Map,a=[];e.messages.forEach((e,i)=>{if(e.source===e.target)return;if("return"!==e.type)return void t.set(e.target,[...t.get(e.target)??[],{caller:e.source,index:i,messageId:e.id}]);let s=t.get(e.source)??[],l=s.findLastIndex(t=>t.caller===e.target),o=s[l];o&&(t.set(e.source,s.filter((e,t)=>t!==l)),a.push({participantId:e.source,callMessageId:o.messageId,returnMessageId:e.id,startIndex:o.index,endIndex:i}))});let i=[];for(let e of a.toSorted((e,t)=>e.startIndex-t.startIndex)){let t=i.filter(t=>t.participantId===e.participantId&&t.endIndex>e.startIndex),a=new Set(t.map(e=>e.depth)),s=Math.max(0,...t.filter(t=>t.endIndex>e.endIndex).map(e=>e.depth+1));for(;a.has(s);)s+=1;i.push({...e,depth:s})}return i}(t),f=(e,t)=>Math.max(-1,...u.filter(a=>a.participantId===e&&a.startIndex<=t&&t<=a.endIndex).map(e=>e.depth)),m=t.participants.map(e=>Math.max(s,...t.messages.flatMap((t,a)=>{let i,s=n.get(t.id);if(!s||t.source!==e.id)return[];let l=f(e.id,a);return[((i="return"===t.type?l:l+1)<0?1:6*i+6)+32+10+s.width+6+24]}))),v=new Map,y=[],w=[],x=[],b=48+i/2;t.participants.forEach((e,r)=>{let n=b,d=n-i/2;b+=m[r]??s,v.set(e.id,n),y.push({type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...e.icon?{icon:{slug:e.icon.slug,size:28}}:{},shape:"rectangle",x:d,y:48,width:i,height:l,label:a.get(e.id)??e.label}),w.push({type:"text",id:`label:${e.id}`,containerId:`node:${e.id}`,x:n,y:48+l/2,text:a.get(e.id)??e.label,fontSize:14,maxWidth:i-24,...e.icon?{verticalAlign:"bottom"}:{}}),x.push({type:"node",id:`node:${eO(e.id)}`,nodeId:eO(e.id),rendererRole:"sequence-lifeline",shape:"rectangle",fillColor:t.style.backgroundColor,strokeColor:t.style.accentColor,x:n-1,y:o,width:2,height:g,label:`${e.label} lifeline`})});let k=e=>c[e]??r,M=new Map(t.participants.map(e=>[e.id,e.label])),C=(e,a,i,s,l)=>{let o=`${eO(e)}:activation:${a}`,r=v.get(e)??0;return{type:"node",id:`node:${o}`,nodeId:o,rendererRole:"sequence-activation",shape:"rectangle",fillColor:t.style.backgroundColor,strokeColor:t.style.accentColor,x:r-6+6*i,y:s,width:12,height:l-s,label:`${M.get(e)??e} active`}},z=u.map(e=>({activation:e,node:C(e.participantId,e.callMessageId,e.depth,k(e.startIndex)-12,k(e.endIndex)+12)})),_=new Map(t.messages.flatMap((e,t)=>{if(e.source!==e.target||"return"===e.type)return[];let a=f(e.source,t)+1,i=k(t)+d(e.id);return[[e.id,C(e.source,e.id,a,i-12,i+12)]]})),L=(e,t,a,i)=>{let s=v.get(e)??0,l=i>s,o=z.filter(({activation:a})=>a.participantId===e&&a.startIndex<=t&&t<=a.endIndex),r=o.find(({activation:e})=>e.callMessageId===a||e.returnMessageId===a)??o.reduce((e,t)=>!e||t.activation.depth>e.activation.depth?t:e,void 0);return r?{nodeId:r.node.nodeId,x:l?r.node.x+r.node.width:r.node.x}:{nodeId:eO(e),x:s+(l?1:-1)*2/2}},B=t.participants.map(e=>v.get(e.id)??0),S=[],A=t.messages.map((e,t)=>{let a,i,s,l,o;if(e.source===e.target){let a,i,s,l,o,r,c;return a=L(e.source,t,e.id,1/0),s=(i=_.get(e.id))?{nodeId:i.nodeId,x:i.x+i.width}:a,l=Math.max(a.x,s.x)+32,r=(o=k(t))+d(e.id),c=[`message:${e.id}`],S.push({type:"text",id:`arrow:${e.id}:label`,text:e.label,fontSize:13,x:l+10+(n.get(e.id)?.width??0)/2,y:(o+r)/2,maxWidth:160,groupIds:c}),{type:"arrow",id:`arrow:${e.id}`,edgeId:e.id,groupIds:c,sourceNodeId:a.nodeId,targetNodeId:s.nodeId,..."return"===e.type?{strokeColor:"#6b7280"}:{},..."dashed"===e.style||"return"===e.type?{strokeStyle:"dashed"}:{},points:[{x:a.x,y:o},{x:l,y:o},{x:l,y:r},{x:s.x,y:r}],label:e.label}}let r=v.get(e.source)??0,c=v.get(e.target)??0,p=L(e.source,t,e.id,c),h=L(e.target,t,e.id,r),g=k(t);return{type:"arrow",id:`arrow:${e.id}`,edgeId:e.id,sourceNodeId:p.nodeId,targetNodeId:h.nodeId,..."return"===e.type?{strokeColor:"#6b7280"}:{},..."dashed"===e.style||"return"===e.type?{strokeStyle:"dashed"}:{},points:[{x:p.x,y:g},...(a=(r+c)/2,i=Math.sign(c-r),s=B.findIndex(e=>100>Math.abs(e-a)&&Math.min(r,c)<e&&e<Math.max(r,c)),l=B[s],o=B[s-i],void 0===l||void 0===o?[]:[{x:(l+o)/2,y:g}]),{x:h.x,y:g}],label:e.label}}),P=Math.max(0,...A.flatMap(({edgeId:e,points:t})=>{let a=n.get(e);return a&&t[1]?[t[1].x+10+a.width]:[]})),V=[...z.map(({node:e})=>e),..._.values()],H=[...A,...S,...x,...V,...y,...w],q=[...x.map(e=>e.id),...V.map(e=>e.id),...y.map(e=>e.id),...w.map(e=>e.id),...A.map(e=>e.id),...S.map(e=>e.id)];return{kind:"canvas",version:1,diagramId:t.id,title:t.title,width:Math.max((B.at(-1)??48)+i/2+48,Math.ceil(P)+48),height:o+g+48,accentColor:t.style.accentColor,backgroundColor:t.style.backgroundColor,elements:H,layers:[],layouts:[],zOrder:q}})(fM(h)),catch:e=>new f$({status:"render_failed",context:{...m,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render sequence diagram scene.",hint:"Repair the participant/message structure and retry."})]}})}).pipe(o.fRP("codeMode.buildSequenceDiagram.render")),w=yield*fa(v,r.icons),x=w.scene,b=ii(x);if(b.length>0)return yield*new f$({status:"render_failed",context:{...m,issues:mr(b).map(e=>({...e,hint:"Reduce participant label lines, participants, or messages and retry buildSequenceDiagram."}))}});let k={...m,partial:mA(x)},M=yield*mH({scene:x,formats:ma(n.options),inlineFormats:mi(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new f$({status:e.status,context:{..."export_failed"===e.status?k:m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:d,...mS(n.requestId),normalizedSpec:h,quality:f,artifact:M,issues:[...p.issues,...w.issues]}}),mI=o.fn("codeMode.buildStateMachine.workflow")(function*(e){var t,a;let i,l,r=s.q$Z(l3,{errors:"all",reportInput:!0})(e);if(!uY.oJ(r))return yield*new fY({status:"invalid_input",context:{issues:f8(sl(r.failure))}});let n=yield*fm,d=r.success,c=yield*o.OH5(()=>n.createId("build")),p=(i=se((t=d.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},{id:me(t.id)??(f9(i)||"sketchi-state-machine"),title:i,initial:se(t.initial),states:t.states.map(e=>{let t=se(e.id),a=e6({...e,id:t});return{id:t,...void 0!==a?{label:a}:{},...e.kind?{kind:e.kind}:{},...l("parent",e.parent),...void 0!==e.initial?{initial:se(e.initial)}:{}}}),transitions:t.transitions.map((e,t)=>({id:me(e.id)??`transition-${t+1}-${f9(e.source)}-${f9(e.target)}`,source:se(e.source),target:se(e.target),...l("event",e.event),...l("guard",e.guard),...l("action",e.action)})),...t.layout?{layout:{direction:t.layout.direction}}:{},style:{...y}}),h=p.states.flatMap((e,t)=>{let a=e7(e,p.states);return void 0===e.initial&&void 0!==a?[{code:"composite_initial_defaulted",severity:"warning",path:`states.[${t}].initial`,message:`Composite "${e.id}" has no initial; defaulted to its first listed regular substate "${a}".`,hint:`Set initial on "${e.id}" explicitly if "${a}" is not the intended entry.`}]:[]}).map(e=>f0({...e,stage:"input",ref:{kind:"request",path:`spec.${e.path}`}})),g=e8(p),u={buildId:c,...mS(d.requestId),normalizedSpec:g},f=tt(f_(g)).map(e=>f0({code:fL[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fY({status:"invalid_state_machine",context:{...u,issues:f}});let m={accepted:10>=(a=d.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.states.length,edgeCount:g.transitions.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new fY({status:"quality_failed",context:{...v,issues:mt(m)}});let w=yield*o.SvU({try:()=>(function(e){let t=t=>h2(function(e,t){let a=e9(e),i=(e,t,a,i)=>({id:e,label:t,kind:a,metadata:{},...i?{group:i}:{}}),s=(e,t,a,i)=>({id:e,source:t,target:a,metadata:{},...i?{label:i}:{}}),l=new Set(e.transitions.map(e=>e.id)),o=e=>{let t=e;for(let a=2;l.has(t);a+=1)t=`${e}~${a}`;return l.add(t),t},r=[i(h5,"","initial")],n=[s(o(h5),h5,e.initial)],d=new Map,c=new Map;for(let t of e.states){if("final"!==e5(t)||void 0!==e6(t))continue;let a=e.transitions.filter(e=>e.target===t.id),i=a.map((e,a)=>0===a?t.id:`${t.id}:${a+1}`);a.forEach((e,t)=>d.set(e.id,i[t])),c.set(t.id,i.length>0?i:[t.id])}for(let t of e.states){let l=t.parent;if(a.has(t.id)){let a=e7(t,e.states);void 0!==a&&(r.push(i(`${t.id}${h5}`,"","initial",t.id)),n.push(s(o(`${t.id}${h5}`),`${t.id}${h5}`,a)));continue}let d=e5(t),p=e6(t);if("final"===d&&void 0===p){for(let e of c.get(t.id))r.push(i(e,"","final",l));continue}if("final"===d){r.push(i(t.id,p,"state",l)),r.push(i(`${t.id}:end`,"","final",l)),n.push(s(o(`${t.id}:end`),t.id,`${t.id}:end`));continue}r.push(i(t.id,p??"",d,l))}for(let t of e.transitions){let e=function(e){let t=e.guard?te(e.guard,/^\s*\[|\]\s*$/gu):"",a=e.action?te(e.action,/^\s*\//u):"";return[e.event?.trim(),t&&`[${t}]`,a&&`/ ${a}`].filter(Boolean).join(" ")}(t);n.push(s(t.id,t.source,d.get(t.id)??t.target,e||void 0))}return{id:e.id,title:e.title,type:"flowchart",nodes:r,edges:n,groups:e.states.filter(e=>a.has(e.id)).map(e=>({id:e.id,label:e6(e)??""})),layout:{direction:t,edgeRouting:"orthogonal"},style:e.style,metadata:{}}}(e,t),{pairedReturns:!0});if(e.layout)return t(e.layout.direction);let a=["LR","TB"].map(e=>{let a,i=t(e);return{aspect:Math.max(i.width/i.height,i.height/i.width),cost:hY(a=i.elements.filter(e=>"arrow"===e.type))+iU(a.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:i.width,height:i.height})).length,scene:i}}),i=a.filter(e=>e.aspect<=2.2),[s]=i.length>0?i.toSorted((e,t)=>e.cost-t.cost):a.toSorted((e,t)=>e.aspect-t.aspect);return s.scene})(f_(g)),catch:e=>new fY({status:"render_failed",context:{...v,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render state machine scene.",hint:"Repair the state and transition structure and retry."})]}})}).pipe(o.fRP("codeMode.buildStateMachine.render")),x=ii(w);if(x.length>0)return yield*new fY({status:"render_failed",context:{...v,issues:mr(x).map(e=>({...e,hint:"Shorten state labels or split the machine and retry buildStateMachine."}))}});let b={...v,partial:mA(w)},k=yield*mH({scene:w,formats:ma(d.options),inlineFormats:mi(d.options),...d.requestId?{requestId:d.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fY({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:c,...mS(d.requestId),normalizedSpec:g,quality:m,artifact:k,issues:h}}),mE=o.fn("codeMode.buildErDiagram.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(l6,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:function(e){if(!tF(e))return e;let t=Array.isArray(e.entities)?e.entities.map(e=>tF(e)&&Array.isArray(e.fields)?{...e,fields:e.fields.map(e=>"string"==typeof e?tV(e):e)}:e):e.entities,a=Array.isArray(e.relationships)?e.relationships.map(e=>{if(!tF(e))return e;let{source:t,target:a,cardinality:i,...s}=e,l=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase().split(/\s*(?:-to-|\sto\s|:)\s*/u);if(2!==t.length)return;let a=e=>tq(/^m$|^n$/u.test(e)?"many":e);return[a(t[0]),a(t[1])]}(i),o={...s,from:s.from??t,to:s.to??a,fromCardinality:tq(s.fromCardinality??l?.[0]),toCardinality:tq(s.toCardinality??l?.[1])};for(let e of["from","to","fromCardinality","toCardinality"])void 0===o[e]&&delete o[e];return void 0!==i&&void 0===l&&(o.cardinality=i),o}):e.relationships;return{...e,...void 0===t?{}:{entities:t},...void 0===a?{}:{relationships:a}}}(e.spec)}:e);if(!uY.oJ(d))return yield*new fG({status:"invalid_input",context:{issues:f8(sl(d.failure))}});let c=yield*fm,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.relationships.flatMap(e=>me(e.id)??[])),{id:me(t.id)??(f9(i)||"sketchi-er-diagram"),title:i,entities:t.entities.map(e=>({id:se(e.id),...l("name",e.name),fields:e.fields.map(e=>{let t="string"==typeof e?tV(se(e)):e;return{name:se(t.name),...l("type",t.type),...r("pk",t.pk),...r("fk",t.fk),...r("unique",t.unique),...r("nullable",t.nullable)}})})),relationships:t.relationships.map((e,t)=>({id:me(e.id)??(e=>{let t=e+1;for(;n.has(`relationship-${t}`);)t+=1;return n.add(`relationship-${t}`),`relationship-${t}`})(t),from:se(e.from),to:se(e.to),fromCardinality:e.fromCardinality,toCardinality:e.toCardinality,...l("label",e.label)})),style:{...y}}),u={buildId:h,...mS(p.requestId),normalizedSpec:g},f=tB(fB(g)).map(e=>f0({code:"missing_relationship_entity"===e.code&&e.path.endsWith(".from")?"missing_edge_source":fS[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fG({status:"invalid_er_diagram",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.entities.length,edgeCount:g.relationships.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new fG({status:"quality_failed",context:{...v,issues:mt(m)}});let w=yield*o.SvU({try:()=>{var e;let t,a,i,s,l,o,r,n,d,c,p;return t=new Map((e=fB(g)).entities.map(e=>[e.id,function(e){let t=tz(e),a=e.fields.map(e=>[e.pk&&"PK",e.fk&&"FK",e.unique&&!e.pk&&"UK"].filter(e=>"string"==typeof e).join(" ")),i=e.fields.map(e=>`${e.name.trim()}${e.nullable&&!e.type?"?":""}`),s=e.fields.map(e=>e.type?`${e.type}${e.nullable?"?":""}`:""),[l,o,r]=[a,i,s].map(gd),n=14+l+8*(l>0)+o+(r>0?16+r:0)+14,d=Math.ceil(aE(t,16))+28;return{entity:e,name:t,width:Math.max(160,n,d),height:e.fields.length>0?52+28*e.fields.length:40,keys:a,names:i,types:s,keyWidth:l,nameWidth:o,typeWidth:r,rows:new Map(e.fields.map((e,t)=>[tL(e.name),46+(t+.5)*28]))}}(e)])),a=e.relationships.map(e=>(function(e,t){let[a,i]=[t_(e.from),t_(e.to)],s=(e,a)=>{let i=t.get(e.entity);if(void 0!==e.field)return i.rows.get(tL(e.field));let s=i.entity.fields.filter(e=>e.pk);return void 0!==a.field&&1===s.length?i.rows.get(tL(s[0].name)):20},l={from:{entity:a.entity,y:s(a,i),cardinality:e.fromCardinality},to:{entity:i.entity,y:s(i,a),cardinality:e.toCardinality}},o=e=>{let a=void 0===e.field?void 0:t.get(e.entity).entity.fields.find(t=>tL(t.name)===tL(e.field));return void 0!==a&&!0===a.pk&&!0!==a.fk};return(gn(e.fromCardinality)!==gn(e.toCardinality)?gn(e.fromCardinality):!(o(i)&&!o(a)))?{relationship:e,parent:l.from,child:l.to}:{relationship:e,parent:l.to,child:l.from}})(e,t)),s=new Map((i=function(e,t,a){let i,s=a.map(e=>{let t;return{id:e.relationship.id,parent:e.parent.entity,child:e.child.entity,parentY:e.parent.y,childY:e.child.y,labelWidth:(t=e.relationship.label)?Math.min(160,Math.ceil(aE(t,13))):0}}),l=[...t.values()].map(e=>({id:e.entity.id,width:e.width,height:e.height})),o=e.entities.length>24?gw.slice(0,2):gw,r=new Set;for(let n of o){let o=function(e,t,a={}){let i,s,l,o,r,n=(i=new Map(e.map((e,t)=>[e.id,t])),{tables:e,index:i,links:t,pairs:t.flatMap(e=>e.parent===e.child?[]:[{parent:i.get(e.parent),child:i.get(e.child),link:e}])}),d=(s=function(e,t=1.6){let a=e.tables.reduce((e,t)=>e+(t.width+132)*(t.height+56),0),i=Math.max(...e.tables.map(e=>e.height)),s=e.tables.reduce((e,t)=>e+t.height+56,0)/e.tables.length,l=e.tables.reduce((e,t)=>e+t.width+150,0)/e.tables.length,o=Math.max(i,Math.sqrt(a/t));return{height:o,unit:s,width:1.25*t*o,column:l}}(n,a.aspect),l=a.sameColumn??2.5,o="hub"===a.start?function(e){let t=h7(e),a=e.tables.map(()=>void 0),i=new Map;for(let s of e.tables.map((e,t)=>t).sort((e,a)=>t[a].size-t[e].size||e-a)){if(void 0!==a[s])continue;a[s]=0,i.set(s,0);let l={[-1]:0,1:0},o=[s];for(;o.length>0;){let s=o.shift();for(let r of[...t[s]].filter(e=>void 0===a[e]).sort((e,a)=>t[a].size-t[e].size||e-a)){let t=i.get(s);0===t&&(t=l[1]<=l[-1]?1:-1,l[t]=l[t]+e.tables[r].height),a[r]=a[s]+t,i.set(r,t),o.push(r)}}}return a.map(e=>e??0)}(n):function(e){let t=e.tables.length,a=Array.from({length:t},()=>[]);for(let{parent:t,child:i}of e.pairs)a[t].push(i);let i=Array.from({length:t}).fill(0),s=Array.from({length:t},()=>[]),l=e=>{for(let t of(i[e]=1,a[e]))1!==i[t]&&(s[e].push(t),0===i[t]&&l(t));i[e]=2};for(let e=0;e<t;e+=1)0===i[e]&&l(e);let o=Array.from({length:t},()=>[]);for(let[e,t]of s.entries())for(let a of t)o[a].push(e);let r=Array.from({length:t},()=>0),n=[],d=o.map(e=>e.length),c=d.flatMap((e,t)=>0===e?[t]:[]);for(;c.length>0;){let e=c.shift();for(let t of(n.push(e),s[e]))r[t]=Math.max(r[t],r[e]+1),d[t]-=1,0===d[t]&&c.push(t)}for(let e of[...n].reverse())0===o[e].length&&s[e].length>0&&(r[e]=Math.min(...s[e].map(e=>r[e]))-1);return r}(n),h8(n,o,40,e=>h4(n,e,s,l)),r=new Map,h8(n,o,8,e=>{let t=h6(e),a=t.join(","),i=r.get(a);return void 0===i&&(i=go(h9(n,t),!1).crossings,r.set(a,i)),h4(n,e,s,l)+ +i}),h6(o)),c=Math.max(...d)+1,p=h9(n,d),h=go(p),g=function(e,t){let a=[...t.top],i=gl(e);for(let s=0;s<12;s+=1){let l=[...t.columns.keys()];for(let o of(s%2==1&&l.reverse(),l)){let s=t.columns[o];if(0===s.length)continue;let l=[],r=[];for(let t of s){let s=e.corridor[t];if(s){l.push(a[s.parent]+s.y-2),r.push(4);continue}let n=0,d=0;for(let{other:s,ownY:l,otherY:r}of i[t])e.column[s]!==o&&(n+=a[s]+r-l,d+=1);l.push(d>0?n/d:a[t]),r.push(d>0?d:.05)}let n=gt(e,s),d=function(e,t){let a=[];for(let[i,s]of e.entries()){let e=t[i];for(a.push({count:1,weight:e,sum:s*e});a.length>1;){let e=a.at(-1),t=a.at(-2);if(t.sum/t.weight<=e.sum/e.weight)break;a.pop(),t.count+=e.count,t.weight+=e.weight,t.sum+=e.sum}}return a.flatMap(e=>Array(e.count).fill(e.sum/e.weight))}(l.map((e,t)=>e-n[t]),r);for(let[e,t]of s.entries())a[t]=d[e]+n[e]}}return function(e,t,a){let i=gl(e),s=t=>t.reduce((t,s)=>t+i[s].filter(({other:t,ownY:i,otherY:l})=>e.column[t]!==e.column[s]&&.5>Math.abs(a[t]+l-a[s]-i)).length,0),l=(t,i)=>a[i]-a[t]-e.height[t]-ge(e,t,i)<.5;for(let o=0;o<2;o+=1)for(let o of t.columns)for(let[t,r]of o.entries())if(!e.corridor[r])for(let n of i[r].flatMap(({other:t,ownY:i,otherY:s})=>{let l=a[t]+s-a[r]-i;return e.column[t]!==e.column[r]&&Math.abs(l)>=.5&&40>=Math.abs(l)?[l]:[]})){let i=[r],d=n>0?1:-1;for(let s=t;;s+=d){let t=o[s+d];if(void 0===t)break;if(!(d>0?l(o[s],t):l(t,o[s]))){(d>0?a[t]-a[o[s]]-e.height[o[s]]-ge(e,o[s],t):a[o[s]]-a[t]-e.height[t]-ge(e,t,o[s]))<Math.abs(n)-.5&&(i.length=0);break}i.push(t)}if(0===i.length)continue;let c=s(i);for(let e of i)a[e]=a[e]+n;if(s(i)>c)break;for(let e of i)a[e]=a[e]-n}return a}(e,t,a.map(e=>Math.round(e)))}(p,h),u=function(e,t,a,i){let s=new Map,l=[],o=[];for(let a of e.links){let[r,n]=[e.index.get(a.parent),e.index.get(a.child)],[d,c]=[t[r],t[n]];if(d===c){o.push(a);continue}let[p,h]=d<c?["right","left"]:["left","right"];s.set(a.id,{parent:p,child:h}),l.push({column:d,side:p,y:i[r]+a.parentY}),l.push({column:c,side:h,y:i[n]+a.childY})}for(let r of o){let[o,n]=[e.index.get(r.parent),e.index.get(r.child)],d=t[o],[c,p]=[i[o]+r.parentY,i[n]+r.childY],[h,g]=[Math.min(c,p),Math.max(c,p)],u=e=>l.filter(t=>t.column===d&&t.side===e&&t.y>h&&t.y<g).length,f=0===d&&a>1?"left":"right",[m,v]=[u("left"),u("right")],y=m===v?f:m<v?"left":"right";s.set(r.id,{parent:y,child:y}),l.push({column:d,side:y,y:c},{column:d,side:y,y:p})}return s}(n,d,c,g),f=function(e,t,a,i){let s=Array.from({length:Math.max(0,i-1)},()=>0),l=Array.from({length:Math.max(0,i-1)},()=>0),o=new Map,r=(e,a,i)=>{let s="right"===a?t[e]:t[e]-1,l=`${e}:${a}:${i}`,r=o.get(l)??{gap:s,low:"right"===a,count:0};r.count+=1,o.set(l,r)};for(let i of e.links){let[o,n]=[e.index.get(i.parent),e.index.get(i.child)],[d,c]=[t[o],t[n]],p=a.get(i.id);r(o,p.parent,i.parentY),r(n,p.child,i.childY);let h="right"===p.parent?d:d-1;if(i.labelWidth>0&&h>=0&&h<s.length&&(l[h]=Math.max(l[h],i.labelWidth+16)),d===c){h>=0&&h<s.length&&(s[h]+=1);continue}for(let e=Math.min(d,c);e<Math.max(d,c);e+=1)s[e]+=1}let n=s.map(()=>({low:0,high:0})),d=new Map;for(let[e,{gap:t,low:a,count:i}]of o){let s=(i-1)*32,l=e.split(":").slice(0,2).join(":");d.set(l,Math.max(d.get(l)??0,s));let o=n[t];o&&(a?o.low=Math.max(o.low,s):o.high=Math.max(o.high,s))}for(let i of e.links){let[s,l]=[e.index.get(i.parent),e.index.get(i.child)];if(t[s]!==t[l])continue;let o=a.get(i.id).parent,r=n["right"===o?t[s]:t[s]-1];if(!r)continue;let c=Math.max(d.get(`${s}:${o}`)??0,d.get(`${l}:${o}`)??0)+32+Math.abs(e.tables[s].width-e.tables[l].width)/2;"right"===o?r.low=Math.max(r.low,c):r.high=Math.max(r.high,c)}return s.map((e,t)=>Math.max(132,96+n[t].low+n[t].high+l[t]+20*(e+1)))}(n,d,u,c),m=Array.from({length:c},(t,a)=>Math.max(0,...h.columns[a].flatMap(t=>t<e.length?[e[t].width]:[]))),v=88*!!t.some(e=>{let t=d[n.index.get(e.parent)];return t===d[n.index.get(e.child)]&&(0===t||t===c-1)}),y=[],w=v;for(let[e,t]of m.entries())y.push(w),w+=t+(f[e]??0);let x=Math.min(...g.slice(0,e.length));return{boxes:new Map(e.map((e,t)=>{let a=d[t];return[e.id,{x:y[a]+Math.round((m[a]-e.width)/2),y:g[t]-x,width:e.width,height:e.height}]})),sides:u}}(l,s,n),d=JSON.stringify([...o.boxes,...o.sides]);if(r.has(d))continue;r.add(d);let c=gy(e,t,a,o,gv(a,o)),p=gx(c),h=i?p:p-.75;if((!i||h<i.score)&&(i={cost:p,score:h,scene:c,placement:o}),0===p)break}let{placement:n}=i,d=gv(a,n);if(function(e,t){let a=!1;for(let i of gm(e)){if(i.length<=2)continue;let[s,l]=[i[0].link[i[0].end].entity,i[0].side],o=t.get(s),r="left"===l?"right":"left",n=e.filter(e=>e.link[e.end].entity===s&&e.side===r&&e.row===i[0].row).length,d=a=>{let i=gc(gf(e,a),t);return Math.max(o.y-48-i,i-(o.y+o.height+48))},c=i.filter(t=>gf(e,t).side!==t.side&&d(t)>0).sort((e,t)=>d(t)-d(e)),p=i.length;for(let e of c){if(p-n<2)break;e.side=r,p-=1,n+=1,a=!0}}return a}(d,n.boxes)){let s=gy(e,t,a,n,d);if(gx(s)<i.cost)return s}return i.scene}(e,t,a)).elements.flatMap(e=>"node"===e.type?[[e.nodeId,e]]:[])),l=e.entities.map(a=>(function(e,t,a){let{id:i}=e.entity,s=[`table:${i}`],l={type:"node",id:`node:${i}`,nodeId:i,kind:"entity",rendererRole:"er-table",shape:"rectangle",x:t.x,y:t.y,width:e.width,height:e.height,label:e.name,fillColor:a.style.backgroundColor,fillStyle:"solid",groupIds:s},o={type:"node",id:`node:${i}:header`,nodeId:`${i}:header`,kind:"entity-name",rendererRole:"er-table",shape:"rectangle",x:t.x,y:t.y,width:e.width,height:40,label:e.name,fillColor:"#efe6ec",fillStyle:"solid",groupIds:s},r=[{type:"text",id:`label:${i}:header`,containerId:o.id,x:t.x+e.width/2,y:t.y+20,text:e.name,fontSize:16,maxWidth:e.width-28,groupIds:s}];if(e.entity.fields.length>0){let a=t.y+40+6,l=28*e.entity.fields.length,o=(e,t,o,r,n)=>({type:"text",id:`text:${i}:${e}`,x:o+r/2,y:a+l/2,text:t.join("\n"),fontSize:14,lineHeight:2,maxWidth:r,textAlign:"left",...n?{textColor:n}:{},groupIds:s}),n=t.x+14;e.keyWidth>0&&(r.push(o("keys",e.keys,n,e.keyWidth,"#6a4e5c")),n+=e.keyWidth+8),r.push(o("fields",e.names,n,e.nameWidth)),e.typeWidth>0&&r.push(o("types",e.types,n+e.nameWidth+16,e.typeWidth,"#6f6656"))}return{nodes:[l,o],texts:r}})(t.get(a.id),s.get(a.id),e)),o=new Map(a.map(e=>[e.relationship.id,e])),r=[],n=e=>r.some(t=>14>Math.hypot(t.x-e.x,t.y-e.y)),d=i.elements.flatMap(t=>{if("arrow"!==t.type)return[];let a=o.get(t.edgeId);for(let[s,l]of[["start",a.parent],["end",a.child]]){var i;if("zero-or-one"!==(i=l.cardinality)&&"zero-or-many"!==i)continue;let[a,o]="start"===s?[t.points[0],t.points[1]]:[t.points.at(-1),t.points.at(-2)],d=Math.hypot(o.x-a.x,o.y-a.y),c=gk(t,s,l.entity,r.length,e);for(let a=46;n(c)&&a+12<=d;a+=14)c=gk(t,s,l.entity,r.length,e,a);r.push(c)}return[{...t,startArrowhead:gr[a.parent.cardinality],endArrowhead:gr[a.child.cardinality]}]}),c=i.elements.filter(e=>"text"===e.type&&void 0===e.containerId),p=[...l.flatMap(e=>[...e.nodes,...e.texts]),...d,...r,...c],{...i,elements:p,zOrder:p.map(e=>e.id)}},catch:e=>new fG({status:"render_failed",context:{...v,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render ER scene.",hint:"Repair the entities and relationships and retry."})]}})}).pipe(o.fRP("codeMode.buildErDiagram.render")),x=ii(w);if(x.length>0)return yield*new fG({status:"render_failed",context:{...v,issues:mr(x).map(e=>({...e,hint:"Shorten entity or field names, or split the schema, and retry buildErDiagram."}))}});let b={...v,partial:mA(w)},k=yield*mH({scene:w,formats:ma(p.options),inlineFormats:mi(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fG({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mS(p.requestId),normalizedSpec:g,quality:m,artifact:k,issues:[]}}),mO=o.fn("codeMode.buildClassDiagram.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(l8,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:ad(e.spec)}:e);if(!uY.oJ(d))return yield*new fR({status:"invalid_input",context:{issues:f8(sl(d.failure))}});let c=yield*fm,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.relationships.flatMap(e=>me(e.id)??[])),{id:me(t.id)??(f9(i)||"sketchi-class-diagram"),title:i,classes:t.classes.map(e=>({id:se(e.id),...l("name",e.name),...e.kind?{kind:e.kind}:{},...l("stereotype",e.stereotype),attributes:e.attributes.map(e=>{let t="string"==typeof e?as(se(e)):e;return{name:se(t.name),...l("type",t.type),...t.visibility?{visibility:t.visibility}:{},...r("static",t.static)}}),methods:e.methods.map(e=>{let t="string"==typeof e?al(se(e)):e;return{name:se(t.name),params:t.params.map(e=>{let t="string"==typeof e?aa(se(e)):e;return{name:se(t.name),...l("type",t.type)}}),...l("returns",t.returns),...t.visibility?{visibility:t.visibility}:{},...r("static",t.static),...r("abstract",t.abstract)}})})),relationships:t.relationships.map((e,t)=>({id:me(e.id)??(e=>{let t=e+1;for(;n.has(`relationship-${t}`);)t+=1;return n.add(`relationship-${t}`),`relationship-${t}`})(t),kind:e.kind,from:se(e.from),to:se(e.to),...l("fromMultiplicity",e.fromMultiplicity),...l("toMultiplicity",e.toMultiplicity),...l("fromRole",e.fromRole),...l("toRole",e.toRole),...void 0===e.navigable?{}:{navigable:e.navigable},...l("label",e.label)})),style:{...y}}),u={buildId:h,...mS(p.requestId),normalizedSpec:g},f=t7(fA(g)).map(e=>f0({code:"missing_relationship_class"===e.code&&e.path.endsWith(".from")?"missing_edge_source":fP[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fR({status:"invalid_class_diagram",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.classes.length,edgeCount:g.relationships.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new fR({status:"quality_failed",context:{...v,issues:mt(m)}});let w=yield*o.SvU({try:()=>(function(e){let t=new Map(e.classes.map(e=>[e.id,function(e){let t,a=tQ(e).trim(),i=(t=[t0[t1(e)],e.stereotype?.trim()].filter(e=>"string"==typeof e&&e.length>0)).length>0?`\xab${t.join(", ")}\xbb`:void 0,s=e.attributes.map(t3),l=e.methods.map(t5),o=Math.max(aE(a,16),i?aE(i,16):0,...[...s,...l].map(e=>aE(e,14))),r=(i?2:1)*22+20,[n,d]=[gH(s),gH(l)];return{node:e,name:a,heading:i?`${i}
|
|
238
|
-
${a}`:a,width:Math.max(140,Math.ceil(o)+24),height:r+n+d,band:r,attributesHeight:n,methodsHeight:d,attributes:s,methods:l}}(e)])),a=function(e,t){let a,i=e.relationships.map(e=>({id:e.id,from:e.from.trim(),to:e.to.trim(),generalization:tG(e.kind),whole:"composition"===e.kind||"aggregation"===e.kind,fromLabel:Math.max(0,...gq(e,"from").map(gF)),toLabel:Math.max(0,...gq(e,"to").map(gF)),label:e.label?gF(e.label.trim()):0})),s=e.classes.map(e=>{let a=t.get(e.id);return{id:e.id,width:a.width,height:a.height,dividers:[a.band,a.band+a.attributesHeight]}}),l=e.classes.length>20?gE.slice(0,2):gE,o=new Set;for(let r of l){let l=function e(t,a,i={},s=0){let l=function(e,t){let a=new Map(e.map((e,t)=>[e.id,t])),i=[],s=[];for(let e of t){let[t,l]=[a.get(e.from),a.get(e.to)];t!==l&&(e.generalization?i.push({parent:l,child:t}):s.push({a:t,b:l,whole:!0===e.whole}))}return{boxes:e,index:a,links:t,generalizations:i,others:s}}(t,a),o=function(e,t){let a,i=function(e,t=1.6){let a=e.boxes.reduce((e,t)=>e+(t.width+64)*(t.height+130),0),i=Math.max(...e.boxes.map(e=>e.width)),s=Math.sqrt(a/t),l=e.boxes.length;return{width:Math.max(i,1.2*t*s),height:s,column:e.boxes.reduce((e,t)=>e+t.width+64,0)/l,unit:e.boxes.reduce((e,t)=>e+t.height+130,0)/l}}(e,t.aspect),s=t.between??.3,l=t.wholeBelow??0,o=function(e){let t=e.boxes.length,a=Array.from({length:t},()=>[]),i=Array.from({length:t},()=>[]);for(let{parent:t,child:s}of e.generalizations)a[s].push(t),i[t].push(s);let s=Array.from({length:t},()=>0),l=a.map(e=>e.length),o=l.flatMap((e,t)=>0===e?[t]:[]),r=[];for(;o.length>0;){let e=o.shift();for(let t of(r.push(e),i[e]))s[t]=Math.max(s[t],s[e]+1),l[t]-=1,0===l[t]&&o.push(t)}for(let e of r.toReversed())i[e].length>0&&(s[e]=Math.min(...i[e].map(e=>s[e]))-1);let n=new Set(e.generalizations.flatMap(({parent:e,child:t})=>[e,t]));0===n.size&&e.others.length>0&&n.add(e.others[0].a);for(let a=0;a<t&&n.size<t;a+=1)for(let{a:t,b:a}of e.others){if(n.has(t)===n.has(a))continue;let[e,i]=n.has(t)?[t,a]:[a,t];s[i]=s[e],n.add(i)}let d=Math.min(...s);return s.map(e=>e-d)}(e),r=e.boxes.map(()=>new Set);for(let{parent:t,child:a}of e.generalizations)r[t].add(a),r[a].add(t);for(let{a:t,b:a}of e.others)r[t].add(a),r[a].add(t);let n=e.boxes.map((e,t)=>t).sort((e,t)=>r[t].size-r[e].size||e-t),d=gM(e,o,i,s,l);for(let t=0;t<40;t+=1){let t=!1;for(let a of n){let n=o[a],c=new Set([n-1,n+1,n+2]);for(let e of r[a])for(let t of[-1,0,1])c.add(o[e]+t);if(0===r[a].size)for(let e of o)c.add(e);c.delete(n);let p=n;for(let t of[...c].sort((e,t)=>e-t)){o[a]=t;let r=gM(e,o,i,s,l);r<d-1e-9&&([p,d]=[t,r])}o[a]=p,p!==n&&(t=!0)}if(!t)break}return a=new Map([...new Set(o)].sort((e,t)=>e-t).map((e,t)=>[e,t])),o.map(e=>a.get(e))}(l,i),r=function(e,t){let a=[...t],i=e.boxes.map(e=>e.width),s=e.boxes.map(()=>!1),l=[],o=[],r=[];for(let n of e.links){let[d,c]=[e.index.get(n.from),e.index.get(n.to)];if(d===c){r.push([d]);continue}let[p,h]=[t[d],t[c]];if(p===h){o.push({a:d,b:c}),r.push([d,c]);continue}let g=Math.sign(h-p),u=[d];for(let e=p+g;e!==h;e+=g){let t=a.length;a.push(e),i.push(4),s.push(!0),u.push(t)}u.push(c);let f=n.generalization?3:1;for(let[e,t]of u.slice(1).entries()){let i=u[e];l.push(a[i]<a[t]?{upper:i,lower:t,weight:f}:{upper:t,lower:i,weight:f})}r.push(u)}return{row:a,width:i,corridor:s,segments:l,flats:o,chains:r}}(l,o),n=new Map,d=(e,t,a)=>{let i=e<t?`${e}:${t}`:`${t}:${e}`;n.set(i,Math.max(n.get(i)??0,a))};for(let[e,t]of a.entries()){let a=r.chains[e],[i,s]=[a[0],a.at(-1)];i!==s&&r.row[i]===r.row[s]&&d(i,s,Math.max(50,t.fromLabel+16)+(t.label>0?t.label+16:0)+Math.max(50,t.toLabel+16))}let c=function(e,t){let a=Array.from({length:Math.max(...e.row)+1},()=>[]);for(let[t,i]of e.row.entries())a[i].push(t);let i=e.row.map(()=>[]);for(let{upper:t,lower:a}of e.segments)i[t].push({other:a,weight:1}),i[a].push({other:t,weight:1});for(let{a:t,b:a}of e.flats)i[t].push({other:a,weight:.5}),i[a].push({other:t,weight:.5});let s=g_(e,t,a),l={rows:a.map(e=>[...e]),crossings:gL(e,a,s)};for(let o=0;o<8&&l.crossings>0;o+=1){let r=[...a.keys()];for(let l of(o%2==1&&r.reverse(),r)){let o=new Map;for(let e of a[l]){let t=0,a=0;for(let{other:l,weight:o}of i[e])t+=o*s[l],a+=o;o.set(e,a>0?t/a:s[e])}a[l]=[...a[l]].sort((e,t)=>o.get(e)-o.get(t)||s[e]-s[t]),s=g_(e,t,a)}let n=gL(e,a,s);n<l.crossings&&(l={rows:a.map(e=>[...e]),crossings:n})}let o=a=(a=l.rows).map(t=>{let a=t=>e.segments.find(e=>e.lower===t)?.upper,i=new Map;for(let e of t){let t=a(e);void 0!==t&&i.set(t,[...i.get(t)??[],e])}let s=t;for(let t of i.values()){let a=t.filter(t=>e.corridor[t]),i=t.filter(t=>!e.corridor[t]);if(0===a.length||i.length<2)continue;let l=[];for(let[e,t]of i.entries()){l.push(t);let s=Math.round(e*a.length/(i.length-1)),o=Math.round((e+1)*a.length/(i.length-1));e<i.length-1&&l.push(...a.slice(s,o))}let o=s.flatMap((e,a)=>t.includes(e)?[a]:[]),r=[...s];for(let[e,t]of o.entries())r[t]=l[e];s=r}return s});a=l.rows,gL(e,o,g_(e,t,o))<=gL(e,a,g_(e,t,a))&&(a=o);let r=gL(e,a,g_(e,t,a));for(let i=r>0,s=0;i&&s<40;s+=1)for(let s of(i=!1,a))for(let l=0;l+1<s.length;l+=1){[s[l],s[l+1]]=[s[l+1],s[l]];let o=gL(e,a,g_(e,t,a));o<r?(r=o,i=!0):[s[l],s[l+1]]=[s[l+1],s[l]]}return a}(r,n);for(let[e,t]of a.entries()){let a=r.chains[e],[i,s]=[a[0],a.at(-1)];if(i===s||r.row[i]!==r.row[s])continue;let l=c[r.row[i]],[o,n]=[l.indexOf(i),l.indexOf(s)],p=l.slice(Math.min(o,n)+1,Math.max(o,n));if(0===p.length||p.some(e=>!r.corridor[e]))continue;let[h,g]=o<n?[i,s]:[s,i],[u,f]=o<n?[t.fromLabel,t.toLabel]:[t.toLabel,t.fromLabel];d(h,p[0],Math.max(50,u+16)),d(p.at(-1),g,Math.max(50,f+16))}let p=e=>Math.max(40,Math.max(e.fromLabel,e.toLabel)+24);for(let[e,t]of a.entries()){if(t.from!==t.to)continue;let a=r.chains[e][0],i=c[r.row[a]],s=i.filter(e=>!r.corridor[e]),l=s.indexOf(a),o=i.indexOf(a),n=p(t)+t.label+56+64;for(let e of[s[l-1],s[l+1],i[o-1],i[o+1]])void 0!==e&&d(a,e,n)}let h=function(e,t,a){let i=g_(e,t,a),s=e.row.map(()=>[]);for(let{upper:t,lower:a,weight:i}of e.segments)s[t].push({other:a,weight:i}),s[a].push({other:t,weight:i});for(let l=0;l<12;l+=1){let o=[...a.keys()];for(let r of(l%2==1&&o.reverse(),o)){let l=a[r];if(0===l.length)continue;let o=[],n=[];for(let t of l){let a=s[t];if(0===a.length){o.push(i[t]),n.push(.05);continue}let l=a.reduce((e,{weight:t})=>e+t,0);o.push(a.reduce((e,{other:t,weight:a})=>e+a*i[t],0)/l),n.push(e.corridor[t]?4:l)}let d=gz(e,t,l),c=gB(o.map((t,a)=>t-e.width[l[a]]/2-d[a]),n);for(let[t,a]of l.entries())i[a]=c[t]+d[t]+e.width[a]/2}}return i.map((t,a)=>{let i=e.width[a]/2;return Math.round(t-i)+i})}(r,n,c),g=e=>e<t.length?t[e]:{id:"",width:4,height:0},u=Math.ceil(24/iP({width:Math.max(...t.map((e,t)=>h[t]+e.width/2))-Math.min(...t.map((e,t)=>h[t]-e.width/2)),height:c.reduce((e,a)=>e+Math.max(0,...a.filter(e=>e<t.length).map(e=>t[e].height))+100+28,0)}))+4,f={port:Math.max(32,u),track:Math.max(28,u),lane:Math.max(20,u)},m=function(e,t,a,i){let s=new Map;for(let e of a)for(let[t,a]of e.entries())s.set(a,t);let l=[],o=new Map,r=(e,t)=>o.set(`${e}:${t}`,(o.get(`${e}:${t}`)??0)+1),n=[],d=(e,t,a,i,s)=>({link:e,end:t,box:a,side:s,at:0,toward:i,loop:!1,slot:0}),c=(e,a,s,l)=>t.segments.filter(({upper:o,lower:r})=>{let n=l?r:o;return t.row[n]===e&&i[n]>a&&i[n]<s}).length;for(let[o]of e.links.entries()){let e=t.chains[o],[p,h]=[e[0],e.at(-1)];if(p===h){n.push([d(o,"source",p,p,"right"),d(o,"target",h,h,"right")]);continue}if(t.row[p]===t.row[h]){let[e,n]=[s.get(p),s.get(h)],g=t.row[p],u=a[g].slice(Math.min(e,n)+1,Math.max(e,n)).some(e=>!t.corridor[e]),f=e<n?["right","left"]:["left","right"];if(u){let[e,t]=[i[p],i[h]].sort((e,t)=>e-t),[a,s]=[c(g,e,t,!0),c(g,e,t,!1)];f=a<s||a===s&&0===g?["top","top"]:["bottom","bottom"]}l.push(d(o,"source",p,h,f[0]),d(o,"target",h,p,f[1])),r(p,f[0]),r(h,f[1]);continue}let g=t.row[p]<t.row[h];l.push(d(o,"source",p,e[1],g?"bottom":"top"),d(o,"target",h,e.at(-2),g?"top":"bottom"))}let p=new Map,h=a.length-1;for(let e of n){let a=e[0].box,i=e=>l.some(t=>t.box===a&&t.side===e),s=["right","left","top","bottom"].filter(e=>!i(e)&&("right"===e||"left"===e||("top"===e?0===t.row[a]:t.row[a]===h)))[0]??((o.get(`${a}:right`)??0)<=(o.get(`${a}:left`)??0)?"right":"left"),r=p.get(`${a}:${s}`)??0;for(let t of(p.set(`${a}:${s}`,r+1),e))t.side=s,t.loop=!0,t.slot=r;l.push(...e)}return l}(l,r,c,h);if(s<2){let l=t.map((e,t)=>{let a=e=>36+Math.max(0,m.filter(a=>a.box===t&&a.side===e).length-1)*f.port,i=Math.ceil(Math.max(e.width,a("top"),a("bottom"))),s=Math.ceil(Math.max(e.height,a("left"),a("right")));return i===e.width&&s===e.height?e:{...e,width:i,height:s}});if(l.some((e,a)=>e!==t[a]))return e(l,a,i,s+1)}let v=()=>(function(e,t,a,i,s,l){let{port:o,lane:r}=l,n=new Map;for(let t of e){let e=`${t.box}:${t.side}`;n.set(e,[...n.get(e)??[],t])}let d=e=>t[e]-a(e).width/2,c=e=>gA(e.side)?a(e.box).width:a(e.box).height,p=e=>{let{end:t,name:a}=i(e);if(!gA(e.side))return 26*(t>0);let s=Math.max(t,e.loop||0===a?0:Math.ceil(a/2)+14);return s>0?s+14:0},h=(e,t)=>{let[a,i]=[p(e),p(t)];return Math.max(o,a>0&&i>0?a+i:Math.max(a,i))},g=e=>{let t=e.slice(1).map((t,a)=>h(e[a],t)),a=c(e[0])-36,i=t.length*o,s=t.reduce((e,t)=>e+t-o,0),l=i+s<=a?t:i<=a?t.map(e=>o+(e-o)*(a-i)/s):t.map(()=>a/t.length),r=[0];for(let e of l)r.push(r.at(-1)+e);return r},u=(t,i)=>{if(gA(t.side))return!1;let s=gS(e,t);return[...a(t.box).dividers??[],...s.loop?[]:a(s.box).dividers??[]].some(e=>8>Math.abs(e-i))},f=t=>{let i=gS(e,t),s=t.loop?a(t.box).height:Math.min(a(t.box).height,a(i.box).height),l=Math.round(s/2);for(let e=0;e<s/2-18;e+=2)for(let a of[l+e,l-e])if(!u(t,a))return a;return l},m=s=>{let l=gS(e,s);if(gA(s.side)&&s.loop){let e=Math.min(2*Math.max(i(s).end,i(l).end)+72+2*s.slot*o,a(s.box).width-36);return a(s.box).width/2+("source"===s.end?-1:1)*e/2}if(gA(s.side))return(l.box!==s.toward||s.loop?t[s.toward]:d(l.box)+l.at)-d(s.box);if(s.loop){let e=Math.min(64+2*s.slot*o,a(s.box).height-36);return f(s)+("source"===s.end?-1:1)*e/2}return l.at};for(let t of e)t.at=gA(t.side)?a(t.box).width/2:f(t);for(let e=0;e<8;e+=1){let e=!1;for(let t of n.values()){let a=c(t[0]),i=t.map(m),s=t.map((e,t)=>t).sort((e,a)=>i[e]-i[a]||t[e].link-t[a].link||("source"===t[e].end?-1:1)),l=g(s.map(e=>t[e])),o=gB(s.map((e,t)=>i[e]-l[t]),s.map(()=>1)),r=l.at(-1)??0;s.forEach((i,s)=>{let n=Math.round(Math.min(Math.max(o[s],18),a-18-r)+l[s]);n!==t[i].at&&(e=!0),t[i].at=n})}if(!e)break}let v=(e,t)=>{let a=n.get(`${e.box}:${e.side}`);return!(t<18||t>c(e)-18||u(e,t))&&a.every(a=>a===e||Math.sign(a.at-e.at)===Math.sign(a.at-t)&&Math.abs(a.at-t)>=Math.min(h(a,e),Math.abs(a.at-e.at))-.5)};for(let t of e){if("source"!==t.end||t.loop||!gA(t.side))continue;let a=gS(e,t);if(a.box!==t.toward||!gA(a.side)||a.side===t.side)continue;let[i,s]=[d(t.box)+t.at,d(a.box)+a.at];!(.5>Math.abs(i-s)||Math.abs(i-s)>72)&&(v(a,Math.round(i-d(a.box)))?a.at=Math.round(i-d(a.box)):v(t,Math.round(s-d(t.box)))&&(t.at=Math.round(s-d(t.box))))}let y=e=>d(e.box)+e.at,w=t=>e.filter(e=>e.link!==t.link&&!e.loop&&e.side===("top"===t.side?"bottom":"top")&&s(e.box)===s(t.box)+("top"===t.side?-1:1)),x=(e,t)=>w(e).every(a=>Math.abs(y(a)-(d(e.box)+t))>=r),b=e=>{for(let t=4;t<=3*o;t+=4){let a=[e.at+t,e.at-t].find(t=>v(e,t)&&x(e,t));if(void 0!==a)return e.at=a,!0}let t=n.get(`${e.box}:${e.side}`),a=c(e);for(let i=4;i<=3*o;i+=4)for(let s of[i,-i])if(t.every(e=>e.at+s>=18&&e.at+s<=a-18&&(x(e,e.at+s)||!x(e,e.at)))&&x(e,e.at+s)){for(let e of t)e.at+=s;return!0}return!1};for(let t of e){if(t.loop||"top"!==t.side)continue;let e=w(t).filter(e=>Math.abs(y(e)-y(t))<r);if(e.length>0&&!b(t))for(let t of e)b(t)}for(let t of e){if(gA(t.side)||!u(t,t.at))continue;let a=gS(e,t),i=!t.loop&&a.at===t.at;for(let e=2;e<=16;e+=2){let s=[t.at+e,t.at-e].find(e=>v(t,e)&&(!i||v(a,e)));if(void 0!==s){t.at=s,i&&(a.at=s);break}}}})(m,h,g,e=>{let t=a[e.link];return{end:"source"===e.end?t.fromLabel:t.toLabel,name:t.label}},e=>r.row[e],f);v();let y=e=>h[e]-g(e).width/2,w=e=>y(e.box)+e.at,x=a.map((e,t)=>["source","target"].map(e=>m.find(a=>a.link===t&&a.end===e)));!function(e,t,a,i,s,l,o){let r=new Map;for(let e of a)for(let[t,a]of e.entries())r.set(a,t);let n=(s,l)=>{let o=a[e.row[s]],n=r.get(s),[d,c]=[o[n-1],o[n+1]],p=e.width[s]/2;return(void 0===d||l-p>=i[d]+e.width[d]/2+gC(e,t,d,s))&&(void 0===c||l+p<=i[c]-e.width[c]/2-gC(e,t,s,c))};for(let[t,a]of e.chains.entries()){let e=a.slice(1,-1);if(0===e.length)continue;let l=s(t).find(t=>e.every(e=>n(e,t)));if(void 0!==l)for(let t of e)i[t]=l}for(let[t,a]of e.chains.entries())for(let s of a.slice(1,-1)){let a=e.row[s],r=e=>l.some(i=>i.link!==t&&(i.row===a-1||i.row===a+1)&&Math.abs(i.x-e)<o.lane);if(r(i[s]))for(let e=4;e<=3*o.port;e+=4){let t=[i[s]+e,i[s]-e].find(e=>n(s,e)&&!r(e));if(void 0!==t){i[s]=t;break}}}}(r,n,c,h,e=>{let[t,a]=x[e];return r.row[t.box]<r.row[a.box]?[w(t),w(a)]:[w(a),w(t)]},m.flatMap(e=>gA(e.side)&&!e.loop?[{link:e.link,row:r.row[e.box],x:w(e)}]:[]),f),r.corridor.some(Boolean)&&v();let b=c.length,k=c.map(e=>Math.max(0,...e.filter(e=>e<t.length).map(e=>t[e].height))),M=new Map,C=(e,t)=>M.set(e,[...M.get(e)??[],t]);for(let[e]of a.entries()){let[t,a]=x[e],i=r.chains[e];if(t.loop||"left"===t.side||"right"===t.side)continue;if(t.side===a.side){let[e,s]=[w(t),w(a)],l=r.row[i[0]],o="top"===t.side;C(o?l-1:l,{ends:[t,a],upper:o?[]:[e,s],lower:o?[e,s]:[],min:Math.min(e,s),max:Math.max(e,s),track:0});continue}let s=r.row[i[0]]<r.row[i.at(-1)]?i:i.toReversed(),[l,o]=s[0]===i[0]?[t,a]:[a,t];for(let[e,t]of s.slice(1).entries()){let a=s[e],i=a===s[0]?w(l):h[a],n=t===s.at(-1)?w(o):h[t];.5>Math.abs(i-n)||C(r.row[a],{ends:[...a===s[0]?[l]:[],...t===s.at(-1)?[o]:[]],upper:[i],lower:[n],min:Math.min(i,n),max:Math.max(i,n),track:0})}}let z=new Map([...M].map(([e,t])=>[e,function(e,t){let a=[...e],i=[];for(;a.length>0;){let e=0,t=1/0;for(let[i,s]of a.entries()){let l=a.reduce((e,t)=>t===s?e:e+gP(s,t),0);l<t&&([e,t]=[i,l])}i.push(a.splice(e,1)[0])}let s=(e,a)=>e.min<a.max+t&&a.min<e.max+t,l=0;for(let[e,t]of i.entries())t.track=Math.max(0,...i.slice(0,e).filter(e=>s(e,t)||gP(t,e)>=1e3).map(e=>e.track+1)),l=Math.max(l,t.track+1);return l}(t,f.track)])),_=new Set;for(let[e,t]of a.entries()){let[a,i]=x[e];if(0===t.label||a.loop||"left"===a.side||"right"===a.side)continue;let[s,l]=[r.row[a.box],r.row[i.box]];if(a.side===i.side)_.add("top"===a.side?s-1:s);else for(let e=Math.min(s,l);e<Math.max(s,l);e+=1)_.add(e)}let L=e=>54*!!_.has(e),B=e=>100+L(e)+Math.max(0,(z.get(e)??0)-1)*f.track,S=[],A=z.has(-1)?B(-1):0;for(let e=0;e<b;e+=1)S.push(A),A+=k[e]+B(e);let P=(e,t)=>(e<0?0:S[e]+k[e])+50+L(e)+t*f.track,V=Math.min(...t.map((e,t)=>y(t))),H=new Map(t.map((e,t)=>[e.id,{x:Math.round(y(t)-V),y:S[r.row[t]],width:e.width,height:e.height}])),q=new Map;for(let[e,a]of M)for(let i of a)for(let a of i.ends){let s=H.get(t[a.box].id),l="bottom"===a.side?s.y+s.height:s.y;q.set(a,Math.abs(P(e,i.track)-l))}for(let e of m){if(!e.loop)continue;let t=m.filter(t=>t.loop&&t.box===e.box&&t.side===e.side&&t.slot<e.slot).reduce((e,t)=>Math.max(e,p(a[t.link])),0);q.set(e,Math.max(p(a[e.link]),t+f.track))}return{boxes:H,anchors:new Map(m.map(e=>{let i=t[e.box],s=gA(e.side)?i.width:i.height,l=q.get(e);return[`${a[e.link].id}:${e.end}`,{side:e.side,offset:e.at-s/2,...void 0===l?{}:{run:l}}]})),rows:new Map(t.map((e,t)=>[e.id,r.row[t]]))}}(s,i,r),n=JSON.stringify([...l.boxes,...l.anchors]);if(o.has(n))continue;o.add(n);let d=function(e,t,a){let i=function(e,t){let a=new Map;for(let i of e.relationships)for(let e of["from","to"]){let s=t.anchors.get(`${i.id}:${"from"===e?"source":"target"}`),l=t.boxes.get(i[e].trim()),o=gq(i,e);if(!s||!l||0===o.length||"left"!==s.side&&"right"!==s.side)continue;let r=Math.max(...o.map(gF))+8,n=l.y+l.height/2+s.offset,d="right"===s.side?l.x+l.width+2:l.x-2-r;for(let[t,s]of[["above",n-10+4-18],["below",n+10-4]])a.set(`${gI}${i.id}:${e}:${t}`,{x:d,y:s,width:r,height:18})}return a}(e,a);return h2({id:e.id,title:e.title,type:"flowchart",nodes:[...e.classes.map(e=>({id:e.id,label:t.get(e.id).name,kind:"class",metadata:{}})),...[...i.keys()].map(e=>({id:e,label:"·",kind:"class",metadata:{}}))],edges:e.relationships.map(e=>({id:e.id,source:e.from.trim(),target:e.to.trim(),metadata:{}})).map((e,t)=>({edge:e,index:t,span:Math.abs((a.rows.get(e.source)??0)-(a.rows.get(e.target)??0))})).sort((e,t)=>Math.min(e.span,2)-Math.min(t.span,2)||e.index-t.index).map(({edge:e})=>e),layout:{direction:"TB",edgeRouting:"orthogonal"},style:e.style,metadata:{}},{placement:new Map([...a.boxes,...i]),anchors:a.anchors,endRun:50})}(e,t,l),c=function(e){let t=e.elements.filter(e=>"arrow"===e.type),a=Math.max(e.width/e.height,e.height/e.width);return hY(t)+iU(t.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:e.width,height:e.height})).length+(a>2.5?4*(a-2.5):0)+t.reduce((e,t)=>e+function(e){let[t,a]=[e.points[0],e.points.at(-1)],i=0;for(let[t,a]of e.points.slice(1).entries())i+=Math.abs(a.x-e.points[t].x)+Math.abs(a.y-e.points[t].y);return Math.max(0,i/(Math.abs(a.x-t.x)+Math.abs(a.y-t.y)+100+200)-1)}(t),0)+3*function(e){let t=e.flatMap(e=>im(e.points).map(t=>({arrow:e.id,segment:t}))),a=0;for(let[e,i]of t.entries())for(let s of t.slice(e+1))s.arrow!==i.arrow&&s.segment.orientation===i.segment.orientation&&10>Math.abs(s.segment.staticCoordinate-i.segment.staticCoordinate)&&Math.min(s.segment.max,i.segment.max)>Math.max(s.segment.min,i.segment.min)&&(a+=1);return a}(t)}(d);if((!a||c<a.cost-.75)&&(a={cost:c,scene:d}),0===c)break}return a.scene}(e,t),i=new Map(a.elements.flatMap(e=>"node"!==e.type||e.nodeId.startsWith(gI)?[]:[[e.nodeId,e]])),s=e.classes.map(a=>(function(e,t,a){let{id:i}=e.node,s=[`class:${i}`],[l,o]=[t.width,t.height],r=(a,o,r,n,d)=>({type:"node",id:`node:${i}${a}`,nodeId:`${i}${a}`,kind:o,rendererRole:"class-box",shape:"rectangle",x:t.x,y:r,width:l,height:n,label:e.name,...d?{fillColor:d,fillStyle:"solid"}:{},groupIds:s}),n=r("","class",t.y,o,a.style.backgroundColor),d=r(":name","class-name",t.y,e.band,"#efe6ec"),c=t.y+e.band+e.attributesHeight,p=r(":methods","class-methods",c,t.y+o-c),h=[{type:"text",id:`label:${i}:name`,containerId:d.id,x:t.x+l/2,y:t.y+e.band/2,text:e.heading,fontSize:16,lineHeight:1.375,maxWidth:l-24,...e.heading!==e.name?{textColor:"#6a4e5c"}:{},groupIds:s}],g=(e,a,l)=>{if(0===a.length)return;let o=22*a.length,r=Math.ceil(Math.max(...a.map(e=>aE(e,14))));h.push({type:"text",id:`text:${i}:${e}`,x:t.x+12+r/2,y:l+6+o/2,text:a.join("\n"),fontSize:14,lineHeight:22/14,maxWidth:r,textAlign:"left",groupIds:s})};return g("attributes",e.attributes,t.y+e.band),g("methods",e.methods,c),{nodes:[n,d,p],texts:h}})(t.get(a.id),i.get(a.id),e)),l=new Map(e.relationships.map(e=>[e.id,e])),o=a.elements.flatMap(e=>{var t;let a;if("arrow"!==e.type)return[];let i=(a=gV[(t=l.get(e.edgeId)).kind],t.navigable&&tR(t.kind)?{...a,to:"arrow"}:a);return[{...e,startArrowhead:i.from,endArrowhead:i.to,..."dashed"===i.stroke?{strokeStyle:"dashed"}:{}}]}),r=function(e,t,a){let i=a.map(e=>({left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})),s=t.flatMap(e=>im(e.points)),l=[],o=e=>i.filter(t=>gO(e,t,3)).length+s.filter(t=>"horizontal"===t.orientation?t.staticCoordinate>e.top-3&&t.staticCoordinate<e.bottom+3&&t.max>e.left-3&&t.min<e.right+3:t.staticCoordinate>e.left-3&&t.staticCoordinate<e.right+3&&t.max>e.top-3&&t.min<e.bottom+3).length+l.filter(t=>gO(e,t,3)).length,r=e=>0===o(e),n=[],d=(e,t,a,i)=>{l.push(a),n.push({type:"text",id:e,x:(a.left+a.right)/2,y:(a.top+a.bottom)/2,text:t,fontSize:13,maxWidth:a.right-a.left,...i?{groupIds:[i]}:{}})},c=new Map(t.map(e=>[e.edgeId,e])),p=(e,t,a,i,s)=>e.slice(0,-1).flatMap((l,o)=>[...function*(e,t,a,i,s,l){let o=Math.hypot(t.x-e.x,t.y-e.y);if(o<1)return;let[r,n]=[(t.x-e.x)/o,(t.y-e.y)/o],d=Math.abs(r)>.5?a:i;for(let t=l;t+d<=Math.max(o,l+d);t+=6){for(let l of s)if(Math.abs(r)>.5){let s=r>0?e.x+t:e.x-t-a,o=l<0?e.y-10+4-i:e.y+10-4;yield{left:s,top:o,right:s+a,bottom:o+i}}else{let s=n>0?e.y+t:e.y-t-i,o=l>0?e.x+10:e.x-10-a;yield{left:o,top:s,right:o+a,bottom:s+i}}if(t+d>=o)break}}(l,e[o+1],t,a,i,0===o?s:6)]),h=(...e)=>p(...e).find(r);for(let t of e.relationships){let e=c.get(t.id);if(e)for(let a of["from","to"]){let i=gq(t,a);if(0===i.length)continue;let s="from"===a?e.points:e.points.toReversed(),o="from"===a?e.sourceNodeId:e.targetNodeId,r=[t["from"===a?"fromMultiplicity":"toMultiplicity"]&&"multiplicity",t["from"===a?"fromRole":"toRole"]&&"role"].filter(e=>"string"==typeof e),n=2===i.length?[[1,-1],[-1,1]]:[[1],[-1]],c=e=>{let t=[];for(let[a,o]of i.entries()){let i=h(s,gF(o),18,e(a),4);if(!i)break;t.push(i),l.push(i)}return l.splice(l.length-t.length,t.length),t.length===i.length?t:void 0};for(let[e,l]of(n.map(e=>c(t=>[e[t]])).find(Boolean)??c(()=>[1,-1])??i.map(e=>p(s,gF(e),18,[1,-1],4)[0])).entries())d(`relationship:${t.id}:${a}:${r[e]}`,i[e],l,`class:${o}`)}}for(let t of e.relationships){let e=c.get(t.id);if(!e||!t.label)continue;let a=e.points.slice(0,-1).map((t,a)=>[t,e.points[a+1]]).reduce((e,t)=>Math.hypot(t[1].x-t[0].x,t[1].y-t[0].y)>Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y)?t:e),i={x:(a[0].x+a[1].x)/2,y:(a[0].y+a[1].y)/2},s=[1,2,3,4,5].map(e=>(function(e,t){let a=e.split(/\s+/u);if(t<=1||a.length<t)return e;let i=(e,t)=>aE(a.slice(e,t).join(" "),13),s=new Map,l=(e,t)=>{if(1===t)return{widest:i(e,a.length),breaks:[]};let o=`${e}:${t}`,r=s.get(o);if(r)return r;let n={widest:1/0,breaks:[]};for(let s=e+1;s<=a.length-t+1;s+=1){let a=l(s,t-1),o=Math.max(i(e,s),a.widest);o<n.widest&&(n={widest:o,breaks:[s,...a.breaks]})}return s.set(o,n),n},o=[0,...l(0,t).breaks,a.length];return o.slice(1).map((e,t)=>a.slice(o[t],e).join(" ")).join("\n")})(t.label.trim(),e)),l=t=>{let[s,l]=[gF(t),18*t.split("\n").length];return[...p([i,a[1]],s,l,[-1,1],0),...p(e.points,s,l,[-1,1],50),...p(e.points,s,l,[-1,1],0)]},n=s.map(e=>({text:e,rect:l(e).find(r)})).find(e=>void 0!==e.rect);if(n){d(`relationship:${t.id}:name`,n.text,n.rect);continue}let h=s.flatMap(e=>l(e).map(t=>({text:e,rect:t,hits:o(t)}))).reduce((e,t)=>t.hits<e.hits?t:e);d(`relationship:${t.id}:name`,h.text,h.rect)}return n}(e,o,[...i.values()]),{elements:n,width:d,height:c}=function(e){let t=e.flatMap(e=>{if("arrow"===e.type||"line"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??0)/2,a=e.text.split("\n").length*e.fontSize*(e.lineHeight??1.35)/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return"frame"===e.type||"node"===e.type?[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]:[]}),[a,i]=[Math.min(...t.map(e=>e.x)),Math.min(...t.map(e=>e.y))],[s,l]=[Math.max(0,48-a),Math.max(0,48-i)].map(Math.ceil);return{elements:e.map(e=>0===s&&0===l?e:"arrow"===e.type?{...e,points:e.points.map(e=>({x:e.x+s,y:e.y+l}))}:"line"===e.type?e:{...e,x:e.x+s,y:e.y+l}),width:Math.max(...t.map(e=>e.x))+s+48,height:Math.max(...t.map(e=>e.y))+l+48}}([...s.flatMap(e=>[...e.nodes,...e.texts]),...o,...r]);return{...a,width:d,height:c,elements:n,zOrder:n.map(e=>e.id)}})(fA(g)),catch:e=>new fR({status:"render_failed",context:{...v,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render class diagram scene.",hint:"Repair the classes and relationships and retry."})]}})}).pipe(o.fRP("codeMode.buildClassDiagram.render")),x=ii(w);if(x.length>0)return yield*new fR({status:"render_failed",context:{...v,issues:mr(x).map(e=>({...e,hint:"Shorten class or member names, or split the model, and retry buildClassDiagram."}))}});let b={...v,partial:mA(w)},k=yield*mH({scene:w,formats:ma(p.options),inlineFormats:mi(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fR({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mS(p.requestId),normalizedSpec:g,quality:m,artifact:k,issues:[]}}),mU=o.fn("codeMode.buildOrgChart.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(oe,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:aL(e.spec)}:e);if(!uY.oJ(d))return yield*new fD({status:"invalid_input",context:{issues:f8(sl(d.failure))}});let c=yield*fm,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.dottedLines.flatMap(e=>me(e.id)??[])),{id:me(t.id)??(f9(i)||"sketchi-org-chart"),title:i,people:t.people.map(e=>({id:se(e.id),name:se(e.name),...l("title",e.title),...l("department",e.department),...l("manager",e.manager),...r("assistant",e.assistant),...r("avatar",e.avatar)})),dottedLines:t.dottedLines.map((e,t)=>({id:me(e.id)??(e=>{let t=e+1;for(;n.has(`dotted-line-${t}`);)t+=1;return n.add(`dotted-line-${t}`),`dotted-line-${t}`})(t),report:se(e.report),manager:se(e.manager),...l("label",e.label)})),...r("groupByDepartment",t.groupByDepartment),...r("forest",t.forest),style:{...y}}),u={buildId:h,...mS(p.requestId),normalizedSpec:g},f=av(fV(g)).map(e=>f0({code:fH[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fD({status:"invalid_org_chart",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.people.length,edgeCount:g.people.filter(e=>void 0!==e.manager).length+g.dottedLines.length},checks:[]},w={...u,quality:m};if(!m.accepted)return yield*new fD({status:"quality_failed",context:{...w,issues:mt(m)}});let x=yield*o.SvU({try:()=>{let e,t,a,i,s,l,o,r,n,d,c,p,h,u,f,m,y,w,x,b,k,M,C;return t=function(e){let t=new Map;if(!0!==e.groupByDepartment)return t;let a=am(e),i=new Map(e.people.map(e=>[e.id,e])),s=(e,l)=>{let o=void 0===e.manager?void 0:i.get(e.manager),r=!l&&void 0!==o&&void 0!==e.department&&e.department!==o.department&&(a.get(e.id)?.length??0)>0;for(let i of(r&&t.set(e.id,e.department),a.get(e.id)??[]))s(i,l||r)};for(let t of af(e))s(t,!1);return t}(e=aw(fV(g))),a=function(e,t){let a=am(e),i=[...new Set(e.people.flatMap(e=>e.department??[]))],s=new Map(e.people.map(e=>[e.id,e])),l=af(e).flatMap(e=>(a.get(e.id)??[]).filter(e=>!0!==e.assistant)),o=e=>n0[e%n0.length],r=t=>{if(i.length>0)return void 0===t.department?e.style.accentColor:o(i.indexOf(t.department));let a=(t=>{let a=t;for(let t=0;t<=e.people.length;t+=1){let e=void 0===a.manager?void 0:s.get(a.manager);if(!e)break;if(void 0===e.manager)return a;a=e}})(t),r=void 0===a?-1:l.indexOf(a);return r<0?e.style.accentColor:o(r)},n=new Map,d=new Map,c=(e,i,s)=>{let l=t.get(e.id)??s;for(let t of(d.set(e.id,i),void 0!==l&&n.set(e.id,l),a.get(e.id)??[]))c(t,i+1,l)};for(let t of af(e))c(t,0,void 0);let p=new Map;for(let t of e.people){let e=void 0===t.manager?void 0:s.get(t.manager),a=void 0!==t.department&&e?.department!==t.department&&n.get(t.id)!==t.department?t.department:void 0,i=[t.title,a].filter(e=>void 0!==e).map(e=>ua(e.trim(),208,13));p.set(t.id,{person:t,depth:d.get(t.id)??0,name:ua(t.name.trim(),208,16),details:i.length>0?i.join("\n"):void 0,color:r(t),avatar:!0===t.avatar,width:0,height:0})}let h=new Map;for(let e of p.values()){let t=h.get(e.depth)??[];t.push(e),h.set(e.depth,t)}for(let e of h.values()){let t=Math.ceil(Math.min(232,Math.max(148,Math.max(...e.map(e=>Math.max(aE(e.name,16),e.details?aE(e.details,13):0,44*!!e.avatar)+24)))));for(let a of e)a.width=t}let g=e=>9+49*!!e.avatar+us(e.name,16)+(e.details?3+us(e.details,13):0)+5+4*!e.details,u=e=>e.details?Math.ceil(13*ui(e.details)*1.35)+18:Math.ceil(16*ui(e.name)*1.35)+18+49*!!e.avatar,f=new Map;for(let e of p.values()){let t=`${e.person.manager??`top:${e.person.id}`}:${!0===e.person.assistant}`;f.set(t,[...f.get(t)??[],e])}for(let e of f.values()){let t=Math.ceil(Math.max(40,...e.map(e=>Math.max(g(e),u(e)))));for(let a of e)a.height=t}return p}(e,t),l=function(e){let t={stackMin:5,twoColumns:5,outline:new Map,rows:new Map},a=g4(e,t),i=1;if(g7(a)>1){let s={...t,stackMin:2},l=g4(e,s);i+=1,g7(l)<g7(a)-1e-9&&([t,a]=[s,l])}let s=new Map,l=[],o=(e,t)=>{for(let a of(s.set(e.id,t),t>=1&&gK(e)&&l.push(e.id),e.reports))o(a,t+1)};for(let t of e)o(t,0);let r=t=>{let s;for(let{policy:a,preference:l}of t){let t=g4(e,a);i+=1;let o={policy:a,block:t,excess:g7(t),preference:l};(!s||(o.excess<=1&&s.excess<=1?o.preference<s.preference-1e-9:o.excess<s.excess-1e-9))&&(s=o)}return s&&s.excess<g7(a)-1e-6?s:void 0};for(let i=0;i<30&&g7(a)>1;i+=1){let i=a.rows,o=t.twoColumns<=8?r([{policy:{...t,twoColumns:9},preference:0}]):void 0;if(o){[t,a]=[o.policy,o.block];continue}let n=(e,t)=>(i.get(t)?.width??0)-(i.get(e)?.width??0)||e.localeCompare(t),d=r([...l.filter(e=>!t.outline.has(e)&&i.has(e)).toSorted(n).slice(0,3).map(e=>({policy:{...t,outline:new Map(t.outline).set(e,2)},preference:-s.get(e)})),...[...t.outline].filter(([,e])=>2===e).map(([e])=>e).slice(0,3).map(e=>({policy:{...t,outline:new Map(t.outline).set(e,1)},preference:1-s.get(e)}))]);if(d){[t,a]=[d.policy,d.block];continue}let c=([,e])=>e.items>e.rows,p=[...i].filter(e=>c(e)&&e[1].widestItem<.6*e[1].width).toSorted(([e,t],[a,i])=>i.width-i.widestItem-(t.width-t.widestItem)||e.localeCompare(a)).slice(0,3),h=[];for(let t of e){let e=t.id;for(;void 0!==e&&i.has(e);)h.push([e,i.get(e)]),e=i.get(e).widest}let g=[...p,...h.filter(c).filter(([e])=>!p.some(([t])=>t===e)).slice(0,3)],u=e=>r(e.map(([e,a])=>({policy:{...t,rows:new Map(t.rows).set(e,a.rows+1)},preference:a.widestItem}))),f=u(g.filter(([e])=>s.get(e)>=1))??u(g.filter(([e])=>0===s.get(e)));if(!f)break;[t,a]=[f.policy,f.block]}for(let s of[...t.rows.keys()].toReversed())for(let l=t.rows.get(s)-1;l>=1;l-=1){let o={...t,rows:new Map(t.rows).set(s,l)},r=g4(e,o);if(i+=1,g7(r)>Math.max(1,g7(a))+1e-9)break;t=o,a=r}let n=gN(g6(a));return{cards:a.cards,links:a.links,regions:a.regions,width:n.x1-n.x0,height:n.y1-n.y0,attempts:i,stackMin:t.stackMin,wraps:new Map([...t.rows].filter(([,e])=>e>1)),outlines:t.outline}}((i=am(e),s=e=>{let l=a.get(e.id),o=t.get(e.id),r=i.get(e.id)??[];return{id:e.id,width:l.width,height:l.height,reports:r.filter(e=>!0!==e.assistant).map(s),assistants:r.filter(e=>!0===e.assistant).map(s),...void 0===o?{}:{region:{label:o,nameWidth:ij(o)}}}},af(e).map(s))),o=e.style.backgroundColor,r=e=>({...e,x:e.x+40,y:e.y+40}),n=new Map([...l.cards].map(([e,t])=>[e,r(t)])),d=l.regions.map(e=>({type:"frame",id:`frame:${e.root}`,name:e.label,...r(e.frame)})),c=new Map(l.regions.flatMap(e=>e.members.map(t=>[t,`frame:${e.root}`]))),p=e.people.map(e=>(function(e,t,a,i){let s,l,o,{person:r}=e,n={groupIds:[`person:${r.id}`],...i?{frameId:i}:{}},d={type:"node",id:`node:${r.id}`,nodeId:r.id,kind:r.assistant?"assistant":"person",shape:"rectangle",...t,label:r.name,strokeColor:e.color,strokeWidth:2,fillColor:ut(e.color,a,.13),fillStyle:"solid",...n},c=[d],p=[],h=t.x+t.width/2,g=t.width-24;if(e.avatar&&c.push({type:"node",id:`node:${r.id}:avatar`,nodeId:`${r.id}:avatar`,kind:"avatar",shape:"ellipse",x:h-22,y:t.y+9,width:44,height:44,label:(l=(s=r.name.trim().split(/\s+/u).filter(e=>/[\p{L}\p{N}]/u.test(e))).length>2&&/^(dr|mr|mrs|ms|mx|prof|sir|dame)\.?$/iu.test(s[0])?s.slice(1):s,o=e=>{let t=[...new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e??"")].map(e=>e.segment).find(e=>/[\p{L}\p{N}]/u.test(e));return t?.toLocaleUpperCase()??""},0===l.length?"?":1===l.length?o(l[0])||"?":`${o(l[0])}${o(l.at(-1))}`),strokeColor:e.color,strokeWidth:1,fillColor:ut(e.color,a,.32),fillStyle:"solid",...n}),e.details){let a=us(e.details,13),i=t.y+t.height-5-a;p.push({type:"text",id:`label:${r.id}`,containerId:d.id,x:h,y:i+a/2,text:e.details,fontSize:13,lineHeight:1.25,maxWidth:g,verticalAlign:"bottom",textColor:"#5f574c",...n});let s=us(e.name,16);p.push({type:"text",id:`text:${r.id}:name`,x:h,y:i-3-s/2,text:e.name,fontSize:16,lineHeight:1.25,maxWidth:Math.ceil(aE(e.name,16)),textColor:v.ink,...n})}else{let a=us(e.name,16),i=e.avatar;p.push({type:"text",id:`label:${r.id}`,containerId:d.id,x:h,y:i?t.y+t.height-5-a/2:t.y+t.height/2,text:e.name,fontSize:16,lineHeight:1.25,maxWidth:g,...i?{verticalAlign:"bottom"}:{},textColor:v.ink,...n})}return{nodes:c,texts:p}})(a.get(e.id),n.get(e.id),o,c.get(e.id))),h=l.links.map(e=>{let t=e.points.map(e=>({x:e.x+40,y:e.y+40})),a=void 0!==c.get(e.manager)&&c.get(e.manager)===c.get(e.report)?c.get(e.report):void 0;return{type:"arrow",id:`edge:${e.report}`,edgeId:e.report,sourceNodeId:e.manager,targetNodeId:e.report,points:t,startArrowhead:null,endArrowhead:null,strokeColor:"#857b6f",strokeWidth:2,roughness:0,...a?{frameId:a}:{}}}),f=0===(u=up(e,n,d,c,h,!0)).straight?u:[up(e,n,d,c,h,!1)].find(e=>e.straight<u.straight)??u,y=(m=[...d,...h,...f.arrows,...p.flatMap(e=>e.nodes),...p.flatMap(e=>e.texts),...f.labels]).flatMap(e=>{if("arrow"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??0)/2,a=ui(e.text)*e.fontSize*1.25/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return"node"===e.type||"frame"===e.type?[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]:[]}),w=d.map(e=>iN(e).y),x=Math.min(...y.map(e=>e.x)),b=Math.min(...y.map(e=>e.y),...w),k=Math.max(0,Math.ceil(40-x)),M=Math.max(0,Math.ceil(40-b)),C=0===k&&0===M?m:m.map(e=>"arrow"===e.type?{...e,points:e.points.map(e=>({x:e.x+k,y:e.y+M}))}:"line"===e.type?e:{...e,x:e.x+k,y:e.y+M}),{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:Math.ceil(Math.max(...y.map(e=>e.x))+k+40),height:Math.ceil(Math.max(...y.map(e=>e.y))+M+40),accentColor:e.style.accentColor,backgroundColor:o,elements:C,layers:[],layouts:[],zOrder:C.map(e=>e.id)}},catch:e=>new fD({status:"render_failed",context:{...w,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render org chart scene.",hint:"Repair the people and reporting lines and retry."})]}})}).pipe(o.fRP("codeMode.buildOrgChart.render")),b=ii(x);if(b.length>0)return yield*new fD({status:"render_failed",context:{...w,issues:mr(b).map(e=>({...e,hint:"Shorten names or titles, or split the chart by division, and retry buildOrgChart."}))}});let k={...w,partial:mA(x)},M=yield*mH({scene:x,formats:ma(p.options),inlineFormats:mi(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fD({status:e.status,context:{..."export_failed"===e.status?k:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mS(p.requestId),normalizedSpec:g,quality:m,artifact:M,issues:[]}}),mX=o.fn("codeMode.buildTimeline.workflow")(function*(e){var t,a;let i,l,r=s.q$Z(l1,{errors:"all",reportInput:!0})(e);if(!uY.oJ(r))return yield*new fZ({status:"invalid_input",context:{issues:f8(sl(r.failure))}});let n=yield*fm,d=r.success,c=yield*o.OH5(()=>n.createId("build")),p=(i=se((t=d.spec).title),{id:(l={id:me(t.id)??(f9(i)||"sketchi-timeline"),title:i,type:"timeline",style:{...y},events:t.events.map(e=>({...e}))}).id,title:i,events:eh(l),...t.lanes?{lanes:[...t.lanes]}:{},...t.today?{today:t.today}:{},style:l.style}),h={buildId:c,...mS(d.requestId),normalizedSpec:p},g=en(fw(p)).map(e=>f0({code:e.code,stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(g.length>0)return yield*new fZ({status:"invalid_timeline",context:{...h,issues:g}});let u={accepted:10>=(a=d.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:p.events.length,edgeCount:0},checks:[]},f={...h,quality:u};if(!u.accepted)return yield*new fZ({status:"quality_failed",context:{...f,issues:mt(u)}});let m=yield*o.SvU({try:()=>(function(e){let t,a,i=ec(e),s=eh(i),l=dG(i),o=er(i),r=(o.length?o:[""]).map((e,t)=>{let a=cf[t%cf.length];return{...a,stroke:a.stroke||i.style.accentColor}}),n=s[0]?.date!==void 0,d=[],c=e=>{let t=d.findIndex(t=>t.time===e.time&&t.tie===e.tie);return t>=0?t:(d.push(e),d.length-1)},p=void 0===i.today?void 0:el(i.today),h=new Map,g=new Map,u=[!1,!0].flatMap(e=>s.flatMap((t,a)=>{let i,s,l=void 0!==t.end;if(l!==e)return[];let o=n?el(t.date):void 0,r=void 0===t.end?void 0:el(t.end),d=o?o.start:t.order??a,u=t.lane??"",f=r?(d+r.end)/2:d,m=p&&r&&p.start>d&&p.start<r.end,v=r&&(m||h.has(`${u}\0${f}`))?function(e,t,a){let i=[e,...a.filter(a=>a>e&&a<t),t].toSorted((e,t)=>e-t),s={from:e,to:e};for(let[e,t]of i.slice(1).entries())t-i[e]>s.to-s.from&&(s={from:i[e],to:t});return(s.from+s.to)/2}(d,r.end,[...g.get(u)??[],...m?[p.start]:[]]):f,y=c({time:v,tie:(i=`${u}\0${v}`,s=h.get(i)??0,h.set(i,s+1),g.set(u,[...g.get(u)??[],v]),s)});return[{event:t,index:a,span:l,start:l?c({time:d,tie:0}):y,end:r?c({time:r.end,tie:0}):void 0,stem:y}]})).toSorted((e,t)=>e.index-t.index),f=p?c({time:p.start,tie:0}):void 0,m=d.map((e,t)=>({anchor:e,key:t})).toSorted((e,t)=>e.anchor.time-t.anchor.time||e.anchor.tie-t.anchor.tie),y=new Map(m.map((e,t)=>[e.key,t])),w=m.map(e=>e.anchor),x=u.map(e=>{let t=r[e.event.lane?o.indexOf(e.event.lane):0],a=`event:${e.event.id}`,i=l.events.get(e.event.id),s=[...i?[cm(`date:${a}`,i,14,t.ink)]:[],cm(`label:${a}`,e.event.label,16,v.ink),...e.event.description?[cm(`description:${a}`,e.event.description,13,cg)]:[]];return{event:e.event,index:e.index,lane:e.event.lane?o.indexOf(e.event.lane):0,span:e.span,startKey:y.get(e.start),endKey:y.get(e.end??e.start),stemKey:y.get(e.stem),inset:Math.max(10,(i?s[0].width:0)/2-12),parts:s,width:Math.max(...s.map(e=>e.width)),height:s.reduce((e,t)=>e+t.height,0)+2*(s.length-1)}}),b=void 0===f?void 0:y.get(f),k=Math.min(128,Math.max(72,Math.round((a=Math.floor((t=x.map(e=>e.width).toSorted((e,t)=>e-t)).length/2),((t.length%2?t[a]:(t[a-1]+t[a])/2)+16)/2+8)))),M=1.5*k,C=e=>x.some(t=>t.span&&t.startKey<=e&&t.endKey>e),z=w.slice(1).map((e,t)=>e.time-w[t].time),_=new Map,L=e=>{let t=_.get(e);if(!t){var a;let i,s,l,o=(a=z[e],i=(e,t)=>`${e} ${t}${1===e?"":"s"}`,s=e=>i(Math.max(1,Math.round(a/dR[e])),e),l=e=>{let t=a/dR[e];return i(t<10?Math.round(10*t)/10:Math.round(t),e)},a<1e3?s("millisecond"):a<12e4?l("second"):a<72e5?s("minute"):a<1728e5?s("hour"):a<5184e6?s("day"):a<63113904e3?s("month"):l("year"));t={text:o,half:aO(o,13,200)/2+6},_.set(e,t)}return t},B=[...new Set(x.flatMap(e=>[e.startKey,e.endKey]).map(e=>w.findIndex(t=>t.time===w[e].time)))].toSorted((e,t)=>e-t),S=e=>{let t=new Set(e);if(!n)return{x:w.map((e,t)=>t*k),breaks:t};if(w.length<2)return{x:w.map(()=>0),breaks:t};let a=z.reduce((e,t)=>e+t,0),i=x.length*k,s=10*k,l=a>0?i/a:0,o=[...r.flatMap((e,t)=>x.filter(e=>e.lane===t).toSorted((e,t)=>e.stemKey-t.stemKey).flatMap((e,t,a)=>{let i=a[t-1];return i&&i.stemKey!==e.stemKey?[{from:i.stemKey,to:e.stemKey,min:Math.max(28,e.inset+ch+1)}]:[]})),...x.filter(e=>e.span).map(e=>({from:e.startKey,to:e.endKey,min:12}))].filter(e=>e.to>e.from),d=Math.max(28,...o.map(e=>e.min)),c=(e,a)=>{let i=[0],s=0,l=0;return z.forEach((o,r)=>{let n=w[r+1];n.tie>0?i.push(s+n.tie*d):(s=t.has(r)?a?Math.max(s+a.get(r),l+Math.max(M,2*(L(r).half+3+16))):l+M:s+o*e,i.push(s)),l=Math.max(l,i[r+1])}),i},p=()=>{let[e,t]=[c(0),c(1)];return o.map(({from:a,to:i,min:s})=>{let l=e[i]-e[a];return{from:a,to:i,min:s,fixed:l,perScale:t[i]-e[i]-(t[a]-e[a])}})},h=Math.max(0,...x.filter(e=>e.span).map(e=>w[e.endKey].time-w[e.startKey].time)),g=h>0?Math.max(l,2*s/h):1/0,u=l;for(;;){let e=z.reduce((e,a,i)=>e+(t.has(i)?0:a),0),a=t.size&&e>0?Math.min(2*l,Math.max(l,(i-t.size*M)/e)):l,o=p();u=Math.min(Math.max(a,...o.map(({min:e,fixed:t,perScale:a})=>a>0&&t<e?(e-t)/a:0)),g);let r=t.size?2*M:s,n=z.flatMap((e,a)=>t.has(a)||!(e*u>r)||C(a)?[]:[a]);for(let{from:e,to:a,min:i,fixed:s,perScale:l}of o)if(s+l*u<i-1e-6){let i=z.map((e,t)=>({gap:e,key:t})).slice(e,a).filter(({gap:e,key:a})=>e>0&&!t.has(a)).toSorted((e,t)=>t.gap-e.gap||e.key-t.key)[0];i&&n.push(i.key)}if(!n.length)break;for(let e of n)t.add(e)}if(!t.size)return{x:c(u),breaks:t};let f=Math.max(M,...z.map((e,a)=>t.has(a)||C(a)?0:e*u)),m=[...t].filter(e=>z[e]*u>=M),v=Math.min(...m.map(e=>z[e])),y=Math.log2(Math.max(...m.map(e=>z[e]))/v),b=Math.min(.5,y>0?1/y:1/0),_=new Map([...t].map(e=>[e,f*(1+b*Math.log2(Math.max(1,z[e]/v)))])),S=c(u,_),A=new Set(m),P=B.slice(1).flatMap((e,a)=>{let i=B[a],s=z.slice(i,e).map((e,t)=>i+t),l=s.filter(e=>A.has(e)).at(-1);return void 0===l&&s.some(e=>t.has(e))?[]:[{from:i,to:e,elapsed:w[e].time-w[i].time,broken:l}]}),V=e=>S[e.to]-S[e.from];for(let e of P.toSorted((e,t)=>e.elapsed-t.elapsed)){if(void 0===e.broken)continue;let{elapsed:t}=e,a=Math.max(...P.map(e=>1.5*e.elapsed<=t?V(e)+12:e.elapsed<t?V(e):0)),i=Math.min(...P.map(e=>void 0!==e.broken?1/0:e.elapsed>=1.5*t?V(e)-12:e.elapsed>t?V(e):1/0)),s=Math.min(Math.max(V(e),a),i);if(1e-9>Math.abs(s-V(e)))continue;let l=e.broken,o=w.findIndex(e=>e.time===w[l].time);_.set(l,S[l+1]-S[o]+s-V(e)),S=c(u,_)}return{x:S,breaks:t}},A=({x:e,breaks:t})=>{let a=e.map((t,a)=>Math.max(...e.slice(0,a+1))),i=e.map((t,a)=>Math.min(...e.slice(a))),s=t=>(a[t]+e[t+1])/2,l=w.slice(0,-1).flatMap((e,l)=>{if(C(l))return[];let o=i[l+1]-14;if(t.has(l)){let e=s(l)+L(l).half+3+7;return[{key:l,low:e,high:Math.max(e,o),broken:!0}]}let r=a[l]+14;return r<=o?[{key:l,low:r,high:o,broken:!1}]:[]}),r=new Set(x.flatMap(t=>{if(!t.span)return[];let a=e[t.startKey]+Math.max(12,e[t.endKey]-e[t.startKey]);return x.some(i=>!i.span&&i.lane===t.lane&&(i.startKey<t.startKey||i.startKey>=t.endKey)&&e[i.startKey]+cy(i)>e[t.startKey]&&e[i.startKey]-cy(i)<a)?[t.lane]:[]}));return{x:e,breaks:t,reachBefore:a,rowsFor:t=>{let a=e[e.length-1],i=[],s=0,o=-24;for(let e=1;e<t;e+=1){let r=a*e/t,n=l.filter(e=>e.key>=s).map(e=>{let t=Math.min(e.high,Math.max(e.low,r));return{cut:e,at:t,cost:Math.abs(t-r)-(e.broken?k:0)-Math.min(e.high-e.low,2*k)/4}}).toSorted((e,t)=>e.cost-t.cost||e.cut.key-t.cut.key)[0];if(!n)break;i.push({first:s,last:n.cut.key,start:o,end:n.at}),s=n.cut.key+1,o=n.at}return i.push({first:s,last:w.length-1,start:o,end:Math.max(...e)+24}),i},layout:(t,a=cp)=>{let i=Math.max(1,o.length);return t.map((t,l)=>{let o=t.start-32*(l>0),n=t=>e[t]-o,d=void 0!==b&&b>=t.first&&b<=t.last?n(b):void 0,c=Array.from({length:i},(e,i)=>(function(e,t,a,i,s=cp){let l;for(let o of cv){let r=function(e,t,a,i,s,l=cp){let o=[],r=new Map;for(let t of e.filter(e=>e.span).toSorted((e,t)=>e.startKey-t.startKey)){let e=o.findIndex((e,a)=>a>=i&&e<=t.startKey);for(e<0&&(e=Math.max(i,o.length));o.length<e;)o.push(-1/0);o[e]=t.endKey,r.set(t,e)}let n=o.length,d=l+16*Math.max(0,n-1),c=e=>t(e.stemKey),p=e.toSorted((e,t)=>c(t)-c(e)||t.index-e.index),h={"-1":[],1:[]},g={"-1":[],1:[]},u=[],f=(e,t,a=ch)=>t>e.left-a&&t<e.right+a,m=-1;p.forEach((e,t)=>{let i=c(e),o=p.slice(t+1).map(c),n=s.lookahead?p[t+2]:void 0,v=(e,t,a)=>{if(!n||t>a)return 0;let i=c(n);return i+10+16>e?1e3:Math.max(0,i+n.width/2+16-e)/2},y=i-e.width+e.inset,w=i-e.inset,x=(r.get(e)??0)>0,b=x?1:m,k=e=>e.option.near-(e.side===b?x?120:1:0),M=t=>[b,-b].flatMap(r=>{let p=((t,r)=>{let p=t<0?l:d,u=h[t],m=h[-t],x=[...g[t],...r&&void 0!==a&&Math.abs(a-i)>=14?[{x:a,reach:1/0}]:[]],b=[p,...u.map(e=>e.far+10)].filter(e=>e>=p).toSorted((e,t)=>e-t),k=i-e.width/2,M=[k,y,w,...u.flatMap(t=>[t.right+16,t.left-16-e.width]),...[...x,...o.map(e=>({x:e,reach:0}))].flatMap(t=>{let a=1/0===t.reach?3*ch:ch;return[t.x+a,t.x-a-e.width]}),...n?[c(n)+10+16,c(n)+n.width/2+16]:[]].map(e=>Math.min(w,Math.max(y,e)));for(let t of b){let a=t+e.height,l=a=>Math.abs(a-k)+v(a,t,p)+s.coverPenalty*o.slice(1).filter(t=>f({left:a,right:a+e.width},t)).length;for(let s of M.toSorted((e,t)=>l(e)-l(t)||e-t)){let l=s+e.width,r={left:s,right:l};if(u.every(e=>s>=e.right+16||e.left>=l+16||t>=e.far+10||e.near>=a+10)&&u.every(e=>!f(e,i)||e.near>t)&&x.every(e=>!f(r,e.x,1/0===e.reach?3*ch:ch)||e.reach<=t)&&o.every(e=>!f(r,e)||m.every(t=>!f(t,e))))return{near:t,left:s}}}})(r,t);return p?[{side:r,option:p}]:[]}).toSorted((e,t)=>k(e)-k(t))[0],C=M(!0)??M(!1);if(!C)throw Error(`Timeline label for "${e.event.id}" has no clear placement.`);let{side:z,option:_}=C,{near:L,left:B}=_;h[z].push({left:B,right:B+e.width,near:L,far:L+e.height}),g[z].push({x:i,reach:L});let S=r.get(e)??0,A=16*S;u.push({item:e,stemX:i,side:z,near:L,left:B,stemStart:z>0?A+cy(e):cy(e)-A,track:S}),m=-z});let v=(e,t)=>Math.max(t,...h[e].map(e=>e.far));return{placements:u,above:v(-1,15),below:v(1,Math.max(9,d-l+6)+6),tracks:n}}(e,t,a,i,o,s);(!l||r.above+r.below<l.above+l.below)&&(l=r)}return l})(x.filter(e=>e.lane===i&&e.startKey>=t.first&&e.startKey<=t.last),n,d,+!!r.has(i),a));return{row:t,localX:n,breakX:e=>s(e)-o,todayX:d,lanes:c,axisStart:t.start-o,axisEnd:t.end-o}})}}},P=o.length?Math.max(...o.map(e=>aO(e,15,160)))+20:0,V=l.header,H=l.today,q=(e,t,a=cp)=>{var i;let s,l,n,d,c,p,h,g,u,f,m=e.rowsFor(t);if(m.length<t)return;let v=e.layout(m,a),y=(i=e.breaks,s=[],l=[],n=[],d=[],c=(e,t)=>{s.push(e),t.push(e.id)},p=(e,t,a={})=>({type:"line",id:e,points:t,...a}),h=(e,t,a,i,s,l,o={})=>({type:"text",id:e,x:a,y:i,text:t,fontSize:s,maxWidth:200,textColor:l,...o}),g=V?Math.ceil(14*1.35):0,u=18*!!H,f=V?g+18:0,v.forEach((e,t)=>{let a=f,s=void 0!==e.todayX;s&&(f+=u+6);let g=t<v.length-1,m=t>0;if(e.lanes.forEach((a,s)=>{let u=r[s],v=f+a.above,y=`${s}:${t}`,w={strokeColor:u.stroke,strokeWidth:2,roughness:0},x=[...i].toSorted((e,t)=>e-t).filter(t=>t>=e.row.first&&t<=e.row.last).map(t=>({x:P+e.breakX(t),...L(t)})),b=[P+e.axisStart,...x.flatMap(e=>[e.x-e.half,e.x+e.half]),P+e.axisEnd];for(let e=0;e<b.length;e+=2)b[e+1]>b[e]&&c(p(`axis:${y}${e?`:${e/2}`:""}`,[{x:b[e],y:v},{x:b[e+1],y:v}],w),l);for(let t of(x.forEach((e,t)=>{for(let a of[-1,1])c(p(`break:${y}:${t}:${a<0?"a":"b"}`,[{x:e.x+a*e.half-3,y:v+7},{x:e.x+a*e.half+3,y:v-7}],w),d);c(h(`break-label:${y}:${t}`,e.text,e.x,v,13,u.ink),d)}),m&&c(p(`continue-in:${y}`,[{x:P,y:v},{x:P+32,y:v}],{...w,strokeStyle:"dashed"}),l),g&&c(p(`continue-out:${y}`,[{x:P+e.axisEnd,y:v},{x:P+e.axisEnd+32,y:v}],{...w,strokeStyle:"dashed",endArrowhead:"arrow"}),l),o.length&&c(h(`lane:${y}`,o[s],P-16-aO(o[s],15,160)/2,v,15,u.ink,{maxWidth:160,textAlign:"right"}),d),a.placements)){let{item:a}=t,i=`event:${a.event.id}`,s={groupIds:[i]},o=v+16*t.track,r=P+t.stemX;if(a.span){let t=P+e.localX(a.startKey);c({type:"node",id:`node:${i}`,nodeId:i,rendererRole:cc,shape:"rectangle",x:t,y:o-6,width:Math.max(12,P+e.localX(a.endKey)-t),height:12,label:a.event.label,fillColor:u.wash,strokeColor:u.stroke,...s},n)}else{let e="milestone"===a.event.kind,t=e?18:12;c({type:"node",id:`node:${i}`,nodeId:i,rendererRole:cc,shape:e?"diamond":"ellipse",x:r-t/2,y:v-t/2,width:t,height:t,label:a.event.label,fillColor:u.stroke,strokeColor:u.stroke,...s},d)}let g=v+t.side*t.near;c(p(`stem:${i}`,[{x:r,y:v+t.side*t.stemStart},{x:r,y:g}],{strokeColor:"#b9ad95",strokeWidth:1,roughness:0,...s}),l);let f=P+t.left,m=t.side<0?g-a.height:g;for(let e of a.parts){let t=aO(e.text,e.fontSize,200),i=Math.min(Math.max(r,f+t/2),f+a.width-t/2),l=i===r?"center":i<r?"right":"left";c(h(e.id,e.text,i,m+e.height/2,e.fontSize,e.color,{textAlign:l,...s}),d),m+=e.height+2}}f=v+a.below+28*(s<e.lanes.length-1)}),s){let i=P+e.todayX;c(p(`today:${t}`,[{x:i,y:a+u+3},{x:i,y:f}],{strokeColor:cu,strokeWidth:1,strokeStyle:"dashed",roughness:0}),l),c(h(`today-label:${t}`,H,i,a+u/2,13,cu),d)}f+=48}),f-=48,V&&c(h("header",V,aO(V,14,400)/2,g/2,14,cg,{maxWidth:400,textAlign:"left"}),d),{elements:s,zOrder:[...l,...n,...d],height:f}),w=(e=>{let t=1/0,a=-1/0,i=1/0,s=-1/0,l=(e,l,o,r)=>{t=Math.min(t,e),a=Math.max(a,o),i=Math.min(i,l),s=Math.max(s,r)};for(let t of e)if("line"===t.type||"arrow"===t.type)for(let e of t.points)l(e.x,e.y,e.x,e.y);else if("text"===t.type){let e=aO(t.text,t.fontSize,t.maxWidth??200),a=t.text.split("\n").length*t.fontSize*1.35;l(t.x-e/2,t.y-a/2,t.x+e/2,t.y+a/2)}else("node"===t.type||"frame"===t.type)&&l(t.x,t.y,t.x+t.width,t.y+t.height);return{minX:t,maxX:a,minY:i,maxY:s}})(y.elements),x=Math.abs(Math.log((w.maxX-w.minX+80)/(w.maxY-w.minY+80)/2))+.3*(t-1);return{count:t,composed:y,box:w,score:x,labeled:v.flatMap(({lanes:e})=>e).reduce((e,{placements:t})=>e+ +!!t.some(({side:e})=>e<0)+ +!!t.some(({side:e})=>e>0),0)}},F=e=>e.reduce((e,t)=>!e||t.score<e.score-1e-9?t:e,void 0),I=({box:e})=>(e.maxX-e.minX+40)/(e.maxY-e.minY+40),E=({x:e,breaks:t,reachBefore:a})=>z.map((t,i)=>({gap:t,key:i,free:e[i+1]-a[i]})).filter(({gap:e,key:a,free:i})=>e>0&&!t.has(a)&&!C(a)&&i>=2*M).toSorted((e,t)=>t.free-e.free||e.key-t.key)[0],O=Math.max(1,Math.min(12,Math.ceil(x.length/2))),U=A(S(new Set)),X=[];for(let e=1;e<=O;e+=1){let t=q(U,e);if(!t)break;X.push(t)}let T=F(X),$=U;if(n&&1===T.count&&I(T)>3.5){let e=new Set,t=T;for(let a=E($);a&&I(t)>3.5;a=E($))e.add(a.key),t=q($=A(S(e)),1);(T=3.5>=I(t)?t:F(X.slice(1))??t)!==t&&($=U)}if(1===T.count&&I(T)>2.3){let e=Math.floor((140-cp)/6),t=new Map([[0,T]]),a=e=>{let a=t.get(e);if(a)return a;let i=q($,1,cp+6*e);return t.set(e,i),i},i=e=>2.3>=I(a(e)),s=T.box.maxX-T.box.minX,l=6*T.labeled,o=(s+40)/2.3-40-(({box:e})=>e.maxY-e.minY)(T),r=l>0?Math.min(e,Math.max(1,Math.ceil(o/l))):e;if(i(r))for(;r>1&&i(r-1);)r-=1;else for(;r<e&&!i(r);)r+=1;T=a(r)}let{composed:Y,box:G}=T,R=40-G.minX,D=40-G.minY,Z=Y.elements.map(e=>{if("line"===e.type||"arrow"===e.type){let[t,...a]=e.points.map(e=>({x:e.x+R,y:e.y+D}));return"line"===e.type?{...e,points:[t,a[0],...a.slice(1)]}:{...e,points:[t,...a]}}return{...e,x:e.x+R,y:e.y+D}});return{kind:"canvas",version:1,diagramId:i.id,title:i.title,width:Math.ceil(G.maxX-G.minX+80),height:Math.ceil(G.maxY-G.minY+80),accentColor:i.style.accentColor,backgroundColor:i.style.backgroundColor,elements:Z,layers:[],layouts:[],zOrder:Y.zOrder}})(fw(p)),catch:e=>new fZ({status:"render_failed",context:{...f,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:p.id},message:e instanceof Error?e.message:"Unable to render timeline scene.",hint:"Repair the event dates and ordering and retry."})]}})}).pipe(o.fRP("codeMode.buildTimeline.render")),w=ii(m);if(w.length>0)return yield*new fZ({status:"render_failed",context:{...f,issues:mr(w).map(e=>({...e,hint:"Split the chronology into smaller timelines and retry buildTimeline."}))}});let x={...f,partial:mA(m)},b=yield*mH({scene:m,formats:ma(d.options),inlineFormats:mi(d.options),...d.requestId?{requestId:d.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fZ({status:e.status,context:{..."export_failed"===e.status?x:f,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:c,...mS(d.requestId),normalizedSpec:p,quality:u,artifact:b,issues:[]}}),mT=o.fn("codeMode.buildChart.workflow")(function*(e){var t,a;let i,l,r,n,d,c=s.q$Z(l0,{errors:"all",reportInput:!0})(e);if(!uY.oJ(c))return yield*new fj({status:"invalid_input",context:{issues:f8(sl(c.failure))}});let p=yield*fm,h=c.success,g=yield*o.OH5(()=>p.createId("build")),u=(i=se((t=h.spec).title),r=(l=e=>{let t=me(e);return void 0===t?void 0:t})(t.unit),n=l(t.categoryAxisTitle),d=l(t.valueAxisTitle),{id:me(t.id)??(f9(i)||"sketchi-chart"),title:i,kind:t.kind,categories:t.categories.map(se),series:t.series.map(e=>{let t=l(e.name);return{...t?{name:t}:{},values:[...e.values]}}),...r?{unit:r}:{},...n?{categoryAxisTitle:n}:{},...d?{valueAxisTitle:d}:{},...void 0!==t.stacked?{stacked:t.stacked}:{},...void 0!==t.donut?{donut:t.donut}:{},...t.orientation?{orientation:t.orientation}:{},style:{...y}}),f={buildId:g,...mS(h.requestId),normalizedSpec:u},m=N(fx(u)).map(e=>f0({code:e.code,stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(m.length>0)return yield*new fj({status:"invalid_chart",context:{...f,issues:m}});let v={accepted:10>=(a=h.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:u.categories.length*u.series.length,edgeCount:0},checks:[]},w={...f,quality:v};if(!v.accepted)return yield*new fj({status:"quality_failed",context:{...w,issues:mt(v)}});let x=yield*o.SvU({try:()=>(function(e){let t=J(e),a=new dn(t.style.backgroundColor);if("pie"===t.kind)!function(e,t){let a=t.series[0].values,i=nG(t.unit),s=dr(a.length,!0),{labels:l,shares:o}=function(e){let t=e.reduce((e,t)=>e+t,0),a=e.map(e=>t>0?e/t*100:0),i=e=>a.map(t=>Math.round(t*10**e)/10**e),s=t=>e.some((a,i)=>a>0&&0===t[i]||e.some((e,s)=>s>i&&e!==a&&t[s]===t[i])),l=+!!a.some(e=>e>0&&e<10);for(;l<2&&s(i(l));)l+=1;let o=i(l);return{shares:a,decimals:l,labels:o.map((t,a)=>0===t&&e[a]>0?`<${(10**-l).toFixed(l)}%`:`${Number(t.toFixed(l))}%`)}}(a),r=t.unit?.trim()==="%",n=87*!!t.donut,d=-Math.PI/2,c=a.map((e,t)=>{let a=o[t]/100*2*Math.PI,i={index:t,start:d,end:d+a,mid:d+a/2};return d+=a,i}),p=[];for(let o of c){let d=s[o.index],c=t.categories[o.index],h=nJ(a[o.index],i),g=l[o.index],u={groupIds:[`chart:slice:${o.index}`]},f=o.end-o.start;if(f>.0035){let t=f>=2*Math.PI-1e-9,a=dv(150,o.start,t?o.end-1e-4:o.end),i=n>0?[...a,...dv(n,t?o.end-1e-4:o.end,o.start)]:t?a:[{x:0,y:0},...a];e.polygon(`chart:slice:${o.index}`,i,`${c}: ${g} (${h})`,{fillColor:d,strokeColor:e.surface,strokeWidth:2,...u})}let m=r&&g===h?g:`${g} \xb7 ${h}`,v=n8(`${aT(c,110,14)}
|
|
237
|
+
${t}}`),i},ey="~effect/Fiber",ew={_A:v.D_,_E:v.D_},ex={id:0},eb=(()=>{try{return globalThis.process?.getBuiltinModule?.("node:async_hooks")?.AsyncResource}catch{return}})(),ek=()=>void 0===eb?void 0:new eb("effect/Fiber"),eM=()=>globalThis[B.fL];class eC{constructor(e,t=!0){this.setContext(e),this.id=++ex.id,this.currentOpCount=0,this.interruptible=t,this._stack=[],this._observers=void 0,this._exit=void 0,this._children=void 0,this._interruptedCause=void 0,this._yielded=void 0,this._running=!1,this._deferredInterrupt=!1,this._parent=void 0,this._asyncContext=void 0,this.cache.runtimeMetrics?.recordFiberStart(this.context)}get[ey](){return ew}get currentDispatcher(){return this._dispatcher??=this.cache.scheduler.makeDispatcher()}getRef(e){return u.Jt(this.context,e)}addObserver(e){return this._exit?(e(this._exit),v.Yi):(void 0===this._observers?this._observers=[e]:this._observers.push(e),()=>this.removeObserver(e))}removeObserver(e){if(this._exit||void 0===this._observers)return;let t=this._observers.indexOf(e);t>=0&&this._observers.splice(t,1)}interruptUnsafe(e,t){if(this._exit)return;let a=Y(e);this.cache.stackFrame&&(a=(0,V.Eh)(a,u.L8(V.z8,this.cache.stackFrame))),t&&(a=(0,V.Eh)(a,t)),this._interruptedCause=this._interruptedCause?(0,V.h2)(this._interruptedCause,a):a,this.interruptible&&(this._running?this._deferredInterrupt=!0:this.evaluate(eX(this._interruptedCause)))}pollUnsafe(){return this._exit}evaluate(e){if(this._exit)return;if(void 0!==this._asyncContext){let t=this._asyncContext;return this._asyncContext=void 0,t.runInAsyncScope(this.evaluate,this,e)}if(void 0!==this._yielded){let e=this._yielded;this._yielded=void 0,e()}let t=this.runLoop(e);if(t===V.GN){this._asyncContext=ek();return}let a=eB.interruptChildren&&eB.interruptChildren(this);if(void 0!==a)return this.evaluate(tV(a,()=>t));if(this._exit=t,this.cache.runtimeMetrics?.recordFiberEnd(this.context,this._exit),this._parent&&(this._parent._children?.delete(this),this._parent=void 0),void 0!==this._observers){let e=this._observers;this._observers=void 0;for(let a=0;a<e.length;a++)e[a](t)}this._stack.length=0,this._children=void 0,this.context=u.Ie()}runLoop(e){let t=globalThis[B.fL];globalThis[B.fL]=this;let a=this._running;this._running=!0;let i=!1,s=e;this.currentOpCount=0;try{for(;;){this._deferredInterrupt&&(this._deferredInterrupt=!1,s=eX(this._interruptedCause)),this.currentOpCount++;let e=this.cache;if(!i&&!e.preventYield&&e.scheduler.shouldYield(this)){i=!0;let e=s;s=tV(ej,()=>e)}if((s=e.tracerContext?e.tracerContext(s,this):s[V._3](this))===V.GN){let e=this._yielded;if(V.IH in e)return this._deferredInterrupt=!1,this._yielded=void 0,e;if(this._deferredInterrupt){this._yielded=void 0,e();continue}return V.GN}}}catch(e){if(!(0,w.i5)(s,V._3))return(0,V.V2)(`Fiber.runLoop: Not a valid effect: ${String(s)}`);return this.runLoop((0,V.V2)(e))}finally{this._running=a,globalThis[B.fL]=t}}getCont(e){if(this._deferredInterrupt)return this._deferredInterrupt=!1,e_;for(;;){let t=this._stack.pop();if(!t)return;let a=t[V.u4];if(void 0!==a){let i=a.call(t,this);if(i)return i[e]=i,i}if(t[e])return t}}succeedWith(e){if((++this.currentOpCount&eL-1)==0)return(0,V.xt)(e);let t=this.getCont(V.ee);return t?t[V.ee](e,this):this.yieldWith((0,V.xt)(e))}yieldWith(e){return this._yielded=e,V.GN}children(){return this._children??=new Set}pipe(){return(0,L.tT)(this,arguments)}setContext(e){let t=this.context;if(this.context=e,void 0!==t&&u.Pf(t,e))return;let a=e.cacheRoot,i=a._fiberCache??=ez(e);this.cache?.scheduler!==i.scheduler&&(this._dispatcher=void 0),this.cache=i}get currentSpanLocal(){let e=this.cache.span;return e?._tag==="Span"?e:void 0}}let ez=e=>{let t=u.Ub(e,A.RL);return{scheduler:u.Jt(e,S._F),tracer:t,tracerContext:t?t.context:void 0,tracerEnabled:u.Jt(e,I.rf),span:u.Ub(e,A.WG),logLevel:u.Jt(e,I.Gl),minimumLogLevel:u.Jt(e,I.zQ),stackFrame:u.Jt(e,I.vA),runtimeMetrics:u.Ub(e,q.F),maxOpsBeforeYield:u.Jt(e,S.Zm),preventYield:u.Jt(e,S.hf)}},e_={[V.ee]:(e,t)=>eX(t._interruptedCause),[V.Sc]:(e,t)=>eX(t._interruptedCause)},eL=32,eB={interruptChildren:void 0},eS=e=>{if(!e.cache.stackFrame)return;let t=new Map;return t.set(V.QJ.key,e.cache.stackFrame),u.LZ(t)},eA=e=>{if(void 0!==e._children&&0!==e._children.size)return eE(e._children)},eP=e=>e._exit?eU(e._exit):te(t=>e._exit?t(eU(e._exit)):e$(e.addObserver(e=>t(eU(e))))),eV=e=>te(t=>{let a,i=e[Symbol.iterator](),s=[];return!function e(){let l=i.next();for(;!l.done;){if(l.value._exit){s.push(l.value._exit),l=i.next();continue}a=l.value.addObserver(t=>{s.push(t),e()});return}t(eU(s))}(),e$(()=>a?.())}),eH=e=>e._exit?e._exit:te(t=>e._exit?t(e._exit):e$(e.addObserver(t))),eq=e=>te(t=>{let a=Array.from(e);if(0===a.length)return t(eU(g.Ie()));let i=Array(a.length),s=g.Ie(),l=()=>{for(let e=0;e<s.length;e++)a[e].removeObserver(s[e])},o=0,r=!1;for(let e=0;e<a.length&&!r;e++){let n=s=>{if(o++,"Failure"===s._tag)return r=!0,l(),t(s);i[e]=s.value,o===a.length&&t(eU(i))};s.push(n),a[e].addObserver(n)}return e$(()=>{r=!0,l()})}),eF=e=>(0,V.R6)(t=>eI(e,t.id)),eI=(0,v.XY)(e=>(0,w.i5)(e[0],ey),(e,t,a)=>(0,V.R6)(i=>{let s=eS(i);return s=s&&a?u.h1(s,a):s??a,e.interruptUnsafe(t,s),t_(eP(e))})),eE=e=>(0,V.R6)(t=>{let a=eS(t),i=g.Ie();for(let s of e)s.interruptUnsafe(t.id,a),i.push(s);return t_(eV(i))}),eO=(0,v.XY)(2,(e,t)=>(0,V.R6)(a=>{let i=eS(a),s=g.Ie();for(let a of e)a.interruptUnsafe(t,i),s.push(a);return t_(eV(s))})),eU=V.xt,eX=V.cb,eT=V.Rk,e$=(0,V.Uf)({op:"Sync",[V._3](e){let t=this[V.a2](),a=e.getCont(V.ee);return a?a[V.ee](t,e):e.yieldWith((0,V.xt)(t))}}),eY=(0,V.Uf)({op:"Suspend",[V._3](e){return this[V.a2]()}}),eG=(0,v.XY)(e=>e.length>=2||y.isOption(e[0]),(e,t)=>y.isNone(e)?eT(t?t():new V.Xm("Effect.fromOption: Option.none")):eU(e.value)),eR=x.YW({onFailure:eT,onSuccess:eU}),eD=e=>null==e?eT(new V.Xm):eU(e),eZ=(0,V.Uf)({op:"Yield",[V._3](e){let t=!1;return e.currentDispatcher.scheduleTask(()=>{t||e.evaluate(t1)},this[V.a2]??0),e.yieldWith(()=>{t=!0})}}),ej=eZ(0),eN=e=>eU(y.some(e)),eW=eU(y.none()),eJ=e=>y.isNone(e)?eW:tE(e.value,y.some),eK=e=>eY(()=>eX(e())),eQ=e=>(0,V.V2)(e),e1=e=>eY(()=>eT(e())),e0=eU(void 0),e2=e=>{let t="function"==typeof e?e:e.try,a="function"==typeof e?e=>new lI(e,"An error occurred in Effect.try"):e.catch;return eY(()=>{try{return eU(t())}catch(e){return eT(a(e))}})},e3=e=>e8(function(t,a){e(a).then(e=>t(eU(e)),e=>t(eQ(e)))},0!==e.length),e5=e=>{let t="function"==typeof e?e:e.try,a="function"==typeof e?e=>new lI(e,"An error occurred in Effect.tryPromise"):e.catch;return e8(function(e,i){let s=e=>eY(()=>{try{return eT((0,P.s)(()=>a(e)))}catch(e){return eQ(e)}});try{t(i).then(t=>e(eU(t)),t=>e(s(t)))}catch(t){e(s(t))}},0!==t.length)},e4=e=>(0,V.R6)(t=>e(t.id)),e6=(0,V.R6)(eU),e7=e4(eU),e8=(i=(0,V.yj)({op:"Async",[V._3](e){let t=!1,a=!1,i=this.withSignal?new AbortController:void 0,s=this.register.call(e.cache.scheduler,i=>{t||(t=!0,a?e.evaluate(i):a=i)},i?.signal);return!1!==a?a:(a=!0,e._yielded=()=>{t=!0},void 0===i&&void 0===s||e._stack.push(e9(()=>(t=!0,i?.abort(),s??t1))),V.GN)}}),(s=function(e,t){this.register=e,this.withSignal=t}).prototype=i,function(e,t){return new s(e,t)}),e9=(0,V.Uf)({op:"AsyncFinalizer",[V.u4](e){e.interruptible&&(e.interruptible=!1,e._stack.push(i5))},[V.Sc](e,t){return J(e)?tV(iy((0,V.cb)(e),this[V.a2]()),()=>eX(e)):eX(e)}}),te=e=>e8(e,e.length>=2),tt=te(v.Yi),ta=(...e)=>{if(1===e.length){let t=e[0];return eY(()=>tc(t()))}let[t,a]=e;return eY(()=>tc(a.call(t.self)))},ti=(e,...t)=>{let a=0===t.length?function(){return eY(()=>tc(e.apply(this,arguments)))}:function(){let a=eY(()=>tc(e.apply(this,arguments)));for(let e=0;e<t.length;e++)a=t[e](a,...arguments);return a};return ts(e.length,a)},ts=(e,t)=>Object.defineProperty(t,"length",{value:e,configurable:!0}),tl=U(2),to=function(){let e,t="string"==typeof arguments[0],a=t?arguments[0]:"Effect.fn",i=t?arguments[1]:void 0,s=(0,E.jt)();return(0!==s&&((0,E.ft)(2),e=new globalThis.Error,(0,E.ft)(s)),t)?(s,...l)=>tr(a,s,e,l,t,i):tr(a,arguments[0],e,Array.prototype.slice.call(arguments,1),t,i)},tr=(e,t,a,i,s,l)=>{let o="function"==typeof t?t:i.shift().bind(t.self),r=`${e} (definition)`,n=a?tl(()=>a.stack):v.MN;return ts(o.length,function(...t){let a,d=eY(()=>{let e=o.apply(this,arguments);return(0,V.yw)(e)?e:tc(e)});for(let e=0;e<i.length;e++)d=i[e](d,...t);if(!(0,V.yw)(d))return d;let c=(0,E.jt)();return 0!==c&&((0,E.ft)(2),a=new globalThis.Error,(0,E.ft)(c)),al(s?ls(e,l,e=>ll(d,e)):d,I.vA,t=>({name:e,stack:a?tl(()=>a.stack):v.MN,parent:{name:r,stack:n,parent:t}}))})},tn=(e,...t)=>ts(e.length,0===t.length?function(){return td(()=>e.apply(this,arguments))}:function(){let a=td(()=>e.apply(this,arguments));for(let e of t)a=e(a,...arguments);return a}),td=e=>{try{let t,a=e();for(;;){let i=a.next(t);if(i.done)return eU(i.value);let s=i.value;if(s&&"Success"===s._tag){t=s.value;continue}{if(s&&"Failure"===s._tag)return i.value;let t=!0;return eY(()=>t?(t=!1,tV(i.value,e=>tc(a,e))):eY(()=>tc(e())))}}}catch(e){return eQ(e)}},tc=(l=(0,V.yj)({op:"Iterator",[V.ee](e,t){let a=this.iterator;for(;;){let i=a.next(e);if(i.done)return eU(i.value);if(!tq(i.value))return t._stack.push(this),i.value;if("Failure"===i.value._tag)return i.value;e=i.value.value}},[V._3](e){return this[V.ee](this.initial,e)}}),(o=function(e,t){this.iterator=e,this.initial=t}).prototype=l,function(e,t){return new o(e,t)}),tp=(0,v.XY)(2,(e,t)=>new tu(e,tf,eU(t))),th=function(e){return e._stack.push(this),this[V.a2]},tg=(0,V.yj)({op:"OnSuccess",[V._3]:th}),tu=function(e,t,a){this[V.a2]=e,this[V.ee]=t,this.payload=a};tu.prototype=tg;let tf=function(){return this.payload},tm=function(e,t){return t.succeedWith(this.payload)},tv=(r="~effect/Effect/stackProbe",({[r]:function(){return Error().stack}})[r]()?.includes("[as "+r+"]")===!0),ty=function(e,t){let a=this.payload;return t.succeedWith(tv?a(e):(0,P.s)(()=>a(e)))},tw=function(e){return(0,this.payload)(e)},tx=function(e){return new tu((0,this.payload)(e),tm,e)},tb=function(e){return new tu(this.payload,tm,e)},tk=e=>tE(e,y.some),tM=e=>a7(e,{onFailure:eU,onSuccess:eT}),tC=(0,v.XY)(2,(e,t)=>new tu(e,(0,V.yw)(t)?tf:tw,t)),tz=(0,v.XY)(2,(e,t)=>new tu(e,(0,V.yw)(t)?tb:tx,t)),t_=e=>new tu(e,tf,t1),tL=e=>ak(e,eT),tB=(e,t)=>(0,V.R6)(a=>{let i=new Set;return iU(a,()=>0===i.size?void 0:eE(i)),te(s=>{let l=g.Ts(e),o=l.length,r=0,n=!1,d=[],c=(e,i,l)=>{if(r++,"Failure"===e._tag){d.push(...e.cause.reasons),r>=o&&s(eX((0,V.b5)(d)));return}let c=!n;n=!0,s(e),c&&t?.onWinner&&t.onWinner({fiber:i,index:l,parentFiber:a})};for(let e=0;e<o;e++){let t=sA(a,l[e],!0,!0,!1);if(i.add(t),t.addObserver(a=>{i.delete(t),c(a,t,e)}),n)break}})}),tS=(e,t)=>(0,V.R6)(a=>{let i=new Set;return iU(a,()=>0===i.size?void 0:eE(i)),te(s=>{let l=!1,o=0;for(let r of e){if(l)break;let e=o++,n=sA(a,r,!0,!0,!1);i.add(n),n.addObserver(o=>{i.delete(n);let r=!l;l=!0,s(o),r&&t?.onWinner&&t.onWinner({fiber:n,index:e,parentFiber:a})})}})}),tA=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>tB([e,t],a)),tP=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>tS([e,t],a)),tV=(0,v.XY)(2,(e,t)=>new tu(e,tw,t)),tH=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?t.onSuccess(e.value):t.onFailure(e.cause):aQ(e,t)),tq=e=>void 0!==e[V.IH],tF=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?t(e.value):e:tV(e,t)),tI=e=>tV(e,v.D_),tE=(0,v.XY)(2,(e,t)=>new tu(e,ty,t)),tO=(0,v.XY)(2,(e,t)=>tq(e)?t0(e,t):tE(e,t)),tU=(0,v.XY)(2,(e,t)=>tq(e)?t2(e,t):aY(e,t)),tX=(0,v.XY)(2,(e,t)=>tq(e)?t3(e,t):aG(e,t)),tT=(0,v.XY)(2,(e,t)=>{if(tq(e)){if("Success"===e._tag)return e;let a=D(e.cause);return x.N6(a)?e:t(a.success)}return aL(e,t)}),t$=e=>(0,V.cb)(Y(e)),tY=e=>"Success"===e._tag,tG=e=>"Success"===e._tag?x.Py(e):x.fJ(e),tR=e=>"Success"===e._tag?x.Py(e.value):x.fJ(e),tD=e=>"Failure"===e._tag,tZ=e=>"Failure"===e._tag?x.Py(e):x.fJ(e),tj=e=>"Failure"===e._tag?x.Py(e.cause):x.fJ(e),tN=b(tj,D),tW=b(tj,W),tJ=e=>"Failure"===e._tag&&J(e.cause),tK=e=>"Failure"===e._tag&&j(e.cause),tQ=e=>"Failure"===e._tag&&G(e.cause),t1=(0,V.xt)(void 0),t0=(0,v.XY)(2,(e,t)=>"Success"===e._tag?(0,V.xt)(t(e.value)):e),t2=(0,v.XY)(2,(e,t)=>{if("Success"===e._tag)return e;let a=D(e.cause);return x.N6(a)?e:(0,V.Rk)(t(a.success))}),t3=(0,v.XY)(2,(e,t)=>{if("Success"===e._tag)return(0,V.xt)(t.onSuccess(e.value));let a=D(e.cause);return x.N6(a)?e:(0,V.Rk)(t.onFailure(a.success))}),t5=(0,v.XY)(2,(e,t)=>tY(e)?(0,V.xt)(t):e),t4=(0,v.XY)(2,(e,t)=>tY(e)?t:e),t6=(0,v.XY)(2,(e,t)=>tY(e)?t.onSuccess(e.value):t.onFailure(e.cause)),t7=t5(void 0),t8=e=>{let t=[];for(let a of e)"Failure"===a._tag&&t.push(...a.cause.reasons);return 0===t.length?t1:(0,V.cb)((0,V.b5)(t))},t9=e=>tY(e)?y.some(e.value):y.none(),ae=e=>tD(e)?y.some(e.cause):y.none(),at=e=>{let t=tN(e);return x.N6(t)?y.none():y.some(t.success)},aa=e=>e,ai=e=>(0,V.R6)(t=>eU(u.om(t.context,e))),as=(0,v.XY)(2,(e,t)=>(0,V.R6)(a=>{let i=a.context,s=t(i);return i===s||(a.setContext(s),iU(a,()=>{a.setContext(i)})),e})),al=(0,v.XY)(3,(e,t,a)=>as(e,e=>{let i=u.fp(e,t),s=a(i);return i===s?e:u.WQ(e,t,s)})),ao=(e,t,a)=>i2((0,V.R6)(i=>{let s=u.fp(i.context,e),l=t(s);return i.setContext(u.WQ(i.context,e,l)),ik(u.fp(i.context,ig),t=>{let o,r=u.om(i.context,e);if(y.isNone(r))return e0;let n=r.value;if(a?.reset===void 0){if(n!==l)return e0;o=s}else o=a.reset(s,l,n);return i.setContext(u.WQ(i.context,e,o)),e0})})),ar=()=>an,an=(0,V.R6)(e=>eU(e.context)),ad=e=>(0,V.R6)(t=>e(t.context)),ac=(0,v.XY)(2,(e,t)=>as(e,(0,v.dY)(t))),ap=(0,v.XY)(2,(e,t)=>tq(e)?e:as(e,u.h1(t))),ah=function(){return 1==arguments.length?(0,v.XY)(2,(e,t)=>ag(e,arguments[0],t)):(0,v.XY)(3,(e,t,a)=>ag(e,t,a)).apply(this,arguments)},ag=(e,t,a)=>as(e,u.WQ(t,a)),au=(0,v.XY)(3,(e,t,a)=>tV(a,a=>ah(e,t,a))),af=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a)=>am(e,t,(e,t)=>[e,t],a)),am=(0,v.XY)(e=>(0,V.yw)(e[1]),(e,t,a,i)=>i?.concurrent?tE(sa([e,t],{concurrency:2}),([e,t])=>a(e,t)):tV(e,e=>tE(t,t=>a(e,t)))),av=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sw(e,t,a?e=>eT(a(e)):()=>eT(new V.Xm))),ay=(0,v.XY)(2,(e,t)=>tV(t,t=>t?tk(e):eW)),aw=(0,v.XY)(2,(e,t)=>Array.from({length:t},()=>e)),ax=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sa(aw(e,t),a)),ab=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>sc({while:v.ue,body:(0,v.dY)(t?.disableYield?e:tV(e,e=>ej)),step:v.Yi})),ak=(0,v.XY)(2,(e,t)=>new aC(e,1!==t.length?e=>t(e):t)),aM=(0,V.yj)({op:"OnFailure",[V._3]:th}),aC=function(e,t){this[V.a2]=e,this[V.Sc]=t};aC.prototype=aM;let az=(0,v.XY)(3,(e,t,a)=>ak(e,e=>t(e)?a(e):eX(e))),a_=(0,v.XY)(3,(e,t,a)=>ak(e,e=>{let i=t(e);return x.N6(i)?eX(i.failure):a(i.success,e)})),aL=(0,v.XY)(2,(e,t)=>a_(e,D,e=>t(e))),aB=e=>a7(e,{onFailure:e=>(0,V.PW)(e)?eW:eT(e),onSuccess:eN}),aS=(0,v.XY)(2,(e,t)=>a_(e,W,t)),aA=(0,v.XY)(2,(e,t)=>ak(e,e=>tC(t(e),eX(e)))),aP=(0,v.XY)(3,(e,t,a)=>az(e,t,e=>tC(a(e),eX(e)))),aV=(0,v.XY)(3,(e,t,a)=>ak(e,e=>{let i=t(e);return x.N6(i)?eX(e):tC(a(i.success,e),eX(e))})),aH=(0,v.XY)(2,(e,t)=>aV(e,D,e=>t(e))),aq=(0,v.XY)(3,(e,t,a)=>{let i=Array.isArray(t)?e=>(0,w.i5)(e,"_tag")&&t.includes(e._tag):(0,w.$J)(t);return aH(e,e=>i(e)?a(e):e0)}),aF=(0,v.XY)(2,(e,t)=>aV(e,W,e=>t(e))),aI=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>ak(e,e=>{let s=D(e);return x.N6(s)?eX(s.failure):t(s.success)?a(s.success):i?i(s.success):eX(e)})),aE=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>ak(e,e=>{let s=D(e);if(x.N6(s))return eX(s.failure);let l=t(s.success);return x.N6(l)?i?i(l.failure):eX(e):a(l.success)})),aO=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>aI(e,Array.isArray(t)?e=>(0,w.i5)(e,"_tag")&&t.includes(e._tag):(0,w.$J)(t),a,i)),aU=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>{let i;return aE(e,e=>(i??=Object.keys(t),(0,w.i5)(e,"_tag")&&(0,w.Kg)(e._tag)&&i.includes(e._tag)?x.Py(e):x.fJ(e)),e=>t[e._tag](e),a)}),aX=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i,s)=>aI(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")&&(void 0!==s||(0,w.$J)(e.reason,a)),e=>{let t=e.reason;return(0,w.$J)(t,a)?i(t,e):s?s(t,e):eT(e)})),aT=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a,i)=>{let s;return aI(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")&&(0,w.i5)(e.reason,"_tag")&&(0,w.Kg)(e.reason._tag)&&(void 0!==i||(s??=Object.keys(a)).includes(e.reason._tag)),e=>{let t=e.reason;return(s??=Object.keys(a)).includes(t._tag)?a[t._tag](t,e):i?i(t,e):eT(e)})}),a$=(0,v.XY)(2,(e,t)=>aE(e,e=>(0,w.$J)(e,t)&&(0,w.i5)(e,"reason")?x.Py(e.reason):x.fJ(e),eT)),aY=(0,v.XY)(2,(e,t)=>aL(e,e=>e1(()=>t(e)))),aG=(0,v.XY)(2,(e,t)=>a7(e,{onFailure:e=>e1(()=>t.onFailure(e)),onSuccess:e=>e$(()=>t.onSuccess(e))})),aR=e=>aL(e,eQ),aD=(0,v.XY)(2,(e,t)=>aL(e,e=>e$(()=>t(e)))),aZ=e=>eY(()=>{let t=e[Symbol.iterator](),a=t.next();return a.done?eQ(Error("Received an empty collection of effects")):function e(a){let i=t.next();return i.done?a.value:aL(a.value,t=>e(i))}(a)}),aj=e=>aL(e,t=>tV(ej,()=>aj(e))),aN=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>{if(!t?.log)return a7(e,{onFailure:e=>e0,onSuccess:e=>e0});let a=lD(!0===t.log?void 0:t.log);return aQ(e,{onFailure(e){let i=R(e);return x.N6(i)?eX(i.failure):void 0===t.message?a(e):a(t.message,e)},onSuccess:e=>e0})}),aW=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>{if(!t?.log)return aQ(e,{onFailure:e=>e0,onSuccess:e=>e0});let a=lD(!0===t.log?void 0:t.log);return aQ(e,{onFailure:e=>void 0===t.message?a(e):a(t.message,e),onSuccess:e=>e0})}),aJ=e=>a8(e,{onFailure:y.none,onSuccess:y.some}),aK=e=>a9(e,{onFailure:x.fJ,onSuccess:x.Py}),aQ=(0,v.XY)(2,(e,t)=>new a0(e,1!==t.onSuccess.length?e=>t.onSuccess(e):t.onSuccess,1!==t.onFailure.length?e=>t.onFailure(e):t.onFailure)),a1=(0,V.yj)({op:"OnSuccessAndFailure",[V._3]:th}),a0=function(e,t,a){this[V.a2]=e,this[V.ee]=t,this[V.Sc]=a};a0.prototype=a1;let a2=function(e,t){let a=this.payload;return t.succeedWith(tv?a.onSuccess(e):(0,P.s)(()=>a.onSuccess(e)))},a3=(e,t)=>{let a=(0,V.yj)({op:e,[V._3]:th,[V.ee]:a2,[V.Sc]:t}),i=function(e,t){this[V.a2]=e,this.payload=t};return i.prototype=a,i},a5=a3("Match",function(e,t){let a=e.reasons.find(V.lC);if(void 0===a)return eX(e);let i=this.payload;return t.succeedWith(tv?i.onFailure(a.error):(0,P.s)(()=>i.onFailure(a.error)))}),a4=a3("MatchCause",function(e,t){let a=this.payload;return t.succeedWith(tv?a.onFailure(e):(0,P.s)(()=>a.onFailure(e)))}),a6=(0,v.XY)(2,(e,t)=>new a4(e,t)),a7=(0,v.XY)(2,(e,t)=>aQ(e,{onFailure:e=>{let a=e.reasons.find(V.lC);return a?t.onFailure(a.error):eX(e)},onSuccess:t.onSuccess})),a8=(0,v.XY)(2,(e,t)=>new a5(e,t)),a9=(0,v.XY)(2,(e,t)=>{if(tq(e)){if("Success"===e._tag)return(0,V.xt)(t.onSuccess(e.value));let a=D(e.cause);return x.N6(a)?e:(0,V.xt)(t.onFailure(a.success))}return a8(e,t)}),ie=(0,v.XY)(2,(e,t)=>tq(e)?"Success"===e._tag?(0,V.xt)(t.onSuccess(e.value)):(0,V.xt)(t.onFailure(e.cause)):a6(e,t)),it=e=>tq(e)?(0,V.xt)(e):ia(e),ia=(0,V.Uf)({op:"Exit",[V._3](e){return e._stack.push(this),this[V.a2]},[V.ee]:(e,t,a)=>t.succeedWith(a??(0,V.xt)(e)),[V.Sc]:(e,t,a)=>t.succeedWith(a??(0,V.cb)(e))}),ii=a9({onFailure:()=>!0,onSuccess:()=>!1}),is=a9({onFailure:()=>!1,onSuccess:()=>!0}),il=(0,v.XY)(2,(e,t)=>tC(ly(t),e)),io=(0,v.XY)(2,(e,t)=>tV(id(e,t.duration),e=>y.isNone(e)?t.orElse():eU(e.value))),ir=(0,v.XY)(2,(e,t)=>{let a=f.bN(t);return io(e,{duration:a,orElse:()=>eT(new lC(`Operation timed out after '${f.GP(a)}'`))})}),id=(0,v.XY)(2,(e,t)=>tP(tk(e),tp(ly(t),y.none()))),ic=e=>lv(t=>{let a=t.monotonicTimeNanosUnsafe();return tE(e,e=>[f.cF(t.monotonicTimeNanosUnsafe()-a),e])}),ip="~effect/Scope",ih="~effect/Scope/Closeable",ig=u.kl("effect/Scope"),iu=(e,t)=>(0,V.R6)(a=>{let i=im(e,t);return void 0===i?e0:(i7(a),i)}),im=(e,t)=>{let a=e.state;if("Closed"===a._tag||(e.state={_tag:"Closed",exit:t},void 0!==e.parent&&iz(e.parent,e),"Empty"===a._tag))return;if(void 0!==a.finalizer)return iv(a.finalizer,t);let i=a.finalizers;return 1===i.size?iv(i.values().next().value,t):iw(e,i,t)},iv=(e,t)=>{try{return e(t)}catch(e){return(0,V.V2)(e)}},iy=(e,t)=>tY(e)?t:ak(t,t=>eX((0,V.h2)(e.cause,t))),iw=ti(function*(e,t,a){let i=[],s=[],l=Array.from(t.values()),o=eM();for(let t=l.length-1;t>=0;t--){let r=l[t];"sequential"===e.strategy?i.push((yield*it(iv(r,a)))):s.push(sA(o,iv(r,a),!0,!0,"inherit"))}return s.length>0&&(i=yield*eV(s)),yield*t8(i)}),ix=(e,t)=>e$(()=>ib(e,t)),ib=(e,t)=>{let a=iL(t,e);return"Closed"===e.state._tag?a.state=e.state:iC(e,a,e=>iu(a,e)),a},ik=(e,t)=>eY(()=>"Closed"===e.state._tag?t(e.state.exit):(iC(e,{},t),e0)),iM=(e,t)=>ik(e,(0,v.dY)(t)),iC=(e,t,a)=>{if("Empty"===e.state._tag)e.state={_tag:"Open",finalizerKey:t,finalizer:a,finalizers:void 0};else if("Open"===e.state._tag){let i=e.state;void 0!==i.finalizer&&(i.finalizers=new Map([[i.finalizerKey,i.finalizer]]),i.finalizerKey=void 0,i.finalizer=void 0),i.finalizers.set(t,a)}},iz=(e,t)=>{if("Open"!==e.state._tag)return;let a=e.state;a.finalizerKey===t?e.state=iB:void 0!==a.finalizers&&(a.finalizers.delete(t),0===a.finalizers.size&&(e.state=iB))},i_=e=>iL(e,void 0),iL=(e="sequential",t)=>({[ih]:ih,[ip]:ip,strategy:e,parent:t,state:iB}),iB={_tag:"Empty"},iS=e=>e$(()=>i_(e)),iA=ig,iP=ah(ig),iV=e=>(0,V.R6)(t=>{let a=t.context,i=i_();return t.setContext(u.WQ(t.context,ig,i)),iU(t,e=>(t.setContext(a),im(i,e))),e}),iH=(0,v.XY)(2,(e,t)=>iX(iP(e,t),e=>eY(()=>im(t,e)??e0))),iq=e=>eY(()=>{let t=i_();return iX(e(t),e=>eY(()=>im(t,e)??e0))}),iF=(e,t,a)=>ad(i=>i9(s=>tV(iA,l=>tz(a?.interruptible?s(e):e,e=>ik(l,a=>ap(t(e,a),i)))))),iI=e=>tV(iA,t=>ad(a=>ik(t,t=>ap(e(t),a)))),iE=(n=(0,V.yj)({op:"OnExit",[V._3](e){return e._stack.push(this),this.effect},[V.u4](e){e.interruptible&&!0!==this.interruptible&&(e._stack.push(i5),e.interruptible=!1)},[V.ee](e,t,a){let i;a??=(0,V.xt)(e);try{i=this.onExit(a)}catch(e){i=(0,V.V2)(e)}return i?tV(i,e=>a):a},[V.Sc](e,t,a){let i;a??=(0,V.cb)(e);try{i=this.onExit(a)}catch(e){i=(0,V.V2)(e)}return i?tV(iy(a,i),e=>a):a}}),(d=function(e,t,a){this.effect=e,this.onExit=t,this.interruptible=a}).prototype=n,d),iO=(e,t,a)=>new iE(e,t,a),iU=(e,t)=>{e._stack.push(new iE(void 0,t,void 0))},iX=(0,v.XY)(2,iO),iT=(0,v.XY)(2,(e,t)=>iX(e,e=>t)),i$=(0,v.XY)(3,(e,t,a)=>iX(e,e=>t(e)?a(e):e0)),iY=(0,v.XY)(3,(e,t,a)=>iX(e,e=>{let i=t(e);return x.N6(i)?e0:a(i.success,e)})),iG=(0,v.XY)(2,(e,t)=>iY(e,tj,t)),iR=(0,v.XY)(3,(e,t,a)=>i$(e,e=>"Failure"===e._tag&&t(e.cause),e=>a(e.cause))),iD=(0,v.XY)(3,(e,t,a)=>iX(e,e=>{if("Failure"!==e._tag)return e0;let i=t(e.cause);return x.N6(i)?e0:a(i.success,e.cause)})),iZ=(0,v.XY)(2,(e,t)=>iD(Q,t)(e)),ij=(e,t,a)=>i9(i=>tV(e,e=>iO(eY(()=>i(t(e))),t=>a(e,t),!0))),iN=e=>iF(e,e=>(0,w.i5)(e,Symbol.asyncDispose)?e3(()=>e[Symbol.asyncDispose]()):e$(()=>e[Symbol.dispose]())),iW=(0,v.XY)(2,(e,t)=>e$(()=>iK(e,"function"==typeof t?e=>f.kE(f.bN(t(e))):(0,v.dY)(f.kE(f.bN(t)))))),iJ=(0,v.dY)(1/0),iK=(e,t)=>{let a,i,s=0,l=(e,t)=>(t.awaiters++,iU(e,()=>{if(!(--t.awaiters>0)&&i===t)return i=void 0,eF(t.fiber)}),eH(t.fiber));return[(0,V.R6)(o=>{if(void 0!==i)return l(o,i);if(void 0!==a&&(1/0===s||o.getRef(lh).currentTimeMillisUnsafe()<s))return a;a=void 0;let r=o.getRef(lh),n={fiber:void 0,awaiters:0};return i=n,n.fiber=sA(o,iO(e,e=>{if(i!==n||(i=void 0,tJ(e)))return;let l=t(e);s=1/0===l?1/0:r.currentTimeMillisUnsafe()+l,a=e}),!0,!0),n.fiber._exit??l(o,n)}),e$(()=>{a=void 0})]},iQ=(0,v.XY)(2,(e,t)=>tE(iW(e,t),e=>e[0])),i1=e=>e$(()=>iK(e,iJ)[0]),i0=(0,V.R6)(e=>eX(Y(e.id))),i2=e=>(0,V.R6)(t=>(t.interruptible&&(t.interruptible=!1,t._stack.push(i5)),e)),i3=(0,V.Uf)({op:"SetInterruptible",[V.u4](e){if(e.interruptible=this[V.a2],e._interruptedCause&&e.interruptible)return()=>eX(e._interruptedCause)}}),i5=i3(!0),i4=i3(!1),i6=e=>{if(e.interruptible=!0,e._stack.push(i4),e._interruptedCause)return eX(e._interruptedCause)},i7=e=>{e.interruptible&&(e.interruptible=!1,e._stack.push(i5))},i8=e=>(0,V.R6)(t=>t.interruptible?e:i6(t)??e),i9=e=>(0,V.R6)(t=>t.interruptible?(t.interruptible=!1,t._stack.push(i5),e(i8)):e(v.D_)),se=e=>(0,V.R6)(t=>{if(t.interruptible)return e(v.D_);let a=i6(t),i=e(i2);return a??i}),st=tE(iF(e$(()=>new AbortController),e=>e$(()=>e.abort())),e=>e.signal),sa=(e,t)=>(0,w.xZ)(e)?t?.mode==="result"?sp(e,aK,t):sp(e,v.D_,t):t?.discard?"result"===t.mode?sp(Object.values(e),aK,t):sp(Object.values(e),v.D_,t):eY(()=>{let a={};return tp(sp(Object.entries(e),([e,i])=>tE(t?.mode==="result"?aK(i):i,t=>{F.x(a,e,t)}),{discard:!0,concurrency:t?.concurrency}),a)}),si=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>tE(sp(e,(e,a)=>aK(t(e,a)),a),e=>g.jB(e,v.D_))),ss=(0,v.XY)(3,(e,t,a)=>{let i=g.Ts(e);return 0===i.length?e$(t):eY(()=>{let e=0,s=t();return tE(sc({while:()=>e<i.length,body:()=>a(s,i[e],e),step(t){s=t,e++}}),()=>s)})}),sl=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>tV(si(e,t,{concurrency:a?.concurrency}),([e,t])=>g.CZ(t)?eT(t):a?.discard?e0:eU(e))),so=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=e[Symbol.iterator](),i=a.next();return i.done?eU(y.none()):sr(a,0,t,i.value)})),sr=(e,t,a,i)=>tV(a(i,t),s=>{if(s)return eU(y.some(i));let l=e.next();return l.done?eU(y.none()):sr(e,t+1,a,l.value)}),sn=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=e[Symbol.iterator](),i=a.next();return i.done?eU(y.none()):sd(a,0,t,i.value)})),sd=(e,t,a,i)=>tV(a(i,t),i=>{if(x.oJ(i))return eU(y.some(i.success));let s=e.next();return s.done?eU(y.none()):sd(e,t+1,a,s.value)}),sc=(0,V.Uf)({op:"While",[V.ee](e,t){return(this[V.a2].step(e),this[V.a2].while())?(t._stack.push(this),this[V.a2].body()):t1},[V._3](e){return this[V.a2].while()?(e._stack.push(this),this[V.a2].body()):t1}}),sp=(0,v.XY)(e=>"function"==typeof e[1],(e,t,a)=>eY(()=>{let i=su(a?.concurrency);if(1===i)return sg(e,t,a);let s=g.Ts(e),l=s.length;if(0===l)return a?.discard?e0:eU([]);let o=a?.discard?void 0:Array(l),r=sy({f:t,out:o},s,{concurrency:i});return r?tp(r,o):eU(o)})),sh=e=>tV(e,e=>{let t=e[Symbol.iterator]().next();return t.done?eT(new V.Xm):eU(t.value)}),sg=(e,t,a)=>eY(()=>{let i=a?.discard?void 0:[],s=e[Symbol.iterator](),l=s.next(),o=0;return tp(sc({while:()=>!l.done,body:()=>t(l.value,o++),step:e=>{i&&i.push(e),l=s.next()}}),i)}),su=e=>"unbounded"===e?1/0:Math.max(1,e??1),sf=()=>e=>{let t=e.onItem,a=e.step,i=(e,t,i,l,o)=>tV(it(o),o=>a(e,t[i],o,i)??s(e,t,i+1,l)??e0),s=(e,s,l=0,o=s.length)=>{for(;l<o;l++){let r=s[l],n=t(e,r,l);if(!tq(n))return i(e,s,l,o,n);let d=a(e,r,n,l);if(d)return"Failure"===d._tag?d:void 0}};return s},sm=e=>{let t=e.onItem,a=e.step;return(e,i,s)=>{let l,o,r,n,d,c=0,p=s.end??i.length,h=s.concurrency,g=!1,u=e=>{let t=(0,V.V2)(e);return n=t,g=!0,o&&o.size>0?tV(i2(eE(Array.from(o))),()=>n??t):t},f=()=>{let s=!1;for(;!n&&c<p;c++){let p=i[c],m=d??t(e,p,c);if(tq(m)){if(n=a(e,p,m,c))break}else{if(!l)return te(e=>{let t;l=eM(),o=new Set,d=m,r=e;try{t=f()}catch(t){return e(u(t))}return t?e(t):eY(()=>(n??=t1,tV(o?eE(o):e0,()=>n?._tag==="Failure"?n:e0)))});d=void 0;let t=sA(l,m,!0,!0,"inherit");if(t._exit){if(n=a(e,p,t._exit,c))break;continue}o.add(t);let i=c;if(t.addObserver(l=>{o.delete(t);try{if(n){if("Failure"===l._tag){let e=l.cause.reasons.filter(e=>"Interrupt"!==e._tag);if(e.length>0){let t=(0,V.b5)(e);n=(0,V.cb)("Failure"===n._tag?(0,V.h2)(n.cause,t):t)}}}else{let t=a(e,p,l,i);t&&(n=t,f())}if(s){let e=f();e&&r(e)}else g&&0===o.size&&r(n??e0)}catch(e){r(u(e))}}),o.size<h)continue;s=!0,c++;return}}if(g=!0,n){if(o&&o.size>0){let e=eS(l);o.forEach(t=>t.interruptUnsafe(l.id,e));return}if(r||"Failure"===n._tag)return n}else if(r)if(!o)return t1;else 0===o.size&&r(e0)};return f()}},sv=()=>e=>sm(e),sy=sm({onItem:(e,t,a)=>e.f(t,a),step(e,t,a,i){if("Failure"===a._tag)return a;e.out&&(e.out[i]=a.value)}}),sw=(0,v.XY)(3,(e,t,a)=>tV(e,e=>t(e)?eU(e):a(e))),sx=(0,v.XY)(3,(e,t,a)=>tV(e,e=>{let i=t(e);return x.N6(i)?a(i.failure):eU(i.success)})),sb=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>sx(e,t,a?e=>eT(a(e)):()=>eT(new V.Xm))),sk=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>eY(()=>{let i=[];return tp(sp(e,(e,a)=>{let s=t(e,a);return"boolean"==typeof s?(s&&i.push(e),e0):tE(s,t=>{t&&i.push(e)})},{discard:!0,concurrency:a?.concurrency}),i)})),sM=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t)=>eY(()=>{let a=[];for(let i of e){let e=t(i);x.oJ(e)&&a.push(e.success)}return eU(a)})),sC=(0,v.XY)(e=>(0,w.xZ)(e[0])&&!(0,V.yw)(e[0]),(e,t,a)=>eY(()=>{let i=[];return tp(sp(e,e=>tE(t(e),e=>{x.oJ(e)&&i.push(e.success)}),{discard:!0,concurrency:a?.concurrency}),i)})),sz=eU({}),s_=H.Jr(tE),sL=H.oI(tE,tV),sB=H.zM(tE),sS=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>(0,V.R6)(a=>(eB.interruptChildren??=eA,eU(sA(a,e,t?.startImmediately,!1,t?.uninterruptible??!1))))),sA=(e,t,a=!1,i=!1,s=!1)=>{let l="inherit"===s?e.interruptible:!s,o=new eC(e.context,l);return a?o.evaluate(t):(o._asyncContext=ek(),e.currentDispatcher.scheduleTask(()=>o.evaluate(t),0)),i||o._exit||(e.children().add(o),o._parent=e),o},sP=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>(0,V.R6)(a=>eU(sA(a,e,t?.startImmediately,!0,t?.uninterruptible)))),sV=e=>(0,V.R6)(t=>{let a=t._children&&new Set(t._children),i=t.interruptible;return iO(e,e=>{let s=t._children;if(void 0===s||0===s.size)return e0;a&&(s=z.pb(s,e=>!a.has(e)));let l=t_(eV(s));return i?i8(l):l})}),sH=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a)=>(0,V.R6)(i=>{let s=sA(i,e,a?.startImmediately,!0,a?.uninterruptible);if(!s._exit)if("Closed"!==t.state._tag){let e={};iC(t,e,()=>e4(e=>e===s.id?e0:eF(s))),s.addObserver(()=>iz(t,e))}else s.interruptUnsafe(i.id,eS(i));return eU(s)})),sq=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>tV(iA,a=>sH(e,a,t))),sF=e=>(t,a)=>{let i=new eC(a?.scheduler?u.WQ(e,S._F,a.scheduler):e,a?.uninterruptible!==!0);if(i.evaluate(t),i._exit)return i;if(a?.signal)if(a.signal.aborted)i.interruptUnsafe();else{let e=()=>i.interruptUnsafe();a.signal.addEventListener("abort",e,{once:!0}),i.addObserver(()=>a.signal.removeEventListener("abort",e))}return a?.onFiberStart&&a.onFiberStart(i),i},sI=(0,v.XY)(2,(e,t)=>{if(e._exit)return e;if("Closed"===t.state._tag)return e.interruptUnsafe(e.id),e;let a={};return iC(t,a,()=>eF(e)),e.addObserver(()=>iz(t,a)),e}),sE=sF(u.Ie()),sO=e=>{let t=sF(e);return(e,a)=>{let i=t(e,a);return a?.onExit&&i.addObserver(a.onExit),e=>i.interruptUnsafe(e)}},sU=sO(u.Ie()),sX=e=>{let t=sF(e);return(e,a)=>{let i=t(e,a);return new Promise(e=>{i.addObserver(t=>e(t))})}},sT=sX(u.Ie()),s$=e=>{let t=sX(e);return(e,a)=>t(e,a).then(e=>{if("Failure"===e._tag)throw eo(e.cause);return e.value})},sY=s$(u.Ie()),sG=e=>{let t=sF(e);return e=>{if(tq(e))return e;let a=t(e,{scheduler:new S.FG("sync")});return a._dispatcher?.flush(),a._exit??(0,V.V2)(new lH(a))}},sR=sG(u.Ie()),sD=e=>{let t=sG(e);return e=>{let a=t(e);if("Failure"===a._tag)throw eo(a.cause);return a.value}},sZ=sD(u.Ie()),sj=eU(!0),sN=eU(!1);class sW{waiters=[];scheduled=void 0;_isOpen;constructor(e){this._isOpen=e}scheduleUnsafe(e){if(0===this.waiters.length)return sj;if(void 0===this.scheduled)this.scheduled=this.waiters,e.currentDispatcher.scheduleTask(this.flushScheduled,0);else for(let e=0;e<this.waiters.length;e++)this.scheduled.push(this.waiters[e]);return this.waiters=[],sj}flushScheduled=()=>{if(void 0===this.scheduled)return;let e=this.scheduled;this.scheduled=void 0;for(let t=0;t<e.length;t++)e[t](t1)};flushWaiters(){let e=this.waiters;this.waiters=[],this.flushScheduled();for(let t=0;t<e.length;t++)e[t](t1)}open=(0,V.R6)(e=>this._isOpen?sN:(this._isOpen=!0,this.scheduleUnsafe(e)));release=(0,V.R6)(e=>this._isOpen?sN:this.scheduleUnsafe(e));openUnsafe(){return!this._isOpen&&(this._isOpen=!0,this.flushWaiters(),!0)}await=te(e=>this._isOpen?e(e0):(this.waiters.push(e),e$(()=>{let t=this.waiters.indexOf(e);-1!==t?this.waiters.splice(t,1):void 0!==this.scheduled&&-1!==(t=this.scheduled.indexOf(e))&&this.scheduled.splice(t,1)})));closeUnsafe(){return!!this._isOpen&&(this._isOpen=!1,!0)}close=e$(()=>this.closeUnsafe());whenOpen=e=>tV(this.await,()=>e);isOpen(){return this._isOpen}}let sJ=e=>new sW(e??!1),sK=e=>e$(()=>sJ(e)),sQ=(0,V.R6)(e=>eU(e.getRef(A.sh))),s1=(0,v.XY)(2,(e,t)=>ah(e,A.sh,t)),s0=ah(I.rf),s2=ah(I.nU),s3=BigInt(0),s5={_tag:"Span",spanId:"noop",traceId:"noop",sampled:!1,status:{_tag:"Ended",startTime:s3,endTime:s3,exit:t1},attributes:new Map,links:[],kind:"internal",attribute(){},event(){},end(){},addLinks(){}},s4=e=>e?u.Jt(e.annotations,A.DW)?"Span"===e._tag?s4(y.getOrUndefined(e.parent)):y.none():y.some(e):y.none(),s6=(e,t,a)=>{let i,s=!e.cache.tracerEnabled||a?.annotations&&u.Jt(a.annotations,A.DW),l=a?.parent!==void 0?y.some(a.parent):a?.root?y.none():s4(e.cache.span);if(s){let e;e={name:t,parent:l,annotations:u.WQ(a?.annotations??u.Ie(),A.DW,!0)},i=Object.assign(Object.create(s5),e)}else{let s=e.cache.tracer??A.Vv,o=e.getRef(lh),r=e.getRef(I.nU),n=e.getRef(I.ce),d=e.getRef(I.ls),c=a?.level??e.getRef(A.pX),p=a?.links!==void 0?[...d,...a.links]:0===d.length?[]:d.slice();for(let d in i=s.span({name:t,parent:l,annotations:a?.annotations??u.Ie(),links:p,startTime:r?o.currentTimeNanosUnsafe():s3,kind:a?.kind??"internal",root:a?.root??y.isNone(l),sampled:a?.sampled??((!y.isSome(l)||!1!==l.value.sampled)&&!lU(e.getRef(A.EW),c))}),n)i.attribute(d,n[d]);if(a?.attributes!==void 0)for(let e in a.attributes)i.attribute(e,a.attributes[e])}return i},s7=(e,t)=>(0,V.R6)(a=>eU(s6(a,e,t))),s8=(e,t)=>i2((0,V.R6)(a=>{let i=u.fp(a.context,ig),s=s6(a,e,t??{}),l=a.getRef(lh),o=a.getRef(I.nU);return tp(ik(i,e=>li(s,e,l,o)),s)})),s9=function(){let e="string"!=typeof arguments[0],t=e?arguments[1]:arguments[0],a=O(e?arguments[2]:arguments[1]);if(e){let e=arguments[0];return tV(s8(t,a),t=>lo(e,t,a))}return e=>tV(s8(t,a),t=>lo(e,t,a))},le=I.ce,lt=I.ls,la=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t,a={})=>{let i=(Array.isArray(t)?t:[t]).map(e=>({span:e,attributes:a}));return al(e,I.ls,e=>[...e,...i])}),li=(e,t,a,i)=>e$(()=>{"Ended"!==e.status._tag&&e.end(i?a.currentTimeNanosUnsafe():s3,t)}),ls=(e,...t)=>{let a=1===t.length?void 0:t[0],i=t[t.length-1];return(0,V.R6)(t=>{let s=s6(t,e,a),l=t.getRef(lh),o=t.getRef(I.nU);return iU(t,e=>li(s,e,l,o)),i(s)})},ll=ah(A.Tv),lo=function(){let e=(0,V.yw)(arguments[0]),t=e?arguments[1]:arguments[0],a=e?arguments[2]:arguments[1],i=v.D_;if("Span"===t._tag){var s,l;a=O(a),s=t.name,l="function"==typeof(l=a?.captureStackTrace)?l:v.MN,i=al(I.vA,e=>({name:s,stack:l,parent:e}))}return e?ll(i(arguments[0]),t):e=>ll(i(e),t)},lr=function(){let e="string"!=typeof arguments[0],t=e?arguments[1]:arguments[0],a=O(arguments[2]);if(e){let e=arguments[0];return ls(t,arguments[2],t=>lo(e,t,a))}let i="function"==typeof arguments[1]?arguments[1]:void 0,s=i?void 0:arguments[1];return(e,...l)=>ls(t,i?i(...l):s,t=>lo(e,t,a))},ln=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,...t)=>al(e,I.ce,e=>{let a=1===t.length?{...e,...t[0]}:{...e};return 1===t.length||F.x(a,t[0],t[1]),a})),ld=(...e)=>(0,V.R6)(t=>{let a=t.currentSpanLocal;if(a)if(1===e.length)for(let[t,i]of Object.entries(e[0]))a.attribute(t,i);else a.attribute(e[0],e[1]);return e0}),lc=(0,V.R6)(e=>{let t=e.currentSpanLocal;return t?eU(t):eT(new V.Xm)}),lp=(c=A.Tv,(0,V.R6)(e=>eG(u.om(e.context,c)))),lh=u.Or("effect/Clock",{defaultValue:()=>new lg});class lg{currentTimeMillisUnsafe(){return Date.now()}currentTimeMillis=e$(()=>this.currentTimeMillisUnsafe());currentTimeNanosUnsafe(){return lm()}currentTimeNanos=e$(()=>this.currentTimeNanosUnsafe());monotonicTimeNanosUnsafe(){return lf()}monotonicTimeNanos=e$(()=>this.monotonicTimeNanosUnsafe());sleep(e){return this.sleepMillis(f.kE(e))}sleepMillis(e){return e<=0?ej:Number.isFinite(e)?te(t=>{let a=e>0x7fffffff?this.sleepMillis(e-0x7fffffff):e0,i=setTimeout(()=>t(a),Math.min(e,0x7fffffff));return e$(()=>clearTimeout(i))}):tt}}let lu=BigInt(1e6),lf=function(){let e=globalThis.process?.hrtime;if("function"==typeof e?.bigint)return()=>e.bigint();if("u">typeof performance&&"function"==typeof performance.now)return()=>BigInt(Math.round(1e6*performance.now()));let t=BigInt(0);return()=>{let e=BigInt(Date.now())*lu;return e>t&&(t=e),t}}(),lm=(h=BigInt(1e9),()=>{let e=lf(),t=BigInt(Date.now())*lu;if(void 0===p)p=t-e;else{let a=p+e;(t>a?t-a:a-t)>h&&(p=t-e)}return p+e}),lv=e=>(0,V.R6)(t=>e(t.getRef(lh))),ly=e=>lv(t=>t.sleep(f.bN(e))),lw=lv(e=>e.currentTimeMillis),lx=lv(e=>e.currentTimeNanos),lb=lv(e=>e.monotonicTimeNanos),lk="~effect/Cause/TimeoutError",lM=e=>(0,w.i5)(e,lk);class lC extends(0,V.rN)("TimeoutError"){[lk]=lk;constructor(e){super({message:e})}}let lz="~effect/Cause/IllegalArgumentError",l_=e=>(0,w.i5)(e,lz);class lL extends(0,V.rN)("IllegalArgumentError"){[lz]=lz;constructor(e){super({message:e})}}let lB="~effect/Cause/ExceededCapacityError",lS=e=>(0,w.i5)(e,lB);class lA extends(0,V.rN)("ExceededCapacityError"){[lB]=lB;constructor(e){super({message:e})}}let lP="~effect/Cause/AsyncFiberError",lV=e=>(0,w.i5)(e,lP);class lH extends(0,V.rN)("AsyncFiberError"){[lP]=lP;constructor(e){super({message:"An asynchronous Effect was executed with Effect.runSync",fiber:e})}}let lq="~effect/Cause/UnknownError",lF=e=>(0,w.i5)(e,lq);class lI extends(0,V.rN)("UnknownError"){[lq]=lq;constructor(e,t){super({message:t,cause:e})}}let lE=u.Or("effect/Console",{defaultValue:()=>globalThis.console}),lO=_.zQ(_.wN,e=>{switch(e){case"All":return Number.MIN_SAFE_INTEGER;case"Fatal":return 5e4;case"Error":return 4e4;case"Warn":return 3e4;case"Info":return 2e4;case"Debug":return 1e4;case"Trace":return 0;case"None":return Number.MAX_SAFE_INTEGER}}),lU=_.yJ(lO),lX=u.Or("effect/Logger/CurrentLoggers",{defaultValue:()=>new Set([lZ,lj])}),lT=u.Or("effect/Logger/LogToStderr",{defaultValue:v.f4}),l$=function(){let e="string"==typeof arguments[0]?[[arguments[0],arguments[1]]]:Object.entries(arguments[0]);return i2((0,V.R6)(t=>{let a=t.getRef(I.iL),i={...a};for(let t=0;t<e.length;t++){let[a,s]=e[t];F.x(i,a,s)}return t.setContext(u.WQ(t.context,I.iL,i)),ik(u.fp(t.context,ig),i=>{let s=t.getRef(I.iL),l={...s};for(let t=0;t<e.length;t++){let[i,o]=e[t];(s[i]===o||Object.is(s[i],o))&&(Object.hasOwn(a,i)?F.x(l,i,a[i]):delete l[i])}return t.setContext(u.WQ(t.context,I.iL,l)),e0})}))},lY={"~effect/Logger":{_Message:v.D_,_Output:v.D_},pipe(){return(0,L.tT)(this,arguments)}},lG=e=>{let t=Object.create(lY);return t.log=e,t},lR=(e,t)=>{let a=e[0].replace(/[\s="]/g,"_");return`${a}=${t-e[1]}ms`},lD=e=>(...t)=>{let a;for(let e=0,i=t.length;e<i;e++){let i=t[e];(0,V.Aj)(i)&&(a?t.splice(e,1):t=t.slice(0,e).concat(t.slice(e+1)),a=a?(0,V.b5)(a.reasons.concat(i.reasons)):i,e--)}return void 0===a&&(a=V.DH),(0,V.R6)(i=>{let s=e??i.cache.logLevel;if(lU(i.cache.minimumLogLevel,s))return e0;let l=i.getRef(lh),o=i.getRef(lX);if(o.size>0){let e=new Date(l.currentTimeMillisUnsafe());for(let l of o)l.log({cause:a,fiber:i,date:e,logLevel:s,message:t})}return e0})},lZ=lG(({cause:e,date:t,fiber:a,logLevel:i,message:s})=>{let l=Array.isArray(s)?s.slice():[s];e.reasons.length>0&&l.push(ef(e));let o=t.getTime(),r=a.getRef(I.d8),n="";for(let e of r)n+=` ${lR(e,o)}`;let d=a.getRef(I.iL);Object.keys(d).length>0&&l.push(d);let c=a.getRef(lE);(a.getRef(lT)?c.error:c.log)(`[${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}] ${i.toUpperCase()} (#${a.id})${n}:`,...l)}),lj=lG(({cause:e,fiber:t,logLevel:a,message:i})=>{let s=t.getRef(lh),l=t.getRef(I.iL),o=t.cache.span;if(void 0===o||"ExternalSpan"===o._tag)return;let r={};for(let[e,t]of Object.entries(l))F.x(r,e,t);r["effect.fiberId"]=t.id,r["effect.logLevel"]=a.toUpperCase(),e.reasons.length>0&&(r["effect.cause"]=ef(e)),o.event((0,C.ZK)(Array.isArray(i)&&1===i.length?i[0]:i),s.currentTimeNanosUnsafe(),r)}),lN=eU(void 0),lW=(0,v.XY)(e=>(0,V.yw)(e[0]),(e,t)=>iG(e,e=>(0,V.R6)(a=>(lJ(a,e,t?.defectsOnly),e0)))),lJ=(e,t,a)=>{let i=e.getRef(I.oQ);if(0===i.size||a&&!j(t))return;let s={cause:t,fiber:e,timestamp:e.getRef(lh).currentTimeNanosUnsafe()};i.forEach(e=>e.report(s))}},5844(e,t,a){let i=new WeakSet;a.d(t,{},{J3:i,Xp:e=>{let t=new Set(Reflect.ownKeys(e));if(e.constructor===Object)return t;e instanceof Error&&t.delete("stack");let a=Object.getPrototypeOf(e),i=a;for(;null!==i&&i!==Object.prototype;){let e=Reflect.ownKeys(i);for(let a=0;a<e.length;a++)t.add(e[a]);i=Object.getPrototypeOf(i)}return t.has("constructor")&&"function"==typeof e.constructor&&a===e.constructor.prototype&&t.delete("constructor"),t},j:e=>new Uint8Array(e.buffer,e.byteOffset,e.byteLength)})},7258(e,t,a){a.d(t,{},{F:"effect/Metric/FiberRuntimeMetrics"})},7731(e,t,a){var i=a(3332),s=a(1958),l=a(5033),o=a(3952),r=a(4233),n=a(6481),d=a(2449);let c="~effect/Option",p={[c]:{_A:e=>e},...d.fU,[Symbol.iterator](){return new n.B(this)}},h=Object.defineProperty(Object.assign(Object.create(p),{_tag:"Some",_op:"Some",[i.HR](e){return f(e)&&v(e)&&i.aI(this.value,e.value)},[l.HR](){return l.kg(l.tW(this._tag))(l.tW(this.value))},toString(){return`some(${(0,s.GP)(this.value)})`},toJSON(){return{_id:"Option",_tag:this._tag,value:(0,o.aB)(this.value)}}}),"valueOrUndefined",{get(){return this.value}}),g=l.tW("None"),u=Object.assign(Object.create(p),{_tag:"None",_op:"None",valueOrUndefined:void 0,[i.HR]:e=>f(e)&&m(e),[l.HR]:()=>g,toString:()=>"none()",toJSON(){return{_id:"Option",_tag:this._tag}}}),f=e=>(0,r.i5)(e,c),m=e=>"None"===e._tag,v=e=>"Some"===e._tag,y=Object.create(u),w=function(e){this.value=e};w.prototype=h,a.d(t,{},{$I:m,Ru:v,dv:y,oL:f,zN:e=>new w(e)})},2275(e,t,a){function i(e,t,a){"__proto__"===t?Object.defineProperty(e,t,{value:a,writable:!0,enumerable:!0,configurable:!0}):e[t]=a}function s(e,t){for(let a of Reflect.ownKeys(t))Object.prototype.propertyIsEnumerable.call(t,a)&&i(e,a,t[a])}a.d(t,{x:()=>i,z:()=>s})},6712(e,t,a){var i=a(1179),s=a(1594);let l=i.Or("effect/ErrorReporter/CurrentErrorReporters",{defaultValue:()=>new Set}),o=i.Or("effect/References/CurrentStackFrame",{fiberCached:!0,defaultValue:s.MN}),r=i.Or("effect/References/TracerEnabled",{fiberCached:!0,defaultValue:s.ue}),n=i.Or("effect/References/TracerTimingEnabled",{defaultValue:s.ue}),d=i.Or("effect/References/TracerSpanAnnotations",{defaultValue:()=>({})}),c=i.Or("effect/References/TracerSpanLinks",{defaultValue:()=>[]}),p=i.Or("effect/References/CurrentLogAnnotations",{defaultValue:()=>({})}),h=i.Or("effect/References/CurrentLogLevel",{fiberCached:!0,defaultValue:()=>"Info"}),g=i.Or("effect/References/MinimumLogLevel",{fiberCached:!0,defaultValue:()=>"Info"}),u=i.Or("effect/References/UnhandledLogLevel",{defaultValue:()=>"Error"}),f=i.Or("effect/References/CurrentLogSpans",{defaultValue:()=>[]});a.d(t,{},{Gl:h,aG:u,ce:d,d8:f,iL:p,ls:c,nU:n,oQ:l,rf:r,vA:o,zQ:g})},2563(e,t,a){var i=a(3332),s=a(1958),l=a(1594),o=a(5033),r=a(3952),n=a(4233),d=a(6481),c=a(2449),p=a(7731);let h="~effect/Result",g={[h]:{_A:e=>e,_E:e=>e},...c.fU,[Symbol.iterator](){return new d.B(this)}},u=Object.assign(Object.create(g),{_tag:"Success",_op:"Success",[i.HR](e){return m(e)&&y(e)&&i.aI(this.success,e.success)},[o.HR](){return o.kg(o.tW(this._tag))(o.tW(this.success))},toString(){return`success(${(0,s.GP)(this.success)})`},toJSON(){return{_id:"Result",_tag:this._tag,value:(0,r.aB)(this.success)}}}),f=Object.assign(Object.create(g),{_tag:"Failure",_op:"Failure",[i.HR](e){return m(e)&&v(e)&&i.aI(this.failure,e.failure)},[o.HR](){return o.kg(o.tW(this._tag))(o.tW(this.failure))},toString(){return`failure(${(0,s.GP)(this.failure)})`},toJSON(){return{_id:"Result",_tag:this._tag,failure:(0,r.aB)(this.failure)}}}),m=e=>(0,n.i5)(e,h),v=e=>"Failure"===e._tag,y=e=>"Success"===e._tag,w=function(e){this.failure=e};w.prototype=f;let x=e=>new w(e),b=function(e){this.success=e};b.prototype=u;let k=e=>new b(e),M=(0,l.XY)(2,(e,t)=>p.$I(e)?x(t()):k(e.value));a.d(t,{},{L8:e=>y(e)?p.dv:p.zN(e.failure),N6:v,Oz:e=>v(e)?p.dv:p.zN(e.success),Py:k,aI:m,fJ:x,oJ:y,sV:M})},2840(e,t,a){var i=a(1594);function s(e){return e.checks?e.checks[e.checks.length-1].annotations:e.annotations}function l(e){return t=>s(t)?.[e]}let o="~structural",r="~identifier",n="~sentinels",d=l("identifier"),c=l(r),p=l("title"),h=l("description"),g=(0,i.Bj)(e=>{let t=s(e)?.identifier;return"string"==typeof t?t:e.getExpected(g)}),u=new Set([n,o,"representation","arbitraryConstraint","toJsonSchema","toCode","toEquivalence","toFormatter","toCodec","toCodecJson","toCodecStringTree","toCodecIso","toCodecArbitrary"]);a.d(t,{hd:()=>s,ip:()=>l},{C3:o,CD:c,DQ:p,I_:n,KE:d,L1:["title","description","default","examples","readOnly","writeOnly","format","contentEncoding","contentMediaType","contentSchema"],Pk:h,R4:r,UI:u,bo:g,py:"~constructor"})},8253(e,t,a){var i=a(719),s=a(7086);function l(e){let t;for(let a of e.reasons){if(!i.lC(a)||!s.gh(a.error))return;t??=a.error}return t}function o(e,t){let a=l(e);if(void 0===a)throw Error(t,{cause:e});return a}a.d(t,{R:()=>l,q:()=>o})},587(e,t,a){var i=a(6526),s=a(1587);let l=Symbol(),o=i.Py,r=o(l),n=o(l);a.d(t,{},{LO:l,Py:o,Rr:n,e8:e=>"None"===e._tag?r:o(e.value),r2:r,zL:e=>e===l?s.none():s.some(e)})},5340(e,t,a){let i,s=void 0===(i=Object.getOwnPropertyDescriptor(Error,"stackTraceLimit"))?Object.isExtensible(Error):Object.hasOwn(i,"writable")?!0===i.writable:void 0!==i.set;a.d(t,{},{ft:e=>{s&&(Error.stackTraceLimit=e)},jt:()=>Error.stackTraceLimit})},8689(e,t,a){let i,s,l,o,r;function n(e){let t=e.length;for(;--t>=0;)e[t]=0}let d=573,c=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),p=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),h=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),g=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),u=Array(576);n(u);let f=Array(60);n(f);let m=Array(512);n(m);let v=Array(256);n(v);let y=Array(29);n(y);let w=Array(30);function x(e,t,a,i,s){this.static_tree=e,this.extra_bits=t,this.extra_base=a,this.elems=i,this.max_length=s,this.has_stree=e&&e.length}function b(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}n(w);let k=e=>e<256?m[e]:m[256+(e>>>7)],M=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},C=(e,t,a)=>{e.bi_valid>16-a?(e.bi_buf|=t<<e.bi_valid&65535,M(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=a-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=a)},z=(e,t,a)=>{C(e,a[2*t],a[2*t+1])},_=(e,t)=>{let a=0;do a|=1&e,e>>>=1,a<<=1;while(--t>0)return a>>>1},L=(e,t,a)=>{let i,s,l=Array(16),o=0;for(i=1;i<=15;i++)l[i]=o=o+a[i-1]<<1;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=_(l[t]++,t))}},B=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0},S=e=>{e.bi_valid>8?M(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},A=(e,t,a,i)=>{let s=2*t,l=2*a;return e[s]<e[l]||e[s]===e[l]&&i[t]<=i[a]},P=(e,t,a)=>{let i=e.heap[a],s=a<<1;for(;s<=e.heap_len&&(s<e.heap_len&&A(t,e.heap[s+1],e.heap[s],e.depth)&&s++,!A(t,i,e.heap[s],e.depth));)e.heap[a]=e.heap[s],a=s,s<<=1;e.heap[a]=i},V=(e,t,a)=>{let i,s,l,o,r=0;if(0!==e.last_lit)do i=e.pending_buf[e.d_buf+2*r]<<8|e.pending_buf[e.d_buf+2*r+1],s=e.pending_buf[e.l_buf+r],r++,0===i?z(e,s,t):(z(e,(l=v[s])+256+1,t),0!==(o=c[l])&&C(e,s-=y[l],o),z(e,l=k(--i),a),0!==(o=p[l])&&C(e,i-=w[l],o));while(r<e.last_lit)z(e,256,t)},H=(e,t)=>{let a,i,s,l=t.dyn_tree,o=t.stat_desc.static_tree,r=t.stat_desc.has_stree,n=t.stat_desc.elems,c=-1;for(e.heap_len=0,e.heap_max=d,a=0;a<n;a++)0!==l[2*a]?(e.heap[++e.heap_len]=c=a,e.depth[a]=0):l[2*a+1]=0;for(;e.heap_len<2;)l[2*(s=e.heap[++e.heap_len]=c<2?++c:0)]=1,e.depth[s]=0,e.opt_len--,r&&(e.static_len-=o[2*s+1]);for(t.max_code=c,a=e.heap_len>>1;a>=1;a--)P(e,l,a);s=n;do a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],P(e,l,1),i=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=i,l[2*s]=l[2*a]+l[2*i],e.depth[s]=(e.depth[a]>=e.depth[i]?e.depth[a]:e.depth[i])+1,l[2*a+1]=l[2*i+1]=s,e.heap[1]=s++,P(e,l,1);while(e.heap_len>=2)e.heap[--e.heap_max]=e.heap[1],((e,t)=>{let a,i,s,l,o,r,n=t.dyn_tree,c=t.max_code,p=t.stat_desc.static_tree,h=t.stat_desc.has_stree,g=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,f=t.stat_desc.max_length,m=0;for(l=0;l<=15;l++)e.bl_count[l]=0;for(n[2*e.heap[e.heap_max]+1]=0,a=e.heap_max+1;a<d;a++)(l=n[2*n[2*(i=e.heap[a])+1]+1]+1)>f&&(l=f,m++),n[2*i+1]=l,!(i>c)&&(e.bl_count[l]++,o=0,i>=u&&(o=g[i-u]),r=n[2*i],e.opt_len+=r*(l+o),h&&(e.static_len+=r*(p[2*i+1]+o)));if(0!==m){do{for(l=f-1;0===e.bl_count[l];)l--;e.bl_count[l]--,e.bl_count[l+1]+=2,e.bl_count[f]--,m-=2}while(m>0)for(l=f;0!==l;l--)for(i=e.bl_count[l];0!==i;)!((s=e.heap[--a])>c)&&(n[2*s+1]!==l&&(e.opt_len+=(l-n[2*s+1])*n[2*s],n[2*s+1]=l),i--)}})(e,t),L(l,c,e.bl_count)},q=(e,t,a)=>{let i,s,l=-1,o=t[1],r=0,n=7,d=4;for(0===o&&(n=138,d=3),t[(a+1)*2+1]=65535,i=0;i<=a;i++)s=o,o=t[(i+1)*2+1],++r<n&&s===o||(r<d?e.bl_tree[2*s]+=r:0!==s?(s!==l&&e.bl_tree[2*s]++,e.bl_tree[32]++):r<=10?e.bl_tree[34]++:e.bl_tree[36]++,r=0,l=s,0===o?(n=138,d=3):s===o?(n=6,d=3):(n=7,d=4))},F=(e,t,a)=>{let i,s,l=-1,o=t[1],r=0,n=7,d=4;for(0===o&&(n=138,d=3),i=0;i<=a;i++)if(s=o,o=t[(i+1)*2+1],!(++r<n)||s!==o){if(r<d)do z(e,s,e.bl_tree);while(0!=--r)else 0!==s?(s!==l&&(z(e,s,e.bl_tree),r--),z(e,16,e.bl_tree),C(e,r-3,2)):r<=10?(z(e,17,e.bl_tree),C(e,r-3,3)):(z(e,18,e.bl_tree),C(e,r-11,7));r=0,l=s,0===o?(n=138,d=3):s===o?(n=6,d=3):(n=7,d=4)}},I=!1,E=(e,t,a,i)=>{C(e,0+ +!!i,3),S(e),M(e,a),M(e,~a),e.pending_buf.set(e.window.subarray(t,t+a),e.pending),e.pending+=a};var O={_tr_init:e=>{I||((()=>{let e,t,a,o,r,n=Array(16);for(o=0,a=0;o<28;o++)for(y[o]=a,e=0;e<1<<c[o];e++)v[a++]=o;for(v[a-1]=o,r=0,o=0;o<16;o++)for(w[o]=r,e=0;e<1<<p[o];e++)m[r++]=o;for(r>>=7;o<30;o++)for(w[o]=r<<7,e=0;e<1<<p[o]-7;e++)m[256+r++]=o;for(t=0;t<=15;t++)n[t]=0;for(e=0;e<=143;)u[2*e+1]=8,e++,n[8]++;for(;e<=255;)u[2*e+1]=9,e++,n[9]++;for(;e<=279;)u[2*e+1]=7,e++,n[7]++;for(;e<=287;)u[2*e+1]=8,e++,n[8]++;for(L(u,287,n),e=0;e<30;e++)f[2*e+1]=5,f[2*e]=_(e,5);i=new x(u,c,257,286,15),s=new x(f,p,0,30,15),l=new x([],h,0,19,7)})(),I=!0),e.l_desc=new b(e.dyn_ltree,i),e.d_desc=new b(e.dyn_dtree,s),e.bl_desc=new b(e.bl_tree,l),e.bi_buf=0,e.bi_valid=0,B(e)},_tr_stored_block:E,_tr_flush_block:(e,t,a,i)=>{let s,l,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,a=0xf3ffc07f;for(t=0;t<=31;t++,a>>>=1)if(1&a&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),H(e,e.l_desc),H(e,e.d_desc),o=(e=>{let t;for(q(e,e.dyn_ltree,e.l_desc.max_code),q(e,e.dyn_dtree,e.d_desc.max_code),H(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*g[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,(l=e.static_len+3+7>>>3)<=s&&(s=l)):s=l=a+5,a+4<=s&&-1!==t?E(e,t,a,i):4===e.strategy||l===s?(C(e,2+ +!!i,3),V(e,u,f)):(C(e,4+ +!!i,3),((e,t,a,i)=>{let s;for(C(e,t-257,5),C(e,a-1,5),C(e,i-4,4),s=0;s<i;s++)C(e,e.bl_tree[2*g[s]+1],3);F(e,e.dyn_ltree,t-1),F(e,e.dyn_dtree,a-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),V(e,e.dyn_ltree,e.dyn_dtree)),B(e),i&&S(e)},_tr_tally:(e,t,a)=>(e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&a,e.last_lit++,0===t?e.dyn_ltree[2*a]++:(e.matches++,t--,e.dyn_ltree[(v[a]+256+1)*2]++,e.dyn_dtree[2*k(t)]++),e.last_lit===e.lit_bufsize-1),_tr_align:e=>{C(e,2,3),z(e,256,u),16===e.bi_valid?(M(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},U=(e,t,a,i)=>{let s=65535&e,l=e>>>16&65535,o=0;for(;0!==a;){o=a>2e3?2e3:a,a-=o;do l=l+(s=s+t[i++]|0)|0;while(--o)s%=65521,l%=65521}return s|l<<16};let X=new Uint32Array((()=>{let e,t=[];for(var a=0;a<256;a++){e=a;for(var i=0;i<8;i++)e=1&e?0xedb88320^e>>>1:e>>>1;t[a]=e}return t})());var T=(e,t,a,i)=>{let s=i+a;e^=-1;for(let a=i;a<s;a++)e=e>>>8^X[(e^t[a])&255];return -1^e},$={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Y={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};let{_tr_init:G,_tr_stored_block:R,_tr_flush_block:D,_tr_tally:Z,_tr_align:j}=O,{Z_NO_FLUSH:N,Z_PARTIAL_FLUSH:W,Z_FULL_FLUSH:J,Z_FINISH:K,Z_BLOCK:Q,Z_OK:ee,Z_STREAM_END:et,Z_STREAM_ERROR:ea,Z_DATA_ERROR:ei,Z_BUF_ERROR:es,Z_DEFAULT_COMPRESSION:el,Z_FILTERED:eo,Z_HUFFMAN_ONLY:er,Z_RLE:en,Z_FIXED:ed,Z_DEFAULT_STRATEGY:ec,Z_UNKNOWN:ep,Z_DEFLATED:eh}=Y,eg=573,eu=(e,t)=>(e.msg=$[t],t),ef=e=>(e<<1)-9*(e>4),em=e=>{let t=e.length;for(;--t>=0;)e[t]=0},ev=(e,t,a)=>(t<<e.hash_shift^a)&e.hash_mask,ey=e=>{let t=e.state,a=t.pending;a>e.avail_out&&(a=e.avail_out),0!==a&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+a),e.next_out),e.next_out+=a,t.pending_out+=a,e.total_out+=a,e.avail_out-=a,t.pending-=a,0===t.pending&&(t.pending_out=0))},ew=(e,t)=>{D(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ey(e.strm)},ex=(e,t)=>{e.pending_buf[e.pending++]=t},eb=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},ek=(e,t,a,i)=>{let s=e.avail_in;return(s>i&&(s=i),0===s)?0:(e.avail_in-=s,t.set(e.input.subarray(e.next_in,e.next_in+s),a),1===e.state.wrap?e.adler=U(e.adler,t,s,a):2===e.state.wrap&&(e.adler=T(e.adler,t,s,a)),e.next_in+=s,e.total_in+=s,s)},eM=(e,t)=>{let a,i,s=e.max_chain_length,l=e.strstart,o=e.prev_length,r=e.nice_match,n=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,d=e.window,c=e.w_mask,p=e.prev,h=e.strstart+258,g=d[l+o-1],u=d[l+o];e.prev_length>=e.good_match&&(s>>=2),r>e.lookahead&&(r=e.lookahead);do{if(d[(a=t)+o]!==u||d[a+o-1]!==g||d[a]!==d[l]||d[++a]!==d[l+1])continue;l+=2,a++;do;while(d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&d[++l]===d[++a]&&l<h)if(i=258-(h-l),l=h-258,i>o){if(e.match_start=t,o=i,i>=r)break;g=d[l+o-1],u=d[l+o]}}while((t=p[t&c])>n&&0!=--s)return o<=e.lookahead?o:e.lookahead},eC=e=>{let t,a,i,s,l,o=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=o+(o-262)){e.window.set(e.window.subarray(o,o+o),0),e.match_start-=o,e.strstart-=o,e.block_start-=o,t=a=e.hash_size;do i=e.head[--t],e.head[t]=i>=o?i-o:0;while(--a)t=a=o;do i=e.prev[--t],e.prev[t]=i>=o?i-o:0;while(--a)s+=o}if(0===e.strm.avail_in)break;if(a=ek(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=a,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=ev(e,e.ins_h,e.window[l+1]);e.insert&&(e.ins_h=ev(e,e.ins_h,e.window[l+3-1]),e.prev[l&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=l,l++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<262&&0!==e.strm.avail_in)},ez=(e,t)=>{let a,i;for(;;){if(e.lookahead<262){if(eC(e),e.lookahead<262&&t===N)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==a&&e.strstart-a<=e.w_size-262&&(e.match_length=eM(e,a)),e.match_length>=3)if(i=Z(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(0!=--e.match_length)e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=ev(e,e.ins_h,e.window[e.strstart+1]);else i=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=e.strstart<2?e.strstart:2,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2},e_=(e,t)=>{let a,i,s;for(;;){if(e.lookahead<262){if(eC(e),e.lookahead<262&&t===N)return 1;if(0===e.lookahead)break}if(a=0,e.lookahead>=3&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==a&&e.prev_length<e.max_lazy_match&&e.strstart-a<=e.w_size-262&&(e.match_length=eM(e,a),e.match_length<=5&&(e.strategy===eo||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){s=e.strstart+e.lookahead-3,i=Z(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=s&&(e.ins_h=ev(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(0!=--e.prev_length)if(e.match_available=0,e.match_length=2,e.strstart++,i&&(ew(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((i=Z(e,0,e.window[e.strstart-1]))&&ew(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return(e.match_available&&(i=Z(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2};function eL(e,t,a,i,s){this.good_length=e,this.max_lazy=t,this.nice_length=a,this.max_chain=i,this.func=s}let eB=[new eL(0,0,0,0,(e,t)=>{let a=65535;for(65535>e.pending_buf_size-5&&(a=e.pending_buf_size-5);;){if(e.lookahead<=1){if(eC(e),0===e.lookahead&&t===N)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;let i=e.block_start+a;if((0===e.strstart||e.strstart>=i)&&(e.lookahead=e.strstart-i,e.strstart=i,ew(e,!1),0===e.strm.avail_out)||e.strstart-e.block_start>=e.w_size-262&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:(e.strstart>e.block_start&&(ew(e,!1),e.strm.avail_out),1)}),new eL(4,4,8,4,ez),new eL(4,5,16,8,ez),new eL(4,6,32,32,ez),new eL(4,4,16,16,e_),new eL(8,16,32,32,e_),new eL(8,16,128,128,e_),new eL(8,32,128,256,e_),new eL(32,128,258,1024,e_),new eL(32,258,258,4096,e_)];function eS(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=eh,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(2*eg),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),em(this.dyn_ltree),em(this.dyn_dtree),em(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),em(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),em(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}var eA=(e,t)=>{let a,i;if(!e||!e.state||t>Q||t<0)return e?eu(e,ea):ea;let s=e.state;if(!e.output||!e.input&&0!==e.avail_in||666===s.status&&t!==K)return eu(e,0===e.avail_out?es:ea);s.strm=e;let l=s.last_flush;if(s.last_flush=t,42===s.status)if(2===s.wrap)e.adler=0,ex(s,31),ex(s,139),ex(s,8),s.gzhead?(ex(s,+!!s.gzhead.text+2*!!s.gzhead.hcrc+4*!!s.gzhead.extra+8*!!s.gzhead.name+16*!!s.gzhead.comment),ex(s,255&s.gzhead.time),ex(s,s.gzhead.time>>8&255),ex(s,s.gzhead.time>>16&255),ex(s,s.gzhead.time>>24&255),ex(s,9===s.level?2:4*(s.strategy>=er||s.level<2)),ex(s,255&s.gzhead.os),s.gzhead.extra&&s.gzhead.extra.length&&(ex(s,255&s.gzhead.extra.length),ex(s,s.gzhead.extra.length>>8&255)),s.gzhead.hcrc&&(e.adler=T(e.adler,s.pending_buf,s.pending,0)),s.gzindex=0,s.status=69):(ex(s,0),ex(s,0),ex(s,0),ex(s,0),ex(s,0),ex(s,9===s.level?2:4*(s.strategy>=er||s.level<2)),ex(s,3),s.status=113);else{let t=eh+(s.w_bits-8<<4)<<8;t|=(s.strategy>=er||s.level<2?0:s.level<6?1:6===s.level?2:3)<<6,0!==s.strstart&&(t|=32),t+=31-t%31,s.status=113,eb(s,t),0!==s.strstart&&(eb(s,e.adler>>>16),eb(s,65535&e.adler)),e.adler=1}if(69===s.status)if(s.gzhead.extra){for(a=s.pending;s.gzindex<(65535&s.gzhead.extra.length)&&(s.pending!==s.pending_buf_size||(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending!==s.pending_buf_size));)ex(s,255&s.gzhead.extra[s.gzindex]),s.gzindex++;s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),s.gzindex===s.gzhead.extra.length&&(s.gzindex=0,s.status=73)}else s.status=73;if(73===s.status)if(s.gzhead.name){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.name.length?255&s.gzhead.name.charCodeAt(s.gzindex++):0,ex(s,i)}while(0!==i)s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.gzindex=0,s.status=91)}else s.status=91;if(91===s.status)if(s.gzhead.comment){a=s.pending;do{if(s.pending===s.pending_buf_size&&(s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),ey(e),a=s.pending,s.pending===s.pending_buf_size)){i=1;break}i=s.gzindex<s.gzhead.comment.length?255&s.gzhead.comment.charCodeAt(s.gzindex++):0,ex(s,i)}while(0!==i)s.gzhead.hcrc&&s.pending>a&&(e.adler=T(e.adler,s.pending_buf,s.pending-a,a)),0===i&&(s.status=103)}else s.status=103;if(103===s.status&&(s.gzhead.hcrc?(s.pending+2>s.pending_buf_size&&ey(e),s.pending+2<=s.pending_buf_size&&(ex(s,255&e.adler),ex(s,e.adler>>8&255),e.adler=0,s.status=113)):s.status=113),0!==s.pending){if(ey(e),0===e.avail_out)return s.last_flush=-1,ee}else if(0===e.avail_in&&ef(t)<=ef(l)&&t!==K)return eu(e,es);if(666===s.status&&0!==e.avail_in)return eu(e,es);if(0!==e.avail_in||0!==s.lookahead||t!==N&&666!==s.status){let a=s.strategy===er?((e,t)=>{let a;for(;;){if(0===e.lookahead&&(eC(e),0===e.lookahead)){if(t===N)return 1;break}if(e.match_length=0,a=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,a&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2})(s,t):s.strategy===en?((e,t)=>{let a,i,s,l,o=e.window;for(;;){if(e.lookahead<=258){if(eC(e),e.lookahead<=258&&t===N)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(i=o[s=e.strstart-1])===o[++s]&&i===o[++s]&&i===o[++s]){l=e.strstart+258;do;while(i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&i===o[++s]&&s<l)e.match_length=258-(l-s),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(a=Z(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(a=Z(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),a&&(ew(e,!1),0===e.strm.avail_out))return 1}return(e.insert=0,t===K)?(ew(e,!0),0===e.strm.avail_out)?3:4:e.last_lit&&(ew(e,!1),0===e.strm.avail_out)?1:2})(s,t):eB[s.level].func(s,t);if((3===a||4===a)&&(s.status=666),1===a||3===a)return 0===e.avail_out&&(s.last_flush=-1),ee;if(2===a&&(t===W?j(s):t!==Q&&(R(s,0,0,!1),t===J&&(em(s.head),0===s.lookahead&&(s.strstart=0,s.block_start=0,s.insert=0))),ey(e),0===e.avail_out))return s.last_flush=-1,ee}return t!==K?ee:s.wrap<=0?et:(2===s.wrap?(ex(s,255&e.adler),ex(s,e.adler>>8&255),ex(s,e.adler>>16&255),ex(s,e.adler>>24&255),ex(s,255&e.total_in),ex(s,e.total_in>>8&255),ex(s,e.total_in>>16&255),ex(s,e.total_in>>24&255)):(eb(s,e.adler>>>16),eb(s,65535&e.adler)),ey(e),s.wrap>0&&(s.wrap=-s.wrap),0!==s.pending?ee:et)},eP=e=>{if(!e||!e.state)return ea;let t=e.state.status;return 42!==t&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?eu(e,ea):(e.state=null,113===t?eu(e,ei):ee)};let eV=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var eH=function(e){let t=Array.prototype.slice.call(arguments,1);for(;t.length;){let a=t.shift();if(a){if("object"!=typeof a)throw TypeError(a+"must be non-object");for(let t in a)eV(a,t)&&(e[t]=a[t])}}return e},eq=e=>{let t=0;for(let a=0,i=e.length;a<i;a++)t+=e[a].length;let a=new Uint8Array(t);for(let t=0,i=0,s=e.length;t<s;t++){let s=e[t];a.set(s,i),i+=s.length}return a};let eF=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){eF=!1}let eI=new Uint8Array(256);for(let e=0;e<256;e++)eI[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;eI[254]=eI[254]=1;var eE=e=>{let t,a,i,s,l,o=e.length,r=0;for(s=0;s<o;s++)(64512&(a=e.charCodeAt(s)))==55296&&s+1<o&&(64512&(i=e.charCodeAt(s+1)))==56320&&(a=65536+(a-55296<<10)+(i-56320),s++),r+=a<128?1:a<2048?2:a<65536?3:4;for(t=new Uint8Array(r),l=0,s=0;l<r;s++)(64512&(a=e.charCodeAt(s)))==55296&&s+1<o&&(64512&(i=e.charCodeAt(s+1)))==56320&&(a=65536+(a-55296<<10)+(i-56320),s++),a<128?t[l++]=a:(a<2048?t[l++]=192|a>>>6:(a<65536?t[l++]=224|a>>>12:(t[l++]=240|a>>>18,t[l++]=128|a>>>12&63),t[l++]=128|a>>>6&63),t[l++]=128|63&a);return t},eO=(e,t)=>{let a,i,s=t||e.length,l=Array(2*s);for(i=0,a=0;a<s;){let t=e[a++];if(t<128){l[i++]=t;continue}let o=eI[t];if(o>4){l[i++]=65533,a+=o-1;continue}for(t&=2===o?31:3===o?15:7;o>1&&a<s;)t=t<<6|63&e[a++],o--;if(o>1){l[i++]=65533;continue}t<65536?l[i++]=t:(t-=65536,l[i++]=55296|t>>10&1023,l[i++]=56320|1023&t)}var o=i;if(o<65534&&l.subarray&&eF)return String.fromCharCode.apply(null,l.length===o?l:l.subarray(0,o));let r="";for(let e=0;e<o;e++)r+=String.fromCharCode(l[e]);return r},eU=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let a=t-1;for(;a>=0&&(192&e[a])==128;)a--;return a<0||0===a?t:a+eI[e[a]]>t?a:t},eX=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};let eT=Object.prototype.toString,{Z_NO_FLUSH:e$,Z_SYNC_FLUSH:eY,Z_FULL_FLUSH:eG,Z_FINISH:eR,Z_OK:eD,Z_STREAM_END:eZ,Z_DEFAULT_COMPRESSION:ej,Z_DEFAULT_STRATEGY:eN,Z_DEFLATED:eW}=Y;function eJ(e){let t,a;this.options=eH({level:ej,method:eW,chunkSize:16384,windowBits:15,memLevel:8,strategy:eN},e||{});let i=this.options;i.raw&&i.windowBits>0?i.windowBits=-i.windowBits:i.gzip&&i.windowBits>0&&i.windowBits<16&&(i.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eX,this.strm.avail_out=0;let s=((e,t,a,i,s,l)=>{var o,r;let n;if(!e)return ea;let d=1;if(t===el&&(t=6),i<0?(d=0,i=-i):i>15&&(d=2,i-=16),s<1||s>9||a!==eh||i<8||i>15||t<0||t>9||l<0||l>ed)return eu(e,ea);8===i&&(i=9);let c=new eS;return e.state=c,c.strm=e,c.wrap=d,c.gzhead=null,c.w_bits=i,c.w_size=1<<c.w_bits,c.w_mask=c.w_size-1,c.hash_bits=s+7,c.hash_size=1<<c.hash_bits,c.hash_mask=c.hash_size-1,c.hash_shift=~~((c.hash_bits+3-1)/3),c.window=new Uint8Array(2*c.w_size),c.head=new Uint16Array(c.hash_size),c.prev=new Uint16Array(c.w_size),c.lit_bufsize=1<<s+6,c.pending_buf_size=4*c.lit_bufsize,c.pending_buf=new Uint8Array(c.pending_buf_size),c.d_buf=+c.lit_bufsize,c.l_buf=3*c.lit_bufsize,c.level=t,c.strategy=l,c.method=a,(n=(e=>{if(!e||!e.state)return eu(e,ea);e.total_in=e.total_out=0,e.data_type=ep;let t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:113,e.adler=+(2!==t.wrap),t.last_flush=N,G(t),ee})(o=e))===ee&&((r=o.state).window_size=2*r.w_size,em(r.head),r.max_lazy_match=eB[r.level].max_lazy,r.good_match=eB[r.level].good_length,r.nice_match=eB[r.level].nice_length,r.max_chain_length=eB[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),n})(this.strm,i.level,i.method,i.windowBits,i.memLevel,i.strategy);if(s!==eD)throw Error($[s]);if(i.header&&(t=this.strm,a=i.header,t&&t.state&&2===t.state.wrap&&(t.state.gzhead=a)),i.dictionary){let e;if(e="string"==typeof i.dictionary?eE(i.dictionary):"[object ArrayBuffer]"===eT.call(i.dictionary)?new Uint8Array(i.dictionary):i.dictionary,(s=((e,t)=>{let a=t.length;if(!e||!e.state)return ea;let i=e.state,s=i.wrap;if(2===s||1===s&&42!==i.status||i.lookahead)return ea;if(1===s&&(e.adler=U(e.adler,t,a,0)),i.wrap=0,a>=i.w_size){0===s&&(em(i.head),i.strstart=0,i.block_start=0,i.insert=0);let e=new Uint8Array(i.w_size);e.set(t.subarray(a-i.w_size,a),0),t=e,a=i.w_size}let l=e.avail_in,o=e.next_in,r=e.input;for(e.avail_in=a,e.next_in=0,e.input=t,eC(i);i.lookahead>=3;){let e=i.strstart,t=i.lookahead-2;do i.ins_h=ev(i,i.ins_h,i.window[e+3-1]),i.prev[e&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=e,e++;while(--t)i.strstart=e,i.lookahead=2,eC(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=o,e.input=r,e.avail_in=l,i.wrap=s,ee})(this.strm,e))!==eD)throw Error($[s]);this._dict_set=!0}}function eK(e,t){let a=new eJ(t);if(a.push(e,!0),a.err)throw a.msg||$[a.err];return a.result}eJ.prototype.push=function(e,t){let a,i,s=this.strm,l=this.options.chunkSize;if(this.ended)return!1;for(i=t===~~t?t:!0===t?eR:e$,"string"==typeof e?s.input=eE(e):"[object ArrayBuffer]"===eT.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;;){if(0===s.avail_out&&(s.output=new Uint8Array(l),s.next_out=0,s.avail_out=l),(i===eY||i===eG)&&s.avail_out<=6){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if((a=eA(s,i))===eZ)return s.next_out>0&&this.onData(s.output.subarray(0,s.next_out)),a=eP(this.strm),this.onEnd(a),this.ended=!0,a===eD;if(0===s.avail_out){this.onData(s.output);continue}if(i>0&&s.next_out>0){this.onData(s.output.subarray(0,s.next_out)),s.avail_out=0;continue}if(0===s.avail_in)break}return!0},eJ.prototype.onData=function(e){this.chunks.push(e)},eJ.prototype.onEnd=function(e){e===eD&&(this.result=eq(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var eQ=function(e,t){let a,i,s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_=e.state;a=e.next_in,C=e.input,i=a+(e.avail_in-5),s=e.next_out,z=e.output,l=s-(t-e.avail_out),o=s+(e.avail_out-257),r=_.dmax,n=_.wsize,d=_.whave,c=_.wnext,p=_.window,h=_.hold,g=_.bits,u=_.lencode,f=_.distcode,m=(1<<_.lenbits)-1,v=(1<<_.distbits)-1;t:do for(g<15&&(h+=C[a++]<<g,g+=8,h+=C[a++]<<g,g+=8),y=u[h&m];;){if(h>>>=w=y>>>24,g-=w,0==(w=y>>>16&255))z[s++]=65535&y;else if(16&w)for(x=65535&y,(w&=15)&&(g<w&&(h+=C[a++]<<g,g+=8),x+=h&(1<<w)-1,h>>>=w,g-=w),g<15&&(h+=C[a++]<<g,g+=8,h+=C[a++]<<g,g+=8),y=f[h&v];;){if(h>>>=w=y>>>24,g-=w,16&(w=y>>>16&255)){if(b=65535&y,g<(w&=15)&&(h+=C[a++]<<g,(g+=8)<w&&(h+=C[a++]<<g,g+=8)),(b+=h&(1<<w)-1)>r){e.msg="invalid distance too far back",_.mode=30;break t}if(h>>>=w,g-=w,b>(w=s-l)){if((w=b-w)>d&&_.sane){e.msg="invalid distance too far back",_.mode=30;break t}if(k=0,M=p,0===c){if(k+=n-w,w<x){x-=w;do z[s++]=p[k++];while(--w)k=s-b,M=z}}else if(c<w){if(k+=n+c-w,(w-=c)<x){x-=w;do z[s++]=p[k++];while(--w)if(k=0,c<x){x-=w=c;do z[s++]=p[k++];while(--w)k=s-b,M=z}}}else if(k+=c-w,w<x){x-=w;do z[s++]=p[k++];while(--w)k=s-b,M=z}for(;x>2;)z[s++]=M[k++],z[s++]=M[k++],z[s++]=M[k++],x-=3;x&&(z[s++]=M[k++],x>1&&(z[s++]=M[k++]))}else{k=s-b;do z[s++]=z[k++],z[s++]=z[k++],z[s++]=z[k++],x-=3;while(x>2)x&&(z[s++]=z[k++],x>1&&(z[s++]=z[k++]))}}else if((64&w)==0){y=f[(65535&y)+(h&(1<<w)-1)];continue}else{e.msg="invalid distance code",_.mode=30;break t}break}else if((64&w)==0){y=u[(65535&y)+(h&(1<<w)-1)];continue}else if(32&w){_.mode=12;break t}else{e.msg="invalid literal/length code",_.mode=30;break t}break}while(a<i&&s<o)a-=x=g>>3,g-=x<<3,h&=(1<<g)-1,e.next_in=a,e.next_out=s,e.avail_in=a<i?5+(i-a):5-(a-i),e.avail_out=s<o?257+(o-s):257-(s-o),_.hold=h,_.bits=g};let e1=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),e0=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),e2=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),e3=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var e5=(e,t,a,i,s,l,o,r)=>{let n,d,c,p,h,g,u,f,m,v=r.bits,y=0,w=0,x=0,b=0,k=0,M=0,C=0,z=0,_=0,L=0,B=null,S=0,A=new Uint16Array(16),P=new Uint16Array(16),V=null,H=0;for(y=0;y<=15;y++)A[y]=0;for(w=0;w<i;w++)A[t[a+w]]++;for(k=v,b=15;b>=1&&0===A[b];b--);if(k>b&&(k=b),0===b)return s[l++]=0x1400000,s[l++]=0x1400000,r.bits=1,0;for(x=1;x<b&&0===A[x];x++);for(k<x&&(k=x),z=1,y=1;y<=15;y++)if(z<<=1,(z-=A[y])<0)return -1;if(z>0&&(0===e||1!==b))return -1;for(P[1]=0,y=1;y<15;y++)P[y+1]=P[y]+A[y];for(w=0;w<i;w++)0!==t[a+w]&&(o[P[t[a+w]]++]=w);if(0===e?(B=V=o,g=19):1===e?(B=e1,S-=257,V=e0,H-=257,g=256):(B=e2,V=e3,g=-1),L=0,w=0,y=x,h=l,M=k,C=0,c=-1,p=(_=1<<k)-1,1===e&&_>852||2===e&&_>592)return 1;for(;;){u=y-C,o[w]<g?(f=0,m=o[w]):o[w]>g?(f=V[H+o[w]],m=B[S+o[w]]):(f=96,m=0),n=1<<y-C,x=d=1<<M;do s[h+(L>>C)+(d-=n)]=u<<24|f<<16|m;while(0!==d)for(n=1<<y-1;L&n;)n>>=1;if(0!==n?(L&=n-1,L+=n):L=0,w++,0==--A[y]){if(y===b)break;y=t[a+o[w]]}if(y>k&&(L&p)!==c){for(0===C&&(C=k),h+=x,z=1<<(M=y-C);M+C<b&&!((z-=A[M+C])<=0);)M++,z<<=1;if(_+=1<<M,1===e&&_>852||2===e&&_>592)return 1;s[c=L&p]=k<<24|M<<16|h-l}}return 0!==L&&(s[h+L]=y-C<<24|4194304),r.bits=k,0};let{Z_FINISH:e4,Z_BLOCK:e6,Z_TREES:e7,Z_OK:e8,Z_STREAM_END:e9,Z_NEED_DICT:te,Z_STREAM_ERROR:tt,Z_DATA_ERROR:ta,Z_MEM_ERROR:ti,Z_BUF_ERROR:ts,Z_DEFLATED:tl}=Y,to=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function tr(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}let tn=e=>{if(!e||!e.state)return tt;let t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,(e=>{if(!e||!e.state)return tt;let t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,e8})(e)},td=!0,tc=e=>{if(td){o=new Int32Array(512),r=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(e5(1,e.lens,0,288,o,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;e5(2,e.lens,0,32,r,0,e.work,{bits:5}),td=!1}e.lencode=o,e.lenbits=9,e.distcode=r,e.distbits=5},tp=(e,t,a,i)=>{let s,l=e.state;return null===l.window&&(l.wsize=1<<l.wbits,l.wnext=0,l.whave=0,l.window=new Uint8Array(l.wsize)),i>=l.wsize?(l.window.set(t.subarray(a-l.wsize,a),0),l.wnext=0,l.whave=l.wsize):((s=l.wsize-l.wnext)>i&&(s=i),l.window.set(t.subarray(a-i,a-i+s),l.wnext),(i-=s)?(l.window.set(t.subarray(a-i,a),0),l.wnext=i,l.whave=l.wsize):(l.wnext+=s,l.wnext===l.wsize&&(l.wnext=0),l.whave<l.wsize&&(l.whave+=s))),0};var th=(e,t)=>{let a,i,s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_=0,L=new Uint8Array(4),B=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return tt;12===(a=e.state).mode&&(a.mode=13),o=e.next_out,s=e.output,n=e.avail_out,l=e.next_in,i=e.input,r=e.avail_in,d=a.hold,c=a.bits,p=r,h=n,M=e8;a:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(2&a.wrap&&35615===d){a.check=0,L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0),d=0,c=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&d)<<8)+(d>>8))%31){e.msg="incorrect header check",a.mode=30;break}if((15&d)!==tl){e.msg="unknown compression method",a.mode=30;break}if(d>>>=4,c-=4,k=(15&d)+8,0===a.wbits)a.wbits=k;else if(k>a.wbits){e.msg="invalid window size",a.mode=30;break}a.dmax=1<<a.wbits,e.adler=a.check=1,a.mode=512&d?10:12,d=0,c=0;break;case 2:for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(a.flags=d,(255&a.flags)!==tl){e.msg="unknown compression method",a.mode=30;break}if(57344&a.flags){e.msg="unknown header flags set",a.mode=30;break}a.head&&(a.head.text=d>>8&1),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0,a.mode=3;case 3:for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.head&&(a.head.time=d),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,L[2]=d>>>16&255,L[3]=d>>>24&255,a.check=T(a.check,L,4,0)),d=0,c=0,a.mode=4;case 4:for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.head&&(a.head.xflags=255&d,a.head.os=d>>8),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0,a.mode=5;case 5:if(1024&a.flags){for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.length=d,a.head&&(a.head.extra_len=d),512&a.flags&&(L[0]=255&d,L[1]=d>>>8&255,a.check=T(a.check,L,2,0)),d=0,c=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&((g=a.length)>r&&(g=r),g&&(a.head&&(k=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(l,l+g),k)),512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,a.length-=g),a.length))break a;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===r)break a;g=0;do k=i[l+g++],a.head&&k&&a.length<65536&&(a.head.name+=String.fromCharCode(k));while(k&&g<r)if(512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,k)break a}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===r)break a;g=0;do k=i[l+g++],a.head&&k&&a.length<65536&&(a.head.comment+=String.fromCharCode(k));while(k&&g<r)if(512&a.flags&&(a.check=T(a.check,i,g,l)),r-=g,l+=g,k)break a}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;c<16;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d!==(65535&a.check)){e.msg="header crc mismatch",a.mode=30;break}d=0,c=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),e.adler=a.check=0,a.mode=12;break;case 10:for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}e.adler=a.check=to(d),d=0,c=0,a.mode=11;case 11:if(0===a.havedict)return e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,te;e.adler=a.check=1,a.mode=12;case 12:if(t===e6||t===e7)break a;case 13:if(a.last){d>>>=7&c,c-=7&c,a.mode=27;break}for(;c<3;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}switch(a.last=1&d,c-=1,3&(d>>>=1)){case 0:a.mode=14;break;case 1:if(tc(a),a.mode=20,t===e7){d>>>=2,c-=2;break a}break;case 2:a.mode=17;break;case 3:e.msg="invalid block type",a.mode=30}d>>>=2,c-=2;break;case 14:for(d>>>=7&c,c-=7&c;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if((65535&d)!=(d>>>16^65535)){e.msg="invalid stored block lengths",a.mode=30;break}if(a.length=65535&d,d=0,c=0,a.mode=15,t===e7)break a;case 15:a.mode=16;case 16:if(g=a.length){if(g>r&&(g=r),g>n&&(g=n),0===g)break a;s.set(i.subarray(l,l+g),o),r-=g,l+=g,n-=g,o+=g,a.length-=g;break}a.mode=12;break;case 17:for(;c<14;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(a.nlen=(31&d)+257,c-=5,a.ndist=(31&(d>>>=5))+1,c-=5,a.ncode=(15&(d>>>=5))+4,d>>>=4,c-=4,a.nlen>286||a.ndist>30){e.msg="too many length or distance symbols",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;c<3;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.lens[B[a.have++]]=7&d,d>>>=3,c-=3}for(;a.have<19;)a.lens[B[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,C={bits:a.lenbits},M=e5(0,a.lens,0,19,a.lencode,0,a.work,C),a.lenbits=C.bits,M){e.msg="invalid code lengths set",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;m=(_=a.lencode[d&(1<<a.lenbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(y<16)d>>>=m,c-=m,a.lens[a.have++]=y;else{if(16===y){for(z=m+2;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d>>>=m,c-=m,0===a.have){e.msg="invalid bit length repeat",a.mode=30;break}k=a.lens[a.have-1],g=3+(3&d),d>>>=2,c-=2}else if(17===y){for(z=m+3;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=m,c-=m,k=0,g=3+(7&d),d>>>=3,c-=3}else{for(z=m+7;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=m,c-=m,k=0,g=11+(127&d),d>>>=7,c-=7}if(a.have+g>a.nlen+a.ndist){e.msg="invalid bit length repeat",a.mode=30;break}for(;g--;)a.lens[a.have++]=k}}if(30===a.mode)break;if(0===a.lens[256]){e.msg="invalid code -- missing end-of-block",a.mode=30;break}if(a.lenbits=9,C={bits:a.lenbits},M=e5(1,a.lens,0,a.nlen,a.lencode,0,a.work,C),a.lenbits=C.bits,M){e.msg="invalid literal/lengths set",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,C={bits:a.distbits},M=e5(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,C),a.distbits=C.bits,M){e.msg="invalid distances set",a.mode=30;break}if(a.mode=20,t===e7)break a;case 20:a.mode=21;case 21:if(r>=6&&n>=258){e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,eQ(e,h),o=e.next_out,s=e.output,n=e.avail_out,l=e.next_in,i=e.input,r=e.avail_in,d=a.hold,c=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;m=(_=a.lencode[d&(1<<a.lenbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(v&&(240&v)==0){for(w=m,x=v,b=y;m=(_=a.lencode[b+((d&(1<<w+x)-1)>>w)])>>>24,v=_>>>16&255,y=65535&_,!(w+m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=w,c-=w,a.back+=w}if(d>>>=m,c-=m,a.back+=m,a.length=y,0===v){a.mode=26;break}if(32&v){a.back=-1,a.mode=12;break}if(64&v){e.msg="invalid literal/length code",a.mode=30;break}a.extra=15&v,a.mode=22;case 22:if(a.extra){for(z=a.extra;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.length+=d&(1<<a.extra)-1,d>>>=a.extra,c-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;m=(_=a.distcode[d&(1<<a.distbits)-1])>>>24,v=_>>>16&255,y=65535&_,!(m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if((240&v)==0){for(w=m,x=v,b=y;m=(_=a.distcode[b+((d&(1<<w+x)-1)>>w)])>>>24,v=_>>>16&255,y=65535&_,!(w+m<=c);){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}d>>>=w,c-=w,a.back+=w}if(d>>>=m,c-=m,a.back+=m,64&v){e.msg="invalid distance code",a.mode=30;break}a.offset=y,a.extra=15&v,a.mode=24;case 24:if(a.extra){for(z=a.extra;c<z;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}a.offset+=d&(1<<a.extra)-1,d>>>=a.extra,c-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){e.msg="invalid distance too far back",a.mode=30;break}a.mode=25;case 25:if(0===n)break a;if(g=h-n,a.offset>g){if((g=a.offset-g)>a.whave&&a.sane){e.msg="invalid distance too far back",a.mode=30;break}g>a.wnext?(g-=a.wnext,u=a.wsize-g):u=a.wnext-g,g>a.length&&(g=a.length),f=a.window}else f=s,u=o-a.offset,g=a.length;g>n&&(g=n),n-=g,a.length-=g;do s[o++]=f[u++];while(--g)0===a.length&&(a.mode=21);break;case 26:if(0===n)break a;s[o++]=a.length,n--,a.mode=21;break;case 27:if(a.wrap){for(;c<32;){if(0===r)break a;r--,d|=i[l++]<<c,c+=8}if(h-=n,e.total_out+=h,a.total+=h,h&&(e.adler=a.check=a.flags?T(a.check,s,h,o-h):U(a.check,s,h,o-h)),h=n,(a.flags?d:to(d))!==a.check){e.msg="incorrect data check",a.mode=30;break}d=0,c=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;c<32;){if(0===r)break a;r--,d+=i[l++]<<c,c+=8}if(d!==(0|a.total)){e.msg="incorrect length check",a.mode=30;break}d=0,c=0}a.mode=29;case 29:M=e9;break a;case 30:M=ta;break a;case 31:return ti;default:return tt}return e.next_out=o,e.avail_out=n,e.next_in=l,e.avail_in=r,a.hold=d,a.bits=c,(a.wsize||h!==e.avail_out&&a.mode<30&&(a.mode<27||t!==e4))&&tp(e,e.output,e.next_out,h-e.avail_out),p-=e.avail_in,h-=e.avail_out,e.total_in+=p,e.total_out+=h,a.total+=h,a.wrap&&h&&(e.adler=a.check=a.flags?T(a.check,s,h,e.next_out-h):U(a.check,s,h,e.next_out-h)),e.data_type=a.bits+64*!!a.last+128*(12===a.mode)+256*(20===a.mode||15===a.mode),(0===p&&0===h||t===e4)&&M===e8&&(M=ts),M},tg=e=>{if(!e||!e.state)return tt;let t=e.state;return t.window&&(t.window=null),e.state=null,e8},tu=(e,t)=>{let a,i=t.length;return e&&e.state&&(0===(a=e.state).wrap||11===a.mode)?11===a.mode&&U(1,t,i,0)!==a.check?ta:tp(e,t,i,i)?(a.mode=31,ti):(a.havedict=1,e8):tt},tf=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};let tm=Object.prototype.toString,{Z_NO_FLUSH:tv,Z_FINISH:ty,Z_OK:tw,Z_STREAM_END:tx,Z_NEED_DICT:tb,Z_STREAM_ERROR:tk,Z_DATA_ERROR:tM,Z_MEM_ERROR:tC}=Y;function tz(e){this.options=eH({chunkSize:65536,windowBits:15,to:""},e||{});let t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),t.windowBits>=0&&t.windowBits<16&&!(e&&e.windowBits)&&(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&(15&t.windowBits)==0&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new eX,this.strm.avail_out=0;let a=((e,t)=>{if(!e)return tt;let a=new tr;e.state=a,a.window=null;let i=((e,t)=>{let a;if(!e||!e.state)return tt;let i=e.state;return(t<0?(a=0,t=-t):(a=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?tt:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=a,i.wbits=t,tn(e))})(e,t);return i!==e8&&(e.state=null),i})(this.strm,t.windowBits);if(a!==tw||(this.header=new tf,((e,t)=>{if(!e||!e.state)return;let a=e.state;return(2&a.wrap)==0||(a.head=t,t.done=!1)})(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=eE(t.dictionary):"[object ArrayBuffer]"===tm.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw)&&(a=tu(this.strm,t.dictionary))!==tw))throw Error($[a])}function t_(e,t){let a=new tz(t);if(a.push(e),a.err)throw a.msg||$[a.err];return a.result}tz.prototype.push=function(e,t){let a,i,s,l=this.strm,o=this.options.chunkSize,r=this.options.dictionary;if(this.ended)return!1;for(i=t===~~t?t:!0===t?ty:tv,"[object ArrayBuffer]"===tm.call(e)?l.input=new Uint8Array(e):l.input=e,l.next_in=0,l.avail_in=l.input.length;;){for(0===l.avail_out&&(l.output=new Uint8Array(o),l.next_out=0,l.avail_out=o),(a=th(l,i))===tb&&r&&((a=tu(l,r))===tw?a=th(l,i):a===tM&&(a=tb));l.avail_in>0&&a===tx&&l.state.wrap>0&&0!==e[l.next_in];)tn(l),a=th(l,i);switch(a){case tk:case tM:case tb:case tC:return this.onEnd(a),this.ended=!0,!1}if(s=l.avail_out,l.next_out&&(0===l.avail_out||a===tx))if("string"===this.options.to){let e=eU(l.output,l.next_out),t=l.next_out-e,a=eO(l.output,e);l.next_out=t,l.avail_out=o-t,t&&l.output.set(l.output.subarray(e,e+t),0),this.onData(a)}else this.onData(l.output.length===l.next_out?l.output:l.output.subarray(0,l.next_out));if(a!==tw||0!==s){if(a===tx)return a=tg(this.strm),this.onEnd(a),this.ended=!0,!0;if(0===l.avail_in)break}}return!0},tz.prototype.onData=function(e){this.chunks.push(e)},tz.prototype.onEnd=function(e){e===tw&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=eq(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};let{Deflate:tL,deflate:tB,deflateRaw:tS,gzip:tA}={Deflate:eJ,deflate:eK,deflateRaw:function(e,t){return(t=t||{}).raw=!0,eK(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,eK(e,t)},constants:Y},{Inflate:tP,inflate:tV,inflateRaw:tH,ungzip:tq}={Inflate:tz,inflate:t_,inflateRaw:function(e,t){return(t=t||{}).raw=!0,t_(e,t)},ungzip:t_,constants:Y};a.d(t,{Gy:()=>tL,Kc:()=>tB,UD:()=>tV})},117(e,t,a){let i;a.d(t,{x3j:()=>rt,aoY:()=>vd,$BZ:()=>vn,y15:()=>oF,OvW:()=>r1,Txp:()=>r4,Q5o:()=>fl,Hdr:()=>s$,UA7:()=>fz,JHX:()=>rG,yEg:()=>oT,UhG:()=>oI,OFB:()=>vr,Yep:()=>vp,z4o:()=>sl,Ahp:()=>vc,txp:()=>fr,rRT:()=>f_});var s=a(2718),l=a(1179),o=a(2842),r=a(4238),n=a(5633),d=a(2109),c=a(7086),p=a(2981);let h=["flowchart","mindmap","sequence","timeline","chart","state-machine","gantt","er","class","org-chart"],g=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function u(e){return e.length<=64&&g.test(e)}let f=s.ukk,m=s.mSG(s.QfV,s.$r1),v=Object.freeze({paper:"#f6f1e7",card:"#fffdf8",ink:"#1a1712",accent:"#8f707f"}),y=Object.freeze({accentColor:v.accent,backgroundColor:v.card});function w(e,t){return e.pipe(s.tiU(o.PyW(t)))}s.xCb(h);let x=s.xCb(["flowchart","mindmap"]),b=s.xCb(["TB","BT","LR","RL"]),k=s.xCb(["straight","orthogonal","curved"]);class M extends s.Xsx("DiagramIconRef")({slug:f.check(s.Pto(g),s.NYj(64))}){}let C=["cloud","datacenter","region","zone","vpc","subnet","cluster","namespace"],z=s.xCb(C);class _ extends s.Xsx("DiagramGroup")({id:f,label:f,parent:s.lqM(f),kind:s.lqM(z)}){}class L extends s.Xsx("DiagramLane")({id:f,label:f}){}let B=["database","queue","document","storage"],S=s.xCb(B);class A extends s.Xsx("DiagramNode")({id:f,label:f,group:s.lqM(f),lane:s.lqM(f),kind:s.lqM(f),shape:s.lqM(S),icon:s.lqM(M),metadata:w(m,{})}){}class P extends A.extend("GraphNode")({description:s.lqM(f)}){}class V extends s.Xsx("DiagramEdge")({id:f,source:f,target:f,label:s.lqM(f),metadata:w(m,{})}){}let H=s.QfV.check(s.Pto(/^#[0-9a-fA-F]{6}$/));class q extends s.Xsx("DiagramStyle")({accentColor:w(H,y.accentColor),backgroundColor:w(H,y.backgroundColor)}){}class F extends s.Xsx("DiagramLayout")({direction:w(b,"LR"),edgeRouting:w(k,"orthogonal")}){}class I extends s.Xsx("IntermediateDiagram")({id:f,title:f,type:w(x,"flowchart"),nodes:s.O31(P).pipe(s.fXn).check(s.tJb(1)),edges:w(s.O31(V).pipe(s.fXn),[]),groups:s.lqM(s.O31(_).pipe(s.fXn)),lanes:s.lqM(s.O31(L).pipe(s.fXn)),layout:w(F,{direction:"LR",edgeRouting:"orthogonal"}),style:w(q,y),metadata:w(m,{})}){}class E extends Error{constructor(e){super(e),this.name="DiagramValidationError"}}let O=e=>{let t=new Set;for(let a of e){if(t.has(a))return a;t.add(a)}};function U(e){let t=O(e.nodes.map(e=>e.id));if(t)throw new E(`Duplicate node id "${t}" is not allowed.`);let a=O(e.edges.map(e=>e.id));if(a)throw new E(`Duplicate edge id "${a}" is not allowed.`);let i=O((e.groups??[]).map(e=>e.id));if(i)throw new E(`Duplicate group id "${i}" is not allowed.`);let s=new Set((e.groups??[]).map(e=>e.id)),l=new Map((e.groups??[]).flatMap(e=>void 0===e.parent?[]:[[e.id,e.parent]]));for(let[e,t]of l){if(!s.has(t))throw new E(`Group "${e}" references missing parent group "${t}".`);let a=new Set([e]);for(let t=l.get(e);void 0!==t;){if(a.has(t))throw new E(`Group "${e}" is nested inside itself.`);a.add(t),t=l.get(t)}}for(let t of e.nodes)if(void 0!==t.group&&!s.has(t.group))throw new E(`Node "${t.id}" references missing group "${t.group}".`);let o=e.lanes??[],r=O(o.map(e=>e.id));if(r)throw new E(`Duplicate lane id "${r}" is not allowed.`);if(o.length>0&&(e.groups??[]).length>0)throw new E("A diagram with lanes cannot also declare groups.");let n=new Set(o.map(e=>e.id));for(let t of e.nodes){if(void 0!==t.lane&&!n.has(t.lane))throw new E(`Node "${t.id}" references missing lane "${t.lane}".`);if(void 0===t.lane&&n.size>0)throw new E(`Node "${t.id}" has no lane.`)}let d=new Set(e.nodes.map(e=>e.id));for(let t of e.edges){if(!d.has(t.source))throw new E(`Edge "${t.id}" references missing source node "${t.source}".`);if(!d.has(t.target))throw new E(`Edge "${t.id}" references missing target node "${t.target}".`);if(t.source===t.target)throw new E(`Edge "${t.id}" cannot connect node "${t.source}" to itself.`)}return e}function X(e){return U(s.svK(I,{errors:"all"})(e))}let T="chart",$=["bar","line","pie"],Y=["vertical","horizontal"],G=s.xCb($),R=s.xCb(Y);class D extends s.Xsx("ChartSeries")({name:s.Qrq(s.ukk),values:s.O31(s.wYs).pipe(s.fXn)}){}class Z extends s.Xsx("ChartDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(T),kind:G,categories:s.O31(s.ukk).pipe(s.fXn,s.Sr8(s.tJb(1))),series:s.O31(D).pipe(s.fXn,s.Sr8(s.tJb(1))),unit:s.Qrq(s.ukk),categoryAxisTitle:s.Qrq(s.ukk),valueAxisTitle:s.Qrq(s.ukk),stacked:s.Qrq(s.v8c),donut:s.Qrq(s.v8c),orientation:s.Qrq(R),style:q.pipe(s.tiU(o.PyW({...y})))}){}let j=e=>e.trim().toLowerCase();function N(e){let t=[],{categories:a,kind:i,series:s}=e,l="pie"===i,o=l?8:40;a.length>o&&t.push({code:"chart_too_large",path:"categories",message:`A ${i} chart supports at most ${o} ${l?"slices":"categories"}.`,hint:l?'Fold the smallest slices into one "Other" slice, or use a bar chart.':"Group categories, or split the data into several charts."}),s.length>6&&t.push({code:"chart_too_large",path:"series",message:"A chart supports at most 6 series.",hint:"Keep the series the request compares, or split them into several charts."}),a.length*s.length>120&&t.push({code:"chart_too_large",path:"series",message:"A chart supports at most 120 values (categories × series).",hint:"Split the data into several charts."});let r=new Set;a.forEach((e,a)=>{r.has(j(e))&&t.push({code:"duplicate_chart_category",path:`categories.[${a}]`,message:`Category "${e}" is listed more than once.`,hint:"List each category once; put its values for every series at the same position."}),r.add(j(e))}),l&&1!==s.length&&t.push({code:"invalid_chart_series",path:"series",message:"A pie chart has exactly one series.",hint:"Use one series of slice values, or a grouped bar chart to compare several series."});let n=new Set;s.forEach((e,i)=>{let o=`series.[${i}]`;s.length>1&&void 0===e.name&&t.push({code:"invalid_chart_series",path:`${o}.name`,message:`Series ${i+1} needs a name for the legend.`,hint:"Name every series when a chart has more than one."}),void 0!==e.name&&(n.has(j(e.name))&&t.push({code:"invalid_chart_series",path:`${o}.name`,message:`Series name "${e.name}" is used more than once.`,hint:"Give each series a distinct name."}),n.add(j(e.name))),e.values.length!==a.length&&t.push({code:"chart_series_mismatch",path:`${o}.values`,message:`Series ${e.name?`"${e.name}"`:i+1} has ${e.values.length} values for ${a.length} categories.`,hint:"Give every series exactly one value per category, in category order."}),l&&e.values.some(e=>e<0)&&t.push({code:"invalid_chart_value",path:`${o}.values`,message:"Pie slice values cannot be negative.",hint:"Use a bar chart for data with negative values."})}),l&&s[0]&&!s[0].values.some(e=>e>0)&&t.push({code:"invalid_chart_value",path:"series.[0].values",message:"A pie chart needs at least one positive slice value.",hint:"Supply the slice values from the request."});let d=(e,a,i,s)=>{a||t.push({code:"invalid_chart_option",path:e,message:i,hint:s})};for(let t of(e.stacked&&d("stacked","bar"===i,"Only bar charts stack.",'Remove stacked, or use kind: "bar".'),e.donut&&d("donut",l,"Only pie charts draw as a donut.",'Remove donut, or use kind: "pie".'),void 0!==e.orientation&&d("orientation","bar"===i,"Only bar charts have an orientation.","Remove orientation for line and pie charts."),["categoryAxisTitle","valueAxisTitle"]))void 0!==e[t]&&d(t,!l,"A pie chart has no axes.",`Remove ${t} from the pie chart.`);return t.slice(0,20)}class W extends E{issues;constructor(e){super(e[0]?.message??"Chart failed validation."),this.issues=e,this.name="ChartValidationError"}}function J(e){let t=N(e);if(t.length)throw new W(t);return e}J(s.svK(Z,{errors:"all"})({id:"quarterly-revenue-chart",title:"Quarterly revenue",type:"chart",kind:"bar",categories:["Q1","Q2","Q3","Q4"],series:[{name:"2025",values:[42,51,47,63]},{name:"2026",values:[48,57,61,72]}],unit:"$M",categoryAxisTitle:"Quarter",valueAxisTitle:"Revenue"}));let K="timeline",Q=["event","milestone"],ee=s.xCb(Q);class et extends s.Xsx("TimelineEvent")({id:s.ukk,label:s.ukk,date:s.Qrq(s.ukk),end:s.Qrq(s.ukk),order:s.Qrq(s.wYs),kind:s.Qrq(ee),lane:s.Qrq(s.ukk),description:s.Qrq(s.ukk)}){}class ea extends s.Xsx("TimelineDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(K),events:s.O31(et).pipe(s.fXn,s.Sr8(s.tJb(1))),lanes:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),today:s.Qrq(s.ukk),style:q.pipe(s.tiU(o.PyW({...y})))}){}let ei=/^(\d{4})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?(Z|[+-]\d{2}:\d{2}))?)?)?$/u;function es(e,t,a,i=0,s=0,l=0,o=0){let r=new Date(0);return r.setUTCFullYear(e,t-1,a),r.setUTCHours(i,s,l,o),r.getTime()}function el(e){let t=ei.exec(e);if(!t)return;let[,a,i,s,l,o,r,n,d]=t,c=Number(a),p=void 0===i?1:Number(i),h=void 0===s?1:Number(s);if(p<1||p>12||h<1||h>new Date(es(c,p+1,0)).getUTCDate())return;if(void 0===l){let e=void 0!==s?"day":void 0!==i?"month":"year",t=es(c,p,h),a="day"===e?es(c,p,h+1):"month"===e?es(c,p+1,1):es(c+1,1,1);return{granularity:e,start:t,end:a,fields:{year:c,month:p,day:h,hour:0,minute:0,second:0,millisecond:0}}}let g=Number(l),u=Number(o),f=void 0===r?0:Number(r),m=void 0===n?0:Number(n.padEnd(3,"0"));if(g>23||u>59||f>59||void 0===d)return;let v=0;if("Z"!==d){let e=Number(d.slice(1,3)),t=Number(d.slice(4,6));if(e>14||t>59)return;v=(d.startsWith("-")?-1:1)*(60*e+t)}let y=es(c,p,h,g,u,f,m)-6e4*v;return{granularity:"instant",start:y,end:y,fields:{year:c,month:p,day:h,hour:g,minute:u,second:f,millisecond:m},offsetMinutes:v}}let eo="Use YYYY, YYYY-MM, YYYY-MM-DD, or YYYY-MM-DDTHH:mm[:ss] with Z or ±HH:MM, copied from the source.";function er(e){if(e.lanes)return[...e.lanes];let t=[];for(let a of eh(e))void 0===a.lane||t.includes(a.lane)||t.push(a.lane);return t}function en(e){let t=[];(0===e.events.length||e.events.length>60)&&t.push({code:"timeline_too_large",path:"events",message:"Timeline needs 1–60 events.",hint:"Provide at least one event, or split a longer chronology into timelines."});let a=new Set,i=e.events[0]?.date!==void 0,s=void 0!==e.lanes||e.events.some(e=>e.lane);return e.events.forEach((l,o)=>{let r=`events.[${o}]`;a.has(l.id)&&t.push({code:"duplicate_event_id",path:`${r}.id`,message:`Event id "${l.id}" is duplicated.`,hint:"Give each event a unique stable id."}),a.add(l.id);let n=void 0===l.date?void 0:el(l.date);if(void 0===l.date||n||t.push({code:"invalid_timeline_date",path:`${r}.date`,message:`Event "${l.id}" has invalid date "${l.date}".`,hint:eo}),(void 0!==l.date==(void 0!==l.order)||void 0!==l.date!==i)&&t.push({code:"invalid_timeline_order",path:r,message:"Every event must use exactly one chronology field, with the same date or order mode throughout.",hint:"Supply dates for all events, or numeric order for all events; never invent a missing date."}),void 0!==l.end){let e=el(l.end);e?(void 0===l.date||"milestone"===l.kind||n&&e.end<=n.start)&&t.push({code:"invalid_timeline_span",path:`${r}.end`,message:`Span "${l.id}" needs a date, an end on or after it, and no milestone kind.`,hint:"Use end only for dated phases; a milestone is a single point."}):t.push({code:"invalid_timeline_date",path:`${r}.end`,message:`Event "${l.id}" has invalid end "${l.end}".`,hint:eo})}s&&(void 0===l.lane||e.lanes&&!e.lanes.includes(l.lane))&&t.push({code:"invalid_timeline_lane",path:`${r}.lane`,message:`Event "${l.id}" needs one of the timeline's lanes.`,hint:"Give every event a lane listed in lanes, or omit lanes everywhere."})}),e.lanes&&new Set(e.lanes).size!==e.lanes.length&&t.push({code:"invalid_timeline_lane",path:"lanes",message:"Lane names must be unique.",hint:"List each lane once, in top-to-bottom order."}),er(e).length>6&&t.push({code:"timeline_too_large",path:"lanes",message:"Timeline supports at most 6 lanes.",hint:"Merge related tracks or split the chronology into timelines."}),void 0===e.today||i&&void 0!==el(e.today)||t.push({code:"invalid_timeline_date",path:"today",message:`Today "${e.today}" must be a valid date on a dated timeline.`,hint:`${eo} Omit today unless the source states it.`}),t.slice(0,20)}class ed extends E{issues;constructor(e){super(e[0]?.message??"Timeline failed validation."),this.issues=e,this.name="TimelineValidationError"}}function ec(e){let t=en(e);if(t.length)throw new ed(t);return e}function ep(e){return void 0!==e.date?el(e.date)?.start??0/0:e.order??0}function eh(e){return e.events.toSorted((e,t)=>ep(e)-ep(t)||0)}ec(s.svK(ea,{errors:"all"})({id:"release-timeline",title:"Release milestones",type:"timeline",events:[{id:"plan",label:"Scope agreed",date:"2026-09-01"},{id:"beta",label:"Public beta",date:"2026-09-15",description:"Collect feedback from early users."},{id:"release",label:"General availability",date:"2026-10-01",kind:"milestone"}]}));let eg="flowchart",eu=s.xCb(["duplicate_node_id","duplicate_edge_id","missing_edge_source","missing_edge_target","self_loop","missing_start","multiple_starts","missing_end","start_has_incoming","end_has_outgoing","unreachable_node","missing_outgoing_edge","underbranched_decision","unlabeled_decision_branch","duplicate_decision_branch_label","nonterminating_node","flowchart_too_large","duplicate_group_id","unknown_node_group","empty_group","unknown_group_parent","group_cycle","shaped_decision","duplicate_lane_id","unknown_node_lane","empty_lane","lanes_with_groups"]);class ef extends s.Xsx("FlowchartValidationIssueRef")({kind:s.xCb(["diagram","node","edge","group","lane"]),id:s.lqM(s.ukk),path:s.lqM(s.ukk)}){}s.Xsx("FlowchartValidationIssue")({code:eu,ref:s.lqM(ef),message:s.ukk,hint:s.ukk});let em=s.xCb(["start","process","decision","end"]);class ev extends P.extend("FlowchartNode")({kind:em}){}class ey extends V.extend("FlowchartEdge")({label:s.lqM(s.ukk)}){}class ew extends I.extend("FlowchartDiagram")({type:s.uSQ(eg),nodes:s.O31(ev).pipe(s.fXn).check(s.tJb(2)),edges:s.O31(ey).pipe(s.fXn).check(s.tJb(1))}){}function ex(e){let t=new Set,a=new Set;for(let i of e)t.has(i)?a.add(i):t.add(i);return[...a]}function eb(e,t,a){let i=new Set,s=[...e];for(let e=0;e<s.length;e+=1){let l=s[e];if(!(void 0===l||i.has(l)))for(let e of(i.add(l),t.get(l)??[]))s.push(a(e))}return i}function ek(e){let t=[],a=new Set(e.nodes.map(e=>e.id)),{incoming:i,outgoing:s}=function(e){let t=new Map,a=new Map;for(let i of e)t.set(i.target,[...t.get(i.target)??[],i]),a.set(i.source,[...a.get(i.source)??[],i]);return{incoming:t,outgoing:a}}(e.edges);e.nodes.length>24&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"nodes"},message:`Flowchart has ${e.nodes.length} nodes; the supported maximum is 24.`,hint:"Split the workflow or combine lower-signal steps."}),e.edges.length>64&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"edges"},message:`Flowchart has ${e.edges.length} edges; the supported maximum is 64.`,hint:"Split the workflow or remove lower-signal connections."});let l=e.groups??[];for(let a of(l.length>8&&t.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"groups"},message:`Flowchart has ${l.length} groups; the supported maximum is 8.`,hint:"Merge related groups or leave minor steps ungrouped."}),ex(l.map(e=>e.id))))t.push({code:"duplicate_group_id",ref:{kind:"group",id:a,path:"groups"},message:`Group id "${a}" is used more than once.`,hint:"Give every group a stable unique id."});let o=new Set(l.map(e=>e.id));for(let a of e.nodes)void 0===a.group||o.has(a.group)||t.push({code:"unknown_node_group",ref:{kind:"node",id:a.id,path:"nodes.group"},message:`Node "${a.id}" references undeclared group "${a.group}".`,hint:o.size>0?`Set group to a declared group id (${[...o].map(e=>`"${e}"`).join(", ")}) or declare "${a.group}" in groups.`:`Declare "${a.group}" in groups as { id, label }, or remove the node's group.`});t.push(...function(e){let t=e.groups??[],a=new Set(t.map(e=>e.id)),i=new Map(t.flatMap(e=>void 0!==e.parent&&a.has(e.parent)?[[e.id,e.parent]]:[])),s=[],l=0;for(let e of t){if(void 0!==e.parent&&!a.has(e.parent)){s.push({code:"unknown_group_parent",ref:{kind:"group",id:e.id,path:"groups.parent"},message:`Group "${e.id}" references undeclared parent group "${e.parent}".`,hint:`Set parent to the id of the declared group that encloses it (${[...a].map(e=>`"${e}"`).join(", ")}), or remove parent.`});continue}let t=[e.id],o=!1;for(let a=i.get(e.id);void 0!==a;){if(t.includes(a)){o=!0,a===e.id&&s.push({code:"group_cycle",ref:{kind:"group",id:e.id,path:"groups.parent"},message:`Group "${e.id}" is nested inside itself through ${[...t,a].map(e=>`"${e}"`).join(" in ")}.`,hint:"Set each group's parent to the group that encloses it; the outermost group has no parent."});break}t.push(a),a=i.get(a)}o||(l=Math.max(l,t.length))}return l>4&&s.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"groups.parent"},message:`Groups nest ${l} deep; the supported maximum is 4.`,hint:"Drop an intermediate zone, or merge a zone into its parent."}),s}(e));let r=new Set([...e.nodes.map(e=>e.group),...l.map(e=>e.parent)]);for(let e of l.filter(e=>!r.has(e.id)))t.push({code:"empty_group",ref:{kind:"group",id:e.id,path:"groups"},message:`Group "${e.id}" has no nodes.`,hint:"Set group on the nodes it holds, or remove the group."});for(let a of e.nodes)"decision"===a.kind&&void 0!==a.shape&&t.push({code:"shaped_decision",ref:{kind:"node",id:a.id,path:"nodes.shape"},message:`Decision node "${a.id}" cannot draw as a ${a.shape}.`,hint:"Remove shape from the decision; a decision always draws as a diamond."});for(let a of(t.push(...function(e){let t=e.lanes??[];if(0===t.length)return e.nodes.flatMap(e=>void 0===e.lane?[]:[{code:"unknown_node_lane",ref:{kind:"node",id:e.id,path:"nodes.lane"},message:`Node "${e.id}" references undeclared lane "${e.lane}".`,hint:`Declare "${e.lane}" in lanes as { id, label }, or remove the node's lane.`}]);let a=[];for(let i of(t.length>8&&a.push({code:"flowchart_too_large",ref:{kind:"diagram",id:e.id,path:"lanes"},message:`Flowchart has ${t.length} lanes; the supported maximum is 8.`,hint:"Merge related actors into one lane."}),(e.groups??[]).length>0&&a.push({code:"lanes_with_groups",ref:{kind:"diagram",id:e.id,path:"groups"},message:"A flowchart with lanes cannot also declare groups.",hint:"Keep lanes for the actors and remove groups and every node's group."}),ex(t.map(e=>e.id))))a.push({code:"duplicate_lane_id",ref:{kind:"lane",id:i,path:"lanes"},message:`Lane id "${i}" is used more than once.`,hint:"Give every lane a stable unique id."});let i=new Set(t.map(e=>e.id)),s=[...i].map(e=>`"${e}"`).join(", ");for(let t of e.nodes)void 0!==t.lane&&i.has(t.lane)||a.push({code:"unknown_node_lane",ref:{kind:"node",id:t.id,path:"nodes.lane"},message:void 0===t.lane?`Node "${t.id}" has no lane.`:`Node "${t.id}" references undeclared lane "${t.lane}".`,hint:void 0===t.lane?`Set lane to the declared lane id (${s}) of the actor that does this step.`:`Set lane to a declared lane id (${s}) or declare "${t.lane}" in lanes.`});let l=new Set(e.nodes.map(e=>e.lane));for(let e of t.filter(e=>!l.has(e.id)))a.push({code:"empty_lane",ref:{kind:"lane",id:e.id,path:"lanes"},message:`Lane "${e.id}" has no nodes.`,hint:"Set lane on the steps this actor does, or remove the lane."});return a}(e)),ex(e.nodes.map(e=>e.id))))t.push({code:"duplicate_node_id",ref:{kind:"node",id:a,path:"nodes"},message:`Node id "${a}" is used more than once.`,hint:"Give every node a stable unique id."});for(let a of ex(e.edges.map(e=>e.id)))t.push({code:"duplicate_edge_id",ref:{kind:"edge",id:a,path:"edges"},message:`Edge id "${a}" is used more than once.`,hint:"Give every edge a stable unique id."});for(let i of e.edges)a.has(i.source)||t.push({code:"missing_edge_source",ref:{kind:"edge",id:i.id,path:"edges.source"},message:`Edge "${i.id}" references missing source node "${i.source}".`,hint:"Set edge.source to one of the diagram node ids."}),a.has(i.target)||t.push({code:"missing_edge_target",ref:{kind:"edge",id:i.id,path:"edges.target"},message:`Edge "${i.id}" references missing target node "${i.target}".`,hint:"Set edge.target to one of the diagram node ids."}),i.source===i.target&&t.push({code:"self_loop",ref:{kind:"edge",id:i.id},message:`Edge "${i.id}" connects node "${i.source}" to itself.`,hint:"Connect the edge to a different target node."});let n=e.nodes.filter(e=>"start"===e.kind),d=e.nodes.filter(e=>"end"===e.kind);for(let a of(0===n.length?t.push({code:"missing_start",ref:{kind:"diagram",id:e.id,path:"nodes"},message:"Flowchart must contain exactly one start node.",hint:'Mark the first node in the flow with kind: "start".'}):n.length>1&&t.push({code:"multiple_starts",ref:{kind:"diagram",id:e.id,path:"nodes"},message:`Flowchart has ${n.length} start nodes.`,hint:"Keep one start node and change the others to process, decision, or end."}),0===d.length&&t.push({code:"missing_end",ref:{kind:"diagram",id:e.id,path:"nodes"},message:"Flowchart must contain at least one end node.",hint:'Add an end node or mark terminal outcomes with kind: "end".'}),e.nodes)){let e=i.get(a.id)??[],l=s.get(a.id)??[];"start"===a.kind&&e.length>0&&t.push({code:"start_has_incoming",ref:{kind:"node",id:a.id},message:`Start node "${a.id}" cannot have incoming edges.`,hint:"Route the start node only to later nodes."}),"end"===a.kind&&l.length>0&&t.push({code:"end_has_outgoing",ref:{kind:"node",id:a.id},message:`End node "${a.id}" cannot have outgoing edges.`,hint:"End nodes must be terminal outcomes."}),"end"!==a.kind&&0===l.length&&t.push({code:"missing_outgoing_edge",ref:{kind:"node",id:a.id},message:`Node "${a.id}" must have at least one outgoing edge.`,hint:'Connect it to the next step, or mark it as kind: "end".'}),"decision"===a.kind&&t.push(...function(e,t){let a=[];t.length<2&&a.push({code:"underbranched_decision",ref:{kind:"node",id:e.id},message:`Decision node "${e.id}" must have at least two outgoing branches.`,hint:"Add at least two outgoing edges for the decision outcomes."});let i=t.map(e=>e.label?.trim()??"");for(let i of t.filter(e=>!e.label?.trim()))a.push({code:"unlabeled_decision_branch",ref:{kind:"edge",id:i.id,path:"edges.label"},message:`Decision node "${e.id}" has an outgoing branch without a label.`,hint:'Add a short branch label such as "yes", "no", "approved", or "rejected".'});for(let t of ex(i.filter(e=>e.length>0).map(e=>e.toLowerCase())))a.push({code:"duplicate_decision_branch_label",ref:{kind:"node",id:e.id},message:`Decision node "${e.id}" repeats branch label "${t}".`,hint:"Make every outgoing branch label from the same decision unique."});return a}(a,l))}let c=1===n.length?n[0]:void 0;if(c){let a=eb([c.id],s,e=>e.target);for(let i of e.nodes)a.has(i.id)||t.push({code:"unreachable_node",ref:{kind:"node",id:i.id},message:`Node "${i.id}" is not reachable from the start node.`,hint:"Connect every node to the flow that begins at the single start node."});if(d.length>0){let l=eb(d.map(e=>e.id),i,e=>e.source);for(let i of e.nodes)a.has(i.id)&&!l.has(i.id)&&(s.get(i.id)?.length??0)>0&&t.push({code:"nonterminating_node",ref:{kind:"node",id:i.id},message:`Node "${i.id}" cannot reach an end node.`,hint:"Add an eventual exit from this path to an end node; retry loops are valid when they retain an exit."})}}return t.slice(0,20)}class eM extends E{issues;constructor(e){super(e[0]?.message??"Flowchart failed semantic validation."),this.issues=e,this.name="FlowchartValidationError"}}function eC(e){let t=ek(e);if(t.length>0)throw new eM(t);return e}function ez(e){return eC(s.svK(ew,{errors:"all"})(e))}ez({id:"onboarding-flow",title:"Sketchi onboarding decision flow",type:eg,nodes:[{id:"prompt",label:"Prompt received",kind:"start"},{id:"requirements",label:"Extract requirements",kind:"process"},{id:"clear",label:"Scope clear?",kind:"decision"},{id:"draft",label:"Draft typed IR",kind:"process"},{id:"review",label:"Review diagram",kind:"end"}],edges:[{id:"prompt-requirements",source:"prompt",target:"requirements"},{id:"requirements-clear",source:"requirements",target:"clear"},{id:"clear-draft",source:"clear",target:"draft",label:"yes"},{id:"clear-review",source:"clear",target:"review",label:"no"},{id:"draft-review",source:"draft",target:"review"}],layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"pharma-batch-disposition",title:"Pharma batch disposition flow",type:eg,nodes:[{id:"batch-received",label:"Batch received",kind:"start"},{id:"qa-review",label:"QA reviews Certificate of Analysis",kind:"process"},{id:"passes-specs",label:"Passes specs?",kind:"decision"},{id:"final-review",label:"QA Manager final review",kind:"process"},{id:"packaging",label:"Send to packaging",kind:"end"},{id:"investigate",label:"Investigate retesting",kind:"process"},{id:"reject",label:"Reject batch",kind:"end"}],edges:[{id:"batch-qa",source:"batch-received",target:"qa-review"},{id:"qa-specs",source:"qa-review",target:"passes-specs"},{id:"specs-pass",source:"passes-specs",target:"final-review",label:"yes"},{id:"specs-investigate",source:"passes-specs",target:"investigate",label:"retest"},{id:"specs-reject",source:"passes-specs",target:"reject",label:"reject"},{id:"review-packaging",source:"final-review",target:"packaging"},{id:"investigate-review",source:"investigate",target:"final-review"}],layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"deploy-pipeline-logos",title:"Deploy pipeline",type:eg,nodes:[{id:"push",label:"Push to GitHub",kind:"start",icon:{slug:"github"}},{id:"build",label:"Build the Docker image",kind:"process",icon:{slug:"docker"}},{id:"tests",label:"Tests pass?",kind:"decision",icon:{slug:"vitest"}},{id:"fix",label:"Fix the failing tests",kind:"process"},{id:"ship",label:"Ship to Cloudflare Workers",kind:"end",icon:{slug:"cloudflare"}}],edges:[{id:"push-build",source:"push",target:"build"},{id:"build-tests",source:"build",target:"tests"},{id:"tests-ship",source:"tests",target:"ship",label:"yes"},{id:"tests-fix",source:"tests",target:"fix",label:"no"},{id:"fix-build",source:"fix",target:"build"}],layout:{direction:"TB",edgeRouting:"orthogonal"}});let e_="mindmap";class eL extends s.Xsx("MindmapNodeMetadata")({depth:s.Aiz.check(s.OWK(0)),siblingIndex:s.Aiz.check(s.OWK(0))}){}class eB extends A.extend("MindmapNode")({kind:s.xCb(["root","topic"]),metadata:eL}){}class eS extends s.Xsx("MindmapEdgeMetadata")({depth:s.Aiz.check(s.yJO(0)),siblingIndex:s.Aiz.check(s.OWK(0))}){}class eA extends V.extend("MindmapEdge")({metadata:eS}){}class eP extends I.extend("MindmapDiagram")({type:s.uSQ(e_),nodes:s.O31(eB).pipe(s.fXn).check(s.tJb(2)),edges:s.O31(eA).pipe(s.fXn).check(s.tJb(1))}){}function eV(e){U(e);let t=e.nodes.filter(e=>"root"===e.kind);if(1!==t.length)throw new E(`Mindmap must contain exactly one root topic; found ${t.length}.`);let a=t[0];if(!a||0!==a.metadata.depth)throw new E("Mindmap root topic must have depth 0.");let i=new Map,s=new Map(e.nodes.map(e=>[e.id,e])),l=new Map;for(let t of e.edges){i.set(t.target,(i.get(t.target)??0)+1);let e=s.get(t.source)?.metadata.depth,a=s.get(t.target),o=a?.metadata.depth;if(void 0===e||o!==e+1)throw new E(`Mindmap edge "${t.id}" must connect a topic to its immediate child.`);if(!a||t.metadata.depth!==a.metadata.depth||t.metadata.siblingIndex!==a.metadata.siblingIndex)throw new E(`Mindmap edge "${t.id}" metadata must match its child topic.`);l.set(t.source,[...l.get(t.source)??[],a.metadata.siblingIndex])}for(let t of e.nodes){let e=i.get(t.id)??0;if(t.id===a.id?0!==e:1!==e)throw new E(`Mindmap topic "${t.id}" must have ${t.id===a.id?"no parent":"exactly one parent"}.`)}for(let[e,t]of l){let a=t.map((e,t)=>t);if([...t].sort((e,t)=>e-t).some((e,t)=>e!==a[t]))throw new E(`Mindmap children of "${e}" must use contiguous sibling ordering from 0.`)}return e}function eH(e){return eV(s.svK(eP,{errors:"all"})(e))}eH({id:"public-mindmap-capability",title:"Public mindmap generation",type:e_,nodes:[{id:"topic-0",label:"Public mindmaps",kind:"root",metadata:{depth:0,siblingIndex:0}},{id:"topic-0-0",label:"Semantic input",kind:"topic",metadata:{depth:1,siblingIndex:0}},{id:"topic-0-0-0",label:"Nested topics",kind:"topic",metadata:{depth:2,siblingIndex:0}},{id:"topic-0-0-1",label:"Stable ordering",kind:"topic",metadata:{depth:2,siblingIndex:1}},{id:"topic-0-1",label:"Artifact output",kind:"topic",metadata:{depth:1,siblingIndex:1}},{id:"topic-0-1-0",label:"Scene",kind:"topic",metadata:{depth:2,siblingIndex:0}},{id:"topic-0-1-1",label:"Excalidraw",kind:"topic",metadata:{depth:2,siblingIndex:1}}],edges:[{id:"branch-0-0",source:"topic-0",target:"topic-0-0",metadata:{depth:1,siblingIndex:0}},{id:"branch-0-0-0",source:"topic-0-0",target:"topic-0-0-0",metadata:{depth:2,siblingIndex:0}},{id:"branch-0-0-1",source:"topic-0-0",target:"topic-0-0-1",metadata:{depth:2,siblingIndex:1}},{id:"branch-0-1",source:"topic-0",target:"topic-0-1",metadata:{depth:1,siblingIndex:1}},{id:"branch-0-1-0",source:"topic-0-1",target:"topic-0-1-0",metadata:{depth:2,siblingIndex:0}},{id:"branch-0-1-1",source:"topic-0-1",target:"topic-0-1-1",metadata:{depth:2,siblingIndex:1}}],layout:{direction:"LR",edgeRouting:"curved"}});let eq="sequence",eF=["message","return"],eI=["solid","dashed"],eE=":lifeline";function eO(e){return`${e}${eE}`}let eU=s.xCb(eF),eX=s.xCb(eI);class eT extends s.Xsx("SequenceParticipant")({id:s.ukk,label:s.ukk,kind:s.Qrq(s.ukk),icon:s.Qrq(M)}){}class e$ extends s.Xsx("SequenceMessage")({id:s.ukk,source:s.ukk,target:s.ukk,label:s.ukk,type:s.Qrq(eU),style:s.Qrq(eX)}){}class eY extends s.Xsx("SequenceDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(eq),participants:s.O31(eT).pipe(s.fXn,s.Sr8(s.tJb(1))),messages:s.O31(e$).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let eG=s.xCb(["sequence_too_large","duplicate_participant_id","lifeline_id_collision","duplicate_message_id","missing_message_source","missing_message_target"]);function eR(e){let t=[];e.participants.length>12&&t.push({code:"sequence_too_large",path:"participants",message:`Sequence diagram has ${e.participants.length} participants; the supported maximum is 12.`,hint:"Combine minor actors or split the interaction into several diagrams."}),e.messages.length>40&&t.push({code:"sequence_too_large",path:"messages",message:`Sequence diagram has ${e.messages.length} messages; the supported maximum is 40.`,hint:"Split the interaction into phases or drop lower-signal messages."});let a=new Map;for(let i of(e.participants.forEach((e,i)=>{a.has(e.id)?t.push({code:"duplicate_participant_id",path:`participants.[${i}].id`,message:`Participant id "${e.id}" is duplicated.`,hint:"Give every participant a unique stable id and update message references."}):a.set(e.id,i)}),e.participants)){let a=eO(i.id);e.participants.forEach((e,s)=>{(e.id===a||e.id.startsWith(`${a}:`))&&t.push({code:"lifeline_id_collision",path:`participants.[${s}].id`,message:`Participant id "${e.id}" collides with the generated lifeline for "${i.id}".`,hint:`Rename the participant so its id does not start with another participant id followed by ${eE}.`})})}let i=new Set;return e.messages.forEach((e,s)=>{i.has(e.id)&&t.push({code:"duplicate_message_id",path:`messages.[${s}].id`,message:`Message id "${e.id}" is duplicated.`,hint:"Give every message a unique id or omit message ids to generate them deterministically."}),i.add(e.id),a.has(e.source)||t.push({code:"missing_message_source",path:`messages.[${s}].source`,message:`Message source "${e.source}" is not a participant.`,hint:"Use the id of a participant declared in participants."}),a.has(e.target)||t.push({code:"missing_message_target",path:`messages.[${s}].target`,message:`Message target "${e.target}" is not a participant.`,hint:"Use the id of a participant declared in participants."})}),t.slice(0,20)}s.Xsx("SequenceValidationIssue")({code:eG,path:s.ukk,message:s.ukk,hint:s.ukk});class eD extends E{issues;constructor(e){super(e[0]?.message??"Sequence diagram failed semantic validation."),this.issues=e,this.name="SequenceValidationError"}}function eZ(e){let t=eR(e);if(t.length>0)throw new eD(t);return e}function ej(e){return eZ(s.svK(eY,{errors:"all"})(e))}ej({id:"checkout-sequence",title:"Checkout sequence",type:eq,participants:[{id:"customer",label:"Customer"},{id:"store",label:"Store"},{id:"payments",label:"Payments"}],messages:[{id:"checkout",source:"customer",target:"store",label:"Submit checkout"},{id:"charge",source:"store",target:"payments",label:"Charge card"},{id:"charged",source:"payments",target:"store",label:"Payment approved",type:"return"},{id:"receipt",source:"store",target:"customer",label:"Order receipt",type:"return"}]}),ej({id:"api-request-sequence",title:"API request with cache miss",type:eq,participants:[{id:"browser",label:"Browser"},{id:"api",label:"API Worker"},{id:"cache",label:"Cache"},{id:"database",label:"Database"},{id:"analytics",label:"Analytics"}],messages:[{id:"request",source:"browser",target:"api",label:"GET /orders"},{id:"lookup",source:"api",target:"cache",label:"Look up orders"},{id:"miss",source:"cache",target:"api",label:"Cache miss",type:"return"},{id:"query",source:"api",target:"database",label:"Query orders"},{id:"rows",source:"database",target:"api",label:"Order rows",type:"return"},{id:"track",source:"api",target:"analytics",label:"Track request"},{id:"response",source:"api",target:"browser",label:"200 OK",type:"return"}]}),ej({id:"deploy-webhook-logos",title:"Deploy webhook",type:eq,participants:[{id:"developer",label:"Developer"},{id:"github",label:"GitHub",icon:{slug:"github"}},{id:"worker",label:"Cloudflare Worker",icon:{slug:"cloudflare"}},{id:"docker",label:"Docker build",icon:{slug:"docker"}}],messages:[{id:"push",source:"developer",target:"github",label:"git push"},{id:"webhook",source:"github",target:"worker",label:"Push webhook"},{id:"build",source:"worker",target:"docker",label:"Build image"},{id:"digest",source:"docker",target:"worker",label:"Image digest",type:"return"},{id:"accepted",source:"worker",target:"github",label:"202 Accepted",type:"return"}]}),ej({id:"self-message-sequence",title:"Login with credential checks",type:eq,participants:[{id:"browser",label:"Browser"},{id:"idp",label:"Identity Provider"},{id:"users",label:"User Directory"}],messages:[{id:"sign-in",source:"browser",target:"idp",label:"Sign in"},{id:"validate",source:"idp",target:"idp",label:"Validate credentials"},{id:"mfa",source:"idp",target:"idp",label:"Check the one-time code against the enrolled authenticator"},{id:"lookup",source:"idp",target:"users",label:"Look up user"},{id:"profile",source:"users",target:"idp",label:"Profile",type:"return"},{id:"session",source:"idp",target:"browser",label:"Session",type:"return"},{id:"refresh",source:"browser",target:"browser",label:"Refresh the page"}]});let eN="state-machine",eW=["state","final","choice"],eJ=["TB","LR"],eK=s.xCb(eW);class eQ extends s.Xsx("StateMachineState")({id:s.ukk,label:s.Qrq(s.ukk),kind:s.Qrq(eK),parent:s.Qrq(s.ukk),initial:s.Qrq(s.ukk)}){}class e1 extends s.Xsx("StateMachineTransition")({id:s.ukk,source:s.ukk,target:s.ukk,event:s.Qrq(s.ukk),guard:s.Qrq(s.ukk),action:s.Qrq(s.ukk)}){}class e0 extends s.Xsx("StateMachineLayout")({direction:s.xCb(eJ)}){}class e2 extends s.Xsx("StateMachineDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(eN),initial:s.ukk,states:s.O31(eQ).pipe(s.fXn,s.Sr8(s.tJb(1))),transitions:s.O31(e1).pipe(s.fXn,s.tiU(o.PyW([]))),layout:s.Qrq(e0),style:q.pipe(s.tiU(o.PyW({...y})))}){}let e3=s.xCb(["state_machine_too_large","invalid_state_id","duplicate_state_id","duplicate_transition_id","missing_state_label","unknown_initial_state","unknown_parent_state","nested_composite","missing_transition_source","missing_transition_target","final_has_outgoing","composite_member_transition","missing_composite_initial","underbranched_choice","unguarded_choice_branch","unreachable_state"]);function e5(e){return e.kind??"state"}s.Xsx("StateMachineValidationIssue")({code:e3,path:s.ukk,message:s.ukk,hint:s.ukk});let e4=new Set(["end","ended","final","finish","finished","done","stop","stopped","exit","state","node"]);function e6(e){if(void 0!==e.label)return e.label;let t=e5(e);if("choice"!==t){if("final"===t){let t=e.id.replace(/(\p{Ll})(\p{Lu})/gu,"$1 $2").replace(/(\p{Lu})(\p{Lu}\p{Ll})/gu,"$1 $2").split(/[_\s\-\p{N}]+/u).filter(Boolean);if(t.length>0&&t.every(e=>e4.has(e.toLowerCase())))return}return e.id}}function e7(e,t){return e.initial??t.find(t=>t.parent===e.id&&"state"===e5(t))?.id}function e8(e){return{...e,states:e.states.map(t=>{let a=e7(t,e.states);return void 0===t.initial&&void 0!==a?{...t,initial:a}:t})}}function e9(e){return new Set(e.states.flatMap(e=>e.parent?[e.parent]:[]))}function te(e,t){return e.replace(t,"").trim()}function tt(e){e=e8(e);let t=[],a=e9(e);e.states.length>30&&t.push({code:"state_machine_too_large",path:"states",message:`State machine has ${e.states.length} states; the supported maximum is 30.`,hint:"Split the machine into smaller machines or merge minor states."}),e.transitions.length>60&&t.push({code:"state_machine_too_large",path:"transitions",message:`State machine has ${e.transitions.length} transitions; the supported maximum is 60.`,hint:"Move transitions every substate shares onto their composite state."}),a.size>6&&t.push({code:"state_machine_too_large",path:"states",message:`State machine has ${a.size} composite states; the supported maximum is 6.`,hint:"Flatten minor composite states into their parents."});let i=new Map;e.states.forEach((e,a)=>{e.id.includes(":")&&t.push({code:"invalid_state_id",path:`states.[${a}].id`,message:`State id "${e.id}" contains ":".`,hint:"Use letters, digits, hyphens or underscores in state ids."}),i.has(e.id)&&t.push({code:"duplicate_state_id",path:`states.[${a}].id`,message:`State id "${e.id}" is used more than once.`,hint:"Give every state a unique id."}),i.set(e.id,e);let s=e6(e);void 0===s||s.trim()||t.push({code:"missing_state_label",path:`states.[${a}].label`,message:`State "${e.id}" has no label.`,hint:"Omit the label to use the default, or provide a non-blank label."})}),e.states.forEach((e,s)=>{if(void 0!==e.parent){let a=i.get(e.parent);a&&"state"===e5(a)?void 0!==a.parent&&t.push({code:"nested_composite",path:`states.[${s}].parent`,message:`State "${e.id}" sits in "${a.id}", which itself sits in "${a.parent}".`,hint:"Composite states hold states but not other composites; flatten one level."}):t.push({code:"unknown_parent_state",path:`states.[${s}].parent`,message:`State "${e.id}" names "${e.parent}" as its parent, which is not a state.`,hint:"Set parent to the id of a state (not a final state or choice), or remove it."})}if(a.has(e.id)&&void 0===e.initial&&t.push({code:"missing_composite_initial",path:`states.[${s}].initial`,message:`Composite "${e.id}" has no regular substate to enter.`,hint:`Add a regular substate whose parent is "${e.id}", or set initial explicitly to an intended choice substate.`}),void 0!==e.initial){let a=i.get(e.initial);a&&a.parent===e.id&&"final"!==e5(a)||t.push({code:"unknown_initial_state",path:`states.[${s}].initial`,message:`Composite "${e.id}" starts in "${e.initial}", which is not one of its substates.`,hint:`Set initial to a substate whose parent is "${e.id}", or remove it.`})}});let s=i.get(e.initial);s&&void 0===s.parent&&"final"!==e5(s)||t.push({code:"unknown_initial_state",path:"initial",message:`The machine starts in "${e.initial}", which is not a top-level state.`,hint:"Set initial to the id of the top-level state the machine starts in."});let l=new Set,o=new Map;if(e.transitions.forEach((e,s)=>{l.has(e.id)&&t.push({code:"duplicate_transition_id",path:`transitions.[${s}].id`,message:`Transition id "${e.id}" is used more than once.`,hint:"Give every transition a unique id, or omit ids to generate them."}),l.add(e.id),o.set(e.source,(o.get(e.source)??0)+1);let r=i.get(e.source),n=i.get(e.target);r||t.push({code:"missing_transition_source",path:`transitions.[${s}].source`,message:`Transition "${e.id}" leaves "${e.source}", which is not a state.`,hint:"Set source to the id of a declared state."}),n||t.push({code:"missing_transition_target",path:`transitions.[${s}].target`,message:`Transition "${e.id}" enters "${e.target}", which is not a state.`,hint:"Set target to the id of a declared state."}),r&&"final"===e5(r)&&t.push({code:"final_has_outgoing",path:`transitions.[${s}].source`,message:`Transition "${e.id}" leaves final state "${r.id}".`,hint:"A final state ends the machine; leave from the state before it instead."}),r&&n&&(a.has(r.id)&&(n.id===r.id||n.parent===r.id)||a.has(n.id)&&r.parent===n.id)&&t.push({code:"composite_member_transition",path:`transitions.[${s}]`,message:`Transition "${e.id}" joins composite "${a.has(r.id)?r.id:n.id}" to itself or its own substate.`,hint:"Connect substates to each other, or the composite to a state outside it."})}),e.states.forEach((a,i)=>{if("choice"===e5(a)&&(o.get(a.id)??0)<2&&t.push({code:"underbranched_choice",path:`states.[${i}]`,message:`Choice "${a.id}" has fewer than two outgoing transitions.`,hint:"Give a choice two or more outgoing transitions, each with a guard."}),"choice"!==e5(a))return;let s=e.transitions.filter(e=>e.source===a.id).map(e=>e.guard?.replace(/^\s*\[|\]\s*$/gu,"").trim()??"");(s.some(e=>""===e)||s.filter(e=>"else"===e.toLowerCase()).length>1)&&t.push({code:"unguarded_choice_branch",path:`states.[${i}]`,message:`Choice "${a.id}" has a branch without its own guard.`,hint:'Give every branch of a choice a guard; one may be "else".'})}),s){let a=function(e){let t=new Map(e.states.map(e=>[e.id,e])),a=new Set,i=new Set,s=[{id:e.initial,entry:!0}];for(;s.length>0;){let{id:l,entry:o}=s.pop(),r=t.get(l);if(!(!r||a.has(l)&&(!o||i.has(l)))){if(o&&(i.add(l),r.initial&&s.push({id:r.initial,entry:!0})),!a.has(l))for(let t of(a.add(l),r.parent&&s.push({id:r.parent,entry:!1}),e.transitions))t.source===l&&s.push({id:t.target,entry:!0})}}return a}(e);e.states.forEach((e,i)=>{a.has(e.id)||t.push({code:"unreachable_state",path:`states.[${i}]`,message:`State "${e.id}" cannot be reached from the initial state.`,hint:"Add a transition into it, or make it its composite's initial substate."})})}return t.slice(0,20)}s._kM({code:s.uSQ("composite_initial_defaulted"),severity:s.uSQ("warning"),path:s.ukk,message:s.ukk,hint:s.ukk});class ta extends E{issues;constructor(e){super(e[0]?.message??"State machine failed semantic validation."),this.issues=e,this.name="StateMachineValidationError"}}function ti(e){var t=s.svK(e2,{errors:"all"})(e);let a=tt(t);if(a.length>0)throw new ta(a);return e8(t)}ti({id:"order-lifecycle",title:"Order lifecycle",type:eN,initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"cancelled",label:"Cancelled"},{id:"done",kind:"final"}],transitions:[{id:"pay",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge"},{id:"remind",source:"pending",target:"pending",event:"after 24h",action:"email"},{id:"cancel",source:"pending",target:"cancelled",event:"cancel"},{id:"ship",source:"paid",target:"shipped",event:"ship"},{id:"reject",source:"shipped",target:"paid",event:"reject shipment"},{id:"deliver",source:"shipped",target:"done",event:"deliver"},{id:"close",source:"cancelled",target:"done"}]}),ti({id:"media-player",title:"Media player",type:eN,initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"}],transitions:[{id:"play",source:"stopped",target:"active",event:"play"},{id:"pause",source:"playing",target:"paused",event:"pause"},{id:"resume",source:"paused",target:"playing",event:"resume"},{id:"seek",source:"playing",target:"playing",event:"seek",action:"jump"},{id:"stop",source:"active",target:"stopped",event:"stop"}]});let ts="gantt";class tl extends s.Xsx("GanttTask")({id:s.ukk,label:s.ukk,start:s.ukk,end:s.Qrq(s.ukk),duration:s.Qrq(s.wYs),milestone:s.Qrq(s.v8c),phase:s.Qrq(s.ukk),dependsOn:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),progress:s.Qrq(s.wYs)}){}class to extends s.Xsx("GanttDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(ts),tasks:s.O31(tl).pipe(s.fXn,s.Sr8(s.tJb(1))),phases:s.Qrq(s.O31(s.ukk).pipe(s.fXn)),today:s.Qrq(s.ukk),style:q.pipe(s.tiU(o.PyW({...y})))}){}function tr(e){let t=el(e);return t?.granularity==="day"?Math.round(t.start/864e5):void 0}function tn(e){return new Date(864e5*e).toISOString().slice(0,10)}function td(e){return!0===e.milestone||0===e.duration}function tc(e){let t=tr(e.start);if(void 0!==t){if(td(e))return{start:t,end:t,milestone:!0};if(void 0!==e.end){let a=tr(e.end);return void 0===a?void 0:{start:t,end:a+1,milestone:!1}}return void 0===e.duration?void 0:{start:t,end:t+e.duration,milestone:!1}}}function tp(e){if(e.phases)return[...e.phases];let t=[];for(let a of e.tasks)void 0===a.phase||t.includes(a.phase)||t.push(a.phase);return t}function th(e){let t=tp(e);return 0===t.length?[{tasks:e.tasks}]:t.map(t=>({phase:t,tasks:e.tasks.filter(e=>e.phase===t)}))}let tg="Use YYYY-MM-DD, copied from the source.";function tu(e){let t=[],{tasks:a}=e;(0===a.length||a.length>60)&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart needs 1–60 tasks.",hint:"Provide at least one task, or split a longer plan into several charts."});let i=new Set;for(let[e,s]of a.entries())i.has(s.id)&&t.push({code:"duplicate_task_id",path:`tasks.[${e}].id`,message:`Task id "${s.id}" is duplicated.`,hint:"Give each task a unique stable id."}),i.add(s.id);let s=void 0!==e.phases||a.some(e=>void 0!==e.phase),l=0;a.forEach((a,o)=>{let r=`tasks.[${o}]`,n=tr(a.start);void 0===n&&t.push({code:"invalid_gantt_date",path:`${r}.start`,message:`Task "${a.id}" has invalid start "${a.start}".`,hint:tg});let d=void 0===a.end?void 0:tr(a.end);void 0!==a.end&&void 0===d&&t.push({code:"invalid_gantt_date",path:`${r}.end`,message:`Task "${a.id}" has invalid end "${a.end}".`,hint:`${tg} end is the last day, inclusive.`});let c=(e,a,i="")=>t.push({code:"invalid_gantt_span",path:`${r}${i}`,message:e,hint:a});td(a)?(!0===a.milestone&&void 0!==a.duration&&0!==a.duration&&c(`Milestone "${a.id}" cannot have a duration.`,"A milestone is one day: give it start only.",".duration"),void 0!==a.end&&void 0!==d&&void 0!==n&&d!==n&&c(`Milestone "${a.id}" cannot end on another day.`,"A milestone is one day: give it start only, or drop milestone to draw a bar.",".end")):void 0===a.end==(void 0===a.duration)?c(`Task "${a.id}" needs exactly one of end or duration.`,"Give end (last day, inclusive) or duration (calendar days), or set milestone: true."):void 0!==a.duration&&(!Number.isInteger(a.duration)||a.duration<0)?c(`Task "${a.id}" has duration ${a.duration}; durations are whole calendar days.`,"Use a whole number of days counting start, such as 5 for start through start + 4.",".duration"):void 0!==d&&void 0!==n&&d<n?c(`Task "${a.id}" ends before it starts.`,"end is the last day, inclusive, on or after start.",".end"):void 0!==a.duration&&a.duration>36525&&c(`Task "${a.id}" has duration ${a.duration}; a chart spans at most 36525 days.`,"Give the task's real length in calendar days, or split a longer plan into several charts.",".duration"),void 0!==a.progress&&(a.progress<0||a.progress>100||td(a))&&t.push({code:"invalid_gantt_progress",path:`${r}.progress`,message:`Task "${a.id}" has progress ${a.progress}.`,hint:"progress is a percent from 0 to 100, on tasks only, never milestones."}),s&&(void 0===a.phase||e.phases&&!e.phases.includes(a.phase))&&t.push({code:"invalid_gantt_phase",path:`${r}.phase`,message:`Task "${a.id}" needs one of the chart's phases.`,hint:"Give every task a phase listed in phases, or omit phases everywhere."});let p=new Set;(a.dependsOn??[]).forEach((e,s)=>{l+=1;let o=`${r}.dependsOn.[${s}]`;e===a.id?t.push({code:"self_dependency",path:o,message:`Task "${a.id}" depends on itself.`,hint:"List only the tasks that must finish before this one starts."}):i.has(e)?p.has(e)&&t.push({code:"missing_dependency",path:o,message:`Task "${a.id}" lists "${e}" more than once.`,hint:"List each predecessor once."}):t.push({code:"missing_dependency",path:o,message:`Task "${a.id}" depends on unknown task "${e}".`,hint:"Use the id of a task declared in tasks."}),p.add(e)})}),l>120&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart supports at most 120 dependencies.",hint:"Keep the dependencies the plan states, or split it into several charts."});let o=function(e){let t=new Map(e.map(e=>[e.id,e])),a=new Map,i=[],s=e=>{if("done"!==a.get(e)){if("open"===a.get(e))return[...i.slice(i.indexOf(e)),e];for(let l of(a.set(e,"open"),i.push(e),t.get(e)?.dependsOn??[])){if(l===e||!t.has(l))continue;let a=s(l);if(a)return a}i.pop(),a.set(e,"done")}};for(let t of e){let e=s(t.id);if(e)return e.toReversed()}}(a);o&&t.push({code:"gantt_dependency_cycle",path:`tasks.[${a.findIndex(e=>e.id===o[0])}].dependsOn`,message:`Dependencies form a cycle: ${o.join(" → ")}.`,hint:"A task cannot wait, directly or indirectly, for itself. Remove one dependency on the cycle."}),e.phases&&(new Set(e.phases).size!==e.phases.length&&t.push({code:"invalid_gantt_phase",path:"phases",message:"Phase names must be unique.",hint:"List each phase once, in top-to-bottom order."}),e.phases.forEach((e,i)=>{a.some(t=>t.phase===e)||t.push({code:"invalid_gantt_phase",path:`phases.[${i}]`,message:`Phase "${e}" has no tasks.`,hint:"List only phases that tasks name."})})),tp(e).length>12&&t.push({code:"gantt_too_large",path:"phases",message:"A Gantt chart supports at most 12 phases.",hint:"Merge related phases or split the plan into several charts."});let r=void 0===e.today?void 0:tr(e.today);void 0!==e.today&&void 0===r&&t.push({code:"invalid_gantt_date",path:"today",message:`Today "${e.today}" must be a YYYY-MM-DD date.`,hint:`${tg} Omit today unless the source states it.`});let n=[...a.flatMap(e=>{let t=tc(e);return t&&Number.isFinite(t.end)?[t.start,t.end]:[]}),...void 0===r?[]:[r,r+1]];return n.length&&Math.max(...n)-Math.min(...n)>36525&&t.push({code:"gantt_too_large",path:"tasks",message:"A Gantt chart spans at most 36525 days, first task through last and Today.",hint:"Check the dates for a typo, or split a longer plan into several charts."}),t.slice(0,20)}class tf extends E{issues;constructor(e){super(e[0]?.message??"Gantt chart failed validation."),this.issues=e,this.name="GanttValidationError"}}function tm(e){let t=tu(e);if(t.length)throw new tf(t);return e}tm(s.svK(to,{errors:"all"})({id:"release-plan",title:"Release plan",type:"gantt",tasks:[{id:"design",label:"Design",start:"2026-03-02",end:"2026-03-06",phase:"Build"},{id:"api",label:"API",start:"2026-03-09",duration:10,phase:"Build",dependsOn:["design"],progress:40},{id:"web",label:"Web app",start:"2026-03-09",end:"2026-03-20",phase:"Build",dependsOn:["design"]},{id:"qa",label:"QA",start:"2026-03-23",duration:5,phase:"Launch",dependsOn:["api","web"]},{id:"release",label:"Release",start:"2026-03-30",milestone:!0,phase:"Launch",dependsOn:["qa"]}]}));let tv="er",ty=["one","zero-or-one","many","one-or-many","zero-or-many"],tw=s.xCb(ty);class tx extends s.Xsx("ErField")({name:s.ukk,type:s.Qrq(s.ukk),pk:s.Qrq(s.v8c),fk:s.Qrq(s.v8c),unique:s.Qrq(s.v8c),nullable:s.Qrq(s.v8c)}){}class tb extends s.Xsx("ErEntity")({id:s.ukk,name:s.Qrq(s.ukk),fields:s.O31(tx).pipe(s.fXn,s.tiU(o.PyW([])))}){}class tk extends s.Xsx("ErRelationship")({id:s.ukk,from:s.ukk,to:s.ukk,fromCardinality:tw,toCardinality:tw,label:s.Qrq(s.ukk)}){}class tM extends s.Xsx("ErDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(tv),entities:s.O31(tb).pipe(s.fXn,s.Sr8(s.tJb(1))),relationships:s.O31(tk).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let tC=s.xCb(["er_too_large","invalid_entity_id","duplicate_entity_id","duplicate_entity_name","duplicate_field_name","er_text_too_long","nullable_primary_key","duplicate_relationship_id","missing_relationship_entity","missing_relationship_field","self_referencing_field"]);function tz(e){return e.name??e.id}function t_(e){let t=e.indexOf(".");return t<0?{entity:e.trim()}:{entity:e.slice(0,t).trim(),field:e.slice(t+1).trim()}}function tL(e){return e.trim().toLowerCase()}function tB(e){let t=[],a=e.entities.reduce((e,t)=>e+t.fields.length,0);e.entities.length>30&&t.push({code:"er_too_large",path:"entities",message:`The diagram has ${e.entities.length} entities; the supported maximum is 30.`,hint:"Split the schema into diagrams by area, or leave out minor lookup tables."}),a>240&&t.push({code:"er_too_large",path:"entities",message:`The diagram has ${a} fields; the supported maximum is 240.`,hint:"Keep the keys and the fields the request names, or split the schema by area."}),e.relationships.length>60&&t.push({code:"er_too_large",path:"relationships",message:`The diagram has ${e.relationships.length} relationships; the supported maximum is 60.`,hint:"Split the schema into diagrams by area."});let i=new Map,s=new Map;e.entities.forEach((e,a)=>{let l=`entities.[${a}]`;/[.:\s]/u.test(e.id)&&t.push({code:"invalid_entity_id",path:`${l}.id`,message:`Entity id "${e.id}" contains a dot, a colon or a space.`,hint:'Use letters, digits, hyphens or underscores in entity ids; relationships write "entity.field".'}),i.has(e.id)&&t.push({code:"duplicate_entity_id",path:`${l}.id`,message:`Entity id "${e.id}" is used more than once.`,hint:"Give every entity a unique id."}),i.set(e.id,e);let o=tz(e),r=s.get(tL(o));void 0!==r&&r!==e.id&&t.push({code:"duplicate_entity_name",path:void 0===e.name?`${l}.id`:`${l}.name`,message:`Entities "${r}" and "${e.id}" are both named "${o}".`,hint:"Give every entity a distinct name, or merge the two."}),s.set(tL(o),e.id),o.length>64&&t.push({code:"er_text_too_long",path:void 0===e.name?`${l}.id`:`${l}.name`,message:`Entity name "${o}" is longer than 64 characters.`,hint:"Shorten the entity name."}),e.fields.length>40&&t.push({code:"er_too_large",path:`${l}.fields`,message:`Entity "${e.id}" has ${e.fields.length} fields; the supported maximum is 40.`,hint:"Keep the keys and the fields the request names."});let n=new Set;e.fields.forEach((a,i)=>{let s=`${l}.fields.[${i}]`;for(let[i,l]of(n.has(tL(a.name))&&t.push({code:"duplicate_field_name",path:`${s}.name`,message:`Entity "${e.id}" has more than one field named "${a.name}".`,hint:"List each field once."}),n.add(tL(a.name)),[["name",a.name],["type",a.type]]))void 0!==l&&(l.length>64||/\n/u.test(l))&&t.push({code:"er_text_too_long",path:`${s}.${i}`,message:`Field ${i} "${l}" of "${e.id}" is longer than 64 characters or spans lines.`,hint:`Write the field ${i} on one line of at most 64 characters.`});a.pk&&a.nullable&&t.push({code:"nullable_primary_key",path:`${s}.nullable`,message:`Primary key "${e.id}.${a.name}" is marked nullable.`,hint:"A primary key is never empty; drop nullable from it."})})});let l=new Set;return e.relationships.forEach((e,a)=>{let s=`relationships.[${a}]`;l.has(e.id)&&t.push({code:"duplicate_relationship_id",path:`${s}.id`,message:`Relationship id "${e.id}" is used more than once.`,hint:"Give every relationship a unique id, or omit ids to generate them."}),l.add(e.id);let[o,r]=["from","to"].map(a=>{let l=t_(e[a]),o=i.get(l.entity);return o?void 0===l.field||o.fields.some(e=>tL(e.name)===tL(l.field))?l:void t.push({code:"missing_relationship_field",path:`${s}.${a}`,message:`Relationship "${e.id}" names field "${l.field}", which "${o.id}" does not have.`,hint:`Name one of the fields of "${o.id}", add the field, or name the entity alone.`}):void t.push({code:"missing_relationship_entity",path:`${s}.${a}`,message:`Relationship "${e.id}" ${"from"===a?"starts":"ends"} at "${l.entity}", which is not an entity.`,hint:'Set it to an entity id, or "entity.field" for the column the relationship runs through.'})});o?.field!==void 0&&r?.field!==void 0&&o.entity===r.entity&&tL(o.field)===tL(r.field)&&t.push({code:"self_referencing_field",path:s,message:`Relationship "${e.id}" joins "${o.entity}.${o.field}" to itself.`,hint:"A self-reference runs from the foreign key to the key it references, such as employees.manager_id to employees.id."})}),t.slice(0,20)}s.Xsx("ErValidationIssue")({code:tC,path:s.ukk,message:s.ukk,hint:s.ukk});class tS extends E{issues;constructor(e){super(e[0]?.message??"ER diagram failed semantic validation."),this.issues=e,this.name="ErValidationError"}}function tA(e){var t=s.svK(tM,{errors:"all"})(e);let a=tB(t);if(a.length>0)throw new tS(a);return t}tA({id:"shop-schema",title:"Shop schema",type:tv,entities:[{id:"customers",fields:[{name:"id",type:"uuid",pk:!0},{name:"email",type:"text",unique:!0},{name:"name",type:"text"}]},{id:"orders",fields:[{name:"id",type:"uuid",pk:!0},{name:"customer_id",type:"uuid",fk:!0},{name:"placed_at",type:"timestamptz"},{name:"shipped_at",type:"timestamptz",nullable:!0}]},{id:"order_items",fields:[{name:"order_id",type:"uuid",pk:!0,fk:!0},{name:"product_id",type:"uuid",pk:!0,fk:!0},{name:"quantity",type:"int"}]},{id:"products",fields:[{name:"id",type:"uuid",pk:!0},{name:"sku",type:"text",unique:!0},{name:"price",type:"numeric(10,2)"}]}],relationships:[{id:"places",from:"customers.id",to:"orders.customer_id",fromCardinality:"one",toCardinality:"zero-or-many",label:"places"},{id:"contains",from:"orders.id",to:"order_items.order_id",fromCardinality:"one",toCardinality:"one-or-many"},{id:"ordered-as",from:"products.id",to:"order_items.product_id",fromCardinality:"one",toCardinality:"zero-or-many"}]}),tA({id:"org-schema",title:"Org schema",type:tv,entities:[{id:"employees",fields:[{name:"id",type:"int",pk:!0},{name:"manager_id",type:"int",fk:!0,nullable:!0},{name:"department_id",type:"int",fk:!0},{name:"name",type:"text"}]},{id:"departments",fields:[{name:"id",type:"int",pk:!0},{name:"head_id",type:"int",fk:!0,unique:!0,nullable:!0},{name:"name",type:"text",unique:!0}]}],relationships:[{id:"reports-to",from:"employees.id",to:"employees.manager_id",fromCardinality:"zero-or-one",toCardinality:"zero-or-many",label:"manages"},{id:"works-in",from:"departments.id",to:"employees.department_id",fromCardinality:"one",toCardinality:"one-or-many"},{id:"heads",from:"employees.id",to:"departments.head_id",fromCardinality:"zero-or-one",toCardinality:"zero-or-one",label:"heads"}]});let tP={PK:"pk",FK:"fk",UK:"unique",UQ:"unique",UNIQUE:"unique",NULL:"nullable",NULLABLE:"nullable","?":"nullable"};function tV(e){let t=e.trim().split(/\s+/u).filter(Boolean),a={},i=e=>tP[e.toUpperCase()];for(;t.length>1;){let e=t.at(-1);if("NULL"===e.toUpperCase()&&t.at(-2)?.toUpperCase()==="NOT"){t.splice(-2,2);continue}let s=i(e)??(e.length>1&&e.endsWith("?")?i(e.slice(0,-1)):void 0);if(!s)break;a[s]=!0,e.length>1&&e.endsWith("?")&&(a.nullable=!0),t.pop()}for(;t.length>1&&/^(?:PK|FK|UK)$/u.test(t[0]);)a[i(t.shift())]=!0;let s=t.shift()??e.trim(),l=t.join(" ");return l.endsWith("?")&&(l=l.slice(0,-1).trim(),a.nullable=!0),!l&&s.length>1&&s.endsWith("?")&&(s=s.slice(0,-1),a.nullable=!0),{name:s,...l?{type:l}:{},...a}}let tH={1:"one","1..1":"one","exactly-one":"one","one-and-only-one":"one","only-one":"one","mandatory-one":"one","0..1":"zero-or-one","0-1":"zero-or-one","0-or-1":"zero-or-one",optional:"zero-or-one","optional-one":"zero-or-one","one-or-zero":"zero-or-one","at-most-one":"zero-or-one","*":"many",n:"many",m:"many",multiple:"many","1..*":"one-or-many","1..n":"one-or-many","1-n":"one-or-many","1+":"one-or-many","at-least-one":"one-or-many","one-or-more":"one-or-many","many-mandatory":"one-or-many","0..*":"zero-or-many","0..n":"zero-or-many","0-n":"zero-or-many","0+":"zero-or-many","zero-or-more":"zero-or-many","optional-many":"zero-or-many","many-optional":"zero-or-many"};function tq(e){if("string"!=typeof e)return e;let t=e.trim().toLowerCase().replace(/[\s_]+/gu,"-");return ty.includes(t)?t:tH[t]??e}let tF=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),tI="class",tE=["class","abstract","interface","enum"],tO=s.xCb(tE),tU=["public","private","protected","package"],tX=s.xCb(tU),tT={public:"+",private:"-",protected:"#",package:"~"},t$=["inheritance","realization","composition","aggregation","association","dependency"],tY=s.xCb(t$);function tG(e){return"inheritance"===e||"realization"===e}function tR(e){return"association"===e||"composition"===e||"aggregation"===e}class tD extends s.Xsx("ClassAttribute")({name:s.ukk,type:s.Qrq(s.ukk),visibility:s.Qrq(tX),static:s.Qrq(s.v8c)}){}class tZ extends s.Xsx("ClassParameter")({name:s.ukk,type:s.Qrq(s.ukk)}){}class tj extends s.Xsx("ClassMethod")({name:s.ukk,params:s.O31(tZ).pipe(s.fXn,s.tiU(o.PyW([]))),returns:s.Qrq(s.ukk),visibility:s.Qrq(tX),static:s.Qrq(s.v8c),abstract:s.Qrq(s.v8c)}){}class tN extends s.Xsx("ClassNode")({id:s.ukk,name:s.Qrq(s.ukk),kind:s.Qrq(tO),stereotype:s.Qrq(s.ukk),attributes:s.O31(tD).pipe(s.fXn,s.tiU(o.PyW([]))),methods:s.O31(tj).pipe(s.fXn,s.tiU(o.PyW([])))}){}class tW extends s.Xsx("ClassRelationship")({id:s.ukk,kind:tY,from:s.ukk,to:s.ukk,fromMultiplicity:s.Qrq(s.ukk),toMultiplicity:s.Qrq(s.ukk),fromRole:s.Qrq(s.ukk),toRole:s.Qrq(s.ukk),navigable:s.Qrq(s.v8c),label:s.Qrq(s.ukk)}){}class tJ extends s.Xsx("ClassDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(tI),classes:s.O31(tN).pipe(s.fXn,s.Sr8(s.tJb(1))),relationships:s.O31(tW).pipe(s.fXn,s.tiU(o.PyW([]))),style:q.pipe(s.tiU(o.PyW({...y})))}){}let tK=s.xCb(["class_too_large","invalid_class_id","duplicate_class_id","duplicate_class_name","duplicate_member","class_text_too_long","duplicate_relationship_id","missing_relationship_class","inheritance_cycle","invalid_inheritance","invalid_realization","invalid_multiplicity","misplaced_end_label"]);function tQ(e){return e.name??e.id}function t1(e){return e.kind??"class"}s.Xsx("ClassValidationIssue")({code:tK,path:s.ukk,message:s.ukk,hint:s.ukk});let t0={class:void 0,abstract:"abstract",interface:"interface",enum:"enumeration"};function t2(e){return e?`${tT[e]} `:""}function t3(e){return`${t2(e.visibility)}${e.name.trim()}${e.type?`: ${e.type.trim()}`:""}${e.static?" {static}":""}`}function t5(e){let t=e.params.map(e=>`${e.name.trim()}${e.type?`: ${e.type.trim()}`:""}`).join(", "),a=[e.abstract&&"{abstract}",e.static&&"{static}"].filter(Boolean);return`${t2(e.visibility)}${e.name.trim()}(${t})${e.returns?`: ${e.returns.trim()}`:""}${a.length>0?` ${a.join(" ")}`:""}`}function t4(e){return e.trim().toLowerCase()}let t6=/^(\d+|\*)(?:\.\.(\d+|\*))?$/u;function t7(e){let t=[],a=e.classes.reduce((e,t)=>e+t.attributes.length+t.methods.length,0);e.classes.length>30&&t.push({code:"class_too_large",path:"classes",message:`The diagram has ${e.classes.length} classes; the supported maximum is 30.`,hint:"Split the model into diagrams by package, or leave out minor classes."}),a>300&&t.push({code:"class_too_large",path:"classes",message:`The diagram has ${a} members; the supported maximum is 300.`,hint:"Keep the members the request names, or split the model by package."}),e.relationships.length>60&&t.push({code:"class_too_large",path:"relationships",message:`The diagram has ${e.relationships.length} relationships; the supported maximum is 60.`,hint:"Split the model into diagrams by package."});let i=new Map,s=new Map;e.classes.forEach((e,a)=>{let l=`classes.[${a}]`;/[:\s]/u.test(e.id)&&t.push({code:"invalid_class_id",path:`${l}.id`,message:`Class id "${e.id}" contains a colon or a space.`,hint:"Use letters, digits, dots, hyphens or underscores in class ids, and put the shown name in name."}),i.has(e.id)&&t.push({code:"duplicate_class_id",path:`${l}.id`,message:`Class id "${e.id}" is used more than once.`,hint:"Give every class a unique id."}),i.set(e.id,e);let o=tQ(e),r=void 0===e.name?`${l}.id`:`${l}.name`,n=s.get(t4(o));for(let[a,i,d]of(void 0!==n&&n!==e.id&&t.push({code:"duplicate_class_name",path:r,message:`Classes "${n}" and "${e.id}" are both named "${o}".`,hint:"Give every class a distinct name, or merge the two."}),s.set(t4(o),e.id),[["name",o,64],["stereotype",e.stereotype,64]]))void 0!==i&&(!(i.length<=d)||/\n/u.test(i))&&t.push({code:"class_text_too_long",path:"name"===a?r:`${l}.stereotype`,message:`The ${a} of "${e.id}" is longer than ${d} characters or spans lines.`,hint:`Write the ${a} on one line of at most ${d} characters.`});let d=e.attributes.length+e.methods.length;d>30&&t.push({code:"class_too_large",path:l,message:`Class "${e.id}" has ${d} members; the supported maximum is 30.`,hint:"Keep the members the request names."});let c=new Set,p=(a,i,s,o)=>{let r=`${l}.${a}.[${i}]`;c.has(o)&&t.push({code:"duplicate_member",path:r,message:`Class "${e.id}" lists ${"attributes"===a?"attribute":"method"} "${s}" more than once.`,hint:"List each member once; overloads differ in their parameters."}),c.add(o),(s.length>96||/\n/u.test(s))&&t.push({code:"class_text_too_long",path:r,message:`Member "${s}" of "${e.id}" is longer than 96 characters or spans lines.`,hint:"Write each member on one line of at most 96 characters."})};e.attributes.forEach((e,t)=>p("attributes",t,t3(e),`a:${t4(e.name)}`)),e.methods.forEach((e,t)=>p("methods",t,t5(e),`m:${t4(e.name)}(${e.params.map(e=>t4(e.type??e.name)).join(",")})`))});let l=new Set,o=new Map,r=new Set;e.relationships.forEach((e,a)=>{let s=`relationships.[${a}]`;l.has(e.id)&&t.push({code:"duplicate_relationship_id",path:`${s}.id`,message:`Relationship id "${e.id}" is used more than once.`,hint:"Give every relationship a unique id, or omit ids to generate them."}),l.add(e.id);let[n,d]=["from","to"].map(a=>{let l=i.get(e[a].trim());return l||t.push({code:"missing_relationship_class",path:`${s}.${a}`,message:`Relationship "${e.id}" ${"from"===a?"starts":"ends"} at "${e[a]}", which is not a class.`,hint:"Set it to the id of one of the classes."}),l}),{kind:c}=e;if(n&&d&&tG(c)){let e=`${c}\0${n.id}\0${d.id}`,[a,i]=[t1(n),t1(d)];r.has(e)?t.push({code:"inheritance"===c?"invalid_inheritance":"invalid_realization",path:s,message:`"${n.id}" ${"inheritance"===c?"extends":"implements"} "${d.id}" more than once.`,hint:"Draw each generalization once."}):n.id===d.id?t.push({code:"inheritance_cycle",path:s,message:`"${n.id}" ${"inheritance"===c?"extends":"implements"} itself.`,hint:"A class extends or implements another class, never itself."}):"inheritance"===c&&"interface"===a!=("interface"===i)?t.push({code:"invalid_inheritance",path:s,message:"interface"===a?`Interface "${n.id}" extends "${d.id}", which is not an interface.`:`"${n.id}" extends interface "${d.id}".`,hint:"interface"===a?"An interface extends only interfaces; make the class implement the interface instead (a realization from the class to the interface).":'A class implements an interface: use kind "realization" from the class to the interface.'}):"realization"===c&&("interface"===a||"interface"!==i)&&t.push({code:"invalid_realization",path:s,message:"interface"===a?`Interface "${n.id}" implements "${d.id}".`:`"${n.id}" implements "${d.id}", which is not an interface.`,hint:"interface"===a?'An interface extends another interface: use kind "inheritance".':'Mark "to" as kind "interface", or use kind "inheritance" to extend a class.'}),r.add(e),n.id!==d.id&&o.set(n.id,[...o.get(n.id)??[],d.id])}let p=tR(c);for(let a of["from","to"])for(let i of[`${a}Multiplicity`,`${a}Role`]){let a=e[i];void 0!==a&&(p?a.length>64||/\n/u.test(a)?t.push({code:"class_text_too_long",path:`${s}.${i}`,message:`"${a}" at an end of "${e.id}" is longer than 64 characters or spans lines.`,hint:"Write it on one short line."}):i.endsWith("Multiplicity")&&!function(e){let t=t6.exec(e.trim());if(!t)return!1;let[,a,i]=t;return void 0===i||"*"!==a&&("*"===i||Number(a)<=Number(i))}(a)?t.push({code:"invalid_multiplicity",path:`${s}.${i}`,message:`Multiplicity "${a}" of "${e.id}" is not a UML multiplicity.`,hint:'Write a bound or a range: "1", "0..1", "*", "1..*", "0..*" or "2..4".'}):"fromMultiplicity"!==i||"composition"!==c||["1","0..1","1..1"].includes(a.trim())||t.push({code:"invalid_multiplicity",path:`${s}.${i}`,message:`Composition "${e.id}" gives its whole "${e.from}" multiplicity "${a}".`,hint:'A part belongs to one whole at a time: write "1" or "0..1", or use an aggregation for a shared part.'}):t.push({code:"misplaced_end_label",path:`${s}.${i}`,message:`${"dependency"===c?"A dependency":`An ${c}`} "${e.id}" has a ${i.endsWith("Role")?"role":"multiplicity"}.`,hint:"Only associations, compositions and aggregations carry multiplicities and roles; drop it."}))}void 0===e.navigable||p||t.push({code:"misplaced_end_label",path:`${s}.navigable`,message:`${"dependency"===c?"A dependency":`An ${c}`} "${e.id}" is marked navigable.`,hint:"dependency"===c?"A dependency always draws its arrow; drop navigable.":"Only associations, compositions and aggregations take navigable; drop it."}),void 0!==e.label&&e.label.length>64&&t.push({code:"class_text_too_long",path:`${s}.label`,message:`The label of "${e.id}" is longer than 64 characters.`,hint:"Shorten the label."})});let n=new Map,d=(e,t)=>{for(let a of(n.set(e,1),o.get(e)??[])){if(1===n.get(a))return[...t.slice(t.indexOf(a)),a];if(void 0===n.get(a)){let e=d(a,[...t,a]);if(e)return e}}n.set(e,2)};for(let e of o.keys()){if(n.has(e))continue;let a=d(e,[e]);if(a){t.push({code:"inheritance_cycle",path:"relationships",message:`Inheritance runs in a cycle: ${a.join(" → ")}.`,hint:"A class never extends one of its own subclasses; drop or reverse one generalization."});break}}return t.slice(0,20)}class t8 extends E{issues;constructor(e){super(e[0]?.message??"Class diagram failed semantic validation."),this.issues=e,this.name="ClassValidationError"}}function t9(e){var t=s.svK(tJ,{errors:"all"})(e);let a=t7(t);if(a.length>0)throw new t8(a);return t}let ae={"+":"public","-":"private","#":"protected","~":"package",public:"public",private:"private",protected:"protected",package:"package",internal:"package"};function at(e){let t=e.trim(),a={};for(;;){let e=/^([+\-#~])\s*/u.exec(t);if(e&&!a.visibility){a.visibility=ae[e[1]],t=t.slice(e[0].length);continue}let i=/^(public|private|protected|package|internal|static|abstract)\s+/iu.exec(t);if(!i)break;let s=i[1].toLowerCase();"static"===s?a.static=!0:"abstract"===s?a.abstract=!0:a.visibility=ae[s],t=t.slice(i[0].length)}for(;;){let e=/\s*(?:\{(static|abstract)\}|([$*]))$/iu.exec(t);if(!e||0===e.index)break;let i=(e[1]??e[2]).toLowerCase();"static"===i||"$"===i?a.static=!0:a.abstract=!0,t=t.slice(0,e.index)}return{rest:t.trim(),modifiers:a}}function aa(e){let t=e.indexOf(":");if(t<0)return{name:e.trim()};let[a,i]=[e.slice(0,t).trim(),e.slice(t+1).trim()];return{name:a||e.trim(),...a&&i?{type:i}:{}}}function ai(e){let t=[],a=0,i=0;for(let s=0;s<e.length;s+=1){let l=e[s];"<([{".includes(l)?a+=1:">)]}".includes(l)?a=Math.max(0,a-1):","===l&&0===a&&(t.push(e.slice(i,s)),i=s+1)}return t.push(e.slice(i)),t.map(e=>e.trim()).filter(Boolean)}function as(e){let{rest:t,modifiers:a}=at(e),{visibility:i,static:s}=a;return{...aa(t),...i?{visibility:i}:{},...s?{static:!0}:{}}}function al(e){let{rest:t,modifiers:a}=at(e),i=t.indexOf("("),s=function(e,t){if(t<0)return -1;let a=0;for(let i=t;i<e.length;i+=1)if("("===e[i])a+=1;else if(")"===e[i]&&0==(a-=1))return i;return -1}(t,i),l={...a.visibility?{visibility:a.visibility}:{},...a.static?{static:!0}:{},...a.abstract?{abstract:!0}:{}};if(i<0||s<i){let{name:e,type:a}=aa(t);return{name:e,params:[],...a?{returns:a}:{},...l}}let o=t.slice(s+1).replace(/^\s*:\s*/u,"").trim();return{name:t.slice(0,i).trim()||t,params:ai(t.slice(i+1,s)).map(aa),...o?{returns:o}:{},...l}}let ao={extends:"inheritance",inherits:"inheritance",generalization:"inheritance","is-a":"inheritance",implements:"realization",realizes:"realization","interface-realization":"realization",composes:"composition","composed-of":"composition",aggregates:"aggregation","uses-a":"dependency",uses:"dependency",depends:"dependency","depends-on":"dependency",associates:"association"},ar={one:"1","exactly-one":"1","zero-or-one":"0..1",optional:"0..1",many:"*",n:"*",m:"*","zero-or-many":"0..*","zero-or-more":"0..*","one-or-many":"1..*","one-or-more":"1..*"},an=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function ad(e){if(!an(e))return e;let t=(e,t)=>{let a;if("string"==typeof e)return t?al(e):as(e);if(!an(e))return e;let i={...e};if(void 0!==i.visibility&&(i.visibility="string"==typeof(a=i.visibility)?ae[a.trim().toLowerCase()]??a:a),t){void 0===i.returns&&void 0!==i.returnType&&(i.returns=i.returnType,delete i.returnType);let e=i.params??i.parameters;delete i.parameters,"string"==typeof e?i.params=ai(e).map(aa):Array.isArray(e)&&(i.params=e.map(e=>"string"==typeof e?aa(e):e))}return i},a=Array.isArray(e.classes)?e.classes.map(e=>{if(!an(e))return e;let{values:a,...i}=e,s=Array.isArray(i.attributes)?i.attributes:Array.isArray(a)?a:i.attributes;return{...i,...void 0===i.kind&&Array.isArray(a)?{kind:"enum"}:{},...Array.isArray(s)?{attributes:s.map(e=>t(e,!1))}:void 0===s?{}:{attributes:s},...Array.isArray(i.methods)?{methods:i.methods.map(e=>t(e,!0))}:{},..."string"==typeof i.kind?{kind:"enumeration"===i.kind.trim().toLowerCase()?"enum":i.kind.trim().toLowerCase()}:{}}}):e.classes,i=Array.isArray(e.relationships)?e.relationships.map(e=>{if(!an(e))return e;let{source:t,target:a,type:i,...s}=e,l={...s,from:s.from??t,to:s.to??a,kind:function(e){if("string"!=typeof e)return e;let t=e.trim().toLowerCase().replace(/[\s_]+/gu,"-");return t$.includes(t)?t:ao[t]??e}(s.kind??i)};for(let e of["fromMultiplicity","toMultiplicity"])void 0!==l[e]&&(l[e]=function(e){if("number"==typeof e&&Number.isInteger(e)&&e>=0)return String(e);if("string"!=typeof e)return e;let t=e.trim(),a=ar[t.toLowerCase().replace(/[\s_]+/gu,"-")];return a||t.replace(/\s*\.\.\s*/gu,"..").replace(/(^|\.\.)[nm]$/iu,"$1*")}(l[e]));for(let e of["from","to","kind"])void 0===l[e]&&delete l[e];return l}):e.relationships;return{...e,...void 0===a?{}:{classes:a},...void 0===i?{}:{relationships:i}}}t9({id:"shapes",title:"Shapes",type:tI,classes:[{id:"Drawable",kind:"interface",methods:[{name:"draw",params:[{name:"ctx",type:"Canvas"}],returns:"void"}]},{id:"Shape",kind:"abstract",attributes:[{name:"x",type:"double",visibility:"protected"},{name:"y",type:"double",visibility:"protected"}],methods:[{name:"area",returns:"double",visibility:"public",abstract:!0},{name:"moveTo",params:[{name:"x",type:"double"},{name:"y",type:"double"}],returns:"void",visibility:"public"}]},{id:"Circle",attributes:[{name:"radius",type:"double",visibility:"private"}],methods:[{name:"area",returns:"double",visibility:"public"}]},{id:"Rectangle",attributes:[{name:"width",type:"double",visibility:"private"},{name:"height",type:"double",visibility:"private"}],methods:[{name:"area",returns:"double",visibility:"public"}]},{id:"Square",methods:[{name:"of",params:[{name:"side",type:"double"}],returns:"Square",visibility:"public",static:!0}]},{id:"Canvas",attributes:[{name:"MAX_SHAPES",type:"int",visibility:"public",static:!0}],methods:[{name:"add",params:[{name:"shape",type:"Shape"}],returns:"void",visibility:"public"}]}],relationships:[{id:"shape-draws",kind:"realization",from:"Shape",to:"Drawable"},{id:"circle-is-shape",kind:"inheritance",from:"Circle",to:"Shape"},{id:"rectangle-is-shape",kind:"inheritance",from:"Rectangle",to:"Shape"},{id:"square-is-rectangle",kind:"inheritance",from:"Square",to:"Rectangle"},{id:"canvas-holds",kind:"aggregation",from:"Canvas",to:"Shape",fromMultiplicity:"1",toMultiplicity:"0..*",toRole:"shapes"}]});let ac="org-chart";class ap extends s.Xsx("OrgPerson")({id:s.ukk,name:s.ukk,title:s.Qrq(s.ukk),department:s.Qrq(s.ukk),manager:s.Qrq(s.ukk),assistant:s.Qrq(s.v8c),avatar:s.Qrq(s.v8c)}){}class ah extends s.Xsx("OrgDottedLine")({id:s.ukk,report:s.ukk,manager:s.ukk,label:s.Qrq(s.ukk)}){}class ag extends s.Xsx("OrgChartDiagram")({id:s.ukk,title:s.ukk,type:s.uSQ(ac),people:s.O31(ap).pipe(s.fXn,s.Sr8(s.tJb(1))),dottedLines:s.O31(ah).pipe(s.fXn,s.tiU(o.PyW([]))),groupByDepartment:s.Qrq(s.v8c),forest:s.Qrq(s.v8c),style:q.pipe(s.tiU(o.PyW({...y})))}){}let au=s.xCb(["org_chart_too_large","invalid_person_id","duplicate_person_id","org_text_too_long","unknown_manager","self_manager","reporting_cycle","multiple_roots","invalid_assistant","duplicate_dotted_line_id","invalid_dotted_line"]);function af(e){return e.people.filter(e=>void 0===e.manager)}function am(e){let t=new Map;for(let a of e.people){if(void 0===a.manager)continue;let e=t.get(a.manager)??[];e.push(a),t.set(a.manager,e)}return t}function av(e){let t=[],a=(e,a,i,s)=>t.push({code:e,path:a,message:i,hint:s}),{people:i,dottedLines:s}=e;i.length>100&&a("org_chart_too_large","people",`An org chart holds at most 100 people; this one has ${i.length}.`,"Draw each division as its own chart, or keep the levels the request asks for."),s.length>24&&a("org_chart_too_large","dottedLines",`An org chart holds at most 24 dotted lines; this one has ${s.length}.`,"Keep the dotted-line reports the request states.");let l=new Set;i.forEach((e,t)=>{let i=`people.[${t}]`;e.id.includes(":")&&a("invalid_person_id",`${i}.id`,`Person id "${e.id}" contains a colon.`,"Use a short id without colons, such as ada or vp-eng."),l.has(e.id)&&a("duplicate_person_id",`${i}.id`,`Person id "${e.id}" is used more than once.`,"Give each person a unique id; two people with one name need two ids."),l.add(e.id);let s=(t,s,l)=>{void 0!==s&&s.trim().length>l&&a("org_text_too_long",`${i}.${t}`,`The ${t} of "${e.id}" is longer than ${l} characters.`,`Shorten the ${t} to at most ${l} characters.`)};s("name",e.name,60),s("title",e.title,80),s("department",e.department,40)});let o=am(e);i.forEach((e,t)=>{let i=`people.[${t}]`;if(void 0===e.manager){e.assistant&&a("invalid_assistant",`${i}.assistant`,`Assistant "${e.id}" has no manager.`,"Set manager to the person they assist.");return}e.manager===e.id?a("self_manager",`${i}.manager`,`"${e.id}" is their own manager.`,"Set manager to the person they report to, or omit it for the top person."):l.has(e.manager)||a("unknown_manager",`${i}.manager`,`Manager "${e.manager}" of "${e.id}" is not a person in the chart.`,"Use the id of a person in people, or add the manager as a person."),e.assistant&&(o.get(e.id)?.length??0)>0&&a("invalid_assistant",`${i}.assistant`,`Assistant "${e.id}" has reports of their own.`,"An assistant sits beside their manager with no reports; drop assistant: true to draw them as a manager.")});let r=function(e){let t=new Map(e.map(e=>[e.id,e.manager])),a=new Set;for(let i of e){let e=[],s=new Set,l=i.id;for(;void 0!==l&&t.has(l)&&!a.has(l);){if(s.has(l))return[...e.slice(e.indexOf(l)),l];s.add(l),e.push(l),l=t.get(l)}for(let t of e)a.add(t)}}(i);r&&a("reporting_cycle",`people.[${i.findIndex(e=>e.id===r[0])}].manager`,`Reporting lines run in a cycle: ${r.join(" → ")}.`,"Every chain of managers ends at a top person with no manager; remove one manager on the cycle.");let n=af(e);n.length>1&&!0!==e.forest&&a("multiple_roots",`people.[${i.indexOf(n[1])}].manager`,`${n.length} people have no manager: ${n.slice(0,4).map(e=>`"${e.id}"`).join(", ")}${n.length>4?", …":""}.`,"Give everyone but the top person a manager, or set forest: true to draw separate trees.");let d=new Map(i.map(e=>[e.id,e]));if(!r&&n.length>0){let e=new Map,t=a=>{let i=e.get(a.id);if(void 0!==i)return i;let s=void 0===a.manager?void 0:d.get(a.manager),l=s&&s.id!==a.id?t(s)+1:1;return e.set(a.id,l),l},s=Math.max(...i.map(t));s>12&&a("org_chart_too_large","people",`Reporting chains run ${s} levels deep; an org chart draws at most 12.`,"Draw the deepest teams as charts of their own.")}let c=new Set,p=new Set;return s.forEach((e,t)=>{let i=`dottedLines.[${t}]`;for(let t of(c.has(e.id)&&a("duplicate_dotted_line_id",`${i}.id`,`Dotted line id "${e.id}" is used more than once.`,"Give each dotted line a unique id."),c.add(e.id),["report","manager"]))l.has(e[t])||a("invalid_dotted_line",`${i}.${t}`,`Dotted line "${e.id}" names unknown ${t} "${e[t]}".`,"Use the ids of two people in the chart.");e.report===e.manager?a("invalid_dotted_line",i,`Dotted line "${e.id}" joins "${e.report}" to themselves.`,"A dotted line joins a person to a second manager."):d.get(e.report)?.manager===e.manager&&a("invalid_dotted_line",i,`"${e.report}" already reports to "${e.manager}" on a solid line.`,"Draw a dotted line only to a second manager, outside the solid reporting line.");let s=`${e.report}\0${e.manager}`;p.has(s)&&a("invalid_dotted_line",i,`"${e.report}" has two dotted lines to "${e.manager}".`,"Draw each dotted-line report once."),p.add(s),void 0!==e.label&&e.label.trim().length>40&&a("org_text_too_long",`${i}.label`,`The label of dotted line "${e.id}" is longer than 40 characters.`,"Shorten the label to at most 40 characters.")}),t.slice(0,20)}s.Xsx("OrgChartValidationIssue")({code:au,path:s.ukk,message:s.ukk,hint:s.ukk});class ay extends E{issues;constructor(e){super(e[0]?.message??"Org chart failed semantic validation."),this.issues=e,this.name="OrgChartValidationError"}}function aw(e){let t=av(e);if(t.length>0)throw new ay(t);return e}function ax(e){return aw(s.svK(ag,{errors:"all"})(e))}let ab=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function ak(e,t){let a;for(let i of t)void 0===a&&void 0!==e[i]&&(a=e[i]),delete e[i];return a}let aM=["manager","reportsTo","managerId","manager_id","reports_to","parent","boss"],aC=["title","role","position","jobTitle","job_title"],az=["department","team","dept","division","group"],a_=["dottedLines","dottedLine","dottedLineTo","dottedManager","dottedManagers"];function aL(e){if(!ab(e))return e;let{employees:t,members:a,reportingLines:i,reports:s,edges:l,...o}=e,r=o.people??t??a,n=[],d=new Map;if(Array.isArray(r)){for(let e of r)if(ab(e)){for(let t of["directReports","reports"])if(Array.isArray(e[t]))for(let a of e[t])"string"!=typeof a||d.has(a)||d.set(a,e.id)}}let c=Array.isArray(r)?r.map(e=>{if(!ab(e))return e;let t={...e};Array.isArray(t.directReports)&&delete t.directReports,Array.isArray(t.reports)&&delete t.reports;let a=ak(t,aM)??d.get(t.id),i=ak(t,aC),s=ak(t,az),l=ak(t,a_),o=t.name??t.label;for(let e of(delete t.label,("assistant"===t.kind||"assistant"===t.type)&&(t.assistant=!0,delete t.kind,delete t.type),Array.isArray(l)?l:void 0===l?[]:[l]))n.push(ab(e)?{report:t.id,...e}:{report:t.id,manager:e});return{...t,...void 0===o?{}:{name:o},...null==a||""===a?{}:{manager:a},...void 0===i||""===i?{}:{title:i},...void 0===s||""===s?{}:{department:s}}}):r,p=[i,s,l].find(Array.isArray),h=Array.isArray(c)&&p?c.map(e=>{if(!ab(e)||void 0!==e.manager)return e;let t=p.find(t=>ab(t)&&(t.report??t.to??t.target)===e.id&&!0!==t.dotted),a=ab(t)?t.manager??t.from??t.source:void 0;return void 0===a?e:{...e,manager:a}}):c,g=(p??[]).filter(e=>ab(e)&&!0===e.dotted),u=o.dottedLines,f=[...Array.isArray(u)?u:null==u?[]:[u],...n,...g.map(({dotted:e,...t})=>({report:t.report??t.to??t.target,manager:t.manager??t.from??t.source,...void 0===t.label?{}:{label:t.label}}))],m=new Set(f.flatMap(e=>ab(e)&&"string"==typeof e.id?[e.id]:[])),v=f.map(e=>{if(!ab(e))return e;let{from:t,to:a,source:i,target:s,person:l,employee:o,...r}=e,n={...r,report:r.report??t??i??l??o,manager:r.manager??a??s};for(let e of["report","manager"])void 0===n[e]&&delete n[e];if("string"!=typeof n.id||0===n.id.length){let e=`${String(n.report)}-dotted-${String(n.manager)}`.replace(/[^\w-]+/gu,"-"),t=e;for(let a=2;m.has(t);a+=1)t=`${e}-${a}`;m.add(t),n.id=t}return n});return{...o,...void 0===h?{}:{people:h},...void 0===u&&0===v.length?{}:{dottedLines:v}}}ax({id:"startup-team",title:"Startup team",type:ac,people:[{id:"ada",name:"Ada Lovelace",title:"Chief Executive Officer",department:"Executive"},{id:"grace",name:"Grace Hopper",title:"Executive Assistant",department:"Executive",manager:"ada",assistant:!0},{id:"linus",name:"Linus Torvalds",title:"Chief Technology Officer",department:"Engineering",manager:"ada"},{id:"margaret",name:"Margaret Hamilton",title:"Engineering Manager",department:"Engineering",manager:"linus"},{id:"ken",name:"Ken Thompson",title:"Platform Engineer",department:"Engineering",manager:"linus"},{id:"radia",name:"Radia Perlman",title:"Head of Product",department:"Product",manager:"ada"},{id:"don",name:"Don Norman",title:"Product Designer",department:"Product",manager:"radia"}],dottedLines:[{id:"ken-to-radia",report:"ken",manager:"radia"}]});let aB=[0,.25,.5,.75,1];function aS(e){return Math.round(100*e)/100}function aA(e){let[t,a,i,s]=e;return aB.map(e=>{let l=1-e,[o,r,n,d]=[l*l*l,3*l*l*e,3*l*e*e,e*e*e];return{x:aS(o*t.x+r*a.x+n*i.x+d*s.x),y:aS(o*t.y+r*a.y+n*i.y+d*s.y)}})}let aP=new Intl.Segmenter(void 0,{granularity:"grapheme"}),aV=/\p{Emoji_Presentation}|\uFE0F|\p{Regional_Indicator}|\u20E3/u,aH=/^[\uFE00-\uFE0F\u200B-\u200D\u2060]+$/u;function aq(e){return Array.from(aP.segment(e),e=>e.segment)}function aF(e){var t;return aH.test(e)?0:aV.test(e)?130:(t=e.codePointAt(0)??0)>=4352&&t<=4447||t>=11904&&t<=12350||t>=12353&&t<=13311||t>=13312&&t<=19903||t>=19968&&t<=40959||t>=40960&&t<=42191||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=65504&&t<=65510||t>=131072&&t<=262141?100:62}function aI(e){return aq(e).reduce((e,t)=>e+aF(t),0)}function aE(e,t){return Math.max(...e.split("\n").map(e=>(function(e,t){let a=0,i=0;for(let t of aq(e)){let e=aF(t);62===e?a+=1:i+=e}return a*t*.62+i*t/100})(e,t)))}function aO(e,t,a){let i=aE(e,t);return Math.max(1,Math.min(a,Math.ceil(i)),Math.ceil(i-t))}function aU(e,t,a){return Math.max(aO(e,t,a),Math.ceil(aE(e,t)))}function aX(e,t){return e.split("\n").flatMap(e=>(function(e,t){if(aI(e)<=t)return[e];let a=[],i="";for(let s of e.split(" ")){if(aI(s)>t){i&&(a.push(i),i=""),a.push(...function(e,t){let a=(function(e){let t=[],a="";for(let i of aq(e)){if(!(aF(i)>62)){a+=i;continue}a&&t.push(a),t.push(i),a=""}return a&&t.push(a),t})(e).flatMap(e=>aI(e)>t?function(e,t){let a=Math.max(t,1488);return aI(e)<=a?[e]:e.split(/(?<=[/\-_.])(?=.)|(?<=\p{Ll})(?=\p{Lu})/u).flatMap(e=>aI(e)<=a?[e]:function(e,t){let a=[],i="",s=0;for(let l of aq(e)){let e=aF(l);i&&s+e>t&&(a.push(i),i="",s=0),i+=l,s+=e}return i&&a.push(i),a}(e,t))}(e,t):[e]),i=[],s="";for(let e of a){if(aI(e)>t){s&&i.push(s),i.push(e),s="";continue}s&&aI(s+e)>t&&(i.push(s),s=""),s+=e}return s&&i.push(s),i}(s,t));continue}let e=i?`${i} ${s}`:s;if(aI(e)<=t){i=e;continue}a.push(i),i=s}return i&&a.push(i),a})(e,t)).join("\n")}function aT(e,t,a){return aX(e,Math.floor(100*t/a+1e-6))}let a$=Object.freeze({maxDimension:16384,maxElements:600,maxGroupsPerElement:16,maxLayouts:128,maxLayers:64,maxPointsPerElement:256,maxSerializedBytes:15e5,maxTextLength:4096,maxZOrderEntries:600}),aY=Object.freeze({boundTextPadding:5,gap:4,maxAssetBytes:65536,maxSize:64,maxTotalAssetBytes:786432,minSize:16}),aG=["cylinder","pipe","document","bucket"];function aR(e){return aG.includes(e)}let aD={cylinder:12,pipe:12,document:5,bucket:12};function aZ(e){return Math.round(.08*e)}function aj(e,t,a,i,s,l,o=12){return Array.from({length:o+1},(r,n)=>{let d=s+(l-s)*n/o;return{x:Math.round((e+a*Math.cos(d))*100)/100,y:Math.round((t+i*Math.sin(d))*100)/100}})}function aN(e,t,a,i=12,s=0){let{x:l,y:o,width:r,height:n}=e,d=l+r/2,c=o+n/2;if(a){let e=o+t,a=o+n-t;return{back:aj(d,e,r/2,t,0,-Math.PI,i),front:aj(d,e,r/2,t,Math.PI,0,i),end:aj(d,a,r/2-s,t,Math.PI,0,i),sides:[[{x:l,y:e},{x:l+s,y:a}],[{x:l+r,y:e},{x:l+r-s,y:a}]]}}let p=l+r-t,h=l+t;return{back:aj(p,c,t,n/2,-Math.PI/2,Math.PI/2,i),front:aj(p,c,t,n/2,-Math.PI/2,-(3*Math.PI)/2,i),end:aj(h,c,t,n/2,Math.PI/2,3*Math.PI/2,i),sides:[[{x:h,y:o},{x:p,y:o}],[{x:h,y:o+n},{x:p,y:o+n}]]}}function aW(e,t){let{x:a,y:i,width:s,height:l}=e;return Array.from({length:17},(e,o)=>{let r=1-o/16;return{x:Math.round((a+s*r)*100)/100,y:Math.round((i+l-t*(1-Math.cos(4*Math.PI*r)))*100)/100}})}function aJ(e,t,a){let{x:i,y:s,width:l,height:o}=e,r=aD[e.shape],n=i+l/2,d=s+o/2,c=(e,t)=>r*Math.sqrt(Math.max(0,1-(Math.min(Math.abs(e),t)/t)**2));if("pipe"===e.shape)return"left"===t?{x:i+r-c(a.y-d,o/2),y:a.y}:"right"===t?{x:i+l-r+c(a.y-d,o/2),y:a.y}:a;if("document"===e.shape){if("bottom"!==t)return a;let e=Math.min(1,Math.max(0,(a.x-i)/l));return{x:a.x,y:s+o-r*(1-Math.cos(4*Math.PI*e))}}let p="bucket"===e.shape?aZ(l):0,[h,g]=[s+r,s+o-r];if("top"===t)return{x:a.x,y:h-c(a.x-n,l/2)};if("bottom"===t)return{x:a.x,y:g+c(a.x-n,l/2-p)};if(0===p)return a;let u=p*(Math.min(g,Math.max(h,a.y))-h)/(g-h);return{x:"left"===t?i+u:i+l-u,y:a.y}}function aK(e,t,a=1){let i=aQ(e);return i.slice(1).some((e,s)=>{let l=i[s],[o,r]=[e.x-l.x,e.y-l.y],n=Math.max(0,Math.min(1,((t.x-l.x)*o+(t.y-l.y)*r)/(o*o+r*r||1)));return Math.hypot(t.x-l.x-n*o,t.y-l.y-n*r)<=a})}function aQ(e){let{x:t,y:a,width:i}=e,s=aD[e.shape];if("document"===e.shape)return[{x:t,y:a},{x:t+i,y:a},...aW(e,s),{x:t,y:a}];let{back:l,end:o}=aN(e,s,"pipe"!==e.shape,24,"bucket"===e.shape?aZ(i):0);return[...l,...o,l[0]]}let a1=["zone","sequence-lifeline","sequence-activation","timeline-marker","chart-mark","state-marker","gantt-mark","er-table","er-optional","class-box","swimlane","swimlane-header"],a0=["sequence-lifeline","sequence-activation","timeline-marker","chart-mark","er-optional","swimlane","zone"],a2={"chart-mark":"Chart mark","class-box":"Class box","er-optional":"Optional relationship end","er-table":"Entity table","gantt-mark":"Gantt mark","sequence-activation":"Sequence activation","sequence-lifeline":"Sequence lifeline","state-marker":"State marker",swimlane:"Swimlane","swimlane-header":"Swimlane header","timeline-marker":"Timeline marker",zone:"Zone"};function a3(e){let t=new Set;for(let a of e){if(t.has(a))return a;t.add(a)}}function a5(e){return"x"in e&&"y"in e}let a4=new TextEncoder;function a6(e){return a4.encode(e).byteLength}function a7(e){let t=aY.boundTextPadding;if("ellipse"===e.shape||"circle"===e.shape){let a=1-Math.SQRT1_2;return{x:t+e.width/2*a,y:t+e.height/2*a}}return"diamond"===e.shape?{x:t+e.width/4,y:t+e.height/4}:"pipe"===e.shape?{x:t+2*aD.pipe,y:t}:"bucket"===e.shape?{x:t+aZ(e.width),y:t+2*aD.bucket}:"cylinder"===e.shape||"document"===e.shape?{x:t,y:t+2*aD[e.shape]}:{x:t,y:t}}function a8(e){let t=2*aY.boundTextPadding;return"ellipse"===e.shape||"circle"===e.shape?{width:Math.round(e.width/2*Math.SQRT2)-t,height:Math.round(e.height/2*Math.SQRT2)-t}:"diamond"===e.shape?{width:Math.round(e.width/2)-t,height:Math.round(e.height/2)-t}:"pipe"===e.shape?{width:e.width-t-4*aD.pipe,height:e.height-t}:"cylinder"===e.shape||"document"===e.shape?{width:e.width-t,height:e.height-t-4*aD[e.shape]}:"bucket"===e.shape?{width:e.width-t-2*aZ(e.width),height:e.height-t-4*aD.bucket}:{width:e.width-t,height:e.height-t}}function a9(e){return e?e.size+2*aY.gap:0}function ie(e){let t=new Map(e.layers.map(e=>[e.id,e]));return e=>!e.layerId||t.get(e.layerId)?.visible!==!1}function it(e,t){let a=new Map;for(let[i,s]of e.elements.entries())"text"===s.type&&s.containerId&&t(s)&&a.set(s.containerId,{element:s,index:i});return a}function ia(e,t,a){let i=t?.text??e.label,s=t?.fontSize??16,l=t?t.maxWidth??160:Math.max(1,e.width-24),o=i.split("\n"),r=aE(i,s),n=Math.max(1,Math.min(l,r)),d=Math.ceil(o.length*s*1.35);if(aO(i,s,l)-s+24>e.width)return!0;if(a||aR(e.shape)){let t=a8(e);return r>t.width||d+a9(a)>t.height}return n+24>e.width||d+18>e.height}function ii(e){let t=[];0===e.elements.length&&t.push({code:"empty_canvas",message:"CanvasSpec must contain at least one element.",path:"elements"}),e.elements.length>a$.maxElements&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxElements} elements.`,path:"elements"}),e.layers.length>a$.maxLayers&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxLayers} layers.`,path:"layers"}),e.layouts.length>a$.maxLayouts&&t.push({code:"limit_exceeded",message:`Canvas exceeds ${a$.maxLayouts} layout primitives.`,path:"layouts"}),(e.width>a$.maxDimension||e.height>a$.maxDimension)&&t.push({code:"limit_exceeded",message:`Canvas dimensions may not exceed ${a$.maxDimension}.`,path:"width"});let a=a3(e.elements.map(e=>e.id));a&&t.push({code:"duplicate_element_id",elementId:a,message:`Duplicate element id "${a}" is not allowed.`,path:"elements"});let i=a3(e.layers.map(e=>e.id));i&&t.push({code:"duplicate_layer_id",message:`Duplicate layer id "${i}" is not allowed.`,path:"layers"});let s=a3(e.zOrder);s&&t.push({code:"duplicate_z_order_element",elementId:s,message:`zOrder contains duplicate element "${s}".`,path:"zOrder"}),e.zOrder.length>a$.maxZOrderEntries&&t.push({code:"limit_exceeded",message:`zOrder exceeds ${a$.maxZOrderEntries} entries.`,path:"zOrder"});let l=new Map(e.elements.map(e=>[e.id,e])),o=e.elements.filter(e=>"node"===e.type),r=iu(e.elements),n=a3([...o.map(e=>e.nodeId),...e.elements.flatMap(e=>"frame"===e.type&&void 0!==e.nodeId?[e.nodeId]:[])]);n&&t.push({code:"invalid_binding",message:`Duplicate nodeId "${n}" makes connector bindings ambiguous.`,path:"elements"});let d=a3(e.elements.flatMap(e=>"arrow"===e.type?[e.edgeId]:[]));d&&t.push({code:"invalid_binding",message:`Duplicate edgeId "${d}" makes connector selection ambiguous.`,path:"elements"});let c=a3(e.elements.flatMap(e=>"text"===e.type&&e.containerId?[e.containerId]:[]));c&&t.push({code:"invalid_binding",elementId:c,message:`Container "${c}" has more than one bound text element.`,path:"elements"});let p=new Set(e.layers.map(e=>e.id)),h=ie(e),g=it(e,h);t.push(...function(e){let t=[],a=0;for(let[i,s]of Object.entries(e.icons??{})){let e=a6(s.svg);a+=e,e>aY.maxAssetBytes&&t.push({code:"limit_exceeded",message:`Icon asset "${i}" exceeds ${aY.maxAssetBytes} bytes.`,path:`icons.${i}`})}return a>aY.maxTotalAssetBytes&&t.push({code:"limit_exceeded",message:`Icon assets exceed ${aY.maxTotalAssetBytes} bytes per canvas.`,path:"icons"}),t}(e)),e.elements.forEach((a,i)=>{let s,o;if(t.push(...(s=[],o=`elements[${i}]`,"width"in a&&"height"in a&&(!(a.width>0)||!(a.height>0))&&s.push({code:"invalid_geometry",elementId:a.id,message:`Element "${a.id}" must have positive width and height.`,path:o}),"points"in a&&void 0!==a.points&&a.points.length>a$.maxPointsPerElement&&s.push({code:"limit_exceeded",elementId:a.id,message:`Element "${a.id}" exceeds ${a$.maxPointsPerElement} points.`,path:`${o}.points`}),"text"in a&&a.text.length>a$.maxTextLength&&s.push({code:"limit_exceeded",elementId:a.id,message:`Text element "${a.id}" exceeds ${a$.maxTextLength} characters.`,path:`${o}.text`}),"node"===a.type&&"polygon"===a.shape&&(!a.points||a.points.length<3)&&s.push({code:"invalid_polygon",elementId:a.id,message:`Polygon "${a.id}" requires at least three points.`,path:`${o}.points`}),a.groupIds&&a.groupIds.length>a$.maxGroupsPerElement&&s.push({code:"limit_exceeded",elementId:a.id,message:`Element "${a.id}" exceeds ${a$.maxGroupsPerElement} groups.`,path:`${o}.groupIds`}),s)),"node"===a.type&&t.push(...function(e,t,a){let i=t.icon;if(!i)return[];let s=`elements[${a}].icon`,l=[];return t.rendererRole&&l.push({code:"invalid_icon",elementId:t.id,message:`${a2[t.rendererRole]} "${t.id}" cannot carry an icon.`,path:s}),u(i.slug)?e.icons&&Object.hasOwn(e.icons,i.slug)||l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" references icon "${i.slug}" without an embedded asset.`,path:`${s}.slug`}):l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" has an invalid icon slug "${i.slug}".`,path:`${s}.slug`}),(!Number.isFinite(i.size)||i.size<aY.minSize||i.size>aY.maxSize)&&l.push({code:"invalid_icon",elementId:t.id,message:`Node "${t.id}" icon size must be ${aY.minSize}-${aY.maxSize}.`,path:`${s}.size`}),l}(e,a,i)),"node"===a.type&&"polygon"!==a.shape&&h(a)){let e=g.get(a.id);(e||void 0===a.rendererRole)&&ia(a,e?.element,a.icon)&&t.push({code:"label_overflow",elementId:e?.element.id??a.id,message:`Label does not fit inside node "${a.id}" without changing its geometry.`,path:e?`elements[${e.index}].text`:`elements[${i}].label`})}if(a.frameId){let e=l.get(a.frameId);e&&"frame"===e.type||t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" references missing frame "${a.frameId}".`,path:`elements[${i}].frameId`})}if(a.layerId&&!p.has(a.layerId)&&t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" references missing layer "${a.layerId}".`,path:`elements[${i}].layerId`}),a.groupIds&&a3(a.groupIds)&&t.push({code:"invalid_composition",elementId:a.id,message:`Element "${a.id}" contains duplicate group ids.`,path:`elements[${i}].groupIds`}),"text"===a.type&&a.containerId){let e=l.get(a.containerId);e&&("node"===e.type||"arrow"===e.type)||t.push({code:"invalid_binding",elementId:a.id,message:`Text "${a.id}" references unsupported container "${a.containerId}".`,path:`elements[${i}].containerId`})}if("arrow"===a.type&&(r.has(a.sourceNodeId)||t.push({code:"invalid_binding",elementId:a.id,message:`Connector "${a.id}" references missing source "${a.sourceNodeId}".`,path:`elements[${i}].sourceNodeId`}),r.has(a.targetNodeId)||t.push({code:"invalid_binding",elementId:a.id,message:`Connector "${a.id}" references missing target "${a.targetNodeId}".`,path:`elements[${i}].targetNodeId`})),"line"===a.type)for(let[e,s]of[["startBinding",a.startBinding],["endBinding",a.endBinding]]){let o=s?l.get(s.elementId):void 0;s&&(!o||"node"!==o.type&&"frame"!==o.type)&&t.push({code:"invalid_binding",elementId:a.id,message:`Line "${a.id}" references missing binding "${s.elementId}".`,path:`elements[${i}].${e}`})}});let f=new Set(e.zOrder);for(let a of e.elements)f.has(a.id)||t.push({code:"missing_z_order_element",elementId:a.id,message:`Element "${a.id}" is missing from zOrder.`,path:"zOrder"});for(let a of e.zOrder)l.has(a)||t.push({code:"unknown_z_order_element",elementId:a,message:`zOrder references missing element "${a}".`,path:"zOrder"});for(let[a,i]of e.layouts.entries())for(let e of i.ids){let i=l.get(e);i&&a5(i)||t.push({code:"unknown_layout_target",elementId:e,message:`Layout references missing or non-positioned element "${e}".`,path:`layouts[${a}].ids`})}for(let a of e.elements.filter(e=>"frame"===e.type)){let e=new Set([a.id]),i=a.frameId;for(;i;){if(e.has(i)){t.push({code:"invalid_composition",elementId:a.id,message:`Frame "${a.id}" participates in a frame nesting cycle.`,path:"elements"});break}e.add(i);let s=l.get(i);i=s?.type==="frame"?s.frameId:void 0}}return t}function is(e){if("text"===e.type){let t=e.text.split("\n");return{x:e.x,y:e.y,width:e.maxWidth??aE(e.text,e.fontSize),height:t.length*e.fontSize*(e.lineHeight??1.35)}}return{x:e.x,y:e.y,width:e.width,height:e.height}}function il(e,t){let a=new Map(e.map(e=>[e.id,e]));return t.flatMap(e=>{let t=a.get(e);return t&&a5(t)?[t]:[]})}function io(e,t){return e.map(e=>{var a,i;let s=t.get(e.id);return s?(a=s.x,i=s.y,a5(e)?{...e,x:a,y:i}:e):e})}function ir(e,t){return"x"===t?e.x:e.y}function id(e,t){return"x"===t?e.width:e.height}function ic(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function ip(e,t){let a=ic(e),i=t.x-a.x,s=t.y-a.y,[l,o]=Math.abs(i)>=Math.abs(s)?[i>=0?"right":"left",{x:i>=0?e.x+e.width:e.x,y:a.y}]:[s>=0?"bottom":"top",{x:a.x,y:s>=0?e.y+e.height:e.y}];return"type"in e&&"node"===e.type&&aR(e.shape)?aJ({...e,shape:e.shape},l,o):o}function ih(e,t){let a=t.width/2,i=t.height/2,s=(e.x-t.x-a)/a,l=(e.y-t.y-i)/i,o="node"===t.type?t.shape:"rectangle";if("node"===t.type&&aR(t.shape))return aK({...t,shape:t.shape},e,1);let r=.5/Math.min(a,i);if("ellipse"===o||"circle"===o)return Math.abs(Math.hypot(s,l)-1)<=r;if("diamond"===o)return Math.abs(Math.abs(s)+Math.abs(l)-1)<=r;let n=(e,t,a)=>e>=t-.5&&e<=a+.5,d=(e,t)=>.5>=Math.abs(e-t);return n(e.y,t.y,t.y+t.height)&&(d(e.x,t.x)||d(e.x,t.x+t.width))||n(e.x,t.x,t.x+t.width)&&(d(e.y,t.y)||d(e.y,t.y+t.height))}function ig(e,t){let a=ip(e,ic(t)),i=ip(t,ic(e)),s=ic(e),l=ic(t),o=Math.abs(l.x-s.x)>=Math.abs(l.y-s.y),r=o?"x":"y",n=(i[r]-a[r])/2,d=(e,t)=>o?{x:e.x+t,y:e.y}:{x:e.x,y:e.y+t};return aA([a,d(a,n),d(i,-n),i])}function iu(e){return new Map(e.flatMap(e=>"node"===e.type||"frame"===e.type&&void 0!==e.nodeId?[[e.nodeId,e]]:[]))}function im(e,t=.01){let a=[];for(let i=0;i<e.length-1;i+=1){let s=e[i],l=e[i+1];if(!s||!l)continue;let o=Math.abs(s.y-l.y)<=t,r=Math.abs(s.x-l.x)<=t;if(!o&&!r)continue;let n=Math.min(o?s.x:s.y,o?l.x:l.y),d=Math.max(o?s.x:s.y,o?l.x:l.y);d-n<=t||a.push({min:n,max:d,orientation:o?"horizontal":"vertical",staticCoordinate:o?s.y:s.x,segmentIndex:i,isFirstSegment:0===i,isLastSegment:i===e.length-2})}return a}function iv(e,t){return Math.min(e.max,t.max)-Math.max(e.min,t.min)}function iy(e,t,a=.01){return e.orientation===t.orientation&&Math.abs(e.staticCoordinate-t.staticCoordinate)<=a&&iv(e,t)>a}function iw(e,t,a=.01){let i="horizontal"===e.orientation,s=i?t.y:t.x,l=s+(i?t.height:t.width),o=i?t.x:t.y,r=o+(i?t.width:t.height);return e.staticCoordinate>s+a&&e.staticCoordinate<l-a&&Math.min(e.max,r)-Math.max(e.min,o)>a}function ix(e,t){return e.isFirstSegment&&t.isFirstSegment&&null!==e.startBindingId&&e.startBindingId===t.startBindingId||e.isLastSegment&&t.isLastSegment&&null!==e.endBindingId&&e.endBindingId===t.endBindingId}function ib(e,t,a,i=0){let s=-1/0;for(let l of t)for(let t of e)l.x0<t.x1+i&&t.x0<l.x1+i&&(s=Math.max(s,t.y1+a-l.y0));return s}function ik(e,t,a,i=0){let s=-1/0;for(let l of t)for(let t of e)l.y0<t.y1+i&&t.y0<l.y1+i&&(s=Math.max(s,t.x1+a-l.x0));return s}function iM(e,t,a="characters"){let i=0x811c9dc5;for(let t=0;t<e.length;t+=1)i^=e.charCodeAt(t),i=Math.imul(i,0x1000193),"characters"===a&&(e.codePointAt(t)??0)>65535&&(t+=1);return"seed"===t?Math.abs(i)||1:(i>>>0).toString(16).padStart(8,"0")}s.gPz([ew,eP,eY,ea,Z,e2,to,tM,tJ,ag]);let iC={id:"multi-stage-rework",title:"Rework earlier stages",nodes:[{id:"start",label:"Received",kind:"start"},...["Intake","Validate","Assemble","Review","Rework","Release"].map((e,t)=>({id:String(t),label:e,kind:5===t?"end":"process"}))],edges:[{id:"start",source:"start",target:"0"},...Array.from({length:5},(e,t)=>({id:`e${t}`,source:String(t),target:String(t+1)})),...Array.from({length:4},(e,t)=>({id:`back${t}`,source:"4",target:String(t),...0===t?{label:"Retry"}:{}}))]},iz={id:"two-stage-retry",title:"Revisit earlier checks",nodes:[{id:"s",label:"Received",kind:"start"},...["Prepare","Inspect","Review","Rework"].map((e,t)=>({id:["a","b","c","d"][t],label:e,kind:"process"})),{id:"end",label:"Released",kind:"end"}],edges:[["s","a"],["a","b"],["b","c"],["c","d"],["d","end"],["d","a"],["d","b"]].map(([e,t],a)=>({id:`e${a}`,source:e,target:t}))};function i_(e){return ez({...e,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}})}function iL(e,t="TB"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}function iB(e){return ez({...e,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}})}function iS(e){return ti({...e,type:eN})}ez({id:"package-chain",title:"Request to hosted artifact",nodes:[{id:"app",label:"App request",kind:"start"},{id:"agent",label:"Agent / orchestration",kind:"process"},{id:"core",label:"Core diagram model",kind:"process"},{id:"renderer",label:"Renderer",kind:"process"},{id:"export",label:"Excalidraw export",kind:"process"},{id:"host",label:"Artifact hosting / storage",kind:"process"},{id:"response",label:"Hosted artifact response",kind:"end"}],edges:[{id:"request",source:"app",target:"agent",label:"Request contract"},{id:"build",source:"agent",target:"core",label:"Semantic builder input"},{id:"validate",source:"core",target:"renderer",label:"Validated diagram spec"},{id:"render",source:"renderer",target:"export",label:"CanvasSpec scene"},{id:"store",source:"export",target:"host",label:"Exported artifact bundle"},{id:"respond",source:"host",target:"response",label:"Artifact ID + hosted URLs"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"scope-bypass",title:"Diagram request",nodes:[{id:"received",label:"Prompt received",kind:"start"},{id:"requirements",label:"Extract requirements",kind:"process"},{id:"scope",label:"Is the scope clear?",kind:"decision"},{id:"draft",label:"Draft typed IR",kind:"process"},{id:"review",label:"Review",kind:"end"}],edges:[{id:"extract",source:"received",target:"requirements"},{id:"assess",source:"requirements",target:"scope"},{id:"clear",source:"scope",target:"draft",label:"Yes"},{id:"unclear",source:"scope",target:"review",label:"No"},{id:"submit",source:"draft",target:"review"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"rollout-failures",title:"Feature flag rollout",nodes:[{id:"ready",label:"Flag is ready",kind:"start"},{id:"internal",label:"Enable internally",kind:"process"},{id:"internal-health",label:"Internal checks healthy?",kind:"decision"},{id:"beta",label:"Enable beta cohort",kind:"process"},{id:"beta-health",label:"Beta checks healthy?",kind:"decision"},{id:"ramp",label:"Ramp to all users",kind:"process"},{id:"complete",label:"Rollout complete",kind:"end"},{id:"rollback",label:"Roll back the feature",kind:"end"}],edges:[{id:"enable",source:"ready",target:"internal"},{id:"check-internal",source:"internal",target:"internal-health"},{id:"internal-healthy",source:"internal-health",target:"beta",label:"Healthy"},{id:"internal-fail",source:"internal-health",target:"rollback",label:"Fail"},{id:"check-beta",source:"beta",target:"beta-health"},{id:"beta-healthy",source:"beta-health",target:"ramp",label:"Healthy"},{id:"beta-unhealthy",source:"beta-health",target:"rollback",label:"Unhealthy"},{id:"finish",source:"ramp",target:"complete"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"cache-lookup",title:"Answer a question from the cache or the model",nodes:[{id:"host",label:"App receives the question",kind:"start"},{id:"page",label:"Page sends the question to the API",kind:"process"},{id:"auth",label:"Authenticate the user",kind:"process"},{id:"limit",label:"Apply the rate limit",kind:"process"},{id:"cache",label:"Check the answer cache",kind:"process"},{id:"hit",label:"Cache hit?",kind:"decision"},{id:"cached",label:"Return the cached answer",kind:"end"},{id:"model",label:"Call the language model",kind:"process"},{id:"store",label:"Store the answer in the cache",kind:"process"},{id:"log",label:"Log any errors",kind:"process"},{id:"answer",label:"Return the answer",kind:"end"}],edges:[{id:"ask",source:"host",target:"page"},{id:"verify",source:"page",target:"auth"},{id:"throttle",source:"auth",target:"limit"},{id:"lookup",source:"limit",target:"cache"},{id:"check",source:"cache",target:"hit"},{id:"hit-yes",source:"hit",target:"cached",label:"Yes"},{id:"hit-no",source:"hit",target:"model",label:"No"},{id:"keep",source:"model",target:"store"},{id:"trace",source:"store",target:"log"},{id:"reply",source:"log",target:"answer"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"release-fan-in",title:"Fix release",nodes:[{id:"confirmed",label:"Bug confirmed",kind:"start"},{id:"security",label:"Security impact?",kind:"decision"},{id:"triage",label:"Security triage",kind:"process"},{id:"hotfix",label:"Hotfix branch",kind:"process"},{id:"priority",label:"High priority?",kind:"decision"},{id:"sprint",label:"Sprint backlog",kind:"process"},{id:"release",label:"Release fix",kind:"end"},{id:"backlog",label:"Regular backlog",kind:"end"}],edges:[{id:"assess",source:"confirmed",target:"security"},{id:"secure",source:"security",target:"triage",label:"Yes"},{id:"branch",source:"triage",target:"hotfix"},{id:"ship-hotfix",source:"hotfix",target:"release"},{id:"prioritize",source:"security",target:"priority",label:"No"},{id:"plan",source:"priority",target:"sprint",label:"Yes"},{id:"ship-sprint",source:"sprint",target:"release"},{id:"defer",source:"priority",target:"backlog",label:"No"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"stability-fan-in",title:"Incident remediation",nodes:[{id:"evidence",label:"Collect evidence",kind:"start"},{id:"cause",label:"Classify root cause",kind:"decision"},{id:"rollback",label:"Roll back deploy",kind:"process"},{id:"hotfix",label:"Prepare hotfix",kind:"process"},{id:"provider",label:"Escalate to provider",kind:"process"},{id:"stable",label:"Service stable?",kind:"decision"},{id:"monitor",label:"Monitor service",kind:"end"},{id:"escalate",label:"Escalate unstable service",kind:"process"},{id:"fresh",label:"Collect fresh evidence",kind:"process"}],edges:[{id:"classify",source:"evidence",target:"cause"},{id:"deploy",source:"cause",target:"rollback",label:"Deploy"},{id:"code",source:"cause",target:"hotfix",label:"Code"},{id:"vendor",source:"cause",target:"provider",label:"Provider"},{id:"check-rollback",source:"rollback",target:"stable"},{id:"check-hotfix",source:"hotfix",target:"stable"},{id:"check-provider",source:"provider",target:"stable"},{id:"healthy",source:"stable",target:"monitor",label:"Yes"},{id:"unhealthy",source:"stable",target:"escalate",label:"No"},{id:"gather",source:"escalate",target:"fresh"},{id:"retry",source:"fresh",target:"cause"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"renewal-retry",title:"Subscription renewal",nodes:[{id:"due",label:"Renewal due",kind:"start"},{id:"charge",label:"Charge payment",kind:"process"},{id:"paid",label:"Payment succeeded?",kind:"decision"},{id:"renew",label:"Renew subscription",kind:"end"},{id:"remind",label:"Send reminder",kind:"process"},{id:"updated",label:"Payment updated?",kind:"decision"},{id:"pause",label:"Pause subscription",kind:"end"}],edges:[{id:"bill",source:"due",target:"charge"},{id:"confirm",source:"charge",target:"paid"},{id:"renewed",source:"paid",target:"renew",label:"Yes"},{id:"declined",source:"paid",target:"remind",label:"No"},{id:"wait",source:"remind",target:"updated"},{id:"retry",source:"updated",target:"charge",label:"Yes"},{id:"expired",source:"updated",target:"pause",label:"No"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"cancellation-convergence",title:"Subscription cancellation",nodes:[{id:"requested",label:"Member requests cancellation",kind:"start"},{id:"reason",label:"Collect the cancellation reason",kind:"process"},{id:"eligible",label:"Eligible for a retention offer?",kind:"decision"},{id:"offer",label:"Present retention offer",kind:"process"},{id:"accepted",label:"Offer accepted?",kind:"decision"},{id:"keep",label:"Retain member",kind:"end"},{id:"confirm",label:"Confirm cancellation",kind:"process"},{id:"close",label:"Close account",kind:"end"}],edges:[{id:"record",source:"requested",target:"reason"},{id:"check",source:"reason",target:"eligible"},{id:"offer-save",source:"eligible",target:"offer",label:"Yes"},{id:"not-eligible",source:"eligible",target:"confirm",label:"No"},{id:"decide",source:"offer",target:"accepted"},{id:"kept",source:"accepted",target:"keep",label:"Yes"},{id:"declined",source:"accepted",target:"confirm",label:"No"},{id:"close-account",source:"confirm",target:"close"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"shared-feedback-returns",title:"Revisit earlier checks",nodes:[{id:"start",label:"Received",kind:"start"},{id:"a",label:"Intake",kind:"process"},{id:"b",label:"Inspect",kind:"process"},{id:"c",label:"Review",kind:"process"},{id:"d",label:"Approve",kind:"process"},{id:"end",label:"Released",kind:"end"}],edges:[{id:"entry",source:"start",target:"a"},{id:"ab",source:"a",target:"b"},{id:"bc",source:"b",target:"c"},{id:"cd",source:"c",target:"d"},{id:"release",source:"d",target:"end"},{id:"ba",source:"b",target:"a"},{id:"ca",source:"c",target:"a",label:"Retry"},{id:"da",source:"d",target:"a"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({...iz,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"feedback-chain",title:"Repeat inspection",nodes:[{id:"start",label:"Received",kind:"start"},{id:"a",label:"Prepare",kind:"process"},{id:"b",label:"Inspect",kind:"process"},{id:"c",label:"Approve",kind:"process"},{id:"end",label:"Released",kind:"end"}],edges:[{id:"start",source:"start",target:"a"},{id:"ab",source:"a",target:"b"},{id:"bc",source:"b",target:"c"},{id:"ca",source:"c",target:"a",label:"Retry"},{id:"end",source:"c",target:"end"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({...iC,type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"feedback-skip-stubs",title:"Retry with skipped stages",nodes:[{id:"0",label:"Step 0",kind:"start"},{id:"1",label:"Step 1",kind:"process"},{id:"2",label:"Step 2",kind:"process"},{id:"3",label:"Step 3",kind:"process"},{id:"4",label:"Step 4",kind:"process"},{id:"5",label:"Step 5",kind:"end"}],edges:[{id:"e0",source:"0",target:"1"},{id:"e1",source:"1",target:"2"},{id:"e2",source:"2",target:"3"},{id:"e3",source:"3",target:"4",label:"Path 3"},{id:"e4",source:"4",target:"5"},{id:"e5",source:"3",target:"5"},{id:"feedback",source:"4",target:"1"},{id:"e7",source:"2",target:"4"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"decision-feedback",title:"Retry a failed attempt",nodes:[{id:"start",label:"Start",kind:"start"},{id:"attempt",label:"Attempt",kind:"process"},{id:"check",label:"Success?",kind:"decision"},{id:"done",label:"Done",kind:"end"}],edges:[{id:"start",source:"start",target:"attempt"},{id:"check",source:"attempt",target:"check"},{id:"yes",source:"check",target:"done",label:"Yes"},{id:"feedback",source:"check",target:"attempt",label:"Retry"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"review-feedback",title:"Review feedback",nodes:[{id:"start",label:"Received",kind:"start"},{id:"prepare",label:"Prepare submission",kind:"process"},{id:"review",label:"Ready?",kind:"decision"},{id:"revise",label:"Request changes",kind:"process"},{id:"done",label:"Accepted",kind:"end"}],edges:[{id:"start",source:"start",target:"prepare"},{id:"review",source:"prepare",target:"review"},{id:"no",source:"review",target:"revise",label:"No"},{id:"feedback",source:"revise",target:"prepare",label:"Changes ready"},{id:"yes",source:"review",target:"done",label:"Yes"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"wait-retry",title:"Wait and retry",nodes:[{id:"start",label:"Join queue",kind:"start"},{id:"responds",label:"Responds?",kind:"decision"},{id:"leave",label:"Leave queue",kind:"end"},{id:"ready",label:"Ready?",kind:"decision"},{id:"done",label:"Continue",kind:"end"},{id:"wait",label:"Keep waiting",kind:"process"}],edges:[{id:"start",source:"start",target:"responds"},{id:"leave",source:"responds",target:"leave",label:"No"},{id:"ready",source:"responds",target:"ready",label:"Yes"},{id:"done",source:"ready",target:"done",label:"Yes"},{id:"wait",source:"ready",target:"wait",label:"No"},{id:"feedback",source:"wait",target:"responds"}],type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"content-moderation-flow",title:"Content moderation flow",nodes:[{id:"report",label:"Report received",kind:"start"},{id:"scan",label:"Automated scan runs",kind:"process"},{id:"severe",label:"Severe harm detected?",kind:"decision"},{id:"remove",label:"Remove content",kind:"process"},{id:"escalate",label:"Escalate to safety",kind:"process"},{id:"violation",label:"Policy violation?",kind:"decision"},{id:"restore_none",label:"Restore content",kind:"end"},{id:"review",label:"Human review",kind:"process"},{id:"action",label:"Action needed?",kind:"decision"},{id:"limit",label:"Limit content",kind:"end"},{id:"restore_review",label:"Restore content",kind:"end"},{id:"closed_severe",label:"Severe case closed",kind:"end"}],edges:[{id:"edge-1",source:"report",target:"scan"},{id:"edge-2",source:"scan",target:"severe"},{id:"edge-3",source:"severe",target:"remove",label:"Yes"},{id:"edge-4",source:"severe",target:"violation",label:"No"},{id:"edge-5",source:"remove",target:"escalate"},{id:"edge-6",source:"escalate",target:"closed_severe"},{id:"edge-7",source:"violation",target:"restore_none",label:"No"},{id:"edge-8",source:"violation",target:"review",label:"Yes"},{id:"edge-9",source:"review",target:"action"},{id:"edge-10",source:"action",target:"limit",label:"Yes"},{id:"edge-11",source:"action",target:"restore_review",label:"No"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"data-import-validation",title:"Data import validation",nodes:[{id:"upload",label:"File uploaded",kind:"start"},{id:"parse",label:"Parse file",kind:"process"},{id:"parse_ok",label:"Parsing succeeded?",kind:"decision"},{id:"reject",label:"Reject file",kind:"process"},{id:"rejected_end",label:"File rejected",kind:"end"},{id:"validate",label:"Validate schema",kind:"process"},{id:"schema_ok",label:"Schema valid?",kind:"decision"},{id:"mapping_errors",label:"Return mapping errors",kind:"process"},{id:"mapping_end",label:"Mapping errors returned",kind:"end"},{id:"dedupe",label:"Deduplicate records",kind:"process"},{id:"dup_found",label:"Duplicates found?",kind:"decision"},{id:"merge",label:"Merge duplicates",kind:"process"},{id:"import",label:"Import records",kind:"process"},{id:"done",label:"Import complete",kind:"end"}],edges:[{id:"edge-1",source:"upload",target:"parse"},{id:"edge-2",source:"parse",target:"parse_ok"},{id:"edge-3",source:"parse_ok",target:"reject",label:"No"},{id:"edge-4",source:"reject",target:"rejected_end"},{id:"edge-5",source:"parse_ok",target:"validate",label:"Yes"},{id:"edge-6",source:"validate",target:"schema_ok"},{id:"edge-7",source:"schema_ok",target:"mapping_errors",label:"No"},{id:"edge-8",source:"mapping_errors",target:"mapping_end"},{id:"edge-9",source:"schema_ok",target:"dedupe",label:"Yes"},{id:"edge-10",source:"dedupe",target:"dup_found"},{id:"edge-11",source:"dup_found",target:"merge",label:"Yes"},{id:"edge-12",source:"merge",target:"import"},{id:"edge-13",source:"dup_found",target:"import",label:"No"},{id:"edge-14",source:"import",target:"done"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"incident-escalation-flowchart",title:"Incident Escalation Flowchart",nodes:[{id:"alert",label:"Monitoring creates alert",kind:"start"},{id:"ack",label:"Responder acknowledges alert",kind:"process"},{id:"severity",label:"Severity?",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor_low",label:"Monitoring: low-severity incident",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve_bridge",label:"Resolve incident",kind:"end"},{id:"fix",label:"Fix available?",kind:"decision"},{id:"resolve_fix",label:"Resolve incident (fix found)",kind:"end"},{id:"escalate",label:"Escalate to incident bridge",kind:"process"},{id:"resolved_low",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High"},{id:"edge-4",source:"severity",target:"triage",label:"Medium"},{id:"edge-5",source:"severity",target:"monitor_low",label:"Low"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve_bridge"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve_fix",label:"Yes"},{id:"edge-11",source:"fix",target:"escalate",label:"No"},{id:"edge-12",source:"escalate",target:"bridge"},{id:"edge-13",source:"monitor_low",target:"resolved_low"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"invoice-approval",title:"Invoice approval",nodes:[{id:"received",label:"Invoice received",kind:"start"},{id:"match_po",label:"Match invoice to purchase order",kind:"process"},{id:"po_matched",label:"Invoice matches PO?",kind:"decision"},{id:"exception_review",label:"Route to exception review",kind:"process"},{id:"exception_resolved",label:"Exception resolved?",kind:"decision"},{id:"reject",label:"Reject invoice",kind:"end"},{id:"over_threshold",label:"Amount over approval threshold?",kind:"decision"},{id:"director_approval",label:"Director approval before payment",kind:"process"},{id:"schedule_payment",label:"Schedule payment",kind:"process"},{id:"paid",label:"Payment scheduled",kind:"end"}],edges:[{id:"e1",source:"received",target:"match_po"},{id:"e2",source:"match_po",target:"po_matched"},{id:"e3",source:"po_matched",target:"over_threshold",label:"Yes"},{id:"e4",source:"po_matched",target:"exception_review",label:"No"},{id:"e5",source:"exception_review",target:"exception_resolved"},{id:"e6",source:"exception_resolved",target:"over_threshold",label:"Yes"},{id:"e7",source:"exception_resolved",target:"reject",label:"No"},{id:"e8",source:"over_threshold",target:"director_approval",label:"Yes"},{id:"e9",source:"over_threshold",target:"schedule_payment",label:"No"},{id:"e10",source:"director_approval",target:"schedule_payment"},{id:"e11",source:"schedule_payment",target:"paid"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"loan-underwriting",title:"Loan Application Underwriting",nodes:[{id:"submit",label:"Application submitted",kind:"start"},{id:"verify_id",label:"Verify identity",kind:"process"},{id:"id_ok",label:"Identity verified?",kind:"decision"},{id:"credit_review",label:"Credit review",kind:"process"},{id:"credit_ok",label:"Credit acceptable?",kind:"decision"},{id:"manual_uw",label:"Manual underwriting",kind:"process"},{id:"exception",label:"Exception approved?",kind:"decision"},{id:"income",label:"Income verification",kind:"process"},{id:"approve",label:"Loan approved",kind:"end"},{id:"decline",label:"Decline application",kind:"end"}],edges:[{id:"e1",source:"submit",target:"verify_id"},{id:"e2",source:"verify_id",target:"id_ok"},{id:"e3",source:"id_ok",target:"credit_review",label:"Yes"},{id:"e4",source:"id_ok",target:"decline",label:"No"},{id:"e5",source:"credit_review",target:"credit_ok"},{id:"e6",source:"credit_ok",target:"income",label:"Yes"},{id:"e7",source:"credit_ok",target:"manual_uw",label:"No"},{id:"e8",source:"manual_uw",target:"exception"},{id:"e9",source:"exception",target:"income",label:"Yes"},{id:"e10",source:"exception",target:"decline",label:"No"},{id:"e11",source:"income",target:"approve"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"patient-intake-scheduling",title:"Patient Intake Scheduling",nodes:[{id:"request",label:"Patient requests appointment",kind:"start"},{id:"collect",label:"Clinic collects intake information",kind:"process"},{id:"urgent",label:"Urgent symptoms?",kind:"decision"},{id:"triage",label:"Nurse triage",kind:"process"},{id:"same_day",label:"Schedule same-day appointment",kind:"process"},{id:"insurance",label:"Is insurance valid?",kind:"decision"},{id:"routine",label:"Schedule routine appointment",kind:"process"},{id:"self_pay_q",label:"Patient accepts self-pay?",kind:"decision"},{id:"self_pay",label:"Schedule routine care (self-pay)",kind:"process"},{id:"billing",label:"Refer to billing",kind:"process"},{id:"end_same_day",label:"Same-day visit booked",kind:"end"},{id:"end_routine",label:"Routine visit booked",kind:"end"},{id:"end_self_pay",label:"Self-pay visit booked",kind:"end"},{id:"end_billing",label:"Billing referral made",kind:"end"}],edges:[{id:"e1",source:"request",target:"collect"},{id:"e2",source:"collect",target:"urgent"},{id:"e3",source:"urgent",target:"triage",label:"Yes"},{id:"e4",source:"triage",target:"same_day"},{id:"e5",source:"same_day",target:"end_same_day"},{id:"e6",source:"urgent",target:"insurance",label:"No"},{id:"e7",source:"insurance",target:"routine",label:"Valid"},{id:"e8",source:"routine",target:"end_routine"},{id:"e9",source:"insurance",target:"self_pay_q",label:"Invalid"},{id:"e10",source:"self_pay_q",target:"self_pay",label:"Yes"},{id:"e11",source:"self_pay",target:"end_self_pay"},{id:"e12",source:"self_pay_q",target:"billing",label:"No"},{id:"e13",source:"billing",target:"end_billing"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"pharma-batch-disposition",title:"Pharma Batch Disposition",nodes:[{id:"received",label:"Batch received",kind:"start"},{id:"coa_review",label:"QA reviews Certificate of Analysis (CoA)",kind:"process"},{id:"spec_check",label:"Batch passes specs?",kind:"decision"},{id:"final_review",label:"QA Manager final review",kind:"process"},{id:"packaging",label:"Packaging",kind:"process"},{id:"released",label:"Packaged batch released",kind:"end"},{id:"investigation",label:"Investigation",kind:"process"},{id:"rejected",label:"Reject batch",kind:"end"}],edges:[{id:"e1",source:"received",target:"coa_review"},{id:"e2",source:"coa_review",target:"spec_check"},{id:"e3",source:"spec_check",target:"final_review",label:"Pass"},{id:"e4",source:"spec_check",target:"investigation",label:"Retest"},{id:"e5",source:"spec_check",target:"rejected",label:"Reject"},{id:"e6",source:"final_review",target:"packaging"},{id:"e7",source:"packaging",target:"released"},{id:"e8",source:"investigation",target:"final_review",label:"Returns to final review"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),ez({id:"warehouse-reorder-flow",title:"Warehouse reorder flow",nodes:[{id:"count",label:"Stock count updated",kind:"start"},{id:"reorder_check",label:"Inventory below reorder point?",kind:"decision"},{id:"monitor",label:"Monitor stock",kind:"process"},{id:"monitor_end",label:"Stock monitoring continues",kind:"end"},{id:"check_supplier",label:"Check supplier availability",kind:"process"},{id:"supplier_check",label:"Supplier available?",kind:"decision"},{id:"substitute",label:"Use substitute supplier",kind:"process"},{id:"create_po",label:"Create purchase order",kind:"process"},{id:"await_delivery",label:"Await delivery",kind:"process"},{id:"reorder_end",label:"Reorder cycle complete",kind:"end"}],edges:[{id:"e1",source:"count",target:"reorder_check"},{id:"e2",source:"reorder_check",target:"monitor",label:"No"},{id:"e3",source:"monitor",target:"monitor_end"},{id:"e4",source:"reorder_check",target:"check_supplier",label:"Yes"},{id:"e5",source:"check_supplier",target:"supplier_check"},{id:"e6",source:"supplier_check",target:"create_po",label:"Yes"},{id:"e7",source:"supplier_check",target:"substitute",label:"No"},{id:"e8",source:"substitute",target:"create_po"},{id:"e9",source:"create_po",target:"await_delivery"},{id:"e10",source:"await_delivery",target:"reorder_end"}],layout:{direction:"TB"},style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"flowchart",layout:{direction:"TB",edgeRouting:"orthogonal"}}),i_({id:"loan-application-underwriting",title:"Loan Application Underwriting",nodes:[{id:"submitted",label:"Application submitted",kind:"start"},{id:"identity",label:"Verify identity",kind:"process"},{id:"identity_decision",label:"Identity verified?",kind:"decision"},{id:"identity_decline",label:"Decline application",kind:"end"},{id:"credit",label:"Credit review",kind:"process"},{id:"credit_decision",label:"Acceptable credit?",kind:"decision"},{id:"manual",label:"Manual underwriting",kind:"process"},{id:"exception",label:"Exception approved?",kind:"decision"},{id:"exception_decline",label:"Decline application",kind:"end"},{id:"income",label:"Income verification",kind:"process"},{id:"approved",label:"Approve loan",kind:"end"}],edges:[{id:"edge-1",source:"submitted",target:"identity"},{id:"edge-2",source:"identity",target:"identity_decision"},{id:"edge-3",source:"identity_decision",target:"identity_decline",label:"Failed"},{id:"edge-4",source:"identity_decision",target:"credit",label:"Verified"},{id:"edge-5",source:"credit",target:"credit_decision"},{id:"edge-6",source:"credit_decision",target:"income",label:"Acceptable"},{id:"edge-7",source:"credit_decision",target:"manual",label:"Unacceptable"},{id:"edge-8",source:"manual",target:"exception"},{id:"edge-9",source:"exception",target:"income",label:"Yes"},{id:"edge-10",source:"exception",target:"exception_decline",label:"No"},{id:"edge-11",source:"income",target:"approved"}],layout:{direction:"TB"}}),i_({id:"invoice-approval-flowchart",title:"Invoice approval flowchart",nodes:[{id:"received",label:"Invoice received",kind:"start"},{id:"match",label:"Match to purchase order",kind:"process"},{id:"matches",label:"Matches purchase order?",kind:"decision"},{id:"review",label:"Exception review",kind:"process"},{id:"resolved",label:"Exception resolved?",kind:"decision"},{id:"reject",label:"Reject invoice",kind:"end"},{id:"threshold",label:"Amount over approval threshold?",kind:"decision"},{id:"director",label:"Director approval",kind:"process"},{id:"schedule",label:"Schedule payment",kind:"process"},{id:"payment",label:"Payment",kind:"end"}],edges:[{id:"edge-1",source:"received",target:"match"},{id:"edge-2",source:"match",target:"matches"},{id:"edge-3",source:"matches",target:"review",label:"No"},{id:"edge-4",source:"review",target:"resolved"},{id:"edge-5",source:"resolved",target:"reject",label:"No — unresolved"},{id:"edge-6",source:"resolved",target:"threshold",label:"Yes — resolved"},{id:"edge-7",source:"matches",target:"threshold",label:"Yes — matched"},{id:"edge-8",source:"threshold",target:"director",label:"Yes — over threshold"},{id:"edge-9",source:"threshold",target:"schedule",label:"No — at or below threshold"},{id:"edge-10",source:"director",target:"schedule"},{id:"edge-11",source:"schedule",target:"payment"}],layout:{direction:"TB"}}),i_({id:"identifier-labels",title:"Identifier labels",nodes:[{id:"call",label:"buildSequenceDiagram",kind:"start"},{id:"check",label:"Layout renderer-independent?",kind:"decision"},{id:"export",label:"exportToExcalidrawScene(spec)",kind:"process"},{id:"fetch",label:"Fetch https://playground.sketchi.app/api/v1/artifacts/download",kind:"process"},{id:"cjk",label:"品質保証レビュー承認待ち",kind:"process"},{id:"done",label:"Ship 🚀 release",kind:"end"}],edges:[{id:"e1",source:"call",target:"check"},{id:"e2",source:"check",target:"export",label:"renderer-independent"},{id:"e3",source:"check",target:"fetch",label:"buildSequenceDiagram"},{id:"e4",source:"export",target:"cjk",label:"品質保証レビュー承認待ち"},{id:"e5",source:"fetch",target:"done",label:"https://example.com/api/v1/artifacts/download"},{id:"e6",source:"cjk",target:"done",label:"🚀🚀 shipped"}],layout:{direction:"TB"}}),i_({id:"multiline-labels",title:"Multi-line labels",nodes:[{id:"request",label:"Refund requested",kind:"start"},{id:"eligible",label:"Refund within the policy window?",kind:"decision"},{id:"provider",label:"Ask the payment provider",kind:"process"},{id:"confirmed",label:"Provider confirmed?",kind:"decision"},{id:"refund",label:"Issue the refund",kind:"process"},{id:"deny",label:"Explain the decision to the customer",kind:"end"},{id:"closed",label:"Refund closed",kind:"end"}],edges:[{id:"e1",source:"request",target:"eligible"},{id:"e2",source:"eligible",target:"provider",label:"Yes, within the window and eligible for a full refund"},{id:"e3",source:"eligible",target:"deny",label:"No — outside\nthe policy window"},{id:"e4",source:"provider",target:"confirmed",label:"Request sent to the provider"},{id:"e5",source:"confirmed",target:"refund",label:"Confirmed by the provider"},{id:"e6",source:"confirmed",target:"provider",label:"Retry after the provider\nconfirms the hold"},{id:"e7",source:"refund",target:"closed"}],layout:{direction:"TB"}}),i_({id:"competing-branch-labels",title:"Competing branch labels",nodes:[{id:"triage",label:"Triage the report",kind:"start"},{id:"kind",label:"Which kind of report?",kind:"decision"},{id:"bug",label:"Reproduce the bug",kind:"process"},{id:"feature",label:"Log the feature",kind:"process"},{id:"question",label:"Answer the question",kind:"process"},{id:"duplicate",label:"Link the duplicate",kind:"process"},{id:"reproduced",label:"Reproduced?",kind:"decision"},{id:"fix",label:"Fix and verify",kind:"process"},{id:"closed",label:"Close the report",kind:"end"}],edges:[{id:"e1",source:"triage",target:"kind"},{id:"e2",source:"kind",target:"bug",label:"Unexpected behavior"},{id:"e3",source:"kind",target:"feature",label:"Enhancement"},{id:"e4",source:"kind",target:"question",label:"Unanswered question"},{id:"e5",source:"kind",target:"duplicate",label:"Duplicate"},{id:"e6",source:"bug",target:"reproduced"},{id:"e7",source:"reproduced",target:"fix",label:"Reproduced"},{id:"e8",source:"reproduced",target:"bug",label:"Unreproducible"},{id:"e9",source:"fix",target:"closed"},{id:"e10",source:"feature",target:"closed"},{id:"e11",source:"question",target:"closed"},{id:"e12",source:"duplicate",target:"closed"}],layout:{direction:"TB"}}),iL({id:"grouped-approval",title:"Expense approval by team",groups:[{id:"employee",label:"Employee"},{id:"manager",label:"Manager"},{id:"finance",label:"Finance"}],nodes:[{id:"incurred",label:"Expense incurred",kind:"start"},{id:"submit",label:"Submit expense report",kind:"process",group:"employee"},{id:"review",label:"Review the report",kind:"process",group:"manager"},{id:"approved",label:"Approved?",kind:"decision",group:"manager"},{id:"revise",label:"Revise the report",kind:"process",group:"employee"},{id:"verify",label:"Verify receipts",kind:"process",group:"finance"},{id:"pay",label:"Pay the employee",kind:"process",group:"finance"},{id:"paid",label:"Expense paid",kind:"end"}],edges:[{id:"e1",source:"incurred",target:"submit"},{id:"e2",source:"submit",target:"review"},{id:"e3",source:"review",target:"approved"},{id:"e4",source:"approved",target:"verify",label:"yes"},{id:"e5",source:"approved",target:"revise",label:"no"},{id:"e6",source:"revise",target:"submit"},{id:"e7",source:"verify",target:"pay"},{id:"e8",source:"pay",target:"paid"}]}),iL({id:"three-zone-service",title:"Request path across network zones",groups:[{id:"internet",label:"Public internet"},{id:"edge",label:"Edge network"},{id:"private",label:"Private subnet"}],nodes:[{id:"browser",label:"Browser sends request",kind:"start",group:"internet"},{id:"cdn",label:"CDN serves cache",kind:"process",group:"edge"},{id:"cached",label:"Cache hit?",kind:"decision",group:"edge"},{id:"waf",label:"WAF filters traffic",kind:"process",group:"edge"},{id:"api",label:"API handles request",kind:"process",group:"private"},{id:"db",label:"Query the database",kind:"process",group:"private"},{id:"response",label:"Response returned",kind:"end"}],edges:[{id:"e1",source:"browser",target:"cdn"},{id:"e2",source:"cdn",target:"cached"},{id:"e3",source:"cached",target:"response",label:"hit"},{id:"e4",source:"cached",target:"waf",label:"miss"},{id:"e5",source:"waf",target:"api"},{id:"e6",source:"api",target:"db"},{id:"e7",source:"db",target:"response"}]},"LR"),iL({id:"mixed-membership",title:"Order fulfilment with partial grouping",groups:[{id:"warehouse",label:"Warehouse"},{id:"shipping",label:"Shipping partner"}],nodes:[{id:"order",label:"Order placed",kind:"start"},{id:"fraud",label:"Fraud check passed?",kind:"decision"},{id:"pick",label:"Pick items",kind:"process",group:"warehouse"},{id:"pack",label:"Pack the order",kind:"process",group:"warehouse"},{id:"label",label:"Print shipping label",kind:"process",group:"warehouse"},{id:"collect",label:"Collect parcel",kind:"process",group:"shipping"},{id:"deliver",label:"Deliver to customer",kind:"end",group:"shipping"},{id:"cancel",label:"Cancel the order",kind:"end"}],edges:[{id:"e1",source:"order",target:"fraud"},{id:"e2",source:"fraud",target:"pick",label:"yes"},{id:"e3",source:"fraud",target:"cancel",label:"no"},{id:"e4",source:"pick",target:"pack"},{id:"e5",source:"pack",target:"label"},{id:"e6",source:"label",target:"collect"},{id:"e7",source:"collect",target:"deliver"}]}),iL({id:"scattered-members",title:"Incident handling across on-call and support",groups:[{id:"support",label:"Customer support desk and escalation team"},{id:"oncall",label:"On-call"},{id:"comms",label:"Comms"}],nodes:[{id:"report",label:"Customer reports issue",kind:"start",group:"support"},{id:"triage",label:"Triage the report",kind:"process",group:"support"},{id:"outage",label:"Outage?",kind:"decision"},{id:"page",label:"Page on-call",kind:"process",group:"oncall"},{id:"mitigate",label:"Mitigate impact",kind:"process",group:"oncall"},{id:"fixed",label:"Fixed?",kind:"decision",group:"oncall"},{id:"status",label:"Post status update",kind:"process",group:"comms"},{id:"reply",label:"Reply to customer",kind:"process",group:"support"},{id:"closed",label:"Ticket closed",kind:"end",group:"support"}],edges:[{id:"e1",source:"report",target:"triage"},{id:"e2",source:"triage",target:"outage"},{id:"e3",source:"outage",target:"page",label:"yes"},{id:"e4",source:"outage",target:"reply",label:"no"},{id:"e5",source:"page",target:"mitigate"},{id:"e6",source:"mitigate",target:"fixed"},{id:"e7",source:"fixed",target:"status",label:"yes"},{id:"e8",source:"fixed",target:"mitigate",label:"not yet"},{id:"e9",source:"status",target:"reply"},{id:"e10",source:"reply",target:"closed"}]}),iL({id:"many-groups",title:"Release train across teams",groups:[{id:"product",label:"Product"},{id:"web",label:"Web team"},{id:"mobile",label:"Mobile team"},{id:"qa",label:"QA"},{id:"ops",label:"Ops"},{id:"marketing",label:"Marketing"}],nodes:[{id:"plan",label:"Plan the release",kind:"start",group:"product"},{id:"web-build",label:"Build web app",kind:"process",group:"web"},{id:"mobile-build",label:"Build mobile app",kind:"process",group:"mobile"},{id:"store",label:"Submit to app stores",kind:"process",group:"mobile"},{id:"test",label:"Regression tests",kind:"process",group:"qa"},{id:"pass",label:"Tests pass?",kind:"decision",group:"qa"},{id:"deploy",label:"Deploy to production",kind:"process",group:"ops"},{id:"announce",label:"Announce the release",kind:"end",group:"marketing"}],edges:[{id:"e1",source:"plan",target:"web-build"},{id:"e2",source:"plan",target:"mobile-build"},{id:"e3",source:"mobile-build",target:"store"},{id:"e4",source:"web-build",target:"test"},{id:"e5",source:"store",target:"test"},{id:"e6",source:"test",target:"pass"},{id:"e7",source:"pass",target:"deploy",label:"yes"},{id:"e8",source:"pass",target:"web-build",label:"no"},{id:"e9",source:"deploy",target:"announce"}]}),iL({id:"single-group",title:"Payment retries inside the billing service",groups:[{id:"billing",label:"Billing service"}],nodes:[{id:"charge",label:"Charge the card",kind:"start",group:"billing"},{id:"ok",label:"Charge succeeded?",kind:"decision",group:"billing"},{id:"wait",label:"Wait and retry",kind:"process",group:"billing"},{id:"receipt",label:"Send receipt",kind:"end",group:"billing"}],edges:[{id:"e1",source:"charge",target:"ok"},{id:"e2",source:"ok",target:"receipt",label:"yes"},{id:"e3",source:"ok",target:"wait",label:"no"},{id:"e4",source:"wait",target:"ok"}]}),iB({id:"incident-escalation",title:"Incident escalation",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor",label:"Monitoring",kind:"process"},{id:"mitigate",label:"Mitigates impact",kind:"process"},{id:"comms",label:"Sends customer communications",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"resolved",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolved"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolved",label:"Yes"},{id:"edge-11",source:"fix",target:"bridge",label:"No — escalate"},{id:"edge-12",source:"monitor",target:"resolved"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident escalation flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"triage",label:"Triage queue",kind:"process"},{id:"monitor",label:"Monitoring low severity incidents",kind:"process"},{id:"mitigate",label:"Mitigates impact",kind:"process"},{id:"comms",label:"Sends customer communications",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"escalate",label:"Escalate to the incident bridge",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"Yes"},{id:"edge-11",source:"fix",target:"escalate",label:"No"},{id:"edge-12",source:"escalate",target:"bridge"},{id:"edge-13",source:"monitor",target:"resolve"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident escalation flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges it",kind:"process"},{id:"severity",label:"Severity",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"},{id:"triage",label:"Triage queue",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"monitor",label:"Monitoring low severity incidents",kind:"process"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"severity"},{id:"edge-3",source:"severity",target:"bridge",label:"High severity"},{id:"edge-4",source:"severity",target:"triage",label:"Medium severity"},{id:"edge-5",source:"severity",target:"monitor",label:"Low severity"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"Yes"},{id:"edge-11",source:"fix",target:"bridge",label:"No — escalate"},{id:"edge-12",source:"monitor",target:"resolve"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"incident-escalation-flowchart",title:"Incident Escalation Flowchart",nodes:[{id:"alert",label:"Monitoring creates an alert",kind:"start"},{id:"ack",label:"Responder acknowledges the alert",kind:"process"},{id:"sev",label:"Severity?",kind:"decision"},{id:"bridge",label:"Incident bridge",kind:"process"},{id:"mitigate",label:"Mitigate impact",kind:"process"},{id:"comms",label:"Send customer communications",kind:"process"},{id:"resolve",label:"Resolve the incident",kind:"end"},{id:"triage",label:"Triage queue",kind:"process"},{id:"fix",label:"Is there a fix?",kind:"decision"},{id:"mon",label:"Monitoring",kind:"process"},{id:"resolved",label:"Resolved",kind:"end"}],edges:[{id:"edge-1",source:"alert",target:"ack"},{id:"edge-2",source:"ack",target:"sev"},{id:"edge-3",source:"sev",target:"bridge",label:"high"},{id:"edge-4",source:"sev",target:"triage",label:"medium"},{id:"edge-5",source:"sev",target:"mon",label:"low"},{id:"edge-6",source:"bridge",target:"mitigate"},{id:"edge-7",source:"mitigate",target:"comms"},{id:"edge-8",source:"comms",target:"resolve"},{id:"edge-9",source:"triage",target:"fix"},{id:"edge-10",source:"fix",target:"resolve",label:"yes"},{id:"edge-11",source:"fix",target:"bridge",label:"no, escalate"},{id:"edge-12",source:"mon",target:"resolved"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"subscription-renewal-dunning",title:"Subscription renewal dunning",nodes:[{id:"due",label:"A renewal is due",kind:"start"},{id:"charge",label:"Charges payment",kind:"process"},{id:"success",label:"Payment succeeds?",kind:"decision"},{id:"renew",label:"Renew the subscription",kind:"end"},{id:"reminder",label:"Send a reminder",kind:"process"},{id:"updated",label:"Payment was updated?",kind:"decision"},{id:"expired",label:"Grace period has expired?",kind:"decision"},{id:"pause",label:"Pause the subscription",kind:"end"},{id:"another",label:"Send another reminder",kind:"process"}],edges:[{id:"edge-1",source:"due",target:"charge"},{id:"edge-2",source:"charge",target:"success"},{id:"edge-3",source:"success",target:"renew",label:"Yes"},{id:"edge-4",source:"success",target:"reminder",label:"No"},{id:"edge-5",source:"reminder",target:"updated"},{id:"edge-6",source:"updated",target:"charge",label:"Yes — retry charge"},{id:"edge-7",source:"updated",target:"expired",label:"No"},{id:"edge-8",source:"expired",target:"pause",label:"Yes"},{id:"edge-9",source:"expired",target:"another",label:"No"},{id:"edge-10",source:"another",target:"updated"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"subscription-renewal-dunning",title:"Subscription renewal dunning",nodes:[{id:"due",label:"A renewal is due",kind:"start"},{id:"charge",label:"Charges payment",kind:"process"},{id:"success",label:"Payment succeeds?",kind:"decision"},{id:"renew",label:"Renew the subscription",kind:"end"},{id:"reminder",label:"Send a reminder",kind:"process"},{id:"updated",label:"Payment was updated?",kind:"decision"},{id:"expired",label:"Grace period has expired?",kind:"decision"},{id:"pause",label:"Pause the subscription",kind:"end"}],edges:[{id:"edge-1",source:"due",target:"charge"},{id:"edge-2",source:"charge",target:"success"},{id:"edge-3",source:"success",target:"renew",label:"Yes"},{id:"edge-4",source:"success",target:"reminder",label:"No"},{id:"edge-5",source:"reminder",target:"updated"},{id:"edge-6",source:"updated",target:"charge",label:"Yes — retry the charge"},{id:"edge-7",source:"updated",target:"expired",label:"No"},{id:"edge-8",source:"expired",target:"pause",label:"Yes"},{id:"edge-9",source:"expired",target:"reminder",label:"No — send another reminder"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"patient-intake-scheduling",title:"Patient Intake Scheduling",nodes:[{id:"request",label:"Patient requests an appointment",kind:"start"},{id:"intake",label:"Clinic collects intake information",kind:"process"},{id:"urgent",label:"Are there urgent symptoms?",kind:"decision"},{id:"triage",label:"Nurse triage",kind:"process"},{id:"same-day",label:"Same-day appointment",kind:"end"},{id:"insurance",label:"Is insurance valid?",kind:"decision"},{id:"routine",label:"Schedule a routine appointment",kind:"end"},{id:"self-pay",label:"Does the patient accept self-pay?",kind:"decision"},{id:"billing",label:"Refer to billing",kind:"end"}],edges:[{id:"edge-1",source:"request",target:"intake"},{id:"edge-2",source:"intake",target:"urgent"},{id:"edge-3",source:"urgent",target:"triage",label:"Yes"},{id:"edge-4",source:"triage",target:"same-day"},{id:"edge-5",source:"urgent",target:"insurance",label:"No"},{id:"edge-6",source:"insurance",target:"routine",label:"Valid"},{id:"edge-7",source:"insurance",target:"self-pay",label:"Invalid"},{id:"edge-8",source:"self-pay",target:"routine",label:"Yes"},{id:"edge-9",source:"self-pay",target:"billing",label:"No"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"procurement-vendor-approval",title:"Procurement vendor approval",nodes:[{id:"need",label:"Business need is identified",kind:"start"},{id:"quotes",label:"Quotes are collected",kind:"process"},{id:"preferred",label:"Is there a preferred vendor?",kind:"decision"},{id:"bid",label:"Run a competitive bid",kind:"process"},{id:"risk",label:"Risk assessment",kind:"process"},{id:"acceptable",label:"Is risk acceptable?",kind:"decision"},{id:"reject",label:"Reject the vendor",kind:"end"},{id:"legal",label:"Legal review",kind:"process"},{id:"approved",label:"Does legal approve?",kind:"decision"},{id:"renegotiate",label:"Renegotiate terms",kind:"process"},{id:"contract",label:"Create the contract",kind:"end"}],edges:[{id:"edge-1",source:"need",target:"quotes"},{id:"edge-2",source:"quotes",target:"preferred"},{id:"edge-3",source:"preferred",target:"risk",label:"Yes"},{id:"edge-4",source:"preferred",target:"bid",label:"No"},{id:"edge-5",source:"bid",target:"risk"},{id:"edge-6",source:"risk",target:"acceptable"},{id:"edge-7",source:"acceptable",target:"reject",label:"No"},{id:"edge-8",source:"acceptable",target:"legal",label:"Yes"},{id:"edge-9",source:"legal",target:"approved"},{id:"edge-10",source:"approved",target:"contract",label:"Yes"},{id:"edge-11",source:"approved",target:"renegotiate",label:"No"},{id:"edge-12",source:"renegotiate",target:"legal"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"procurement-vendor-approval",title:"Procurement Vendor Approval",nodes:[{id:"need",label:"A business need is identified",kind:"start"},{id:"quotes",label:"Quotes are collected",kind:"process"},{id:"preferred",label:"Is there a preferred vendor?",kind:"decision"},{id:"bid",label:"Run a competitive bid",kind:"process"},{id:"risk",label:"Risk assessment",kind:"process"},{id:"acceptable",label:"Is risk acceptable?",kind:"decision"},{id:"reject",label:"Reject the vendor",kind:"end"},{id:"legal",label:"Legal review",kind:"process"},{id:"approve",label:"Does legal approve?",kind:"decision"},{id:"contract",label:"Create the contract",kind:"end"},{id:"renegotiate",label:"Renegotiate terms",kind:"process"}],edges:[{id:"edge-1",source:"need",target:"quotes"},{id:"edge-2",source:"quotes",target:"preferred"},{id:"edge-3",source:"preferred",target:"risk",label:"Yes"},{id:"edge-4",source:"preferred",target:"bid",label:"No"},{id:"edge-5",source:"bid",target:"risk"},{id:"edge-6",source:"risk",target:"acceptable"},{id:"edge-7",source:"acceptable",target:"reject",label:"No"},{id:"edge-8",source:"acceptable",target:"legal",label:"Yes"},{id:"edge-9",source:"legal",target:"approve"},{id:"edge-10",source:"approve",target:"contract",label:"Yes"},{id:"edge-11",source:"approve",target:"renegotiate",label:"No"},{id:"edge-12",source:"renegotiate",target:"legal"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"restaurant-waitlist",title:"Restaurant waitlist",nodes:[{id:"arrives",label:"Party arrives",kind:"start"},{id:"quote",label:"Host quotes a wait time",kind:"process"},{id:"available",label:"Table available?",kind:"decision"},{id:"seat",label:"Seat the party",kind:"end"},{id:"add",label:"Add the party to the waitlist",kind:"process"},{id:"notified",label:"Party notified",kind:"process"},{id:"responds",label:"Party responds?",kind:"decision"},{id:"remove",label:"Remove the party from the list",kind:"end"},{id:"ready",label:"Table ready?",kind:"decision"},{id:"waiting",label:"Keeps waiting",kind:"process"}],edges:[{id:"edge-1",source:"arrives",target:"quote"},{id:"edge-2",source:"quote",target:"available"},{id:"edge-3",source:"available",target:"seat",label:"Available"},{id:"edge-4",source:"available",target:"add",label:"Not available"},{id:"edge-5",source:"add",target:"notified"},{id:"edge-6",source:"notified",target:"responds"},{id:"edge-7",source:"responds",target:"remove",label:"No response"},{id:"edge-8",source:"responds",target:"ready",label:"Responds"},{id:"edge-9",source:"ready",target:"seat",label:"Ready"},{id:"edge-10",source:"ready",target:"waiting",label:"Not ready"},{id:"edge-11",source:"waiting",target:"responds"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"restaurant-waitlist",title:"Restaurant waitlist",nodes:[{id:"arrives",label:"A party arrives",kind:"start"},{id:"quote",label:"Host quotes a wait time",kind:"process"},{id:"available",label:"Is a table available?",kind:"decision"},{id:"seat",label:"Seat the party",kind:"end"},{id:"add",label:"Add the party to the waitlist",kind:"process"},{id:"notify",label:"Notify the party",kind:"process"},{id:"responds",label:"Does the party respond?",kind:"decision"},{id:"remove",label:"Remove the party from the list",kind:"end"},{id:"ready",label:"Is the table ready?",kind:"decision"},{id:"wait",label:"Keep waiting",kind:"process"}],edges:[{id:"edge-1",source:"arrives",target:"quote"},{id:"edge-2",source:"quote",target:"available"},{id:"edge-3",source:"available",target:"seat",label:"Yes"},{id:"edge-4",source:"available",target:"add",label:"No"},{id:"edge-5",source:"add",target:"notify"},{id:"edge-6",source:"notify",target:"responds"},{id:"edge-7",source:"responds",target:"remove",label:"No response"},{id:"edge-8",source:"responds",target:"ready",label:"Responds"},{id:"edge-9",source:"ready",target:"seat",label:"Ready"},{id:"edge-10",source:"ready",target:"wait",label:"Not ready"},{id:"edge-11",source:"wait",target:"responds",label:"Check response again"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"expense-approval-process",title:"Expense Approval Process",nodes:[{id:"submit",label:"Employee submits an expense report",kind:"start",group:"employee"},{id:"review",label:"Manager reviews the report",kind:"process",group:"manager"},{id:"approved",label:"Is it approved?",kind:"decision",group:"manager"},{id:"revise",label:"Employee revises the report",kind:"process",group:"employee"},{id:"resubmit",label:"Employee resubmits it for review",kind:"process",group:"employee"},{id:"verify",label:"Finance verifies the receipts",kind:"process",group:"finance"},{id:"pay",label:"Finance pays the employee",kind:"end",group:"finance"}],edges:[{id:"edge-1",source:"submit",target:"review"},{id:"edge-2",source:"review",target:"approved"},{id:"edge-3",source:"approved",target:"revise",label:"Rejected"},{id:"edge-4",source:"revise",target:"resubmit"},{id:"edge-5",source:"resubmit",target:"review"},{id:"edge-6",source:"approved",target:"verify",label:"Approved"},{id:"edge-7",source:"verify",target:"pay"}],groups:[{id:"employee",label:"Employee"},{id:"manager",label:"Manager"},{id:"finance",label:"Finance"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iB({id:"content-moderation",title:"Content moderation",nodes:[{id:"report",label:"Report is received",kind:"start"},{id:"scan",label:"Automated scan runs",kind:"process"},{id:"severe",label:"Severe harm detected?",kind:"decision"},{id:"remove",label:"Remove the content",kind:"process"},{id:"escalate",label:"Escalate to safety",kind:"end"},{id:"violation",label:"Policy violation?",kind:"decision"},{id:"restore",label:"Restore content",kind:"end"},{id:"review",label:"Human review",kind:"process"},{id:"action",label:"Action needed?",kind:"decision"},{id:"limit",label:"Limits content",kind:"end"}],edges:[{id:"edge-1",source:"report",target:"scan"},{id:"edge-2",source:"scan",target:"severe"},{id:"edge-3",source:"severe",target:"remove",label:"Yes"},{id:"edge-4",source:"remove",target:"escalate"},{id:"edge-5",source:"severe",target:"violation",label:"No"},{id:"edge-6",source:"violation",target:"restore",label:"No"},{id:"edge-7",source:"violation",target:"review",label:"Yes"},{id:"edge-8",source:"review",target:"action"},{id:"edge-9",source:"action",target:"limit",label:"Yes"},{id:"edge-10",source:"action",target:"restore",label:"No"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iS({id:"media-player",title:"Media player",initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"},{id:"ended",kind:"final"}],transitions:[{id:"transition-1-stopped-active",source:"stopped",target:"active",event:"play"},{id:"transition-2-playing-paused",source:"playing",target:"paused",event:"pause"},{id:"transition-3-paused-playing",source:"paused",target:"playing",event:"resume"},{id:"transition-4-playing-playing",source:"playing",target:"playing",event:"seek",action:"jump to position"},{id:"transition-5-active-stopped",source:"active",target:"stopped",event:"stop"},{id:"transition-6-stopped-ended",source:"stopped",target:"ended",event:"eject"}]}),iS({id:"media-player",title:"Media player",initial:"stopped",states:[{id:"stopped",label:"Stopped"},{id:"active",label:"Active",initial:"playing"},{id:"playing",label:"Playing",parent:"active"},{id:"paused",label:"Paused",parent:"active"},{id:"final",kind:"final"}],transitions:[{id:"transition-1-stopped-active",source:"stopped",target:"active",event:"play"},{id:"transition-2-playing-paused",source:"playing",target:"paused",event:"pause"},{id:"transition-3-paused-playing",source:"paused",target:"playing",event:"resume"},{id:"transition-4-playing-playing",source:"playing",target:"playing",event:"seek",action:"jump to position"},{id:"transition-5-active-stopped",source:"active",target:"stopped",event:"stop"},{id:"transition-6-stopped-final",source:"stopped",target:"final",event:"eject"}]}),iS({id:"network-connection",title:"Network connection",initial:"disconnected",states:[{id:"disconnected",label:"Disconnected"},{id:"connecting",label:"Connecting"},{id:"connected",label:"Connected",initial:"idle"},{id:"idle",label:"Idle",parent:"connected"},{id:"streaming",label:"Streaming",parent:"connected"},{id:"retry_choice",kind:"choice"},{id:"failed",label:"Failed"},{id:"end",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"disconnected",target:"connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"connecting",target:"connected",event:"handshake ok"},{id:"transition-3-connecting-retry-choice",source:"connecting",target:"retry_choice",event:"timeout"},{id:"transition-4-retry-choice-connecting",source:"retry_choice",target:"connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retry-choice-failed",source:"retry_choice",target:"failed",guard:"no retries left"},{id:"transition-6-failed-end",source:"failed",target:"end"},{id:"transition-7-idle-streaming",source:"idle",target:"streaming",event:"start stream"},{id:"transition-8-streaming-idle",source:"streaming",target:"idle",event:"stop stream"},{id:"transition-9-connected-disconnected",source:"connected",target:"disconnected",event:"Disconnect"}]}),iS({id:"network-connection",title:"Network Connection",initial:"Disconnected",states:[{id:"Disconnected",label:"Disconnected"},{id:"Connecting",label:"Connecting"},{id:"Connected",label:"Connected",initial:"Idle"},{id:"Idle",label:"Idle",parent:"Connected"},{id:"Streaming",label:"Streaming",parent:"Connected"},{id:"RetryCheck",label:"Retry?",kind:"choice"},{id:"Failed",label:"Failed"},{id:"End",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"Disconnected",target:"Connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"Connecting",target:"Connected",event:"handshake ok"},{id:"transition-3-connecting-retrycheck",source:"Connecting",target:"RetryCheck",event:"timeout"},{id:"transition-4-retrycheck-connecting",source:"RetryCheck",target:"Connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retrycheck-failed",source:"RetryCheck",target:"Failed",guard:"no retries left"},{id:"transition-6-failed-end",source:"Failed",target:"End"},{id:"transition-7-idle-streaming",source:"Idle",target:"Streaming",event:"start stream"},{id:"transition-8-streaming-idle",source:"Streaming",target:"Idle",event:"stop stream"},{id:"transition-9-connected-disconnected",source:"Connected",target:"Disconnected",event:"Disconnect"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"}}),iS({id:"order-lifecycle",title:"Order lifecycle",initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"delivered",label:"Delivered"},{id:"cancelled",label:"Cancelled"},{id:"refunded",label:"Refunded"},{id:"end",kind:"final"}],transitions:[{id:"transition-1-pending-paid",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge card"},{id:"transition-2-pending-cancelled",source:"pending",target:"cancelled",event:"cancel"},{id:"transition-3-paid-shipped",source:"paid",target:"shipped",event:"ship"},{id:"transition-4-paid-cancelled",source:"paid",target:"cancelled",event:"cancel",action:"refund payment"},{id:"transition-5-shipped-delivered",source:"shipped",target:"delivered",event:"deliver"},{id:"transition-6-shipped-paid",source:"shipped",target:"paid",event:"return to sender"},{id:"transition-7-delivered-refunded",source:"delivered",target:"refunded",event:"request return",guard:"within 30 days",action:"issue refund"},{id:"transition-8-delivered-end",source:"delivered",target:"end"},{id:"transition-9-cancelled-end",source:"cancelled",target:"end"},{id:"transition-10-refunded-end",source:"refunded",target:"end"}]}),iS({id:"order-lifecycle",title:"Order lifecycle",initial:"pending",states:[{id:"pending",label:"Pending payment"},{id:"paid",label:"Paid"},{id:"shipped",label:"Shipped"},{id:"delivered",label:"Delivered"},{id:"cancelled",label:"Cancelled",kind:"final"},{id:"refunded",label:"Refunded",kind:"final"},{id:"end",label:"Lifecycle ended",kind:"final"}],transitions:[{id:"transition-1-pending-paid",source:"pending",target:"paid",event:"pay",guard:"card valid",action:"charge card"},{id:"transition-2-pending-cancelled",source:"pending",target:"cancelled",event:"cancel"},{id:"transition-3-paid-shipped",source:"paid",target:"shipped",event:"ship"},{id:"transition-4-paid-cancelled",source:"paid",target:"cancelled",event:"cancel",action:"refund payment"},{id:"transition-5-shipped-delivered",source:"shipped",target:"delivered",event:"deliver"},{id:"transition-6-shipped-paid",source:"shipped",target:"paid",event:"return to sender"},{id:"transition-7-delivered-refunded",source:"delivered",target:"refunded",event:"request return",guard:"within 30 days",action:"issue refund"},{id:"transition-8-delivered-end",source:"delivered",target:"end"}]}),iS({id:"network-connection",title:"Network Connection",initial:"Disconnected",states:[{id:"Disconnected",label:"Disconnected"},{id:"Connecting",label:"Connecting"},{id:"Connected",label:"Connected",initial:"Idle"},{id:"Idle",label:"Idle",parent:"Connected"},{id:"Streaming",label:"Streaming",parent:"Connected"},{id:"RetryCheck",label:"Retry check",kind:"choice"},{id:"Failed",label:"Failed",kind:"final"}],transitions:[{id:"transition-1-disconnected-connecting",source:"Disconnected",target:"Connecting",event:"Connect"},{id:"transition-2-connecting-connected",source:"Connecting",target:"Connected",event:"handshake ok"},{id:"transition-3-connecting-retrycheck",source:"Connecting",target:"RetryCheck",event:"timeout"},{id:"transition-4-retrycheck-connecting",source:"RetryCheck",target:"Connecting",guard:"retries < 3",action:"increment retries"},{id:"transition-5-retrycheck-failed",source:"RetryCheck",target:"Failed",guard:"no retries left"},{id:"transition-6-idle-streaming",source:"Idle",target:"Streaming",event:"start stream"},{id:"transition-7-streaming-idle",source:"Streaming",target:"Idle",event:"stop stream"},{id:"transition-8-connected-disconnected",source:"Connected",target:"Disconnected",event:"Disconnect"}],style:{accentColor:"#8f707f",backgroundColor:"#fffdf8"},type:"state-machine"});let iA=20*Math.PI/180;function iP(e){return 2e3/(Math.max(e.width,e.height,1)+40)}function iV(e){let t=[];for(let a of e){let e=t.at(-1);if(e&&.01>=Math.hypot(a.x-e.x,a.y-e.y))continue;let i=t.at(-2);if(i&&e&&.01>=Math.abs((e.x-i.x)*(a.y-e.y)-(e.y-i.y)*(a.x-e.x))&&(e.x-i.x)*(a.x-e.x)+(e.y-i.y)*(a.y-e.y)>0){t[t.length-1]=a;continue}t.push(a)}return t}function iH(e){let t=[];for(let a=0;a<e.length-1;a+=1){let i=e[a],s=e[a+1],l=.01>=Math.abs(i.y-s.y);!l&&Math.abs(i.x-s.x)>.01||t.push({horizontal:l,at:l?i.y:i.x,min:Math.min(l?i.x:i.y,l?s.x:s.y),max:Math.max(l?i.x:i.y,l?s.x:s.y),first:0===a,last:a===e.length-2})}return t}function iq(e,t){let a=iV(e.points),i=a[0],s=a.at(-1);if(!i||!s)return[];let l=new Map;for(let e=1;e<a.length-2;e+=1){let[o,r,n,d]=[a[e-1],a[e],a[e+1],a[e+2]],c={x:r.x-o.x,y:r.y-o.y},p={x:n.x-r.x,y:n.y-r.y},h={x:d.x-n.x,y:d.y-n.y},g=[c,p,h].every(e=>.01>=Math.abs(e.x)||.01>=Math.abs(e.y)),u=.01>=Math.abs(c.x*h.y-c.y*h.x)&&c.x*h.x+c.y*h.y>0,f=.01>=Math.abs(c.x*p.x+c.y*p.y),m=Math.hypot(p.x,p.y);g&&u&&f&&!(m*t>=150)&&(!l.has("end")&&Math.hypot(s.x-n.x,s.y-n.y)*t<=90&&2*m<=Math.hypot(c.x,c.y)?l.set("end",m):!l.has("start")&&Math.hypot(r.x-i.x,r.y-i.y)*t<=90&&2*m<=Math.hypot(h.x,h.y)&&l.set("start",m))}return[...l].map(([t,a])=>({kind:"endpoint-jog",arrowIds:[e.id],endpoint:t,message:`Arrow "${e.id}" steps ${a.toFixed(1)} units sideways near its ${"end"===t?"arrowhead":"start"}.`}))}function iF(e,t,a,i,s){return t.some(t=>i.some(i=>{if(t.horizontal!==i.horizontal||Math.abs(t.at-i.at)*s>=24)return!1;let l=Math.min(t.max,i.max)-Math.max(t.min,i.min);return!(l*s<30)&&!((t.first&&i.first&&e.sourceId&&e.sourceId===a.sourceId||t.last&&i.last&&e.targetId&&e.targetId===a.targetId)&&l*s<=90)}))}function iI(e){if(!1===e.endArrowhead)return;let t=e.points.filter((e,t,a)=>0===t||Math.hypot(e.x-a[t-1].x,e.y-a[t-1].y)>.01),a=t.at(-1),i=t.at(-2);if(!a||!i)return;let s=Math.hypot(a.x-i.x,a.y-i.y),l=Math.min(25,Math.max(s,e.headRun??0)/2),o=(a.x-i.x)/s,r=(a.y-i.y)/s,n=e=>({x:a.x-l*(o*Math.cos(e)-r*Math.sin(e)),y:a.y-l*(r*Math.cos(e)+o*Math.sin(e))});return[a,n(iA),n(-iA)]}function iE(e,t,a){let i=a.x-t.x,s=a.y-t.y,l=0===i&&0===s?0:Math.max(0,Math.min(1,((e.x-t.x)*i+(e.y-t.y)*s)/(i*i+s*s)));return Math.hypot(e.x-(t.x+l*i),e.y-(t.y+l*s))}function iO(e,t,a,i){let s=(e,t,a)=>(t.x-e.x)*(a.y-e.y)-(t.y-e.y)*(a.x-e.x);return s(e,t,a)*s(e,t,i)<0&&s(a,i,e)*s(a,i,t)<0}function iU(e,t){let a=e.flatMap((a,i)=>e.slice(i+1).flatMap(e=>{let i,s;return[iF(a,iH(iV(a.points)),e,iH(iV(e.points)),t)?{kind:"near-coincident-corridor",arrowIds:[a.id,e.id],message:`Arrows "${a.id}" and "${e.id}" run side by side closer than 24 px.`}:void 0,(i=iI(a),s=iI(e),i&&s&&(function(e,t){let a=e=>e.map((t,a)=>[t,e[(a+1)%e.length]]),i=1/0;for(let[s,l]of a(e))for(let[e,o]of a(t)){if(iO(s,l,e,o))return 0;i=Math.min(i,iE(s,e,o),iE(l,e,o),iE(e,s,l),iE(o,s,l))}return i}(i,s)-2)*t<8?{kind:"touching-arrowheads",arrowIds:[a.id,e.id],message:`Arrowheads of "${a.id}" and "${e.id}" touch.`}:void 0)].filter(e=>void 0!==e)}));return[...e.flatMap(e=>iq(e,t)),...a.filter(e=>"near-coincident-corridor"===e.kind),...a.filter(e=>"touching-arrowheads"===e.kind)]}function iX(e,t,a){let i=1/0;for(let[s,l]of a.entries()){let o=a[(s+1)%a.length];if(iO(e,t,l,o))return 0;i=Math.min(i,iE(e,l,o),iE(t,l,o),iE(l,e,t),iE(o,e,t))}return i}function iT(e,t){let a=24/t+2,i=e.map(e=>{let t=iI(e);return{arrow:e,bounds:i$([...e.points,...t??[]]),head:t,headBounds:t?i$(t):void 0,runs:iH(iV(e.points))}});return e=>{let s=iH(iV(e.points)),l=i$(e.points,a),o=e.points.slice(1).map((t,i)=>{let s=e.points[i];return{bounds:i$([s,t],a),from:s,to:t}}),r=i.filter(({arrow:t,bounds:a})=>t.id!==e.id&&iY(l,a)),n=new Set(r.filter(({arrow:a,runs:i})=>iF(e,s,a,i,t)).map(({arrow:e})=>e.id));return{arrowheadsCrossed:new Set(r.filter(({head:e,headBounds:a})=>e&&o.some(({bounds:i,from:s,to:l})=>iY(i,a)&&(iX(s,l,e)-2)*t<8)).map(({arrow:e})=>e.id)).size,corridors:n.size,jogs:iq(e,t).length}}}function i$(e,t=0){let a=e.map(e=>e.x),i=e.map(e=>e.y);return{maxX:Math.max(...a)+t,maxY:Math.max(...i)+t,minX:Math.min(...a)-t,minY:Math.min(...i)-t}}function iY(e,t){return e.minX<=t.maxX&&t.minX<=e.maxX&&e.minY<=t.maxY&&t.minY<=e.maxY}let iG=Object.freeze({clearance:4,fontSize:14,height:21}),iR=/[@%MW]/u,iD=/[A-Z0-9mw#$&_~]/u,iZ=new Intl.Segmenter(void 0,{granularity:"grapheme"});function ij(e){let{fontSize:t}=iG,a=0;for(let{segment:i}of iZ.segment(e))a+=iR.test(i)?1.02*t:iD.test(i)?.86*t:/^[\x20-\x7e]$/u.test(i)?aE(i,t):Math.max(.86*t,aE(i,t));return Math.ceil(a)}function iN(e){let{clearance:t,height:a}=iG,i=ij(e.name??"Frame");return{x:e.x-t,y:e.y-a-t,width:i+2*t,height:a+t-1}}function iW(e,t,a,i){return tA({id:e,title:t,type:"er",entities:a.map(([e,t])=>({id:e,fields:t.map(tV)})),relationships:i.map(([e,t,a,i,s],l)=>({id:`r${l+1}`,from:e,to:t,fromCardinality:a,toCardinality:i,...s?{label:s}:{}}))})}iW("marketplace-schema","Marketplace schema",[["users",["id uuid PK","email text UK","name text","created_at timestamptz"]],["profiles",["user_id uuid PK FK","bio text?","avatar_url text?"]],["addresses",["id uuid PK","user_id uuid FK","line1 text","city text","country char(2)"]],["sellers",["id uuid PK","user_id uuid FK UK","payout_account text","verified_at timestamptz?"]],["stores",["id uuid PK","seller_id uuid FK","name text","slug text UK"]],["categories",["id uuid PK","parent_id uuid FK?","name text","slug text UK"]],["products",["id uuid PK","store_id uuid FK","title text","price numeric(10,2)","status text"]],["product_categories",["product_id uuid PK FK","category_id uuid PK FK"]],["product_images",["id uuid PK","product_id uuid FK","url text","position int"]],["inventory",["product_id uuid PK FK","on_hand int","reserved int","updated_at timestamptz"]],["orders",["id uuid PK","user_id uuid FK","address_id uuid FK","status text","placed_at timestamptz"]],["order_items",["order_id uuid PK FK","product_id uuid PK FK","quantity int","unit_price numeric(10,2)"]],["payments",["id uuid PK","order_id uuid FK","amount numeric(10,2)","provider text","paid_at timestamptz?"]],["refunds",["id uuid PK","payment_id uuid FK","amount numeric(10,2)","reason text?"]],["carriers",["id uuid PK","name text UK","tracking_url text"]],["shipments",["id uuid PK","order_id uuid FK","carrier_id uuid FK","tracking_code text?","shipped_at timestamptz?"]],["reviews",["id uuid PK","product_id uuid FK","user_id uuid FK","rating int","body text?"]],["coupons",["id uuid PK","code text UK","percent_off int","expires_at timestamptz?"]],["order_coupons",["order_id uuid PK FK","coupon_id uuid PK FK"]],["wishlist_items",["user_id uuid PK FK","product_id uuid PK FK","added_at timestamptz"]]],[["users.id","profiles.user_id","one","zero-or-one"],["users.id","addresses.user_id","one","zero-or-many"],["users.id","sellers.user_id","one","zero-or-one"],["sellers.id","stores.seller_id","one","one-or-many","runs"],["categories.id","categories.parent_id","zero-or-one","zero-or-many","contains"],["stores.id","products.store_id","one","zero-or-many","lists"],["products.id","product_categories.product_id","one","one-or-many"],["categories.id","product_categories.category_id","one","zero-or-many"],["products.id","product_images.product_id","one","zero-or-many"],["products.id","inventory.product_id","one","zero-or-one"],["users.id","orders.user_id","one","zero-or-many","places"],["addresses.id","orders.address_id","one","zero-or-many"],["orders.id","order_items.order_id","one","one-or-many"],["products.id","order_items.product_id","one","zero-or-many"],["orders.id","payments.order_id","one","zero-or-many"],["payments.id","refunds.payment_id","one","zero-or-many"],["orders.id","shipments.order_id","one","zero-or-many"],["carriers.id","shipments.carrier_id","one","zero-or-many"],["products.id","reviews.product_id","one","zero-or-many"],["users.id","reviews.user_id","one","zero-or-many","writes"],["orders.id","order_coupons.order_id","one","zero-or-many"],["coupons.id","order_coupons.coupon_id","one","zero-or-many"],["users.id","wishlist_items.user_id","one","zero-or-many"],["products.id","wishlist_items.product_id","one","zero-or-many"]]),iW("threaded-comments","Threaded comments",[["comments",["id int PK","parent_id int FK?","quoted_id int FK?","author_id int FK","body text"]],["authors",["id int PK","mentor_id int FK?","handle text UK"]]],[["comments.id","comments.parent_id","zero-or-one","zero-or-many","replies"],["comments.id","comments.quoted_id","zero-or-one","zero-or-many","quotes"],["authors.id","comments.author_id","one","zero-or-many"],["authors.id","authors.mentor_id","zero-or-one","zero-or-many","mentors"]]),iW("tag-fans","Tags everywhere",[["tags",["id int PK","name text UK"]],["posts",["id int PK","title text"]],["products",["id int PK","sku text UK"]],["users",["id int PK","email text UK"]],["events",["id int PK","starts_at timestamptz"]],["post_tags",["post_id int PK FK","tag_id int PK FK"]],["product_tags",["product_id int PK FK","tag_id int PK FK"]],["user_tags",["user_id int PK FK","tag_id int PK FK"]],["event_tags",["event_id int PK FK","tag_id int PK FK"]]],[["posts.id","post_tags.post_id","one","zero-or-many"],["tags.id","post_tags.tag_id","one","zero-or-many"],["products.id","product_tags.product_id","one","zero-or-many"],["tags.id","product_tags.tag_id","one","zero-or-many"],["users.id","user_tags.user_id","one","zero-or-many"],["tags.id","user_tags.tag_id","one","zero-or-many"],["events.id","event_tags.event_id","one","zero-or-many"],["tags.id","event_tags.tag_id","one","zero-or-many"]]),iW("saas-workspace","SaaS workspace",[["organizations",["id uuid PK","name text"]],["users",["id uuid PK","email text UK","name text"]],["memberships",["organization_id uuid PK FK","user_id uuid PK FK","role text"]],["projects",["id uuid PK","organization_id uuid FK","name text"]],["tasks",["id uuid PK","project_id uuid FK","assignee_id uuid? FK","title text","due_on date?"]],["comments",["id uuid PK","task_id uuid FK","author_id uuid FK","body text"]],["labels",["id uuid PK","organization_id uuid FK","name text"]],["task_labels",["task_id uuid PK FK","label_id uuid PK FK"]],["plans",["id uuid PK","name text UK","monthly_price numeric"]],["subscriptions",["id uuid PK","organization_id uuid FK UK","plan_id uuid FK","renews_on date"]],["invoices",["id uuid PK","subscription_id uuid FK","amount numeric","paid_at timestamptz?"]],["api_keys",["id uuid PK","organization_id uuid FK","created_by uuid FK","token_hash text UK"]]],[["organizations.id","memberships.organization_id","one","one-or-many"],["users.id","memberships.user_id","one","zero-or-many"],["organizations.id","projects.organization_id","one","zero-or-many"],["projects.id","tasks.project_id","one","zero-or-many"],["users.id","tasks.assignee_id","zero-or-one","zero-or-many"],["tasks.id","comments.task_id","one","zero-or-many"],["users.id","comments.author_id","one","zero-or-many"],["organizations.id","labels.organization_id","one","zero-or-many"],["tasks.id","task_labels.task_id","one","zero-or-many"],["labels.id","task_labels.label_id","one","zero-or-many"],["organizations.id","subscriptions.organization_id","one","zero-or-one"],["plans.id","subscriptions.plan_id","one","zero-or-many"],["subscriptions.id","invoices.subscription_id","one","zero-or-many"],["organizations.id","api_keys.organization_id","one","zero-or-many"],["users.id","api_keys.created_by","one","zero-or-many"]]);let iJ=e=>t9(ad({type:"class",...e}));function iK(e,t="LR"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}iJ({id:"library-model",title:"Library model",classes:[{id:"Library",attributes:["- name: String"],methods:["+ search(q: String): List<Item>"]},{id:"Branch",attributes:["- address: String"]},{id:"Item",kind:"abstract",attributes:["# id: UUID","# title: String"],methods:["+ loanPeriod(): int {abstract}"]},{id:"Book",attributes:["- isbn: String","- pages: int"],methods:["+ loanPeriod(): int"]},{id:"DVD",attributes:["- minutes: int"],methods:["+ loanPeriod(): int"]},{id:"Magazine",attributes:["- issue: int"],methods:["+ loanPeriod(): int"]},{id:"EBook",attributes:["- fileSize: long"]},{id:"Author",attributes:["- name: String"]},{id:"Publisher",attributes:["- name: String"]},{id:"Member",attributes:["- memberId: String","- name: String"],methods:["+ borrow(i: Item): Loan","+ reserve(i: Item): Reservation"]},{id:"StudentMember",attributes:["- school: String"]},{id:"StaffMember",attributes:["- department: String"]},{id:"Loan",attributes:["- due: Date","- returned: Date"],methods:["+ isOverdue(): bool"]},{id:"Reservation",attributes:["- placed: Date"]},{id:"Fine",attributes:["- amount: Money"],methods:["+ pay(): void"]},{id:"Librarian",attributes:["- staffId: String"],methods:["+ checkOut(l: Loan): void"]},{id:"Notifier",kind:"interface",methods:["+ send(m: Member, text: String): void"]},{id:"EmailNotifier",methods:["+ send(m: Member, text: String): void"]},{id:"SmsNotifier",methods:["+ send(m: Member, text: String): void"]},{id:"Catalog",methods:["+ add(i: Item): void","+ find(isbn: String): Book"]}],relationships:[{kind:"composition",from:"Library",to:"Branch",fromMultiplicity:"1",toMultiplicity:"1..*"},{kind:"composition",from:"Library",to:"Catalog",fromMultiplicity:"1",toMultiplicity:"1"},{kind:"aggregation",from:"Catalog",to:"Item",fromMultiplicity:"1",toMultiplicity:"0..*",toRole:"items"},{kind:"inheritance",from:"Book",to:"Item"},{kind:"inheritance",from:"DVD",to:"Item"},{kind:"inheritance",from:"Magazine",to:"Item"},{kind:"inheritance",from:"EBook",to:"Book"},{kind:"association",from:"Book",to:"Author",fromMultiplicity:"*",toMultiplicity:"1..*",toRole:"authors"},{kind:"association",from:"Book",to:"Publisher",fromMultiplicity:"*",toMultiplicity:"1"},{kind:"inheritance",from:"StudentMember",to:"Member"},{kind:"inheritance",from:"StaffMember",to:"Member"},{kind:"association",from:"Member",to:"Loan",fromMultiplicity:"1",toMultiplicity:"0..*",navigable:!0},{kind:"association",from:"Loan",to:"Item",fromMultiplicity:"*",toMultiplicity:"1",navigable:!0},{kind:"association",from:"Member",to:"Reservation",fromMultiplicity:"1",toMultiplicity:"0..*"},{kind:"association",from:"Reservation",to:"Item",fromMultiplicity:"*",toMultiplicity:"1"},{kind:"composition",from:"Loan",to:"Fine",fromMultiplicity:"1",toMultiplicity:"0..1"},{kind:"dependency",from:"Librarian",to:"Loan",label:"checks out"},{kind:"realization",from:"EmailNotifier",to:"Notifier"},{kind:"realization",from:"SmsNotifier",to:"Notifier"},{kind:"dependency",from:"Loan",to:"Notifier"},{kind:"association",from:"Librarian",to:"Branch",fromMultiplicity:"*",toMultiplicity:"1"}].map((e,t)=>({id:`r${t+1}`,...e}))}),iJ({id:"vehicles",title:"Vehicles",classes:[{id:"Vehicle",kind:"abstract",attributes:["# wheels: int","# maxSpeed: double"],methods:["+ move(): void {abstract}"]},...["Car","Truck","Bicycle","Motorcycle","Bus","Tram","Scooter","Van"].map(e=>({id:e,methods:["+ move(): void"]})),{id:"Engine",attributes:["- power: int"]},{id:"Electric",kind:"interface",methods:["+ charge(): void"]}],relationships:[...["Car","Truck","Bicycle","Motorcycle","Bus","Tram","Scooter","Van"].map(e=>({id:`${e}-is-vehicle`,kind:"inheritance",from:e,to:"Vehicle"})),{id:"car-engine",kind:"composition",from:"Car",to:"Engine",fromMultiplicity:"1",toMultiplicity:"1"},{id:"tram-electric",kind:"realization",from:"Tram",to:"Electric"},{id:"scooter-electric",kind:"realization",from:"Scooter",to:"Electric"}]}),iJ({id:"widgets",title:"Widgets",classes:[{id:"Component",kind:"interface",methods:["+ render(): Node"]},{id:"Widget",kind:"abstract",attributes:["# id: String"]},{id:"Control",kind:"abstract",attributes:["# enabled: bool"]},{id:"ButtonBase",kind:"abstract",methods:["+ click(): void {abstract}"]},{id:"IconButton",attributes:["- icon: Icon"],methods:["+ click(): void"]},{id:"Clickable",kind:"interface",methods:["+ click(): void"]},{id:"Theme",attributes:["- palette: Map<String, Color>"]}],relationships:[{id:"widget-component",kind:"realization",from:"Widget",to:"Component"},{id:"control-widget",kind:"inheritance",from:"Control",to:"Widget"},{id:"button-control",kind:"inheritance",from:"ButtonBase",to:"Control"},{id:"icon-button",kind:"inheritance",from:"IconButton",to:"ButtonBase"},{id:"icon-clickable",kind:"realization",from:"IconButton",to:"Clickable"},{id:"widget-theme",kind:"dependency",from:"Widget",to:"Theme"},{id:"icon-theme",kind:"association",from:"IconButton",to:"Theme",toMultiplicity:"0..1",toRole:"override"}]}),iJ({id:"org",title:"Organization",classes:[{id:"Employee",attributes:["- name: String","- title: String"],methods:["+ reports(): List<Employee>"]},{id:"Department",attributes:["- name: String"]}],relationships:[{id:"manages",kind:"association",from:"Employee",to:"Employee",fromMultiplicity:"0..1",toMultiplicity:"0..*",fromRole:"manager",toRole:"reports"},{id:"mentors",kind:"association",from:"Employee",to:"Employee",fromMultiplicity:"0..1",toMultiplicity:"0..*",fromRole:"mentor",toRole:"mentees"},{id:"works-in",kind:"association",from:"Employee",to:"Department",fromMultiplicity:"*",toMultiplicity:"1",label:"works in"}]}),iJ({id:"strategy",title:"Strategy",classes:[{id:"Checkout",methods:["+ total(cart: Cart): Money"]},{id:"PricingStrategy",kind:"interface",methods:["+ price(cart: Cart): Money"]},{id:"Cart",attributes:["- items: List<Item>"]},{id:"Regular",methods:["+ price(cart: Cart): Money"]},{id:"Sale",methods:["+ price(cart: Cart): Money"]}],relationships:[{id:"uses",kind:"aggregation",from:"Checkout",to:"PricingStrategy",fromMultiplicity:"1",toMultiplicity:"1",toRole:"strategy"},{id:"prices",kind:"dependency",from:"PricingStrategy",to:"Cart"},{id:"totals",kind:"dependency",from:"Checkout",to:"Cart"},{id:"regular",kind:"realization",from:"Regular",to:"PricingStrategy"},{id:"sale",kind:"realization",from:"Sale",to:"PricingStrategy"}]}),iK({id:"order-fulfilment-lanes",title:"Order fulfilment",lanes:[{id:"customer",label:"Customer"},{id:"sales",label:"Sales"},{id:"warehouse",label:"Warehouse"},{id:"billing",label:"Billing"}],nodes:[{id:"place",label:"Place order",kind:"start",lane:"customer"},{id:"review",label:"Review order",kind:"process",lane:"sales"},{id:"stock",label:"Items in stock?",kind:"decision",lane:"sales"},{id:"backorder",label:"Notify backorder",kind:"end",lane:"sales"},{id:"pick",label:"Pick items",kind:"process",lane:"warehouse"},{id:"pack",label:"Pack the order",kind:"process",lane:"warehouse"},{id:"ship",label:"Ship the order",kind:"process",lane:"warehouse"},{id:"invoice",label:"Send invoice",kind:"process",lane:"billing"},{id:"pay",label:"Pay the invoice",kind:"process",lane:"customer"},{id:"record",label:"Record payment",kind:"end",lane:"billing"}],edges:[{id:"e1",source:"place",target:"review"},{id:"e2",source:"review",target:"stock"},{id:"e3",source:"stock",target:"backorder",label:"no"},{id:"e4",source:"stock",target:"pick",label:"yes"},{id:"e5",source:"pick",target:"pack"},{id:"e6",source:"pack",target:"ship"},{id:"e7",source:"ship",target:"invoice"},{id:"e8",source:"invoice",target:"pay"},{id:"e9",source:"pay",target:"record"}]}),iK({id:"hiring-lanes",title:"Hiring process",lanes:[{id:"candidate",label:"Candidate"},{id:"recruiter",label:"Recruiter"},{id:"manager",label:"Hiring manager"}],nodes:[{id:"apply",label:"Submit application",kind:"start",lane:"candidate"},{id:"screen",label:"Screen the résumé",kind:"process",lane:"recruiter"},{id:"qualified",label:"Qualified?",kind:"decision",lane:"recruiter"},{id:"decline",label:"Receive rejection",kind:"end",lane:"candidate"},{id:"schedule",label:"Schedule interview",kind:"process",lane:"recruiter"},{id:"interview",label:"Attend interview",kind:"process",lane:"candidate"},{id:"assess",label:"Assess the candidate",kind:"process",lane:"manager"},{id:"hire",label:"Hire?",kind:"decision",lane:"manager"},{id:"offer",label:"Send offer",kind:"process",lane:"recruiter"},{id:"accept",label:"Accept offer",kind:"end",lane:"candidate"}],edges:[{id:"e1",source:"apply",target:"screen"},{id:"e2",source:"screen",target:"qualified"},{id:"e3",source:"qualified",target:"decline",label:"no"},{id:"e4",source:"qualified",target:"schedule",label:"yes"},{id:"e5",source:"schedule",target:"interview"},{id:"e6",source:"interview",target:"assess"},{id:"e7",source:"assess",target:"hire"},{id:"e8",source:"hire",target:"offer",label:"yes"},{id:"e9",source:"hire",target:"schedule",label:"another round"},{id:"e10",source:"offer",target:"accept"}]},"TB"),iK({id:"incident-response-lanes",title:"Incident response",lanes:[{id:"oncall",label:"On-call"},{id:"sre",label:"SRE"},{id:"comms",label:"Comms"}],nodes:[{id:"alert",label:"Alert fires",kind:"start",lane:"oncall"},{id:"triage",label:"Triage the alert",kind:"process",lane:"oncall"},{id:"page",label:"Page the SRE",kind:"process",lane:"oncall"},{id:"status",label:"Post status update",kind:"process",lane:"comms"},{id:"investigate",label:"Investigate",kind:"process",lane:"sre"},{id:"mitigate",label:"Apply mitigation",kind:"process",lane:"sre"},{id:"resolved",label:"Resolved?",kind:"decision",lane:"oncall"},{id:"close",label:"Publish resolution",kind:"end",lane:"comms"}],edges:[{id:"e1",source:"alert",target:"triage"},{id:"e2",source:"triage",target:"page"},{id:"e3",source:"page",target:"investigate"},{id:"e4",source:"investigate",target:"mitigate"},{id:"e5",source:"mitigate",target:"status"},{id:"e6",source:"status",target:"resolved"},{id:"e7",source:"resolved",target:"investigate",label:"no"},{id:"e8",source:"resolved",target:"close",label:"yes"}]}),iK({id:"skip-lanes",title:"Purchase request",lanes:[{id:"requester",label:"Requester"},{id:"procurement",label:"Procurement"},{id:"finance",label:"Finance"},{id:"vendor",label:"Vendor"}],nodes:[{id:"request",label:"Raise purchase request",kind:"start",lane:"requester"},{id:"budget",label:"Within budget?",kind:"decision",lane:"finance"},{id:"quotes",label:"Collect quotes",kind:"process",lane:"procurement"},{id:"compare",label:"Compare vendors",kind:"process",lane:"procurement"},{id:"terms",label:"Check payment terms",kind:"process",lane:"finance"},{id:"order",label:"Place purchase order",kind:"process",lane:"procurement"},{id:"deliver",label:"Deliver goods",kind:"process",lane:"vendor"},{id:"receive",label:"Receive goods",kind:"end",lane:"requester"},{id:"denied",label:"Request denied",kind:"end",lane:"requester"}],edges:[{id:"e1",source:"request",target:"budget"},{id:"e2",source:"budget",target:"quotes",label:"yes"},{id:"e3",source:"budget",target:"denied",label:"no"},{id:"e4",source:"quotes",target:"compare"},{id:"e5",source:"quotes",target:"terms"},{id:"e6",source:"compare",target:"order"},{id:"e7",source:"terms",target:"order"},{id:"e8",source:"order",target:"deliver"},{id:"e9",source:"deliver",target:"receive"}]}),iK({id:"single-lane",title:"Ticket handling",lanes:[{id:"support",label:"Support desk"}],nodes:[{id:"open",label:"Ticket opened",kind:"start",lane:"support"},{id:"answer",label:"Answer the customer",kind:"process",lane:"support"},{id:"solved",label:"Solved?",kind:"decision",lane:"support"},{id:"escalate",label:"Escalate",kind:"process",lane:"support"},{id:"close",label:"Close the ticket",kind:"end",lane:"support"}],edges:[{id:"e1",source:"open",target:"answer"},{id:"e2",source:"answer",target:"solved"},{id:"e3",source:"solved",target:"close",label:"yes"},{id:"e4",source:"solved",target:"escalate",label:"no"},{id:"e5",source:"escalate",target:"answer"}]},"TB");let iQ=["Customer","Support","Billing","Engineering","QA","Release"],i1=["Report the problem","Triage the ticket","Check the account","Reproduce the bug","Write a fix","Review the change","Run regression tests","Approve the release","Ship the fix","Confirm with customer"],i0=Array.from({length:30}).reduce((e,t,a)=>{let i=e.at(-1)??0,s=[0,1,1,0,2,-1,1,0,-1,-2][a%10],l=i+s;return[...e,l<0||l>5?i-s:l]},[]);X({id:"six-lanes-thirty-steps",title:"Thirty steps across six lanes",type:"flowchart",lanes:iQ.map((e,t)=>({id:`l${t}`,label:e})),nodes:Array.from({length:30},(e,t)=>({id:`s${t}`,label:`${i1[t%i1.length]} ${t}`,kind:0===t?"start":29===t?"end":t%7==3?"decision":"process",lane:`l${i0[t]}`})),edges:[...Array.from({length:29},(e,t)=>({id:`e${t}`,source:`s${t}`,target:`s${t+1}`,...t%7==3?{label:"yes"}:{}})),...Array.from({length:30},(e,t)=>t).filter(e=>e%7==3&&e<28).map(e=>({id:`b${e}`,source:`s${e}`,target:`s${e%2==0?e+2:e-2}`,label:"no"}))],layout:{direction:"LR",edgeRouting:"orthogonal"}}),X({id:"cross-lane-loops",title:"Loops across lanes",type:"flowchart",lanes:iQ.slice(0,4).map((e,t)=>({id:`l${t}`,label:e})),nodes:Array.from({length:14},(e,t)=>({id:`n${t}`,label:`${i1[t%i1.length]} ${t}`,kind:0===t?"start":13===t?"end":t%3==2?"decision":"process",lane:`l${3*t%4}`})),edges:[...Array.from({length:13},(e,t)=>({id:`e${t}`,source:`n${t}`,target:`n${t+1}`,...t%3==2?{label:"yes"}:{}})),...[2,5,8,11].map(e=>({id:`loop${e}`,source:`n${e}`,target:`n${Math.max(1,e-2-e%2)}`,label:"retry"}))],layout:{direction:"LR",edgeRouting:"orthogonal"}});let i2=["Ada","Grace","Alan","Barbara","Edsger","Frances","Donald","Hedy","John","Katherine","Leslie","Mary","Niklaus","Radia","Tim","Shafi","Vint","Lynn","Ken","Sophie"],i3=["Lovelace","Hopper","Turing","Liskov","Dijkstra","Allen","Knuth","Lamarr","Backus","Johnson","Lamport","Keller","Wirth","Perlman","Berners-Lee","Goldwasser","Cerf","Conway","Thompson","Wilson"],i5=["Engineering","Product","Sales","Marketing","Operations","Finance"],i4=["Chief Executive Officer","Vice President","Director","Engineering Manager","Team Lead","Senior Engineer","Engineer"];function i6(e){return`${i2[e%i2.length]} ${i3[(7*e+Math.floor(e/i2.length))%i3.length]}`}function i7(e,t,a,i={}){let s=[{id:"p0",name:i6(0),title:i4[0],department:"Executive"}],l=[{id:"p0",department:"Executive"}];for(let[e,t]of a.entries()){let a=[];l.forEach((i,l)=>{let o=t[l%t.length];for(let t=0;t<o;t+=1){let l=s.length,o=0===e?i5[t%i5.length]:i.department,r={id:`p${l}`,department:o};s.push({id:r.id,name:i6(l),title:i4[Math.min(e+1,i4.length-1)],department:o,manager:i.id}),a.push(r)}}),l=a}return ax(aL({id:e,title:t,type:ac,people:s,...i}))}function i8(e,t="LR"){return ez({...e,type:"flowchart",layout:{direction:t,edgeRouting:"orthogonal"}})}i7("eighty-people","Eighty people",[[6],[3,2,4],[3,4,2,3,3,3,4,3,2,3,4,3,2,3,3,3,4,3]]),i7("twenty-reports","Twenty reports",[[1],[20]]),i7("six-levels","Six levels deep",[[2],[2,1],[1,2],[2,1],[1,2]]),i7("department","Department of twenty-five",[[3],[8,6,7]]),i7("wide-top","Twelve vice presidents",[[12],[2,3,1]]),ax(aL({id:"three-boards",title:"Three boards",type:ac,forest:!0,people:[{id:"a",name:"North Board",title:"Chair"},{id:"a1",name:"Ada Lovelace",title:"Member",manager:"a"},{id:"a2",name:"Alan Turing",title:"Member",manager:"a"},{id:"b",name:"South Board",title:"Chair"},{id:"b1",name:"Grace Hopper",title:"Member",manager:"b"},{id:"c",name:"West Board",title:"Chair"}]})),i7("regions","Departments as regions",[[4],[3,2,1,4],[0,2,1]],{groupByDepartment:!0}),i8({id:"aws-three-tier",title:"AWS three-tier app",groups:[{id:"region",label:"us-east-1",kind:"region"},{id:"vpc",label:"VPC 10.0.0.0/16",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Database subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"users",label:"Users",kind:"start"},{id:"alb",label:"Application Load Balancer",kind:"process",group:"public"},{id:"web",label:"ECS web service",kind:"process",group:"private"},{id:"api",label:"ECS API service",kind:"process",group:"private"},{id:"rds",label:"RDS PostgreSQL",kind:"end",shape:"database",group:"data"},{id:"s3",label:"S3 assets bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb"},{id:"e2",source:"alb",target:"web"},{id:"e3",source:"alb",target:"api"},{id:"e4",source:"web",target:"rds"},{id:"e5",source:"api",target:"rds"},{id:"e6",source:"api",target:"s3"}]}),i8({id:"kubernetes-cluster",title:"Kubernetes cluster",groups:[{id:"cluster",label:"GKE cluster",kind:"cluster"},{id:"edge",label:"ingress-nginx",kind:"namespace",parent:"cluster"},{id:"frontend",label:"frontend",kind:"namespace",parent:"cluster"},{id:"backend",label:"backend",kind:"namespace",parent:"cluster"}],nodes:[{id:"client",label:"Browser",kind:"start"},{id:"ingress",label:"Ingress controller",kind:"process",group:"edge"},{id:"web-svc",label:"web Service",kind:"process",group:"frontend"},{id:"web-pods",label:"web Pods",kind:"process",group:"frontend"},{id:"api-svc",label:"api Service",kind:"process",group:"backend"},{id:"api-pods",label:"api Pods",kind:"process",group:"backend"},{id:"worker",label:"worker Pods",kind:"process",group:"backend"},{id:"queue",label:"RabbitMQ jobs queue",kind:"process",shape:"queue"},{id:"db",label:"Cloud SQL Postgres",kind:"end",shape:"database"}],edges:[{id:"e1",source:"client",target:"ingress"},{id:"e2",source:"ingress",target:"web-svc"},{id:"e3",source:"web-svc",target:"web-pods"},{id:"e4",source:"web-pods",target:"api-svc"},{id:"e5",source:"api-svc",target:"api-pods"},{id:"e6",source:"api-pods",target:"db"},{id:"e7",source:"api-pods",target:"queue"},{id:"e8",source:"queue",target:"worker"},{id:"e9",source:"worker",target:"db"}]},"TB"),i8({id:"hybrid-cloud",title:"Hybrid on-prem and cloud",groups:[{id:"onprem",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",kind:"zone",parent:"onprem"},{id:"aws",label:"AWS",kind:"cloud"},{id:"region",label:"eu-west-1",kind:"region",parent:"aws"},{id:"vpc",label:"Production VPC",kind:"vpc",parent:"region"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"staff",label:"Office staff",kind:"start",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"oracle",label:"Oracle database",kind:"end",shape:"database",group:"onprem"},{id:"vpn",label:"Site-to-site VPN",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"private"},{id:"orders",label:"Order queue",kind:"process",shape:"queue",group:"region"},{id:"sync",label:"Sync function",kind:"process",group:"region"},{id:"dynamo",label:"Orders table",kind:"end",shape:"database",group:"region"},{id:"invoice",label:"Invoice archive",kind:"end",shape:"document",group:"region"}],edges:[{id:"e1",source:"staff",target:"erp"},{id:"e2",source:"erp",target:"oracle"},{id:"e3",source:"erp",target:"vpn"},{id:"e4",source:"vpn",target:"api"},{id:"e5",source:"api",target:"orders"},{id:"e6",source:"orders",target:"sync"},{id:"e7",source:"sync",target:"dynamo"},{id:"e8",source:"sync",target:"invoice"}]}),i8({id:"kinded-flat",title:"Two availability zones",groups:[{id:"az-a",label:"us-east-1a",kind:"zone"},{id:"az-b",label:"us-east-1b",kind:"zone"}],nodes:[{id:"lb",label:"Network Load Balancer",kind:"start"},{id:"app-a",label:"App server A",kind:"process",group:"az-a"},{id:"db-a",label:"Primary database",kind:"end",shape:"database",group:"az-a"},{id:"app-b",label:"App server B",kind:"process",group:"az-b"},{id:"db-b",label:"Standby replica",kind:"end",shape:"database",group:"az-b"}],edges:[{id:"e1",source:"lb",target:"app-a"},{id:"e2",source:"lb",target:"app-b"},{id:"e3",source:"app-a",target:"db-a"},{id:"e4",source:"app-b",target:"db-b"}]},"TB"),i8({id:"hybrid-cloud-labeled",title:"Hybrid setup: on-prem data center to AWS",groups:[{id:"dc",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",parent:"dc",kind:"zone"},{id:"aws",label:"AWS cloud",kind:"cloud"},{id:"reg",label:"eu-west-1",parent:"aws",kind:"region"},{id:"vpc",label:"Production VPC",parent:"reg",kind:"vpc"},{id:"priv",label:"Private subnet",parent:"vpc",kind:"subnet"}],nodes:[{id:"staff",label:"Office staff enter orders",kind:"start",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"ora",label:"Oracle database",kind:"end",group:"dc",shape:"database"},{id:"vpn",label:"Site-to-site VPN gateway",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"priv"},{id:"q",label:"Order queue",kind:"process",group:"reg",shape:"queue"},{id:"sync",label:"Sync function",kind:"process",group:"reg"},{id:"tbl",label:"Orders table",kind:"end",group:"reg",shape:"database"},{id:"arc",label:"Invoice archive (PDF)",kind:"end",group:"reg",shape:"document"}],edges:[{id:"edge-1",source:"staff",target:"erp"},{id:"edge-2",source:"erp",target:"ora",label:"stores records"},{id:"edge-3",source:"erp",target:"vpn",label:"sends orders"},{id:"edge-4",source:"vpn",target:"api"},{id:"edge-5",source:"api",target:"q"},{id:"edge-6",source:"q",target:"sync"},{id:"edge-7",source:"sync",target:"tbl",label:"writes orders"},{id:"edge-8",source:"sync",target:"arc",label:"saves invoice PDF"}]}),i8({id:"hybrid-cloud-described",title:"Hybrid order processing — on-premises to AWS",groups:[{id:"dc",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",parent:"dc"},{id:"aws",label:"AWS cloud",kind:"cloud"},{id:"region",label:"eu-west-1",parent:"aws",kind:"region"},{id:"vpc",label:"Production VPC",parent:"region",kind:"vpc"},{id:"private",label:"Private subnet",parent:"vpc",kind:"subnet"}],nodes:[{id:"staff",label:"Office staff",kind:"start",description:"Enter orders",group:"corp"},{id:"erp",label:"Legacy ERP",kind:"process",group:"corp"},{id:"oracle",label:"Oracle database",kind:"end",description:"Stores records",icon:{slug:"oracle"},group:"dc",shape:"database"},{id:"vpn",label:"Site-to-site VPN gateway",kind:"process",group:"vpc"},{id:"api",label:"Order API",kind:"process",group:"private"},{id:"queue",label:"Order queue",kind:"process",group:"region",shape:"queue"},{id:"sync",label:"Sync function",kind:"process",group:"region"},{id:"table",label:"Orders table",kind:"end",group:"region",shape:"database"},{id:"archive",label:"Invoice archive",kind:"end",description:"Each invoice saved as a PDF document",group:"region",shape:"storage"}],edges:[{id:"edge-1",source:"staff",target:"erp",label:"Enter orders"},{id:"edge-2",source:"erp",target:"oracle",label:"Stores records"},{id:"edge-3",source:"erp",target:"vpn",label:"Sends orders"},{id:"edge-4",source:"vpn",target:"api",label:"Passes orders"},{id:"edge-5",source:"api",target:"queue",label:"Puts each order"},{id:"edge-6",source:"queue",target:"sync",label:"Takes orders"},{id:"edge-7",source:"sync",target:"table",label:"Writes orders"},{id:"edge-8",source:"sync",target:"archive",label:"Saves invoice PDFs"}]}),i8({id:"aws-three-tier-described",title:"AWS three-tier app",groups:[{id:"region",label:"us-east-1",kind:"region"},{id:"vpc",label:"VPC",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"private",label:"Private subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Database subnet",kind:"subnet",parent:"vpc"}],nodes:[{id:"users",label:"Users",kind:"start",description:"Send requests"},{id:"alb",label:"Application Load Balancer",kind:"process",group:"public"},{id:"web",label:"Web service",kind:"process",description:"ECS Fargate",group:"private"},{id:"api",label:"API service",kind:"process",description:"ECS Fargate, two tasks behind the load balancer",group:"private"},{id:"rds",label:"RDS PostgreSQL",kind:"end",shape:"database",icon:{slug:"postgresql"},description:"Multi-AZ primary",group:"data"},{id:"s3",label:"S3 bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb",label:"requests"},{id:"e2",source:"alb",target:"web",label:"routes"},{id:"e3",source:"alb",target:"api",label:"routes"},{id:"e4",source:"web",target:"rds",label:"queries"},{id:"e5",source:"api",target:"rds",label:"queries"},{id:"e6",source:"api",target:"s3",label:"stores uploads"}]}),X({id:"depth-four",title:"Two availability zones, four zones deep",type:"flowchart",groups:[{id:"region",label:"us-west-2",kind:"region"},{id:"vpc",label:"VPC",kind:"vpc",parent:"region"},{id:"az-a",label:"us-west-2a",kind:"zone",parent:"vpc"},{id:"az-b",label:"us-west-2b",kind:"zone",parent:"vpc"},{id:"public-a",label:"Public subnet A",kind:"subnet",parent:"az-a"},{id:"private-a",label:"Private subnet A",kind:"subnet",parent:"az-a"},{id:"public-b",label:"Public subnet B",kind:"subnet",parent:"az-b"},{id:"private-b",label:"Private subnet B",kind:"subnet",parent:"az-b"}],nodes:[{id:"users",label:"Users",kind:"start"},{id:"alb",label:"Load balancer",kind:"process",group:"vpc"},{id:"web-a",label:"Web server A",kind:"process",group:"public-a"},{id:"web-b",label:"Web server B",kind:"process",group:"public-b"},{id:"app-a",label:"App server A",kind:"process",group:"private-a"},{id:"app-b",label:"App server B",kind:"process",group:"private-b"},{id:"db-a",label:"Primary database",kind:"end",shape:"database",group:"private-a"},{id:"db-b",label:"Standby database",kind:"end",shape:"database",group:"private-b"},{id:"s3",label:"Backups bucket",kind:"end",shape:"storage",group:"region"}],edges:[{id:"e1",source:"users",target:"alb"},{id:"e2",source:"alb",target:"web-a"},{id:"e3",source:"alb",target:"web-b"},{id:"e4",source:"web-a",target:"app-a"},{id:"e5",source:"web-b",target:"app-b"},{id:"e6",source:"app-a",target:"db-a"},{id:"e7",source:"app-b",target:"db-b"},{id:"e8",source:"db-a",target:"db-b",label:"replicates"},{id:"e9",source:"db-a",target:"s3",label:"backs up"}],layout:{direction:"LR",edgeRouting:"orthogonal"}}),X({id:"thirty-services",title:"Thirty services in eight zones",type:"flowchart",groups:[{id:"aws",label:"AWS",kind:"cloud"},{id:"region",label:"us-east-1",kind:"region",parent:"aws"},{id:"vpc",label:"Production VPC",kind:"vpc",parent:"region"},{id:"public",label:"Public subnet",kind:"subnet",parent:"vpc"},{id:"app",label:"App subnet",kind:"subnet",parent:"vpc"},{id:"data",label:"Data subnet",kind:"subnet",parent:"vpc"},{id:"onprem",label:"On-prem data center",kind:"datacenter"},{id:"corp",label:"Corporate network",kind:"zone",parent:"onprem"}],nodes:[["Customers"],["CloudFront CDN","aws"],["WAF rules","region"],["Route 53 DNS","region"],["Load balancer","public"],["NAT gateway","public"],["Bastion host","public"],["Web frontend","app"],["Auth service","app"],["Catalog service","app"],["Cart service","app"],["Checkout service","app"],["Payments service","app"],["Session cache","data","database"],["Catalog database","data","database"],["Orders database","data","database"],["Order events","region","queue"],["Email worker","vpc"],["Invoice renderer","vpc"],["Invoice PDFs","region","document"],["Analytics stream","region","queue"],["Data warehouse","aws","database"],["VPN gateway","vpc"],["Corporate VPN","corp"],["ERP sync","corp"],["ERP system","corp"],["Finance team","corp"],["Mainframe ledger","onprem","database"],["Audit log","onprem","document"],["Partners"]].map(([e,t,a],i)=>({id:`s${i}`,label:e,kind:0===i?"start":"process",...t?{group:t}:{},...a?{shape:a}:{}})),edges:[[0,1],[1,2],[2,4],[3,4],[0,3],[4,7],[5,7],[6,8],[7,8],[7,9],[7,10],[10,11],[11,12],[8,13],[9,14],[11,15],[12,15],[11,16],[16,17],[16,18],[18,19],[16,20],[20,21],[12,22],[22,23],[23,24],[24,25],[25,26],[25,27],[24,28],[29,22]].map(([e,t],a)=>({id:`e${a}`,source:`s${e}`,target:`s${t}`})),layout:{direction:"LR",edgeRouting:"orthogonal"}});let i9=/[,;]\s*(?:id|label|kind|group|source|target|title|direction|nodes|edges)\s*:?\s*$/i;function se(e){let t=e.trim();for(;;){let e=t.replace(i9,"").trim();if(e===t)return t;t=e}}class st extends s.Xsx("ContractSchemaIssue")({code:sx("custom"),issueTag:s.xCb(["Filter","InvalidType","InvalidValue","MissingKey","UnexpectedKey","Forbidden","OneOf","AnyOf"]),astKind:s.Qrq(s.QfV),missingKeyCode:s.Qrq(s.uSQ("invalid_type")),message:s.QfV,path:s.O31(s.pHd)},{identifier:void 0}){}class sa extends s.rNF()("ContractSchemaError",{issues:s.O31(s.O3D(st))}){}let si=e=>{var t;if("InvalidType"!==e._tag)return c.vp(e);let a=c.bZ(e)?e.input:void 0;return`Invalid input: expected ${t=e.ast,d.Kg(t)?"string":d.Et(t)?"number":d.Lm(t)?"boolean":d.tF(t)?"array":d.RP(t)?"object":d.c$(t)?JSON.stringify(t.literal):"value"}, received ${null===a?"null":Array.isArray(a)?"array":typeof a}`},ss=c.ID({leafHook:si});function sl(e){let t,a;return new sa({issues:(t=[],((a=(e,i,s)=>{switch(e._tag){case"Pointer":return a(e.issue,[...i,...e.path],s);case"Encoding":return a(e.issue,i,s);case"Composite":for(let t of e.issues)a(t,i,e.ast);return;case"AnyOf":if(e.issues.length>0){for(let t of e.issues)a(t,i,e.ast);return}break;case"Filter":if(void 0===c.VY(e)&&"InvalidValue"!==e.issue._tag)return a(e.issue,i,s)}let l="ast"in e?e.ast:s,o="MissingKey"===e._tag&&e.annotations?.[sc]==="invalid_type"?"invalid_type":void 0,r=l&&d.mi(l)&&l.types.every(d.c$)?"LiteralUnion":l?._tag,n=l?.annotations?.[sd],p="string"==typeof n?[...i,n]:i;for(let a of ss(e).issues)t.push({code:"custom",issueTag:e._tag,...o?{missingKeyCode:o}:{},...r?{astKind:r}:{},message:a.message,path:p})})(e.issue,[]),t.length>1&&t.every(e=>"source"===e.path[0]))?[{code:"custom",issueTag:"AnyOf",astKind:"Union",message:"Invalid input",path:["source"]}]:t)})}let so=new Set(["x-sketchi-default","x-sketchi-one-of","const","exclusiveMaximum","exclusiveMinimum","maximum","maxLength","maxItems","minimum","minItems","minLength","pattern"]),sr="x-sketchi-default",sn="x-sketchi-one-of",sd="codeModeDiscriminator",sc="codeModeMissingKeyCode";function sp(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function sh(e){let t=s._oz(s.AxX(e),{includeAnnotationKey:e=>so.has(e),onExcessProperty:"error"});return function e(t){if(Array.isArray(t))return t.map(e);if(!sp(t))return t;let a=Object.fromEntries(Object.entries(t).map(([t,a])=>[t,e(a)])),i=!0===a[sn];delete a[sn],i&&Array.isArray(a.anyOf)&&(a.oneOf=a.anyOf,delete a.anyOf);let s=a.allOf;if(Array.isArray(s)){let e=[];for(let t of s)sp(t)&&Object.hasOwn(t,sr)?a.default=t[sr]:e.push(t);0===e.length?delete a.allOf:a.allOf=e}return a}({$schema:"https://json-schema.org/draft/2020-12/schema",...t.schema,...0===Object.keys(t.definitions).length?{}:{$defs:t.definitions}})}function sg(){return s.QfV.check(s.tJb(1,{message:"Too small: expected string to have >=1 characters"}))}function su(e){return s.O31(e).pipe(s.fXn).check(s.tJb(1,{message:"Too small: expected array to have >=1 items"}))}function sf(e){return s.Qrq(e)}function sm(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected string, received undefined"}))}function sv(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected object, received undefined"}))}function sy(e){return e.pipe(s.usV({[sc]:"invalid_type",messageMissingKey:"Invalid input: expected array, received undefined"}))}function sw(e){return s.xCb(e).annotate({message:`Invalid option: expected one of ${e.map(e=>JSON.stringify(e)).join("|")}`})}function sx(e){return sM(e,s.QfV)}function sb(e){return sM(e,s.wNn)}function sk(e){return sM(e,s.v8c)}function sM(e,t){let a=s.hzj()([],()=>(t,a,i)=>t===e?o.PyW(e):o.fJG(new c.eE(a,t,i)),{message:`Invalid literal value, expected ${JSON.stringify(e)}`,toCodecJson:()=>s.nfo()(t.annotate({const:e}),{decode:p.pd(()=>e),encode:p.pd(e=>e)})});return s.uSQ(e).pipe(s.GLL(a))}let sC=sg(),sz=sm(sC),s_=s.wYs,sL=s.wNn.check(s.MIs(),s.yJO(0,{message:"Too small: expected number to be >0"})),sB=/^#[0-9a-fA-F]{6}$/u;function sS(e){return s.QfV.annotate(void 0===e?{}:{default:e}).check(s.Pto(sB,{message:`Invalid string: must match pattern /${sB.source}/`}))}let sA=sS(),sP=["excalidraw","scene","png"],sV=["excalidraw","scene"],sH=Object.assign(sw(sP),{options:sP}),sq=Object.assign(sw(sV),{options:sV});class sF extends s.Xsx("ArtifactProvenance")({sourceArtifactId:sz.pipe(s.Wa3)},{identifier:void 0}){}let sI=["missing_field","invalid_type","invalid_enum","invalid_color","duplicate_node_id","duplicate_edge_id","missing_edge_source","missing_edge_target","self_loop","missing_start","multiple_starts","missing_end","start_has_incoming","end_has_outgoing","unreachable_node","nonterminating_node","missing_outgoing_edge","underbranched_decision","unlabeled_decision_branch","duplicate_decision_branch_label","disconnected_graph","flowchart_too_large","duplicate_group_id","unknown_node_group","empty_group","unknown_group_parent","group_cycle","shaped_decision","duplicate_lane_id","unknown_node_lane","empty_lane","lanes_with_groups","mindmap_too_deep","mindmap_too_large","sequence_too_large","invalid_timeline_date","duplicate_event_id","invalid_timeline_order","timeline_too_large","invalid_timeline_span","invalid_timeline_lane","chart_too_large","chart_series_mismatch","duplicate_chart_category","invalid_chart_series","invalid_chart_value","invalid_chart_option","state_machine_too_large","invalid_state","unknown_initial_state","invalid_composite","composite_initial_defaulted","final_has_outgoing","underbranched_choice","gantt_too_large","invalid_gantt_date","invalid_gantt_span","invalid_gantt_phase","invalid_gantt_progress","gantt_dependency_cycle","gantt_schedule_conflict","er_too_large","invalid_entity","invalid_field","unknown_relationship_field","invalid_relationship","class_too_large","invalid_class","invalid_member","invalid_generalization","org_chart_too_large","invalid_person","invalid_reporting_line","request_too_large","generic_label","label_too_long","quality_below_threshold","render_failed","png_unavailable","text_overflow","arrow_binding_invalid","arrow_overlap","export_invalid_scene","storage_read_failed","storage_write_failed","unsupported_artifact_format","patch_source_unavailable","unknown_patch_target","unsupported_patch_operation","patch_preserve_connectivity_failed","patch_output_invalid","duplicate_element_id","duplicate_layer_id","invalid_canvas_binding","invalid_canvas_composition","invalid_canvas_geometry","invalid_polygon","canvas_limit_exceeded","invalid_z_order","unknown_layout_target","unknown_icon","invalid_canvas_icon","icon_dropped","icon_filled"],sE=Object.assign(sw(sI),{options:sI}),sO=sw(["request","diagram","node","edge","group","lane","element","layer","artifact"]),sU=sw(["input","canvas","flowchart","mindmap","quality","render","export","storage"]);class sX extends s.Xsx("CodeModeIssueRef")({kind:sO,id:sf(sC),path:sf(sC)},{identifier:void 0}){}class sT extends s.Xsx("CodeModeIssue")({code:sE,severity:sw(["error","warning","info"]),stage:sU,ref:sf(sX),message:sz,hint:sz},{identifier:void 0}){}let s$=sT,sY=["start","process","decision","end"],sG=Object.assign(sw(sY),{options:sY}),sR=["setDefaultStyle","setStyle","setShape","translate","replaceText","rerouteEdges","insert","remove","replace","reorder","group","ungroup"];Object.assign(sw(sR),{options:sR});let sD=sm(sg().check(s.NYj(128,{message:"Too big: expected string to have <=128 characters"})));class sZ extends s.Xsx("NodeIconSpec")({slug:sD},{identifier:void 0}){}class sj extends s.Xsx("FlowchartSpecNode")({id:sz,label:sz,kind:sG,description:sf(sC),icon:sf(sZ),group:sf(sC),lane:sf(sC),shape:sf(sw(B))},{identifier:void 0}){}class sN extends s.Xsx("FlowchartSpecLane")({id:sz,label:sz},{identifier:void 0}){}class sW extends s.Xsx("FlowchartSpecGroup")({id:sz,label:sz,parent:sf(sC),kind:sf(sw(C))},{identifier:void 0}){}class sJ extends s.Xsx("FlowchartSpecEdge")({id:sf(sC),source:sz,target:sz,label:sf(sC)},{identifier:void 0}){}let sK=sw(["TB","LR"]),sQ=sK.annotate({default:"TB"}).pipe(s.E$i(o.PyW("TB")));class s1 extends s.Xsx("FlowchartSpecLayout")({direction:sQ},{identifier:void 0}){}let s0=y.accentColor,s2=sS(s0).pipe(s.E$i(o.PyW(s0))),s3=y.backgroundColor,s5=sS(s3).pipe(s.E$i(o.PyW(s3)));class s4 extends s.Xsx("FlowchartSpecStyle")({accentColor:s2,backgroundColor:s5},{identifier:void 0}){}let s6=[],s7=s.O31(sJ).pipe(s.fXn).annotate({default:s6}).pipe(s.E$i(o.PyW(s6))),s8={direction:"TB"},s9=s1.annotate({default:s8}).pipe(s.E$i(o.PyW(s8)),s.usV({[sr]:s8})),le={accentColor:y.accentColor,backgroundColor:y.backgroundColor},lt=s4.annotate({default:le}).pipe(s.E$i(o.PyW(le)),s.usV({[sr]:le}));class la extends s.Xsx("FlowchartSpec")({id:sf(sC),title:sz,nodes:sy(su(sj)),edges:s7,groups:sf(s.O31(sW).pipe(s.fXn)),lanes:sf(s.O31(sN).pipe(s.fXn)),layout:s9,style:lt},{identifier:void 0}){}class li extends s.Xsx("SequenceParticipantSpec")({id:sz,label:sz,kind:sf(sC),icon:sf(sZ)},{identifier:void 0}){}class ls extends s.Xsx("SequenceMessageSpec")({id:sf(sC),source:sz,target:sz,label:sz,type:sf(sw(eF)),style:sf(sw(eI))},{identifier:void 0}){}let ll=[],lo=s.O31(ls).pipe(s.fXn).annotate({default:ll}).pipe(s.E$i(o.PyW(ll)));class lr extends s.Xsx("SequenceDiagramSpec")({id:sf(sC),title:sz,participants:sy(su(li)),messages:lo,style:lt},{identifier:void 0}){}class ln extends s.Xsx("TimelineEventSpec")({id:sz,label:sz,date:sf(sC),end:sf(sC),order:sf(s_),kind:sf(sw(Q)),lane:sf(sC),description:sf(sC)},{identifier:void 0}){}class ld extends s.Xsx("TimelineSpec")({id:sf(sC),title:sz,events:sy(su(ln)),lanes:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:lt},{identifier:void 0}){}class lc extends s.Xsx("ChartSeriesSpec")({name:sf(sC),values:sy(s.O31(s_).pipe(s.fXn))},{identifier:void 0}){}class lp extends s.Xsx("ChartSpec")({id:sf(sC),title:sz,kind:sw($),categories:sy(su(sC)),series:sy(su(lc)),unit:sf(sC),categoryAxisTitle:sf(sC),valueAxisTitle:sf(sC),stacked:sf(s.v8c),donut:sf(s.v8c),orientation:sf(sw(Y)),style:lt},{identifier:void 0}){}class lh extends s.Xsx("StateMachineStateSpec")({id:sz,label:sf(sC),kind:sf(sw(eW)),parent:sf(sC),initial:sf(sC)},{identifier:void 0}){}class lg extends s.Xsx("StateMachineTransitionSpec")({id:sf(sC),source:sz,target:sz,event:sf(sC),guard:sf(sC),action:sf(sC)},{identifier:void 0}){}class lu extends s.Xsx("StateMachineSpecLayout")({direction:sw(eJ)},{identifier:void 0}){}let lf=[],lm=s.O31(lg).pipe(s.fXn).annotate({default:lf}).pipe(s.E$i(o.PyW(lf)));class lv extends s.Xsx("StateMachineSpec")({id:sf(sC),title:sz,initial:sz,states:sy(su(lh)),transitions:lm,layout:sf(lu),style:lt},{identifier:void 0}){}class ly extends s.Xsx("GanttTaskSpec")({id:sz,label:sz,start:sz,end:sf(sC),duration:sf(s_),milestone:sf(s.v8c),phase:sf(sC),dependsOn:sf(s.O31(sC).pipe(s.fXn)),progress:sf(s_)},{identifier:void 0}){}class lw extends s.Xsx("GanttSpec")({id:sf(sC),title:sz,tasks:sy(su(ly)),phases:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:lt},{identifier:void 0}){}class lx extends s.Xsx("ErFieldSpec")({name:sz,type:sf(sC),pk:sf(s.v8c),fk:sf(s.v8c),unique:sf(s.v8c),nullable:sf(s.v8c)},{identifier:void 0}){}let lb=[];class lk extends s.Xsx("ErEntitySpec")({id:sz,name:sf(sC),fields:s.O31(s.gPz([sC,lx])).pipe(s.fXn).annotate({default:lb}).pipe(s.E$i(o.PyW(lb)))},{identifier:void 0}){}class lM extends s.Xsx("ErRelationshipSpec")({id:sf(sC),from:sz,to:sz,fromCardinality:sw(ty),toCardinality:sw(ty),label:sf(sC)},{identifier:void 0}){}let lC=[],lz=s.O31(lM).pipe(s.fXn).annotate({default:lC}).pipe(s.E$i(o.PyW(lC)));class l_ extends s.Xsx("ErSpec")({id:sf(sC),title:sz,entities:sy(su(lk)),relationships:lz,style:lt},{identifier:void 0}){}class lL extends s.Xsx("ClassAttributeSpec")({name:sz,type:sf(sC),visibility:sf(sw(tU)),static:sf(s.v8c)},{identifier:void 0}){}class lB extends s.Xsx("ClassParameterSpec")({name:sz,type:sf(sC)},{identifier:void 0}){}let lS=[];class lA extends s.Xsx("ClassMethodSpec")({name:sz,params:s.O31(s.gPz([sC,lB])).pipe(s.fXn).annotate({default:lS}).pipe(s.E$i(o.PyW(lS))),returns:sf(sC),visibility:sf(sw(tU)),static:sf(s.v8c),abstract:sf(s.v8c)},{identifier:void 0}){}let lP=[],lV=[];class lH extends s.Xsx("ClassNodeSpec")({id:sz,name:sf(sC),kind:sf(sw(tE)),stereotype:sf(sC),attributes:s.O31(s.gPz([sC,lL])).pipe(s.fXn).annotate({default:lP}).pipe(s.E$i(o.PyW(lP))),methods:s.O31(s.gPz([sC,lA])).pipe(s.fXn).annotate({default:lV}).pipe(s.E$i(o.PyW(lV)))},{identifier:void 0}){}class lq extends s.Xsx("ClassRelationshipSpec")({id:sf(sC),kind:sw(t$),from:sz,to:sz,fromMultiplicity:sf(sC),toMultiplicity:sf(sC),fromRole:sf(sC),toRole:sf(sC),navigable:sf(s.v8c),label:sf(sC)},{identifier:void 0}){}let lF=[],lI=s.O31(lq).pipe(s.fXn).annotate({default:lF}).pipe(s.E$i(o.PyW(lF)));class lE extends s.Xsx("ClassSpec")({id:sf(sC),title:sz,classes:sy(su(lH)),relationships:lI,style:lt},{identifier:void 0}){}class lO extends s.Xsx("OrgPersonSpec")({id:sz,name:sz,title:sf(sC),department:sf(sC),manager:sf(sC),assistant:sf(s.v8c),avatar:sf(s.v8c)},{identifier:void 0}){}class lU extends s.Xsx("OrgDottedLineSpec")({id:sf(sC),report:sz,manager:sz,label:sf(sC)},{identifier:void 0}){}let lX=[],lT=s.O31(lU).pipe(s.fXn).annotate({default:lX}).pipe(s.E$i(o.PyW(lX)));class l$ extends s.Xsx("OrgChartSpec")({id:sf(sC),title:sz,people:sy(su(lO)),dottedLines:lT,groupByDepartment:sf(s.v8c),forest:sf(s.v8c),style:lt},{identifier:void 0}){}let lY=sf(su(sH)),lG=sf(s.O31(sq).pipe(s.fXn)),lR=sf(s.wNn.check(s.MIs(),s.OWK(0,{message:"Too small: expected number to be >=0"}),s.biW(10,{message:"Too big: expected number to be <=10"})));class lD extends s.Xsx("BuildFlowchartOptions")({artifactFormats:lY,inlineArtifacts:lG,minQualityScore:lR},{identifier:void 0}){}sf(lD);class lZ extends s.Xsx("BuildFlowchartRequest")({requestId:sf(sC),spec:sv(la),options:sf(lD)},{identifier:void 0}){}let lj=la.mapFields(({id:e,title:t,nodes:a,edges:i,groups:s,lanes:l,layout:o})=>({id:e,title:t,nodes:a,edges:i,groups:s,lanes:l,layout:o})),lN=s._kM({requestId:sf(sC),spec:sv(lj)}),lW=s.rcy(lN,{leafHook:si,parseOptions:{errors:"all"}}),lJ=Object.assign(lW,{"~standard":{...lW["~standard"],jsonSchema:{input:()=>sh(lN),output:()=>sh(lN)}}}),lK=Object.assign(lZ,{omit:e=>lJ});class lQ extends s.Xsx("BuildSequenceDiagramRequest")({requestId:sf(sC),spec:sv(lr),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(lr.mapFields(({id:e,title:t,participants:a,messages:i})=>({id:e,title:t,participants:a,messages:i})))});class l1 extends s.Xsx("BuildTimelineRequest")({requestId:sf(sC),spec:sv(ld),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(ld.mapFields(({id:e,title:t,events:a,lanes:i,today:s})=>({id:e,title:t,events:a,lanes:i,today:s})))});class l0 extends s.Xsx("BuildChartRequest")({requestId:sf(sC),spec:sv(lp),options:sf(lD)},{identifier:void 0}){}let l2=lp.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l2)});class l3 extends s.Xsx("BuildStateMachineRequest")({requestId:sf(sC),spec:sv(lv),options:sf(lD)},{identifier:void 0}){}s._kM({requestId:sf(sC),spec:sv(lv.mapFields(({id:e,title:t,initial:a,states:i,transitions:s,layout:l})=>({id:e,title:t,initial:a,states:i,transitions:s,layout:l})))});class l5 extends s.Xsx("BuildGanttRequest")({requestId:sf(sC),spec:sv(lw),options:sf(lD)},{identifier:void 0}){}let l4=lw.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l4)});class l6 extends s.Xsx("BuildErDiagramRequest")({requestId:sf(sC),spec:sv(l_),options:sf(lD)},{identifier:void 0}){}let l7=l_.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l7)});class l8 extends s.Xsx("BuildClassDiagramRequest")({requestId:sf(sC),spec:sv(lE),options:sf(lD)},{identifier:void 0}){}let l9=lE.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(l9)});class oe extends s.Xsx("BuildOrgChartRequest")({requestId:sf(sC),spec:sv(l$),options:sf(lD)},{identifier:void 0}){}let ot=l$.mapFields(({style:e,...t})=>t);s._kM({requestId:sf(sC),spec:sv(ot)});let oa=s.QfV.check(s.tJb(1,{message:"Too small: expected string to have >=1 characters"}),s.HNH(function(e){let t=se(e);return t.length>0&&!/^(?:""|''|``)$/.test(t)},{message:"Must contain semantic text after normalization."})),oi=sv(s.DYE(()=>os).annotate({identifier:"__schema0"})),os=s._kM({label:sm(oa),children:s.Qrq(s.O31(oi).pipe(s.fXn))});class ol extends s.Xsx("MindmapSpecLayout")({direction:sw(["LR","RL"]).annotate({default:"LR"}).pipe(s.E$i(o.PyW("LR")))},{identifier:void 0}){}let oo={direction:"LR"},or=ol.annotate({default:oo}).pipe(s.E$i(o.PyW(oo)),s.usV({[sr]:oo})),on=s._kM({id:sf(sC),title:sm(oa),root:oi,layout:or,style:lt});class od extends s.Xsx("MindmapSpec")(on,{identifier:void 0}){}let oc=s._kM({requestId:sf(sC),spec:sv(on),options:sf(lD)});s.Xsx("BuildMindmapRequest")(oc,{identifier:void 0});class op extends s.Xsx("ScenePoint")({x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3)},{identifier:void 0}){}let oh={frameId:sf(sC).pipe(s.Wa3),groupIds:sf(s.O31(sC).pipe(s.fXn).annotate({maxItems:a$.maxGroupsPerElement})).pipe(s.Wa3),layerId:sf(sC).pipe(s.Wa3),locked:sf(s.v8c).pipe(s.Wa3),opacity:sf(s.wNn.check(s.MIs(),s.Bt9({minimum:0,maximum:100}))).pipe(s.Wa3),zIndex:sf(s.Aiz).pipe(s.Wa3)},og={fillColor:sf(sA).pipe(s.Wa3),fillStyle:sf(sw(["cross-hatch","hachure","solid"])).pipe(s.Wa3),roughness:sf(sw([0,1,2])).pipe(s.Wa3),strokeColor:sf(sA).pipe(s.Wa3),strokeStyle:sf(sw(["dashed","dotted","solid"])).pipe(s.Wa3),strokeWidth:sf(sw([1,2,4])).pipe(s.Wa3)},ou=s.T9y(sw(["arrow","bar","circle","diamond","triangle","crowfoot_one","crowfoot_many","crowfoot_one_or_many","triangle_outline","diamond_outline"])),of=s.O31(op).pipe(s.fXn).check(s.tJb(2,{message:"Too small: expected array to have >=2 items"}),s.NYj(a$.maxPointsPerElement,{message:`Too big: expected array to have <=${a$.maxPointsPerElement} items`}));class om extends s.Xsx("CanvasNodeIcon")({slug:sD.pipe(s.Wa3),size:s.wNn.check(s.MIs(),s.Bt9({minimum:aY.minSize,maximum:aY.maxSize},{message:`Expected a number between ${aY.minSize} and ${aY.maxSize}`})).pipe(s.Wa3)},{identifier:void 0}){}class ov extends s.Xsx("CanvasIconAsset")({name:s.QfV,svg:s.QfV},{identifier:void 0}){}class oy extends s.Xsx("NodeSceneElement")({...oh,...og,type:sx("node"),id:sz,nodeId:sz,kind:sf(sC),icon:sf(om).pipe(s.Wa3),rendererRole:sf(sw(a1)),shape:sw(["rectangle","ellipse","diamond","circle","polygon",...aG]).pipe(s.Wa3),points:sf(of).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3),label:sz.pipe(s.Wa3)},{identifier:void 0}){}class ow extends s.Xsx("TextSceneElement")({...oh,type:sx("text"),id:sz,containerId:sf(sC),textColor:sf(sA).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),text:sz.pipe(s.Wa3),fontSize:sL,fontFamily:sf(sw(["hand","mono","sans"])),lineHeight:sf(sL),maxWidth:sf(sL),textAlign:sf(sw(["center","left","right"])),verticalAlign:sf(sw(["bottom","middle","top"]))},{identifier:void 0}){}class ox extends s.Xsx("ArrowSceneElement")({...oh,...og,type:sx("arrow"),id:sz,edgeId:sz,sourceNodeId:sz,targetNodeId:sz.pipe(s.Wa3),startArrowhead:sf(ou).pipe(s.Wa3),endArrowhead:sf(ou).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3),points:sy(of).pipe(s.Wa3),curved:sf(s.v8c).pipe(s.Wa3),label:sf(sC).pipe(s.Wa3)},{identifier:void 0}){}class ob extends s.Xsx("CanvasLineBinding")({elementId:sz,focus:sf(s_),gap:sf(s_)},{identifier:void 0}){}class ok extends s.Xsx("LineSceneElement")({...oh,...og,type:sx("line"),id:sz,points:sy(of).pipe(s.Wa3),startBinding:sf(ob).pipe(s.Wa3),endBinding:sf(ob).pipe(s.Wa3),startArrowhead:sf(ou).pipe(s.Wa3),endArrowhead:sf(ou).pipe(s.Wa3),label:sf(sC).pipe(s.Wa3),textColor:sf(sA).pipe(s.Wa3)},{identifier:void 0}){}class oM extends s.Xsx("FrameSceneElement")({...oh,...og,type:sx("frame"),id:sz,nodeId:sf(sC),name:sf(sC).pipe(s.Wa3),x:s_.pipe(s.Wa3),y:s_.pipe(s.Wa3),width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3)},{identifier:void 0}){}class oC extends s.Xsx("CanvasLayer")({id:sz,name:sf(sC),locked:sf(s.v8c),visible:sf(s.v8c)},{identifier:void 0}){}let oz=sy(su(sC));class o_ extends s.Xsx("CanvasFlowLayout")({type:sw(["row","column","stack"]),ids:oz,x:sf(s_),y:sf(s_),gap:sf(s_)},{identifier:void 0}){}class oL extends s.Xsx("CanvasGridLayout")({type:sx("grid"),ids:oz,columns:s.Aiz.check(s.OWK(1,{message:"Too small: expected number to be >=1"})),x:sf(s_),y:sf(s_),columnGap:sf(s_),rowGap:sf(s_)},{identifier:void 0}){}class oB extends s.Xsx("CanvasAlignLayout")({type:sx("align"),ids:oz,axis:sw(["x","y"]),alignment:sw(["center","end","start"])},{identifier:void 0}){}class oS extends s.Xsx("CanvasDistributeLayout")({type:sx("distribute"),ids:oz,axis:sw(["x","y"]),gap:sf(s_)},{identifier:void 0}){}let oA=s.gPz([oy,ow,ox,ok,oM],{mode:"oneOf"}).annotate({[sn]:!0}),oP=s.gPz([o_,oL,oB,oS],{mode:"oneOf"}),oV=s.O31(oC).pipe(s.fXn).annotate({default:[],maxItems:a$.maxLayers}).pipe(s.E$i(o.PyW([]))),oH=s.O31(oP).pipe(s.fXn).annotate({default:[],maxItems:a$.maxLayouts}).pipe(s.E$i(o.PyW([]))),oq=s.O31(sC).pipe(s.fXn).annotate({default:[],maxItems:a$.maxZOrderEntries}).pipe(s.E$i(o.PyW([])));class oF extends s.Xsx("CanvasSpec")({kind:sx("canvas"),version:sb(1),diagramId:sz,title:sz,width:sL.pipe(s.Wa3),height:sL.pipe(s.Wa3),accentColor:sA.pipe(s.Wa3),backgroundColor:sA.pipe(s.Wa3),elements:sy(s.O31(oA).pipe(s.fXn).annotate({maxItems:a$.maxElements})),icons:sf(s.mSG(s.QfV,ov)).pipe(s.Wa3),layers:oV,layouts:oH,zOrder:oq},{identifier:void 0}){}let oI=oF;class oE extends s.Xsx("CreateCanvasRequest")({requestId:sf(sC),spec:sv(oF),options:sf(lD)},{identifier:void 0}){}let oO=s.mSG(s.QfV,s.$r1).check(s.HNH(e=>"string"==typeof e.id&&e.id.length>0&&"string"==typeof e.type&&e.type.length>0,{message:"Invalid input"}));class oU extends s.Xsx("ExcalidrawScene")({appState:s.mSG(s.QfV,s.$r1),elements:s.O31(oO).pipe(s.fXn)},{identifier:void 0}){}class oX extends oU.extend("ExcalidrawFile")({files:s.mSG(s.QfV,s.$r1),source:sz,type:sx("excalidraw"),version:sb(2)},{identifier:void 0}){}let oT=oX;class o$ extends s.Xsx("GetArtifactRequest")({artifactId:sz,format:sf(sH),inline:sf(s.v8c)},{identifier:void 0}){}class oY extends s.Xsx("DiagramSelector")({ids:sf(s.O31(sC).pipe(s.fXn)),nodeIds:sf(s.O31(sC).pipe(s.fXn)),edgeIds:sf(s.O31(sC).pipe(s.fXn)),kinds:sf(s.O31(sG).pipe(s.fXn)),labels:sf(s.O31(sC).pipe(s.fXn)),scope:sf(sw(["all","nodes","edges"]))},{identifier:void 0}){}class oG extends s.Xsx("DiagramStylePatch")({strokeColor:sf(sA),fillColor:sf(sA),textColor:sf(sA),backgroundColor:sf(sA)},{identifier:void 0}){}let oR=["rectangle","diamond","ellipse","circle","polygon"],oD=Object.assign(sw(oR),{options:oR});class oZ extends s.Xsx("SetDefaultStyleOperation")({op:sx("setDefaultStyle"),style:sv(oG)},{identifier:void 0}){}class oj extends s.Xsx("SetStyleOperation")({op:sx("setStyle"),selector:sv(oY),style:sv(oG)},{identifier:void 0}){}class oN extends s.Xsx("SetShapeOperation")({op:sx("setShape"),selector:sv(oY),shape:oD},{identifier:void 0}){}class oW extends s.Xsx("TranslateOperation")({op:sx("translate"),selector:sv(oY),dx:s_,dy:s_},{identifier:void 0}){}class oJ extends s.Xsx("ReplaceTextOperation")({op:sx("replaceText"),selector:sv(oY),text:sz},{identifier:void 0}){}class oK extends s.Xsx("RerouteEdgesOperation")({op:sx("rerouteEdges"),selector:sf(oY)},{identifier:void 0}){}let oQ=sy(su(sC));class o1 extends s.Xsx("InsertElementsOperation")({op:sx("insert"),elements:sy(su(oA)),beforeId:sf(sC),afterId:sf(sC)},{identifier:void 0}){}class o0 extends s.Xsx("RemoveElementsOperation")({op:sx("remove"),selector:sv(oY)},{identifier:void 0}){}class o2 extends s.Xsx("ReplaceElementOperation")({op:sx("replace"),id:sz,element:sv(oA)},{identifier:void 0}){}class o3 extends s.Xsx("ReorderElementsOperation")({op:sx("reorder"),ids:oQ,beforeId:sf(sC),afterId:sf(sC)},{identifier:void 0}){}class o5 extends s.Xsx("GroupElementsOperation")({op:sx("group"),ids:oQ,groupId:sz},{identifier:void 0}){}class o4 extends s.Xsx("UngroupElementsOperation")({op:sx("ungroup"),ids:oQ,groupId:sf(sC)},{identifier:void 0}){}let o6=s.gPz([oZ,oj,oN,oW,oJ,oK,o1,o0,o2,o3,o5,o4],{mode:"oneOf"}).annotate({[sn]:!0,[sd]:"op",message:`Invalid discriminator value. Expected ${sR.map(e=>`'${e}'`).join(" | ")}`});class o7 extends s.Xsx("ArtifactPatchSource")({artifactId:sz,format:sf(sx("scene"))},{identifier:void 0}){}class o8 extends s.Xsx("InlineScenePatchSource")({scene:sv(oF)},{identifier:void 0}){}let o9=s.gPz([o7,o8]).annotate({message:"Invalid input"});class re extends s.Xsx("ApplyDiagramPatchOptions")({artifactFormats:lY,inlineArtifacts:lG,preserveConnectivity:sf(s.v8c)},{identifier:void 0}){}sf(re);class rt extends s.Xsx("ApplyDiagramPatchRequest")({requestId:sf(sC),source:o9.annotateKey({messageMissingKey:"Invalid input"}),operations:sy(su(o6)),options:sf(re),intent:sf(sC)},{identifier:void 0}){}class ra extends s.Xsx("NormalizedMindmapTopic")({id:sC,label:sC,children:s.O31(s.DYE(()=>ra)).pipe(s.fXn)},{identifier:void 0}){}let ri=s._kM({id:sC,title:sC,nodes:s.O31(sj).pipe(s.fXn),edges:s.O31(sJ.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),groups:s.Qrq(s.O31(sW).pipe(s.fXn)),lanes:s.Qrq(s.O31(sN).pipe(s.fXn)),layout:s._kM({direction:sK}),style:s._kM({accentColor:sA,backgroundColor:sA})}),rs=s._kM({id:sC,title:sC,root:ra,layout:s._kM({direction:sw(["LR","RL"])}),style:s._kM({accentColor:sA,backgroundColor:sA})}),rl=s._kM({id:sC,title:sC,participants:s.O31(li).pipe(s.fXn),messages:s.O31(ls.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),ro=s._kM({id:sC,title:sC,events:s.O31(ln).pipe(s.fXn),lanes:sf(s.O31(sC).pipe(s.fXn)),today:sf(sC),style:s._kM({accentColor:sA,backgroundColor:sA})}),rr=s._kM({id:sC,title:sC,initial:sC,states:s.O31(lh).pipe(s.fXn),transitions:s.O31(lg.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),layout:sf(lu),style:s._kM({accentColor:sA,backgroundColor:sA})}),rn=lw.mapFields(e=>({...e,id:sC,title:sC,style:s._kM({accentColor:sA,backgroundColor:sA})})),rd=s._kM({id:sC,title:sC,entities:s.O31(s._kM({id:sC,name:sf(sC),fields:s.O31(lx).pipe(s.fXn)})).pipe(s.fXn),relationships:s.O31(lM.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),rc=s._kM({id:sC,title:sC,classes:s.O31(s._kM({id:sC,name:sf(sC),kind:sf(sw(tE)),stereotype:sf(sC),attributes:s.O31(lL).pipe(s.fXn),methods:s.O31(lA.mapFields(e=>({...e,params:s.O31(lB).pipe(s.fXn)}))).pipe(s.fXn)})).pipe(s.fXn),relationships:s.O31(lq.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),style:s._kM({accentColor:sA,backgroundColor:sA})}),rp=s._kM({id:sC,title:sC,people:s.O31(lO).pipe(s.fXn),dottedLines:s.O31(lU.mapFields(e=>({...e,id:sC}))).pipe(s.fXn),groupByDepartment:sf(s.v8c),forest:sf(s.v8c),style:s._kM({accentColor:sA,backgroundColor:sA})}),rh=lp.mapFields(e=>({...e,id:sC,title:sC,style:s._kM({accentColor:sA,backgroundColor:sA})})),rg=s._kM({code:s.QfV,passed:s.v8c,severity:sw(["error","warning"]),message:s.QfV,refs:s.O31(sX).pipe(s.fXn)}),ru=s._kM({accepted:s.v8c,score:s.wNn,threshold:s.wNn,summary:s._kM({nodeCount:s.wNn,edgeCount:s.wNn}),checks:s.O31(rg).pipe(s.fXn)}),rf=s._kM({format:sH,mimeType:s.QfV,url:sf(s.QfV),expiresAt:sf(s.QfV),inline:sf(s.$r1),sizeBytes:sf(s.wNn)}),rm=s._kM({artifactId:s.QfV,diagramId:s.QfV,formats:s.O31(rf).pipe(s.fXn),provenance:sf(sF)}),rv=s._kM({artifactId:sf(s.QfV),diagramId:sf(s.QfV),formats:sf(s.O31(rf).pipe(s.fXn))});class ry extends s.Xsx("BuildFlowchartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:ri,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rw extends s.Xsx("BuildFlowchartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_flowchart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(ri),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([ry,rw]);class rx extends s.Xsx("BuildMindmapAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rs,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rb extends s.Xsx("BuildMindmapRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_mindmap","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rs),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rx,rb]);class rk extends s.Xsx("BuildSequenceDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rl,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rM extends s.Xsx("BuildSequenceDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_sequence","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rl),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rk,rM]);class rC extends s.Xsx("BuildTimelineAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:ro,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rz extends s.Xsx("BuildTimelineRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_timeline","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(ro),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rC,rz]);class r_ extends s.Xsx("BuildChartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rh,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rL extends s.Xsx("BuildChartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_chart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rh),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([r_,rL]);class rB extends s.Xsx("BuildStateMachineAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rr,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rS extends s.Xsx("BuildStateMachineRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_state_machine","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rr),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rB,rS]);class rA extends s.Xsx("BuildGanttAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rn,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rP extends s.Xsx("BuildGanttRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_gantt","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rn),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rA,rP]);class rV extends s.Xsx("BuildErDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rd,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rH extends s.Xsx("BuildErDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_er_diagram","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rd),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rV,rH]);class rq extends s.Xsx("BuildClassDiagramAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rc,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rF extends s.Xsx("BuildClassDiagramRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_class_diagram","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rc),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rq,rF]);class rI extends s.Xsx("BuildOrgChartAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:rp,quality:ru,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rE extends s.Xsx("BuildOrgChartRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_org_chart","quality_failed","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(rp),quality:sf(ru),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rI,rE]);class rO extends s.Xsx("GetArtifactAccepted")({ok:sk(!0),artifactId:s.QfV,diagramId:s.QfV,format:sH,mimeType:s.QfV,url:sf(s.QfV),expiresAt:sf(s.QfV),inline:sf(s.$r1),sizeBytes:sf(s.wNn),provenance:sf(sF)},{identifier:void 0}){}class rU extends s.Xsx("GetArtifactRejected")({ok:sk(!1),status:sw(["invalid_input","not_found","format_unavailable","expired","storage_failed"]),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rO,rU]);class rX extends s.Xsx("ApplyDiagramPatchAccepted")({ok:sk(!0),status:sx("accepted"),patchId:s.QfV,requestId:sf(s.QfV),sourceArtifactId:sf(s.QfV),artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rT extends s.Xsx("ApplyDiagramPatchRejected")({ok:sk(!1),status:sw(["invalid_input","source_unavailable","target_not_found","unsupported_operation","connectivity_changed","render_failed","export_failed","storage_failed"]),patchId:sf(s.QfV),requestId:sf(s.QfV),sourceArtifactId:sf(s.QfV),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rX,rT]);class r$ extends s.Xsx("CreateCanvasAccepted")({ok:sk(!0),status:sx("accepted"),buildId:s.QfV,requestId:sf(s.QfV),normalizedSpec:oF,artifact:rm,issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rY extends s.Xsx("CreateCanvasRejected")({ok:sk(!1),status:sw(["invalid_input","invalid_canvas","limit_exceeded","render_failed","export_failed","storage_failed"]),buildId:sf(s.QfV),requestId:sf(s.QfV),normalizedSpec:sf(oF),partial:sf(rv),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}let rG=s.gPz([r$,rY]),rR=120,rD=1,rZ=25;class rj extends s.Xsx("SearchIconsRequest")({q:sm(sg().check(s.NYj(rR,{message:`Too big: expected string to have <=${rR} characters`}))),limit:sf(s.Aiz.check(s.Bt9({minimum:rD,maximum:rZ},{message:`Expected an integer between ${rD} and ${rZ}`})))},{identifier:void 0}){}class rN extends s.Xsx("SearchIconsMatch")({slug:s.QfV,name:s.QfV,collection:s.QfV,match:sw(["exact","vendor","weak"])},{identifier:void 0}){}class rW extends s.Xsx("SearchIconsAccepted")({ok:sk(!0),status:sx("accepted"),query:s.QfV,icons:s.O31(rN).pipe(s.fXn),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}class rJ extends s.Xsx("SearchIconsRejected")({ok:sk(!1),status:sw(["invalid_input"]),issues:s.O31(sT).pipe(s.fXn)},{identifier:void 0}){}s.gPz([rW,rJ]);let rK=s.xCb(["read","readManifest","write"]);class rQ extends s.rNF()("CodeModeArtifactStorageError",{cause:s.kld(),message:s.QfV,operation:rK}){}class r1 extends l.kl()("@sketchi/diagram-agent/CodeModeArtifactStorage"){}let r0={excalidraw:"application/vnd.excalidraw+json",png:"image/png",scene:"application/vnd.sketchi.scene+json"};function r2(e){return"excalidraw"===e||"scene"===e}function r3(e){return{format:e.format,mimeType:e.mimeType,sizeBytes:e.sizeBytes}}function r5(e){return new TextEncoder().encode(JSON.stringify(e)).length}let r4=n.QZ(r1)(o.Q56(o.OH5(function(){let e=new Map,t=new Map;return{close:o.OH5(()=>{t.clear(),e.clear()}),storage:{read:o.fn("codeMode.artifacts.memory.read")(function*(e,a){return yield*o.OH5(()=>{let i=t.get(`${e}:${a}`);return i?{...i,data:structuredClone(i.data)}:null})}),readManifest:o.fn("codeMode.artifacts.memory.readManifest")(function*(t){return yield*o.OH5(()=>{let a=e.get(t);return a?structuredClone(a):null})}),write:o.fn("codeMode.artifacts.memory.write")(function*(a){var i;let s=yield*r.Ru;return yield*o.SvU({try:()=>{var i;let l=a.formats.map(r3),o=a.provenance?structuredClone(a.provenance):void 0,r={artifactId:a.artifactId,diagramId:a.diagramId,formats:l,...o?{provenance:o}:{},createdAt:new Date(s).toISOString()};for(let i of(e.set(a.artifactId,r),a.formats))t.set(`${a.artifactId}:${i.format}`,{...i,data:structuredClone(i.data)});let n=a.formats.map(e=>{var t;return t=a.inlineFormats,{format:e.format,mimeType:e.mimeType,...r2(e.format)&&t.includes(e.format)?{inline:e.data}:{},sizeBytes:e.sizeBytes}});return{artifactId:(i={artifactId:a.artifactId,diagramId:a.diagramId,formats:n,...a.provenance?{provenance:structuredClone(a.provenance)}:{}}).artifactId,diagramId:i.diagramId,formats:i.formats,...i.provenance?{provenance:i.provenance}:{}}},catch:(i="write",e=>{var t;return rQ.make({cause:e,message:(t="Artifact storage failed.",e instanceof Error?e.message:t),operation:i})})})})}}}),e=>e.close).pipe(o.TjK(e=>e.storage)));function r6(e,t="storage_write_failed"){return{code:t,severity:"error",stage:"storage",message:e,hint:"Retry the request; if it keeps failing, inspect the artifact store binding."}}let r7="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",r8=r7.slice(10),r9=new Map;function ne(e){let t=r9.get(e);if(void 0===t){t=new Uint8Array(256);for(let a=0;a<e.length;a++)t[e.charCodeAt(a)]=a;r9.set(e,t)}return t}function nt(e,t,a,i){let s=a[0];if(null!=t&&e>=t)throw Error(e+" >= "+t);if(e.slice(-1)===s||t&&t.slice(-1)===s)throw Error("trailing zero");if(t){let l=0;for(;(e[l]||s)===t[l];)l++;if(l>0)return t.slice(0,l)+nt(e.slice(l),t.slice(l),a,i)}let l=e?i[e.charCodeAt(0)]:0,o=null!=t?i[t.charCodeAt(0)]:a.length;return o-l>1?a[Math.round(.5*(l+o))]:t&&t.length>1?t.slice(0,1):a[l]+nt(e.slice(1),null,a,i)}function na(e,t,a){if(e.length!==ni(e[0],t,a))throw Error("invalid integer part of order key: "+e)}function ni(e,t,a){let i=a[e.charCodeAt(0)];if(t[i]===e){let e=t.length/2;return i<e?e-i+1:i-e+2}throw Error("invalid order key head: "+e)}function ns(e,t,a){let i=ni(e[0],t,a);if(i>e.length)throw Error("invalid order key: "+e);return e.slice(0,i)}function nl(e,t,a,i){if(nn(e,t,a))throw Error("invalid order key: "+e);let s=ns(e,a,i);if(e.slice(s.length).slice(-1)===t[0])throw Error("invalid order key: "+e)}function no(e,t,a,i,s){na(e,i,s);let l=e[0],o=t[0],r="";for(let i=e.length-1;i>=1;i--){let s=a[e.charCodeAt(i)]+1;if(s!==t.length)return l+e.slice(1,i)+t[s]+r;r=o+r}let n=s[l.charCodeAt(0)];if(n===i.length-1)return null;let d=i[n+1],c=ni(d,i,s)-ni(l,i,s);return d+(c>0?r+o:c<0?r.slice(1):r)}let nr=new Map;function nn(e,t,a){let i=nr.get(a);void 0===i&&(i=new Map,nr.set(a,i));let s=t.charCodeAt(0),l=i.get(s);return void 0===l&&(l=a[0]+t[0].repeat(a.length/2),i.set(s,l)),e===l}function nd(e){for(let t=1;t<e.length;t++)if(e.charCodeAt(t-1)>=e.charCodeAt(t))return!1;return!0}function nc(e){for(let t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return!1;return!0}let np=new Set,nh=new Set,ng=new Set(["rectangle","ellipse","diamond"]),nu=v.ink;function nf(e){return"number"==typeof e&&Number.isFinite(e)?e:null}function nm(e){if(!Array.isArray(e)||e.length<2)return null;let t=nf(e[0]),a=nf(e[1]);return null===t||null===a?null:[t,a]}function nv(e){let t=nf(e.x),a=nf(e.y),i=nf(e.width),s=nf(e.height);return null===t||null===a||null===i||null===s?null:{x:t,y:a,width:i,height:s}}function ny(e){return 1e-4>Math.abs(e-.5)?.5001:e}function nw(e,t){let a=nv(e);return a&&0!==a.width&&0!==a.height?[ny((t.x-a.x)/a.width),ny((t.y-a.y)/a.height)]:null}function nx(e,t){return{elementId:e?.id??"",focus:0,gap:0,fixedPoint:e?nw(e,t):null}}function nb(e,t){let a=iM(e,"seed");return{id:e,angle:0,fillStyle:t&&"fillStyle"in t?t.fillStyle??"solid":"solid",frameId:t?.frameId??null,groupIds:[...t?.groupIds??[]],index:null,isDeleted:!1,link:null,locked:t?.locked??!1,opacity:t?.opacity??100,roughness:t&&"roughness"in t?t.roughness??1:1,seed:a,strokeStyle:t&&"strokeStyle"in t?t.strokeStyle??"solid":"solid",strokeWidth:t&&"strokeWidth"in t?t.strokeWidth??2:2,updated:1,version:1,versionNonce:a+1}}function nk(e){var t;let a,i=e.wrap?aT(e.text,e.maxWidth,e.fontSize):e.text,s=e.wrap?aU(i,e.fontSize,e.maxWidth):aO(i,e.fontSize,e.maxWidth),l=e.element?.lineHeight??1.35,o=function(e,t,a=1.35){return Math.ceil(e.split("\n").length*t*a)}(i,e.fontSize,l),r=e.element?.verticalAlign;return{...nb(e.id,e.element),...void 0===e.locked?{}:{locked:e.locked},type:"text",x:e.x-s/2,y:e.container&&("bottom"===r||"top"===r)?(t=e.container,a=t.y+a7(t).y,"top"===r?a:a+a8(t).height-o):e.y-o/2,width:s,height:o,backgroundColor:"transparent",boundElements:null,containerId:e.containerId??null,fontFamily:e.element?.fontFamily==="mono"?3:e.element?.fontFamily==="sans"?2:5,fontSize:e.fontSize,lineHeight:l,originalText:e.text,roundness:null,strokeColor:e.textColor??nu,text:i,textAlign:e.element?.textAlign??"center",verticalAlign:e.element?.verticalAlign??"middle",autoResize:!(e.wrap&&!e.containerId)}}function nM(e){return aR(e.shape)?`${e.id}:shape`:`${e.id}:logo`}function nC(e){return e.points[e.points.length-1]??e.points[0]}function nz(e,t,a){if(!e)return null;let i=t.get(e.elementId);return i?{elementId:e.elementId,focus:e.focus??0,gap:e.gap??0,fixedPoint:nw(i,a)}:null}function n_(e){return"node"===e.type}function nL(e){return"text"===e.type}function nB(e){return"arrow"===e.type}function nS(e){return"line"===e.type}function nA(e){return"frame"===e.type}function nP(e,t){let a=e[t];if(!(a&&"object"==typeof a))return null;let i=a.elementId;return"string"==typeof i?i:null}function nV(e){let t=nf(e.x)??0,a=nf(e.y)??0,i=nP(e,"startBinding"),s=nP(e,"endBinding"),l=Array.isArray(e.points)?e.points.map(nm).filter(e=>null!==e).map(([e,i])=>({x:t+e,y:a+i})):[];return im(l).map(t=>({...t,arrowId:e.id,startBindingId:i,endBindingId:s,startCoordinate:"horizontal"===t.orientation?l[t.segmentIndex].x:l[t.segmentIndex].y,endCoordinate:"horizontal"===t.orientation?l[t.segmentIndex+1].x:l[t.segmentIndex+1].y,route:l}))}function nH(e){if(ng.has(e.type)||"frame"===e.type)return!0;let t=e.customData;return"line"===e.type&&null!==t&&"object"==typeof t&&"polygon"===t.sketchiShape}function nq(e,t,a){return e>=t-.01&&e<=a+.01}function nF(e,t){return .01>=Math.abs(e-t)}let nI=[1,2,5];function nE(e){return Math.max(0,-Math.floor(Math.log10(e)+1e-9))}function nO(e,t){let a=Number(e.toFixed(t));return Object.is(a,-0)?0:a}function nU(e,t,a=5,i=8){let s,l=Math.min(e,t),o=Math.max(e,t);l===o&&(0===l?o=1:l>0?l=0:o=0);let r=Math.floor(Math.log10((o-l)/Math.max(1,a)));for(let e=r-1;e<=r+1;e+=1)for(let t of nI){let r=t*10**e,n=nE(r),d=nO(Math.floor(l/r+1e-9)*r,n),c=nO(Math.ceil(o/r-1e-9)*r,n),p=Math.round((c-d)/r);if(p<1||p>i)continue;let h=Math.abs(p-a),g=s?Math.abs(s.intervals-a):1/0;(h<g||h===g&&s&&r>s.step)&&(s={step:r,min:d,max:c,intervals:p})}if(!s)throw Error(`No tick step covers ${l}..${o}.`);let n=nE(s.step),d=Array.from({length:s.intervals+1},(e,t)=>nO(s.min+t*s.step,n));return{min:s.min,max:s.max,step:s.step,ticks:d,decimals:n}}function nX(e,t,a){let i=t?nO(e.min-e.step,e.decimals):e.min,s=a?nO(e.max+e.step,e.decimals):e.max,l=Math.round((s-i)/e.step);return{...e,min:i,max:s,ticks:Array.from({length:l+1},(t,a)=>nO(i+a*e.step,e.decimals))}}function nT(e,t){let a=Math.min(...e),i=Math.max(...e);if(t||a<=0!=i<=0)return{low:Math.min(0,a),high:Math.max(0,i)};let s=Math.max(Math.abs(a),Math.abs(i));return i-a>s/6?{low:Math.min(0,a),high:Math.max(0,i)}:{low:a,high:i}}let n$=/^[$€£¥₹₩₽₺₪₦฿]+/u,nY=/^(?:[%‰°]|(?:[kKMBT]|bn|MM|x)(?!\p{L}))/u;function nG(e){if(!e)return{prefix:"",suffix:""};let t=n$.exec(e)?.[0]??"",a=e.slice(t.length);return t?{prefix:t,suffix:a}:{prefix:"",suffix:nY.test(a)?a:` ${a}`}}function nR(e){let[t="",a="0"]=Math.abs(e).toString().split("e");return Math.max(0,(t.split(".")[1]?.length??0)-Number(a))}let nD=new Map;function nZ(e,t){let a=nD.get(t);return a||(a=new Intl.NumberFormat("en-US",{minimumFractionDigits:t,maximumFractionDigits:t}),nD.set(t,a)),a.format(e)}let nj=[{size:1e12,letter:"T"},{size:1e9,letter:"B"},{size:1e6,letter:"M"},{size:1e3,letter:"k"}];function nN(e,t,a){return`${t?"-":""}${a.prefix}${e}${a.suffix}`}function nW(e){return!/^(?:[kKMBT]|bn|MM)/u.test(e.suffix)}function nJ(e,t,a=nR(e)){let i=e<0,s=Math.abs(e);if(s>=1e6&&0===a&&nW(t)){let e=nj.find(e=>s>=e.size),a=Number((s/e.size).toPrecision(12));if(Number(a.toPrecision(3))===a)return nN(`${nZ(a,nR(a))}${e.letter}`,i,t)}return s>0&&a>6?nN(s.toExponential(),i,t):nN(nZ(s,a),i,t)}let nK=e=>Math.round(100*e)/100;function nQ(e,t,a,i=2){let s=new Map;for(let l of e){if("line"!==l.type||!a(l.id)||2!==l.points.length)continue;let[e,o]=l.points,r=.01>Math.abs(e.y-o.y);if(!r&&Math.abs(e.x-o.x)>=.01)continue;let n=r?e.y:e.x,d=r?Math.min(e.x,o.x):Math.min(e.y,o.y),c=r?Math.max(e.x,o.x):Math.max(e.y,o.y),p=t.filter(e=>r?e.top-i<n&&n<e.bottom+i:e.left-i<n&&n<e.right+i).map(e=>r?[e.left-i,e.right+i]:[e.top-i,e.bottom+i]).filter(([e,t])=>t>d&&e<c).toSorted((e,t)=>e[0]-t[0]);if(!p.length)continue;let h=[],g=d;for(let[e,t]of p)e>g&&h.push([g,Math.min(e,c)]),g=Math.max(g,t);g<c&&h.push([g,c]),s.set(l.id,h.filter(([e,t])=>t-e>=1).map(([e,t],a)=>({...l,id:0===a?l.id:`${l.id}:${a}`,points:r?[{x:nK(e),y:n},{x:nK(t),y:n}]:[{x:n,y:nK(e)},{x:n,y:nK(t)}]})))}return s}let n1="chart-mark",n0=["#2a78d6","#eb6834","#1baf7a","#eda100","#e87ba4","#008300","#6250d6","#e34948"],n2=v.ink,n3="#4c4639",n5="#e6dfd2",n4="#8c826f",n6=3*Math.PI/180,n7=20*Math.PI/180;function n8(e,t){return{text:e,width:Math.ceil(aE(e,t)),height:Math.ceil(e.split("\n").length*t*1.35)}}function n9(e,t,a){return n8(aT(e,Math.max(1,t),a),a)}function de(e){return Math.round(100*e)/100}function dt(e,t,a=0){return e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a}function da(e,t,a,i){let s=e.map((e,t)=>t).toSorted((t,a)=>e[t].preferred-e[a].preferred),l=Array.from({length:e.length},()=>0),o=t;for(let t of s){let a=e[t],s=Math.max(a.preferred-a.size/2,o);l[t]=s,o=s+a.size+i}let r=a;for(let t of s.toReversed()){let a=e[t],s=Math.min(l[t],r-a.size);l[t]=s,r=s-i}return l}function di(e){let t=t=>{let a=Number.parseInt(e.slice(t,t+2),16)/255;return a<=.03928?a/12.92:((a+.055)/1.055)**2.4};return .2126*t(1)+.7152*t(3)+.0722*t(5)}function ds(e,t){return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}function dl(e){let t=di(e);return ds(t,di(n2))>=ds(t,1)?n2:"#ffffff"}function dr(e,t){let a=[...n0.slice(0,e)];return t&&7===e&&(a[6]=n0[7]),a}class dn{surface;elements=[];layers={back:[],middle:[],front:[]};textBoxes=[];constructor(e){this.surface=e}push(e,t){this.elements.push(e),this.layers[t].push(e.id)}zOrder(){return[...this.layers.back,...this.layers.middle,...this.layers.front]}breakRulesUnderText(e,t=2){let a=nQ(this.elements,this.textBoxes.map(e=>e.box),e,t);if(!a.size)return;let i=this.elements.flatMap(e=>a.get(e.id)??[e]);for(let e of(this.elements.splice(0,this.elements.length,...i),Object.values(this.layers))){let t=e.flatMap(e=>a.get(e)?.map(e=>e.id)??[e]);e.splice(0,e.length,...t)}}text(e,t,a,i,s,l,o="center",r={}){let n={left:a,top:i,right:a+t.width,bottom:i+t.height};return this.push({type:"text",id:e,x:de(a+t.width/2),y:de(i+t.height/2),text:t.text,fontSize:s,maxWidth:t.width,textAlign:o,textColor:l,...r},"front"),this.textBoxes.push({id:e,box:n}),n}line(e,t,a,i,s="back"){this.push({type:"line",id:e,points:[{x:de(t.x),y:de(t.y)},{x:de(a.x),y:de(a.y)}],roughness:0,strokeWidth:1,...i},s)}mark(e,t,a,i,s,l="middle"){this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:n1,shape:t,x:de(a.x),y:de(a.y),width:de(Math.max(a.width,.5)),height:de(Math.max(a.height,.5)),label:i,roughness:0,fillStyle:"solid",strokeWidth:1,...s},l)}polygon(e,t,a,i,s="middle"){let l=t.map(e=>e.x),o=t.map(e=>e.y),r=Math.min(...l),n=Math.min(...o),d=t.map(e=>({x:de(e.x-r),y:de(e.y-n)}));this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:n1,shape:"polygon",points:[d[0],d[1],d[2],...d.slice(3)],x:de(r),y:de(n),width:de(Math.max(Math.max(...l)-r,.5)),height:de(Math.max(Math.max(...o)-n,.5)),label:a,roughness:0,fillStyle:"solid",strokeWidth:1,...i},s)}bounds(){let e=1/0,t=1/0,a=-1/0,i=-1/0,s=(s,l,o,r)=>{e=Math.min(e,s),t=Math.min(t,l),a=Math.max(a,o),i=Math.max(i,r)};for(let e of this.elements)if("line"===e.type||"arrow"===e.type)for(let t of e.points)s(t.x,t.y,t.x,t.y);else if("text"===e.type){let t=e.maxWidth??aE(e.text,e.fontSize),a=e.text.split("\n").length*e.fontSize*1.35;s(e.x-t/2,e.y-a/2,e.x+t/2,e.y+a/2)}else s(e.x,e.y,e.x+e.width,e.y+e.height);return{left:e,top:t,right:a,bottom:i}}}function dd(e,t,a){let i=e.bounds(),s=Math.max(i.right-i.left,320),l=i.top-16;if(a.legend&&t.series.length>1){let o=t.series.map((e,t)=>{let i=n9(e.name??`Series ${t+1}`,200,14),s="line"===a.legend?26:12;return{index:t,text:i,keyWidth:s,width:s+6+i.width}}),r=[[]],n=0;for(let e of o){let t=r.at(-1);t.length&&n+18+e.width>s?(r.push([e]),n=e.width):(n+=18*!!t.length+e.width,t.push(e))}let d=r.map(e=>Math.max(...e.map(e=>e.text.height))),c=l-d.reduce((e,t)=>e+t,0)-(r.length-1)*6;l=c-12,r.forEach((t,s)=>{let l=d[s],o=c+l/2,r=i.left;for(let i of t){let t=a.colors[i.index],s={groupIds:[`chart:legend:${i.index}`]};"line"===a.legend?(e.line(`chart:legend:${i.index}:line`,{x:r,y:o},{x:r+i.keyWidth,y:o},{strokeColor:t,strokeWidth:2,...s},"middle"),dc(e,`chart:key:${i.index}`,i.index,r+i.keyWidth/2,o,t,i.text.text,s)):e.mark(`chart:key:${i.index}`,"rectangle",{x:r,y:o-6,width:12,height:12},i.text.text,{fillColor:t,strokeColor:t,...s}),e.text(`chart:legend:${i.index}:label`,i.text,r+i.keyWidth+6,o-i.text.height/2,14,n2,"left",s),r+=i.width+18}c+=l+6})}let o=1===t.series.length?t.series[0]?.name:void 0,r=e=>e?.toLowerCase().includes(o.toLowerCase())===!0;if(o&&!r(t.title)&&!r(t.valueAxisTitle)){let t=n9(o,Math.max(s,360),14);e.text("chart:subtitle",t,i.left,l-t.height,14,n3,"left"),l-=t.height+6}let n=n9(t.title,Math.max(s,360),20);e.text("chart:title",n,i.left,l-n.height,20,n2,"left")}function dc(e,t,a,i,s,l,o,r={}){let n={strokeColor:e.surface,strokeWidth:1,fillColor:l,...r},d=a%6;if(3===d||5===d)return e.polygon(t,3===d?[{x:i,y:s-6.5},{x:i+6.5,y:s+5.2},{x:i-6.5,y:s+5.2}]:[{x:i-6.5,y:s-5.2},{x:i+6.5,y:s-5.2},{x:i,y:s+6.5}],o,n,"front"),{left:i-6.5,top:s-6.5,right:i+6.5,bottom:s+6.5};let c=2===d?13:1===d?10:11,p={x:i-c/2,y:s-c/2,width:c,height:c};return e.mark(t,1===d?"rectangle":2===d?"diamond":"ellipse",p,o,4===d?{strokeColor:l,strokeWidth:2,fillColor:e.surface,...r}:n,"front"),{left:p.x,top:p.y,right:p.x+c,bottom:p.y+c}}function dp(e,t){return e.series[t]?.name??e.title}function dh(e,t){return{scale:e,labels:e.ticks.map(a=>n8(function(e,t,a){let i=Math.max(Math.abs(t.min),Math.abs(t.max)),s=e<0,l=Math.abs(e);if(0===l)return nN("0",!1,nW(a)?a:{...a,suffix:""});if(i>=1e4&&nW(a)){let e=nj.find(e=>i>=e.size),o=Math.max(0,nE(t.step/e.size));return nN(`${nZ(l/e.size,o)}${e.letter}`,s,a)}return nN(nZ(l,t.decimals),s,a)}(a,e,t),13))}}function dg(e){let t=!0===e.stacked&&e.series.length>1,a=nG(e.unit),i=Math.max(...e.series.flatMap(e=>e.values.map(nR))),s=e.categories.map((t,i)=>e.series.map(e=>{let t=e.values[i];return{value:t,text:n8(nJ(t,a),12)}})),l=e.categories.map((t,s)=>{let l=e.series.map(e=>e.values[s]),o=l.filter(e=>e>0).reduce((e,t)=>e+t,0),r=l.filter(e=>e<0).reduce((e,t)=>e+t,0),n=e=>({value:e,text:n8(nJ(Number(e.toFixed(i)),a,i),12)});return{...o>0||0===r?{up:n(o)}:{},...r<0?{down:n(r)}:{}}}),o=t?l.flatMap(e=>[e.up?.value??0,e.down?.value??0]):e.series.flatMap(e=>e.values);return{diagram:e,stacked:t,parts:a,colors:dr(e.series.length,!1),labels:s,totals:l,domain:nT(o,!0)}}function du(e,t,a,i){let s=t;for(let t of e){let e=Math.max(s,Math.max(...t.split(/\s+/u).map(e=>n8(e,14).width))+10);for(;e<i&&n9(t,e-10,14).text.split("\n").length>a;)e+=4;s=Math.max(s,e)}return s}function df(e){let t=e.stacked?1:e.diagram.series.length,a=Math.min(96,720/e.diagram.categories.length),i=1===t?Math.max(16,Math.min(44,Math.round(.6*a))):Math.max(10,Math.round(Math.min(64,.75*a)/t)),s=Math.max(...e.stacked?e.totals.flatMap(e=>[e.up?.text.width??0,e.down?.text.width??0]):e.labels.flat().map(e=>e.text.width)),l=e=>t*e+(t-1)*2;if(1===t)return{bars:t,thickness:i,band:Math.max(l(i)+20,a,s+8)};let o=Math.max(i,s+2);return{bars:t,thickness:o,band:Math.max(l(o)+16,a)}}function dm(e,t,a,i,s=5){let l=nU(e.low,e.high,s);for(let e=0;e<2;e+=1){let e=t/(l.max-l.min),s=a(l,e),o=i(l,e);if(!s&&!o)break;l=nX(l,o,s)}return l}function dv(e,t,a){let i=Math.max(1,Math.ceil(Math.abs(a-t)/n6));return Array.from({length:i+1},(s,l)=>{let o=t+(a-t)*l/i;return{x:e*Math.cos(o),y:e*Math.sin(o)}})}function dy(e,t,a){let i=Math.cos(t),s=Math.sin(t),l=Math.max(0,Math.min(a,e.x*i+e.y*s));return Math.hypot(e.x-l*i,e.y-l*s)}let dw=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function dx(e){let t=new Date(864e5*e);return{year:t.getUTCFullYear(),month:t.getUTCMonth()+1,day:t.getUTCDate(),weekday:(t.getUTCDay()+6)%7}}function db(e,t,a=1){let i=new Date(0);return i.setUTCFullYear(e,t-1,a),Math.round(i.getTime()/864e5)}let dk=[{unit:"day",step:1},{unit:"week",step:1},{unit:"month",step:1},{unit:"quarter",step:1},{unit:"year",step:1},{unit:"year",step:2},{unit:"year",step:5},{unit:"year",step:10},{unit:"year",step:20},{unit:"year",step:25},{unit:"year",step:50}];function dM(e,t,a,i,s,l=1/0){let o=[];for(let r=function(e,t,a){let i=dx(e);switch(t){case"day":return e;case"week":return e-i.weekday;case"month":return db(i.year,i.month);case"quarter":return db(i.year,i.month-(i.month-1)%3);case"year":return db(i.year-(i.year%a+a)%a,1)}}(e,a,i);r<t;){if(o.length>=l)return;let e=function(e,t,a){let i=dx(e);switch(t){case"day":return e+1;case"week":return e+7;case"month":return db(i.year,i.month+1);case"quarter":return db(i.year,i.month+3);case"year":return db(i.year+a,1)}}(r,a,i);o.push({start:r,end:e,label:s(r)}),r=e}return o}function dC(e){return e%2==0?16:12}let dz=[0,6,12,18,24,30],d_=[1,0,-1,0],dL=[0,1,0,-1];function dB(e,t,a){return{x:e.x+d_[t]*a,y:e.y+dL[t]*a}}function dS(e){let t=e.map(e=>Math.round(100*e)/100).toSorted((e,t)=>e-t);return t.filter((e,a)=>0===a||e-t[a-1]>.01)}class dA{costs=new Float64Array(1024);reachedAt=new Float64Array(1024);orders=new Float64Array(1024);states=new Int32Array(1024);length=0;order=0;cost=0;reached=0;get size(){return this.length}push(e,t,a){this.length===this.costs.length&&this.grow();let i=this.order++,s=this.length++;for(;s>0;){let t=s-1>>1;if(!dP(e,i,this.costs[t],this.orders[t]))break;this.move(t,s),s=t}this.place(s,e,t,i,a)}pop(){let e=this.states[0];this.cost=this.costs[0],this.reached=this.reachedAt[0];let t=--this.length;if(t>0){let e=this.costs[t],a=this.reachedAt[t],i=this.orders[t],s=this.states[t],l=0;for(;;){let a=2*l+1;if(a>=t)break;let s=a+1,o=s<t&&dP(this.costs[s],this.orders[s],this.costs[a],this.orders[a])?s:a;if(!dP(this.costs[o],this.orders[o],e,i))break;this.move(o,l),l=o}this.place(l,e,a,i,s)}return e}move(e,t){this.costs[t]=this.costs[e],this.reachedAt[t]=this.reachedAt[e],this.orders[t]=this.orders[e],this.states[t]=this.states[e]}place(e,t,a,i,s){this.costs[e]=t,this.reachedAt[e]=a,this.orders[e]=i,this.states[e]=s}grow(){let e=2*this.costs.length,t=(t,a)=>{let i=a(e);return i.set(t),i};this.costs=t(this.costs,e=>new Float64Array(e)),this.reachedAt=t(this.reachedAt,e=>new Float64Array(e)),this.orders=t(this.orders,e=>new Float64Array(e)),this.states=t(this.states,e=>new Int32Array(e))}}function dP(e,t,a,i){return e<a-1e-9||1e-9>=Math.abs(e-a)&&t<i}function dV(e,t,a,i){let{box:s}=e;if(e.parallel&&s.right-s.left>=s.bottom-s.top!==i)return!1;let l=Math.max(0,e.clearance-.01),o=Math.max(0,(e.sideClearance??e.clearance)-.01);return i?Math.min(a,s.right+o)-Math.max(t,s.left-o)>.01:Math.min(a,s.bottom+l)-Math.max(t,s.top-l)>.01}function dH(e,t,a){return e.filter(({box:e,clearance:i,sideClearance:s})=>{let l=Math.max(0,i-.01),o=Math.max(0,(s??i)-.01);return a?t>e.top-l&&t<e.bottom+l:t>e.left-o&&t<e.right+o})}function dq(e){return .01>Math.abs(e.from.y-e.to.y)}function dF(e,t,a,i=5){let s=.01>Math.abs(e.y-t.y);if(s!==dq(a)||(s?Math.abs(e.y-a.from.y):Math.abs(e.x-a.from.x))>=i)return!1;let[l,o]=s?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],[r,n]=s?[Math.min(a.from.x,a.to.x),Math.max(a.from.x,a.to.x)]:[Math.min(a.from.y,a.to.y),Math.max(a.from.y,a.to.y)];return Math.min(o,n)-Math.max(l,r)>-i}function dI(e,t,a){if(!a)return!1;let i=.01>Math.abs(e.y-t.y);return i===dq(a)&&(i?.01>Math.abs(e.y-a.from.y):.01>Math.abs(e.x-a.from.x))}let dE={best:new Float64Array(0),previous:new Int32Array(0),stamp:new Int32Array(0),epoch:0,steps:new Float64Array(0),stepStamp:new Int32Array(0),estimates:new Float64Array(0),estimateStamp:new Int32Array(0),gridEpoch:0};function dO(e){let t=function(e){let t;for(let a of e.sources)for(let i of e.targets){if(a.direction!==i.direction)continue;let s=a.direction%2==0?(i.x-a.x)*d_[a.direction]:(i.y-a.y)*dL[a.direction];if(!(a.direction%2==0?.01>Math.abs(a.y-i.y):.01>Math.abs(a.x-i.x))||s<(a.lead??8)+dC(i.direction))continue;let l=e.obstacles.some(e=>!e.own&&function(e,t,a){let i=.01>Math.abs(t.y-a.y);return 0!==dH([e],i?t.y:t.x,i).length&&dV(e,i?Math.min(t.x,a.x):Math.min(t.y,a.y),i?Math.max(t.x,a.x):Math.max(t.y,a.y),i)}(e,a,i))||e.routed.some(t=>!e.trunks?.has(t)&&!e.joins?.has(t)&&dF(a,i,t)),o=a.cost+i.cost+s;l||t&&!(o<t.cost)||(t={cost:o,points:[a,i]})}return t?.points}(e);if(t)return t;let a=[...e.sources,...e.targets],i=(e,t)=>({left:Math.min(...a.map(e=>e.x))-e,right:Math.max(...a.map(e=>e.x))+e,top:Math.min(...a.map(e=>e.y))-t,bottom:Math.max(...a.map(e=>e.y))+t}),s={separation:5,lanes:e.lanes,splits:[.5],crossingCost:e.crossingCost??30},{behind:l}=e,o=void 0===l?s:{...s,behind:l},r={...o,separation:2.5,lanes:e.denseLanes,splits:[.25,.5,.75],crossingCost:2},n=i(200,90),d=i(800,360),{reach:c}=e,p=c?{left:Math.min(d.left,c.left),right:Math.max(d.right,c.right),top:Math.min(d.top,e.top),bottom:Math.max(d.bottom,e.bottom)}:d,h=e.budget,g=e.kinkBudget,u=(t,a,i)=>{if(h&&h.remaining<=0)return;let s=function(e,t,a){var i;let{routed:s}=e,{separation:l}=a,o=e.pastTrunk??new Map,r=[...e.obstacles,...o.keys()],n=e.sources.map(e=>dB(e,e.direction,e.lead??8)),d=e.targets.map(e=>dB(e,(e.direction+2)%4,dC(e.direction))),c=[...e.sources,...e.targets,...n,...d],p=8+dz.at(-1)+10,h=r.filter(({box:e})=>e.right>=t.left-p&&e.left<=t.right+p&&e.bottom>=t.top-p&&e.top<=t.bottom+p),g=[...h.filter(({box:e})=>e.bottom>=t.top&&e.top<=t.bottom).flatMap(({box:e,clearance:t,sideClearance:a})=>[e.left-Math.max(a??t,5),e.right+Math.max(a??t,5)]),...(e.besides??[]).filter(e=>e.bottom>=t.top&&e.top<=t.bottom).flatMap(e=>[e.left-15,e.right+15])].filter(e=>e>=t.left&&e<=t.right),u=c.map(e=>e.x),f=Math.max(t.left,Math.min(...u,...g))-8,m=Math.min(t.right,Math.max(...u,...g))+8,v=dS([...u,...g,...dz.flatMap(e=>[f-e,m+e])]),y=dS([...v,...v.slice(1).flatMap((e,t)=>{let i=v[t];return e-i>4*l?a.splits.map(t=>i+(e-i)*t):[]})]),w=dS([...c.map(e=>e.y),...a.lanes.filter(e=>e>=t.top&&e<=t.bottom)]).filter(t=>t>=e.top&&t<=e.bottom),x=new Map(y.map((e,t)=>[e,t])),b=new Map(w.map((e,t)=>[e,t])),k=e=>{let t=x.get(Math.round(100*e.x)/100),a=b.get(Math.round(100*e.y)/100);return void 0===t||void 0===a?void 0:a*y.length+t},M=[],C=e=>M[e]??={x:y[e%y.length],y:w[Math.floor(e/y.length)]},z=p+12,_=s.filter(e=>Math.max(e.from.x,e.to.x)>=t.left-z&&Math.min(e.from.x,e.to.x)<=t.right+z&&Math.max(e.from.y,e.to.y)>=t.top-z&&Math.min(e.from.y,e.to.y)<=t.bottom+z),L=_.filter(dq),B=_.filter(e=>!dq(e)),S=(e.edges??[]).filter(e=>e.right>=t.left&&e.left<=t.right&&e.bottom>=t.top-7&&e.top<=t.bottom+7),A=(e.sides??[]).filter(e=>e.right>=t.left-15&&e.left<=t.right+15&&e.bottom>=t.top&&e.top<=t.bottom),P=new Map,V=new Map,H=(t,a)=>{let i=a?P:V,s=i.get(t);if(!s){let[o,r]=a?[L,B]:[B,L],n=e=>Math.abs(a?e.from.y-t:e.from.x-t);s={obstacles:dH(h,t,a),routed:[...o.filter(e=>n(e)<l),...r.filter(e=>a?t>Math.min(e.from.y,e.to.y)&&t<Math.max(e.from.y,e.to.y):t>Math.min(e.from.x,e.to.x)&&t<Math.max(e.from.x,e.to.x))],beside:o.filter(t=>12>n(t)&&!e.kin?.has(t)),edges:a?S.filter(e=>t<=e.top&&e.top-t<7||t>=e.bottom&&t-e.bottom<7):A.filter(e=>t<=e.left&&e.left-t<14.99||t>=e.right&&t-e.right<14.99)},i.set(t,s)}return s},q=(e,t)=>{let a=.01>Math.abs(e.y-t.y);return H(a?e.y:e.x,a)},F=(t,a,i=!1,s=!1,r=q(t,a))=>{let n=.01>Math.abs(t.y-a.y),d=n?Math.min(t.x,a.x):Math.min(t.y,a.y),c=n?Math.max(t.x,a.x):Math.max(t.y,a.y);return!r.obstacles.some(e=>!(i&&e.own)&&!(s&&dI(t,a,o.get(e)))&&dV(e,d,c,n))&&!r.routed.some(o=>!(s&&e.trunks?.has(o))&&!(i&&e.joins?.has(o))&&dF(t,a,o,l))},{behind:I}=a,E=e.targets.map(e=>e.cost+dC(e.direction)),O=Float64Array.from(d,e=>e.x),U=Float64Array.from(d,e=>e.y),X=(e,t,a)=>{let i=1/0;for(let s=0;s<O.length;s+=1){let l=O[s]-e,o=U[s]-t,r=l*d_[a]+o*dL[a],n=Math.abs(l*dL[a])+Math.abs(o*d_[a])<.01?r>-.01?0:2:r>-.01?1:2,d=Math.abs(l)+Math.abs(o)+24*n+E[s];d<i&&(i=d)}return i},{steps:T,stepStamp:$,estimates:Y,estimateStamp:G,gridEpoch:R}=(i=y.length*w.length*4,dE.stepStamp.length<i&&(dE.steps=new Float64Array(i),dE.stepStamp=new Int32Array(i),dE.estimates=new Float64Array(i),dE.estimateStamp=new Int32Array(i)),dE.gridEpoch>=0x40000000&&(dE.stepStamp.fill(0),dE.estimateStamp.fill(0),dE.gridEpoch=0),dE.gridEpoch+=1,dE),D=new Map,Z=new Map;e.targets.forEach((e,t)=>{let a=d[t],i=k(a);if(void 0===i||!F(a,e,!0))return;D.set(i,[...D.get(i)??[],e]);let s=4*i+e.direction;Z.set(s,Math.min(Z.get(s)??1/0,E[t]))});let j=(e,t,a,i)=>{let s=4*e+a;if(!i&&$[s]===R)return T[s];let l=N(C(e),C(t),a,i)??1/0;return i||($[s]=R,T[s]=l),l},N=(t,i,s,l)=>{let o=H(s%2==0?t.y:t.x,s%2==0);if(!F(t,i,!1,l,o))return;let r=2===s?a.crossingCost*(e.backCrossingFactor??8):a.crossingCost;return Math.abs(i.x-t.x)+Math.abs(i.y-t.y)+(void 0===I?0:4*Math.max(0,Math.min(I,Math.max(t.x,i.x))-Math.min(t.x,i.x)))+(s%2==0?2:1)*((e,t,a=q(e,t))=>{if(0===a.edges.length)return 0;let i=.01>Math.abs(e.y-t.y),s=i?Math.min(e.x,t.x):Math.min(e.y,t.y),l=i?Math.max(e.x,t.x):Math.max(e.y,t.y),o=0;for(let e of a.edges)o+=i?Math.max(0,Math.min(l,e.right)-Math.max(s,e.left)):Math.max(0,Math.min(l,e.bottom)-Math.max(s,e.top));return o})(t,i,o)+(r?((t,a,i=q(t,a))=>{let s=0;for(let l of i.routed)(function(e,t,a){let i=.01>Math.abs(e.y-t.y);if(i===dq(a))return!1;let[s,l,o,r]=i?[e,t,a.from,a.to]:[a.from,a.to,e,t],n=o.x,d=s.y;return n>Math.min(s.x,l.x)+.01&&n<Math.max(s.x,l.x)-.01&&d>Math.min(o.y,r.y)+.01&&d<Math.max(o.y,r.y)-.01})(t,a,l)&&(s+=e.lastRuns?.has(l)?4:1);return s})(t,i,o)*r:0)+2*((e,t,a=q(e,t))=>{if(0===a.beside.length)return 0;let i=.01>Math.abs(e.y-t.y),s=i?Math.min(e.x,t.x):Math.min(e.y,t.y),l=i?Math.max(e.x,t.x):Math.max(e.y,t.y),o=0;for(let e of a.beside){let[t,a]=i?[Math.min(e.from.x,e.to.x),Math.max(e.from.x,e.to.x)]:[Math.min(e.from.y,e.to.y),Math.max(e.from.y,e.to.y)];o+=Math.max(0,Math.min(l,a)-Math.max(s,t))}return o})(t,i,o)},W=y.length,J=w.length;return(t,a,i)=>{var s;let l,{best:o,previous:r,stamp:d,epoch:c}=(s=y.length*w.length*12,dE.stamp.length<s&&(dE.best=new Float64Array(s),dE.previous=new Int32Array(s),dE.stamp=new Int32Array(s)),dE.epoch>=0x40000000&&(dE.stamp.fill(0),dE.epoch=0),dE.epoch+=1,dE),p=e=>d[e]===c?o[e]:1/0,h=(e,t)=>{let a=e%3;if(0===a)return!1;let i=e-a,s=2!==a||Z.has(i/3)?0:40;return p(i+0)<=t+s+1e-9||2===a&&p(i+1)<=t+s+1e-9},g=new dA,u=new Map;e.sources.forEach((e,t)=>{let a=n[t],i=k(a);if(void 0===i||!F(e,a,!0,!0))return;let s=(4*i+e.direction)*3+0,l=e.cost+(e.lead??8);l<p(s)&&(d[s]=c,o[s]=l,r[s]=-1,u.set(s,e),g.push(l+X(a.x,a.y,e.direction),l,s))});let f=a,m=(e,t,a,i,s)=>{let l;if(t>=p(e)-1e-9||h(e,t))return;let n=(G[l=4*i+s]!==R&&(G[l]=R,Y[l]=X(y[i%y.length],w[Math.floor(i/y.length)],s)),Y[l]);e%3==2&&(n=Math.min(40+n,Z.get(4*i+s)??1/0)),t+n>=f||(d[e]=c,o[e]=t,r[e]=a,u.delete(e),g.push(t+n,t,e))},v=0;for(;g.size>0&&v++<i;){let e=g.pop(),a=g.cost,i=g.reached;if(a>=f)break;let s=p(e);if(i>s+1e-6||h(e,s))continue;let o=e%3,r=Math.floor(e/12),n=Math.floor(e/3)%4,d=r%W,c=(r-d)/W,u=y[d],v=w[c],x=40*(2===o);for(let t of D.get(r)??[]){if((t.direction+2)%4===n)continue;let a=s+t.cost+dC(t.direction)+(t.direction===n?0:24+x);a<f&&(l={state:e,port:t},f=a)}let b=d+d_[n],k=c+dL[n];if(2!==o&&b>=0&&b<W&&k>=0&&k<J){let t=k*W+b,a=(4*t+n)*3+o;if(s+(Math.abs(y[b]-u)+Math.abs(w[k]-v))<p(a)-1e-9){let i=j(r,t,n,0===o);1/0!==i&&m(a,s+i,e,t,n)}}for(let a=1;a<=3;a+=2){let i=(n+a)%4,l=s+24+x,o=0,r=d,h=c;for(;;){let a=r+d_[i],s=h+dL[i];if(a<0||a>=W||s<0||s>=J)break;let n=Math.abs(y[a]-y[r])+Math.abs(w[s]-w[h]),d=s*W+a,c=(4*d+i)*3;if(Math.min(p(c),p(c+1))<=l+n+1e-9)break;let g=j(h*W+r,d,i,!1);if(1/0===g)break;l+=g,o+=n,r=a,h=s;let u=!t||o>=28;if(m(c+(u?1:2),l,e,d,i),u)break}}}if(!l)return{expansions:v};let x=f,b=[l.port],M=l.state;for(b.push(dB(l.port,(l.port.direction+2)%4,dC(l.port.direction)));M>=0;){b.push(C(Math.floor(M/12)));let e=u.get(M);if(e){b.push(e);break}M=r[M]}return{points:function(e){let t=[];for(let a of e){let e=t.at(-1);if(e&&.01>Math.abs(e.x-a.x)&&.01>Math.abs(e.y-a.y))continue;let i=t.at(-2);i&&e&&(.01>Math.abs(i.x-e.x)&&.01>Math.abs(e.x-a.x)||.01>Math.abs(i.y-e.y)&&.01>Math.abs(e.y-a.y))?t[t.length-1]=a:t.push(a)}return t}(b.toReversed()),cost:x,expansions:v}}}(e,t,a),l=s(!1,1/0,Math.min(12e3,e.limit??12e3));if(h&&(h.remaining-=l.expansions),!l.points)return;let o=dU(l.points);if(!i||!g||g.remaining<=0||0===o)return l.points;let r=s(!0,l.cost+o-1e-6,Math.min(12e3,2*l.expansions,g.remaining));return g.remaining-=r.expansions,r.points??l.points};return(e.wide?void 0:u(n,o,!0))??u(p,o,!0)??u(p,r,!1)}function dU(e){let t=dX(e),a=0;for(let{from:e,to:i}of t.slice(1,-1))Math.abs(i.x-e.x)+Math.abs(i.y-e.y)<28&&(a+=40);return a}function dX(e){return e.slice(1).map((t,a)=>({from:e[a],to:t}))}function dT(e,t,a){let i=e.at(-1),s=e.at(-2),l=Math.min(1,t/Math.max(Math.abs(i.x-s.x)+Math.abs(i.y-s.y),.01)),o={x:i.x+(s.x-i.x)*l,y:i.y+(s.y-i.y)*l};return{left:Math.min(o.x,i.x)-a,right:Math.max(o.x,i.x)+a,top:Math.min(o.y,i.y)-a,bottom:Math.max(o.y,i.y)+a}}let d$=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dY=(e,t=2)=>String(e).padStart(t,"0");function dG(e){let t,a=new Map;for(let t of[...e.events.flatMap(e=>[e.date,e.end]),e.today]){let e=void 0===t?void 0:el(t);void 0!==t&&e&&a.set(t,e)}if(0===a.size)return{events:new Map};let i=new Set([...a.values()].flatMap(e=>void 0===e.offsetMinutes?[]:[e.offsetMinutes])),s=1===i.size?[...i][0]??0:0,l=i.size>0?function(e){if(0===e)return"UTC";let t=Math.abs(e);return`UTC${e<0?"-":"+"}${dY(Math.floor(t/60))}:${dY(t%60)}`}(s):void 0,o=new Map([...a].map(([e,t])=>[e,function(e,t){if("instant"!==e.granularity)return{granularity:e.granularity,...e.fields};let a=new Date(e.start+6e4*t);return{granularity:"instant",year:a.getUTCFullYear(),month:a.getUTCMonth()+1,day:a.getUTCDate(),hour:a.getUTCHours(),minute:a.getUTCMinutes(),second:a.getUTCSeconds(),millisecond:a.getUTCMilliseconds()}}(t,s)])),r=[...o.values()],n=r[0],d=r.some(e=>"instant"===e.granularity)&&r.every(e=>("day"===e.granularity||"instant"===e.granularity)&&e.year===n.year&&e.month===n.month&&e.day===n.day),c=r.some(e=>e.year!==n.year),p=r.some(e=>"instant"===e.granularity&&e.second>0),h=r.some(e=>"instant"===e.granularity&&e.millisecond>0),g=e=>`${dY(e.hour)}:${dY(e.minute)}${p||h?`:${dY(e.second)}`:""}${h?`.${dY(e.millisecond,3)}`:""}`,u=e=>`${d$[e.month-1]} ${e.day}`,f=(e,t)=>{if(d)return"instant"===e.granularity?g(e):u(e);let a=t?` ${e.year}`:"";switch(e.granularity){case"year":return String(e.year);case"month":return`${d$[e.month-1]}${a}`;case"day":return`${u(e)}${t?`, ${e.year}`:""}`;case"instant":return`${u(e)}${t?`, ${e.year}`:""}, ${g(e)}`}},m=(e,t,a)=>{if(d)return`${f(e,!1)}–${f(t,!1)}`;if(e.year!==t.year)return`${f(e,!0)} – ${f(t,!0)}`;let i=a&&"year"!==t.granularity?`, ${t.year}`:"";return"day"===e.granularity&&"day"===t.granularity&&e.month===t.month?`${u(e)}–${t.day}${i}`:"month"===e.granularity&&"month"===t.granularity?`${d$[e.month-1]} – ${d$[t.month-1]}${a?` ${t.year}`:""}`:`${f(e,!1)} – ${f(t,!1)}${i}`},v=new Map;for(let a of eh(e)){let e=void 0===a.date?void 0:o.get(a.date);if(!e)continue;let i=void 0===a.end?void 0:o.get(a.end),s=e.year!==t?.year||"month"===e.granularity&&"month"!==t.granularity;v.set(a.id,i?m(e,i,s):f(e,s)),t=i??e}let y=d?`${u(n)}, ${n.year}${l?` \xb7 ${l}`:""}`:l?`Times in ${l}`:void 0,w=void 0===e.today?void 0:o.get(e.today);return{...y?{header:y}:{},events:v,...w?{today:`Today \xb7 ${f(w,c)}`}:{}}}let dR={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:2629746e3,year:31556952e3},dD=v.ink,dZ="#4c4639",dj="#cbbfa9",dN="#c0392b",dW=[12,24];function dJ(e,t){let a=[e.left-8,e.right+8];return t?[e.left-15,...a,e.right+15]:a}let dK=[0,-6,6],dQ=[-3,3];function d1(e,t){return{text:e,width:Math.ceil(aE(e,t)),height:Math.ceil(e.split("\n").length*t*1.35)}}function d0(e,t,a){let i=d1(e,a);return i.width<=t?i:d1(aT(e,Math.max(1,t),a),a)}function d2(e){return Math.round(100*e)/100}class d3{elements=[];layers={back:[],middle:[],front:[]};textBoxes=[];push(e,t){this.elements.push(e),this.layers[t].push(e.id)}zOrder(){return[...this.layers.back,...this.layers.middle,...this.layers.front]}text(e,t,a,i,s,l,o="left",r={}){let n={left:a,top:i,right:a+t.width,bottom:i+t.height};return this.push({type:"text",id:e,x:d2(a+t.width/2),y:d2(i+t.height/2),text:t.text,fontSize:s,maxWidth:t.width,textAlign:o,textColor:l,...r},"front"),this.textBoxes.push(n),n}line(e,t,a,i="back"){let[s,l,...o]=t.map(e=>({x:d2(e.x),y:d2(e.y)}));this.push({type:"line",id:e,points:[s,l,...o],roughness:0,strokeWidth:1,...a},i)}mark(e,t,a,i,s){this.push({type:"node",id:`node:${e}`,nodeId:e,rendererRole:"gantt-mark",shape:t,x:d2(a.x),y:d2(a.y),width:d2(d2(a.x+a.width)-d2(a.x)),height:d2(d2(a.y+a.height)-d2(a.y)),label:i,roughness:0,fillStyle:"solid",strokeWidth:1,...s},"middle")}breakRulesUnderText(e,t=this.textBoxes){let a=nQ(this.elements,t,e);if(!a.size)return;let i=this.elements.flatMap(e=>a.get(e.id)??[e]);for(let e of(this.elements.splice(0,this.elements.length,...i),Object.values(this.layers))){let t=e.flatMap(e=>a.get(e)?.map(e=>e.id)??[e]);e.splice(0,e.length,...t)}}bounds(){let e=1/0,t=1/0,a=-1/0,i=-1/0,s=(s,l,o,r)=>{e=Math.min(e,s),t=Math.min(t,l),a=Math.max(a,o),i=Math.max(i,r)};for(let e of this.elements)if("line"===e.type||"arrow"===e.type)for(let t of e.points)s(t.x,t.y,t.x,t.y);else if("text"===e.type){let t=e.maxWidth??aE(e.text,e.fontSize),a=e.text.split("\n").length*e.fontSize*1.35;s(e.x-t/2,e.y-a/2,e.x+t/2,e.y+a/2)}else s(e.x,e.y,e.x+e.width,e.y+e.height);return{left:e,top:t,right:a,bottom:i}}}let d5=[7,19,31],d4=[6,16,26];function d6(e,t,a,i,s=[]){let l=(e.top+e.bottom)/2,o=e=>40*(1===e!==a);if(t){let t=(e.left+e.right)/2,a=(e.right-e.left)/4;return[{x:e.right,y:l,direction:0,cost:2},{x:t,y:e.bottom,direction:1,cost:o(1)},{x:t,y:e.top,direction:3,cost:o(3)},...[-1,1].map(t=>({x:e.right-a,y:l+t*a,direction:0,cost:8})),{x:t+a,y:e.bottom-a,direction:1,cost:6+o(1)},{x:t+a,y:e.top+a,direction:3,cost:6+o(3)},{x:t-a,y:e.bottom-a,direction:1,cost:16+o(1)},{x:t-a,y:e.top+a,direction:3,cost:16+o(3)},...s.filter(t=>t>e.left+2&&t<e.right-2).flatMap(e=>{let i=2*a-Math.abs(e-t),s=(e<t?16:6)+3;return[{x:e,y:l+i,direction:1,cost:s+o(1)},{x:e,y:l-i,direction:3,cost:s+o(3)}]})]}let r=d4.filter(t=>e.right-t>=e.left+3),n=Array.from({length:6},(t,a)=>e.right-6-2.5*a).filter(t=>t>=e.left+2),d=r.length>=3?r.map(t=>e.right-t):n.length?n:[(e.left+e.right)/2],c=void 0!==i&&i>e.left+1&&i<e.right-1?[i]:[],p=s.filter(t=>t>=Math.max(e.left+2,e.right-32)&&t<=e.right-2&&d.every(e=>Math.abs(e-t)>=1));return[...c.flatMap(t=>[{x:t,y:e.bottom,direction:1,cost:o(1)},{x:t,y:e.top,direction:3,cost:o(3)}]),...d.map((t,a)=>({x:t,y:e.bottom,direction:1,cost:o(1)+3*a})),...p.flatMap(t=>[{x:t,y:e.bottom,direction:1,cost:o(1)+3},{x:t,y:e.top,direction:3,cost:o(3)+3}]),...e.right-e.left>=8?[{x:e.right,y:l,direction:0,cost:2}]:[],...d.map((t,a)=>({x:t,y:e.top,direction:3,cost:o(3)+3*a}))]}function d7(e,t=!1){let a=!t&&.01>Math.abs(e.at(-1).y-e.at(-2).y);return dT(e,a?40:12,4.5)}function d8(e){let t=new Set;for(let a of dX(e)){let e=ce(a);if(t.has((e+2)%4))return!0;t.add(e)}return!1}function d9(e,t,a,i=!1){let s=d7(t,i),l=dX(e),o=dX(t),r=a.leaving&&dI(l[0].from,l[0].to,o[0])?d7(t,!0):s,n=a.arriving&&function(e,t){let[a,i]=[e.at(-1),t.at(-1)];return .01>Math.hypot(a.x-i.x,a.y-i.y)}(e,t),d=0;return l.forEach((e,t)=>{let i=t===l.length-1;!(n&&i)&&ct(e,0===t?r:s)&&(d+=1),o.forEach((i,s)=>{!(a.leaving&&0===t&&0===s||a.arriving&&t===l.length-1&&s===o.length-1)&&cl(e.from,e.to,i,2)&&function(e,t){let a=.01>Math.abs(e.from.y-e.to.y),i=e=>a?[Math.min(e.from.x,e.to.x),Math.max(e.from.x,e.to.x)]:[Math.min(e.from.y,e.to.y),Math.max(e.from.y,e.to.y)],[s,l]=i(e),[o,r]=i(t);return Math.min(l,r)-Math.max(s,o)}(e,i)>1&&(d+=1)})}),d}function ce({from:e,to:t}){return .01>Math.abs(e.y-t.y)?t.x>e.x?0:2:t.y>e.y?1:3}function ct(e,t){let{from:a,to:i}=e;return Math.max(a.x,i.x)>t.left&&Math.min(a.x,i.x)<t.right&&Math.max(a.y,i.y)>t.top&&Math.min(a.y,i.y)<t.bottom}function ca(e){return e.replaceAll("%","%25").replaceAll(":","%3A")}let ci=[2.5,2,.3,.05,0];function cs(e,t,a=1){return[e,...Array.from({length:Math.max(0,Math.floor(t/a))},(e,t)=>(t+1)*a).flatMap(t=>[e+t,e-t])]}function cl(e,t,a,i){let s=.01>Math.abs(e.y-t.y);if(s!==.01>Math.abs(a.from.y-a.to.y)||(s?Math.abs(e.y-a.from.y):Math.abs(e.x-a.from.x))>=i)return!1;let[l,o]=s?[Math.min(e.x,t.x),Math.max(e.x,t.x)]:[Math.min(e.y,t.y),Math.max(e.y,t.y)],[r,n]=s?[Math.min(a.from.x,a.to.x),Math.max(a.from.x,a.to.x)]:[Math.min(a.from.y,a.to.y),Math.max(a.from.y,a.to.y)];return Math.min(o,n)-Math.max(l,r)>0}let co={forward:!0,clear:!0},cr={forward:!1,clear:!1},cn={forward:!1,clear:!0};function cd(e,t,{forward:a,clear:i}){var s;let l,o,r,n,d,c,p,h,g,u=i?32:24,f=new Map(e.tasks.map(e=>[e.id,tc(e)])),m=th(e),v=void 0===e.today?void 0:tr(e.today),y=[...f.values()],w=Math.min(...y.map(e=>e.start),v??1/0),x=Math.max(...y.map(e=>e.milestone?e.start+1:e.end),void 0===v?-1/0:v+1),b=(l=new Map(e.tasks.map(e=>[e.id,tc(e)])),o=th(e).flatMap((e,t)=>{if(void 0===e.phase)return[];let a=e.tasks.map(e=>l.get(e.id));return[{index:t,name:e.phase,start:Math.min(...a.map(e=>e.start)),end:Math.max(...a.map(e=>Math.max(e.end,e.start+1)))}]}),r=e=>`\0phase:${e}`,n=(e,t,a,i)=>({id:e,label:t,date:tn(a),...i-a>1?{end:tn(i-1)}:{}}),c=dG(d={id:e.id,title:e.title,type:"timeline",events:[...o.map(e=>n(r(e.index),e.name,e.start,e.end)),...e.tasks.map(e=>{let t=l.get(e.id);return n(e.id,e.label,t.start,t.end)})],...e.today?{today:e.today}:{},style:e.style}),p=new Set(d.events.flatMap(e=>[e.date,e.end].flatMap(e=>void 0===e?[]:[e.slice(0,4)]))),h=e=>{if(p.size<2)return c.events.get(e)??"";let t=d.events.find(t=>t.id===e);return dG({...d,events:[t]}).events.get(e)??""},{tasks:new Map(e.tasks.map(e=>{let t=h(e.id);return[e.id,void 0===e.progress?t:`${t} \xb7 ${e.progress}%`]})),phases:new Map(o.map(e=>[e.name,h(r(e.index))])),...c.today?{today:c.today}:{}}),k=(e,a)=>{let i=d0(e.label,260,14);return{task:e,schedule:f.get(e.id),color:a,label:i,caption:d1(b.tasks.get(e.id),12),height:Math.max(t,i.height+16)}},M=[],C=0;m.forEach((e,t)=>{let a=n0[t%n0.length];if(void 0!==e.phase){let a=d0(e.phase,220,15),i=d1(b.phases.get(e.phase),12),s=Math.max(40,a.height+16);M.push({kind:"phase",top:C,height:s,phase:{index:t,name:a,caption:i}}),C+=s}for(let t of e.tasks){let e=k(t,a);M.push({kind:"task",top:C,height:e.height,task:e}),C+=e.height}});let z=C,_=M.filter(e=>"task"===e.kind).length,L=12*!!M.some(e=>"phase"===e.kind),B=Math.max(Math.max(...M.map(e=>e.task?L+e.task.label.width:0))+20+Math.max(...M.map(e=>(e.task?e.task.caption:e.phase.caption).width)),...M.map(e=>e.phase?e.phase.name.width+10+e.phase.caption.width:0)),S=-16-B,A=function(e,t,a=960){let i=Math.max(t,e+1);for(let{unit:t,step:s}of dk){let l="year"===t&&50===s,o=dM(e,i,t,s,e=>(function(e,t,a){let i=dx(e);switch(t){case"day":return String(i.day);case"week":return`${dw[i.month-1]} ${i.day}`;case"month":return dw[i.month-1];case"quarter":return`Q${Math.floor((i.month-1)/3)+1}`;case"year":return 1===a?String(i.year):`${i.year}–${String(i.year+a-1)}`}})(e,t,s),l?1/0:36);if(!o)continue;let r=o[0].start,n=o.at(-1).end,d=Math.min(56,a/(n-r));if(!o.every(e=>aE(e.label,12)+8<=(e.end-e.start)*d)&&!l)continue;let c=("year"===t?[]:"day"===t?dM(r,n,"month",1,e=>`${dw[dx(e).month-1]} ${dx(e).year}`):dM(r,n,"year",1,e=>String(dx(e).year)))??[],p=new Set(o.map(e=>e.start)),h="month"===t?"week":"quarter"===t?"month":void 0,g=h&&("week"===h?7:28)*d>=12?(dM(r,n,h,1,()=>"")??[]).map(e=>e.start).filter(e=>e>r&&!p.has(e)):[];return{unit:t,step:s,start:r,end:n,pxPerDay:d,cells:o,minor:g,bands:c.map(e=>({start:Math.max(e.start,r),end:Math.min(e.end,n),label:e.label}))}}throw Error("unreachable: half-century ticks always fit")}(w,x,Math.max(640,Math.min(960,2.2*(Math.ceil(27*!!e.title.length)+14+18*(void 0!==v)+44+z+44*(_>=16)+80)-80-B-16-u))),P=Math.max(0,...y.map(e=>e.milestone?15-(e.start+.5-A.start)*A.pxPerDay:0)),V=e=>u+P+(e-A.start)*A.pxPerDay,H=V(A.end),q=new d3,F=[{box:{left:S-32,right:-2,top:0,bottom:z},clearance:0}],I=new Map;for(let e of M){if("phase"!==e.kind)continue;let{index:t,name:a,caption:i}=e.phase,s=e.top+e.height/2,l={groupIds:[`gantt:phase:${t}`]};q.text(`gantt:phase:${t}`,a,S,s-a.height/2,15,dD,"left",l),q.text(`gantt:phase-caption:${t}`,i,-16-i.width,s-i.height/2,12,dZ,"right",l)}for(let e of M){if("task"!==e.kind)continue;let{task:t,schedule:a,color:i,label:s,caption:l}=e.task,o=e.top+e.height/2,r=a.milestone?V(a.start+.5)-13:V(a.start),n=a.milestone?V(a.start+.5)+13:Math.max(V(a.end),V(a.start)+2),d=`gantt:task:${t.id}`,c={groupIds:[d]},p={groupIds:[`gantt:row:${t.id}`]},h=a.milestone?{left:r,right:n,top:o-13,bottom:o+13}:{left:r,right:n,top:o-11,bottom:o+11};I.set(t.id,h),q.mark(d,a.milestone?"diamond":"rectangle",{x:h.left,y:h.top,width:h.right-h.left,height:h.bottom-h.top},t.label,a.milestone?{fillColor:dD,strokeColor:dD,...c}:{fillColor:i,strokeColor:i,...c});let g=t.progress??0,u=function(e){let t=t=>{let a=Number.parseInt(e.slice(t,t+2),16);return Math.round(a+(Number.parseInt(dD.slice(t,t+2),16)-a)*.35).toString(16).padStart(2,"0")};return`#${t(1)}${t(3)}${t(5)}`}(i),f=h.left+(h.right-h.left)*g/100;!a.milestone&&f-h.left>=1&&q.mark(`gantt:progress:${t.id}`,"rectangle",{x:h.left,y:h.top,width:f-h.left,height:h.bottom-h.top},`${t.label} \xb7 ${g}%`,{fillColor:u,strokeColor:u,...c}),q.text(`gantt:label:${t.id}`,s,S+L,o-s.height/2,14,dD,"left",p),q.text(`gantt:caption:${t.id}`,l,-16-l.width,o-l.height/2,12,dZ,"right",p)}let E=[...I].filter(([e])=>!f.get(e).milestone),O=new Map(M.flatMap((e,t)=>e.task?[[e.task.task.id,t]]:[])),U=M.slice(1).map(e=>e.top),X=U.flatMap(e=>dK.map(t=>e+t)),T=M.slice(1).flatMap(e=>[...dK,...dQ].map(t=>e.top+t)),$=e.tasks.flatMap((e,t)=>(e.dependsOn??[]).map((a,i)=>({from:a,to:e.id,taskIndex:t,order:i}))).toSorted((e,t)=>Math.abs(O.get(e.to)-O.get(e.from))-Math.abs(O.get(t.to)-O.get(t.from))||O.get(e.to)-O.get(t.to)||O.get(e.from)-O.get(t.from)||e.taskIndex-t.taskIndex||e.order-t.order),Y=void 0===v?void 0:V(v+.5),G=void 0===Y?[]:[{from:{x:Y,y:0},to:{x:Y,y:z}}],R=$.map(()=>void 0),D=[...G],Z=new Map,j=new Map,N=new Map,W=[],J=[],K=new Set,Q=new Set,ee=new Map,et=new Set,ea=Math.min(16e4,Math.max(12e3,6e3*$.length)),ei={remaining:ea},es=Math.min(48e3,1500*$.length),el={remaining:es},eo=Math.min(24e3,1e3*$.length),er={remaining:eo},en=0,ed=0,ec=new WeakSet,ep=new Map;for(let{from:e,to:t}of $)ep.set(e,(ep.get(e)??new Set).add(O.get(t)>O.get(e)?1:3));let eh=(e,t)=>{let a=dX(t);D.push(...a),K.add(a.at(-1)),Q.add(a[0]),j.set(e.from,[...j.get(e.from)??[],...a]),N.set(e.to,[...N.get(e.to)??[],...a]);let i={box:d7(t,!0),clearance:0};W.push({from:e.from,trunk:a[0],keepOut:{box:d7(t),clearance:0},arrowhead:i}),J.push({from:e.from,trunk:a[0],keepOut:{box:dT(t,.01>Math.abs(t.at(-1).y-t.at(-2).y)?40:12,6),clearance:0},arrowhead:i}),ee.set(e.to,ee.get(e.to)-1),Z.set(e.to,[...Z.get(e.to)??[],t.at(-1)])},eg=()=>{for(let e of(D.splice(0,D.length,...G),[Z,j,N,ee]))e.clear();for(let e of(W.length=0,J.length=0,K.clear(),Q.clear(),$))ee.set(e.to,(ee.get(e.to)??0)+1);$.forEach((e,t)=>{let a=R[t];a&&eh(e,a)})};eg();let eu=(e,t=ei)=>{var s;let l,o,r,n;en+=1;let d=Math.min(12e3,t.remaining),c={remaining:d},p=I.get(e.from),h=I.get(e.to),g=f.get(e.from).milestone,u=f.get(e.to).milestone,m=O.get(e.to)>O.get(e.from),v=e=>(e.left+e.right)/2,y=t=>(O.get(t)-O.get(e.from))*(O.get(e.to)-O.get(t))>0,w=Z.get(e.to)??[],x=function(e,t,a,i=[],s=!1){let l=(e.top+e.bottom)/2,o=e=>40*(1===e!==a),r=e=>4*(-1===e!==a);if(t){let t=(e.left+e.right)/2,a=(e.right-e.left)/4,n=i=>(e.bottom-e.top)/2*(1-Math.abs(i-t)/(2*a)),d=i.filter(e=>Math.abs(e-t)>=1&&Math.abs(e-t)<=2*a-4),c=e=>24+6*(Math.abs(e-t)>a);return[{x:e.left,y:l,direction:0,cost:16*!!s},{x:t,y:e.top,direction:1,cost:2+o(1)},{x:t,y:e.bottom,direction:3,cost:2+o(3)},...[-1,1].map(t=>({x:e.left+a,y:l+t*a,direction:0,cost:s?r(t):16})),{x:t-a,y:e.top+a,direction:1,cost:16+o(1)},{x:t-a,y:e.bottom-a,direction:3,cost:16+o(3)},...d.flatMap(e=>[{x:e,y:l-n(e),direction:1,cost:c(e)+o(1)},{x:e,y:l+n(e),direction:3,cost:c(e)+o(3)}])]}let n=d5.filter(t=>e.left+t<=e.right-3),d=n.length?n.map(t=>e.left+t):[(e.left+e.right)/2],c=i.filter(t=>t>e.left+1&&t<e.right-1);return[{x:e.left,y:l,direction:0,cost:24*!!s},...[-1,1].map(t=>({x:e.left,y:l+7*t,direction:0,cost:s?r(t):24})),...c.flatMap(t=>[{x:t,y:e.top,direction:1,cost:o(1)},{x:t,y:e.bottom,direction:3,cost:o(3)}]),...d.map((t,a)=>({x:t,y:e.top,direction:1,cost:20+o(1)+3*a})),...d.map((t,a)=>({x:t,y:e.bottom,direction:3,cost:20+o(3)+3*a}))]}(h,u,m,u?[...g?[v(p)]:[],...[...I].flatMap(([e,t])=>a&&y(e)?dJ(t,a):[])]:g?[v(p)]:p.right-p.left>=8&&p.right+8<=h.left+d5.at(-1)?[p.right+8]:[],(ee.get(e.to)>1||w.length>0)&&(!u||et.has(e.to))),b=e=>void 0===Y||(e.direction%2==0?Y<e.x-16-5||Y>e.x+5:Math.abs(e.x-Y)>=5),k=(e,t)=>w.every(a=>Math.hypot(a.x-e.x,a.y-e.y)>=t),C=e=>{let t=dC(e.direction),a=dT([{x:e.x-(0===e.direction?t:0),y:e.y-(1===e.direction?t:3===e.direction?-t:0)},e],t,6);return!D.some(e=>ct(e,a))},_=[...ep.get(e.to)??[]].flatMap(e=>d6(h,u,1===e).find(t=>t.direction===e)??[]),L=e=>{if(e.direction%2==0){let t=d7([{x:e.x-16,y:e.y},e]);return _.every(e=>!ct({from:e,to:{x:e.x,y:e.y+(1===e.direction?1:-1)*8}},t))}return _.every(t=>t.direction!==(e.direction+2)%4||Math.abs(t.x-e.x)>=8)},B=function(e,t,a){let i=(e.top+e.bottom)/2,s=(e.left+e.right)/2,l=e=>40*(1===e!==a),o=(e,t)=>Array.from({length:Math.max(0,Math.floor((t-e)/3))+1},(t,a)=>e+3*a);if(t){let t=(e.right-e.left)/2,a=(e.bottom-e.top)/2,r=(e,l)=>i+l*a*(1-Math.abs(e-s)/t);return[...o(e.top+3,e.bottom-3).map(e=>({x:s-t*(1-Math.abs(e-i)/a),y:e,direction:0,cost:30})),...o(e.left+3,s).flatMap(e=>[{x:e,y:r(e,-1),direction:1,cost:40+l(1)},{x:e,y:r(e,1),direction:3,cost:40+l(3)}])]}return[...o(e.top+3,e.bottom-3).map(t=>({x:e.left,y:t,direction:0,cost:30+Math.abs(t-i)})),...o(e.left+3,e.right-3).flatMap(t=>[{x:t,y:e.top,direction:1,cost:40+l(1)+(t-e.left)/4},{x:t,y:e.bottom,direction:3,cost:40+l(3)+(t-e.left)/4}])]}(h,u,m),S=[[x,e=>b(e)&&k(e,11)&&C(e)&&L(e)],[x,e=>b(e)&&k(e,6)&&C(e)&&L(e)],[B,e=>b(e)&&k(e,3)&&C(e)&&L(e)],[x,e=>b(e)&&k(e,1)&&C(e)],[x,e=>k(e,1)&&C(e)],[B,e=>k(e,1)&&C(e)]].map(([e,t])=>e.filter(t)).find(e=>e.length>0)??x,A=g?v(p)-(p.right-p.left)/4:Math.max(p.left+2,p.right-d4.at(-1)),P=(N.get(e.to)??[]).filter(e=>{let t=ce(e);return K.has(e)&&e.from.x>=A-.5&&(t%2==0||1===t===m)}),V=(j.get(e.from)??[]).filter(e=>Q.has(e)),H=new Map(V.map(e=>{let t=ce(e),a=t%2==1&&1===t!==m;return[`${e.from.x},${e.from.y},${t}`,{...e.from,direction:t,cost:40*!!a}]})),q=[...[...I].flatMap(([t,a])=>{let i,s,l,o,r,n;return t!==e.from&&t!==e.to?[{box:a,clearance:4,sideClearance:8}]:f.get(t).milestone?[{box:(i=(a.right-a.left)/4,s=(a.bottom-a.top)/4,{left:a.left+i,right:a.right-i,top:a.top+s,bottom:a.bottom-s}),clearance:3,own:!0},...(l=(a.top+a.bottom)/2,o=(a.left+a.right)/2,r=(a.right-a.left)/8,n=(a.bottom-a.top)/8,[{left:a.left,right:a.right,top:l-n,bottom:l+n},{left:o-r,right:o+r,top:a.top,bottom:a.bottom}]).map(e=>({box:e,clearance:.5,own:!0})),...[{...a,bottom:a.top},{...a,top:a.bottom},{...a,right:a.left},{...a,left:a.right}].map(e=>({box:e,clearance:3,own:!0,parallel:!0}))]:[{box:a,clearance:3,own:!0}]}),...F],$={sources:[...H.values(),...g||p.right-p.left<8?[]:(u?[v(h)]:d5.some(e=>h.left+e<=h.right-3)?d5.filter(e=>h.left+e<=h.right-3).map(e=>h.left+e):[v(h)]).filter(e=>e-p.right>=3&&e-p.right<8).map(e=>({x:p.right,y:(p.top+p.bottom)/2,direction:0,cost:2,lead:e-p.right})),...d6(p,g,m,u?v(h):void 0,[...u?[h.left-19,h.left+(h.right-h.left)/4-19]:[h.left-19,...d5.filter(e=>h.left+e<=h.right-3).map(e=>h.left+e)],...[...I].flatMap(([t,i])=>t===e.from||t===e.to?[]:dJ(i,a))])],targets:S,obstacles:[...q,...J.map(t=>t.from===e.from?t.arrowhead:t.keepOut),...[...ee.keys()].flatMap(t=>t===e.to?[]:(e=>{let t=ee.get(e)??0;if(t<=0)return[];let a=I.get(e),i=(a.top+a.bottom)/2,s=(a.right-a.left)/4,l=f.get(e).milestone,o=l?[{x:a.left,y:i},{x:a.left+s,y:i-s},{x:a.left+s,y:i+s}]:[0,-7,7].map(e=>({x:a.left,y:i+e})),r=Z.get(e)??[],[n,...d]=o;return(t+r.length>1?[...d,n]:o).filter(e=>r.every(t=>Math.hypot(t.x-e.x,t.y-e.y)>=3)).slice(0,t).map(e=>({left:e.x-16-6,right:e.x+6*!!l,top:e.y-6,bottom:e.y+6}))})(t).map(e=>({box:e,clearance:0})))],behind:Math.min(p.left,h.left-16-8-5)-16,lanes:X,denseLanes:T,routed:D,kin:new Set([...j.get(e.from)??[],...N.get(e.to)??[]]),lastRuns:K,trunks:new Set(V),pastTrunk:new Map(J.flatMap(t=>t.from===e.from?[[t.keepOut,t.trunk]]:[])),edges:E.flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]),...a?{sides:E.flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]),besides:E.flatMap(([e,t])=>y(e)?[t]:[])}:{},top:1,bottom:z-1,budget:c,kinkBudget:el},G=t=>dO(t)??dO({...t,obstacles:[...q,...W.map(t=>t.from===e.from?t.arrowhead:t.keepOut)],pastTrunk:new Map(W.flatMap(t=>t.from===e.from?[[t.keepOut,t.trunk]]:[]))}),R=G($),ea=(t,a)=>[...I].every(([i,s])=>i===e.from||i===e.to||t<=s.left-8||t>=s.right+8||(m?s.top-4>=a||s.bottom<=p.bottom:s.bottom+4<=a||s.top>=p.top)),es=[...d6(p,g,m).map(e=>e.x),p.right+8,...[...I].flatMap(([,e])=>dJ(e,a))],eo=a&&R&&d8(R)?P.flatMap(e=>(function(e,t){let a=ce(e),i=t=>Math.abs(e.to.x-t.x)+Math.abs(e.to.y-t.y),s=[{...e.from,direction:a,cost:48+i(e.from)}];if(a%2==0)return s;for(let a of t){let t={x:e.from.x,y:a};if((a-e.from.y)*(e.to.y-a)<=0||5>Math.abs(a-e.from.y)||23>i(t))continue;let l=48+i(t);s.push({...t,direction:0,cost:l},{...t,direction:2,cost:l})}return s})(e,U).filter(t=>(({x:e,y:t,direction:a})=>a%2==1?e>=A-.5&&ea(e,t):es.some(i=>i>=A-.5&&i<=p.right+8+.5&&(0===a?i<=e-16:i>=e+16)&&ea(i,t)))(t)&&!D.some(a=>a!==e&&!(K.has(a)&&.01>Math.hypot(a.to.x-e.to.x,a.to.y-e.to.y))&&cl(t,e.to,a,5)))):[];if(eo.length>0&&er.remaining>0){let e=Math.min(1e3,er.remaining),t={remaining:e};l=G({...$,targets:[...S,...eo],joins:new Set(P),budget:t,limit:e,kinkBudget:{remaining:0}}),er.remaining-=e-t.remaining}let eh=l&&(o=(s=l).at(-1),r=(e,t,a)=>e>=Math.min(t,a)-.01&&e<=Math.max(t,a)+.01,(n=P.find(({from:e,to:t})=>Math.hypot(t.x-o.x,t.y-o.y)>1&&r(o.x,e.x,t.x)&&r(o.y,e.y,t.y)))?dI(s.at(-2),o,n)?[...s.slice(0,-1),n.to]:[...s,n.to]:s),eg=eh&&!d8(eh)?eh:R,eu=eg&&(a?(t=>{if(t.length<4||ee.get(e.to)>1||!d8(t))return t;let[a,i,s]=t.slice(-3);if(Math.abs(i.x-s.x)>=.01||Math.abs(a.y-i.y)>=.01||i.x>=a.x-.01)return t;let l=s.y>i.y?1:3;for(let e of S.filter(e=>e.direction===l&&.01>Math.abs(e.y-s.y)&&e.x<s.x-1).toSorted((e,t)=>e.x-t.x)){if(er.remaining<=0)break;let i=Math.min(1e3,er.remaining),s={remaining:i},l=dO({...$,sources:[{...a,direction:2,cost:0}],targets:[e],budget:s,limit:i,kinkBudget:{remaining:0}});if(er.remaining-=i-s.remaining,l?.length===3&&.01>Math.abs(l[1].y-a.y))return[...t.slice(0,-2),l[1],e]}return t})(eg):eg);if(t.remaining-=d-c.remaining,eu)return eu;ed+=1;let ef=function(e){let{source:t,target:a,routed:i}=e,s=e.heads.map(({box:e})=>e),l=i.filter(e=>.01>Math.abs(e.from.y-e.to.y)),o=i.filter(e=>Math.abs(e.from.y-e.to.y)>=.01),r=([t,a,i])=>{let r=.01>Math.abs(t.y-a.y),n=r?t.y:t.x,d=r?Math.min(t.x,a.x):Math.min(t.y,a.y),c=r?Math.max(t.x,a.x):Math.max(t.y,a.y),p=1/0;for(let t of r?l:o){if(i&&e.siblings.has(t))continue;let a=Math.abs((r?t.from.y:t.from.x)-n);if(a>=p)continue;let s=r?Math.min(t.from.x,t.to.x):Math.min(t.from.y,t.to.y);Math.min(c,r?Math.max(t.from.x,t.to.x):Math.max(t.from.y,t.to.y))-Math.max(d,s)>0&&(p=a)}let h=ci.findIndex(e=>p>=e);return s.some(e=>ct({from:t,to:a},e))?Math.max(h,3):h},n=(e,t,a=()=>!0)=>{let i;for(let s of e){let e=t(s).map(e=>r(e)),l=100*Math.max(...e,+!a(s))+e.reduce((e,t)=>e+t,0);if((!i||l<i.score)&&(i={candidate:s,score:l}),0===l)break}return i.candidate},d=(t.left+t.right)/2,c=(t.right-t.left)/2,p=a=>e.sourceMilestone?cs(d,c-4,.5).map(e=>({x:e,y:(1===a?t.bottom:t.top)-a*Math.abs(e-d)})):cs(Math.max(d,t.right-6),Math.min(2*c,12),.5).filter(e=>e>=t.left+.5&&e<=t.right-.5).map(e=>({x:e,y:1===a?t.bottom:t.top})),h=e=>[...cs(e,8),...cs(e,8,.5),...cs(e+.1,8,.1)],g=(t,a)=>e.marks.every(e=>e.right<=1.5||e.left>=a||t<=e.top-4||t>=e.bottom+4),u=h(e.sourceRow.top+e.sourceRow.height).filter(a=>a>=t.bottom+2&&a<=e.rowsBottom-1),f=h(e.sourceRow.top).filter(a=>a<=t.top-2&&a>=e.rowsTop+1),m=e=>[...p(1).map(t=>[t,u.filter(a=>!e||g(a,t.x))]),...p(-1).map(t=>[t,f.filter(a=>!e||g(a,t.x))])].filter(([,e])=>e.length>0),v=m(!0),[y,w]=n(v.length>0?v:m(!1),([e,t])=>[[e,{x:e.x,y:t[0]},!0],[{x:e.x,y:t[0]},{x:12,y:t[0]}]]),x=n(w,e=>[[y,{x:y.x,y:e},!0],[{x:y.x,y:e},{x:12,y:e}]]),b=(a.top+a.bottom)/2,k=(a.bottom-a.top)/2,M=(a.right-a.left)/(a.bottom-a.top),C=n(cs(b,k-(e.targetMilestone?4:3)).map(t=>({x:e.targetMilestone?a.left+Math.abs(t-b)*M:a.left,y:t})),e=>[[{x:12,y:e.y},e]],t=>{let a=dT([{x:t.x-16,y:t.y},t],16,4.5);return e.taken.every(e=>Math.hypot(e.x-t.x,e.y-t.y)>=3)&&!i.some(e=>ct(e,a))}),z=10.5,_=n([...cs(12,10.5,.5),...cs(12.1,z-.1,.1)],e=>[[{x:y.x,y:x},{x:e,y:x}],[{x:e,y:x},{x:e,y:C.y}],[{x:e,y:C.y},C]]);return[y,{x:y.x,y:x},{x:_,y:x},{x:_,y:C.y},C]}({marks:i?[...I].flatMap(([t,a])=>t===e.from||t===e.to?[]:[a]):[],source:p,sourceMilestone:g,sourceRow:M[O.get(e.from)],target:h,targetMilestone:u,rowsTop:0,rowsBottom:z,routed:D,heads:W.map(e=>e.keepOut),taken:w,siblings:new Set(V)});return ec.add(ef),ef};$.forEach((e,t)=>{let a=eu(e);R[t]=a,eh(e,a)});let ef=(e,t)=>({leaving:$[e].from===$[t].from,arriving:$[e].to===$[t].to}),em=e=>{let t=R[e],a=0;return R.forEach((i,s)=>{if(s===e||!i)return;let l=ef(e,s);a+=d9(t,i,l)+d9(i,t,l)}),a},ev=new Map;$.forEach((e,t)=>ev.set(e.to,[...ev.get(e.to)??[],t]));let ey=e=>dX(e).reduce((e,{from:t,to:a})=>e+Math.abs(a.x-t.x)+Math.abs(a.y-t.y),0),ew=e=>{let t=dX(R[e]),a=0;return R.forEach((i,s)=>{if(s!==e&&i)for(let e of dX(i))for(let i of t)(function(e,t){let a=e=>.01>Math.abs(e.from.y-e.to.y);if(a(e)===a(t))return!1;let[i,s]=a(e)?[e,t]:[t,e],l=s.from.x,o=i.from.y;return l>Math.min(i.from.x,i.to.x)+.01&&l<Math.max(i.from.x,i.to.x)-.01&&o>Math.min(s.from.y,s.to.y)+.01&&o<Math.max(s.from.y,s.to.y)-.01})(i,e)&&(a+=1)}),a},ex=e=>({conflicts:e.reduce((e,t)=>e+em(t),0),drawn:e.reduce((e,t)=>{let a=R[t];return e+ey(a)+24*(a.length-2)+dU(a)+60*ew(t)},0)}),eb=(e,t)=>e.conflicts<t.conflicts||e.conflicts===t.conflicts&&e.drawn<t.drawn-1e-6,ek=e=>e.some(e=>em(e)>0||ew(e)>0)||e.reduce((e,t)=>{let a=R[t],[i,s]=[a[0],a.at(-1)];return e+ey(a)-Math.abs(s.x-i.x)-Math.abs(s.y-i.y)},0)>60;for(let[e,t]of ev){if(t.length<2||!ek(t))continue;let a=[{order:t.toReversed(),split:!1},...f.get(e).milestone?[{order:t,split:!0}]:[]],i={routes:t.map(e=>R[e]),standing:ex(t),split:!1};for(let s of a){if(ei.remaining<=0||s.split&&(t.forEach((e,t)=>R[e]=i.routes[t]),!t.some(e=>ew(e)>0||dU(R[e])>0)))break;for(let e of t)R[e]=void 0;for(let t of(eg(),s.split&&et.add(e),s.order)){let e=eu($[t]);R[t]=e,eh($[t],e)}et.delete(e);let a=ex(t);eb(a,i.standing)&&(i={routes:t.map(e=>R[e]),standing:a,split:s.split})}t.forEach((e,t)=>R[e]=i.routes[t]),i.split&&et.add(e),eg()}let eM={remaining:48e3},eC=0,ez=e=>{if(eC>=2*$.length)return;eC+=1;let t=R[e];R[e]=void 0,eg();let a=eu($[e],eM);return R[e]=t,eg(),a},e_=(e,t)=>{let a,i=[e,t],s=ex(i);for(let e of i){let t=ez(e);if(!t)continue;let l=R[e];R[e]=t,eg();let o=ex(i);o.conflicts<s.conflicts&&eb(o,s)&&(s=o,a={index:e,points:t}),R[e]=l,eg()}return!!a&&(R[a.index]=a.points,eL[a.index]=eL[a.index]+1,eg(),!0)},eL=$.map(()=>0),eB=new Set;for(let e=0;e<2;e+=1){let e=!1;if(R.forEach((t,a)=>{R.forEach((t,i)=>{let s=R[a];if(i===a||!s||!t||0===d9(s,t,ef(a,i)))return;let l=`${a}.${eL[a]}:${i}.${eL[i]}`;!eB.has(l)&&(eB.add(l),e_(a,i)&&(e=!0))})}),!e)break}for(let e of $.map((e,t)=>({id:`gantt:dependency:${ca(e.from)}:${ca(e.to)}`,...e,points:R[t]})).map(e=>{let[t,...a]=(function(e){var t;let a,i,s=e.at(-1),l=e.at(-2),o=Math.abs(s.x-l.x)+Math.abs(s.y-l.y),r=(a=(t=e).at(-1),i=t.at(-2),.01>Math.abs(a.y-i.y)?16:12);if(o<=r+1)return[...e];let n=r/o;return[...e.slice(0,-1),{x:s.x+(l.x-s.x)*n,y:s.y+(l.y-s.y)*n},s]})(e.points).map(e=>({x:d2(e.x),y:d2(e.y)}));return{type:"arrow",id:e.id,edgeId:e.id,sourceNodeId:`gantt:task:${e.from}`,targetNodeId:`gantt:task:${e.to}`,points:[t,...a],strokeColor:"#5c5345",strokeWidth:1,roughness:0,endArrowhead:"triangle"}}))q.push(e,"front");let eS=e=>{let t="top"===e?"":"-bottom",a="top"===e?-22:z,i="top"===e?a-22:a+22;A.cells.forEach((e,i)=>{let s=d1(e.label,12);q.text(`gantt:tick${t}:${i}`,s,(V(e.start)+V(e.end))/2-s.width/2,a+(22-s.height)/2,12,dZ,"center")}),A.bands.forEach((e,a)=>{let s,l=V(e.end)-V(e.start)-8,o=((s=/^([A-Z][a-z]{2}) \d{4}$/u.exec(e.label))?[e.label,s[1]]:/^\d{4}$/u.test(e.label)?[e.label,`’${e.label.slice(2)}`]:[e.label]).map(e=>d1(e,13)).find(e=>e.width<=l);o&&q.text(`gantt:band${t}:${a}`,o,(V(e.start)+V(e.end))/2-o.width/2,i+(22-o.height)/2,13,dD,"center"),a>0&&q.line(`gantt:band-edge${t}:${a}`,[{x:V(e.start),y:i+3},{x:V(e.start),y:i+22-3}],{strokeColor:dj})}),q.line(`gantt:axis${t}`,[{x:V(A.start),y:"top"===e?0:z},{x:H,y:"top"===e?0:z}],{strokeColor:"#8c826f"})},eA=(g=q.elements.length,eS("top"),q.elements.length-g),eP=-44;if(void 0!==Y){let e=d1(b.today??"Today",12);eP-=18,q.text("gantt:today-label",e,Math.min(Math.max(Y-e.width/2,V(A.start)),Math.max(V(A.start),H-e.width)),eP+(18-e.height)/2,12,dN,"center")}let eV=d0(e.title,Math.max(H-S,360),20);q.text("gantt:title",eV,S,eP-14-eV.height,20,dD,"left");let eH=new Set([A.start,A.end,...A.bands.map(e=>e.start)]),eq=[...A.cells.map(e=>e.start),A.end],eF=_>=16,eI=[!0,!1].flatMap(e=>[{grid:eq,minor:!0,bottom:eF},{grid:eq,minor:!1,bottom:eF},{grid:eq,minor:!1,bottom:!1},{grid:eq.filter(e=>eH.has(e)),minor:!1,bottom:eF},{grid:eq.filter(e=>eH.has(e)),minor:!1,bottom:!1},{grid:[A.start,A.end],minor:!1,bottom:!1}].map(t=>({...t,rowRules:e}))),eE=e=>{let t=e.bottom?z+22:z,a=(e,t,a,i,s)=>({type:"line",id:e,points:[{x:d2(t),y:d2(a)},{x:d2(t),y:d2(i)}],roughness:0,strokeWidth:1,...s});return[...e.rowRules?[...M.slice(1).map(e=>e.top),z].map((e,t)=>({type:"line",id:`gantt:row-rule:${t}`,points:[{x:d2(S),y:d2(e)},{x:d2(H),y:d2(e)}],roughness:0,strokeWidth:1,strokeColor:"#ebe4d8"})):[],...e.minor?A.minor.map(e=>a(`gantt:minor:${tn(e)}`,V(e),0,z,{strokeColor:"#f0ebe1"})):[],...e.grid.map(e=>a(`gantt:grid:${tn(e)}`,V(e),-22,t,{strokeColor:eH.has(e)?dj:"#e6dfd2"})),...void 0===Y?[]:[a("gantt:today",Y,eP+18,t,{strokeColor:dN,strokeStyle:"dashed"})]]},eO=[...I.values()].map(e=>({left:e.left-5,right:e.right+5,top:e.top-1,bottom:e.bottom+1})),eU=e=>e?[...q.textBoxes,...eO]:q.textBoxes,eX=e=>"gantt:today"===e,[eT,e$]=[!0,!1].flatMap(e=>eI.map(t=>[t,e])).find(([e,t])=>{let a=eE(e),i=new Map([...nQ(a,q.textBoxes,e=>!eX(e)),...nQ(a,eU(t),eX)]),s=a.reduce((e,t)=>e+(i.get(t.id)?.length??1),0);return q.elements.length+s+(e.bottom?eA:0)<=a$.maxElements})??[eI.at(-1),!1];for(let e of(eT.bottom&&eS("bottom"),eE(eT)))q.push(e,"gantt:today"===e.id?"middle":"back");q.breakRulesUnderText(e=>e.startsWith("gantt:grid:")||e.startsWith("gantt:minor:")||e.startsWith("gantt:row-rule:")||e.startsWith("gantt:axis")||e.startsWith("gantt:band-edge")),q.breakRulesUnderText(eX,eU(e$));let eY=q.bounds(),eG=40-eY.left,eR=40-eY.top,eD=e=>({x:d2(e.x+eG),y:d2(e.y+eR)}),eZ=q.elements.map(e=>{if("line"===e.type){let[t,a,...i]=e.points.map(eD);return{...e,points:[t,a,...i]}}if("arrow"===e.type){let[t,...a]=e.points.map(eD);return{...e,points:[t,...a]}}return{...e,x:d2(e.x+eG),y:d2(e.y+eR)}}),ej=R.reduce((e,t,a)=>e+R.reduce((e,i,s)=>s===a?e:e+d9(t,i,ef(a,s),!0),0),0);return{scene:{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:Math.ceil(eY.right-eY.left+80),height:Math.ceil(eY.bottom-eY.top+80),accentColor:e.style.accentColor,backgroundColor:e.style.backgroundColor,elements:eZ,layers:[],layouts:[],zOrder:q.zOrder()},crossings:R.reduce((e,t,a)=>e+ew(a),0)/2,findings:function(e,t,a,i){let[s,l,o,r,n]=[0,0,0,0,0];for(let{from:a,to:d,points:c}of e){i.has(c)&&(n+=1),d8(c)&&(s+=1);let e=dX(c),p=e.map(({from:e,to:t})=>Math.abs(t.x-e.x)+Math.abs(t.y-e.y)),h=p.reduce((e,t)=>e+t,0),g=p[0]??0;for(let t=1;t<e.length-1;t+=1){let e=p[t];(g<=46||h-g-e<=46)&&e<40?o+=1:e<28&&(l+=1),g+=e}for(let{from:i,to:s}of e)if(!(Math.abs(i.x-s.x)>=.01))for(let[e,l]of t)e!==a&&e!==d&&14.99>Math.min(Math.abs(i.x-l.left),Math.abs(i.x-l.right))&&Math.min(Math.max(i.y,s.y),l.bottom)-Math.max(Math.min(i.y,s.y),l.top)>1&&(r+=1)}return{conflicts:a,fallbacks:n,detours:s,kinks:l,jogs:o,traces:r}}(R.map((e,t)=>({...$[t],points:e})),E,ej,ec),clear:(s=R.map((e,t)=>({...$[t],points:e})),s.every(({from:e,to:t,points:a})=>dX(a).every(({from:a,to:i})=>{let s=.01>Math.abs(a.x-i.x);return[...I].every(([l,o])=>!!(l===e||l===t||(s?Math.min(Math.max(a.y,i.y),o.bottom)-Math.max(Math.min(a.y,i.y),o.top):Math.min(Math.max(a.x,i.x),o.right)-Math.max(Math.min(a.x,i.x),o.left))<=1)||(s?Math.max(o.left-a.x,a.x-o.right):Math.max(o.top-a.y,a.y-o.bottom))>=(s?8:4)-.02)}))),work:{layouts:1,placements:en,expansions:ea-ei.remaining+48e3-eM.remaining+es-el.remaining+eo-er.remaining,corridors:ed,conflicts:ej}}}let cc="timeline-marker",cp=22,ch=6,cg="#4c4639",cu="#c0392b",cf=[{stroke:"",ink:"#6a4e5c",wash:"#efe6ec"},{stroke:"#1f44c9",ink:"#1a39a8",wash:"#e6eafb"},{stroke:"#1c7a4d",ink:"#15613c",wash:"#def0e5"},{stroke:"#9a6a1f",ink:"#7a5216",wash:"#f6e8cf"}];function cm(e,t,a,i){let s=function(e,t){let a=e=>e.split("\n").length,i=aT(e,200,t);if(1===a(i))return i;let s=t,l=200;for(;l-s>1;){let o=Math.floor((s+l)/2);a(aT(e,o,t))<=a(i)?l=o:s=o}return aT(e,l,t)}(t,a);return{id:e,text:s,fontSize:a,color:i,width:Math.ceil(Math.max(aE(s,a),aO(s,a,200))),height:Math.ceil(s.split("\n").length*a*1.35)}}let cv=[{lookahead:!0,coverPenalty:0},{lookahead:!0,coverPenalty:80},{lookahead:!1,coverPenalty:0},{lookahead:!1,coverPenalty:240}];function cy(e){return e.span?6:("milestone"===e.event.kind?18:12)/2}let cw=[{fontSize:20,textWidth:160,padX:0,padY:0,strokeWidth:2},{fontSize:16,textWidth:180,padX:16,padY:11,strokeWidth:2},{fontSize:14,textWidth:150,padX:12,padY:9,strokeWidth:1}];function cx(e){return cw[Math.min(e,cw.length-1)]}function cb(e,t,a){return{x0:e.x0+t,x1:e.x1+t,y0:e.y0+a,y1:e.y1+a}}function ck(e,t,a){return{boxes:e,places:t,folded:a,top:Math.min(...e.map(e=>e.y0)),bottom:Math.max(...e.map(e=>e.y1)),outer:Math.max(...e.map(e=>e.x1))}}function cM(e,t){return 1===e.places.size&&1===t.places.size?14:28}function cC(e,t=0){return e.reduce((a,i,s)=>a+(i.bottom-i.top)+(0===s?0:cM(e[s-1],i)+t),0)}function cz(e){let t=e.flatMap(e=>[e.x,e.x+e.topic.width]),a=e.flatMap(e=>[e.y,e.y+e.topic.height]);return(Math.max(...t)-Math.min(...t)+40)/(Math.max(...a)-Math.min(...a)+40)}function c_(e){return Math.round(100*e)/100}function cL(e){let[t,,,a]=e;return .5>Math.abs(a.y-t.y)?[{x:c_(t.x),y:c_(t.y)},{x:c_(a.x),y:c_(a.y)}]:aA(e)}function cB(e,t){return{x:1===t?e.x:e.x+e.width,y:e.y+e.height/2}}let cS={circle:24,bucket:28,cylinder:28,diamond:20,document:28,ellipse:24,pipe:28,polygon:28,rectangle:28},cA={database:"cylinder",queue:"pipe",document:"document",storage:"bucket"};function cP(e,t){let a=aX(e,t),i=a.split("\n"),s=aE(a,14),l=Math.ceil(14*i.length*1.35),o=Math.ceil(s+36),r=Math.ceil(l+28);return{text:a,textHeight:l,textWidth:s,width:o,height:r}}function cV(e,t,a){let i=2*aY.boundTextPadding,s="diamond"===e?2:"ellipse"===e||"circle"===e?Math.SQRT2:1,l=Math.ceil((t+i)*s),o=Math.ceil((a+i)*s);for(;a8({height:o,shape:e,width:l}).width<t;)l+=1;for(;a8({height:o,shape:e,width:l}).height<a;)o+=1;return{width:l,height:o}}let cH={bucket:220,circle:260,cylinder:264,diamond:240,document:264,ellipse:260,pipe:240,polygon:264,rectangle:264};function cq(e){return Math.floor(100*e/12)}function cF(e,t){let a=cq(("diamond"===t?744:1116)*14/100),i=cq(cH[t]),s=e=>e.split("\n").length,l=aX(e,a);for(let o=a;s(l)>("diamond"===t||"ellipse"===t||"circle"===t?1:2)&&o<i;)l=aX(e,o=Math.min(i,o+62));let o=s(l);return{text:l,lines:o,width:aE(l,12),height:Math.ceil(12*o*1.25)}}let cI={initial:20,final:28};function cE(e,t){let a=Math.max(e.width,e.height,t);return{...e,width:a,height:a}}function cO(e){return void 0===e.kind?void 0:cI[e.kind]}function cU(e){return"decision"===e||"choice"===e}function cX(e,t=184,a=1116){let i=function(e){if(void 0!==e.shape)return cA[e.shape];let t=e.kind?.toLowerCase();return"start"===t||"end"===t?"ellipse":"initial"===t||"final"===t?"circle":cU(t)?"diamond":"rectangle"}(e),s=cO(e);if(void 0!==s||"choice"===e.kind&&!e.label){let t=s??44;return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},shape:i,x:0,y:0,width:t,height:t,label:""}}let l="diamond"===i?744:a,o=cP(e.label,l),r=e.icon?{slug:e.icon.slug,size:cS[i]}:void 0,n=aR(i)?aD[i]:0,d="diamond"===i?32:"ellipse"===i?20:"pipe"===i?4*n:0,c="diamond"===i?32:"cylinder"===i||"document"===i||"bucket"===i?3*n:0,[p,h]="state"===e.kind?[136,56]:[t,72];if(e.description){let t=cF(e.description,i),a=cP(e.label,Math.max(l,Math.floor(100*t.width/14))),s=Math.max(a.textWidth,t.width),o=cV(i,s,a.textHeight+2*Math.max(a9(r),2+t.height+4));return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...r?{icon:r}:{},shape:i,x:0,y:0,width:Math.max(p,Math.ceil(s+36)+d,o.width),height:Math.max(h,o.height),label:a.text}}let g=r||"diamond"===i||n>0?cV(i,o.textWidth,o.textHeight+a9(r)):{height:0,width:0};return{type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...r?{icon:r}:{},shape:i,x:0,y:0,width:Math.max(p,o.width+d,g.width),height:r?Math.max(h,g.height):Math.max(h,o.height+c,g.height),label:o.text}}function cT(e){let t=new Map,a=new Map;for(let i of e)t.set(i.target,[...t.get(i.target)??[],i]),a.set(i.source,[...a.get(i.source)??[],i]);return{incoming:t,outgoing:a}}function c$(e){return new Map(e.map((e,t)=>[e.id,t]))}function cY(e,t,a){let i=new Map,s=new Set;function l(e){for(let t of(i.set(e,"visiting"),a.get(e)??[])){let e=i.get(t.target);if("visiting"===e){s.add(t.id);continue}e||l(t.target)}i.set(e,"visited")}let o=e.nodes.find(e=>0===(t.get(e.id)??[]).length)??e.nodes[0];for(let t of(o&&l(o.id),e.nodes))i.has(t.id)||l(t.id);return s}let cG=new WeakMap;function cR(e){let t=cG.get(e);if(t||(cQ(e),t=cG.get(e)))return t;let a=cT(e.edges);return t=cY(e,a.incoming,a.outgoing),cG.set(e,t),t}let cD=new WeakMap,cZ="\0group:",cj=iG.fontSize;function cN(e,t){let a=[];for(let i=t;void 0!==i;i=e.parentOf.get(i))a.push(i);return a}function cW(e,t,a){let i=new Set(cN(e,e.groupOf.get(a)));return cN(e,e.groupOf.get(t)).find(e=>i.has(e))}let cJ=new WeakMap;function cK(e){return`${cZ}${e}`}function cQ(e){let t=cJ.get(e);if(void 0!==t)return t??void 0;let a=new Map((e.groups??[]).flatMap(e=>void 0===e.parent?[]:[[e.id,e.parent]])),i=new Set;for(let t of e.nodes)for(let e=t.group;void 0!==e&&!i.has(e);e=a.get(e))i.add(e);let s=(e.groups??[]).filter(e=>i.has(e.id));if(0===s.length)return void cJ.set(e,null);let l=new Set(s.map(e=>e.id)),o=new Map([...a].filter(([e,t])=>l.has(e)&&l.has(t))),r=s.some(e=>void 0!==e.parent||void 0!==e.kind),n=new Map(e.nodes.flatMap(e=>void 0!==e.group&&l.has(e.group)?[[e.id,e.group]]:[])),d=new Set(e.nodes.map(e=>e.id)),c=new Set(e.edges.flatMap(e=>[e.source,e.target].filter(e=>!d.has(e)&&l.has(e)))),p=e=>{let t=[];for(let a=c.has(e)?e:n.get(e);void 0!==a;a=o.get(a))t.push(a);return t},h=(e,t)=>{let a=p(t),i=void 0===e?a.length:a.indexOf(e);if(!(i<0||0===i&&c.has(t)))return 0===i?t:cK(a[i-1])},g=(e,t)=>({id:t,label:e.label,kind:"process",metadata:{}}),u=cT(e.edges),f=cY(e,u.incoming,u.outgoing),m=new Set(e.edges.flatMap(e=>e.source===e.target?[e.id]:[])),v=s.map(t=>{let a=s.filter(e=>o.get(e.id)===t.id),i=e.edges.flatMap(e=>{let[a,i]=[h(t.id,e.source),h(t.id,e.target)];return void 0===a||void 0===i||a===i&&a!==e.source?[]:[a===e.source&&i===e.target?e:{...e,source:a,target:i}]}),l=[];for(let i of e.nodes){let e=h(t.id,i.id);if(void 0===e||l.some(t=>t.id===e))continue;let s=a.find(t=>cK(t.id)===e);l.push(s?g(s,e):i)}let n={...e,groups:[],nodes:l,edges:i},d={...n,layout:{...e.layout,direction:c7[e.layout.direction]}},c=new Set(i.flatMap(e=>f.has(e.id)?[e.id]:[]));if(a.length>0){let e={...n,edges:i.filter(e=>!c.has(e.id))},t=cT(e.edges);for(let a of cY(e,t.incoming,t.outgoing))c.add(a)}for(let e of(cG.set(n,c),cG.set(d,c),c))m.add(e);if(r){let a=function(e,t,a,i){let s=e=>void 0!==i(e),l=new Map;for(let t of e.edges)s(t.source)||s(t.target)||l.set(t.source,[...l.get(t.source)??[],t.target]);let o=e=>{let t=new Set([e]);for(let e of t)for(let a of l.get(e)??[])t.add(a);return t},r=new Map;for(let e of t.edges)a.has(e.id)||r.set(e.source,[...r.get(e.source)??[],e.target]);let n=(e,t)=>{let a=new Set([e]);for(let e of a)for(let t of r.get(e)??[])a.add(t);return a.has(t)},d=[];for(let t of e.edges){if(!s(t.source)||s(t.target))continue;let a=o(t.target);for(let l of e.edges){if(s(l.source)||!s(l.target)||!a.has(l.source))continue;let[e,o]=[i(t.source),i(l.target)];!(e===o||d.some(([t,a])=>t===e&&a===o))&&(n(o,e)||(d.push([e,o]),r.set(e,[...r.get(e)??[],o])))}}return d}(e,n,c,e=>h(t.id,e));a.length>0&&(cD.set(n,a),cD.set(d,a))}let p=new Set(e.edges.flatMap(e=>{let[a,i]=[h(t.id,e.source),h(t.id,e.target)];return void 0===a&&void 0!==i?[i]:void 0===i&&void 0!==a?[a]:[]}));return{across:d,children:a.map(e=>e.id),crossing:p,diagram:n,group:t}}),y=[],w=new Set;for(let t of e.nodes){let e=h(void 0,t.id);if(w.has(e))continue;w.add(e);let a=p(t.id).at(-1);y.push(void 0===a?t:g(s.find(e=>e.id===a),e))}let x=e=>h(void 0,e)??e,b=e.edges.filter(e=>x(e.source)!==x(e.target)),k={...e,groups:[],nodes:y,edges:b.map(e=>({...e,source:x(e.source),target:x(e.target)}))},M=cT(k.edges),C=cY(k,M.incoming,M.outgoing);for(let e of(cG.set(k,C),C))m.add(e);cG.set(e,m);let z={composites:c,crossEdges:b,groupOf:n,groups:v,parentOf:o,top:k,zoned:r};return cJ.set(e,z),z}function c1(e,t,a){let i=c$(e.nodes),s=new Map(e.nodes.map(e=>[e.id,0])),l=new Map(e.nodes.map(e=>[e.id,0]));for(let t of e.edges)a.has(t.id)||s.set(t.target,(s.get(t.target)??0)+1);let o=[];for(let t of e.nodes)(s.get(t.id)??0)===0&&o.push(t.id);let r=new Set;for(let e=0;e<o.length;e+=1){let n=o[e];if(!n||r.has(n))continue;r.add(n);let d=l.get(n)??0;for(let r of t.outgoing.get(n)??[]){if(a.has(r.id))continue;l.set(r.target,Math.max(l.get(r.target)??0,d+1));let t=(s.get(r.target)??0)-1;s.set(r.target,t),0===t&&function(e,t,a,i){let s=a.get(t)??Number.MAX_SAFE_INTEGER,l=e.findIndex((e,t)=>t>i&&(a.get(e)??Number.MAX_SAFE_INTEGER)>s);-1===l?e.push(t):e.splice(l,0,t)}(o,r.target,i,e)}}for(let i of e.nodes)!function e(i){if(r.has(i))return l.get(i)??0;let s=0;for(let l of t.incoming.get(i)??[])a.has(l.id)||(s=Math.max(s,e(l.source)+1));return r.add(i),l.set(i,s),s}(i.id);return l}let c0=new WeakMap,c2={TB:"bottom",BT:"top",LR:"right",RL:"left"};function c3(e,t,a,i,s=184,l=1116){return new Map(e.nodes.map(e=>{let o=cX(e,s,l),r=t.get(e.id),n={...o,width:Math.max(o.width,r?.width??0),height:Math.max(o.height,r?.height??0)},d=(a.outgoing.get(e.id)??[]).filter(t=>t.target!==e.id),c=(a.incoming.get(e.id)??[]).filter(t=>t.source!==e.id).length+d.length,p=!cU(e.kind)&&d.length>1&&d.some(e=>e.label)?Math.max(18,...d.map(e=>{let t=hh(e.label??"");return(i?t.width:t.height)+24})):18,h=d.filter(e=>e.label),g=void 0!==cO(e)?0:"state"===e.kind?32+h.reduce((e,t)=>{let a=hh(t.label);return e+(i?a.width:a.height)+24},0)+Math.max(0,c-h.length-1)*pF:32+Math.max(0,c-1)*p;return[e.id,"choice"!==e.kind||e.label?{...n,...i?{width:Math.max(n.width,g)}:{height:Math.max(n.height,g)}}:cE(n,g)]}))}function c5(e,t,a,i=!1){let s="TB"===e.layout.direction||"BT"===e.layout.direction,[l,o]=s?["left","right"]:["top","bottom"],r=(e,t)=>Math.max(112,(a.get(pS(e.nodeId,o))??0)+(a.get(pS(t.nodeId,l))??0)+18),n=cT(e.edges),d=c3(e,t,n,s),c=cR(e),p=function(e,t,a){let i=cD.get(e);if(!i)return t;for(let s=!0,l=0;s&&l<=e.nodes.length;l+=1){for(let[e,a]of(s=!1,i))t.get(a)<t.get(e)&&(t.set(a,t.get(e)),s=!0);for(let i of e.edges)!a.has(i.id)&&i.source!==i.target&&t.get(i.target)<t.get(i.source)+1&&(t.set(i.target,t.get(i.source)+1),s=!0)}return t}(e,c1(e,n,c),c),h=Array.from((function(e,t,a,i,s,l=!1){var o,r,n,d;let c,p,h=c$(e.nodes),g=new Map;for(let i of e.nodes){let e=a.get(i.id)??0,s=t.get(i.id);s&&g.set(e,[...g.get(e)??[],s])}for(let e=0;e<4;e+=1)for(let e of Array.from(g.keys()).sort((e,t)=>e-t)){let t=g.get(e);if(!t||t.length<2)continue;let a=new Map;(g.get(e-1)??[]).forEach((e,t)=>{a.set(e.nodeId,t)});let l=new Map;(g.get(e+1)??[]).forEach((e,t)=>{l.set(e.nodeId,t)});let o=e=>{let t=[...(i.incoming.get(e.nodeId)??[]).filter(e=>!s.has(e.id)).map(e=>a.get(e.source)).filter(e=>void 0!==e),...(i.outgoing.get(e.nodeId)??[]).filter(e=>!s.has(e.id)).map(e=>l.get(e.target)).filter(e=>void 0!==e)];return 0===t.length?h.get(e.nodeId)??Number.MAX_SAFE_INTEGER:t.reduce((e,t)=>e+t,0)/t.length};g.set(e,[...t].sort((e,t)=>{let a=o(e)-o(t);return Math.abs(a)>.001?a:(h.get(e.nodeId)??Number.MAX_SAFE_INTEGER)-(h.get(t.nodeId)??Number.MAX_SAFE_INTEGER)}))}return l?(o=g,r=e,n=a,d=s,(c=c0.get(r))||(c=function(e,t,a,i){let s=new Map,l=new Set,o=(e,t,a)=>s.set(a,[...s.get(a)??[],[e,t]]);for(let s of t.edges){let[t,r]=i.has(s.id)?[s.target,s.source]:[s.source,s.target],[n,d]=(a.get(t)??0)<=(a.get(r)??0)?[t,r]:[r,t],c=a.get(n)??0,p=a.get(d)??0;if(c===p)continue;let h=n;for(let t=c+1;t<p;t+=1){let a=`\0${s.id}\0${t}`;l.add(a);let i=e.get(t-1),r=e.get(t);r.splice(Math.round((i.indexOf(h)+.5)/i.length*r.length),0,a),o(h,a,t-1),h=a}o(h,d,p-1)}let r=new Map,n=t=>e.get(t)?.forEach((e,t)=>r.set(e,t)),d=[...e.keys()].sort((e,t)=>e-t);d.forEach(n);let c=e=>{let t=s.get(e)??[],a=0;for(let[e,[i,s]]of t.entries())for(let[l,o]of t.slice(e+1))(r.get(i)-r.get(l))*(r.get(s)-r.get(o))<0&&(a+=1);return a},p=()=>d.reduce((e,t)=>e+c(t),0),h=p(),g=()=>new Map([...e].map(([e,t])=>[e,t.filter(e=>!l.has(e))])),u=g();if(0===h)return u;let f=new Map;for(let e of s.values())for(let[t,a]of e){let e=f.get(t)??{above:[],below:[]};e.below.push(a),f.set(t,e);let i=f.get(a)??{above:[],below:[]};i.above.push(t),f.set(a,i)}let m={crossings:h,order:u};for(let t=0;t<8&&m.crossings>0;t+=1){let a=t%2==0;for(let t of a?d.slice(1):d.slice(0,-1).reverse()){let i=e.get(t),s=new Map(i.map((e,t)=>{let i=(a?f.get(e)?.above:f.get(e)?.below)??[];return[e,i.length>0?i.reduce((e,t)=>e+r.get(t),0)/i.length:t]}));i.sort((e,t)=>s.get(e)-s.get(t)),n(t)}for(let t=!0;t;)for(let a of(t=!1,d)){let i=e.get(a);for(let e=0;e+1<i.length;e+=1){let s=c(a-1)+c(a);[i[e],i[e+1]]=[i[e+1],i[e]],n(a),c(a-1)+c(a)<s?t=!0:([i[e],i[e+1]]=[i[e+1],i[e]],n(a))}}let i=p();i<m.crossings&&(m={crossings:i,order:g()})}return m.order}(new Map([...o].map(([e,t])=>[e,t.map(e=>e.nodeId)])),r,n,d),c0.set(r,c)),p=new Map([...o.values()].flat().map(e=>[e.nodeId,e])),new Map([...o.keys()].map(e=>[e,(c.get(e)??[]).flatMap(e=>p.has(e)?[p.get(e)]:[])]))):g})(e,d,p,n,c,i).entries()).sort(([e],[t])=>e-t).map(([e,t])=>({breadth:t.reduce((e,a,i)=>e+(s?a.width:a.height)+(i>0?r(t[i-1],a):0),0),depth:Math.max(...t.map(e=>s?e.height:e.width)),rank:e,shapes:t})),g=c2[e.layout.direction],u=(e,t)=>Math.max(0,...e.map(e=>a.get(pS(e.nodeId,t))??0));return{feedbackEdges:c,gapAfter:h.map((t,i)=>{let l=s?0:Math.max(0,...e.edges.filter(e=>t.shapes.some(t=>t.nodeId===e.source)&&e.label&&e.source!==e.target).map(e=>hh(e.label,cU(d.get(e.source)?.kind)).width+16+72)),o=h[i+1];return Math.max(96,l,o&&a.size>0?u(t.shapes,g)+u(o.shapes,pI[g])+18:0)}),gapBetween:r,highSide:o,lowSide:l,rankByNodeId:p,rankMetrics:h,reachOf:u,vertical:s}}let c4={bandOf:new Map,continuations:new Set},c6={crossingRepair:!1,reorder:!1,wrap:c4},c7={TB:"LR",BT:"LR",LR:"TB",RL:"TB"};function c8(e,t){let[a,i]=e>t?[e,t]:[t,e];return(a+40)/(i+40)}function c9(e,t,a=0,i){let s;if("orthogonal"!==e.layout.edgeRouting||cQ(e)||pl(e))return c4;let{feedbackEdges:l,gapAfter:o,rankByNodeId:r,rankMetrics:n}=c5(e,i?.sizes??new Map,new Map,t),d="TB"===e.layout.direction||"BT"===e.layout.direction,c=(e,t)=>n.slice(e,t+1).reduce((e,t)=>e+t.depth,0)+o.slice(e,t).reduce((e,t)=>e+t,0),p=(e,t)=>Math.max(...n.slice(e,t+1).map(e=>e.breadth)),h=n.length-1,g=c8(c(0,h),p(0,h)),u=e=>Math.max(...n[e].shapes.map(e=>i?.weights.get(e.nodeId)??1)),f=(e,t)=>{let a=0;for(let i=e;i<=t;i+=1)a+=u(i);return a};if(5>f(0,h)||c(0,h)<=p(0,h))return c4;let m=new Map(e.nodes.map(e=>[e.id,e.kind])),v=e=>r.get(e)??0,y=new Map;for(let[t,a]of n.entries()){let s=e.edges.filter(e=>Math.min(v(e.source),v(e.target))<=a.rank&&Math.max(v(e.source),v(e.target))>a.rank),[o]=s;(i?s.length>=1:1===s.length)&&o&&s.every(e=>!l.has(e.id)&&v(e.source)===a.rank&&v(e.target)===a.rank+1&&!cU(m.get(e.source)))&&y.set(t,o.id)}let w=new Map(e.edges.map(e=>[e.id,e.label])),x=(e,t)=>{let a=w.get(y.get(t)??""),i=a?hh(a):void 0,s=t===h?0:Math.max(36,i?d?Math.max(40,i.height+24):i.width+16:0);return c(e,t)+36*(e>0)+s},b=[...y.keys(),h].sort((e,t)=>e-t),k=i?1:2,M=e=>{let t,i=(s,l)=>{if(s.length===e-1){if(f(l+1,h)<k)return;let e=[...s,h],i=e.map((t,a)=>x(0===a?0:e[a-1]+1,t)),o=Math.max(...i);if(Math.min(...i)<a*o)return;let r=i.reduce((e,t)=>e+t**2,0);(!t||o<t.longest||o===t.longest&&r<t.squares)&&(t={ends:e,longest:o,squares:r});return}for(let e of b)e!==h&&e>l&&f(l+1,e)>=k&&i([...s,e],e)};return i([],-1),t},[C,z]=i?[i.bands,Math.min(i.bands,b.length)]:[2,Math.min(6,b.length)];for(let e=C;e<=z;e+=1){let t=new Map;for(let e of b)f(0,e)>=k&&e<h&&t.set(e,{ends:[e],longest:x(0,e),squares:x(0,e)**2});for(let a=2;a<=e;a+=1){let i=new Map;for(let s of b)if(a===e?s===h:s!==h)for(let[e,a]of[...t].reverse()){if(s<=e||f(e+1,s)<k)continue;let t=x(e+1,s),l={ends:[...a.ends,s],longest:Math.max(a.longest,t),squares:a.squares+t**2},o=i.get(s);(!o||l.longest<o.longest||l.longest===o.longest&&l.squares<o.squares)&&i.set(s,l)}t=i}let i=a>0?M(e):t.get(h);if(!i)continue;let l=[0,...i.ends.slice(0,-1).map(e=>e+1)].reduce((e,t,a)=>e+p(t,i.ends[a]),0)+(e-1)*144,o=c8(i.longest,l);if((!s||o<s.aspect)&&(s={aspect:o,ends:i.ends}),o<=2)break}if(!s||s.aspect>=g)return c4;let _=new Map,L=0;for(let[e,t]of n.entries()){for(let e of t.shapes)_.set(e.nodeId,L);s.ends.includes(e)&&e!==h&&(L+=1)}return{bandOf:_,continuations:new Set(s.ends.filter(e=>e!==h).map(e=>y.get(e))),...i?{under:!0}:{}}}function pe(e,t=new Map,a=new Map,{compactGaps:i,reorder:s,wrap:l}=c6,o=new Map){let{gapAfter:r,gapBetween:n,highSide:d,lowSide:c,rankMetrics:p,reachOf:h,vertical:g}=c5(e,t,a,s),u=[];for(let[e,t]of p.entries()){let a=l.bandOf.get(t.shapes[0].nodeId)??0;(u[a]??=[]).push({index:e,metric:t})}let f=[],m=l.under?function(e,t,a,i){let s=new Map,l=t.map(e=>{let t=0;for(let{index:i,metric:l}of e){for(let e of l.shapes)s.set(e.nodeId,t+l.depth);t+=l.depth+a[i]}return t-a[e.at(-1).index]}),o=Math.max(...l),r=[0];for(let a=1;a<t.length;a+=1){let t=e.edges.flatMap(e=>i.get(e.source)===a-1&&i.get(e.target)===a?[s.get(e.source)+r[a-1]-l[a]]:[]);r.push(Math.max(0,Math.min(Math.max(0,...t),o-l[a])))}return r}(e,u,r,l.bandOf):[],v=48;for(let[e,t]of u.entries()){let a=Math.max(...t.map(({metric:e})=>e.breadth)),s=48+(m[e]??0);for(let{index:e,metric:l}of t){let[t]=1===l.shapes.length?l.shapes:[],d=v+Math.max(0,a-l.breadth)/2-(t?o.get(t.nodeId)??0:0);for(let[e,t]of l.shapes.entries()){let a=l.shapes[e+1];g?(f.push({...t,x:d,y:s+Math.max(0,l.depth-t.height)/2}),d+=t.width):(f.push({...t,x:s+Math.max(0,l.depth-t.width)/2,y:d}),d+=t.height),a&&(d+=n(t,a))}s+=l.depth+Math.min(i?.get(e)??1/0,r[e])}let l=u[e+1];l&&(v+=a+Math.max(144,h(t.flatMap(({metric:e})=>e.shapes),d)+h(l.flatMap(({metric:e})=>e.shapes),c)+72))}if("BT"===e.layout.direction){let e=Math.max(...f.map(e=>e.y+e.height));return f.map(t=>({...t,y:48+e-t.y-t.height}))}if("RL"===e.layout.direction){let e=Math.max(...f.map(e=>e.x+e.width));return f.map(t=>({...t,x:48+e-t.x-t.width}))}return f}function pt(e,t=new Map,a=new Map,i=c6,s=new Map){if(pl(e))return function(e,t,a,i=c6){let{compactGaps:s,wrap:l}=i,o=e.lanes,{direction:r}=e.layout,{along:n,across:d,backSide:c,breadth:p,columnCount:h,columnOf:g,columns:u,content:f,depth:m,depthOf:v,forwardSide:y,gapAfter:w,headerSize:x,laneIndex:b,laneOf:k,offset:M,padding:C,poolBreadth:z,reach:_,shapes:L,vertical:B,wrapped:S}=pr(e,t,a,i.throughHandoffs),A=g.map(e=>l.bandOf.get(e[0]?.nodeId??"")??0),P=Math.max(0,...A)+1,V=Array.from({length:P},(e,t)=>t),H=Math.max(48,...V.map(e=>_(g[A.indexOf(e)]??[],c)+ps)),q=Math.max(48,...V.map(e=>_(g[A.lastIndexOf(e)]??[],y)+ps)),F="RL"===r||"BT"===r,[I,E]=F?[q,H]:[H,q],O=48+x+I,U=[],X=O,T=0;for(let[e,t]of m.entries())e>0&&A[e]!==A[e-1]&&(X=O),U.push(X),X+=t,T=Math.max(T,X-O),e<h-1&&A[e+1]===A[e]&&(X+=Math.min(s?.get(e)??1/0,w[e]));let $=O+T,Y=$+E,G=V.map(t=>[...l.continuations].filter(a=>{let i=e.edges.find(e=>e.id===a);return void 0!==i&&l.bandOf.get(i.source)===t})),R=[];for(let e of(X=48,V))R.push(X),X+=z+pn(G[e].length);let D=(e,t)=>R[e]+p.slice(0,t).reduce((e,t)=>e+t,0),Z=e.nodes.map(e=>{let t=L.get(e.id),a=b.get(e.lane),i=u.get(e.id),s=U[i]+(m[i]-t[v])/2,l=F?O+$-s-t[v]:s,o=D(A[i],a)+C[a].low+(p[a]-C[a].low-C[a].high-f[a])/2+M.get(e.id);return{...t,[n]:l,[d]:o}}),j=(e,t,a,i)=>B?{x:a,y:e,width:i,height:t}:{x:e,y:a,width:t,height:i},N=function(e,t,a){let i=new Map;for(let s of e){let e=`lane:${encodeURIComponent(s.id)}`,l=e=>Array.from({length:t},(t,a)=>0===a?e:`${e}:${a+1}`).some(e=>a.has(e)||a.has(`${e}:header`)),o=e;for(let t=1;l(o);t+=1)o=`${e}@${t}`;i.set(s.id,o)}return i}(o,P,new Set(e.nodes.map(e=>e.id))),W=V.flatMap(e=>o.map((t,a)=>({box:j(48,Y-48,D(e,a),p[a]),elementId:0===e?N.get(t.id):`${N.get(t.id)}:${e+1}`,header:j(48,x,D(e,a),p[a]),id:t.id,label:t.label,pool:e,text:S[a].text}))),J=V.map(e=>j(48,Y-48,R[e],z));return{lanes:{continuations:l.continuations,frames:W,laneOf:k,pool:pa(J),pools:J,vertical:B},nodes:Z}}(e,t,a,i);let l=cQ(e);return l?function(e,t,a,i,s,l){let o="TB"===e.layout.direction||"BT"===e.layout.direction,{zoned:r}=t,n=28*!r,d=new Map(a),c=new Map(i),p=new Map(t.groups.map(e=>[e.group.id,e])),h=new Map,g=new Map,u=s.groupsAcross&&!r?new Set(t.groups.map(e=>e.group.id)):new Set,f=({across:e,children:a,crossing:m,diagram:v,group:y})=>{for(let e of a)f(p.get(e));let w=pe(u.has(y.id)?e:v,d,c,{...c6,reorder:s.reorder,wrap:s.zoneWraps?.get(y.id)??c4},g),x=pa(w),b=(e,t)=>"top"===t?e.y-x.y:"bottom"===t?x.y+x.height-e.y-e.height:"left"===t?e.x-x.x:x.x+x.width-e.x-e.width,k=e=>Math.max(r?24:40,...w.map(t=>(c.get(pS(t.nodeId,e))??0)-b(t,e)+18))+(l.get(y.id)??0),M=ij(y.label),C=r?12+M+iG.clearance:M+2*iG.clearance,z=w.filter(e=>m.has(e.nodeId)&&.01>=b(e,"top")).map(e=>e.x-x.x+e.width/2-36),_={top:k("top")+36*!!r,bottom:k("bottom"),right:k("right"),left:o&&z.length>0?Math.max(k("left"),C+18-Math.min(...z)):k("left")},L={content:x,group:y,height:x.height+_.top+_.bottom,nodes:w,padding:_,width:Math.max(x.width+_.left+_.right,r?C+12:M+2*iG.clearance+16,(i.get(pS(y.id,"top"))??0)>0&&t.composites.has(y.id)?M+2*iG.clearance+36+16+t.crossEdges.filter(e=>e.source===y.id||e.target===y.id).length*pF:0)};h.set(y.id,L);let B=cK(y.id);d.set(B,{width:L.width,height:L.height+n}),r&&g.set(B,o?(L.padding.left-L.padding.right)/2:(L.padding.top-L.padding.bottom)/2);let S=(L.width-L.content.width-L.padding.left-L.padding.right)/2,A=(e,t)=>"top"===t?e.y-L.content.y+L.padding.top+n:"bottom"===t?L.content.y+L.content.height-e.y-e.height+L.padding.bottom:"left"===t?e.x-L.content.x+L.padding.left+S:L.content.x+L.content.width-e.x-e.width+L.padding.right+S;for(let e of["top","right","bottom","left"]){let a=Math.max(0,t.composites.has(y.id)?(i.get(pS(y.id,e))??0)-("top"===e?n:0):0,...w.map(t=>(c.get(pS(t.nodeId,e))??0)-A(t,e)));a>0&&c.set(pS(B,e),a)}};for(let e of t.groups)t.parentOf.has(e.group.id)||f(e);let m=s.zoneWraps?.get("")??c4,v=pe(t.top,d,c,{...s,wrap:m},g),y=new Map;for(let e of v)e.nodeId.startsWith(cZ)||y.set(e.nodeId,{nodes:[e]});let w=new Map,x=(e,t,a)=>{let i=h.get(e),s={x:t.x,y:t.y+n,width:t.width,height:t.height-n};w.set(e,s);let l=s.x+i.padding.left+(s.width-i.content.width-i.padding.left-i.padding.right)/2-i.content.x,o=s.y+i.padding.top+(s.height-i.content.height-i.padding.top-i.padding.bottom)/2-i.content.y;for(let e of i.nodes){let t={...e,x:e.x+l,y:e.y+o};e.nodeId.startsWith(cZ)?x(e.nodeId.slice(cZ.length),t,a):a.push(t)}return s};for(let e of t.groups){if(t.parentOf.has(e.group.id))continue;let a=cK(e.group.id),i=v.find(e=>e.nodeId===a),s=[],l=x(e.group.id,i,s),o=t.groups.flatMap(({group:a})=>a.id!==e.group.id&&pi(t,a.id).at(-1)===e.group.id?[a.id]:[]);y.set(a,{frame:l,...o.length>0?{nested:new Map(o.map(e=>[e,w.get(e)]))}:{},nodes:s})}for(let[e,a]of(function(e,t,a,i=new Map){let{crossEdges:s,top:l}=e,o=cR(l),r=c1(l,cT(l.edges),o),n=new Map;for(let e of l.nodes){let t=r.get(e.id)??0;n.set(t,[...n.get(t)??[],e.id])}let d=a?"x":"y",c=a?"width":"height",p=Math.max(0,...i.values())+1,h=e=>{let a=[...t].filter(([t])=>(i.get(t)??0)===e).map(([,e])=>e.frame??e.nodes[0]);return{start:Math.min(...a.map(e=>e[d])),end:Math.max(...a.map(e=>e[d]+e[c]))}},g=Array.from({length:p},(e,t)=>0===t?0:h(t).start-h(t-1).end),u=e=>(n.get(e)??[]).reduce((e,a)=>{let i=t.get(a);return e+(i.frame??i.nodes[0])[c]},0),f=[...n.keys()].sort((e,t)=>e-t),m=f.reduce((e,t)=>u(t)>u(e)?t:e),v=a=>{let i=e.composites.has(a)?t.get(cK(a)).frame:[...t.values()].flatMap(e=>e.nodes).find(e=>e.nodeId===a);return i[d]+i[c]/2},y=(e,a)=>{let i=t.get(e);for(let[e,t]of(i.nodes=i.nodes.map(e=>({...e,[d]:e[d]+a})),i.frame&&(i.frame={...i.frame,[d]:i.frame[d]+a}),i.nested??[]))i.nested.set(e,{...t,[d]:t[d]+a})},w=e=>i.get(n.get(e)?.[0]??"")??0,x=(e,t,a)=>{let[i]=n.get(e)??[];if(!i||1!==n.get(e).length||w(e)!==w(t))return;let d=l.edges.find(e=>!o.has(e.id)&&(a?e.target:e.source)===i&&r.get(a?e.source:e.target)===t);if(!d)return;let c=s[l.edges.indexOf(d)],[p,h]=a?[c.target,c.source]:[c.source,c.target];y(i,v(h)-v(p))},b=a=>{let i=n.get(a);if(!e.zoned||i.length<2)return;let r=e=>t.get(e).frame??t.get(e).nodes[0],p=new Map(i.map(e=>[e,l.edges.flatMap((t,a)=>{let l=s[a],[r,n]=t.source===e?[l.source,l.target]:[l.target,l.source];if(t.source!==e&&t.target!==e||i.includes(t.source===e?t.target:t.source))return[];let d=v(n);return o.has(t.id)&&t.source===e?[d,d]:[d]})])),h=[...i].sort((e,t)=>r(e)[d]-r(t)[d]),g=e=>e.reduce((e,t)=>e+t,0)/e.length,u=e=>p.get(e).length>0?g(p.get(e)):r(e)[d]+r(e)[c]/2,f=[...h].sort((e,t)=>u(e)-u(t)),m=h.slice(1).map((e,t)=>{let a=r(h[t]);return r(e)[d]-a[d]-a[c]}),w=i.flatMap(e=>p.get(e)),x=f.reduce((e,t)=>e+r(t)[c],0)+m.reduce((e,t)=>e+t,0),b=w.length>0?g(w)-x/2:r(h[0])[d];for(let[e,t]of f.entries())y(t,b-r(t)[d]),b+=r(t)[c]+(m[e]??0)};for(let e of f.filter(e=>e>m))x(e,e-1,!0),b(e);for(let e of f.filter(e=>e<m).reverse())x(e,e+1,!1),b(e);for(let e=1;e<p;e+=1){let a=h(e-1).end+g[e]-h(e).start;for(let[s]of t)(i.get(s)??0)===e&&y(s,a)}}(t,y,o,m.bandOf),y))for(let[t,i]of(a.frame&&w.set(e.slice(cZ.length),a.frame),a.nested??[]))w.set(t,i);let b=[...y.values()].flatMap(e=>e.nodes),k=c$(e.nodes);b.sort((e,t)=>k.get(e.nodeId)-k.get(t.nodeId));let M=(r?[...t.groups].sort((e,a)=>pi(t,e.group.id).length-pi(t,a.group.id).length):t.groups).map(({group:e})=>{let t=w.get(e.id);return{box:t,elementId:`group:${e.id}`,id:e.id,...r&&void 0!==e.kind?{kind:e.kind}:{},label:e.label,labelBox:r?function(e,t){let{clearance:a,height:i}=iG;return{x:e.x+12-a,y:e.y+(36-i)/2-a,width:ij(t)+2*a,height:i+2*a}}(t,e.label):iN({...t,name:e.label})}});return{groups:{across:u,composites:t.composites,frames:M,groupOf:t.groupOf,parentOf:t.parentOf,zoned:r},nodes:b}}(e,l,t,a,i,s):{nodes:pe(e,t,a,i)}}function pa(e){let t=Math.min(...e.map(e=>e.x)),a=Math.min(...e.map(e=>e.y));return{x:t,y:a,width:Math.max(...e.map(e=>e.x+e.width))-t,height:Math.max(...e.map(e=>e.y+e.height))-a}}function pi(e,t){let a=[];for(let i=t;void 0!==i;i=e.parentOf.get(i))a.push(i);return a}let ps=36;function pl(e){return(e.lanes??[]).length>0}function po(e,t=!1){let a=e.lanes??[],i=new Map(a.map((e,t)=>[e.id,t])),s=new Map(e.nodes.map(e=>[e.id,i.get(e.lane??"")??0])),l=cR(e),o=e.edges.filter(e=>!l.has(e.id)&&e.source!==e.target),r=new Set,n=new Set,d=new Set;for(let e of o){let[a,i]=[s.get(e.source),s.get(e.target)],l=`${e.source}\0${i}`,o=Math.abs(a-i)>1;a===i||o&&!t||d.has(l)||(d.add(l),(o?n:r).add(e.id))}let c=new Map(e.nodes.map(e=>[e.id,[]])),p=new Map(e.nodes.map(e=>[e.id,[]]));for(let e of o)c.get(e.target).push(e),p.get(e.source).push(e);let h=c$(e.nodes),g=t=>{let i=new Map(e.nodes.map(e=>[e.id,c.get(e.id).length])),l=e.nodes.filter(e=>0===i.get(e.id)).map(e=>e.id),o=new Map,r=new Map;for(;l.length>0;){l.sort((e,t)=>h.get(e)-h.get(t));let e=l.shift(),n=s.get(e),d=a.map((t,a)=>Math.max(-1,...c.get(e).map(e=>r.get(e.source)[a]))),g=d[n]+1;for(let a of c.get(e))g=Math.max(g,o.get(a.source)+ +!t.has(a.id));for(let t of(o.set(e,g),d[n]=g,r.set(e,d),p.get(e))){let e=i.get(t.target)-1;i.set(t.target,e),0===e&&l.push(t.target)}}return o},u=new Map(o.map(e=>[e.id,e]));for(;;){let t=g(new Set([...r,...n])),a=[...n].filter(a=>{let{source:i,target:l}=u.get(a),o=t.get(i);if(t.get(l)!==o)return!1;let[r,n]=[s.get(i),s.get(l)].sort((e,t)=>e-t);return e.nodes.some(e=>{let a=s.get(e.id);return a>r&&a<n&&t.get(e.id)===o})});if(0===a.length)return t;for(let e of a)n.delete(e)}}function pr(e,t,a,i=!1){let s=e.lanes,{direction:l}=e.layout,o="TB"===l||"BT"===l,[r,n]=o?["y","x"]:["x","y"],[d,c]=o?["height","width"]:["width","height"],[p,h]=o?["left","right"]:["top","bottom"],g=c2[l],u=pI[g],f=(e,t)=>a.get(pS(e,t))??0,m=cT(e.edges),v=o?c3(e,t,m,o):c3(e,t,m,o,144,744),y=po(e,i),w=new Map(s.map((e,t)=>[e.id,t])),x=new Map(e.nodes.map(e=>[e.id,e.lane])),b=Math.max(0,...y.values())+1,k=s.map(()=>Array.from({length:b},()=>[]));for(let t of e.nodes)k[w.get(t.lane)][y.get(t.id)].push(t.id);let M=cR(e),C=new Map(e.nodes.map(e=>[e.id,[]]));for(let t of e.edges)M.has(t.id)||t.source===t.target||(C.get(t.source).push(t.target),C.get(t.target).push(t.source));let z=c$(e.nodes),_=e=>{let t=k[w.get(x.get(e))][y.get(e)];return w.get(x.get(e))+(t.indexOf(e)+.5)/t.length};for(let e=0;e<4;e+=1)for(let e of k)for(let t of e){if(t.length<2)continue;let e=new Map(t.map(e=>{let t=C.get(e);return[e,t.length>0?t.reduce((e,t)=>e+_(t),0)/t.length:_(e)]}));t.sort((t,a)=>e.get(t)-e.get(a)||z.get(t)-z.get(a))}let L=Array.from({length:b},(t,a)=>e.nodes.filter(e=>y.get(e.id)===a).map(e=>v.get(e.id))),B=L.map(e=>Math.max(0,...e.map(e=>e[d]))),S=(e,t)=>Math.max(0,...e.map(e=>f(e.nodeId,t))),A=L.map((t,i)=>{let s=new Set(t.map(e=>e.nodeId)),l=o?0:Math.max(0,...e.edges.filter(e=>s.has(e.source)&&e.label&&(y.get(e.target)??0)>i).map(e=>hh(e.label,cU(v.get(e.source)?.kind)).width+16+72)),r=L[i+1];return Math.max(72,l,r&&a.size>0?S(t,g)+S(r,u)+18:0)}),P=(e,t)=>Math.max(112,f(e,h)+f(t,p)+18),V=e=>e.reduce((t,a,i)=>t+v.get(a)[c]+(i>0?P(e[i-1],a):0),0),H=k.map(e=>Math.max(0,...e.map(V))),q=new Map;for(let[e,t]of k.entries())for(let a of t){let t=(H[e]-V(a))/2;for(let[e,i]of a.entries())e>0&&(t+=P(a[e-1],i)),q.set(i,t),t+=v.get(i)[c]}let F=k.map((e,t)=>{let a=e.flat(),i=e=>Math.max(32,...a.map(a=>{let i=e===p?q.get(a):H[t]-q.get(a)-v.get(a)[c];return f(a,e)-i+ps}));return{low:i(p),high:i(h)}}),I=s.map(e=>pd(e.label)),E=o?0:Math.max(...I.map(e=>e.textWidth))+32,O=k.map((e,t)=>Math.max(F[t].low+H[t]+F[t].high,o?pd(s[t].label).longestWord+32:I[t].textHeight+32)),U=s.map((e,t)=>o?pd(e.label,O[t]-32):I[t]),X=o?Math.max(44,...U.map(e=>e.textHeight+32)):Math.ceil(E),T=O.reduce((e,t)=>e+t,0);return{along:r,across:n,backSide:u,breadth:O,columnCount:b,columnOf:L,columns:y,content:H,depth:B,depthOf:d,forwardSide:g,gapAfter:A,headerSize:X,laneIndex:w,laneOf:x,offset:q,padding:F,poolBreadth:T,reach:S,shapes:v,vertical:o,wrapped:U}}function pn(e){return Math.max(144,72+(e+1)*18)}function pd(e,t){let a=void 0===t?aX(e,868):aT(e,t,16),i=a.split("\n");return{longestWord:Math.max(...e.split(/\s+/u).map(e=>aE(e,16))),text:a,textHeight:Math.ceil(16*i.length*1.35),textWidth:Math.ceil(aE(a,16))}}function pc(e,t){return{type:"node",id:e,nodeId:e,shape:"rectangle",label:"",x:t.x,y:t.y,width:t.width,height:t.height}}function pp(e){return(e?.frames??[]).flatMap(t=>e.composites.has(t.id)?[{...pc(t.elementId,t.box),kind:"composite",label:t.label,nodeId:t.id}]:[])}function ph(e){let t=28*!e?.zoned;return(e?.frames??[]).map(e=>pc(e.elementId,{...e.box,y:e.box.y-t,height:e.box.height+t}))}let pg="group-outline:",pu=`${pg}lane:`;function pf(e){return im([{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height},{x:e.x,y:e.y}])}function pm(e,t){return e.x>=t.x-.01&&e.x<=t.x+t.width+.01&&e.y>=t.y-.01&&e.y<=t.y+t.height+.01}function pv(e){return e.elementId}function py(e,t=!1){return e?[...e.frames.map(e=>pc(`lane-header:${pv(e)}`,e.header)),...(t?[]:e.pools).flatMap(({x:e,y:t,width:a,height:i},s)=>[pc(`lane-wall:${s}:top`,{x:e-4,y:t-4,width:a+8,height:4}),pc(`lane-wall:${s}:bottom`,{x:e-4,y:t+i,width:a+8,height:4}),pc(`lane-wall:${s}:left`,{x:e-4,y:t-4,width:4,height:i+8}),pc(`lane-wall:${s}:right`,{x:e+a,y:t-4,width:4,height:i+8})])]:[]}function pw(e){return e.pools.flatMap((t,a)=>{var i,s,l;let o,r,n;return i=t,s=e.frames.filter(e=>e.pool===a),l=e.vertical,o=s[0].header,r=[...s.map(e=>l?e.box.x:e.box.y),l?i.x+i.width:i.y+i.height],n=l?[i.y,o.y+o.height,i.y+i.height]:[i.x,o.x+o.width,i.x+i.width],[...r.flatMap(e=>im(l?[{x:e,y:i.y},{x:e,y:i.y+i.height}]:[{x:i.x,y:e},{x:i.x+i.width,y:e}])),...n.flatMap(e=>im(l?[{x:i.x,y:e},{x:i.x+i.width,y:e}]:[{x:e,y:i.y},{x:e,y:i.y+i.height}]))]})}function px(e){return e?[pc("lanes",e.pool)]:[]}function pb(e,t){let{source:a,target:i}=e,[s,l]=t.vertical?["y","height"]:["x","width"];return t.laneOf.get(a.nodeId)!==t.laneOf.get(i.nodeId)&&pU(e.sourceEdge)===s&&e.targetEdge===pI[e.sourceEdge]&&Math.min(a[s]+a[l],i[s]+i[l])-Math.max(a[s],i[s])>.01}function pk(e,t){let[a,i]=t.vertical?["y","height"]:["x","width"];for(let s of e){let{source:e,target:l}=s;if(pA(s)||t.continuations.has(s.edge.id)||t.laneOf.get(e.nodeId)===t.laneOf.get(l.nodeId)||Math.min(e[a]+e[i],l[a]+l[i])-Math.max(e[a],l[a])<=.01)continue;let o=t.vertical?pC(l).x>pC(e).x:pC(l).y>pC(e).y;s.sourceEdge=t.vertical?o?"right":"left":o?"bottom":"top",s.targetEdge=pI[s.sourceEdge]}}function pM(e,t=!1){return{type:"text",id:`label:${e.nodeId}`,containerId:e.id,...t&&e.groupIds?{groupIds:[...e.groupIds]}:{},x:e.x+e.width/2,y:e.y+e.height/2,text:e.label,fontSize:14,maxWidth:Math.max(1,e.width-36),...e.icon&&!t?{verticalAlign:"bottom"}:{}}}function pC(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function pz(e,t,a){let i=pC(e),s=pC(t),l=s.x-i.x,o=s.y-i.y,r=e.kind?.toLowerCase();if("LR"===a||"RL"===a)return l>=0?{sourceEdge:"right",targetEdge:"left"}:{sourceEdge:"left",targetEdge:"right"};if(o<0)return!(Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)>.01)&&Math.abs(l)>Math.abs(o)?{sourceEdge:l>0?"right":"left",targetEdge:"bottom"}:{sourceEdge:"top",targetEdge:"bottom"};let n=cU(r)&&o>e.height+96;return cU(r)&&o>0&&(0!==l||n)?{sourceEdge:l<0?"left":"right",targetEdge:"top"}:o>0?{sourceEdge:"bottom",targetEdge:"top"}:Math.abs(l)>Math.abs(o)?l>0?{sourceEdge:"right",targetEdge:"left"}:{sourceEdge:"left",targetEdge:"right"}:{sourceEdge:"top",targetEdge:"bottom"}}function p_(e,t,a){return Math.min(a,Math.max(t,e))}function pL(e,t,a=0){let i;if(aR(e.shape))return aJ({...e,shape:e.shape},t,pL({...e,shape:"rectangle"},t,a));let s=(i="top"===t||"bottom"===t?e.width/2-16:e.height/2-16)>0?p_(a,-i,i):0,l=pC(e),o=e.width/2,r=e.height/2;if("diamond"===e.shape&&o>0&&r>0){if("top"===t||"bottom"===t){let e=l.x+s,a=r*(1-Math.abs(s)/o);return{x:e,y:"top"===t?l.y-a:l.y+a}}let e=l.y+s,a=o*(1-Math.abs(s)/r);return{x:"left"===t?l.x-a:l.x+a,y:e}}if(("ellipse"===e.shape||"circle"===e.shape)&&o>0&&r>0){if("top"===t||"bottom"===t){let e=l.x+s,a=r*Math.sqrt(Math.max(0,1-(s/o)**2));return{x:e,y:"top"===t?l.y-a:l.y+a}}let e=l.y+s,a=o*Math.sqrt(Math.max(0,1-(s/r)**2));return{x:"left"===t?l.x-a:l.x+a,y:e}}switch(t){case"top":return{x:e.x+e.width/2+s,y:e.y};case"right":return{x:e.x+e.width,y:e.y+e.height/2+s};case"bottom":return{x:e.x+e.width/2+s,y:e.y+e.height};case"left":return{x:e.x,y:e.y+e.height/2+s}}}function pB(e){return`${e.edgeId}:${e.endpoint}`}function pS(e,t){return`${e}:${t}`}function pA(e){return e.edge.source===e.edge.target}function pP(e,t){let[a,i]="source"===t?[e.sourceEdge,e.targetEdge]:[e.targetEdge,e.sourceEdge];return pE[i][pU(a)]}function pV(e,t){let a="source"===t?e.sourceEdge:e.targetEdge;return pA(e)?1e9*pP(e,t):pC("source"===t?e.target:e.source)[pU(a)]}function pH(e,t){return e.find(e=>e.edge.id===t)?.pair??0}function pq(e,t=!1){let a=new Map;for(let t of e){let e=pS(t.source.nodeId,t.sourceEdge),i=pS(t.target.nodeId,t.targetEdge);a.set(e,[...a.get(e)??[],{edgeId:t.edge.id,endpoint:"source",coordinate:pV(t,"source")}]),a.set(i,[...a.get(i)??[],{edgeId:t.edge.id,endpoint:"target",coordinate:pV(t,"target")}])}let i=new Map;for(let s of a.values()){let a=s.filter(e=>"source"===e.endpoint),l=a.map(t=>e.find(e=>e.edge.id===t.edgeId)).filter(e=>e.edge.label),o=a.length>1&&l.length>0&&(!cU(l[0].source.kind)||t&&l.length>1)?Math.max(18,...l.map(e=>{let t=hh(e.edge.label);return("top"===e.sourceEdge||"bottom"===e.sourceEdge?t.width:t.height)+24})):18;s.sort((t,a)=>t.coordinate-a.coordinate||pH(e,t.edgeId)-pH(e,a.edgeId)).forEach((e,t)=>{i.set(pB(e),(t-(s.length-1)/2)*18*o/18)})}return i}let pF=36,pI={top:"bottom",right:"left",bottom:"top",left:"right"},pE={top:{x:0,y:-1},right:{x:1,y:0},bottom:{x:0,y:1},left:{x:-1,y:0}};function pO(e){return"source"===e.endpoint?e.route.sourceEdge:e.route.targetEdge}function pU(e){return"top"===e||"bottom"===e?"x":"y"}function pX(e,t){return("x"===pU(t)?e.width:e.height)/2-16}function pT(e,t){return"source"===e.endpoint?hd(e.route,t,36):hn(e.route,t,36)}let p$={desired:0,high:1/0,low:-1/0,priority:0};function pY(e,t,a=!1,i=pF){let s=pq(e,t),l=new Map;for(let t of e)for(let e of["source","target"]){let a=pS(t[e].nodeId,"source"===e?t.sourceEdge:t.targetEdge);l.set(a,[...l.get(a)??[],{endpoint:e,key:pB({edgeId:t.edge.id,endpoint:e}),route:t}])}let o=[...l.values()].sort((e,t)=>t.length-e.length);for(let e=0;e<3;e+=1)for(let e of o){let o=pO(e[0]),r=e[0].route[e[0].endpoint],n=new Map(e.map(e=>[e,function(e,t,a){let i=function(e,t,a){let i={endpoint:"source"===e.endpoint?"target":"source",key:pB({edgeId:e.route.edge.id,endpoint:"source"===e.endpoint?"target":"source"}),route:e.route},s=e.route[e.endpoint],l=pO(e),o=pO(i),r=pU(l),n=pE[l];if(pA(e.route)){let t=pP(e.route,e.endpoint)*Math.max(0,pX(s,l));return{desired:t,high:t,low:t,priority:2}}let d=pL(s,l,t.get(e.key)??0),c=pL(e.route[i.endpoint],o,t.get(i.key)??0),p=(c.x-d.x)*n.x+(c.y-d.y)*n.y;if(pU(o)!==r&&p>=pT(e,d)){let e=hi(c,o,pT(i,c)),t=pE[o][r],a=e[r]-pC(s)[r];return{desired:0,high:t<0?a:1/0,lane:t*p,low:t>0?a:-1/0,priority:1}}let h=(e,t)=>(function(e,t){switch(e.shape){case"rectangle":return!1;case"cylinder":return"top"===t||"bottom"===t;case"pipe":return"left"===t||"right"===t;case"document":return"bottom"===t;default:return!0}})(e.route[e.endpoint],t)&&a.get(pS(e.route[e.endpoint].nodeId,t))?.length===1,g=o===pI[l]&&p>0;if(h(e,l)&&!(g&&"target"===e.endpoint&&h(i,o)))return{desired:0,high:0,low:0,priority:2};let u=c[r]-pC(s)[r];return g&&Math.abs(u)<=pX(s,l)?{desired:u,high:u,low:u,priority:2}:p$}(e,t,a),s=e.route[e.endpoint];if("composite"!==s.kind||"top"!==pO(e))return i;let l=iN({...s,name:s.label}),o=l.x+l.width+18-pC(s).x;return{...i,desired:Math.max(o,i.desired),low:Math.max(o,i.low),high:Math.max(o,i.high),priority:3}}(e,s,l)])),d=function(e,t,a,i){let s=e=>{let t="source"===e.endpoint?"target":"source";if(!i||pA(e.route))return pV(e.route,e.endpoint);let s=e.route[t],l="source"===t?e.route.sourceEdge:e.route.targetEdge,o=pB({edgeId:e.route.edge.id,endpoint:t});return hi(pL(s,l,a.get(o)??0),l,36)[pU(pO(e))]},l=[...e].sort((e,t)=>s(e)-s(t)||(e.route.pair??0)-(t.route.pair??0));for(let e of[1,-1]){let a=l.map((e,a)=>({index:a,lane:t.get(e).lane,slot:e})).filter(({lane:t})=>void 0!==t&&Math.sign(t)===e),i=[...a].sort((e,t)=>e.lane-t.lane);a.forEach(({index:e},t)=>{l[e]=i[t].slot})}return l}(e,n,s,a),c=d.filter(e=>"source"===e.endpoint),p=c.filter(e=>e.route.edge.label),h=c.length>1&&p.length>0&&(!cU(p[0].route.source.kind)||t&&p.length>1)?Math.max(...p.map(e=>{let t=hh(e.route.edge.label);return("x"===pU(o)?t.width:t.height)+24})):0;"state"===r.kind&&function(e){for(let[t,a]of e.entries()){let{route:i}=a;if("source"!==a.endpoint||void 0!==i.pair||pA(i))continue;let s=0===t?-1:t===e.length-1?1:void 0;e.length>1&&void 0!==s?i.labelSide=s:delete i.labelSide}}(d);let g=function(e,t,a){let i=e.map((e,a)=>t.slice(0,a).reduce((e,t)=>e+t,0)),s=i.at(-1)??0;if(s>2*a)return i.map(e=>e-s/2);let l=e.map(()=>-1/0),o=e.map(()=>1/0),r=()=>{let e=l.map((e,t)=>Math.max(e-i[t],-a)),t=o.map((e,t)=>Math.min(e-i[t],a-s));for(let t=1;t<e.length;t+=1)e[t]=Math.max(e[t],e[t-1]);for(let e=t.length-2;e>=0;e-=1)t[e]=Math.min(t[e],t[e+1]);return{highs:t,lows:e}};for(let{index:t}of e.map((e,t)=>({index:t,priority:e.priority})).filter(({priority:e})=>e>0).sort((e,t)=>t.priority-e.priority||e.index-t.index)){l[t]=e[t].low,o[t]=e[t].high;let{highs:a,lows:i}=r();i.some((e,t)=>e>a[t]+.01)&&(l[t]=-1/0,o[t]=1/0)}let{highs:n,lows:d}=r();return(function(e,t,a){let i=[];for(let[s,l]of e.entries())for(i.push({count:1,high:a[s],low:t[s],sum:l,value:p_(l,t[s],Math.max(t[s],a[s]))});i.length>1&&i.at(-2).value>i.at(-1).value;){let e=i.pop(),t=i.at(-1);t.count+=e.count,t.sum+=e.sum,t.low=Math.max(t.low,e.low),t.high=Math.min(t.high,e.high),t.value=p_(t.sum/t.count,t.low,Math.max(t.low,t.high))}return i.flatMap(e=>Array(e.count).fill(e.value))})(e.map((e,t)=>e.desired-i[t]),d,n).map((e,t)=>e+i[t])}(d.map(e=>n.get(e)),d.slice(1).map((e,t)=>Math.max("state"===r.kind?function(e,t,a){let i=(e,t)=>{let{route:i}=e,s="x"===pU(a);if("source"!==e.endpoint||!i.edge.label||pA(i)||pG(i)!==t)return 0;let l=hh(i.edge.label,cU(i.source.kind));return(s?l.width:l.height)+24};return Math.max(i(e,1),i(t,-1))}(d[t],e,o):h,"target"===e.endpoint||"target"===d[t].endpoint?i:18)),pX(r,o));d.forEach((e,t)=>s.set(e.key,g[t]))}return s}function pG(e){let t="left"===e.sourceEdge||"right"===e.sourceEdge;return e.labelSide??e.pair??(t?-1:1)}function pR(e,t){let{edge:a,source:i,sourceEdge:s,target:l,targetEdge:o}=e;return{start:pL(i,s,t.get(pB({edgeId:a.id,endpoint:"source"}))??0),end:pL(l,o,t.get(pB({edgeId:a.id,endpoint:"target"}))??0)}}function pD(e,t,a){let i=0,s=1;for(let[l,o]of[["x","width"],["y","height"]]){let r=a[l]+.01,n=a[l]+a[o]-.01,d=t[l]-e[l];if(.01>=Math.abs(d)){if(e[l]<=r||e[l]>=n)return!1}else{let t=(r-e[l])/d,a=(n-e[l])/d;i=Math.max(i,Math.min(t,a)),s=Math.min(s,Math.max(t,a))}}return i<s}function pZ(e,t,a,i){let s=(a.x-pC(e).x)/(e.width/2),l=(a.y-pC(e).y)/(e.height/2),o="ellipse"===e.shape||"circle"===e.shape?{x:s/e.width,y:l/e.height}:"diamond"===e.shape?{x:Math.sign(s)/e.width,y:Math.sign(l)/e.height}:{x:"left"===t?-1:+("right"===t),y:"top"===t?-1:+("bottom"===t)};return(o.x*(i.x-a.x)+o.y*(i.y-a.y))/Math.hypot(o.x,o.y)>=-.01}function pj(e,t,a,i=!1){let s=new Map,l=cR(t),o="TB"===t.layout.direction||"BT"===t.layout.direction?["right","left","top","bottom"]:["bottom","top","left","right"],r=pq(e);for(let n of e.filter(e=>l.has(e.edge.id)||i&&(e=>{let{start:t,end:i}=pR(e,r);return!pZ(e.source,e.sourceEdge,t,i)||!pZ(e.target,e.targetEdge,i,t)||a.some(a=>a!==e.source&&a!==e.target&&pD(t,i,a))})(e))){let i,d={sourceEdge:n.sourceEdge,targetEdge:n.targetEdge},c=pB({edgeId:n.edge.id,endpoint:"source"}),p=pB({edgeId:n.edge.id,endpoint:"target"}),h=[d,...o.map(e=>({sourceEdge:e,targetEdge:e})),...o.flatMap(e=>o.map(t=>({sourceEdge:e,targetEdge:t})))],g=[!1,!0].flatMap(e=>h.map(t=>({...t,spread:e}))),u=!1;for(let t of g){Object.assign(n,{sourceEdge:t.sourceEdge,targetEdge:t.targetEdge});let s=new Map(r),l=(e,a,i)=>{let l=("top"===a||"bottom"===a?e.width:e.height)/2-16;return t.spread?[s.get(i)??0,-l,l]:[s.get(i)??0]},o=l(n.source,n.sourceEdge,c),d=l(n.target,n.targetEdge,p);for(let l of o){for(let o of d){s.set(c,l),s.set(p,o);let{start:d,end:h}=pR(n,s);if(!pZ(n.source,n.sourceEdge,d,h)||!pZ(n.target,n.targetEdge,h,d)||a.some(e=>e!==n.source&&e!==n.target&&pD(d,h,e))||e.some(e=>{if(e===n)return!1;let{start:t,end:a}=pR(e,s);return[[n.source,d,e.source,t],[n.source,d,e.target,a],[n.target,h,e.source,t],[n.target,h,e.target,a]].some(([e,t,a,i])=>e===a&&.01>=Math.hypot(t.x-i.x,t.y-i.y))||function(e,t,a,i){let s=t.x-e.x,l=t.y-e.y,o=Math.hypot(s,l);if(o<=.01)return!1;let r=t=>Math.abs(s*(t.y-e.y)-l*(t.x-e.x))/o;if(r(a)>.01||r(i)>.01)return!1;let n=t=>((t.x-e.x)*s+(t.y-e.y)*l)/o,d=n(a),c=n(i);return Math.min(o,Math.max(d,c))-Math.max(0,Math.min(d,c))>.01}(d,h,t,a)}))continue;let g=hu(e,s),f=g.find(e=>e.nodeId===`branch-label:${n.edge.id}`);if(!(f&&pD(d,h,f))&&(i??={sides:t,sourceOffset:l,targetOffset:o},!g.some(e=>e.nodeId!==`branch-label:${n.edge.id}`&&pD(d,h,e)))){r.set(c,l),r.set(p,o),u=!0;break}}if(u)break}if(u)break}if(u||l.has(n.edge.id)){if(!u)if(Object.assign(n,i?.sides??d),i)r.set(c,i.sourceOffset),r.set(p,i.targetOffset);else{let e="TB"===t.layout.direction||"BT"===t.layout.direction,i=e?"x":"y",l=e?"width":"height",o=pC(n.source)[i],r=Math.max(...a.flatMap(e=>[Math.abs(e[i]-o),Math.abs(e[i]+e[l]-o)]));s.set(n.source.nodeId,{width:n.source.width,height:n.source.height,[l]:2*(r+16+18)})}}else Object.assign(n,i?.sides??d),i&&(r.set(c,i.sourceOffset),r.set(p,i.targetOffset))}return{offsets:r,minimumSizes:s}}function pN(e,t,a=!1){let i=new Map;for(let s of e){let{start:e,end:l}=pR(s,t);for(let[t,a,o]of[[s.source,s.sourceEdge,hd(s,e,36)],[s.target,s.targetEdge,hn(s,l,36)]]){let r=hi(t===s.source?e:l,a,o),n="left"===a?t.x-r.x:"right"===a?r.x-t.x-t.width:"top"===a?t.y-r.y:r.y-t.y-t.height,d=pS(t.nodeId,a);i.set(d,Math.max(i.get(d)??0,n))}if(s.edge.label&&(a||pA(s))){let t=s.source,a=hf(hg(s,e),hh(s.edge.label,cU(t.kind)));for(let[e,s]of[["left",t.x-a.x],["right",a.x+a.width-t.x-t.width],["top",t.y-a.y],["bottom",a.y+a.height-t.y-t.height]]){let a=pS(t.nodeId,e);s>0&&i.set(a,Math.max(i.get(a)??0,s))}}}return i}let pW=new WeakSet;function pJ(e){let t=[];for(let a of e){let e=t[t.length-1];e&&e.x===a.x&&e.y===a.y||t.push(a)}let a=t[0];return a?[a,...t.slice(1)]:[{x:0,y:0}]}function pK(e,t){return e.x>=t.x&&e.x<=t.x+t.width&&e.y>=t.y&&e.y<=t.y+t.height}function pQ(e,t,a){let i,s="horizontal"===e.orientation,[l,o]=s?[t.width/2,t.height/2]:[t.height/2,t.width/2],r=s?t.x+l:t.y+l,n=Math.abs(e.staticCoordinate-(s?t.y+o:t.x+o));if("ellipse"===t.shape||"circle"===t.shape){let[e,t]=[l+a,o+a];if(n>=t)return!1;i=e*Math.sqrt(1-(n/t)**2)}else if("diamond"===t.shape){let e=1+a*Math.hypot(1/l,1/o);if(n>=o*e)return!1;i=l*(e-n/o)}else{if(n>=o+a)return!1;i=l+a}return e.min<r+i-.01&&e.max>r-i+.01}function p1(e,t){return e.id.startsWith("node:")&&!t.has(e.nodeId)}function p0(e,t,a){return im(e).filter(e=>t.some(t=>p1(t,a)&&p2(e,t))).length}function p2(e,t){let[a,i,s,l]="horizontal"===e.orientation?[t.y,t.height,t.x,t.width]:[t.x,t.width,t.y,t.height];return(.01>=Math.abs(e.staticCoordinate-a)||.01>=Math.abs(e.staticCoordinate-a-i))&&Math.min(e.max,s+l)-Math.max(e.min,s)>.01}function p3(e,t,a){let i=0;for(let[s,l]of im(e).entries())for(let o of t)!(a.has(o.nodeId)&&(0===s&&pK(e[0],o)||s===e.length-2&&pK(e.at(-1),o)))&&iw(l,o)&&(i+=1);return i}function p5(e,t,a){let i=0;for(let s of im(e))for(let e of t)p1(e,a)&&!iw(s,e)&&pQ(s,e,12)&&(i+=1);return i}function p4(e){let t=0;for(let a=0;a<e.length-1;a+=1){let i=e[a],s=e[a+1];i&&s&&(t+=Math.abs(s.x-i.x)+Math.abs(s.y-i.y))}return t}function p6(e){return im(e.points).map(t=>{let[a,i]=[e.points[t.segmentIndex],e.points[t.segmentIndex+1]];return{...t,arrowId:e.arrowId,startBindingId:e.sourceNodeId,endBindingId:e.targetNodeId,from:"horizontal"===t.orientation?a.x:a.y,to:"horizontal"===t.orientation?i.x:i.y}})}function p7(e){return e.flatMap(e=>p6({arrowId:e.id,points:e.points,sourceNodeId:e.sourceNodeId,targetNodeId:e.targetNodeId}))}function p8(e,t,a){let i=p6({arrowId:`edge:${a.edge.id}`,points:e,sourceNodeId:a.edge.source,targetNodeId:a.edge.target}),s=0;for(let e of i)for(let i of t)e.arrowId===i.arrowId||!iy(e,i)||void 0!==a.pinned&&function(e,t){let a=e.isFirstSegment&&t.isFirstSegment&&e.startBindingId===t.startBindingId;return ix(e,t)&&.01>=Math.abs((a?e.from:e.to)-(a?t.from:t.to))&&Math.sign(e.to-e.from)===Math.sign(t.to-t.from)}(e,i)||(s+=1);return s}function p9(e,t){let a=p6({arrowId:`edge:${t.edge.id}`,points:e,sourceNodeId:t.edge.source,targetNodeId:t.edge.target}),i=0;for(let e=0;e<a.length;e+=1){let t=a[e];if(t)for(let s=e+1;s<a.length;s+=1){let e=a[s];e&&iy(t,e)&&(i+=1)}}return i}function he(e){let t=e[0],a=e[e.length-1];if(!t||!a)return 0;let i=e.map(e=>e.x),s=e.map(e=>e.y),l=0;return a.x<t.x?l+=Math.max(0,Math.max(...i)-t.x):a.x>t.x&&(l+=Math.max(0,t.x-Math.min(...i))),a.y<t.y?l+=Math.max(0,Math.max(...s)-t.y):a.y>t.y&&(l+=Math.max(0,t.y-Math.min(...s))),l}function ht(e){let t=e[0],a=e[e.length-1];if(!t||!a)return 0;let i=e.map(e=>e.x),s=e.map(e=>e.y),l=0;return a.x<t.x?l+=Math.max(0,a.x-Math.min(...i)):a.x>t.x&&(l+=Math.max(0,Math.max(...i)-a.x)),a.y<t.y?l+=Math.max(0,a.y-Math.min(...s)):a.y>t.y&&(l+=Math.max(0,Math.max(...s)-a.y)),l}function ha(e,t,a){switch(a){case"top":return t.x===e.x&&e.y-t.y>=36;case"right":return t.y===e.y&&t.x-e.x>=36;case"bottom":return t.x===e.x&&t.y-e.y>=36;case"left":return t.y===e.y&&e.x-t.x>=36}}function hi(e,t,a){switch(t){case"top":return{x:e.x,y:e.y-a};case"right":return{x:e.x+a,y:e.y};case"bottom":return{x:e.x,y:e.y+a};case"left":return{x:e.x-a,y:e.y}}}function hs(e,t){return 0===t.length?0:im(e).filter(e=>t.some(t=>t.orientation===e.orientation&&Math.abs(t.staticCoordinate-e.staticCoordinate)<(t.arrowId.startsWith(pu)?24:8)&&iv(t,e)>8)).length}function hl(e,t,a,i,s,l=!1){let o=e[0];if(!o)return[{x:0,y:0}];let r=e=>{let o,r,n,d,c,p=s.quality?.({id:`edge:${i.edge.id}`,points:e,sourceId:i.edge.source,targetId:i.edge.target})??{arrowheadsCrossed:0,corridors:0,jogs:0};return[-(o=e[0],r=e[1],n=e[e.length-1],d=e[e.length-2],c=0,r&&ha(o,r,i.sourceEdge)&&(c+=1),d&&n&&ha(n,d,i.targetEdge)&&(c+=1),c),p3(e,t,a),...l?[p0(e,t,a)]:[],p9(e,i),p8(e,s.segments,i),s.heads?p.arrowheadsCrossed:0,hs(e,s.outlines),p.corridors,s.heads?0:p.arrowheadsCrossed,s.crossings?.route(e,`edge:${i.edge.id}`)??0,he(e),ht(e),p.jogs,p4(e),s.quality?im(e).filter((e,t,a)=>t>0&&e.orientation!==a[t-1].orientation).length:0]},n=(e,t)=>{for(let a=0;a<e.length;a+=1){let i=(e[a]??0)-(t[a]??0);if(0!==i)return i<0}return!1},d=o,c=r(o);for(let t of e.slice(1)){let e=r(t);n(e,c)&&(d=t,c=e)}return d}function ho(e,t,a,i){switch(a){case"left":return i+t.x-e.x;case"right":return i+e.x+e.width-t.x;case"top":return i+t.y-e.y;case"bottom":return i+e.y+e.height-t.y}}function hr(e,t){return e.runs?.[t]??e.endRun??0}function hn(e,t,a){return ho(e.target,t,e.targetEdge,Math.max(a,hr(e,"target")))}function hd(e,t,a){let i=e.edge.label&&!pA(e)?"left"===e.sourceEdge||"right"===e.sourceEdge?hh(e.edge.label,cU(e.source.kind)).width+16:Math.max(40,hh(e.edge.label,cU(e.source.kind)).height+24):0;return ho(e.source,t,e.sourceEdge,Math.max(a,hr(e,"source")+Math.min(i,function(e,t){if("choice"!==e.source.kind||e.targetEdge!==pI[e.sourceEdge])return 1/0;let a=pE[e.sourceEdge],i=0===a.x?"y":"x",s=a[i],[l,o]="x"===i?["y","height"]:["x","width"];if(t[l]>=e.target[l]&&t[l]<=e.target[l]+e.target[o])return 1/0;let r=((s>0?e.target[i]:e.target[i]+e.target["x"===i?"width":"height"])-t[i])*s-36-18;return r>36?r:1/0}(e,t))))}function hc(e,t,a=!1){let i="TB"===t||"BT"===t;if(!i&&!a)return;let s=i?"x":"y",l=i?"y":"x",[o,r]=i?["left","right"]:["top","bottom"],n="TB"===t?"bottom":"BT"===t?"top":"LR"===t?"right":"left";for(let t of new Set(e.filter(e=>cU(e.source.kind)).map(e=>e.source))){let a=e.filter(e=>e.source===t).sort((e,t)=>pC(e.target)[s]-pC(t.target)[s]||pC(e.target)[l]-pC(t.target)[l]||e.index-t.index);a.length<2||a.forEach((e,i)=>{let d=a.filter(e=>1>Math.abs(pC(e.target)[s]-pC(t)[s])).sort((e,a)=>Math.abs(pC(e.target)[l]-pC(t)[l])-Math.abs(pC(a.target)[l]-pC(t)[l]))[0],c=2===a.length&&e===d,p=2===a.length&&void 0!==d&&!c;e.sourceEdge=c?n:p?pC(e.target)[s]<pC(t)[s]?o:r:0===i?o:i===a.length-1?r:n})}}function hp(e,t){let a=aT(e,t,13);return{width:aU(a,13,t),height:Math.ceil(13*a.split("\n").length*1.35)}}function hh(e,t=!1){return hp(e,t?80:160)}function hg(e,t){let a=hh(e.edge.label??"",cU(e.source.kind)),i=hi(t,e.sourceEdge,hd(e,t,36)),s="left"===e.sourceEdge||"right"===e.sourceEdge;if(pA(e)){let t=hi(pL(e.target,e.targetEdge),e.targetEdge,36),l=pE[e.sourceEdge];return s?{x:i.x+l.x*(a.width/2+8),y:(i.y+t.y)/2}:{x:(i.x+t.x)/2,y:i.y+l.y*(a.height/2+5)}}let l=pG(e),o=hi(t,e.sourceEdge,hr(e,"source"));return{x:(o.x+i.x)/2+(s?0:l*(a.width/2+8)),y:(o.y+i.y)/2+(s?l*(a.height/2+5):0)}}function hu(e,t){return e.filter(e=>e.edge.label).map(e=>{let a=pL(e.source,e.sourceEdge,t.get(pB({edgeId:e.edge.id,endpoint:"source"}))??0),i=hg(e,a),s=hh(e.edge.label,cU(e.source.kind)),l=s.width+12;return{...e.source,id:`branch-label:${e.edge.id}`,nodeId:`branch-label:${e.edge.id}`,x:i.x-l/2,y:i.y-s.height/2-4,width:l,height:s.height+8,shape:"rectangle"}})}function hf(e,t){return{x:e.x-t.width/2,y:e.y-t.height/2,width:t.width,height:t.height}}function hm(e,t){return e.x<t.x+t.width&&t.x<e.x+e.width&&e.y<t.y+t.height&&t.y<e.y+e.height}function hv(e,t){return{x:e.x-t,y:e.y-t,width:e.width+2*t,height:e.height+2*t}}function hy(e,t){let[a,i,s,l]="horizontal"===t.orientation?[t.min,t.max,t.staticCoordinate,t.staticCoordinate]:[t.staticCoordinate,t.staticCoordinate,t.min,t.max];return Math.hypot(Math.max(0,e.x-i,a-e.x-e.width),Math.max(0,e.y-l,s-e.y-e.height))}function hw(e,t){return Math.min(1/0,...t.map(t=>hy(e,t)))}function hx(e,t,a){return Math.max(0,hw(e,t)+8-hw(e,a))}function hb(e,t,a={start:0,end:0}){let i=[],s=p4(e),l=0;for(let o of im(e)){if(l>240)break;let r=e[o.segmentIndex],n=e[o.segmentIndex+1],d=o.max-o.min,c="horizontal"===o.orientation,p=c?t.width/2+4:t.height/2+4;for(let e=Math.min(p,d/2);e<=d-Math.min(p,d/2)&&!(l+e>240);e+=12){if(a.start>0&&l+e-p<a.start||a.end>0&&l+e+p>s-a.end)continue;let o=e/d,h={x:r.x+(n.x-r.x)*o,y:r.y+(n.y-r.y)*o};for(let e of[1,-1])i.push(c?{x:h.x,y:h.y-e*(t.height/2+5)}:{x:h.x+e*(t.width/2+8),y:h.y})}l+=d}return i}function hk(e){return e?{start:hr(e,"source"),end:hr(e,"target")}:{start:0,end:0}}function hM(e,t,a,i,s=!0,l){return hC(e,t,a,i,s,l).labels}function hC(e,t,a,i,s=!0,l){let o=[],r=0,n=e.map(e=>im(e.points)),d=[...a,...(i?.frames??[]).map(e=>pc(`group-label:${e.id}`,e.labelBox)),...(l?.frames??[]).map(e=>pc(`lane-header:${pv(e)}`,e.header))],c=[...(i?.frames??[]).flatMap(e=>pf(e.box)),...l?pw(l):[]],p=pa([...a,...ph(i),...px(l),...e.flatMap(e=>e.points.map(e=>({...e,width:0,height:0})))]),h=[],g=e.map((e,a)=>e.label?hh(e.label,cU(t[a]?.source.kind)):void 0),u=e.map((e,a)=>e.label?hg(t[a],e.points[0]):void 0);for(let[a,i]of e.entries()){let e=g[a],l=u[a];if(!e||!l)continue;let o=u.flatMap((e,t)=>e&&t!==a&&!h.some(e=>e.index===t)?[hf(e,g[t])]:[]),v=[...n.flatMap((e,t)=>t===a?[]:e),...c],y=(t,i=0)=>(function(e,t,a,i,s){let l=hv(e,3),o=hv(e,8);return t.filter(e=>iw(e,l)).length+a.filter(e=>iw(e,o)).length+i.filter(t=>(function(e,t){let[a,i]=[t.x+t.width/2,t.y+t.height/2],s=Math.max(e.x,Math.min(a,e.x+e.width))-a,l=Math.max(e.y,Math.min(i,e.y+e.height))-i,[o,r]=[Math.abs(s)/(t.width/2),Math.abs(l)/(t.height/2)];return"diamond"===t.shape?o+r<1:"ellipse"===t.shape||"circle"===t.shape?o*o+r*r<1:o<1&&r<1})(e,t)).length+s.filter(e=>hm(l,e)).length})(hv(hf(t,e),i),n[a],v,d,[...o,...h.map(e=>e.box)]),w=l,x=y(l);if(x>0)for(let s of hb(i.points,e,hk(t[a]))){let e=y(s);if(e<x&&([w,x]=[s,e]),0===x)break}else{var f,m;if(s&&(f=hf(l,e),hx(f,n[a],v)>0)){let s=t=>hx(hf(t,e),n[a],v),o=(m=hf(l,e),hx(m,n[a],n.flatMap((e,t)=>t===a?[]:e))>0),r=hb(i.points,e,hk(t[a])).filter(t=>{var a;return o||(a=hf(t,e),a.x>=p.x-.01&&a.y>=p.y-.01&&a.x+a.width<=p.x+p.width+.01&&a.y+a.height<=p.y+p.height+.01)});w=r.find(e=>0===y(e,6)&&0===s(e))??r.filter(e=>0===y(e)).reduce((e,t)=>s(t)<s(e)?t:e,l)}}r+=x,u[a]=w,h.push({box:hf(w,e),index:a})}let v=[];for(let[a,i]of e.entries()){let s=u[a];if(!i.label||!s)continue;let l=hf(s,g[a]),r=n[a],d=hx(l,r,[...n.flatMap((e,t)=>t===a?[]:e),...c]);d>0&&v.push({box:l,own:hw(l,r),index:a,shortfall:d});let p=[`branch:${i.edgeId}`],h=function(e,t){let[a]=t.toSorted((t,a)=>hy(e,t)-hy(e,a));if(a&&"vertical"===a.orientation&&!(a.max<=e.y)&&!(a.min>=e.y+e.height)){if(e.x>=a.staticCoordinate)return"left";if(e.x+e.width<=a.staticCoordinate)return"right"}}(l,r);o.push({type:"text",id:`${i.id}:label`,text:i.label,fontSize:13,x:s.x,y:s.y,maxWidth:cU(t[a]?.source.kind)?80:160,...h?{textAlign:h}:{},groupIds:p}),e[a]={...i,groupIds:p}}return{labels:o,touches:r,shortfalls:v}}function hz(e,t){let a=new Map([["horizontal",[]],["vertical",[]]]);for(let t of e)a.get(t.orientation).push(t);for(let e of a.values())e.sort((e,t)=>e.staticCoordinate-t.staticCoordinate);return(e,i)=>{let s=a.get(e.orientation),l=Math.max(t,.02),o=0,r=s.length;for(;o<r;){let t=o+r>>1;s[t].staticCoordinate<e.staticCoordinate-l?o=t+1:r=t}let n=0,d=0;for(let a=o;a<s.length&&s[a].staticCoordinate<=e.staticCoordinate+l;a+=1){let l=s[a];l.arrowId!==i&&(iy(e,l)?n+=1:Math.abs(l.staticCoordinate-e.staticCoordinate)<t&&iv(e,l)>.01&&(d+=1))}return{beside:d,overlaps:n}}}function h_(e){return e.every((t,a)=>0===a||.01>=Math.abs(t.x-e[a-1].x)||.01>=Math.abs(t.y-e[a-1].y))}function hL(e,t){if(t.length!==e.length||!h_(t))return!1;let a=(e,t,a)=>({dx:e[a].x-e[t].x,dy:e[a].y-e[t].y}),i=e.length-1;return[[0,1],[i,i-1]].every(([i,s])=>{let[l,o]=[a(e,i,s),a(t,i,s)],r=Math.abs(l.dx)+Math.abs(l.dy);return Math.sign(o.dx)===Math.sign(l.dx)&&Math.sign(o.dy)===Math.sign(l.dy)&&Math.abs(o.dx)+Math.abs(o.dy)>=Math.min(r,36)-.01})}function hB(e,t,a,i,s,l=e.map((e,t)=>t),o=new Map){var r,n;let d=[...hu(e,a),...e.filter(pA).map(e=>{let{start:t,end:i}=pR(e,a),s=pa([t,i,hi(t,e.sourceEdge,hd(e,t,36)),hi(i,e.targetEdge,hn(e,i,36))].map(e=>({...e,width:0,height:0})));return pc(`loop:${e.edge.id}`,hv(s,9))})],c="orthogonal"===t?e.flatMap(e=>{let{start:t,end:i}=pR(e,a),s={type:"arrow",id:`edge:${e.edge.id}`,edgeId:e.edge.id,sourceNodeId:e.edge.source,targetNodeId:e.edge.target},l={...s,points:[hi(i,e.targetEdge,hn(e,i,36)),i]};return pW.add(l),[{...s,endArrowhead:null,points:[t,hi(t,e.sourceEdge,hd(e,t,36))]},l]}):[],p=[...(r=s.groups,(r?.frames??[]).map(e=>{let{x:t,y:a,width:i,height:s}=e.box,l=`${pg}${e.id}`;return{type:"arrow",id:l,edgeId:l,sourceNodeId:"",targetNodeId:"",endArrowhead:null,points:[{x:t,y:a},{x:t+i,y:a},{x:t+i,y:a+s},{x:t,y:a+s},{x:t,y:a}]}})),...(n=s.lanes)?pw(n).map((e,t)=>{let a=`${pu}${t}`,[i,s]="horizontal"===e.orientation?[{x:e.min,y:e.staticCoordinate},{x:e.max,y:e.staticCoordinate}]:[{x:e.staticCoordinate,y:e.min},{x:e.staticCoordinate,y:e.max}];return{type:"arrow",id:a,edgeId:a,sourceNodeId:"",targetNodeId:"",endArrowhead:null,points:[i,s]}}):[]],h=py(s.lanes),g=py(s.lanes,!0),u=[];for(let r of l.map(t=>e[t])){let e=o.get(r.edge.id);if(e){u.push(e);continue}u.push(function(e,t,a,i,s,l){let{edge:o}=e,{start:r,end:n}=pR(e,a),d="orthogonal"===t?function(e,t,a,i,s,{avoidCrossings:l,clearHeads:o,readerScale:r,guided:n,bandOf:d,groups:c,lanes:p}){let h=Math.abs(a.x-t.x)>=Math.abs(a.y-t.y),g=new Set([e.source.nodeId,e.target.nodeId]),u=d?.get(e.source.nodeId),f=void 0===u?i:i.filter(e=>d.get(e.nodeId)===u),m=Math.min(...f.map(e=>e.x)),v=Math.max(...f.map(e=>e.x+e.width)),y=Math.min(...f.map(e=>e.y)),w=Math.max(...f.map(e=>e.y+e.height)),x="left"===e.sourceEdge||"left"===e.targetEdge||pC(e.target).x<pC(e.source).x,b=pC(e.target).y<pC(e.source).y,k=18*e.index,M=m-56-k,C=v+56+k,z=y-48-k,_=w+48+k,L=e.index%4*18/2,B=Math.min(e.source.x,e.target.x)-56-L,S=Math.max(e.source.x+e.source.width,e.target.x+e.target.width)+56+L,A=Math.min(e.source.y,e.target.y)-48-L,P=Math.max(e.source.y+e.source.height,e.target.y+e.target.height)+48+L,V=36+e.index%4*18,H=void 0===r?[V]:[...new Set([V,36])],q=(i,s)=>{let l=s>0?hi(t,e.sourceEdge,hd(e,t,36)):t,o=s>0?hi(a,e.targetEdge,hn(e,a,s)):a;return pJ([t,l,{x:i,y:l.y},{x:i,y:o.y},o,a])},F=(i,s)=>{let l=s>0?hi(t,e.sourceEdge,hd(e,t,36)):t,o=s>0?hi(a,e.targetEdge,hn(e,a,s)):a;return pJ([t,l,{x:l.x,y:i},{x:o.x,y:i},o,a])},I=[[b?A:P,F],[b?P:A,F],[b?z:_,F],[b?_:z,F]],E=[[x?B:S,q],[x?S:B,q],[x?M:C,q],[x?C:M,q]],[O,U]=h?[I,E]:[E,I],X=[...O.slice(0,2),...U.slice(0,2),...O.slice(2),...U.slice(2)],T=hi(t,e.sourceEdge,hd(e,t,36)),$=hi(a,e.targetEdge,hn(e,a,36)),Y=e.lane,G=Y?H.map(e=>Y.vertical?q(Y.at,e):F(Y.at,e)):[],R=(void 0!==e.pinned||void 0!==p&&pb(e,p))&&e.targetEdge===pI[e.sourceEdge],D="left"===e.sourceEdge||"right"===e.sourceEdge?[{x:(T.x+$.x)/2,y:T.y},{x:(T.x+$.x)/2,y:$.y}]:[{x:T.x,y:(T.y+$.y)/2},{x:$.x,y:(T.y+$.y)/2}],Z=[...G,pJ([t,a]),pJ([t,T,{x:T.x,y:$.y},$,a]),pJ([t,T,{x:$.x,y:T.y},$,a]),...R?[pJ([t,T,...D,$,a])]:[],...X.flatMap(([e,t])=>H.map(a=>t(e,a)))],j=function(e,t,a=!1,i=!1){let s,l,o=e.some(e=>e.id.startsWith(pu))?e.filter(e=>!e.id.startsWith(pu)):e,r=o.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId,endArrowhead:null!==e.endArrowhead,...i&&pW.has(e)?{headRun:50}:{}}));return{...void 0===t?{}:{...a?{crossings:function(e){let t={horizontal:[],vertical:[]};for(let a of e){if(a.id.startsWith(pg))continue;let e=h$(a.points);for(let i=0;i+1<e.length;i+=1){let[s,l]=[e[i],e[i+1]],o=.01>=Math.abs(s.y-l.y);if(!o&&Math.abs(s.x-l.x)>.01)continue;let[r,n]=o?[s.x,l.x]:[s.y,l.y];.01>=Math.abs(n-r)||t[o?"horizontal":"vertical"].push({arrowId:a.id,at:o?s.y:s.x,min:Math.min(r,n),max:Math.max(r,n)})}}for(let e of Object.values(t))e.sort((e,t)=>e.at-t.at);let a=(e,a,i,s,l,o)=>{let r=t["horizontal"===e?"vertical":"horizontal"],n=0,d=r.length;for(;n<d;){let e=n+d>>1;r[e].at<=i+.01?n=e+1:d=e}let c=0;for(let e=n;e<r.length;e+=1){let t=r[e];if(o?t.at>s+.01:t.at>=s-.01)break;t.arrowId!==l&&a>t.min+.01&&a<t.max-.01&&(c+=1)}return c};return{step:(e,t,i,s,l)=>a(e,t,Math.min(i,s),Math.max(i,s),l,!0),route:(e,t)=>{let i=h$(e),s=0;for(let e=0;e+1<i.length;e+=1){let[l,o]=[i[e],i[e+1]],r=.01>=Math.abs(l.y-o.y);if(!r&&Math.abs(l.x-o.x)>.01)continue;let[n,d]=r?[Math.min(l.x,o.x),Math.max(l.x,o.x)]:[Math.min(l.y,o.y),Math.max(l.y,o.y)];s+=a(r?"horizontal":"vertical",r?l.y:l.x,n,d,t,!1)}return s}}}(o)}:{},...i?{heads:(s=8/t+2,l=r.flatMap(e=>{let t=iI(e);return t?[{bounds:i$(t,s),head:t,id:e.id}]:[]}),(e,a,i)=>{let s=i$([e,a]),o=new Set;for(let r of l)r.id!==i&&!o.has(r.id)&&iY(s,r.bounds)&&(iX(e,a,r.head)-2)*t<8&&o.add(r.id);return o.size})}:{},quality:iT(r,t)},outlines:p7(e.filter(e=>e.id.startsWith(pg))),segments:p7(o)}}(s,r,l,o),N=c?.zoned===!0,W=hl(Z,i,g,e,j,N),J=void 0===r?0:24/r,K=J?hl([W,...function(e,t,a,i){let s=`edge:${a.edge.id}`,l=[];for(let a of im(e))if(!a.isFirstSegment&&!a.isLastSegment){for(let o of t)if(!(o.arrowId===s||o.orientation!==a.orientation||Math.abs(o.staticCoordinate-a.staticCoordinate)>=i||.01>=iv(a,o)))for(let t of[o.staticCoordinate-i-1,o.staticCoordinate+i+1]){let i=e.map((e,i)=>i===a.segmentIndex||i===a.segmentIndex+1?"horizontal"===a.orientation?{x:e.x,y:t}:{x:t,y:e.y}:e);l.push(pJ(i))}}return l}(W,j.segments,e,J)],i,g,e,j,N):W,Q=t=>j.quality?.({id:`edge:${e.edge.id}`,points:t,sourceId:e.edge.source,targetId:e.edge.target})??{arrowheadsCrossed:0,corridors:0,jogs:0},ee=N&&p0(K,i,g)>0,et=p3(K,i,g)||p9(K,e)||p8(K,j.segments,e)||void 0!==j.heads&&Q(K).arrowheadsCrossed||hs(K,j.outlines),ea=void 0!==e.pinned&&he(K)+ht(K)>0;if(et||ee||Q(K).corridors||ea){let l=function(e,t,a,i,s,l,o,r,n,d=0,c=1/0,p=!0,h,g=!1,u){let f,m,v,y,w=e=>[...new Set([18,Math.max(18,d+1)])].flatMap(t=>[e-t,e+t]),x=[...new Set([a.x,i.x,...s.flatMap(e=>[e.x-18,e.x+e.width+18]),...o.flatMap(e=>e.points.flatMap(e=>w(e.x)))])].sort((e,t)=>e-t),b=[...new Set([a.y,i.y,...s.flatMap(e=>[e.y-18,e.y+e.height+18]),...o.flatMap(e=>e.points.flatMap(e=>w(e.y)))])].sort((e,t)=>e-t),k=(e,t,a)=>(e*b.length+t)*2+a,M=`edge:${l.edge.id}`,C=hz(r,d),[z,_]=[!1,!0].map(e=>n.filter(t=>t.arrowId.startsWith(pu)===e)),L=z.length>0?hz(z,8):void 0,B=_.length>0?hz(_,24):void 0,S=[...im([e,a]),...im([i,t])],A=(e,t)=>p?Math.abs(x[e]-i.x)+Math.abs(b[t]-i.y):0,P=x.indexOf(a.x),V=b.indexOf(a.y),H={x:P,y:V,axis:+(e.x===a.x),cost:0,estimate:A(P,V)},q=(e,t)=>{let a="x"===t?"width":"height",i=[],l=g?-.01:.01;return o=>i[o]??=s.filter(i=>e[o]>i[t]+l&&e[o]<i[t]+i[a]-l)},[F,I]=[q(x,"x"),q(b,"y")],E=(f=[],m=0,v=(e,t)=>e.item.estimate<t.item.estimate||e.item.estimate===t.item.estimate&&e.order>t.order,y=(e,t)=>{[f[e],f[t]]=[f[t],f[e]]},{get size(){return f.length},push(e){f.push({item:e,order:m++});for(let e=f.length-1;e>0;){let t=e-1>>1;if(!v(f[e],f[t]))break;y(e,t),e=t}},pop(){let e=f[0],t=f.pop();if(f.length>0){f[0]=t;for(let e=0;;){let t=2*e+1,a=t+1,i=e;if(t<f.length&&v(f[t],f[i])&&(i=t),a<f.length&&v(f[a],f[i])&&(i=a),i===e)break;y(e,i),e=i}}return e.item}});E.push(H);let O=new Map([[k(H.x,H.y,H.axis),0]]),U=new Map;for(let a=0;E.size&&a<c;a+=1){let a=E.pop();if(a.cost!==O.get(k(a.x,a.y,a.axis)))continue;let s={x:x[a.x],y:b[a.y]};if(s.x===i.x&&s.y===i.y){let i=[];for(let e=a;e;e=e.previous)i.unshift({x:x[e.x],y:b[e.y]});return pJ([e,...i.filter((e,t)=>0===t||t===i.length-1||(i[t-1].x!==e.x||e.x!==i[t+1].x)&&(i[t-1].y!==e.y||e.y!==i[t+1].y)),t])}for(let[e,t,i]of[[-1,0,0],[1,0,0],[0,-1,1],[0,1,1]]){let l=a.x+e,o=a.y+t;if(l<0||o<0||l>=x.length||o>=b.length)continue;let r={x:x[l],y:b[o]},n=(Math.min(l,a.x)*b.length+Math.min(o,a.y))*2+i;if(!U.has(n)){let e=im([s,r],0)[0],t=im([s,r])[0],{beside:l,overlaps:o}=t?C(t,M):{beside:0,overlaps:0},d=t&&L?L(t,M):void 0,c=t&&B?B(t,M):void 0;U.set(n,(0===i?I(a.y):F(a.x)).some(t=>iw(e,t)||g&&t.id.startsWith("node:")&&p2(e,t))||S.some(t=>iy(e,t))?void 0:Math.abs(r.x-s.x)+Math.abs(r.y-s.y)+1e4*o+1e3*l+(d?(d.beside+d.overlaps)*1e3:0)+(c?(c.beside+c.overlaps)*1e3:0)+(u?1e4*u(s,r,M):0)+(h&&t?320*h.step(t.orientation,t.staticCoordinate,t.min,t.max,M):0))}let d=U.get(n);if(void 0===d)continue;let c=a.cost+d+24*(i!==a.axis),p=k(l,o,i);c>=(O.get(p)??1/0)||(O.set(p,c),E.push({x:l,y:o,axis:i,cost:c,estimate:c+A(l,o),previous:a}))}}}(t,a,T,$,i,e,s,j.segments,j.outlines,et?0:J,et?1/0:5e3,n,j.crossings,N,j.heads);if(l)return hl([K,l],i,g,e,j,N)}return K}(e,r,n,i,s,l):pJ([r,n]),c=e.pinned?pJ(h$(d)):d;return{type:"arrow",id:`edge:${o.id}`,edgeId:o.id,sourceNodeId:o.source,targetNodeId:o.target,points:c,...o.label?{label:o.label}:{}}}(r,t,a,[...i,...d.filter(e=>e.nodeId!==`branch-label:${r.edge.id}`&&e.nodeId!==`loop:${r.edge.id}`),...function(e,t){if(!e)return[];let a=new Set([...cN(e,e.groupOf.get(t.source.nodeId)),...cN(e,e.groupOf.get(t.target.nodeId))]),i=cW(e,t.source.nodeId,t.target.nodeId);return e.frames.flatMap(e=>{let t=pc(`group-label:${e.id}`,e.labelBox);if(e.id===i){let{x:a,y:i,width:s,height:l}=e.box;return[t,pc(`group-wall:${e.id}:top`,{x:a-4,y:i-4,width:s+8,height:4}),pc(`group-wall:${e.id}:bottom`,{x:a-4,y:i+l,width:s+8,height:4}),pc(`group-wall:${e.id}:left`,{x:a-4,y:i-4,width:4,height:l+8}),pc(`group-wall:${e.id}:right`,{x:a+s,y:i-4,width:4,height:l+8})]}return a.has(e.id)?[t]:[t,pc(e.elementId,e.box)]})}(s.groups,r),...s.lanes?.continuations.has(r.edge.id)?g:h],[...p,...c,...u],s))}return e.map(e=>u.find(t=>t.edgeId===e.edge.id))}function hS(e,t,a,i,s){let l=cR(a),o=new Set(e.flatMap(e=>[pS(e.source.nodeId,e.sourceEdge),pS(e.target.nodeId,e.targetEdge)])),r=[];for(let[a,n]of t.entries()){let d=e[a];if(l.has(d.edge.id)||d.pinned?.target!==void 0||!("hooked"===s?iU([{id:n.id,points:n.points}],i).some(e=>"endpoint-jog"===e.kind&&"end"===e.endpoint):t.some(e=>e!==n&&hY(n.points,e.points,n.points.length-3,!1)>0)))continue;let c=im(n.points),p=c.at(-1),h=c.findLast(e=>e.orientation!==p?.orientation);if(!p||!h)continue;let g=n.points[h.segmentIndex],u=n.points[h.segmentIndex+1],f="horizontal"===h.orientation?u.x>g.x?"left":"right":u.y>g.y?"top":"bottom";f===d.targetEdge||o.has(pS(d.target.nodeId,f))||(r.push({route:d,side:d.targetEdge}),o.add(pS(d.target.nodeId,f)),d.targetEdge=f)}return r}function hA(e,t,a,i){let s,l=e.flatMap(e=>im(e.points).map(t=>{let a=e.points[t.segmentIndex],i=e.points[t.segmentIndex+1];return{...t,arrowId:e.id,startBindingId:e.sourceNodeId,endBindingId:e.targetNodeId,from:"horizontal"===t.orientation?a.x:a.y,to:"horizontal"===t.orientation?i.x:i.y}})),o=[];for(let[e,a]of l.entries()){for(let t of l.slice(e+1)){if(a.arrowId===t.arrowId||!iy(a,t))continue;let e=a.isFirstSegment&&t.isFirstSegment&&a.startBindingId===t.startBindingId;ix(a,t)&&.01>=Math.abs((e?a.from:a.to)-(e?t.from:t.to))&&Math.sign(a.to-a.from)===Math.sign(t.to-t.from)||o.push([a.arrowId,t.arrowId])}for(let e of t)e.nodeId!==a.startBindingId&&e.nodeId!==a.endBindingId&&iw(a,e)&&o.push([a.arrowId])}let r=a?[...o,...function(e,t){let a=[],i=t.frames.map(e=>pf(e.box));for(let s of e){let e=im(s.points),l=new Set([...cN(t,t.groupOf.get(s.sourceNodeId)),...cN(t,t.groupOf.get(s.targetNodeId))]),o=new Set(cN(t,cW(t,s.sourceNodeId,s.targetNodeId)));for(let[r,n]of t.frames.entries()){let t=l.has(n.id);(e.some(e=>iw(e,n.labelBox)||!t&&iw(e,n.box)||i[r].some(t=>t.orientation===e.orientation&&8>Math.abs(t.staticCoordinate-e.staticCoordinate)&&iv(t,e)>8))||o.has(n.id)&&s.points.some(e=>!pm(e,n.box)))&&a.push([s.id])}}return a}(e,a)]:o;return i?[...r,...(s=pw(i),e.flatMap(e=>im(e.points).some(e=>i.frames.some(t=>iw(e,t.header))||s.some(t=>t.orientation===e.orientation&&8>Math.abs(t.staticCoordinate-e.staticCoordinate)&&iv(t,e)>8))||e.points.some(e=>!pm(e,i.pool))?[[e.id]]:[]))]:r}function hP(e,t){let a=new Map(t.map(e=>[e.nodeId,e])),i=0;for(let t of e)for(let[e,s,l]of[[t.sourceNodeId,t.points[0],t.points[1]],[t.targetNodeId,t.points.at(-1),t.points.at(-2)]]){let t=a.get(e);if(!t||!s||!l)continue;if(aR(t.shape)){let e=e=>Math.max(Math.abs(e.x-pC(t).x)/(t.width/2),Math.abs(e.y-pC(t).y)/(t.height/2));e({x:s.x+(l.x-s.x)*1e-4,y:s.y+(l.y-s.y)*1e-4})<e(s)-1e-9&&(i+=1);continue}let o=(s.x+(l.x-s.x)*1e-4-pC(t).x)/(t.width/2),r=(s.y+(l.y-s.y)*1e-4-pC(t).y)/(t.height/2);("diamond"===t.shape?Math.abs(o)+Math.abs(r):"ellipse"===t.shape||"circle"===t.shape?Math.hypot(o,r):Math.max(Math.abs(o),Math.abs(r)))<1-1e-6&&(i+=1)}return i}function hV(e){return e.flatMap(e=>{if("arrow"===e.type||"line"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??e.text.length)/2,a=e.text.split("\n").length*e.fontSize*1.35/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]})}function hH(e,t,a){return{x:e.x+t,y:e.y+a}}let hq={ports:!1,reader:!1,sides:!1,repair:!1};function hF(e,t){let a=t?cQ(e):void 0;if(!a||!t)return new Set;let i=new Map([["",a.top],...a.groups.map(e=>[e.group.id,e.diagram])]);return new Set([...t].flatMap(([e,{bandOf:t}])=>i.get(e).edges.filter(e=>(t.get(e.source)??0)!==(t.get(e.target)??0)).map(e=>e.id)))}function hI(e){let{edgeArrows:t,groups:a,nodeShapes:i,routedEdges:s}=e,l=new Set;if(!a)return l;let o=new Map(t.map(e=>[e.id,e]));for(let e of hA(t,i,a))for(let t of e){let e=o.get(t);for(let t of e?[e.sourceNodeId,e.targetNodeId]:[]){let e=a.groupOf.get(t);void 0!==e&&l.add(e)}}let r=hM([...t],s,i,a,!1),n=a.frames.flatMap(e=>pf(e.box));for(let e of r){let t=o.get(e.id.slice(0,-6)),i=t?a.groupOf.get(t.sourceNodeId):void 0,s=hf(e,hp(e.text,e.maxWidth??160));if(a.zoned)for(let e of a.frames)(pf(e.box).some(e=>iw(e,s))||hm(s,e.labelBox))&&l.add(e.id);void 0!==i&&(n.some(e=>iw(e,s))||a.frames.some(e=>hm(s,e.labelBox)))&&l.add(i)}return l}function hE(e,t,a,i){let s="TB"===i||"BT"===i,l=e=>s?{low:e.x,high:e.x+e.width}:{low:e.y,high:e.y+e.height},o=e=>s?{low:e.y,high:e.y+e.height}:{low:e.x,high:e.x+e.width},[r,n,d,c]=[l(e),l(t),o(t),o(e)];return a.some(a=>{if(a.nodeId===e.nodeId||a.nodeId===t.nodeId)return!1;let i=o(a),{low:s,high:p}=l(a);return i.low<d.high&&d.low<i.high&&i.low<c.high&&c.low<i.high&&s>Math.min(r.high,n.high)-.01&&p<Math.max(r.low,n.low)+.01})}function hO(e,t,a=c6){let i=hX(e,t,a,new Map);if(!i.groups)return i;let s=e=>hA(e.edgeArrows,e.nodeShapes,e.groups).length+hI(e).size,l=new Map,o=s(i);for(let r=0;r<3&&o>0;r+=1){let r=hI(i);if(0===r.size)break;let n=hX(e,t,a,l=new Map([...l,...[...r].map(e=>[e,(l.get(e)??0)+36])])),d=s(n);d<o&&([i,o]=[n,d])}return i}function hU(e,t){for(let a of e)for(let e of["source","target"]){let i=a.pinned?.[e];void 0!==i&&t.set(pB({edgeId:a.edge.id,endpoint:e}),i)}return t}function hX(e,t,a,i){let s,l,o="orthogonal"===e.layout.edgeRouting,{anchors:r,endRun:n,placement:d}=h2.get(e)??{},c=i=>hU(i,t.ports?pY(i,t.repair,a.crossingRepair,pl(e)?54:pF):pq(i,t.repair)),{wrap:p}=a,h=hF(e,a.zoneWraps),{groups:g,lanes:u,nodes:f}=d?{nodes:e.nodes.map(e=>{let t=d.get(e.id);if(!t)throw Error(`Cannot render node "${e.id}" without a placement.`);return{...cX(e),x:t.x,y:t.y,width:t.width,height:t.height}})}:pt(e,new Map,new Map,a,i),{direction:m}=e.layout,v=e=>void 0!==e&&void 0!==g&&g.across.has(e),y=e=>v(g?.groupOf.get(e))?c7[m]:m,w=e=>g&&v(cW(g,e.source,e.target))?c7[m]:m,x=new Map([...f,...pp(g)].map(e=>[e.nodeId,e])),b=e.edges.map((e,t)=>(function(e,t,a,i,s=!1){let l=a.get(e.source),o=a.get(e.target);if(!l||!o)throw Error(`Cannot render edge "${e.id}" with unresolved nodes.`);let{sourceEdge:r,targetEdge:n}=s?{sourceEdge:c2[i],targetEdge:pI[c2[i]]}:pz(l,o,i);return{edge:e,index:t,source:l,sourceEdge:r,target:o,targetEdge:n}})(e,t,x,w(e),p.continuations.has(e.id)));for(let e of b)if(h.has(e.edge.id)){let{source:t,target:i}=e,s={LR:i.x>=t.x+t.width,RL:i.x+i.width<=t.x,TB:i.y>=t.y+t.height,BT:i.y+i.height<=t.y}[m],l=c2[c7[m]],o=!0===a.aroundRanks&&!s&&hE(t,i,f,m);e.sourceEdge=s||o?c2[m]:l,e.targetEdge=o?c2[m]:pI[l]}if(n)for(let e of b)e.endRun=n;u&&pk(b,u);let k=o&&t.ports;for(let e of new Set(b.map(e=>y(e.source.nodeId))))hc(b.filter(t=>y(t.source.nodeId)===e),e,k);if(u&&o?!function(e,t,a){let[i,s]=t.vertical?["x","y"]:["y","x"],l=c2[a],o=pE[l][s],r=e=>t.vertical?e<0?"left":"right":e<0?"top":"bottom";for(let a of new Set(e.filter(e=>cU(e.source.kind)).map(e=>e.source))){let n=e.filter(e=>e.source===a&&!pA(e));if(n.length>3)continue;let d=e=>t.laneOf.get(e.target.nodeId)===t.laneOf.get(a.nodeId)?0:Math.sign(pC(e.target)[i]-pC(a)[i]),c=e=>(pC(e.target)[s]-pC(a)[s])*o,p=t.vertical?"height":"width",h=e=>Math.min(a[s]+a[p],e.target[s]+e.target[p])-Math.max(a[s],e.target[s])>.01,g=new Set,u=[];for(let e of[-1,1]){let t=n.filter(t=>d(t)===e).sort((e,t)=>Number(h(t))-Number(h(e))||c(e)-c(t));t[0]&&(t[0].sourceEdge=r(e),g.add(r(e))),u.push(...t.slice(1))}for(let e of(u.push(...n.filter(e=>0===d(e))),u.sort((e,t)=>c(e)-c(t)))){let t=0>c(e)?[r(1),r(-1),l]:[l,r(-1),r(1)];e.sourceEdge=t.find(e=>!g.has(e))??l,g.add(e.sourceEdge)}}}(b,u,m):o&&!p.lineBreaks&&function(e,t,a,i){let s=c2[c7[i]],l=pI[s],[o,r,n]="TB"===i||"BT"===i?["y","height","x"]:["x","width","y"],d=e=>a.bandOf.get(e.nodeId)??0,c=(e,a)=>t.some(t=>t.nodeId!==e.nodeId&&d(t)===d(e)&&Math.min(t[o]+t[r],e[o]+e[r])-Math.max(t[o],e[o])>.01&&a*(pC(t)[n]-pC(e)[n])>0);for(let t of e){if(!a.continuations.has(t.edge.id))continue;c(t.source,1)||a.leaveForward?.has(t.edge.id)||(t.sourceEdge=s);let{target:o}=t;if(c(o,-1))continue;let r=e.filter(e=>e.source.nodeId===o.nodeId);if(r.some(e=>e.sourceEdge===l)&&cU(o.kind)){let[e,t]=[...r].sort((e,t)=>pC(e.target)[n]-pC(t.target)[n]);if(2!==r.length||pC(t.target)[n]-pC(o)[n]<1)continue;e.sourceEdge=c2[i],t.sourceEdge=s}r.every(e=>e.sourceEdge!==l)&&(t.targetEdge=l)}}(b,f,p,m),o){for(let t of(!function(e,t){let a=new Map;for(let i of e.filter(pA)){let s=t(i),l=pI[c2[s]],o=t=>e.filter(e=>!pA(e)&&(e.source===i.source&&e.sourceEdge===t||e.target===i.source&&e.targetEdge===t)).length,r=[..."TB"===s||"BT"===s?["right","left"]:["bottom","top"]].sort((e,t)=>o(e)-o(t)),n=[...r.map(e=>[e,l]),...r.map(e=>[e,c2[s]])],d=a.get(i.source.nodeId)??new Set,[c,p]=n.find(([e,t])=>!d.has(`${e}:${t}`))??n[0];d.add(`${c}:${p}`),a.set(i.source.nodeId,d),i.sourceEdge=c,i.targetEdge=p}}(b,e=>w(e.edge)),!function(e,t,a=()=>t.layout.direction){let i=cR(t);for(let t of e.filter(e=>i.has(e.edge.id)&&!pA(e))){let i=a(t),s="LR"===i||"RL"===i,l=s?pC(t.source).y<pC(t.target).y:pC(t.source).x<pC(t.target).x,o=[...s?l?["top","bottom"]:["bottom","top"]:l?["left","right"]:["right","left"],...s?["left","right"]:["top","bottom"]],r=new Set(e.filter(e=>e!==t&&e.source===t.target).map(e=>e.sourceEdge)),n=new Set(e.filter(e=>e!==t&&e.target===t.source).map(e=>e.targetEdge)),d=new Set(e.filter(e=>e!==t&&e.target===t.target).map(e=>e.targetEdge)),c=new Set(e.filter(e=>e!==t&&e.source===t.source).map(e=>e.sourceEdge)),p=cU(t.source.kind)?[t.sourceEdge,...o]:o;t.targetEdge=o.find(e=>!r.has(e)&&!d.has(e))??o.find(e=>!r.has(e))??t.targetEdge,t.sourceEdge=p.find(e=>!n.has(e)&&(!cU(t.source.kind)||!c.has(e))&&(t.source!==t.target||e!==t.targetEdge))??t.sourceEdge}}(b,e,e=>w(e.edge)),h2.get(e)?.pairedReturns&&function(e,t,a,i,s){for(let l of e){if(!t.has(l.edge.id)||pA(l)||s?.has(l.edge.id))continue;let o=e.find(e=>void 0===e.pair&&!s?.has(e.edge.id)&&!t.has(e.edge.id)&&e.source===l.target&&e.target===l.source&&e.targetEdge===pI[e.sourceEdge]);if(!o)continue;let[r,n]=[pC(l.source),pC(l.target)],d=new Set([l.source.nodeId,l.target.nodeId]),c=new Set([...d].flatMap(e=>i?cN(i,i.groupOf.get(e)??e):[e]));[...a.filter(e=>!d.has(e.nodeId)),...(i?.frames??[]).filter(e=>!c.has(e.id)).map(e=>pc(e.elementId,e.box))].some(e=>pD(r,n,e))||(l.sourceEdge=o.targetEdge,l.targetEdge=o.sourceEdge,o.pair=-1,l.pair=1)}}(b,cR(e),f,g,a.unpairedReturns),b)){let e=a.sides?.get(t.edge.id);e?.sourceEdge&&(t.sourceEdge=e.sourceEdge),e?.targetEdge&&(t.targetEdge=e.targetEdge)}u&&a.separateRoles&&function(e,t){let a=c2[t],i="TB"===t||"BT"===t?["left","right"]:["top","bottom"];for(let t of e){if(pA(t)||void 0!==t.pinned)continue;let s=t.source,l=t=>e.some(e=>e.target===s&&e.targetEdge===t),o=a=>e.some(e=>e!==t&&e.source===s&&e.sourceEdge===a);if(!l(t.sourceEdge))continue;let r=[a,...i].filter(e=>!l(e));t.sourceEdge=r.find(e=>!o(e))??r[0]??t.sourceEdge}}(b,m),r&&function(e,t){for(let a of e)for(let e of["source","target"]){let i=t.get(pB({edgeId:a.edge.id,endpoint:e}));i&&("source"===e?a.sourceEdge=i.side:a.targetEdge=i.side,a.pinned={...a.pinned,[e]:i.offset},void 0!==i.run&&(a.runs={...a.runs,[e]:i.run}))}}(b,r),s=c(b),l=function(e,t){let a=new Map;for(let i of e)for(let e of["source","target"]){let s=i[e];if(void 0!==cO(s))continue;let l="source"===e?i.sourceEdge:i.targetEdge,o="top"===l||"bottom"===l?"width":"height",r=2*(16+Math.abs(t.get(pB({edgeId:i.edge.id,endpoint:e}))??0));if(r<=(a.get(s.nodeId)?.[o]??s[o]))continue;let n=a.get(s.nodeId)??{width:s.width,height:s.height};n[o]=r,a.set(s.nodeId,"choice"!==s.kind||s.label?n:cE(n,0))}return a}(b,s)}else{let a=pj(b,e,f,t.repair);s=a.offsets,l=a.minimumSizes}let M=o&&!d&&(t.repair||g||u)?u?pN(b.filter(e=>e.edge.label||!pb(e,u)),s,!0):pN(b,s):new Map;if(!d&&(l.size>0||M.size>0)){({groups:g,lanes:u,nodes:f}=pt(e,l,M,a,i));let r=new Map([...f,...pp(g)].map(e=>[e.nodeId,e]));for(let t of b)t.source=r.get(t.source.nodeId),t.target=r.get(t.target.nodeId),o||Object.assign(t,pz(t.source,t.target,e.layout.direction));o?s=c(b):(u&&pk(b,u),hc(b,e.layout.direction,k),s=pj(b,e,f,t.repair).offsets)}f=function(e,t,a,i){let s=new Map;for(let l of t){if(void 0===cO(l))continue;let o=e.filter(e=>e.source===l||e.target===l),r=o[0];if(1!==o.length||!r||pA(r))continue;let n=r.source===l?"target":"source",d=r[n],c="source"===n?r.sourceEdge:r.targetEdge;if(("source"===n?r.targetEdge:r.sourceEdge)!==pI[c])continue;let p=pU(c),h="x"===p?"width":"height",g=pL(d,c,i.get(pB({edgeId:r.edge.id,endpoint:n}))??0),u={...l,[p]:g[p]-l[h]/2},f=hv(u,18),m=a?.groupOf.get(l.nodeId),v=a?.frames.find(e=>e.id===m),y=new Set(a?cN(a,m):[]);t.every(e=>e===l||!hm(f,s.get(e.nodeId)??e))&&(a?.frames??[]).every(e=>y.has(e.id)||!hm(f,e.box)&&!hm(f,e.labelBox))&&(!v||f.x>=v.box.x&&f.y>=v.box.y&&f.x+f.width<=v.box.x+v.box.width&&f.y+f.height<=v.box.y+v.box.height)&&s.set(l.nodeId,u)}if(0===s.size)return t;for(let t of e)t.source=s.get(t.source.nodeId)??t.source,t.target=s.get(t.target.nodeId)??t.target;return t.map(e=>s.get(e.nodeId)??e)}(b,f,g,s),u?function(e,t,a){let i=t.vertical?"x":"y",s=t.vertical?"width":"height",l=e.filter(e=>a.continuations.has(e.edge.id));for(let e of l){let o=a.bandOf.get(e.source.nodeId)??0,[r,n]=[t.pools[o],t.pools[o+1]];if(!n)continue;let d=l.filter(e=>(a.bandOf.get(e.source.nodeId)??0)===o);e.lane={at:(r[i]+r[s]+n[i])/2+(d.indexOf(e)-(d.length-1)/2)*18,vertical:t.vertical}}}(b,u,p):function(e,t,a,i){let s="TB"===i||"BT"===i,[l,o]=s?["x","width"]:["y","height"];for(let i of e){if(!a.continuations.has(i.edge.id))continue;let e=a.bandOf.get(i.source.nodeId)??0,r=e=>t.filter(t=>(a.bandOf.get(t.nodeId)??0)===e);i.lane={at:(Math.max(...r(e).map(e=>e[l]+e[o]))+Math.min(...r(e+1).map(e=>e[l])))/2,vertical:s}}}(b,f,p,m);let C=[...f,...ph(g),...px(u)],z=iP({width:Math.max(...C.map(e=>e.x+e.width))-Math.min(...C.map(e=>e.x)),height:Math.max(...C.map(e=>e.y+e.height))-Math.min(...C.map(e=>e.y))}),_={guided:t.repair,...t.reader?{readerScale:z}:{},...p.continuations.size>0?{bandOf:p.bandOf}:{},...g?{groups:g}:{},...u?{lanes:u}:{},...a.avoidCrossings?{avoidCrossings:!0}:{},...a.clearHeads?{clearHeads:!0}:{}},L=hB(b,e.layout.edgeRouting,s,f,_);if(o&&t.sides){let t=hS(b,L,e,z,"hooked");if(t.length>0){let e=c(b),a=hB(b,"orthogonal",e,f,_),[i,l]=[L,a].map(e=>{var t,a,i;let s;return t=f,a=g,i=u,s=iU(e.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),z).length,{hard:hA(e,t,a,i).length,reader:s}});if(l.hard<=i.hard&&l.reader<i.reader)[L,s]=[a,e];else for(let{route:e,side:a}of t)e.targetEdge=a}let i=a.crossingRepair?hS(b,L,e,z,"crossed"):[];if(i.length>0){let e=c(b),t=hB(b,"orthogonal",e,f,_);if(hA(t,f,g,u).length<=hA(L,f,g,u).length&&hj({edgeArrows:t,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f},{edgeArrows:L,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f},!0,!1))[L,s]=[t,e];else for(let{route:e,side:t}of i)e.targetEdge=t}}return o&&t.repair&&(L=function(e,t,a,i,s){let l=hA(e,i,s.groups,s.lanes),o=t.map((e,t)=>t);for(let r=0;r<4&&l.length>0;r+=1){let r=e=>o.findIndex(a=>`edge:${t[a].edge.id}`===e),[n,d]=l[0],[c,p]=void 0===d?[0,r(n)]:[Math.min(r(n),r(d)),Math.max(r(n),r(d))];if(p<=c)break;let h=[...o];h.splice(c,0,...h.splice(p,1));let g=hB(t,"orthogonal",a,i,s,h),u=hA(g,i,s.groups,s.lanes);if(u.length>=l.length)break;[e,l,o]=[g,u,h]}return e}(L,b,s,f,_)),{edgeArrows:L,...g?{groups:g}:{},...u?{lanes:u}:{},nodeShapes:f,portOffsets:s,routeOptions:_,routedEdges:b}}function hT(e,t,a=[]){let i=[...e.flatMap(e=>[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]),...t.flatMap(e=>e.points),...a.flatMap(e=>{let{width:t,height:a}=hp(e.text,e.maxWidth??160);return[{x:e.x-t/2,y:e.y-a/2},{x:e.x+t/2,y:e.y+a/2}]})];return{width:Math.max(...i.map(e=>e.x))-Math.min(...i.map(e=>e.x)),height:Math.max(...i.map(e=>e.y))-Math.min(...i.map(e=>e.y))}}function h$(e){return e.filter((t,a)=>{let[i,s]=[e[a-1],e[a+1]];return!i||!s||!(.01>=Math.abs(i.x-t.x)&&.01>=Math.abs(t.x-s.x)||.01>=Math.abs(i.y-t.y)&&.01>=Math.abs(t.y-s.y))})}function hY(e,t,a=0,i=!0){let s=i?h$(e.slice(Math.max(0,a))):e.slice(Math.max(0,a)),l=i?h$(t):t,o=(e,t,a)=>e>Math.min(t,a)+.01&&e<Math.max(t,a)-.01,r=(e,t)=>.01>=Math.abs(e.y-t.y)&&Math.abs(e.x-t.x)>.01,n=(e,t)=>.01>=Math.abs(e.x-t.x)&&Math.abs(e.y-t.y)>.01,d=0;for(let e=0;e<s.length-1;e+=1)for(let t=0;t<l.length-1;t+=1){let[a,i,c,p]=[s[e],s[e+1],l[t],l[t+1]],[h,g]=r(a,i)&&n(c,p)?[[a,i],[c,p]]:n(a,i)&&r(c,p)?[[c,p],[a,i]]:[];h&&g&&o(g[0].x,h[0].x,h[1].x)&&o(h[0].y,g[0].y,g[1].y)&&(d+=1)}return d}function hG(e,t=!0){return e.reduce((a,i,s)=>a+e.slice(s+1).reduce((e,a)=>e+hY(i.points,a.points,0,t),0),0)}function hR(e,t,a=!0){let i=iP(hT(t,e)),s=e.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),l=iT(s,i);return iU(s,i).filter(e=>a||"endpoint-jog"!==e.kind).length+s.filter(e=>l(e).arrowheadsCrossed>0).length}function hD(e){return e.filter(e=>{let[t,a]=[e.points[0],e.points.at(-1)],i=Math.abs(a.x-t.x)+Math.abs(a.y-t.y);return p4(e.points)>2*i+72+96}).length}function hZ(e){let t=[...e.nodeShapes,...ph(e.groups),...px(e.lanes)],a=e.edgeArrows.map(e=>({id:e.id,edgeId:e.edgeId,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId,endArrowhead:null!==e.endArrowhead})),i=iT(a,iP(hT(t,e.edgeArrows)));return new Set(a.filter(e=>i(e).arrowheadsCrossed>0).map(e=>e.edgeId))}function hj(e,t,a=!1,i=!0,s=!1,l=!0){let[o,r]=[e,t].map(e=>hG(e.edgeArrows,i)),[n,d]=[e,t].map(e=>hT([...e.nodeShapes,...ph(e.groups),...px(e.lanes)],e.edgeArrows)),[c,p]=[n,d].map(({width:e,height:t})=>c8(e,t));return(a?o<r:o<=r)&&(c<2.45||c<=p+.01||s&&(({width:e,height:t})=>Math.max(e,t))(n)<=(({width:e,height:t})=>Math.max(e,t))(d)+.01)&&hR(e.edgeArrows,[...e.nodeShapes,...ph(e.groups),...px(e.lanes)],l)<=hR(t.edgeArrows,[...t.nodeShapes,...ph(t.groups),...px(t.lanes)],l)}function hN(e){return e.edgeArrows.filter((t,a)=>{let i=e.routedEdges[a],s=im(h$(t.points)).slice(1,-1);return["source","target"].some(e=>{let t=i[e],a="source"===e?i.sourceEdge:i.targetEdge;return s.some(e=>{let[i,s,l,o]="horizontal"===e.orientation?[t.y,t.height,t.x,t.width]:[t.x,t.width,t.y,t.height],r=e.staticCoordinate<i?i-e.staticCoordinate:e.staticCoordinate-i-s;return("horizontal"===e.orientation?e.staticCoordinate<i?"top":"bottom":e.staticCoordinate<i?"left":"right")!==a&&r>0&&r<72&&e.min<l+o&&e.max>l})})}).length}function hW(e){let t=e.map(e=>h$(e.points)),a=[],i=(e,t,a)=>e>Math.min(t,a)+.01&&e<Math.max(t,a)-.01;for(let[e,s]of t.entries())for(let[l,o]of t.slice(e+1).entries())for(let t=0;t+1<s.length;t+=1)for(let r=0;r+1<o.length;r+=1){let[n,d,c,p]=[s[t],s[t+1],o[r],o[r+1]],[h,g]=.01>=Math.abs(n.y-d.y)&&.01>=Math.abs(c.x-p.x)?[[n,d],[c,p]]:.01>=Math.abs(n.x-d.x)&&.01>=Math.abs(c.y-p.y)?[[c,p],[n,d]]:[];h&&g&&i(g[0].x,h[0].x,h[1].x)&&i(h[0].y,g[0].y,g[1].y)&&a.push({first:e,second:e+1+l,at:{x:g[0].x,y:h[0].y}})}return a}function hJ(e,t,a,i,s){let l=a,o=new Set,[r,n]=[6,24];for(let a=!0;a&&r>0;){a=!1;let d=hG(l.layout.edgeArrows),c=hW(l.layout.edgeArrows).flatMap(({first:t,second:a,at:i})=>(function(e,t,a,i,s,l){let o="TB"===i.layout.direction||"BT"===i.layout.direction,r=o?"y":"x",n=e=>pU(e)===r?pI[e]:e,d=cR(i),c=e=>!pA(e)&&void 0===e.pair&&void 0===e.pinned,p=e=>"source"===e?"sourceEdge":"targetEdge",h=(e,t,a)=>{if(pU(a)===r)return!0;let i=pC(e[t])[r],s=pC(e["source"===t?"target":"source"])[r];return pE[a][r]*(s-i)>.01},g=[],u=(e,t)=>f.get(e.edge.id)?.[p(t)]??e[p(t)],f=new Map,m=e=>{f=e,[...e].every(([e,t])=>{let a=l.find(t=>t.edge.id===e);return h(a,"source",t.sourceEdge??a.sourceEdge)&&h(a,"target",t.targetEdge??a.targetEdge)})&&!(pl(i)&&[...f.keys()].some(e=>{let t=l.find(t=>t.edge.id===e);return["source","target"].some(e=>{let a="source"===e?"target":"source",i=t[e],s=u(t,e);return l.some(e=>e!==t&&e[a]===i&&u(e,a)===s)})}))&&g.push(e)},v=o?["left","right"]:["top","bottom"];for(let a of[e,t].filter(c))if(d.has(a.edge.id))for(let e of[...v].sort((e,t)=>e===n(a.sourceEdge)?-1:+(t===n(a.sourceEdge))))(a.sourceEdge!==e||a.targetEdge!==e)&&m(new Map([[a.edge.id,{sourceEdge:e,targetEdge:e}]]));if(c(e)&&c(t))for(let a of["source","target"])for(let i of["source","target"]){let[s,l]=[e[p(a)],t[p(i)]];e[a].nodeId===t[i].nodeId&&s!==l&&m(new Map([[e.edge.id,{[p(a)]:l}],[t.edge.id,{[p(i)]:s}]]))}for(let a of new Set([e,t].map(e=>e.source))){if(!cU(a.kind))continue;let e=l.filter(e=>e.source===a&&c(e)&&!d.has(e.edge.id));if(e.length<2||e.length>3)continue;let t=e=>e.length<=1?[[...e]]:e.flatMap((a,i)=>t([...e.slice(0,i),...e.slice(i+1)]).map(e=>[a,...e]));for(let a of t(e.map(e=>e.sourceEdge))){let t=new Map(e.flatMap((e,t)=>a[t]===e.sourceEdge?[]:[[e.edge.id,{sourceEdge:a[t]}]]));t.size>0&&m(t)}}for(let{endpoint:i,route:l}of[e,t].filter(c).flatMap(e=>["source","target"].map(t=>{let{start:i,end:l}=pR(e,s),o="source"===t?i:l;return{endpoint:t,route:e,distance:Math.abs(o.x-a.x)+Math.abs(o.y-a.y)}})).sort((e,t)=>e.distance-t.distance)){let e=l[p(i)],t=pC(l[i]),a=pC(l["source"===i?"target":"source"]);for(let s of new Set([Math.abs(a.x-t.x)>Math.abs(a.y-t.y)?a.x>t.x?"right":"left":a.y>t.y?"bottom":"top",n(e),"top","right","bottom","left"]))s!==e&&m(new Map([[l.edge.id,{[p(i)]:s}]]))}return g})(l.layout.routedEdges[t],l.layout.routedEdges[a],i,e,l.layout.portOffsets??new Map,l.layout.routedEdges)),p=3;for(let h of c){if(0===r||0===p||0===n)break;let c=new Map(l.arrangement.sides);for(let[e,t]of h)c.set(e,{...c.get(e),...t});let g=JSON.stringify([...c].sort(([e],[t])=>e<t?-1:1));if(o.has(g)||(o.add(g),n-=1,function(e,t,a){let{layout:i}=e;if(!i.portOffsets||!i.routeOptions)return 0;let s=i.routedEdges.map(e=>({...e,...t.get(e.edge.id)})),l=hU(s,a.ports?pY(s,a.repair,e.arrangement.crossingRepair,i.lanes?54:pF):pq(s,a.repair)),o=new Set(s.flatMap(e=>t.has(e.edge.id)||["source","target"].some(t=>{let a=pB({edgeId:e.edge.id,endpoint:t});return l.get(a)!==i.portOffsets.get(a)})?[e.edge.id]:[])),r=(e,t)=>{let a=new Map(e.flatMap(e=>t.has(e.edgeId)?[]:[[e.edgeId,e]])),o=s.map((e,a)=>({index:a,again:t.has(e.edge.id)})).sort((e,t)=>Number(e.again)-Number(t.again)).map(({index:e})=>e);return hB(s,"orthogonal",l,i.nodeShapes,{...i.routeOptions,avoidCrossings:!0},o,a)},n=r(i.edgeArrows,o),d=new Set(hW(n).flatMap(({first:e,second:t})=>{let[a,i]=[s[e].edge.id,s[t].edge.id];return o.has(a)===o.has(i)?[]:[o.has(a)?i:a]}));return 0===d.size?hG(n):Math.min(hG(n),hG(r(n,d)))}(l,h,t)>=d))continue;[r,p]=[r-1,p-1];let u={...l.arrangement,sides:c,avoidCrossings:!0},f=hO(e,t,u),m=i(f);if(!s(l.defects,m)&&hj(f,l.layout,!0,!0,!0)&&hN(f)<=hN(l.layout)){l={arrangement:u,defects:m,layout:f},a=!0;break}}}return l}let hK={initial:"circle",final:"circle","final-core":"circle",choice:"diamond"},hQ={initial:"Initial state",final:"Final state","final-core":"Final state",choice:"Choice"},h1="#4c4639",h0={subnet:"#f6f1e7",namespace:"#efe6ec"},h2=new WeakMap;function h3(e,t={}){var a,i,s;let l,o,r,n,d,c,p;h2.set(e,t);let h=e=>[hA(e.edgeArrows,e.nodeShapes,e.groups,e.lanes).length,hP(e.edgeArrows,e.nodeShapes)],g=(e,t)=>e[0]<t[0]||e[0]===t[0]&&e[1]<t[1],u="orthogonal"===e.layout.edgeRouting?[{ports:!0,reader:!0,sides:!0,repair:!0},{ports:!0,reader:!0,sides:!1,repair:!0},{ports:!0,reader:!1,sides:!1,repair:!0},{ports:!1,reader:!1,sides:!1,repair:!0},hq]:[{...hq,repair:!0},hq],f=(t=>{let[a,...i]=u,s=hO(e,a,t),l=h(s);for(let a of i){if(0===l[0]&&0===l[1])break;let i=hO(e,a,t),o=h(i);g(o,l)&&([s,l]=[i,o])}return{arrangement:t,defects:l,layout:s}})(c6),m=void 0===t.placement,v=(e,t)=>[hG(e.edgeArrows,t),hR(e.edgeArrows,[...e.nodeShapes,...ph(e.groups),...px(e.lanes)])],y=(e,t,a)=>{let[i,s]=[e,t].map(e=>v(e,a));return hj(e,t,!1,a)&&i.some((e,t)=>e<s[t])},w=(t,a,i=!1)=>{let s=hO(e,u[0],t),l=h(s);return!g(f.defects,l)&&(i?y(s,f.layout,!1):hj(s,f.layout,a,!1))&&(f={arrangement:t,defects:l,layout:s}),s},x="orthogonal"===e.layout.edgeRouting,b=m&&x&&e.edges.length<=24;b&&hG(f.layout.edgeArrows,!1)>0&&w({...f.arrangement,crossingRepair:!0},!1),b&&hG(f.layout.edgeArrows,!1)>0&&function(e){if(pl(e))return!1;let t=cQ(e);return(t?[t.top,...t.groups.map(e=>e.diagram)]:[e]).some(e=>{let[t,a]=[!1,!0].map(t=>c5(e,new Map,new Map,t).rankMetrics.map(e=>e.shapes.map(e=>e.nodeId).join("\n")).join("\n\n"));return t!==a})}(e)&&w({...f.arrangement,reorder:!0},!0);let k="TB"===e.layout.direction||"BT"===e.layout.direction,M=e=>{let t=hT([...e.nodeShapes,...ph(e.groups),...px(e.lanes)],e.edgeArrows,[...hM([...e.edgeArrows],e.routedEdges,e.nodeShapes,e.groups,!1,e.lanes)]),[a,i]=k?[t.height,t.width]:[t.width,t.height],s=(a+40)/(i+40),l=28e3/(Math.max(a,i)+40);return{aspect:s,balance:k&&s<4&&l>=14?.6:0,size:t,tooLong:s>=4||s>=2.45&&(k||a>=1200)}},{aspect:C,balance:z,tooLong:_}=M(f.layout),L=m&&x&&_?pl(e)?C>=4?function(e){let t,{columnCount:a,columns:i,depth:s,gapAfter:l,headerSize:o,poolBreadth:r}=pr(e,new Map,new Map);if(a<4)return c4;let n=cR(e),d=Array.from({length:a-1},(t,a)=>{let s=e.edges.filter(e=>{let[t,s]=(e=>{let[t,a]=[i.get(e.source),i.get(e.target)];return[Math.min(t,a),Math.max(t,a)]})(e);return t<=a&&s>a});return s.some(e=>n.has(e.id))||s.length>2?void 0:s.map(e=>e.id)}),c=(e,t)=>o+96+s.slice(e,t+1).reduce((e,t)=>e+t,0)+l.slice(e,t).reduce((e,t)=>e+t,0),p=a-1,h=c8(c(0,p),r),g=(e,t)=>!t||e.longest<t.longest-.01||.01>=Math.abs(e.longest-t.longest)&&(e.carried<t.carried||e.carried===t.carried&&e.squares<t.squares);for(let e=2;e<=6;e+=1){let a,i=new Map;for(let e=1;e<p;e+=1)void 0!==d[e]&&i.set(e,{cuts:[e],longest:c(0,e),carried:d[e].length,squares:c(0,e)**2});for(let t=2;t<e;t+=1){let e=new Map;for(let[t,a]of i)for(let i=t+2;i<p;i+=1){if(void 0===d[i])continue;let s=c(t+1,i),l={cuts:[...a.cuts,i],longest:Math.max(a.longest,s),carried:a.carried+d[i].length,squares:a.squares+s**2};g(l,e.get(i))&&e.set(i,l)}i=e}for(let[e,t]of i){if(p<e+2)continue;let i=c(e+1,p),s={...t,longest:Math.max(t.longest,i),squares:t.squares+i**2};g(s,a)&&(a=s)}if(!a)continue;let s=e*r+(e-1)*pn(2),l=c8(a.longest,s);if((!t||l<t.aspect)&&(t={aspect:l,cuts:a.cuts}),l<=2)break}return!t||t.aspect>=h?c4:{bandOf:new Map(e.nodes.map(e=>{let a;return[e.id,(a=i.get(e.id),t.cuts.filter(e=>e<a).length)]})),continuations:new Set(t.cuts.flatMap(e=>d[e]))}}(e):c4:c9(e,f.arrangement.reorder,z):c4,B=(e,t=!1)=>{let a;for(let i of b&&!f.arrangement.crossingRepair?[!0,!1]:[f.arrangement.crossingRepair]){if(0===e.continuations.size||f.arrangement.wrap===e)break;a=w({...f.arrangement,crossingRepair:i,wrap:e},!1,t)}return a},S=B(L);if(S&&!pl(e)){let t=f.arrangement.wrap===L;if(!t||v(f.layout,!1).some(e=>e>0)){let a=function(e,t,a){let i=c2[c7[a]],[s,l]="TB"===a||"BT"===a?["x","width"]:["y","height"],o=new Set;for(let a of e.routedEdges){if(!t.continuations.has(a.edge.id)||a.sourceEdge!==i)continue;let{source:r}=a,n=r[s]+r[l];e.edgeArrows.some(e=>e.targetNodeId===r.nodeId&&e.edgeId!==a.edge.id&&e.points.slice(-3).some(e=>e[s]>n+.01))&&o.add(a.edge.id)}return o}(S,L,e.layout.direction);a.size>0&&B({...L,leaveForward:a},t),(f.arrangement.wrap===L||0===f.arrangement.wrap.continuations.size)&&B({...L,lineBreaks:!0},t)}}let A=cQ(e),P=m&&x&&_&&void 0!==A&&!A.zoned;for(let e of b&&!f.arrangement.crossingRepair?[!0,!1]:[f.arrangement.crossingRepair]){if(!P||f.arrangement.groupsAcross)break;w({...f.arrangement,crossingRepair:e,groupsAcross:!0},!1)}let V=e=>[hG(e.edgeArrows,!1),hR(e.edgeArrows,[...e.nodeShapes,...ph(e.groups)]),M(e).aspect],H=(e,t)=>{let a=e.findIndex((e,a)=>e!==t[a]);return a>=0&&e[a]<t[a]};for(let t=0;t<2&&m&&x&&A?.zoned;t+=1){let t,a=M(f.layout);if(!a.tooLong)break;let i=f;for(let s of function(e,t,a,i,s){let l=new Map([["",t.top],...t.groups.map(e=>[e.group.id,e.diagram])]),o=function(e){let t=new Map(e.groups.map(e=>[e.group.id,e])),a=new Map,i=e=>{for(let a of e.children)i(t.get(a));let{rankMetrics:s}=c5(e.diagram,new Map,new Map),l=s.reduce((e,t)=>e+Math.max(...t.shapes.map(e=>a.get(e.nodeId)??1)),0);return a.set(cK(e.group.id),Math.max(2,l)),l};for(let t of e.groups)e.parentOf.has(t.group.id)||i(t);return a}(t),r=t=>{let i=pt(e,new Map,new Map,{...a,zoneWraps:t});return{bounds:pa([...i.nodes,...ph(i.groups)]),placed:i}},n=new Map(a.zoneWraps??[]),d=r(n),[c,p]=[s.width/d.bounds.width,s.height/d.bounds.height],h=e=>{let{bounds:t,placed:a}=r(e);return{aspect:c8(t.width*c,t.height*p),placed:a}},g=(e,t)=>{let[a,i]=[e,t].map(e=>e.aspect<=2);return a!==i?a?-1:1:a&&e.bands-t.bands||e.aspect-t.aspect},u=n.size,f=h(n),m=[];for(;f.aspect>2;){let e=new Map([...f.placed.nodes.map(e=>[e.nodeId,e]),...(f.placed.groups?.frames??[]).map(e=>[cK(e.id),e.box])]),t=[];for(let[s,r]of l)if(!n.has(s))for(let l=2;l<=6;l+=1){let d=c9(r,a.reorder,i,{bands:l,sizes:e,weights:o});if(0===d.bandOf.size)continue;let c=new Map([...n,[s,d]]);if(t.push({...h(c),bands:l,next:c}),t.at(-1).aspect<=2)break}let s=t.filter(e=>e.aspect<f.aspect).sort(g),[r]=s;if(!r)break;n.size===u&&m.push(...s.slice(1,3).map(e=>e.next)),n=r.next,f=r}return n.size>u?[n,...m]:[]}(e,A,i.arrangement,a.balance,a.size)){let a={...i.arrangement,crossingRepair:b||i.arrangement.crossingRepair,zoneWraps:s},l=hO(e,u[0],a),o=!a.avoidCrossings&&hG(l.edgeArrows,!1)>hG(i.layout.edgeArrows,!1),r=o?{...a,avoidCrossings:!0}:a,n=o?hO(e,u[0],r):l,d=h(n);if(g(i.defects,d)||!hj(n,i.layout,!1,!1,!1,!1))continue;let c=V(n);(!t||H(c,t.score))&&(t={arrangement:r,defects:d,layout:n,score:c});let[p,f]=V(i.layout);if(c[0]<=p&&c[1]<=f)break}if(!t)break;f=t}let q=hF(e,f.arrangement.zoneWraps);if(f.arrangement.zoneWraps&&!f.arrangement.aroundRanks&&f.layout.routedEdges.some(({edge:t,source:a,target:i})=>q.has(t.id)&&hE(a,i,f.layout.nodeShapes,e.layout.direction))){let t={...f.arrangement,aroundRanks:!0},a=hO(e,u[0],t),i=h(a),s=({edgeArrows:e})=>e.reduce((e,t)=>e+p4(t.points),0);!g(f.defects,i)&&hj(a,f.layout,!1,!1)&&hN(a)<=hN(f.layout)&&hD(a.edgeArrows)<=hD(f.layout.edgeArrows)&&s(a)<s(f.layout)-.01&&(f={arrangement:t,defects:i,layout:a})}m&&x&&pl(e)&&w({...f.arrangement,separateRoles:!0},!1);let F=t=>{let a=hG(t.layout.edgeArrows);return b&&a>0&&a<=6?hJ(e,u[0],t,h,g):t},I=f;f=F(f);let{wrap:E}=I.arrangement;if(b&&!pl(e)&&E.continuations.size>0&&!E.lineBreaks&&hG(f.layout.edgeArrows)>0){let t={...I.arrangement,wrap:{...E,lineBreaks:!0}},a=hO(e,u[0],t),i=F({arrangement:t,defects:h(a),layout:a});!g(f.defects,i.defects)&&y(i.layout,f.layout,!0)&&(f=i)}if(t.pairedReturns&&hG(f.layout.edgeArrows)>0){let t=f,a=new Map(f.layout.edgeArrows.map(e=>[e.edgeId,e])),i=new Set;for(let e of f.layout.routedEdges){let t=a.get(e.edge.id);if(void 0!==e.pair&&t&&f.layout.edgeArrows.some(e=>e!==t&&hG([t,e])>0))for(let t of f.layout.routedEdges)void 0!==t.pair&&(t.edge.id===e.edge.id||t.edge.source===e.edge.target&&t.edge.target===e.edge.source)&&i.add(t.edge.id)}if(i.size>0){w({...f.arrangement,unpairedReturns:i},!0);let a=hG(f.layout.edgeArrows);f!==t&&b&&a>0&&a<=6&&(f=hJ(e,u[0],f,h,g));let s=new Set(f.layout.routedEdges.filter(e=>void 0!==e.pair).map(e=>e.edge.id));t.layout.routedEdges.some(e=>void 0!==e.pair&&!i.has(e.edge.id)&&!s.has(e.edge.id))&&(f=t)}}let O=e=>x?function(e){let{groups:t,lanes:a,nodeShapes:i,routedEdges:s}=e,l=e.edgeArrows,o=e=>hC([...e],s,i,t,!0,a);if(0===o(l).shortfalls.length)return e;let r=[...i,...ph(t),...px(a)],n=e=>{let s=o(e);return{labels:s,shortfall:s.shortfalls.reduce((e,t)=>e+t.shortfall,0),touches:s.touches,crossings:hG(e),defects:hA(e,i,t,a).length,findings:hR(e,r),nodeFindings:hR(e,i),inward:hP(e,i),near:e.reduce((e,t)=>e+p5(t.points,i,new Set([t.sourceNodeId,t.targetNodeId])),0)}},d=n(l);for(let e=0;e<3&&d.shortfall>0;e+=1){let e=!1;for(let t of d.labels.shortfalls){for(let[a,i]of l.entries())if(a!==t.index){for(let s of function(e,t){let{box:a,own:i}=t,s=h$(e),l=[];for(let e of[6,1].map(e=>i+8+e))for(let t of im(s)){if(t.isFirstSegment||t.isLastSegment||hy(a,t)>=e)continue;let[i,o]="horizontal"===t.orientation?[a.y,a.height]:[a.x,a.width];for(let a of[i-e,i+o+e]){let e=s.map((e,i)=>i===t.segmentIndex||i===t.segmentIndex+1?"horizontal"===t.orientation?{x:e.x,y:a}:{x:a,y:e.y}:e);hL(s,e)&&l.push(pJ(e))}}return l}(i.points,t)){if(!h_(s))continue;let t=l.map((e,t)=>t===a?{...e,points:s}:e),i=n(t);if(i.shortfall<d.shortfall&&i.defects<=d.defects&&i.crossings<=d.crossings&&i.findings<=d.findings&&i.nodeFindings<=d.nodeFindings&&i.inward<=d.inward&&i.near<=d.near&&i.touches<=d.touches){[l,d,e]=[t,i,!0];break}}if(e)break}if(e)break}if(!e)break}return l===e.edgeArrows?e:{...e,edgeArrows:l}}(function(e){let t,{groups:a,lanes:i,nodeShapes:s,routedEdges:l}=e,o=e.edgeArrows,r=[...s,...ph(a),...px(i)],n=e=>({crossings:hG(e),defects:hA(e,s,a,i).length,findings:hR(e,r),inward:hP(e,s),labels:hC([...e],l,s,a,!0,i).touches});for(let[a,i]of e.edgeArrows.entries()){let e=new Set([i.sourceNodeId,i.targetNodeId]),l=p5(i.points,s,e);if(0!==l)for(let r of(t??=n(o),function(e,t,a){let i=h$(e),s=[];for(let e of im(i))if(!e.isFirstSegment&&!e.isLastSegment)for(let l of t){if(!p1(l,a)||iw(e,l)||!pQ(e,l,12))continue;let[t,o]="horizontal"===e.orientation?[l.y,l.height]:[l.x,l.width];for(let a of[t-12-1,t+o+12+1]){let t=i.map((t,i)=>i===e.segmentIndex||i===e.segmentIndex+1?"horizontal"===e.orientation?{x:t.x,y:a}:{x:a,y:t.y}:t);hL(i,t)&&s.push(pJ(t))}}return s}(i.points,s,e))){if(!h_(r)||p5(r,s,e)>=l)continue;let i=o.map((e,t)=>t===a?{...e,points:r}:e),d=n(i);if(d.defects<=t.defects&&d.crossings<=t.crossings&&d.findings<=t.findings&&d.inward<=t.inward&&d.labels<=t.labels){[o,t]=[i,d];break}}}return o===e.edgeArrows?e:{...e,edgeArrows:o}}(e)):e,U=O(f.layout),X=({edgeArrows:e,groups:t,lanes:a,nodeShapes:i,routedEdges:s})=>{let{shortfalls:l,touches:o}=hC([...e],s,i,t,!0,a);return[o,l.reduce((e,t)=>e+t.shortfall,0)]},T=()=>m&&x&&(pl(e)||k&&!A)&&0===f.arrangement.wrap.continuations.size&&M(U).aspect>=2.3&&(!pl(e)||0===hZ(U).size),$=t=>{let a=hO(e,u[0],t),i=F({arrangement:t,defects:h(a),layout:a}),s=O(i.layout),l=new Map(U.edgeArrows.map(e=>[e.id,p4(e.points)]));return!!(!g(f.defects,i.defects)&&hj(s,U,!1,!0)&&s.edgeArrows.every(e=>p4(e.points)<=l.get(e.id)+.01)&&(!pl(e)||0===hZ(s).size)&&hN(s)<=hN(U)&&hD(s.edgeArrows)<=hD(U.edgeArrows)&&X(s).every((e,t)=>e<=X(U)[t]))&&M(s).aspect<M(U).aspect&&(f=i,U=s,!0)};if(pl(e)&&T()){let t=po(e,!0);[...po(e)].some(([e,a])=>t.get(e)!==a)&&$({...f.arrangement,throughHandoffs:!0})}for(let t of T()?[!1,!0]:[]){let a=function(e,t,a,i=!1){let s=new Map(t.nodeShapes.map(e=>[e.nodeId,e])),l=pl(e)?[...po(e,a.throughHandoffs)].reduce((e,[t,a])=>((e[a]??=[]).push(t),e),[]):c5(e,new Map,new Map,a.reorder).rankMetrics.map(({shapes:e})=>e.map(e=>e.nodeId)),o="TB"===e.layout.direction||"BT"===e.layout.direction,[r,n]=o?["y","height"]:["x","width"],d=l.map(e=>{let t=e.map(e=>s.get(e));return{top:Math.min(...t.map(e=>e[r])),bottom:Math.max(...t.map(e=>e[r]+e[n]))}}),c=o?"x":"y",p=t.edgeArrows.flatMap(e=>e.points.slice(1).flatMap((t,a)=>{let i=e.points[a];return .01>=Math.abs(t[r]-i[r])&&Math.abs(t[c]-i[c])>.01?[t[r]]:[]})),h=new Map;for(let e=0;e<d.length-1;e+=1){let[t,a]=[d[e],d[e+1]],[s,l]=t.bottom<=a.top?[t.bottom,a.top]:[a.bottom,t.top],o=new Set(p.filter(e=>e>s+.01&&e<l-.01)).size;0===o?h.set(e,56):i||h.set(e,72+(o-1)*18)}return h}(e,U,f.arrangement,t);if(a.size>0&&$({...f.arrangement,compactGaps:a}))break}let Y=e=>{let{width:t,height:a}=hT([...e.nodeShapes,...ph(e.groups),...px(e.lanes)],e.edgeArrows,hM([...e.edgeArrows],e.routedEdges,e.nodeShapes,e.groups,!0,e.lanes));return Math.max(t,a)},G=x?hZ(U):new Set,R=[];if(G.size>0&&U.portOffsets&&U.routeOptions){let{edgeArrows:e,nodeShapes:t,portOffsets:a,routeOptions:i,routedEdges:s}=U,l=s.map((e,t)=>t),o=e=>+!!G.has(s[e].edge.id);R.push(O({...U,edgeArrows:hB(s,"orthogonal",a,t,{...i,clearHeads:!0},l.sort((e,t)=>o(e)-o(t)),new Map(e.filter(e=>!G.has(e.edgeId)).map(e=>[e.edgeId,e])))}))}if(b&&G.size>0){let t={...f.arrangement,clearHeads:!0},a=hO(e,u[0],t);R.push(O(F({arrangement:t,defects:h(a),layout:a}).layout))}let D=e=>[hZ(e).size,...v(e,!0)],Z=U;for(let e of R.filter(e=>{let[t,a]=[e,U].map(h),[i,s]=[e,U].map(X);return!g(a,t)&&hZ(e).size<hZ(U).size&&hj(e,U,!1,!0,!0)&&Y(e)<=Y(U)+.01&&hD(e.edgeArrows)<=hD(U.edgeArrows)&&i.every((e,t)=>e<=s[t])}))(U===Z||H(D(e),D(U)))&&(U=e);let{groups:j,lanes:N,routedEdges:W}=U,J=[...U.edgeArrows],K=new Map(e.nodes.flatMap(e=>e.description?[[e.id,e.description]]:[])),Q=(a=U.nodeShapes,o=(l=a.map(e=>K.has(e.nodeId)?{...e,groupIds:[`${e.id}:described`,...e.groupIds??[]]}:e)).filter(e=>e.label).flatMap(e=>{let t,a,i=K.get(e.nodeId);return i?[pM(e,!0),(t=cF(i,e.shape),a=Math.ceil(14*e.label.split("\n").length*1.35),{type:"text",id:`description:${e.nodeId}`,...e.groupIds?{groupIds:[...e.groupIds]}:{},textColor:"#5f574c",x:e.x+e.width/2,y:e.y+e.height/2+a/2+2+t.height/2,text:t.text,fontSize:12,lineHeight:1.25,maxWidth:Math.ceil(t.width)})]:[pM(e)]}),{nodes:l,texts:o}),ee={arrows:J,frames:[],labels:[...Q.texts,...hM(J,W,U.nodeShapes,j,!0,N)],nodes:Q.nodes},et=j&&!j.zoned?function(e,t){let a=new Map(e.frames.map(e=>[e.id,e])),i=t=>{let i=e.groupOf.get(t);return void 0===i?void 0:a.get(i)},s=new Map(t.labels.map(e=>[e.id,e])),l=new Map;for(let e of t.arrows){let t=i(e.sourceNodeId);if(!t||t!==i(e.targetNodeId))continue;let a=s.get(`${e.id}:label`),o=a?hp(a.text,a.maxWidth??160):void 0;(!a||!o||[{x:a.x-o.width/2,y:a.y-o.height/2},{x:a.x+o.width/2,y:a.y+o.height/2}].every(e=>pm(e,t.box)))&&e.points.every(e=>pm(e,t.box))&&l.set(e.id,t.elementId)}let o=new Map(t.nodes.flatMap(e=>{let t=i(e.nodeId);return t?[[e.id,t.elementId]]:[]}));return{arrows:t.arrows.map(e=>{let t=l.get(e.id);return t?{...e,frameId:t}:e}),frames:e.frames.map(t=>({type:"frame",id:t.elementId,name:t.label,...e.composites.has(t.id)?{nodeId:t.id}:{},...t.box})),labels:t.labels.map(e=>{let t=e.containerId?o.get(e.containerId):e.id.startsWith("description:")?o.get(`node:${e.id.slice(12)}`):l.get(e.id.slice(0,-6));return t?{...e,frameId:t}:e}),nodes:t.nodes.map(e=>{let t=o.get(e.id);return t?{...e,frameId:t}:e})}}(j,ee):ee,{arrows:ea,frames:ei,labels:es}=et,el=et.nodes.flatMap(t=>(function(e,t){if(e.label)return[e];let a={...e,label:hQ[e.kind??""]??"Marker",rendererRole:"state-marker"};if("initial"===e.kind)return[{...a,fillColor:t,fillStyle:"solid"}];if("final"!==e.kind)return[a];let i=[`marker:${e.nodeId}`,...e.groupIds??[]];return[{...a,groupIds:i},{...a,id:`${e.id}:core`,nodeId:`${e.nodeId}:core`,kind:"final-core",groupIds:i,x:e.x+6,y:e.y+6,width:e.width-12,height:e.height-12,fillColor:t,fillStyle:"solid"}]})(t,e.style.accentColor)),eo=N?N.frames.flatMap(e=>{let t=pv(e),a={type:"node",id:`${t}:header`,nodeId:`${t}:header`,kind:"lane-header",rendererRole:"swimlane-header",shape:"rectangle",...e.header,label:e.text,fillColor:"#f6f1e7",fillStyle:"solid",roughness:0,strokeWidth:1,locked:!0};return[{type:"node",id:t,nodeId:t,kind:"lane",rendererRole:"swimlane",shape:"rectangle",...e.box,label:e.label,roughness:0,strokeWidth:1,locked:!0},a,{type:"text",id:`${t}:label`,containerId:a.id,x:a.x+a.width/2,y:a.y+a.height/2,text:e.text,fontSize:16,maxWidth:Math.max(1,a.width-32),locked:!0}]}):j?.zoned?(i=e.style.accentColor,j.frames.flatMap(e=>{var t;let a,s=Math.max(1,e.box.width-24);return[{type:"node",id:e.elementId,nodeId:e.elementId,kind:e.kind??"zone",rendererRole:"zone",shape:"rectangle",...e.box,label:e.label,...(t=e.kind,a=void 0===t?void 0:h0[t],{strokeColor:"cloud"===t||"datacenter"===t?h1:i,strokeStyle:"cloud"===t||"region"===t||"namespace"===t?"dashed":"zone"===t?"dotted":"solid",strokeWidth:"cloud"===t||"datacenter"===t||"vpc"===t||"cluster"===t?2:1,...a?{fillColor:a,fillStyle:"solid"}:{}}),roughness:0,locked:!0},{type:"text",id:`zone-label:${e.id}`,x:e.box.x+12+aO(e.label,cj,s)/2,y:e.box.y+18,text:e.label,fontSize:cj,maxWidth:s,textAlign:"left",textColor:h1,locked:!0}]})):[],er=(c=Math.max(0,48-(d={x:Math.min(...(n=hV(s=[...eo,...ei,...ea,...el,...es])).map(e=>e.x)),y:Math.min(...n.map(e=>e.y))}).x),p=Math.max(0,48-d.y),0===c&&0===p?[...s]:s.map(e=>"arrow"===e.type?{...e,points:function(e,t,a){let[i,...s]=e;return[hH(i,t,a),...s.map(e=>hH(e,t,a))]}(e.points,c,p)}:"line"===e.type?{...e,points:function(e,t,a){let[i,s,...l]=e;return[hH(i,t,a),hH(s,t,a),...l.map(e=>hH(e,t,a))]}(e.points,c,p)}:{...e,x:e.x+c,y:e.y+p})),en={width:Math.max(...(r=hV(er)).map(e=>e.x))+48,height:Math.max(...r.map(e=>e.y))+48},ed=[...eo.map(e=>e.id),...ei.map(e=>e.id),...el.map(e=>e.id),...es.map(e=>e.id),...ea.map(e=>e.id)];return{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:en.width,height:en.height,accentColor:e.style.accentColor,backgroundColor:e.style.backgroundColor,elements:er,layers:[],layouts:[],zOrder:ed}}function h5(e,t){if(!t.nodeId.endsWith(eE)||t.id!==`node:${t.nodeId}`||"rectangle"!==t.shape||2!==t.width||t.height<120)return!1;let a=t.nodeId.slice(0,-eE.length);if(0===a.length)return!1;let i=e.elements.find(e=>"node"===e.type&&e.id===`node:${a}`&&e.nodeId===a);return!!i&&.01>=Math.abs(t.x+t.width/2-(i.x+i.width/2))&&t.y>=i.y+i.height-.01}let h4=":initial";function h6(e,t,a,i){let s=0,l=new Map,o=new Map,r=(e,a,i)=>{let s=2*e+ +(a>=t[e]);l.set(s,(l.get(s)??0)+1);let r=1e6*s+Math.round(2*i);o.set(r,(o.get(r)??0)+1)};for(let{parent:a,child:l,link:o}of e.pairs)s+=function(e,t,a){let i=t-e;return 1===i?0:-1===i?.4:0===i?a:2.5*(Math.abs(i)-1)+.4*(i<0)}(t[a],t[l],i),r(a,t[l],o.parentY),r(l,t[a],o.childY);for(let e of l.values())s+=.4*e*(e-1)/2;for(let e of o.values())s+=+Math.max(0,e-2);let n=new Map,d=new Map;for(let[a,i]of e.tables.entries()){let e=t[a];n.set(e,(n.get(e)??-56)+i.height+56),d.set(e,Math.max(d.get(e)??0,i.width))}for(let e of n.values()){let t=Math.max(0,e-a.height)/a.unit;s+=1.5*t*t}let c=Math.max(0,[...d.values()].reduce((e,t)=>e+t,0)+150*Math.max(0,d.size-1)-a.width)/a.column;return s+1.5*c*c}function h7(e){let t=new Map([...new Set(e)].sort((e,t)=>e-t).map((e,t)=>[e,t]));return e.map(e=>t.get(e))}function h8(e){let t=e.tables.map(()=>new Set);for(let{parent:a,child:i}of e.pairs)t[a].add(i),t[i].add(a);return t}function h9(e,t,a,i){let s=h8(e),l=e.tables.map((e,t)=>t).sort((e,t)=>s[t].size-s[e].size||e-t),o=i(t);for(let e=0;e<a;e+=1){let e=!1;for(let a of l){let l=t[a],r=new Set([l-2,l-1,l+1,l+2]);for(let e of s[a])for(let a of[-1,0,1])r.add(t[e]+a);if(0===s[a].size)for(let e of t)r.add(e);r.delete(l);let n=l;for(let e of[...r].sort((e,t)=>e-t)){t[a]=e;let s=i(t);s<o-1e-9&&([n,o]=[e,s])}t[a]=n,n!==l&&(e=!0)}if(!e)break}}function ge(e,t){let a=[...t],i=e.tables.map(e=>e.height),s=e.tables.map(()=>void 0),l=[];for(let{parent:o,child:r,link:n}of e.pairs){let[e,d]=[t[o],t[r]];if(1>=Math.abs(d-e)){l.push({a:o,b:r,aY:n.parentY,bY:n.childY});continue}let c=Math.sign(d-e),p={item:o,y:n.parentY};for(let t=e+c;t!==d;t+=c){let e=a.length;a.push(t),i.push(4),s.push({parent:o,y:n.parentY}),l.push({a:p.item,b:e,aY:p.y,bY:2}),p={item:e,y:2}}l.push({a:p.item,b:r,aY:p.y,bY:n.childY})}return{column:a,height:i,corridor:s,segments:l}}function gt(e,t,a){let i=[t,a].filter(t=>void 0!==e.corridor[t]).length;return 2===i?20:1===i?26:56}function ga(e,t){let a=[],i=0;for(let[s,l]of t.entries())s>0&&(i+=gt(e,t[s-1],l)),a.push(i),i+=e.height[l];return a}function gi(e,t){let a=e.column.map(()=>0);for(let i of t)gs(e,a,i);return a}function gs(e,t,a){let i=ga(e,a),s=a.length>0?i.at(-1)+e.height[a.at(-1)]:0;for(let[e,l]of a.entries())t[l]=i[e]-s/2}function gl(e,t){let a=new Map,i=new Map,s=[],l=(e,t,a)=>{let s=2*e+ +!!t,l=i.get(s);l?l.push(a):i.set(s,[a])};for(let{a:i,b:o,aY:r,bY:n}of e.segments){let[d,c]=[e.column[i],e.column[o]],[p,h]=[t[i]+r,t[o]+n];if(d===c){s.push(d,Math.min(p,h),Math.max(p,h));continue}l(d,c>d,p),l(c,d>c,h);let g=Math.min(d,c),u=a.get(g),f=d<c?[p,h]:[h,p];u?u.push(...f):a.set(g,f)}let o=0;for(let e of a.values())for(let t=0;t<e.length;t+=2)for(let a=t+2;a<e.length;a+=2)(e[t]-e[a])*(e[t+1]-e[a+1])<0&&(o+=1);for(let e=0;e<s.length;e+=3){let[t,a,l]=[s[e],s[e+1],s[e+2]],r=e=>{let s=0;for(let o of i.get(2*t+e)??[])o>a&&o<l&&(s+=1);return s};o+=Math.min(r(0),r(1))}return o}function go(e){let t=e.column.map(()=>[]);for(let{a,b:i,aY:s,bY:l}of e.segments)t[a].push({other:i,ownY:s,otherY:l}),t[i].push({other:a,ownY:l,otherY:s});return t}function gr(e,t=!0){let a=Array.from({length:Math.max(...e.column)+1},()=>[]);for(let[t,i]of e.column.entries())a[i].push(t);let i=go(e),s=gi(e,a),l={columns:a.map(e=>[...e]),crossings:gl(e,s)};for(let t=0;t<8&&l.crossings>0;t+=1){let o=[...a.keys()];for(let l of(t%2==1&&o.reverse(),o)){let t=new Map;for(let o of a[l]){let a=0,r=0;for(let{other:t,ownY:n,otherY:d}of i[o]){let i=e.column[t]===l?.5:1;a+=i*(s[t]+d-n),r+=i}t.set(o,r>0?a/r:s[o])}a[l]=[...a[l]].sort((e,a)=>t.get(e)-t.get(a)||s[e]-s[a]),gs(e,s,a[l])}let r=gl(e,s);r<l.crossings&&(l={columns:a.map(e=>[...e]),crossings:r})}s=gi(e,a=l.columns);let o=gl(e,s);for(let i=t&&o>0;i;)for(let t of(i=!1,a))for(let s=0;s+1<t.length;s+=1){[t[s],t[s+1]]=[t[s+1],t[s]];let l=gl(e,gi(e,a));l<o?(o=l,i=!0):[t[s],t[s+1]]=[t[s+1],t[s]]}return{columns:a,top:gi(e,a),crossings:o}}let gn={one:"crowfoot_one","zero-or-one":"crowfoot_one",many:"crowfoot_many","one-or-many":"crowfoot_one_or_many","zero-or-many":"crowfoot_many"};function gd(e){return"one"===e||"zero-or-one"===e}let gc=e=>Math.ceil(Math.max(0,...e.map(e=>aE(e,14))));function gp(e,t){return t.get(e.link[e.end].entity).y+e.row}function gh(e,t){return t.get(e.link[e.end].entity).y+e.y}function gg(e,t){return 1>Math.abs(e.x+e.width/2-(t.x+t.width/2))}function gu(e,t,a){return gg(e.get(t.link[t.end].entity),e.get(a.link[a.end].entity))}function gf(e,t){let a=t.get(e.link[e.end].entity),i=[...t.values()].filter(e=>gg(e,a));return"left"===e.side?a.x-Math.min(...i.map(e=>e.x)):Math.max(...i.map(e=>e.x+e.width))-(a.x+a.width)}function gm(e,t){return e.find(e=>e.link===t.link&&e!==t)}function gv(e){let t=new Map;for(let a of e){if("top"===a.side)continue;let e=`${a.link[a.end].entity}\0${a.side}\0${a.row}`;t.set(e,[...t.get(e)??[],a])}return[...t.values()]}function gy(e,t){let a=e.flatMap(e=>{let a=t.sides.get(e.relationship.id);return["parent","child"].map(t=>({link:e,end:t,side:a[t],row:e[t].y,y:e[t].y}))});for(let t of e){if(t.parent.entity!==t.child.entity)continue;let[e,i]=a.filter(e=>e.link===t);e&&i&&e.row===i.row&&(i.side="top")}return a}function gw(e,t,a,i,s){let l=function(e,t){let a=gv(e),i=e=>(20===e.row?40:28)/2-3,s=new Map;for(let l of a){if(l.length<2)continue;let a=a=>gp(gm(e,a),t)-gp(a,t),o=l.filter(e=>0>a(e)).sort((e,t)=>a(e)-a(t)),r=l.filter(e=>a(e)>0).sort((e,t)=>a(e)-a(t)),n=[...o,...l.filter(e=>0===a(e)),...r],d=Math.min(22,2*i(l[0])/(n.length-1));n.forEach((e,t)=>{e.y=e.row+(t-(n.length-1)/2)*d});let c=(e,a)=>s.set(e,gf(e,t)+48+32*a);o.forEach(c),r.toReversed().forEach(c)}for(let s of a){if(s.length>1)continue;let a=s[0],l=gm(e,a);if(l.side===a.side||"top"===l.side)continue;let o=gh(l,t)-(gp(a,t)-a.row);Math.abs(o-a.row)<=i(a)&&(a.y=o)}for(let a of e)"top"!==a.side&&!s.has(a)&&gf(a,t)>0&&s.set(a,gf(a,t)+48);let l=new Map;for(let t of e){if("top"===t.side)continue;let e=`${t.link[t.end].entity}\0${t.side}`;l.set(e,[...l.get(e)??[],t])}for(let e of l.values()){let{height:a}=t.get(e[0].link[e[0].end].entity);!function(e,t,a){if(e.length<2)return;let i=(t,a)=>e[a].row===e[a-1].row?t:Math.max(t,9),s=s=>{let l=-1/0;for(let[o,r]of e.entries())if((l=Math.max(t(r),o>0?l+i(s,o):l))>a(r)+1e-9)return!1;return!0},[l,o]=[0,22];if(s(o))l=o;else for(let e=0;e<24;e+=1){let e=(l+o)/2;s(e)?l=e:o=e}let r=e.map(a);for(let t=e.length-2;t>=0;t-=1)r[t]=Math.min(r[t],r[t+1]-i(l,t+1));let n=-1/0;for(let[a,s]of e.entries()){let e=a>0?n+i(l,a):-1/0;s.y=Math.min(Math.max(s.y,t(s),e),r[a]),n=s.y}}(e.sort((e,t)=>e.row-t.row||e.y-t.y),e=>Math.max(e.row-i(e),16),e=>Math.min(e.row+i(e),a-16))}return s}(s,i.boxes);!function(e,t,a){let i=e.filter(e=>"parent"===e.end).flatMap(a=>{let i=gm(e,a);return a.side===i.side&&"top"!==a.side&&gu(t,a,i)?[{parent:a,child:i}]:[]}).sort((e,a)=>Math.abs(gh(e.parent,t)-gh(e.child,t))-Math.abs(gh(a.parent,t)-gh(a.child,t))),s=[];for(let{parent:e,child:l}of i){let[i,o]=[t.get(e.link.parent.entity),t.get(e.link.child.entity)],r=e=>(a.get(e)??gf(e,t)+48)-gf(e,t),n=Math.max(r(e),r(l)),[d,c]=[gh(e,t),gh(l,t)].sort((e,t)=>e-t),p=s.filter(a=>a.end.side===e.side&&gu(t,a.end,e)&&a.top<=c&&d<=a.bottom);if("left"===e.side){let r=Math.min(i.x-gf(e,t)-n,...p.map(e=>e.tip-32));a.set(e,i.x-r),a.set(l,o.x-r),s.push({end:e,top:d,bottom:c,tip:r})}else{let r=Math.max(i.x+i.width+gf(e,t)+n,...p.map(e=>e.tip+32));a.set(e,r-i.x-i.width),a.set(l,r-o.x-o.width),s.push({end:e,top:d,bottom:c,tip:r})}}}(s,i.boxes,l);let o=new Map(s.map(e=>{var a,i;let o=t.get(e.link[e.end].entity),r="top"===e.side?("left"===(a=s,i=e.link,a.find(e=>e.link===i&&"parent"===e.end)?.side??"right")?-1:1)*(o.width/2-28):e.y-o.height/2,n=l.get(e);return[`${e.link.relationship.id}:${"parent"===e.end?"source":"target"}`,{side:e.side,offset:r,...void 0===n?{}:{run:n}}]}));return h3({id:e.id,title:e.title,type:"flowchart",nodes:e.entities.map(e=>({id:e.id,label:tz(e),kind:"entity",metadata:{}})),edges:a.map(e=>({id:e.relationship.id,source:e.parent.entity,target:e.child.entity,metadata:{},...e.relationship.label?{label:e.relationship.label}:{}})),layout:{direction:"LR",edgeRouting:"orthogonal"},style:e.style,metadata:{}},{placement:i.boxes,anchors:o,endRun:48})}let gx=[...["layered","hub"].flatMap(e=>[1.6,1.1,.7,.5].map(t=>({start:e,aspect:t,sameColumn:1}))),{aspect:.5,sameColumn:0}];function gb(e){let t=e.elements.filter(e=>"arrow"===e.type),a=Math.max(e.width/e.height,e.height/e.width);return hG(t)+iU(t.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:e.width,height:e.height})).length+(a>2?4*(a-2):0)+t.reduce((e,t)=>e+function(e){let[t,a]=[e.points[0],e.points.at(-1)],i=0;for(let[t,a]of e.points.slice(1).entries())i+=Math.abs(a.x-e.points[t].x)+Math.abs(a.y-e.points[t].y);return Math.max(0,i/(Math.abs(a.x-t.x)+Math.abs(a.y-t.y)+96+200)-1)}(t),0)+function(e){let t=new Map;for(let a of e)for(let[e,i]of[[a.sourceNodeId,a.points[0]],[a.targetNodeId,a.points.at(-1)]]){let a=`${e}\0${Math.round(i.x)}`;t.set(a,[...t.get(a)??[],i.y])}let a=0;for(let e of t.values()){e.sort((e,t)=>e-t);let t=!1;for(let[i,s]of e.slice(1).entries()){let l=s-e[i]<21.99;l&&(a+=t?.25:1),t=l}}return a}(t)+function(e,t){let a=new Map(e.elements.flatMap(e=>"node"===e.type?[[e.nodeId,e]]:[])),i=0;for(let e of t){let[t,s]=[a.get(e.sourceNodeId),a.get(e.targetNodeId)];if(t&&s&&(!(t.x<s.x+s.width)||!(s.x<t.x+t.width)))for(let[t,a,s]of[[e.points[0],e.points[1],e.points.at(-1)],[e.points.at(-1),e.points.at(-2),e.points[0]]])(a.x-t.x)*(s.x-t.x)<0&&(i+=1)}return i}(e,t)+gk*function(e,t){let a=e.elements.flatMap(e=>"node"===e.type?[e]:[]),i=new Map(a.map(e=>[e.nodeId,e])),s=0;for(let e of t){let[t,l]=[i.get(e.sourceNodeId),i.get(e.targetNodeId)];if(!t||!l||t===l||!(t.x<l.x+l.width&&l.x<t.x+t.width))continue;let[o,r]=[Math.min(t.y+t.height,l.y+l.height),Math.max(t.y,l.y)];s+=a.filter(e=>e!==t&&e!==l&&e.y>=o&&e.y+e.height<=r&&e.x<Math.max(t.x+t.width,l.x+l.width)&&Math.min(t.x,l.x)<e.x+e.width).length}return s}(e,t)}let gk=.25;function gM(e,t,a,i,s,l=32){let o=e.points,[r,n]="start"===t?[o[0],o[1]]:[o.at(-1),o.at(-2)],d=n?Math.hypot(n.x-r.x,n.y-r.y):1,[c,p]=n?[(n.x-r.x)/d,(n.y-r.y)/d]:[1,0],h={x:r.x+c*l,y:r.y+p*l};return{type:"node",id:`node:${a}:optional:${i}`,nodeId:`${a}:optional:${i}`,kind:"optional",rendererRole:"er-optional",shape:"circle",x:h.x-6,y:h.y-6,width:12,height:12,label:"Optional end",fillColor:s.style.backgroundColor,fillStyle:"solid",strokeColor:s.style.accentColor,groupIds:[`table:${a}`]}}function gC(e,t,a,i,s){let l=0;for(let{parent:a,child:i}of e.generalizations){let e=t[i]-t[a];if(e<1)return 1/0;l+=2.5*(e-1)}let o=e.boxes.map(()=>0);for(let{a,b:r,whole:n}of e.others){let e=Math.abs(t[a]-t[r]);0===e?(o[a]+=1,o[r]+=1):l+=i+2.5*(e-1),n&&t[a]>t[r]&&(l+=s)}for(let e of o)l+=1.5*Math.max(0,e-2);let r=e.boxes.map((e,t)=>t),n=e=>r[e]===e?e:r[e]=n(r[e]);for(let{a,b:i}of e.others){if(t[a]!==t[i])continue;let[e,s]=[n(a),n(i)];e===s?l+=1.5:r[e]=s}let d=new Map,c=new Map;for(let[a,i]of e.boxes.entries()){let e=t[a];d.set(e,(d.get(e)??-64)+i.width+64),c.set(e,Math.max(c.get(e)??0,i.height))}for(let e of d.values()){let t=Math.max(0,e-a.width)/a.column;l+=1.5*t*t}let p=Math.max(0,[...c.values()].reduce((e,t)=>e+t,0)+130*Math.max(0,c.size-1)-1.2*a.height)/a.unit;return l+1.5*p*p}function gz(e,t,a,i){let s=[a,i].filter(t=>e.corridor[t]).length;return 2===s?28:1===s?Math.max(30,t.get(a<i?`${a}:${i}`:`${i}:${a}`)??0):Math.max(64,t.get(a<i?`${a}:${i}`:`${i}:${a}`)??0)}function g_(e,t,a){let i=[];for(let[s,l]of a.entries()){if(0===s){i.push(0);continue}let o=a[s-1],r=i[s-1]+e.width[o]+gz(e,t,o,l);for(let[o,n]of a.slice(0,s-1).entries()){let a=t.get(n<l?`${n}:${l}`:`${l}:${n}`);void 0!==a&&(r=Math.max(r,i[o]+e.width[n]+a))}i.push(r)}return i}function gL(e,t,a){let i=e.row.map(()=>0);for(let s of a){let a=g_(e,t,s),l=s.length>0?a.at(-1)+e.width[s.at(-1)]:0;for(let[t,o]of s.entries())i[o]=a[t]+e.width[o]/2-l/2}return i}function gB(e,t,a){let i=new Map;for(let{upper:t,lower:s}of e.segments){let l=i.get(e.row[t])??[];l.push({upper:a[t],lower:a[s]}),i.set(e.row[t],l)}let s=0;for(let e of i.values())for(let[t,a]of e.entries())for(let i of e.slice(t+1))(a.upper-i.upper)*(a.lower-i.lower)<0&&(s+=1);let l=new Map;for(let e of t)for(let[t,a]of e.entries())l.set(a,t);let o=e.flats.map(({a:t,b:a})=>{let[i,s]=[l.get(t),l.get(a)].sort((e,t)=>e-t);return{row:e.row[t],low:i,high:s}});for(let a of o){let i=t[a.row];for(let t=a.low+1;t<a.high;t+=1)e.corridor[i[t]]||(s+=1)}for(let[e,t]of o.entries())for(let a of o.slice(e+1))t.row===a.row&&(t.low<a.low&&a.low<t.high&&t.high<a.high||a.low<t.low&&t.low<a.high&&a.high<t.high)&&(s+=1);return s}function gS(e,t){let a=[];for(let[i,s]of e.entries()){let e=t[i];for(a.push({count:1,weight:e,sum:s*e});a.length>1;){let e=a.at(-1),t=a.at(-2);if(t.sum/t.weight<=e.sum/e.weight)break;a.pop(),t.count+=e.count,t.weight+=e.weight,t.sum+=e.sum}}return a.flatMap(e=>Array(e.count).fill(e.sum/e.weight))}function gA(e,t){return e.find(e=>e.link===t.link&&e!==t)}let gP=e=>"top"===e||"bottom"===e;function gV(e,t){let a=(e,t)=>e>t.min+.5&&e<t.max-.5,i=(e,t)=>t.some(t=>.5>Math.abs(e-t)),s=0;for(let i of t.upper)a(i,e)&&(s+=1);for(let i of e.lower)a(i,t)&&(s+=1);for(let a of e.lower)i(a,t.upper)&&(s+=1e3);return s}let gH={inheritance:{stroke:"solid",from:null,to:"triangle_outline"},realization:{stroke:"dashed",from:null,to:"triangle_outline"},composition:{stroke:"solid",from:"diamond",to:null},aggregation:{stroke:"solid",from:"diamond_outline",to:null},association:{stroke:"solid",from:null,to:null},dependency:{stroke:"dashed",from:null,to:"arrow"}},gq=e=>e.length>0?12+22*e.length:14;function gF(e,t){return[e["from"===t?"fromMultiplicity":"toMultiplicity"],e["from"===t?"fromRole":"toRole"]].flatMap(e=>e?[e.trim()]:[])}let gI=e=>Math.ceil(aE(e,13))+2,gE="label-room:",gO=[{wholeBelow:1.5},{},{aspect:1.1},{between:1}],gU={aspect:1.1,hierarchies:!0};function gX(e,t,a){return e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a}let gT=(e,t,a)=>({x:e.x+t,y:e.y+a}),g$=(e,t,a)=>({...e,x:e.x+t,y:e.y+a}),gY=(e,t,a)=>({x0:e.x0+t,x1:e.x1+t,y0:e.y0+a,y1:e.y1+a}),gG=e=>({x0:e.x,x1:e.x+e.width,y0:e.y,y1:e.y+e.height});function gR(e){let t=e.filter((t,a)=>0===a||Math.abs(t.x-e[a-1].x)>.01||Math.abs(t.y-e[a-1].y)>.01);return t.filter((e,a)=>{if(0===a||a===t.length-1)return!0;let i=t[a-1],s=t[a+1],l=.01>Math.abs(i.x-e.x)&&.01>Math.abs(e.x-s.x),o=.01>Math.abs(i.y-e.y)&&.01>Math.abs(e.y-s.y);return!l&&!o})}function gD(e){return e.slice(1).map((t,a)=>{let i=e[a];return{x0:Math.min(i.x,t.x)-1,x1:Math.max(i.x,t.x)+1,y0:Math.min(i.y,t.y)-1,y1:Math.max(i.y,t.y)+1}})}function gZ(){return{boxes:[],cards:new Map,links:[],regions:[],rows:new Map,attach:0,tails:[],top:0}}function gj(e,t,a){e.cards.set(t,a),e.boxes.push(gG(a))}function gN(e,t,a,i){let s=gR(i);e.links.push({manager:t,report:a,points:s}),e.boxes.push(...gD(s))}function gW(e,t,a,i){for(let[s,l]of t.cards)e.cards.set(s,g$(l,a,i));for(let[s,l]of(e.boxes.push(...t.boxes.map(e=>gY(e,a,i))),e.links.push(...t.links.map(e=>({...e,points:e.points.map(e=>gT(e,a,i))}))),e.regions.push(...t.regions.map(e=>({...e,frame:g$(e.frame,a,i)}))),t.rows))e.rows.set(s,l)}function gJ(e){return{x0:Math.min(...e.map(e=>e.x0)),x1:Math.max(...e.map(e=>e.x1)),y0:Math.min(...e.map(e=>e.y0)),y1:Math.max(...e.map(e=>e.y1))}}let gK=e=>0===e.reports.length&&0===e.assistants.length,gQ=e=>0===e.assistants.length&&e.reports.length>0&&e.reports.every(gK),g1=e=>e.reports.length>=2&&e.reports.some(gQ)&&e.reports.every(e=>gK(e)||gQ(e))&&e.reports.every(e=>void 0===e.region);function g0(e,t,a=5){let i=gZ(),s=void 0===t&&e.length>=a,l=0;e.forEach((a,o)=>{let r=t??(s&&o%2==0?-1:1),n=1===r?18:-18-a.width;gj(i,a.id,{x:n,y:l,width:a.width,height:a.height});let d=l+a.height/2;i.tails.push({report:a.id,points:[{x:0,y:d},{x:1===r?n:n+a.width,y:d}]}),s&&1!==r&&o!==e.length-1||(l+=a.height+14)});let o=Math.max(...i.tails.map(e=>e.points[0].y));return i.boxes.push({x0:-1,x1:1,y0:-28,y1:o}),i}function g2(e,t,a,i,s,l,o){for(let r of s)gN(e,t,r.report,[a,...i,...r.points.map(e=>gT(e,l,o))])}function g3(e,t,a){let i=0;for(let s=t;s<a;s+=1)i+=e[s];return i+24*Math.max(0,a-t-1)}function g5(e,t,a){let i={split:t,half:g3(e,t,a),imbalance:g3(e,t,a)};for(let s=t+1;s<a;s+=1){let l=g3(e,t,s),o=g3(e,s,a),r=Math.max(l,o),n=Math.abs(l-o);(r<i.half-1e-9||r<i.half+1e-9&&n<i.imbalance-1e-9)&&(i={split:s,half:r,imbalance:n})}return i}function g4(e,t=[]){let a=[];for(let i of e){let e=ik(t,i.block.boxes,24,8),s=Number.isFinite(e)?e:0===a.length?0:-1/0,l=Number.isFinite(s)?s:Math.max(...t.map(e=>e.x1))+24-gJ(i.block.boxes).x0;a.push(l),t.push(...i.block.boxes.map(e=>gY(e,l,0)))}return a}function g6(e){let t=gJ(e.boxes);return t.x1-t.x0}function g7(e,t){let a=e.map(e=>(function e(t,a,i,s){let l=gZ(),{width:o,height:r}=t;gj(l,t.id,{x:-o/2,y:0,width:o,height:r}),l.tails.push({report:t.id,points:[{x:0,y:0}]});let n={x:0,y:r},d=t.reports.length>0&&t.reports.every(gK)&&(void 0!==s||t.reports.length>=a.stackMin&&t.reports.length<=20),c=d&&(void 0!==s||t.reports.length<a.twoColumns),p=r,h=g1(t)?a.outline.get(t.id):void 0,g=c||1===h||2===h&&t.reports.length<3;if(t.assistants.forEach((e,a)=>{let i=g||a%2==0?1:-1,s=r+16+(g?a:Math.floor(a/2))*(e.height+14),o=1===i?22:-22-e.width;gj(l,e.id,{x:o,y:s,width:e.width,height:e.height});let d=s+e.height/2;gN(l,t.id,e.id,[n,{x:0,y:d},{x:1===i?o:o+e.width,y:d}]),p=Math.max(p,s+e.height)}),0===t.reports.length)return l;let u=i||void 0!==t.region;if(d){let e=s??1,i=g0(t.reports,c?e:void 0,a.twoColumns),n=c?e*(-o/2+20):0,d=p+18;return gW(l,{...i,links:[],regions:[],rows:new Map,tails:[]},n,d),g2(l,t.id,{x:n,y:r},[],i.tails,n,d),l}if(void 0!==h){let i=2===h&&t.reports.length>=3,s=i?0:-o/2+20,n=new Map([[1,p+18],[-1,p+18]]);return t.reports.forEach((o,d)=>{let c=i&&d%2==0?-1:1,p=n.get(c),h=e(o,a,u,c),g=s+c*(18+o.width/2);gW(l,h,g,p);let f=p+o.height/2;gN(l,t.id,o.id,[{x:s,y:r},{x:s,y:f},{x:g-c*o.width/2,y:f}]),n.set(c,p+gJ(h.boxes).y1+14)}),l}let f=t.reports.filter(gK),m=f.length>=a.stackMin,v=Math.ceil(f.length/20),y=[];for(let i of t.reports){if(m&&gK(i)){if(i===f[0])for(let e=0;e<v;e+=1){let t=g0(f.slice(Math.round(e*f.length/v),Math.round((e+1)*f.length/v)),void 0,a.twoColumns);y.push({block:t,width:g6(t)})}continue}let t=e(i,a,u),s=u?t:function(e,t){if(!t.region)return e;let a=gJ(e.boxes),i={x0:Math.min(a.x0-20,e.attach-10-t.region.nameWidth-8),x1:a.x1+20,y0:a.y0-20,y1:a.y1+20},s=i.y0-21-4;return{...e,boxes:[{...i,x0:i.x0-10,x1:i.x1+10,y0:s}],regions:[...e.regions,{root:t.id,label:t.region.label,frame:{x:i.x0,y:i.y0,width:i.x1-i.x0,height:i.y1-i.y0},members:[...e.cards.keys()]}],top:s}}(t,i);y.push({block:s,width:g6(s),root:i.id})}let w=Math.max(1,Math.min(a.rows.get(t.id)??1,y.length)),x=function(e,t,a){let i,s=e.length,l=(e,t)=>!t||e.half<t.half-1e-9||e.half<t.half+1e-9&&e.imbalance<t.imbalance-1e-9,o=Array.from({length:a+1},()=>Array.from({length:s+1},()=>void 0));o[0][0]={half:0,imbalance:0,cut:0};for(let e=1;e<a;e+=1)for(let i=e;i<=s-(a-e);i+=1)for(let a=e-1;a<i;a+=1){let s=o[e-1][a];if(!s)continue;let r=g5(t,a,i),n={half:Math.max(s.half,r.half),imbalance:s.imbalance+r.imbalance,cut:a};l(n,o[e][i])&&(o[e][i]=n)}for(let e=a-1;e<s;e+=1){let r=o[a-1][e];if(!r)continue;let n={half:Math.max(r.half,g3(t,e,s)/2),imbalance:r.imbalance,cut:e};l(n,i)&&(i=n)}let r=[e.slice(i.cut)],n=i.cut;for(let t=a-1;t>=1;t-=1){let a=o[t][n].cut;r.unshift(e.slice(a,n)),n=a}return r}(y,y.map(e=>e.width),w),b=p,k=0;x.forEach((e,a)=>{let i;if(a===x.length-1){i=g4(e);let t=e.map((e,t)=>i[t]+e.block.attach),a=(Math.min(...t)+Math.max(...t))/2;i=i.map(e=>e-a)}else{let{split:t}=g5(e.map(e=>e.width),0,e.length),a={x0:-1,x1:1,y0:-1e6,y1:1e6};i=[...function(e,t){let a=Array.from({length:e.length},()=>0);for(let i=e.length-1;i>=0;i-=1){let s=e[i],l=function(e,t,a=0){let i=1/0;for(let s of t)for(let t of e)s.y0<t.y1+a&&t.y0<s.y1+a&&(i=Math.min(i,t.x0-24-s.x1));return i}(t,s.block.boxes,8),o=Number.isFinite(l)?l:Math.min(...t.map(e=>e.x0))-24-gJ(s.block.boxes).x1;a[i]=o,t.push(...s.block.boxes.map(e=>gY(e,o,0)))}return a}(e.slice(0,t),[a]),...g4(e.slice(t),[a])]}let s=Math.max(0,...e.map(e=>-e.block.top)),o=b+28,r=b+56+s,d=[];e.forEach((e,a)=>{let s=i[a];gW(l,e.block,s,r),g2(l,t.id,n,[{x:0,y:o},{x:s+e.block.attach,y:o}],e.block.tails,s,r),d.push(...e.block.boxes.map(e=>gY(e,s,r)))});let c=gJ(d);k=Math.max(k,c.x1-c.x0),b=c.y1});let M=y.reduce((e,t)=>t.width>e.width?t:e);return l.rows.set(t.id,{width:k,widestItem:M.width,widest:M.root,items:y.length,rows:x.length}),l})(e,t,!1)),i=gZ(),s=[];for(let e of a){let t=ik(s,e.boxes,64,8),a=Number.isFinite(t)?t:0;gW(i,e,a,0),s.push(...e.boxes.map(e=>gY(e,a,0)))}let l=gJ(g8(i)),o=gZ();return gW(o,i,-l.x0,-l.y0),o}function g8(e){return[...[...e.cards.values()].map(gG),...e.links.flatMap(e=>gD(e.points)),...e.regions.map(e=>({...gG(e.frame),y0:e.frame.y-21-4}))]}function g9(e){let t,a,i;return Math.max(1,Math.max((i=((a=gJ(g8(e))).x1-a.x0+40)/(a.y1-a.y0+40))/2.4,.45/i))*Math.max(1,((t=gJ(g8(e))).x1-t.x0+80)*(t.y1-t.y0+80+64)/56e5)}let ue="#6250d6",ut=[14,22,30],ua=[8,18,26,36];function ui(e,t,a){let i=(e,t)=>Number.parseInt(e.slice(t,t+2),16);return`#${[1,3,5].map(s=>Math.round(i(t,s)+(i(e,s)-i(t,s))*a).toString(16).padStart(2,"0")).join("")}`}function us(e,t,a){let i=e=>e.split("\n").length,s=aT(e,t,a);if(1===i(s))return s;let l=a,o=t;for(;o-l>1;){let t=Math.floor((l+o)/2);i(aT(e,t,a))<=i(s)?o=t:l=t}return aT(e,o,a)}let ul=e=>void 0===e?0:e.split("\n").length,uo=(e,t)=>Math.ceil(ul(e)*t*1.25),ur=(e,t=0)=>({left:e.x-t,top:e.y-t,right:e.x+e.width+t,bottom:e.y+e.height+t});function un(e,t,a){let{x:i,y:s,width:l,height:o}=e;return[{x:i+l,y:s+o/2,outward:0,cost:0},{x:i,y:s+o/2,outward:2,cost:0},{x:i+l,y:s+o/4,outward:0,cost:4},{x:i,y:s+o/4,outward:2,cost:4},{x:i+3*l/4,y:s+o,outward:1,cost:6},{x:i+l/4,y:s+o,outward:1,cost:6},{x:i+3*l/4,y:s,outward:3,cost:6},{x:i+l/4,y:s,outward:3,cost:6}].filter(e=>!t.some(t=>Math.abs(t.x-e.x)+Math.abs(t.y-e.y)<14)).map(e=>({x:e.x,y:e.y,direction:a?(e.outward+2)%4:e.outward,cost:e.cost}))}function ud(e,t){let a=0;for(let i of dX(e)){let e=.01>Math.abs(i.to.y-i.from.y);for(let s of t){if(e===.01>Math.abs(s.to.y-s.from.y))continue;let[t,l]=e?[i,s]:[s,i],o=l.from.x,r=t.from.y;o>Math.min(t.from.x,t.to.x)+.5&&o<Math.max(t.from.x,t.to.x)-.5&&r>Math.min(l.from.y,l.to.y)+.5&&r<Math.max(l.from.y,l.to.y)-.5&&(a+=1)}}return a}function uc(e,t){let a=dX(e);return 24*Math.max(0,a.length-1)+a.reduce((e,t)=>e+Math.abs(t.to.x-t.from.x)+Math.abs(t.to.y-t.from.y),0)+500*ud(e,t)}let up=(e,t,a)=>e.left<t.right+a&&t.left<e.right+a&&e.top<t.bottom+a&&t.top<e.bottom+a;function uh(e,t,a,i){return up({left:Math.min(e.x,t.x),right:Math.max(e.x,t.x),top:Math.min(e.y,t.y),bottom:Math.max(e.y,t.y)},a,i)}function ug(e,t,a,i,s,l){if(0===e.dottedLines.length)return{arrows:[],labels:[],straight:0};let o=new Map;for(let e of s){let t=e.points[0],a=e.points.at(-1);o.set(e.sourceNodeId,[...o.get(e.sourceNodeId)??[],t]),o.set(e.targetNodeId,[...o.get(e.targetNodeId)??[],a])}let r=s.flatMap(e=>dX(e.points)),n=[...t.values()].flatMap(e=>[e.y,e.y+e.height]),d=e=>[...t.values()].flatMap(t=>e.flatMap(e=>[t.y-e,t.y+t.height+e])),c=[...t.values()],p=c.flatMap(e=>{let t=c.filter(t=>t.y>=e.y+e.height&&t.x<e.x+e.width&&e.x<t.x+t.width).map(e=>e.y);return 0===t.length?[]:[(e.y+e.height+Math.min(...t))/2]}),h=a.map(e=>iN(e)),g=Math.min(...n,...h.map(e=>e.y)),u=Math.max(...n,...a.map(e=>e.y+e.height)),f=[...h.map(e=>e.y-10),...a.flatMap(e=>[e.y+e.height+14,e.y+e.height+24]),g-24,u+24],m=[...d(ut),...p,...f],v=[...d([...ut,...ua]),...p,...f],y=g-60-10*e.dottedLines.length,w=u+60,x={left:Math.min(...c.map(e=>e.x),...a.map(e=>e.x))-60,right:Math.max(...c.map(e=>e.x+e.width),...a.map(e=>e.x+e.width))+60},b={remaining:Math.min(4e5,48e3*e.dottedLines.length)},k=[],M=[],C=[],z=0,_=0,L=a.flatMap(e=>dX([{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x+e.width,y:e.y+e.height},{x:e.x,y:e.y+e.height},{x:e.x,y:e.y}])),B=(e,t)=>{let a,i=dX(t).toSorted((e,t)=>Math.abs(t.to.x-t.from.x)+Math.abs(t.to.y-t.from.y)-(Math.abs(e.to.x-e.from.x)+Math.abs(e.to.y-e.from.y))),s=[...r,...dX(t)],l=aE(e,13),o=[1,2,3].map(t=>{let a=1===t?e:us(e,Math.ceil(l/t)+13,13),i=aU(a,13,Math.ceil(aE(a,13)));return{text:a,width:i,height:Math.ceil(13*ul(a)*1.35)}}).flatMap(({text:e,width:t,height:a},l)=>i.flatMap(i=>{let o=.01>Math.abs(i.to.y-i.from.y);return[.5,.3,.7,.15,.85].flatMap(r=>{let n={x:i.from.x+(i.to.x-i.from.x)*r,y:i.from.y+(i.to.y-i.from.y)*r};return[6,14,30,50,80].flatMap(i=>(o?[-1,1].map(e=>({left:n.x-t/2,right:n.x+t/2,top:e<0?n.y-i-a:n.y+i,bottom:e<0?n.y-i:n.y+i+a})):[1,-1].map(e=>({left:e>0?n.x+i:n.x-i-t,right:e>0?n.x+i+t:n.x-i,top:n.y-a/2,bottom:n.y+a/2}))).map(a=>({text:e,width:t,rect:a,offset:i,form:l,score:100*c.filter(e=>up(a,ur(e),4)).length+100*h.filter(e=>up(a,ur(e),2)).length+10*L.filter(e=>uh(e.from,e.to,a,3)).length+10*C.filter(e=>up(a,e,4)).length+s.filter(e=>uh(e.from,e.to,a,3)).length})))})})).reduce((e,t)=>t.score<e.score||t.score===e.score&&(t.offset<e.offset||t.offset===e.offset&&t.form<e.form)?t:e);return{text:o.text,width:o.width,rect:o.rect,covers:(a=o.rect,c.some(e=>up(a,ur(e),0))||h.some(e=>up(a,ur(e),0)))}},S=(e,t,a)=>{let i=Math.min(g,...C.map(e=>e.top),...[...r,...dX(a)].flatMap(e=>[e.from.y,e.to.y]))-8,s=e.rect.bottom-e.rect.top;return{...e,rect:{left:t-e.width/2,right:t+e.width/2,top:i-s,bottom:i},covers:!1}};for(let[s,n]of e.dottedLines.entries()){let d=t.get(n.report),c=t.get(n.manager),u=new Set([i.get(n.report),i.get(n.manager)]),L=i.get(n.report)===i.get(n.manager)?i.get(n.report):void 0,A=(e,i)=>[...[...t].map(([t,a])=>({box:ur(a),clearance:e,...t===n.report||t===n.manager?{own:!0}:{}})),...h.map(e=>({box:ur(e),clearance:2})),...a.filter(e=>!u.has(e.id)).map(t=>({box:ur(t),clearance:Math.min(e,8)})),...a.filter(e=>i||L===e.id).flatMap(e=>[{...e,height:0},{...e,y:e.y+e.height,height:0},{...e,width:0},{...e,x:e.x+e.width,width:0}].map(t=>({box:ur(t),clearance:8,...L===e.id?{}:{parallel:!0}})))],P=un(d,o.get(n.report)??[],!1),V=un(c,o.get(n.manager)??[],!0),H=[d,c],q=[...f,...m.filter(e=>H.some(t=>e>t.y-120&&e<t.y+t.height+120))],F=(e,t,a={sources:P,targets:V},i=!1)=>t.flatMap(t=>{let s={remaining:Math.min(b.remaining,12e3)},l=dO({...a,obstacles:e,...t,routed:r,top:y,bottom:w,reach:x,...i?{wide:!0,crossingCost:500,backCrossingFactor:1}:{},budget:s});return b.remaining-=Math.min(b.remaining,12e3)-s.remaining,l?[gR(l)]:[]}).reduce((e,t)=>!e||uc(t,r)<uc(e,r)?t:e,void 0),I=F(A(6,!0),[{lanes:[...p,...f],denseLanes:m},{lanes:m,denseLanes:v}])??F(A(6,!0),[{lanes:q,denseLanes:q}])??F(A(3,!1),[{lanes:v,denseLanes:v}]),E=e.dottedLines.length-1-s,O=l&&I&&ud(I,r)>0&&b.remaining>=12e3+48e3*E?F(A(6,!0),[{lanes:[...p,...f],denseLanes:m}],void 0,!0):void 0,U=O&&I&&uc(O,r)<uc(I,r)?O:I,X=()=>{let e=Math.min(g-24-10*z,...r.flatMap(e=>[e.from.y-10,e.to.y-10])),t=(t,a)=>[0,-1,1,-2,2,-4,4].map(i=>({x:t.x+t.width/2+48*i,y:e,direction:a,cost:8*Math.abs(i)})),a=[{lanes:[...q,e],denseLanes:[...q,e]}],i=F(A(6,!0),a,{sources:P,targets:t(d,3)}),s=i&&F(A(6,!0),a,{sources:t(c,1),targets:V});return i&&s?gR([...i,...s]):void 0},T=U?void 0:X();T&&(z+=1),U||T||(_+=1);let $=gR(U??T??function(e,t){let a=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),[i,s]=[a(e),a(t)],l=(e,t,a)=>{let i=t.x-a.x,s=t.y-a.y,l=Math.min(0===i?1/0:e.width/2/Math.abs(i),0===s?1/0:e.height/2/Math.abs(s));return{x:a.x+i*l,y:a.y+s*l}};return[l(e,s,i),l(t,i,s)]}(d,c)).map(({x:e,y:t})=>({x:e,y:t})),Y=n.label?.trim(),G=void 0===Y?void 0:B(Y,$);if(void 0!==Y&&G?.covers&&!T&&b.remaining>=12e3+48e3*E){let e=X(),t=e&&B(Y,e);e&&t&&!t.covers&&(z+=1,$=e.map(({x:e,y:t})=>({x:e,y:t})),G=t)}G?.covers&&(G=S(G,$[0].x,$)),r.push(...dX($)),o.set(n.report,[...o.get(n.report)??[],$[0]]),o.set(n.manager,[...o.get(n.manager)??[],$.at(-1)]),k.push({type:"arrow",id:`edge:dotted:${n.id}`,edgeId:`dotted:${n.id}`,sourceNodeId:n.report,targetNodeId:n.manager,points:$,startArrowhead:null,endArrowhead:"arrow",strokeColor:ue,strokeStyle:"dashed",strokeWidth:2,roughness:0}),void 0!==G&&(C.push(G.rect),M.push({type:"text",id:`text:dotted:${n.id}`,x:(G.rect.left+G.rect.right)/2,y:(G.rect.top+G.rect.bottom)/2,text:G.text,fontSize:13,lineHeight:1.25,maxWidth:G.width,textColor:ue}))}return{arrows:k,labels:M,straight:_}}var uu=a(664);a(3614);var uf=a(1594),um=a(6297),uv=a(7258),uy=a(2275),uw=a(2860),ux=a(1554),ub=a(4233);let uk=l.Or("effect/Metric/CurrentMetricAttributes",{defaultValue:()=>({})}),uM=l.Or("effect/Metric/MetricRegistry",{defaultValue:()=>new Map}),uC="~effect/Metric";class uz{[uC]=uC;#e;#t="";id;description;attributes;constructor(e,t,a){this.id=e,this.description=t,this.attributes=a}valueUnsafe(e){return this.hook(e).get(e)}modifyUnsafe(e,t){return this.hook(t).modify(e,t)}updateUnsafe(e,t){return this.hook(t).update(e,t)}hook(e){var t;let a,i=l.Jt(e,uk);i!==this.#e&&(this.#e=i,this.#t=(t=this,a=Object.entries(uH(this.attributes,i)).sort((e,t)=>e[0]<t[0]?-1:+(e[0]>t[0])),JSON.stringify([t.type,t.id,t.description,a])));let s=l.Jt(e,uM),o=s.get(this.#t);return ub.b0(o)&&(o={id:this.id,type:this.type,description:this.description,attributes:Object.keys(i).length>0?uH(this.attributes,i):this.attributes,hooks:this.createHooks()},s.set(this.#t,o)),o.hooks}pipe(){return(0,ux.tT)(this,arguments)}}let u_=BigInt(0);class uL extends uz{type="Counter";#a;#i;constructor(e,t){super(e,t?.description,uq(t?.attributes)),this.#a=t?.bigint??!1,this.#i=t?.incremental??!1}createHooks(){let e=this.#a?u_:0,t=this.#i?this.#a?e=>e>=u_:e=>e>=0:e=>!0;return uV(()=>({count:e,incremental:this.#i}),a=>{t(a)&&(e+=a)})}}class uB extends uz{type;metric;valueUnsafe;updateUnsafe;modifyUnsafe;constructor(e,t,a,i){super(e.id,e.description,e.attributes),this.metric=e,this.valueUnsafe=t,this.updateUnsafe=a,this.modifyUnsafe=i,this.type=e.type}createHooks(){return this.metric.createHooks()}}let uS=(e,t)=>new uL(e,t),uA=(0,uf.XY)(2,(e,t)=>um.sxi(a=>um.OH5(()=>e.updateUnsafe(t,a)))),uP=(0,uf.XY)(2,(e,t)=>{var a;let i,s,o=(a=t,s={},e=>{let t=l.Jt(e,uk);return t!==i&&(i=t,s=uH(t,a)),l.WQ(e,uk,s)});return new uB(e,t=>e.valueUnsafe(o(t)),(t,a)=>e.updateUnsafe(t,o(a)),(t,a)=>e.modifyUnsafe(t,o(a)))});function uV(e,t,a){return{get:e,update:t,modify:a??t}}function uH(e,t){return{...uq(e),...uq(t)}}function uq(e){return ub.EA(e)&&Array.isArray(e)?e.reduce((e,[t,a])=>(uy.x(e,t,a),e),{}):e}uv.F,uv.F,uf.MN;var uF=a(1587),uI=(a(6526),a(719),a(2707));let uE=[["artifactId","sketchi.artifact_id"],["attemptId","sketchi.attempt_id"],["projectId","sketchi.project_id"],["requestId","sketchi.request_id"],["runId","sketchi.run_id"],["scenarioId","sketchi.scenario_id"],["traceId","sketchi.trace_id"]],uO=new Set(["artifact_count","artifact_format","artifact_kind","attempt","cache_mode","duration_ms","error_category","error_tag","export_ms","failure_category","format_count","method","model","open_ms","operation","outcome","provider","queue_ms","request_kind","retry_kind","sink","status","status_code","surface","timeout_kind","timeout_ms"]),uU=([...uE.map(([,e])=>e),...uO],{metric:()=>void 0}),uX=l.Or("@sketchi/observability/TelemetryExporter",{defaultValue:()=>uU}),uT=l.Or("@sketchi/observability/TelemetryCorrelation",{defaultValue:()=>({})});function u$(e){let t=e?.trim();if(t&&!(t.length>128)&&/^[A-Za-z0-9][A-Za-z0-9._:-]*$/.test(t))return t}function uY(e,t){return o.JkU(function*(){let a={...yield*uT,...function(e){let t={};for(let[a]of uE){let i=u$(e[a]);i&&(t[a]=i)}return t}(t)},i=function(e){let t={};for(let[a,i]of uE){let s=e[a];s&&(t[i]=s)}return t}(a);return yield*e.pipe(o.PfK(uT,a),o.Muk(i),o.swY(i))})}l.Or("@sketchi/observability/TelemetryResource",{defaultValue:()=>({serviceName:"sketchi"})});let uG=o.fn(function*(e,t,a={}){let i=function(e){let t={artifact_kind:e.artifactKind,failure_category:e.failureCategory,operation:e.operation,outcome:e.outcome,provider:e.provider,retry_kind:e.retryKind,sink:e.sink,surface:e.surface,timeout_kind:e.timeoutKind},a={};for(let[e,i]of Object.entries(t)){let t=u$(i);t&&(a[e]=t)}return a}(a);yield*uA(uP(e,i),t);let s=yield*uX,l=uF.getOrUndefined((yield*o._32.pipe(o.uKv)));yield*o.OH5(()=>s.metric({attributes:i,metric:e.id,metricType:e.type,...l?{spanId:l.spanId,traceId:l.traceId}:{},value:t}))});uI.W1;var uR=a(9315),uD=a(8713),uZ=a(4733);let uj=new Set([...JSON.parse('["access","ace","active","addresses","administration","adobe","advanced","affinity","agent","agents","alloy","amazon","amp","analysis","analyzer","and","android","angular","apple","appliance","application","approvals","arc","armor","arrow","artifact","artifacts","asset","assist","assistant","assured","atom","audit","augment","authority","authorization","automatic","automation","autopilot","aware","axiom","azure","babel","balancing","bare","bash","basic","batch","bedrock","big","billing","binary","blitz","bolt","branching","brave","brunch","build","builder","business","c","capture","carbon","catalog","center","certificate","channel","checkpoints","chrome","chromium","cipher","clerk","cloud","code","codex","cohere","collaboration","command","composer","compute","computing","configuration","connect","connection","connectivity","connectors","console","contact","container","containers","context","contour","control","convex","copilot","core","crystal","cursor","custom","cypress","dart","dashboard","data","database","databases","db","debugger","default","deploy","deployed","deployment","design","designer","developer","director","directory","discovery","disk","distributed","document","dolphin","domains","dovetail","drizzle","early","edge","elastic","electron","elixir","ember","enforcement","engine","enterprise","error","expo","external","financial","firefly","firewall","fireworks","flask","fleet","flora","flow","flutter","flux","for","form","foundry","framer","frameworks","free","functions","fusion","game","gateway","generic","go","google","goose","graph","graphite","gulp","health","healthcare","home","hub","hybrid","hyper","hyperbolic","id","identity","ideogram","ids","illustrator","inception","inference","inflection","insights","insomnia","inspection","integration","intelligence","interconnect","inventory","jest","job","jobs","justifications","key","lab","labeling","lambda","language","launcher","layers","learning","legacy","less","linear","liquid","lit","load","local","lockup","logging","logic","logs","loss","lovable","lunacy","machine","machinery","magic","make","managed","management","manager","map","maps","marionette","markdown","marketing","marketplace","media","mesh","metal","migrate","migration","mixed","mobile","model","modeling","module","mongoose","monitoring","monocle","moonshot","motion","my","native","natural","neon","net","network","networking","next","nomad","notepad","notes","notion","nova","object","objective","obsidian","on","opera","operations","optimization","optimized","oracle","packaging","packer","palm","pandas","panel","partner","passport","patch","payload","performance","permissions","perplexity","persistent","phishing","phoenix","pipeline","platform","playwright","plus","poetry","policy","pool","portal","positron","postman","preferences","premium","preparation","presto","prettier","prevention","private","processing","producer","project","protection","protractor","providers","proxy","pulsar","puppeteer","putty","python","quantum","quasar","query","quiver","quotas","r","racket","rails","railway","rancher","react","real","reality","realm","recommendations","reflex","registry","release","render","replicate","reporting","resend","resource","restricted","retail","retention","rider","risk","router","routes","routing","ruby","rules","run","runway","rust","safari","sanity","sass","scanner","scheduler","search","secret","security","segment","selenium","sense","sentry","series","servers","service","services","sharp","shell","showcase","sketch","slack","slate","snowflake","solidity","solution","solutions","spanner","spark","speech","spring","stability","standard","stimulus","storage","storybook","stream","structured","studio","stylus","sublime","subversion","suite","support","swagger","swift","sync","systems","tables","tailwind","tasks","templates","test","text","threads","threat","tier","tiers","time","to","together","tomcat","tools","topology","trace","tracker","traffic","training","transfer","translation","trial","tutorials","twitter","type","types","typescript","unified","unity","unstructured","upgrade","upstage","user","vagrant","value","vapor","vault","vertex","video","view","vim","virtual","vision","visual","vortex","voyage","web","windsurf","wolfram","workbook","workflow","workflows","workload","workloads","workshop","world","yarn","yoga","zed"]'),"antigravity","api","dataflow","datastore","datastream","filestore","genomics","json","memorystore","meta","nitro","observability","onboarding","ontology","profiler","pubsub","pwa","remix","serverless","submodel","turbo"]),uN=/[A-Za-z0-9.+#]+/gu;function uW(e){return[...e.matchAll(uN)].map(([e])=>e.replace(/^\.+|\.+$/gu,"")).filter(Boolean)}function uJ(e){return uW(e).map(e=>e.toLocaleLowerCase())}function uK(e){return/[0-9.+#]/u.test(e)||e.length>=3&&!uj.has(e)}function uQ(e){return e.trim().toLocaleLowerCase().replace(/\s+/gu," ")}function u1(e,t){return e.some(e=>uQ(e).includes(t))}function u0(e,t){let a=uQ(e.slug),i=uQ(e.name),s=uQ(e.collection),l=uQ((0,uZ.y)(e.collection));return a===t?0:i.startsWith(t)?1:u1(e.aliases,t)?2:a.includes(t)||i.includes(t)||u1(e.keywords,t)?3:s.includes(t)||l.includes(t)?4:null}let u2=new Set(["cloud-platforms","cloud-vendors"]);function u3(e){return e.toLocaleLowerCase().replace(/[^a-z0-9+#]/gu,"")}let u5=new WeakMap,u4=new Set(["app","cluster","database","db","icon","logo","server","service"]);function u6(e,t){let a=uJ(t),i=[a,a.filter(e=>!u4.has(e))].map(e=>u3(e.join(""))),s=[e.slug,e.name,...e.aliases];if(s.some(e=>i.includes(u3(e))))return"exact";let l=new Set(a.flatMap((e,t)=>a.slice(t).map((e,i)=>u3(a.slice(t,t+i+1).join("")))));return s.some(e=>""!==u3(e)&&l.has(u3(e)))?"vendor":"weak"}let u7=new Map([["aks",["azure","kubernetes"]],["amazon",["aws"]],["aws",["amazon","amazon web services"]],["eks",["aws","kubernetes"]],["gcp",["google cloud"]],["gke",["google kubernetes engine","google cloud","kubernetes"]],["google cloud",["gcp"]],["google kubernetes engine",["gke","google cloud","kubernetes"]],["k8s",["kubernetes"]]]),u8=new Set([...u7].flatMap(([e,t])=>[e,...t].map(u3)));function u9(e,t={}){let a=uQ(t.query??""),i=t.collection?.trim(),s=Math.max(0,t.limit??1/0),l=e.flatMap(e=>{if(i&&e.collection!==i)return[];let t=function(e,t){if(0===t.length)return 5;let a=u0(e,t);if(null!==a)return a;let i=t.split(/\s+/u);if(1===i.length)return null;let s=0;for(let t of i){let a=u0(e,t);if(null===a)return null;s=Math.max(s,a)}return s}(e,a);return null===t?[]:[{icon:e,rank:t}]}).sort((e,t)=>e.rank-t.rank||e.icon.name.localeCompare(t.icon.name)||e.icon.slug.localeCompare(t.icon.slug));return(l.length>0?l:function(e,t,a){let i=uJ(t),s=function(e){let t=u5.get(e);if(t)return t;let a=new Map;for(let t of e)for(let e of new Set([t.slug,t.name,...t.aliases].map(u3))){if(!e)continue;let i=a.get(e)??[];i.push(t),a.set(e,i)}return u5.set(e,a),a}(e),l=new Map;for(let e=Math.min(4,i.length);e>0;e-=1)for(let t=0;t+e<=i.length;t+=1){let o=i.slice(t,t+e),r=o.some(uK);for(let i of s.get(u3(o.join("")))??[]){let s=u2.has(i.collection);if(l.has(i.slug)||!r&&!s||a&&i.collection!==a)continue;let n=u0(i,o.join(" "))??6;l.set(i.slug,{icon:i,length:e,start:t,termRank:n,vendor:s})}}return[...l.values()].sort((e,t)=>t.length-e.length||Number(e.vendor)-Number(t.vendor)||e.start-t.start||e.termRank-t.termRank||e.icon.name.localeCompare(t.icon.name)||e.icon.slug.localeCompare(t.icon.slug)).map(({icon:e})=>({icon:e,rank:6}))}(e,a,i)).slice(0,s)}let fe=/(?<=[.!?:])\s+|\n+/u;function ft(e){return/^[A-Z]/u.test(e)&&/[a-z]/u.test(e)}function fa(e){return/[a-z][A-Z]/u.test(e.raw)||uK(e.lower)}function fi(e){return!e.initial&&!e.titleCase&&ft(e.raw)}let fs=new WeakMap;class fl extends s.rNF()("CodeModeIconLoadError",{cause:s.kld(),message:s.QfV,slug:s.QfV}){}function fo(e){return{collection:e.collection,name:e.name,slug:e.slug}}function fr(e){let t=e.icons.filter(uD.nC),a=new Map(t.map(e=>[e.slug,e])),i=new Map(t.map(e=>[e.slug,fo(e)]));return{get:e=>i.get(e),isStrayVendorLogo:(e,t)=>{let i,s=a.get(e);return void 0!==s&&(u2.has(s.collection)||[s.slug,s.name,...s.aliases].some(e=>u8.has(u3(e))))&&(i=uJ(t),[t,...i.flatMap((e,t)=>i.slice(t).flatMap((e,a)=>{let s=i.slice(t,t+a+1).join(" ");return u7.get(s)??[]}))]).every(e=>"weak"===u6(s,e))},logoNamedByLabel:e=>{let a=function(e,t){let[a,...i]=function(e,t,a=24){let i=function(e){let t=fs.get(e);if(t)return t;let a=new Map,i=(e,t)=>{let i=uJ(e).join(" ");if(!i)return;let s=a.get(i)??[];s.includes(t)||s.push(t),a.set(i,s)};for(let t of e)for(let e of(i(t.slug.replaceAll("-"," "),t),i(t.name,t),t.aliases))i(e,t);return fs.set(e,a),a}(t),s=e.split(fe).flatMap(e=>{let t=uW(e),a=t.filter(ft).length>=2&&t.every(e=>!/^[a-z]/u.test(e)||e.length<=3);return t.map((e,t)=>({lower:e.toLocaleLowerCase(),raw:e,initial:0===t,titleCase:a}))}),l=[],o=new Map;for(let e=0;e<s.length&&l.length<a;){let t=0;for(let a=Math.min(4,s.length-e);a>0;a-=1){let r=s.slice(e,e+a),n=i.get(r.map(e=>e.lower).join(" "));if(!n)continue;let d=r.some(fa);if(!d&&!r.some(fi))continue;let c=u9(n,{query:r.map(e=>e.lower).join(" ")})[0]?.icon,p=c?o.get(c.slug):void 0;c&&void 0===p?(o.set(c.slug,l.length),l.push({icon:c,distinctive:d})):c&&d&&void 0!==p&&(l[p]={icon:c,distinctive:d}),t=a;break}e+=Math.max(1,t)}return l}(e,t,2);return a?.distinctive&&0===i.length?a.icon:void 0}(e,t);return a?i.get(a.slug):void 0},search:(e,a)=>u9(t,{limit:a,query:e}).map(({icon:t})=>({...fo(t),match:u6(t,e)})),loadSvg:e.loadSvg,slugLookup:e.slugLookup}}function fn(e){return se(e).toLowerCase()}function fd(e){var t;let a;return{code:"unknown_icon",severity:"warning",stage:"input",...e.ref?{ref:e.ref}:{},message:e.message,hint:e.catalog?(a=function(e,t){let a=t.split(/[-_\s]+/u).filter(Boolean),i=new Set,s=[];for(let t of[a.join(" "),...a])if(t){for(let a of e.search(t,3))i.has(a.slug)||(i.add(a.slug),s.push(a));if(s.length>=3)break}return s.slice(0,3)}(t=e.catalog,e.slug)).length>0?`Use an exact slug, for example ${a.map(e=>`"${e.slug}" (${e.name})`).join(", ")}, or look one up with ${t.slugLookup}.`:`Look up an exact slug with ${t.slugLookup}, or omit icon.`:"This Sketchi runtime has no icon catalog; omit icon or retry on a host with logos."}}function fc(e,t,a={noun:"node",path:"nodes"},i={}){let s=[],l=e.map(e=>{if(!e.icon)return e;let i=fn(e.icon.slug),l={kind:"node",id:e.id,path:`${a.path}.icon.slug`},o=u(i)?t?.get(i):void 0;if(o&&!t?.isStrayVendorLogo(i,e.label))return{...e,icon:{slug:i}};s.push(o?{code:"icon_dropped",severity:"warning",stage:"input",ref:l,message:`Icon "${i}" on ${a.noun} "${e.id}" is a vendor logo, but the label "${e.label}" does not name ${o.name}; the ${a.noun} renders without a logo.`,hint:`Put a vendor's logo only on a ${a.noun} whose label names that vendor ("Cloudflare Workers" takes cloudflare); other ${a.noun}s take their product's own logo or none.`}:fd({catalog:t,message:`Icon "${e.icon.slug}" on ${a.noun} "${e.id}" is not a Sketchi node logo; the ${a.noun} renders without a logo.`,ref:l,slug:i}));let{icon:r,...n}=e;return n});if(!i.fillNamedLogos||!t||!l.some(e=>e.icon))return{issues:s,nodes:l};let o=l.map((i,l)=>{if(e[l]?.icon)return i;let o=t.logoNamedByLabel(i.label);return o?(s.push({code:"icon_filled",severity:"info",stage:"input",ref:{kind:"node",id:i.id,path:`${a.path}.icon.slug`},message:`${a.noun[0]?.toUpperCase()}${a.noun.slice(1)} "${i.id}" draws the "${o.slug}" logo because its label "${i.label}" names ${o.name}.`,hint:"No action needed."}),{...i,icon:{slug:o.slug}}):i});return{issues:s,nodes:o}}let fp=o.fn("codeMode.icons.embedScene")(function*(e,t){let a=e.elements.map(e=>"node"===e.type&&e.icon?{...e,icon:{...e.icon,slug:fn(e.icon.slug)}}:e),i=new Map([...new Set(a.flatMap(e=>"node"===e.type&&e.icon?[e.icon.slug]:[]))].flatMap(e=>{let a=u(e)?t?.get(e):void 0;return a?[[e,a]]:[]})),s=new Map((yield*o.jJl([...i.values()],e=>t?t.loadSvg(e).pipe(o.TjK(e=>(0,uD.Bn)(e)),o.TjK(t=>[e.slug,{name:e.name,svg:t}]),o.Tyx(t=>o.FFw("Code Mode icon asset unavailable",{slug:e.slug,cause:t}).pipe(o.as(void 0)))):o.PyW(void 0),{concurrency:8})).flatMap(e=>e?[e]:[])),l=function(e,t){let a=new Map,i=[],s=ie(e),l=it(e,s),o=0,r=e.elements.map((e,r)=>{if("node"!==e.type||!e.icon)return e;let n=e.icon,d=t=>(i.push({elementId:e.id,index:r,reason:t,slug:n.slug}),function(e){let{icon:t,...a}=e;return a}(e)),c=a.get(n.slug),p=c??(u(n.slug)?t(n.slug):void 0);if("string"!=typeof p?.svg||a6(p.svg)>aY.maxAssetBytes)return d("unavailable");if(e.rendererRole)return d("lifeline");if("polygon"!==e.shape&&s(e)){let t=l.get(e.id)?.element;if(ia(e,t,n)&&!ia(e,t,void 0))return d("no_room")}if(!c){let e=a6(p.svg);if(o+e>aY.maxTotalAssetBytes)return d("budget");o+=e,a.set(n.slug,{name:p.name,svg:p.svg})}return e}),{icons:n,...d}=e;return{dropped:i,scene:a.size>0?{...d,elements:r,icons:Object.fromEntries(a)}:{...d,elements:r}}}({...e,elements:a},e=>s.get(e));return{issues:l.dropped.map(e=>(function(e){let{dropped:t}=e,a={kind:"element",id:t.elementId,path:`elements[${t.index}].icon${"unavailable"===t.reason?".slug":""}`},i=`Icon "${t.slug}" on node "${t.elementId}"`;if("unavailable"===t.reason&&!e.known)return fd({catalog:e.catalog,message:`${i} is not a Sketchi node logo; the node renders without a logo.`,ref:a,slug:t.slug});let s=e.element?.type==="node"?a9(e.element.icon):0,l={budget:{message:`${i} exceeds the per-diagram logo budget; the node renders without a logo.`,hint:"Use fewer distinct logos in one diagram."},lifeline:{message:`Sequence lifeline or activation "${t.elementId}" cannot carry a logo; the logo was dropped.`,hint:"Put logos on nodes or sequence participants, not on lifelines."},no_room:{message:`${i} does not fit above its label; the node renders without a logo.`,hint:`Make node "${t.elementId}" about ${s}px taller or shorten its label to keep the logo.`},unavailable:{message:`${i} could not be loaded; the node renders without a logo.`,hint:"Retry the request; if the logo stays unavailable, omit icon."}}[t.reason];return{code:"icon_dropped",severity:"warning",stage:"input",ref:a,message:l.message,hint:l.hint}})({catalog:t,dropped:e,element:a[e.index],known:i.has(e.slug)})),scene:l.scene}}),fh=/^(node|step|item|box|thing|process|task)\s*\d*$/i,fg=/^(diagram|untitled|flowchart|chart|sketch)$/i;function fu(e){return e.map(e=>({kind:"node",id:e.id}))}function ff(e){if(void 0===e)return;let t=se(e);return t.length>0?t:void 0}let fm={start:"start",begin:"start",entry:"start",process:"process",task:"process",action:"process",step:"process",activity:"process",operation:"process",decision:"decision",condition:"decision",question:"decision",choice:"decision",gateway:"decision",end:"end",stop:"end",finish:"end",exit:"end",final:"end"},fv=new Set(["terminal","terminator","terminus"]),fy=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),fw=["excalidraw","scene"],fx=["scene"],fb=uS("sketchi_codemode_requests",{description:"Code Mode boundary requests by terminal outcome",incremental:!0}),fk=uS("sketchi_codemode_failures",{description:"Code Mode boundary failures by typed status",incremental:!0}),fM=uS("sketchi_codemode_artifacts",{description:"Code Mode artifacts accepted at workflow boundaries",incremental:!0}),fC=new class e extends uz{type="Histogram";#s;constructor(e,t){super(e,t?.description,uq(t?.attributes)),this.#s=t.boundaries}createHooks(){let e=this.#s,t=e.length,a=new Uint32Array(t+1),i=new Float64Array(t),s=0,l=0,o=Number.MAX_VALUE,r=-Number.MAX_VALUE;return uu.Tj(uu.di(e,uw.wN),(e,t)=>{i[t]=e}),uV(()=>({buckets:(()=>{let e=uu.CN(t),s=0;for(let l=0;l<t;l++){let t=i[l];s+=a[l],e[l]=[t,s]}return e})(),count:s,min:o,max:r,sum:l}),e=>{let n=0,d=t;for(;n!==d;){let t=Math.floor(n+(d-n)/2);e<=i[t]?d=t:n=t,d===n+1&&(e<=i[n]?d=n:n=d)}a[n]=a[n]+1,s+=1,l+=e,e<o&&(o=e),e>r&&(r=e)})}}("sketchi_codemode_duration_ms",{description:"Code Mode boundary duration in milliseconds",boundaries:(i=[1,5,10,25,50,100,250,500,1e3,2500,5e3,1e4],uu.BC(uu.pb(new Set(i),e=>e>0),1/0))});class fz extends l.kl()("@sketchi/diagram-agent/CodeModeRuntimeEnvironment"){}function f_(e={}){return n.Py(fz,{createId:e.createId??f9,...e.icons?{icons:e.icons}:{},...e.renderer?{renderer:e.renderer}:{},...e.defaultPng?{defaultPng:e.defaultPng}:{},...e.artifactUrl?{artifactUrl:e.artifactUrl}:{},...e.fillNamedLogos?{fillNamedLogos:!0}:{}})}function fL(e){return null===e||"object"!=typeof e||Array.isArray(e)?void 0:Object.fromEntries(Object.entries(e))}function fB(e){return{...e,type:"timeline"}}function fS(e){return{...e,type:"chart"}}function fA(e){return{...e,type:"gantt"}}n.Py(fz,{createId:f9});let fP={gantt_too_large:"gantt_too_large",duplicate_task_id:"duplicate_node_id",invalid_gantt_date:"invalid_gantt_date",invalid_gantt_span:"invalid_gantt_span",invalid_gantt_phase:"invalid_gantt_phase",invalid_gantt_progress:"invalid_gantt_progress",missing_dependency:"missing_edge_source",self_dependency:"self_loop",gantt_dependency_cycle:"gantt_dependency_cycle"};function fV(e){return{id:e.id,title:e.title,type:"sequence",participants:e.participants,messages:e.messages,style:e.style}}let fH={sequence_too_large:"sequence_too_large",duplicate_participant_id:"duplicate_node_id",lifeline_id_collision:"duplicate_node_id",duplicate_message_id:"duplicate_edge_id",missing_message_source:"missing_edge_source",missing_message_target:"missing_edge_target"},fq={missing_message_source:"Use the id of a participant declared in spec.participants.",missing_message_target:"Use the id of a participant declared in spec.participants."};function fF(e){return{...e,type:"state-machine"}}let fI={state_machine_too_large:"state_machine_too_large",invalid_state_id:"invalid_state",duplicate_state_id:"duplicate_node_id",duplicate_transition_id:"duplicate_edge_id",missing_state_label:"invalid_state",unknown_initial_state:"unknown_initial_state",unknown_parent_state:"invalid_composite",nested_composite:"invalid_composite",missing_transition_source:"missing_edge_source",missing_transition_target:"missing_edge_target",final_has_outgoing:"final_has_outgoing",composite_member_transition:"invalid_composite",missing_composite_initial:"invalid_composite",underbranched_choice:"underbranched_choice",unguarded_choice_branch:"unlabeled_decision_branch",unreachable_state:"unreachable_node"};function fE(e){return{...e,type:"er"}}let fO={er_too_large:"er_too_large",invalid_entity_id:"invalid_entity",duplicate_entity_id:"duplicate_node_id",duplicate_entity_name:"invalid_entity",duplicate_field_name:"invalid_field",er_text_too_long:"label_too_long",nullable_primary_key:"invalid_field",duplicate_relationship_id:"duplicate_edge_id",missing_relationship_entity:"missing_edge_target",missing_relationship_field:"unknown_relationship_field",self_referencing_field:"invalid_relationship"};function fU(e){return{...e,type:"class"}}let fX={class_too_large:"class_too_large",invalid_class_id:"invalid_class",duplicate_class_id:"duplicate_node_id",duplicate_class_name:"invalid_class",duplicate_member:"invalid_member",class_text_too_long:"label_too_long",duplicate_relationship_id:"duplicate_edge_id",missing_relationship_class:"missing_edge_target",inheritance_cycle:"invalid_generalization",invalid_inheritance:"invalid_generalization",invalid_realization:"invalid_generalization",invalid_multiplicity:"invalid_relationship",misplaced_end_label:"invalid_relationship"};function fT(e){return{...e,type:"org-chart"}}let f$={org_chart_too_large:"org_chart_too_large",invalid_person_id:"invalid_person",duplicate_person_id:"duplicate_node_id",org_text_too_long:"label_too_long",unknown_manager:"missing_edge_source",self_manager:"invalid_reporting_line",reporting_cycle:"invalid_reporting_line",multiple_roots:"invalid_reporting_line",invalid_assistant:"invalid_person",duplicate_dotted_line_id:"duplicate_edge_id",invalid_dotted_line:"invalid_reporting_line"};class fY extends s.rNF()("CodeModeArtifactRenderFailed",{cause:s.kld(),message:s.QfV}){}class fG extends s.rNF()("CodeModeArtifactRendererNotConfigured",{message:s.QfV}){}let fR=s._kM({issues:s.O31(s.O3D(s$)).pipe(s.fXn)});class fD extends s.rNF()("ArtifactExportFailure",{status:s.uSQ("export_failed"),issues:fR.fields.issues}){}class fZ extends s.rNF()("ArtifactStorageFailure",{status:s.uSQ("storage_failed"),cause:s.kld(),issues:fR.fields.issues}){}function fj(e,t,a){class i extends s.rNF()(e,{message:s.QfV,status:t,context:a}){constructor(e){super({...e,message:e.context.issues[0]?.message??e.status},{disableChecks:!0})}}return i}let fN=fj("BuildFlowchartFailure",rw.fields.status,rw.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),fW=fj("BuildMindmapFailure",rb.fields.status,rb.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),fJ=fj("BuildSequenceDiagramFailure",rM.fields.status,rM.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),fK=fj("BuildStateMachineFailure",rS.fields.status,rS.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),fQ=fj("BuildErDiagramFailure",rH.fields.status,rH.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f1=fj("BuildClassDiagramFailure",rF.fields.status,rF.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f0=fj("BuildOrgChartFailure",rE.fields.status,rE.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f2=fj("BuildTimelineFailure",rz.fields.status,rz.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f3=fj("BuildChartFailure",rL.fields.status,rL.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f5=fj("BuildGanttFailure",rP.fields.status,rP.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f4=fj("CreateCanvasFailure",rY.fields.status,rY.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f6=fj("GetArtifactFailure",rU.fields.status,rU.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f7=fj("SearchIconsFailure",rJ.fields.status,rJ.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields}))),f8=fj("ApplyDiagramPatchFailure",rT.fields.status,rT.mapFields(({ok:e,status:t,...a})=>({...a,...fR.fields})));function f9(e){return`${e}_${globalThis.crypto.randomUUID()}`}function me(e){return{code:e.code,severity:e.severity??"error",stage:e.stage,...e.ref?{ref:e.ref}:{},message:e.message,hint:e.hint}}function mt(e){return 0===e.length?"input":e.map(e=>"number"==typeof e?`[${e}]`:String(e)).join(".")}function ma(e){let t=mt(e.path);return mi(t)?"unsupported_patch_operation":"InvalidType"===e.issueTag||"MissingKey"===e.issueTag&&"invalid_type"===e.missingKeyCode?"invalid_type":"LiteralUnion"===e.astKind&&"AnyOf"===e.issueTag?"invalid_enum":t.toLowerCase().includes("color")?"invalid_color":"input"===t?"invalid_type":"missing_field"}function mi(e){return/^operations\.\[\d+\]\.op$/.test(e)}function ms(e){return mi(e)?`Use one of: ${sR.join(", ")}. For label edits, use replaceText with selector plus text.`:"source"===e?"Pass source: { artifactId } from an accepted build or patch, or source: { scene } for inline Sketchi scene patching.":`Fix ${e} so it matches the Code Mode API contract.`}let ml=/^spec\.nodes\.\[\d+\]\.kind$/;function mo(e){return ml.test(e)?'Set kind to "start" (the single entry), "process" (a step), "decision" (a node whose outgoing edges carry branch labels) or "end" (an outcome).':ms(e)}function mr(e,t=ms){let a=e.issues.slice(0,20).map(e=>{let a=mt(e.path);return me({code:ma(e),stage:"input",ref:{kind:"request",path:a},message:e.message,hint:t(a)})});return e.issues.length>20&&a.push(me({code:"invalid_type",stage:"input",ref:{kind:"request",path:"input"},message:`${e.issues.length-20} additional input issues were omitted.`,hint:"Fix the summarized request shape before retrying."})),a}function mn(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)}function md(e){if(void 0===e)return;let t=se(e);return t.length>0?t:void 0}function mc(e){return e.checks.map(e=>{var t;return me({code:"generic_label"===(t=e.code)||"label_too_long"===t||"disconnected_graph"===t?t:"quality_below_threshold",severity:e.severity,stage:"quality",message:e.message,hint:"error"===e.severity?"Repair the structural issue and call buildFlowchart again.":"Improve the labels or scope before styling the artifact."})})}function mp(e){return e?.artifactFormats??fw}function mh(e){return e?.inlineArtifacts??fx}let mg=o.fn("codeMode.artifacts.exportFormats")(function*(e){let t=[];for(let i of e.formats){var a;let s;if("png"===i&&e.defaultPng){let t=e.defaultPng.deadlineMillis-(yield*r.Ru);if(t<=0){e.defaultPng.onUnavailable("Default PNG delivery budget exhausted.");continue}let a=yield*mu(e,i).pipe(o.wRz(t),o.Ket);if(uR.N6(a)){e.defaultPng.onUnavailable("TimeoutError"===a.failure._tag?"Default PNG rendering exceeded its delivery budget.":a.failure.message);continue}s=a.success}else s=yield*mu(e,i);t.push({format:i,mimeType:r0[i],data:s,sizeBytes:(a=s)instanceof ArrayBuffer||a instanceof Uint8Array?a.byteLength:r5(a)})}return t});function mu(e,t){return"scene"===t?o.PyW(e.scene):"excalidraw"===t?o.PyW(function(e,t={}){return{type:"excalidraw",version:2,source:t.source??"https://sketchi.app",elements:e.elements,appState:e.appState,files:e.files??{}}}(e.excalidraw)):e.renderer?e.renderer.renderPng({scene:e.scene,excalidraw:e.excalidraw}).pipe(o.xm_(e=>fY.make({cause:e,message:e.message}))):o.fJG(fG.make({message:"PNG artifact rendering is not configured for this runtime."}))}function mf(e){return e.map(e=>me({code:"overlapping-arrow-segment"===e.code?"arrow_overlap":"text-overflow"===e.code?"text_overflow":e.code.includes("binding")||e.code.includes("bound")||e.code.includes("endpoint")?"arrow_binding_invalid":"export_invalid_scene",stage:"export",ref:e.elementId?{kind:"artifact",id:e.elementId}:{kind:"artifact"},message:e.message,hint:"Inspect the rendered scene and retry with a simpler layout or patch."}))}function mm(e){return e.slice(0,20).map(e=>me({code:function(e){switch(e.code){case"duplicate_element_id":return"duplicate_element_id";case"duplicate_layer_id":return"duplicate_layer_id";case"empty_canvas":case"invalid_geometry":case"label_overflow":return"invalid_canvas_geometry";case"invalid_binding":return"invalid_canvas_binding";case"invalid_composition":return"invalid_canvas_composition";case"invalid_icon":return"invalid_canvas_icon";case"invalid_polygon":return"invalid_polygon";case"limit_exceeded":return"canvas_limit_exceeded";case"missing_z_order_element":case"duplicate_z_order_element":case"unknown_z_order_element":return"invalid_z_order";case"unknown_layout_target":return"unknown_layout_target"}}(e),stage:"canvas",ref:e.elementId?{kind:"element",id:e.elementId,path:e.path}:{kind:"diagram",path:e.path},message:e.message,hint:"Repair the referenced CanvasSpec field and call createCanvas again."}))}function mv(e){return mf(e.filter(e=>"overlapping-arrow-segment"!==e.code&&"arrow-segment-through-node"!==e.code))}function my(e){let t=[];for(let d of e.elements){if("arrow"===d.type){let e=d.points[0],a=d.points[1],i=d.points.slice(2);if(!e||!a)return null;let s=[e,a,...i];t.push({...d,type:"arrow",id:d.id,edgeId:d.edgeId,sourceNodeId:d.sourceNodeId,targetNodeId:d.targetNodeId,...d.strokeColor?{strokeColor:d.strokeColor}:{},...d.strokeStyle?{strokeStyle:d.strokeStyle}:{},...d.textColor?{textColor:d.textColor}:{},points:s,...d.label?{label:d.label}:{}});continue}if("node"===d.type){var a,i,s,l,o,r,n;let c=d.points;if("polygon"===d.shape&&(!c||!c[0]||!c[1]||!c[2]))return null;t.push({type:"node",id:d.id,nodeId:d.nodeId,...d.kind?{kind:d.kind}:{},...d.icon?{icon:{slug:d.icon.slug,size:d.icon.size}}:{},shape:d.shape,...d.fillColor?{fillColor:d.fillColor}:{},...d.strokeColor?{strokeColor:d.strokeColor}:{},x:d.x,y:d.y,width:d.width,height:d.height,label:d.label,...d.frameId?{frameId:d.frameId}:{},...d.groupIds?{groupIds:[...d.groupIds]}:{},...d.layerId?{layerId:d.layerId}:{},...void 0!==d.locked?{locked:d.locked}:{},...void 0!==d.opacity?{opacity:d.opacity}:{},...void 0!==d.zIndex?{zIndex:d.zIndex}:{},...d.fillStyle?{fillStyle:d.fillStyle}:{},...void 0!==d.roughness?{roughness:d.roughness}:{},...d.strokeStyle?{strokeStyle:d.strokeStyle}:{},...void 0!==d.strokeWidth?{strokeWidth:d.strokeWidth}:{},..."sequence-lifeline"===d.rendererRole&&h5(e,d)||"sequence-activation"===d.rendererRole&&function(e,t){let a=`${eE}:activation:`,i=t.nodeId.indexOf(a);if(i<=0||i+a.length===t.nodeId.length||t.id!==`node:${t.nodeId}`||"rectangle"!==t.shape||12!==t.width)return!1;let s=t.nodeId.slice(0,i+eE.length),l=e.elements.find(e=>"node"===e.type&&e.id===`node:${s}`&&e.nodeId===s);if(!l||!h5(e,l))return!1;let o=l.x+l.width/2,r=(t.x-(o-6))/6,n=e.elements.filter(e=>"node"===e.type&&e.nodeId.startsWith(`${s}:activation:`)).length;return r>=-.01&&.01>=Math.abs(r-Math.round(r))&&Math.round(r)<n&&t.y>=l.y-.01&&t.y+t.height<=l.y+l.height+.01}(e,d)||"timeline-marker"===d.rendererRole&&(a=d).nodeId.startsWith("event:")&&a.id===`node:${a.nodeId}`&&a.height<=18&&void 0===a.icon||"chart-mark"===d.rendererRole&&(i=d).nodeId.startsWith("chart:")&&i.id===`node:${i.nodeId}`&&void 0===i.icon||"gantt-mark"===d.rendererRole&&((s=d).nodeId.startsWith("gantt:task:")||s.nodeId.startsWith("gantt:progress:"))&&s.id===`node:${s.nodeId}`&&void 0===s.icon||"state-marker"===d.rendererRole&&void 0!==(l=d).kind&&hK[l.kind]===l.shape&&void 0===l.icon||"er-table"===d.rendererRole&&"rectangle"===(o=d).shape&&void 0===o.icon&&o.id===`node:${o.nodeId}`||"er-optional"===d.rendererRole&&("circle"===(r=d).shape||"ellipse"===r.shape)&&void 0===r.icon&&r.nodeId.includes(":optional:")&&24>=Math.max(r.width,r.height)||"class-box"===d.rendererRole&&"rectangle"===(n=d).shape&&void 0===n.icon&&n.id===`node:${n.nodeId}`||("swimlane"===d.rendererRole||"swimlane-header"===d.rendererRole||"zone"===d.rendererRole)&&"rectangle"===d.shape&&!d.icon?{rendererRole:d.rendererRole}:{},...d.textColor?{textColor:d.textColor}:{},..."polygon"===d.shape&&c?.[0]&&c[1]&&c[2]?{points:[c[0],c[1],c[2],...c.slice(3)]}:{}});continue}if("line"===d.type){let e=d.points[0],a=d.points[1];if(!e||!a)return null;t.push({...d,points:[e,a,...d.points.slice(2)]});continue}t.push(structuredClone(d))}return{kind:e.kind,version:e.version,diagramId:e.diagramId,title:e.title,width:e.width,height:e.height,accentColor:e.accentColor,backgroundColor:e.backgroundColor,elements:t,layers:structuredClone(e.layers),layouts:structuredClone(e.layouts),zOrder:[...e.zOrder]}}function mw(e){let{icons:t,...a}=e;return a}function mx(e){return structuredClone(e)}function mb(e){return e.elements.flatMap(e=>"arrow"===e.type?[`arrow:${e.id}:${e.sourceNodeId}->${e.targetNodeId}`]:"line"===e.type?[`line:${e.id}:${e.startBinding?.elementId??""}->${e.endBinding?.elementId??""}`]:[]).sort()}function mk(e){return e.elements.filter(e=>"node"===e.type)}function mM(e){return e.elements.filter(e=>"text"===e.type)}function mC(e){return e.elements.filter(e=>"arrow"===e.type)}function mz(e,t){if(!e||0===e.length||!t)return!1;let a=t.trim().toLowerCase();return e.some(e=>e.trim().toLowerCase()===a)}function m_(e,t){let a=t?.scope??"all",i=!!(t&&((t.ids?.length??0)>0||(t.nodeIds?.length??0)>0||(t.edgeIds?.length??0)>0||(t.kinds?.length??0)>0||(t.labels?.length??0)>0)),s=new Set(t?.ids??[]),l=new Set(t?.nodeIds??[]),o=new Set(t?.edgeIds??[]),r=new Set(t?.kinds??[]),n=mk(e).filter(e=>"edges"!==a&&(!t||!i||s.has(e.id)||l.has(e.nodeId)||!!e.kind&&[...r].some(t=>t===e.kind)||mz(t.labels,e.label))),d=mC(e).filter(e=>"nodes"!==a&&(!t||!i||s.has(e.id)||o.has(e.edgeId)||mz(t.labels,e.label))),c=new Set(n.map(e=>e.id)),p=new Set(d.map(e=>e.id));return{arrows:d,nodes:n,texts:mM(e).filter(e=>t&&i?s.has(e.id)||!!e.containerId&&c.has(e.containerId)||!!e.containerId&&p.has(e.containerId)||mz(t.labels,e.text):"nodes"===a?!!e.containerId&&c.has(e.containerId):"edges"!==a||!!e.containerId&&p.has(e.containerId))}}function mL(e){return me({code:"unknown_patch_target",stage:"flowchart",ref:{kind:"request",path:"operations.selector"},message:`Patch operation "${e.op}" did not match any scene element.`,hint:"Use nodeIds, edgeIds, ids, kinds, labels, or scope values that exist in the accepted artifact."})}function mB(e,t){return mM(e).find(e=>e.containerId===t||e.id===`${t}:label`)}function mS(e,t){let a=mB(e,t.id),i=function(e){let t=e[0],a=e[e.length-1];if(t&&a)return{x:(t.x+a.x)/2,y:(t.y+a.y)/2-10}}(t.points);if(a&&!a.containerId){let e=t.points[0];if(!e)return;let i=t.points.find(t=>t.x!==e.x||t.y!==e.y);if(!i)return;let s=aT(a.text,a.maxWidth??160,a.fontSize),l=aU(s,a.fontSize,a.maxWidth??160),o=Math.ceil(s.split("\n").length*a.fontSize*1.35);a.x=(e.x+i.x)/2+(e.x===i.x?l/2+8:0),a.y=(e.y+i.y)/2-(e.y===i.y?o/2+5:0);return}a&&i&&(a.x=i.x,a.y=i.y)}function mA(e,t){let a=new Set(t);for(let t of mC(e))(a.has(t.sourceNodeId)||a.has(t.targetNodeId))&&mH(e,t)}function mP(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function mV(e,t,a){let i=mP(e),s=mP(t),l=s.x-i.x,o=s.y-i.y;return 0===l&&0===o?{x:i.x,y:"source"===a?e.y+e.height:e.y}:Math.abs(l)>Math.abs(o)?l>=0?{x:e.x+e.width,y:i.y}:{x:e.x,y:i.y}:o>=0?{x:i.x,y:e.y+e.height}:{x:i.x,y:e.y}}function mH(e,t){let a=new Map(mk(e).map(e=>[e.nodeId,e])),i=a.get(t.sourceNodeId),s=a.get(t.targetNodeId);if(!i||!s)return[me({code:"patch_output_invalid",stage:"render",ref:{kind:"edge",id:t.edgeId},message:`Arrow "${t.id}" references a node that is not in the scene.`,hint:"Rebuild the diagram with buildFlowchart or buildMindmap before applying visual patches."})];if(t.curved)return t.points=ig(i,s).map(e=>({...e})),mS(e,t),[];let l=mV(i,s,"source"),o=mV(s,i,"target");if(Math.abs(o.y-l.y)>=Math.abs(o.x-l.x)){let e=(l.y+o.y)/2;t.points=[l,{x:l.x,y:e},{x:o.x,y:e},o]}else{let e=(l.x+o.x)/2;t.points=[l,{x:e,y:l.y},{x:e,y:o.y},o]}return mS(e,t),[]}function mq(e){let t=e.width,a=e.height;for(let i of e.elements)if("arrow"===i.type||"line"===i.type)for(let e of i.points)t=Math.max(t,e.x),a=Math.max(a,e.y);else"text"===i.type?(t=Math.max(t,i.x+(i.maxWidth??0)),a=Math.max(a,i.y+i.fontSize)):(t=Math.max(t,i.x+i.width),a=Math.max(a,i.y+i.height));e.width=t+48,e.height=a+48}function mF(e,t,a){if(!t||!a){if(t){let a=e.indexOf(t);return a>=0?a:void 0}if(a){let t=e.indexOf(a);return t>=0?t+1:void 0}return e.length}}function mI(e,t){return[me({code:"patch_output_invalid",stage:"canvas",ref:{kind:"request",path:"operations"},message:t,hint:`Repair the ${e.op} operation and preserve unique, stable element ids.`})]}let mE=o.fn("codeMode.patch.resolveSource")(function*(e){if("scene"in e.source)return{scene:mx(e.source.scene)};let t=yield*r1,a=yield*t.readManifest(e.source.artifactId).pipe(o.xm_(e=>new f8({status:"storage_failed",context:{issues:[r6(e.message,"storage_read_failed")]}})));if(!a||a.artifactId!==e.source.artifactId||!a.formats.some(e=>"scene"===e.format))return yield*new f8({status:"source_unavailable",context:{issues:[me({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Artifact "${e.source.artifactId}" does not have a valid source manifest.`,hint:"Rebuild with the appropriate build operation and patch the accepted artifact id."})]}});let i=yield*t.read(e.source.artifactId,"scene").pipe(o.xm_(e=>new f8({status:"storage_failed",context:{issues:[r6(e.message,"storage_read_failed")]}})));if(!i)return yield*new f8({status:"source_unavailable",context:{issues:[me({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Scene artifact "${e.source.artifactId}" is not available.`,hint:"Call buildFlowchart or buildMindmap first, then patch the accepted artifact id."})]}});let l=s.q$Z(oI,{errors:"all",reportInput:!0})(i.data);return uR.oJ(l)?{scene:mx(l.success),sourceArtifactId:e.source.artifactId}:yield*new f8({status:"source_unavailable",context:{issues:[me({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:e.source.artifactId},message:`Scene artifact "${e.source.artifactId}" could not be decoded.`,hint:"Rebuild with the appropriate build operation and patch the new artifact."})]}})});function mO(e){return e?{requestId:e}:{}}function mU(e){let t=mw(e);return{diagramId:e.diagramId,formats:[{format:"scene",mimeType:r0.scene,inline:t,sizeBytes:r5(t)}]}}function mX(e){return{ok:!1,status:e.status,...e.context}}function mT(e,t){return r6(e.message,t)}let m$=o.fn("codeMode.artifacts.exportAndStore")(function*(e){let t=yield*fz,a=yield*r1,{excalidraw:i,validation:s}=yield*o.OH5(()=>{let t=function(e){let t,a,i,s,l,o,r,n=(t=new Map(e.layers.map(e=>[e.id,e])),i=new Set((a=e.elements.filter(e=>{let a=e.layerId?t.get(e.layerId):void 0;return a?.visible!==!1})).flatMap(e=>"node"===e.type||"frame"===e.type&&void 0!==e.nodeId?[e.nodeId]:[])),l=new Set((s=a.filter(e=>"arrow"!==e.type||i.has(e.sourceNodeId)&&i.has(e.targetNodeId))).flatMap(e=>"text"===e.type?[]:[e.id])),r=new Set((o=s.filter(e=>"text"!==e.type||!e.containerId||l.has(e.containerId))).map(e=>e.id)),o.map(e=>{let a=e.layerId?t.get(e.layerId):void 0,{frameId:i,...s}=e;return{...e.frameId&&!r.has(e.frameId)?s:e,...a?.locked===!0?{locked:!0}:{}}})),{textElements:d,generatedLabelSourceIds:c}=function(e){let t=e.filter(n_),a=e.filter(nL),i=new Set(e.map(e=>e.id)),s=new Map,l=new Set(a.flatMap(e=>e.containerId?[e.containerId]:[]));for(let e of t){if(l.has(e.id)||e.rendererRole)continue;let t=`__sketchi_node_label__${e.id}`,o=t,r=2;for(;i.has(o);)o=`${t}:${r}`,r+=1;i.add(o),s.set(o,e.id),a.push({type:"text",id:o,containerId:e.id,...e.frameId?{frameId:e.frameId}:{},...e.groupIds?{groupIds:[...e.groupIds]}:{},...e.layerId?{layerId:e.layerId}:{},...void 0!==e.locked?{locked:e.locked}:{},...void 0!==e.opacity?{opacity:e.opacity}:{},...e.textColor?{textColor:e.textColor}:{},x:e.x+e.width/2,y:e.y+e.height/2,text:e.label,fontSize:16,maxWidth:Math.max(1,e.width-24)})}return{textElements:a,generatedLabelSourceIds:s}}(n),p={},h=new Map(c),g=function(e,t,a,i,s){var l,o,r,n;let d=t.filter(n_),c=new Set([...t.map(e=>e.id),...a.map(e=>e.id)]),p=new Map,h=new Map;for(let e of a)e.containerId&&h.set(e.containerId,e);let g=t.filter(nB),u=t.filter(nS),f=function(e,t,a,i){let s=new Map,l=new Map([...e.map(e=>[e.nodeId,e.id]),...t.flatMap(e=>void 0===e.nodeId?[]:[[e.nodeId,e.id]])]);for(let e of a)for(let t of[e.sourceNodeId,e.targetNodeId]){let a=l.get(t);a&&s.set(a,[...s.get(a)??[],e.id])}for(let e of i)for(let t of[e.startBinding,e.endBinding])t&&s.set(t.elementId,[...s.get(t.elementId)??[],e.id]);return s}(d,t.filter(nA),g,u),m=new Map,v=[];for(let t of d){let a=h.get(t.id),n=function(e){let t=e.shape.height,a="circle"===e.shape.shape?"ellipse":e.shape.shape,i=[...e.text&&"polygon"!==e.shape.shape?[{id:e.text.id,type:"text"}]:[],...e.arrowIds.map(e=>({id:e,type:"arrow"}))];if("polygon"===e.shape.shape){let t=e.shape.points??[{x:e.shape.width/2,y:0},{x:e.shape.width,y:e.shape.height},{x:0,y:e.shape.height}],[a]=t;return{...nb(e.shape.id,e.shape),type:"line",x:e.shape.x,y:e.shape.y,width:e.shape.width,height:e.shape.height,backgroundColor:e.shape.fillColor??"transparent",boundElements:e.arrowIds.map(e=>({id:e,type:"arrow"})),customData:{sketchiShape:"polygon",...e.shape.rendererRole?{sketchiRendererRole:e.shape.rendererRole}:{}},endArrowhead:null,endBinding:null,lastCommittedPoint:null,points:[...t,a].map(e=>[e.x,e.y]),roundness:null,startArrowhead:null,startBinding:null,strokeColor:e.shape.strokeColor??e.scene.accentColor}}return aR(e.shape.shape)?{...nb(e.shape.id,e.shape),groupIds:[nM(e.shape),...e.shape.groupIds??[]],type:"rectangle",x:e.shape.x,y:e.shape.y,width:e.shape.width,height:t,backgroundColor:"transparent",boundElements:i.length>0?i:null,customData:{sketchiShape:e.shape.shape},roundness:null,strokeColor:"transparent"}:{...nb(e.shape.id,e.shape),type:a,x:e.shape.x,y:e.shape.y,width:e.shape.width,height:t,backgroundColor:e.shape.fillColor??"transparent",boundElements:i.length>0?i:null,roundness:"rectangle"===a&&"chart-mark"!==e.shape.rendererRole&&"gantt-mark"!==e.shape.rendererRole&&"er-table"!==e.shape.rendererRole&&"class-box"!==e.shape.rendererRole&&"swimlane"!==e.shape.rendererRole&&"swimlane-header"!==e.shape.rendererRole&&"zone"!==e.shape.rendererRole?{type:3}:null,strokeColor:e.shape.strokeColor??e.scene.accentColor,...e.shape.rendererRole?{customData:{sketchiRendererRole:e.shape.rendererRole}}:{}}}({scene:e,shape:t,arrowIds:f.get(t.id)??[],...a?{text:a}:{}});if(m.set(t.nodeId,n),v.push(n),aR(t.shape)){let a=function(e){let{shape:t}=e;if(!aR(t.shape))return[];let a={...t,shape:t.shape};return[...t.fillColor?[{fill:t.fillColor,points:aQ(a),smooth:!1}]:[],...(function(e){let{x:t,y:a,width:i,height:s}=e,l=aD[e.shape];if("document"===e.shape)return[{points:[{x:t,y:a+s},{x:t,y:a},{x:t+i,y:a},{x:t+i,y:a+s}],smooth:!1},{points:aW(e,l),smooth:!0}];let o=aN(e,l,"pipe"!==e.shape,12,"bucket"===e.shape?aZ(i):0);return[{points:o.back,smooth:!0},{points:o.front,smooth:!0},...o.sides.map(e=>({points:e,smooth:!1})),{points:o.end,smooth:!0}]})(a).map(e=>({...e,fill:void 0}))].map((a,i)=>{let[s]=a.points,l=a.points.map(e=>e.x),o=a.points.map(e=>e.y);return{...nb(e.id(i),t),groupIds:[nM(t),...t.groupIds??[]],type:"line",x:s.x,y:s.y,width:Math.max(...l)-Math.min(...l),height:Math.max(...o)-Math.min(...o),backgroundColor:a.fill??"transparent",boundElements:null,customData:{sketchiShapeStroke:t.shape},endArrowhead:null,endBinding:null,lastCommittedPoint:null,points:a.points.map(e=>[e.x-s.x,e.y-s.y]),roughness:t.roughness??0,roundness:a.smooth?{type:2}:null,startArrowhead:null,startBinding:null,strokeColor:a.fill?"transparent":t.strokeColor??e.scene.accentColor}})}({id:e=>(function(e,t,a){let i=`${e.id}:stroke-${t}`,s=i,l=2;for(;a.has(s);)s=`${i}-${l}`,l+=1;return a.add(s),s})(t,e,c),scene:e,shape:t});for(let e of a)s.set(e.id,t.id);v.push(...a),p.set(t.id,t)}let d=t.icon&&e.icons&&Object.hasOwn(e.icons,t.icon.slug)?e.icons[t.icon.slug]:void 0;if(!t.icon||"string"!=typeof d?.svg)continue;let g=(l=t.icon.slug,o=d.svg,`sketchi-icon-${l}-${iM(o,"hex","utf16")}`),u=function(e,t){let a=`${e.id.replace(/[^\w-]/gu,"-")}-icon`,i=a,s=2;for(;t.has(i);)i=`${a}-${s}`,s+=1;return t.add(i),i}(t,c),y=function(e){let t=function(e){if(!e.icon)return;let t=a7(e);return{x:e.x+(e.width-e.icon.size)/2,y:e.y+t.y+aY.gap,width:e.icon.size,height:e.icon.size}}(e.node);return t&&e.node.icon?{...nb(e.id,e.node),groupIds:[nM(e.node),...e.node.groupIds??[]],type:"image",x:t.x,y:t.y,width:t.width,height:t.height,backgroundColor:"transparent",boundElements:null,crop:null,customData:{sketchiNodeIcon:e.node.icon.slug},fileId:e.fileId,roundness:null,scale:[1,1],status:"saved",strokeColor:"transparent"}:null}({fileId:g,id:u,node:t});y&&(i[g]??=(r=d.svg,{id:g,mimeType:"image/svg+xml",dataURL:`data:image/svg+xml;base64,${function(e){let t=new TextEncoder().encode(e),a="";for(let e=0;e<t.length;e+=32768)a+=String.fromCharCode(...t.subarray(e,e+32768));return btoa(a)}(r)}`,created:1,lastRetrieved:1}),n.groupIds=[nM(t),...t.groupIds??[]],s.set(u,t.id),p.set(t.id,t),v.push(y))}for(let a of t.filter(nA)){let t={...nb((n={element:a,scene:e}).element.id,n.element),type:"frame",x:n.element.x,y:n.element.y,width:n.element.width,height:n.element.height,backgroundColor:n.element.fillColor??"transparent",boundElements:null,name:n.element.name??null,roundness:null,strokeColor:n.element.strokeColor??n.scene.accentColor},i=f.get(a.id)??[];t.boundElements=i.length?i.map(e=>({id:e,type:"arrow"})):null,void 0!==a.nodeId&&m.set(a.nodeId,t),v.push(t)}for(let e of a){let t=d.find(t=>t.id===e.containerId&&"polygon"!==t.shape),a=g.some(t=>t.id===e.containerId),i=g.find(t=>e.id===`${t.id}:label`),s=e.containerId&&(t||a),l=e.textColor??i?.textColor,o=nk({...t?{container:t}:{},element:e,id:e.id,...s?{containerId:e.containerId}:{},fontSize:e.fontSize,maxWidth:e.maxWidth??160,...l?{textColor:l}:{},text:e.text,wrap:a||!!i,x:e.x,y:e.y}),r=t?p.get(t.id):void 0;r&&(o.groupIds=[nM(r),...e.groupIds??[]]),v.push(o)}for(let t of g){let i=h.get(t.id)??a.find(e=>e.id===`${t.id}:label`);v.push(function(e){let t=e.arrow.points[0],a=nC(e.arrow),i=!0!==e.arrow.curved&&(e.arrow.points.length>2||[e.sourceShape,e.targetShape].some(e=>e?.type==="frame"||function(e){let t=e?.customData;if(null===t||"object"!=typeof t)return!1;let a=t.sketchiRendererRole;return"er-table"===a||"class-box"===a}(e)));return{...nb(e.arrow.id,e.arrow),type:"arrow",x:t.x,y:t.y,width:a.x-t.x,height:a.y-t.y,backgroundColor:"transparent",boundElements:e.text?e.text.containerId===e.arrow.id?[{id:e.text.id,type:"text"}]:null:e.arrow.label?[{id:`${e.arrow.id}:label`,type:"text"}]:null,elbowed:i,endArrowhead:void 0===e.arrow.endArrowhead?"arrow":e.arrow.endArrowhead,endBinding:nx(e.targetShape,a),...i?{fixedSegments:[],startIsSpecial:null,endIsSpecial:null}:{},points:e.arrow.points.map(e=>[e.x-t.x,e.y-t.y]),roundness:i?null:{type:2},startArrowhead:e.arrow.startArrowhead??null,startBinding:nx(e.sourceShape,t),strokeColor:e.arrow.strokeColor??e.scene.accentColor,strokeStyle:e.arrow.strokeStyle??"solid"}}({arrow:t,scene:e,sourceShape:m.get(t.sourceNodeId),targetShape:m.get(t.targetNodeId),...i?{text:i}:{}}));let s=t.label&&!i?function(e){if(!e.arrow.label)return null;let t=e.arrow.points[0],a=nC(e.arrow);return nk({id:`${e.arrow.id}:label`,containerId:e.arrow.id,fontSize:13,...void 0===e.arrow.locked?{}:{locked:e.arrow.locked},maxWidth:160,...e.arrow.textColor?{textColor:e.arrow.textColor}:{},text:e.arrow.label,wrap:!0,x:(t.x+a.x)/2,y:(t.y+a.y)/2-10})}({arrow:t}):null;s&&v.push(s)}let y=new Map(v.map(e=>[e.id,e]));for(let t of u)if(v.push(function(e){let[t,...a]=e.element.points,i=a[a.length-1]??t,s=void 0!==e.element.startArrowhead||void 0!==e.element.endArrowhead||void 0!==e.element.startBinding||void 0!==e.element.endBinding,l=s&&e.element.points.length>2;return{...nb(e.element.id,e.element),type:s?"arrow":"line",x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y,backgroundColor:e.element.fillColor??"transparent",boundElements:null,...s?{elbowed:l}:{},endArrowhead:e.element.endArrowhead??null,endBinding:nz(e.element.endBinding,e.elementsById,i),...l?{fixedSegments:[],startIsSpecial:null,endIsSpecial:null}:{},points:e.element.points.map(e=>[e.x-t.x,e.y-t.y]),roundness:e.element.points.length>2&&!l?{type:2}:null,startArrowhead:e.element.startArrowhead??null,startBinding:nz(e.element.startBinding,e.elementsById,t),strokeColor:e.element.strokeColor??e.scene.accentColor}}({element:t,elementsById:y,scene:e})),t.label){let e=t.points[0],a=t.points[t.points.length-1]??e;v.push(nk({id:`${t.id}:label`,fontSize:13,...void 0===t.locked?{}:{locked:t.locked},maxWidth:160,...t.textColor?{textColor:t.textColor}:{},text:t.label,wrap:!0,x:(e.x+a.x)/2,y:(e.y+a.y)/2-10}))}return v}(e,n,d,p,h),u=new Map(e.zOrder.map((e,t)=>[e,t])),f=e=>{if(u.has(e.id))return e.id;let t=h.get(e.id);return t||(e.id.endsWith(":label")?e.id.slice(0,-6):e.id)};g.sort((e,t)=>(u.get(f(e))??Number.MAX_SAFE_INTEGER)-(u.get(f(t))??Number.MAX_SAFE_INTEGER));let m=null;for(let e of g){let t=function(e,t,a,i){if(void 0!==i){var s=i;if(!nh.has(s)){if(s.length<2||s.length%2!=0||!nd(s))throw Error("intDigits must be an even number of at least 2 characters in strictly ascending character code order: "+s);if(!nc(s))throw Error("intDigits must be single-byte (char code 0-255): "+s);nh.add(s)}}else i=a??r8;if(void 0!==a){var l=a;if(!np.has(l)){if(l.length<2||!nd(l))throw Error("digits must be at least 2 characters in strictly ascending character code order: "+l);if(!nc(l))throw Error("digits must be single-byte (char code 0-255): "+l);np.add(l)}}else a=r7;let o=ne(a),r=ne(i);if(null!=e&&nl(e,a,i,r),null!=t&&nl(t,a,i,r),null!=e&&null!=t&&e>t){let a=e;e=t,t=a}if(null==e){if(null==t)return i[i.length/2]+a[0];let e=ns(t,i,r),s=t.slice(e.length);if(nn(e,a,i))return e+nt("",s,a,o);if(e<t)return e;let l=function(e,t,a,i,s){na(e,i,s);let l=e[0],o=t[t.length-1],r="";for(let i=e.length-1;i>=1;i--){let s=a[e.charCodeAt(i)]-1;if(-1!==s)return l+e.slice(1,i)+t[s]+r;r=o+r}let n=s[l.charCodeAt(0)];if(0===n)return null;let d=i[n-1],c=ni(d,i,s)-ni(l,i,s);return d+(c>0?r+o:c<0?r.slice(1):r)}(e,a,o,i,r);if(null==l)throw Error("cannot decrement any more");return l}if(null==t){let t=ns(e,i,r),s=e.slice(t.length),l=no(t,a,o,i,r);return null==l?t+nt(s,null,a,o):l}let n=ns(e,i,r),d=e.slice(n.length),c=ns(t,i,r),p=t.slice(c.length);if(n===c)return n+nt(d,p,a,o);let h=no(n,a,o,i,r);if(null==h)throw Error("cannot increment any more");return h<t?h:n+nt(d,null,a,o)}(m,null);e.index=t,m=t}return{appState:{viewBackgroundColor:e.backgroundColor,zoom:{value:Math.max(.42,Math.round(100*Math.min(1,860/Math.max(e.width,1),340/Math.max(e.height,1)))/100)}},elements:g,files:p}}(e.scene);return{excalidraw:t,validation:function(e){let t=[],a=new Map(e.elements.map(e=>[e.id,e])),i=new Set(e.elements.filter(nH).map(e=>e.id));for(let s of(0===e.elements.length&&t.push({code:"empty-scene",message:"Excalidraw scene must contain at least one shape."}),e.elements)){if("image"!==s.type||"string"==typeof s.fileId&&e.files&&Object.hasOwn(e.files,s.fileId)||t.push({code:"missing-image-file",elementId:s.id,message:`Image "${s.id}" references a file missing from the scene.`}),"arrow"===s.type){let e=!0===s.elbowed;for(let l of((Array.isArray(s.points)?s.points:[]).length>2&&!e&&!function(e){let t=e.roundness;return!0!==e.elbowed&&null!==t&&"object"==typeof t&&2===t.type}(s)&&t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Arrow "${s.id}" has an orthogonal route but is not marked elbowed.`}),e&&null!==s.fixedSegments&&!Array.isArray(s.fixedSegments)&&t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Elbow arrow "${s.id}" is missing fixedSegments metadata.`}),["startBinding","endBinding"])){if(null===s[l]||void 0===s[l])continue;let o=nP(s,l);if(!(o&&i.has(o))){t.push({code:"missing-arrow-binding",elementId:s.id,message:`Arrow "${s.id}" has invalid ${l}.`});continue}let r=a.get(o);r&&!function(e,t,a){let i=e.boundElements;return!!Array.isArray(i)&&i.some(e=>!!(e&&"object"==typeof e)&&e.id===t&&e.type===a)}(r,s.id,"arrow")&&t.push({code:"missing-bound-arrow",elementId:r.id,message:`Shape "${r.id}" does not include bound arrow "${s.id}".`});let n=function(e,t){let a=nf(e.x)??0,i=nf(e.y)??0,s=Array.isArray(e.points)?e.points.map(nm).filter(e=>!!e):[],l="startBinding"===t?s[0]:s[s.length-1];return l?{x:a+l[0],y:i+l[1]}:null}(s,l);if(r&&n&&!function(e,t){let a=nv(t);if(!a)return!1;let i=t.customData&&"object"==typeof t.customData?t.customData.sketchiShape:void 0;if("string"==typeof i&&aR(i))return aK({...a,shape:i},e);if("diamond"===t.type){let t=a.width/2,i=a.height/2;if(0===t||0===i)return!1;let s=a.x+t,l=a.y+i;return nF(Math.abs(e.x-s)/t+Math.abs(e.y-l)/i,1)}if("ellipse"===t.type){let t=a.width/2,i=a.height/2;if(0===t||0===i)return!1;let s=a.x+t,l=a.y+i;return nF(((e.x-s)/t)**2+((e.y-l)/i)**2,1)}let s=(nF(e.x,a.x)||nF(e.x,a.x+a.width))&&nq(e.y,a.y,a.y+a.height),l=(nF(e.y,a.y)||nF(e.y,a.y+a.height))&&nq(e.x,a.x,a.x+a.width);return s||l}(n,r)&&t.push({code:"arrow-endpoint-off-shape",elementId:s.id,message:`Arrow "${s.id}" ${l} endpoint does not land on "${r.id}".`}),r&&n&&e){let e=function(e,t){let a=e[t];return a&&"object"==typeof a?nm(a.fixedPoint):null}(s,l);e&&function(e,t,a){let i=nv(a);if(!i)return!1;let s=1e-4>Math.abs(e[0]-.5001)?.5:e[0],l=1e-4>Math.abs(e[1]-.5001)?.5:e[1];return nF(i.x+s*i.width,t.x)&&nF(i.y+l*i.height,t.y)}(e,n,r)||t.push({code:"invalid-elbow-binding",elementId:s.id,message:`Elbow arrow "${s.id}" has invalid ${l} fixedPoint metadata.`})}}}if("text"===s.type){let e=s.containerId;if("string"!=typeof e)continue;let i=a.get(e);if(!i){t.push({code:"missing-container",elementId:s.id,message:`Text "${s.id}" references missing container "${e}".`});continue}let l=("number"==typeof s.width?s.width:0)-("number"==typeof s.fontSize?s.fontSize:0),o="number"==typeof s.height?s.height:0,r="number"==typeof i.width?i.width:0,n="number"==typeof i.height?i.height:0;nH(i)&&(l+24>r||o+18>n)&&t.push({code:"text-overflow",elementId:s.id,message:`Text "${s.id}" does not fit inside "${e}".`})}}return t.push(...function(e){let t=e.filter(e=>"arrow"===e.type).flatMap(nV),a=e.filter(nH),i=new Map(e.flatMap(e=>"string"==typeof e.frameId?[[e.id,e.frameId]]:[])),s=[],l=new Set;for(let e of t)for(let t of a){if(function(e){let t=e.customData;if(null===t||"object"!=typeof t)return!1;let a=t.sketchiRendererRole;return a0.some(e=>e===a)}(t)||t.id===e.startBindingId||t.id===e.endBindingId||function(e,t,a){return"frame"===e.type&&[t.arrowId,t.startBindingId,t.endBindingId].some(t=>null!==t&&a.get(t)===e.id)}(t,e,i))continue;let a=nv(t);if(!a||!iw(e,a))continue;let o=`${e.arrowId}:${e.segmentIndex}:${t.id}`;l.has(o)||(l.add(o),s.push({code:"arrow-segment-through-node",elementId:e.arrowId,message:`Arrow "${e.arrowId}" passes through shape "${t.id}".`}))}return s}(e.elements)),t.push(...function(e){let t=e.filter(e=>"arrow"===e.type).flatMap(nV),a=[],i=new Set;for(let e=0;e<t.length;e+=1){let s=t[e];if(s)for(let l=e+1;l<t.length;l+=1){let e=t[l];if(!e||s.arrowId===e.arrowId||function(e,t){if(!ix(e,t))return!1;let a=e.isFirstSegment&&t.isFirstSegment&&null!==e.startBindingId&&e.startBindingId===t.startBindingId;return .01>=Math.abs((a?e.startCoordinate:e.endCoordinate)-(a?t.startCoordinate:t.endCoordinate))&&Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||function(e,t){if(null===e.startBindingId||e.startBindingId!==t.startBindingId||e.segmentIndex!==t.segmentIndex)return!1;for(let a=0;a<=e.segmentIndex;a+=1){let i=e.route[a],s=t.route[a];if(!i||!s||Math.abs(i.x-s.x)>.01||Math.abs(i.y-s.y)>.01)return!1}return Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||function(e,t){let[a,i]=[e.route.at(-1),t.route.at(-1)];if(null===e.endBindingId||e.endBindingId!==t.endBindingId||!a||!i||Math.abs(a.x-i.x)>.01||Math.abs(a.y-i.y)>.01)return!1;let s=e=>e.route.slice(e.segmentIndex).every(t=>"horizontal"===e.orientation?.01>=Math.abs(t.y-e.route[e.segmentIndex].y):.01>=Math.abs(t.x-e.route[e.segmentIndex].x));return s(e)&&s(t)&&Math.sign(e.endCoordinate-e.startCoordinate)===Math.sign(t.endCoordinate-t.startCoordinate)}(s,e)||!iy(s,e))continue;let o=[s.arrowId,String(s.segmentIndex),e.arrowId,String(e.segmentIndex)].sort().join(":");i.has(o)||(i.add(o),a.push({code:"overlapping-arrow-segment",elementId:s.arrowId,message:`Arrow "${s.arrowId}" overlaps arrow "${e.arrowId}".`}))}}return a}(e.elements)),{ok:0===t.length,issues:t}}(t)}}).pipe(o.fRP("codeMode.artifacts.exportValidate")),l=e.validationIssues(s.issues);if(l.length>0)return yield*new fD({status:"export_failed",issues:l});let r=yield*mg({formats:e.formats,scene:e.scene,excalidraw:i,renderer:t.renderer,defaultPng:t.defaultPng}).pipe(o.xm_(e=>new fD({status:"export_failed",issues:[me({code:"render_failed",stage:"export",..."CodeModeArtifactRendererNotConfigured"===e._tag?{ref:{kind:"artifact",path:"options.artifactFormats"}}:{},message:e.message,hint:"CodeModeArtifactRendererNotConfigured"===e._tag?"Use the hosted Studio Code Mode runtime with its Cloudflare Browser Run binding, or omit png from artifactFormats.":"Retry the request; if it keeps failing, inspect the configured renderer."})]}))),n=yield*o.OH5(()=>t.createId("artifact"));var d=yield*uY(a.write({artifactId:n,diagramId:e.scene.diagramId,formats:r,inlineFormats:e.inlineFormats,...e.provenance?{provenance:e.provenance}:{}}).pipe(o.fRP("codeMode.artifacts.store")),{artifactId:n,...e.requestId?{requestId:e.requestId}:{}}).pipe(o.xm_(e=>new fZ({status:"storage_failed",cause:e,issues:[mT(e,"storage_write_failed")]}))),c=t.artifactUrl;if(!c)return d;let p=d.formats.map(e=>({...e,url:c({artifactId:d.artifactId,format:e.format})}));return{...d,formats:p}}),mY=o.fn("codeMode.buildMindmap.workflow")(function*(e){var t,a;let i,l,r,n,d,c,p,h,g,u=function(e){let t=fL(fL(fL(e)?.spec)?.root);if(!t)return[];let a=[{depth:0,topic:t}],i=1;for(;a.length>0;){let e=a.pop();if(!e)continue;if(e.depth>8)return[me({code:"mindmap_too_deep",stage:"mindmap",ref:{kind:"request",path:"spec.root.children"},message:"Mindmap depth exceeds the supported maximum of 8.",hint:"Combine overly deep topics into a shallower hierarchy."})];let t=e.topic.children;if(Array.isArray(t)){if((i+=t.length)>100)return[me({code:"mindmap_too_large",stage:"mindmap",ref:{kind:"request",path:"spec.root"},message:"Mindmap exceeds the supported maximum of 100 topic slots.",hint:"Split this hierarchy into smaller focused mindmaps."})];for(let i=t.length-1;i>=0;i-=1){let s=fL(t[i]);s&&a.push({depth:e.depth+1,topic:s})}}}return[]}(e);if(u.length>0)return yield*new fW({status:"invalid_mindmap",context:{issues:u}});let f=s.q$Z(oc,{errors:"all",reportInput:!0})(e);if(!uR.oJ(f))return yield*new fW({status:"invalid_input",context:{issues:mr(sl(f.failure))}});let m=yield*fz,v=f.success,w=yield*o.OH5(()=>m.createId("build")),x=(t=v.spec,i=(e,t)=>({id:`topic-${t.join("-")}`,label:se(e.label),children:(e.children??[]).map((e,a)=>i(e,[...t,a]))}),l=se(t.title),{id:md(t.id)??(mn(l)||"sketchi-mindmap"),title:l,root:i(t.root,[0]),layout:{direction:t.layout.direction},style:{...y}}),b={buildId:w,...mO(v.requestId),normalizedSpec:x},k=(r=0,n=0,(d=(e,t)=>{r+=1,n=Math.max(n,t),e.children.forEach(e=>d(e,t+1))})(x.root,0),p=[],(c={count:r,depth:n}).count<2&&p.push(me({code:"disconnected_graph",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:"Mindmap root must contain at least one child topic.",hint:"Add one or more nested topics under spec.root.children."})),c.depth>8&&p.push(me({code:"mindmap_too_deep",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:`Mindmap depth ${c.depth} exceeds the supported maximum of 8.`,hint:"Combine overly deep topics into a shallower hierarchy."})),c.count>100&&p.push(me({code:"mindmap_too_large",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:`Mindmap has ${c.count} topics; the supported maximum is 100.`,hint:"Split this hierarchy into smaller focused mindmaps."})),p);if(k.length>0)return yield*new fW({status:"invalid_mindmap",context:{...b,issues:k}});let M=yield*o.SvU({try:()=>{var e;let t,a,i;return e={id:x.id,title:x.title,root:x.root,direction:x.layout.direction,style:y},t=[],a=[],(i=(e,s,l)=>{let o=s.join("-"),r=s.length-1,n={depth:r,siblingIndex:s.at(-1)};t.push({id:`topic-${o}`,label:e.label,kind:0===r?"root":"topic",metadata:n}),l&&a.push({id:`branch-${o}`,source:l,target:`topic-${o}`,metadata:n}),e.children?.forEach((e,t)=>i(e,[...s,t],`topic-${o}`))})(e.root,[0]),eH({id:e.id,title:e.title,type:e_,nodes:t,edges:a,layout:{direction:e.direction??"LR",edgeRouting:"curved"},...e.style?{style:{...e.style}}:{}})},catch:e=>new fW({status:"invalid_mindmap",context:{...b,issues:[me({code:"disconnected_graph",stage:"mindmap",ref:{kind:"diagram",id:x.id},message:e instanceof Error?e.message:"Mindmap failed core validation.",hint:"Repair the nested topic hierarchy and call buildMindmap again."})]}})}),C=(a=v.options?.minQualityScore??8,{accepted:(g=Math.max(0,10-2*(h=M.nodes.filter(e=>/^(topic|branch|item|mindmap)$/i.test(e.label.trim()))).length))>=a,score:g,threshold:a,summary:{nodeCount:M.nodes.length,edgeCount:M.edges.length},checks:h.map(e=>({code:"generic_label",passed:!1,severity:"warning",message:`Topic "${e.label}" is too generic.`,refs:[{kind:"node",id:e.id}]}))}),z={...b,quality:C};if(!C.accepted)return yield*new fW({status:"quality_failed",context:{...z,issues:mc(C)}});let _=yield*o.SvU({try:()=>{let e,t,a,i,s,l,o,r,n,d,c,p,h,g,u,f,m;return i=Math.round(40-Math.min(...(a=function(e,t){let a=a=>{var i;let s,l,o,r,n,d,c,p,h,g,u,f,m,v,y,w,x,b,k,M,C,z,_,L;return l=function(e){let t=e.length,a=1/0,i=Math.ceil(e.length/2);for(let s=1;s<=e.length;s+=1){let l=Math.abs(cC(e.slice(0,s))-cC(e.slice(s)));(l<a-1e-6||1e-6>=Math.abs(l-a)&&Math.abs(s-i)<Math.abs(t-i))&&(t=s,a=l)}return t}(s=e.children.map(e=>(function e(t,a){let i={x0:0,x1:t.width,y0:-t.height/2,y1:t.height/2};if(0===t.children.length)return ck([i],new Map([[t.id,{x:0,y:0}]]),new Set);let s=t.depth>=a,l=t.depth<=1?14:8,o=t.children.map(t=>e(t,a)),r=48*!!s,n=s?[i]:[],d=[];for(let e of o){let t=e.boxes.map(e=>cb(e,r,0)),a=d.length>0?ib(n,t,l,8):s?Math.max(ib(n,t,12,8),i.y1+12-e.top):0;d.push(a),n.push(...t.map(e=>cb(e,0,a)))}let c=d[0],p=d.at(-1),h=new Set(o.flatMap(e=>[...e.folded]));s&&h.add(t.id);let g=s?0:t.width+44+Math.min(40,.08*(p-c)),u=s?0:(c+p)/2,f=new Map([[t.id,{x:0,y:0}]]);o.forEach((e,t)=>{for(let[a,i]of e.places)f.set(a,{x:i.x+r+g,y:i.y+d[t]-u})});let m=s?{x0:20,x1:r,y0:i.y1,y1:p}:{x0:t.width,x1:g,y0:c-u,y1:p-u};return ck([i,m,...(s?n.slice(1):n).map(e=>cb(e,g,-u))],f,h)})(e,a))),r=(o=s.map((e,t)=>t)).slice(0,l),n=o.slice(l).toReversed(),d=r.map(e=>s[e]),c=n.map(e=>s[e]),p=e.width/2,h=e.height/2,g=p+72,f=(u=e=>Math.max(p,...e.map(e=>g+e.outer)))(d)+u(c),m=Math.max(e.height,cC(d),cC(c)),y=Math.max(0,(v=(f+40)/1.8-40)-m),w=(f+40)/2.4-40,x=e=>e[0]?e[0].bottom-e[0].top:void 0,b=d.length<=1&&c.length<=1?function(e,t,a,i){let s=a=>{let s=[[-i/2,i/2],...void 0===e?[]:[[-a-e/2,-a+e/2]],...void 0===t?[]:[[a-t/2,a+t/2]]];return Math.max(...s.map(([,e])=>e))-Math.min(...s.map(([e])=>e))},l=0,o=(Math.max(e??0,t??0)+i)/2+28;if(s(o)<=a)return o;if(s(l)>=a)return 0;for(let e=0;e<24;e+=1){let e=(l+o)/2;s(e)<a?l=e:o=e}return o}(x(d),x(c),w,e.height):0,M=[],(k=(e,a,i)=>{var s;let l,o,r=t=>Math.max(0,t-cC(e))/(e.length-1),n=e.length>1?Math.max(Math.min(120,r(v)),r(w)):0,d=(l=[],o=i-cC(e,s=y>0?n:0)/2,e.forEach((t,a)=>{a>0&&(o+=cM(e[a-1],t)+s),l.push(o-t.top),o+=t.bottom-t.top}),l);return e.map((e,i)=>({block:e,side:t?-a:a,y:d[i],inner:g}))})(d,1,-b).forEach((e,t)=>M[r[t]]=e),k(c,-1,b).forEach((e,t)=>M[n[t]]=e),C=Math.max(...M.map(e=>Math.abs(e.y))),i=M.map(e=>{if(0===C)return e;let t=.6*(e.y/C)**2,a=e.y+e.block.bottom>-h-28&&e.y+e.block.top<h+28;return{...e,inner:a?Math.max(g-72*t,p+44):Math.max(g-t*g,44)}}),_=[z={topic:e,parent:void 0,branch:-1,side:1,folded:!1,x:-e.width/2,y:-e.height/2}],L=(e,t,a,i)=>{let s=a.block.places.get(e.id),l=a.inner+s.x,o={topic:e,parent:t,branch:i,side:a.side,folded:-1!==t.branch&&a.block.folded.has(t.topic.id),x:1===a.side?l:-l-e.width,y:a.y+s.y-e.height/2};for(let t of(_.push(o),e.children))L(t,o,a,i)},e.children.forEach((e,t)=>L(e,z,i[t],t)),_},i=a(1/0);for(let t=function e(t){return Math.max(t.depth,...t.children.map(e))}(e)-1;t>=1&&!(cz(i)<=2.4+.01);t-=1){let e=a(t);cz(e)<cz(i)&&(i=e)}return i}(t=function(e){let t=new Map;for(let a of e.edges){let e=t.get(a.source)??[];e.push({id:a.target,index:a.metadata.siblingIndex}),t.set(a.source,e)}let a=new Map(e.nodes.map(e=>[e.id,e])),i=(e,s)=>{let l=a.get(e),{fontSize:o,textWidth:r,padX:n,padY:d}=cx(s),c=function(e,t,a){let i=e=>e.split("\n").length,s=aT(e,t,a);if(1===i(s))return s;let l=a,o=t;for(;o-l>1;){let t=Math.floor((l+o)/2);i(aT(e,t,a))<=i(s)?o=t:l=t}return aT(e,o,a)}(l.label,r,o),p=Math.ceil(Math.max(aE(c,o),aO(c,o,r))),h=Math.ceil(c.split("\n").length*o*1.35),g=0===s?function(e,t){let a=Math.ceil((e+36)*Math.SQRT2),i=Math.ceil((t+20)*Math.SQRT2);for(;a8({shape:"ellipse",width:a,height:i}).width<e+18;)a+=1;for(;a8({shape:"ellipse",width:a,height:i}).height<t+10;)i+=1;return{width:a,height:i}}(p,h):{width:p+2*n,height:h+2*d};return{id:e,depth:s,text:c,fontSize:o,...g,children:(t.get(e)??[]).toSorted((e,t)=>e.index-t.index).map(e=>i(e.id,s+1))}};return i(e.nodes.find(e=>"root"===e.kind).id,0)}(e=eV(M)),"RL"===e.layout.direction)).map(e=>e.x))),s=Math.round(40-Math.min(...a.map(e=>e.y))),l=e.style.accentColor,o=e.style.backgroundColor,r=e=>-1===e.branch?l:n0[e.branch%n0.length],n=e=>-1===e.branch?{}:{groupIds:[`branch:${t.children[e.branch].id}`]},d=a.map(e=>{var t;let a,{topic:l}=e,d=[.18,.16,.06][l.depth];return{type:"node",id:`node:${l.id}`,nodeId:l.id,kind:0===l.depth?"root":"topic",shape:0===l.depth?"ellipse":"rectangle",x:Math.round(e.x)+i,y:Math.round(e.y)+s,width:l.width,height:l.height,label:l.text,strokeColor:r(e),strokeWidth:cx(l.depth).strokeWidth,...void 0===d?{}:{fillColor:(t=r(e),a=(e,t)=>Number.parseInt(e.slice(t,t+2),16),`#${[1,3,5].map(e=>Math.round(a(o,e)+(a(t,e)-a(o,e))*d).toString(16).padStart(2,"0")).join("")}`),fillStyle:"solid"},...n(e)}}),c=a.map((e,t)=>({type:"text",id:`label:${e.topic.id}`,containerId:d[t].id,x:d[t].x+e.topic.width/2,y:d[t].y+e.topic.height/2,text:e.topic.text,fontSize:e.topic.fontSize,maxWidth:Math.max(1,e.topic.width-24),...n(e)})),p=new Map(d.map(e=>[e.nodeId,e])),h=function(e,t){let a=e.width/2,i=e.height/2,s=new Map;for(let l of[1,-1]){let o=t.filter(e=>e.side===l).map(t=>{let s=cB(t.shape,l),o=Math.atan2((s.y-e.y-i)/i,l*(s.x-e.x-a)/a);return{id:t.shape.nodeId,angle:o}}).toSorted((e,t)=>e.angle-t.angle),r=o[0]?.angle??0,n=o.at(-1)?.angle??0;o.forEach((e,t)=>{let a=1===o.length?e.angle:r+(n-r)*t/(o.length-1);s.set(e.id,(e.angle+a)/2)})}return s}(d[0],a.flatMap((e,t)=>1===e.topic.depth?[{shape:d[t],side:e.side}]:[])),g=new Map(e.edges.map(e=>[e.target,e.id])),u=a.flatMap((e,t)=>{if(!e.parent)return[];let{topic:a}=e,i=g.get(a.id),s=function(e,t,a,i){let s=a.side,l=cB(e,s);if(void 0!==i){let e=t.width/2,a=t.height/2,o={x:t.x+e+s*e*Math.cos(i),y:t.y+a+a*Math.sin(i)};return cL([o,{x:o.x+.4*(l.x-o.x),y:o.y+.4*(l.y-o.y)},{x:l.x-.5*s*Math.abs(l.x-o.x),y:l.y},l])}if(a.folded){let e={x:1===s?t.x+20:t.x+t.width-20,y:t.y+t.height};return cL([e,{x:e.x,y:e.y+.5*(l.y-e.y)},{x:l.x-.5*s*Math.abs(l.x-e.x),y:l.y},l])}let o={x:1===s?t.x+t.width:t.x,y:t.y+t.height/2},r=.5*Math.abs(l.x-o.x);return cL([o,{x:o.x+s*r,y:o.y},{x:l.x-s*r,y:l.y},l])}(d[t],p.get(e.parent.topic.id),e,h.get(a.id));return[{type:"arrow",id:`edge:${i}`,edgeId:i,sourceNodeId:e.parent.topic.id,targetNodeId:a.id,points:s,...s.length>2?{curved:!0}:{},endArrowhead:null,strokeColor:r(e),strokeWidth:1===a.depth?4:2,...-1===e.parent.branch?{}:n(e)}]}),f=Math.max(...d.map(e=>e.x+e.width)),m=Math.max(...d.map(e=>e.y+e.height)),{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:f+40,height:m+40,accentColor:l,backgroundColor:o,elements:[...u,...d,...c],layers:[],layouts:[],zOrder:[...u,...d,...c].map(e=>e.id)}},catch:e=>new fW({status:"render_failed",context:{...z,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:x.id},message:e instanceof Error?e.message:"Unable to render mindmap scene.",hint:"Simplify the hierarchy or retry with a smaller mindmap."})]}})}).pipe(o.fRP("codeMode.buildMindmap.render")),L={...z,partial:mU(_)},B=yield*m$({scene:_,formats:mp(v.options),inlineFormats:mh(v.options),...v.requestId?{requestId:v.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new fW({status:e.status,context:{..."export_failed"===e.status?L:{...z,partial:{diagramId:_.diagramId}},issues:e.issues}})));return{ok:!0,status:"accepted",buildId:w,...mO(v.requestId),normalizedSpec:x,quality:C,artifact:B,issues:[]}}),mG=o.fn("codeMode.buildSequenceDiagram.workflow")(function*(e){var t,a;let i,l=s.q$Z(lQ,{errors:"all",reportInput:!0})(e);if(!uR.oJ(l))return yield*new fJ({status:"invalid_input",context:{issues:mr(sl(l.failure))}});let r=yield*fz,n=l.success,d=yield*o.OH5(()=>r.createId("build")),c=(i=se((t=n.spec).title),{id:md(t.id)??(mn(i)||"sketchi-sequence"),title:i,participants:t.participants.map(e=>({id:se(e.id),label:se(e.label),...e.kind?{kind:se(e.kind)}:{},...e.icon?{icon:{slug:e.icon.slug}}:{}})),messages:t.messages.map((e,t)=>({id:md(e.id)??`message-${t+1}-${mn(e.source)}-${mn(e.target)}`,source:se(e.source),target:se(e.target),label:se(e.label),...e.type?{type:e.type}:{},...e.style?{style:e.style}:{}})),style:{...y}}),p=fc(c.participants,r.icons,{noun:"participant",path:"participants"},{fillNamedLogos:!0===r.fillNamedLogos}),h={...c,participants:p.nodes},g={buildId:d,...mO(n.requestId),normalizedSpec:h},u=eR(fV(h)).map(e=>me({code:fH[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:fq[e.code]??e.hint}));if(u.length>0)return yield*new fJ({status:"invalid_sequence",context:{...g,issues:u}});let f={accepted:10>=(a=n.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:h.participants.length,edgeCount:h.messages.length},checks:[]},m={...g,quality:f};if(!f.accepted)return yield*new fJ({status:"quality_failed",context:{...m,issues:mc(f)}});let v=yield*o.SvU({try:()=>(function(e){let t=eZ(e),a=new Map(t.participants.map(e=>[e.id,aT(e.label,156,14)])),i=Math.max(180,...[...a.values()].map(e=>Math.ceil(aE(e,14))+24)),s=i+140,l=t.participants.reduce((e,t)=>Math.max(e,Math.ceil(14*(a.get(t.id)??t.label).split("\n").length*1.35)+18+a9(t.icon?{slug:t.icon.slug,size:28}:void 0)),72),o=48+l,r=o+64,n=new Map(t.messages.flatMap(e=>{let t;return e.source===e.target?[[e.id,{width:aU(t=aT(e.label,160,13),13,160),height:Math.ceil(13*t.split("\n").length*1.35)}]]:[]})),d=e=>{let t=n.get(e);return t?Math.max(32,t.height):0},c=[],p=r;for(let e of t.messages)c.push(p),p+=88+d(e.id);let h=t.messages.at(-1),g=(h?(c.at(-1)??r)+d(h.id):r)-o+56,u=function(e){let t=new Map,a=[];e.messages.forEach((e,i)=>{if(e.source===e.target)return;if("return"!==e.type)return void t.set(e.target,[...t.get(e.target)??[],{caller:e.source,index:i,messageId:e.id}]);let s=t.get(e.source)??[],l=s.findLastIndex(t=>t.caller===e.target),o=s[l];o&&(t.set(e.source,s.filter((e,t)=>t!==l)),a.push({participantId:e.source,callMessageId:o.messageId,returnMessageId:e.id,startIndex:o.index,endIndex:i}))});let i=[];for(let e of a.toSorted((e,t)=>e.startIndex-t.startIndex)){let t=i.filter(t=>t.participantId===e.participantId&&t.endIndex>e.startIndex),a=new Set(t.map(e=>e.depth)),s=Math.max(0,...t.filter(t=>t.endIndex>e.endIndex).map(e=>e.depth+1));for(;a.has(s);)s+=1;i.push({...e,depth:s})}return i}(t),f=(e,t)=>Math.max(-1,...u.filter(a=>a.participantId===e&&a.startIndex<=t&&t<=a.endIndex).map(e=>e.depth)),m=t.participants.map(e=>Math.max(s,...t.messages.flatMap((t,a)=>{let i,s=n.get(t.id);if(!s||t.source!==e.id)return[];let l=f(e.id,a);return[((i="return"===t.type?l:l+1)<0?1:6*i+6)+32+10+s.width+6+24]}))),v=new Map,y=[],w=[],x=[],b=48+i/2;t.participants.forEach((e,r)=>{let n=b,d=n-i/2;b+=m[r]??s,v.set(e.id,n),y.push({type:"node",id:`node:${e.id}`,nodeId:e.id,...e.kind?{kind:e.kind}:{},...e.icon?{icon:{slug:e.icon.slug,size:28}}:{},shape:"rectangle",x:d,y:48,width:i,height:l,label:a.get(e.id)??e.label}),w.push({type:"text",id:`label:${e.id}`,containerId:`node:${e.id}`,x:n,y:48+l/2,text:a.get(e.id)??e.label,fontSize:14,maxWidth:i-24,...e.icon?{verticalAlign:"bottom"}:{}}),x.push({type:"node",id:`node:${eO(e.id)}`,nodeId:eO(e.id),rendererRole:"sequence-lifeline",shape:"rectangle",fillColor:t.style.backgroundColor,strokeColor:t.style.accentColor,x:n-1,y:o,width:2,height:g,label:`${e.label} lifeline`})});let k=e=>c[e]??r,M=new Map(t.participants.map(e=>[e.id,e.label])),C=(e,a,i,s,l)=>{let o=`${eO(e)}:activation:${a}`,r=v.get(e)??0;return{type:"node",id:`node:${o}`,nodeId:o,rendererRole:"sequence-activation",shape:"rectangle",fillColor:t.style.backgroundColor,strokeColor:t.style.accentColor,x:r-6+6*i,y:s,width:12,height:l-s,label:`${M.get(e)??e} active`}},z=u.map(e=>({activation:e,node:C(e.participantId,e.callMessageId,e.depth,k(e.startIndex)-12,k(e.endIndex)+12)})),_=new Map(t.messages.flatMap((e,t)=>{if(e.source!==e.target||"return"===e.type)return[];let a=f(e.source,t)+1,i=k(t)+d(e.id);return[[e.id,C(e.source,e.id,a,i-12,i+12)]]})),L=(e,t,a,i)=>{let s=v.get(e)??0,l=i>s,o=z.filter(({activation:a})=>a.participantId===e&&a.startIndex<=t&&t<=a.endIndex),r=o.find(({activation:e})=>e.callMessageId===a||e.returnMessageId===a)??o.reduce((e,t)=>!e||t.activation.depth>e.activation.depth?t:e,void 0);return r?{nodeId:r.node.nodeId,x:l?r.node.x+r.node.width:r.node.x}:{nodeId:eO(e),x:s+(l?1:-1)*2/2}},B=t.participants.map(e=>v.get(e.id)??0),S=[],A=t.messages.map((e,t)=>{let a,i,s,l,o;if(e.source===e.target){let a,i,s,l,o,r,c;return a=L(e.source,t,e.id,1/0),s=(i=_.get(e.id))?{nodeId:i.nodeId,x:i.x+i.width}:a,l=Math.max(a.x,s.x)+32,r=(o=k(t))+d(e.id),c=[`message:${e.id}`],S.push({type:"text",id:`arrow:${e.id}:label`,text:e.label,fontSize:13,x:l+10+(n.get(e.id)?.width??0)/2,y:(o+r)/2,maxWidth:160,groupIds:c}),{type:"arrow",id:`arrow:${e.id}`,edgeId:e.id,groupIds:c,sourceNodeId:a.nodeId,targetNodeId:s.nodeId,..."return"===e.type?{strokeColor:"#6b7280"}:{},..."dashed"===e.style||"return"===e.type?{strokeStyle:"dashed"}:{},points:[{x:a.x,y:o},{x:l,y:o},{x:l,y:r},{x:s.x,y:r}],label:e.label}}let r=v.get(e.source)??0,c=v.get(e.target)??0,p=L(e.source,t,e.id,c),h=L(e.target,t,e.id,r),g=k(t);return{type:"arrow",id:`arrow:${e.id}`,edgeId:e.id,sourceNodeId:p.nodeId,targetNodeId:h.nodeId,..."return"===e.type?{strokeColor:"#6b7280"}:{},..."dashed"===e.style||"return"===e.type?{strokeStyle:"dashed"}:{},points:[{x:p.x,y:g},...(a=(r+c)/2,i=Math.sign(c-r),s=B.findIndex(e=>100>Math.abs(e-a)&&Math.min(r,c)<e&&e<Math.max(r,c)),l=B[s],o=B[s-i],void 0===l||void 0===o?[]:[{x:(l+o)/2,y:g}]),{x:h.x,y:g}],label:e.label}}),P=Math.max(0,...A.flatMap(({edgeId:e,points:t})=>{let a=n.get(e);return a&&t[1]?[t[1].x+10+a.width]:[]})),V=[...z.map(({node:e})=>e),..._.values()],H=[...A,...S,...x,...V,...y,...w],q=[...x.map(e=>e.id),...V.map(e=>e.id),...y.map(e=>e.id),...w.map(e=>e.id),...A.map(e=>e.id),...S.map(e=>e.id)];return{kind:"canvas",version:1,diagramId:t.id,title:t.title,width:Math.max((B.at(-1)??48)+i/2+48,Math.ceil(P)+48),height:o+g+48,accentColor:t.style.accentColor,backgroundColor:t.style.backgroundColor,elements:H,layers:[],layouts:[],zOrder:q}})(fV(h)),catch:e=>new fJ({status:"render_failed",context:{...m,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render sequence diagram scene.",hint:"Repair the participant/message structure and retry."})]}})}).pipe(o.fRP("codeMode.buildSequenceDiagram.render")),w=yield*fp(v,r.icons),x=w.scene,b=ii(x);if(b.length>0)return yield*new fJ({status:"render_failed",context:{...m,issues:mm(b).map(e=>({...e,hint:"Reduce participant label lines, participants, or messages and retry buildSequenceDiagram."}))}});let k={...m,partial:mU(x)},M=yield*m$({scene:x,formats:mp(n.options),inlineFormats:mh(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new fJ({status:e.status,context:{..."export_failed"===e.status?k:m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:d,...mO(n.requestId),normalizedSpec:h,quality:f,artifact:M,issues:[...p.issues,...w.issues]}}),mR=o.fn("codeMode.buildStateMachine.workflow")(function*(e){var t,a;let i,l,r=s.q$Z(l3,{errors:"all",reportInput:!0})(e);if(!uR.oJ(r))return yield*new fK({status:"invalid_input",context:{issues:mr(sl(r.failure))}});let n=yield*fz,d=r.success,c=yield*o.OH5(()=>n.createId("build")),p=(i=se((t=d.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},{id:md(t.id)??(mn(i)||"sketchi-state-machine"),title:i,initial:se(t.initial),states:t.states.map(e=>{let t=se(e.id),a=e6({...e,id:t});return{id:t,...void 0!==a?{label:a}:{},...e.kind?{kind:e.kind}:{},...l("parent",e.parent),...void 0!==e.initial?{initial:se(e.initial)}:{}}}),transitions:t.transitions.map((e,t)=>({id:md(e.id)??`transition-${t+1}-${mn(e.source)}-${mn(e.target)}`,source:se(e.source),target:se(e.target),...l("event",e.event),...l("guard",e.guard),...l("action",e.action)})),...t.layout?{layout:{direction:t.layout.direction}}:{},style:{...y}}),h=p.states.flatMap((e,t)=>{let a=e7(e,p.states);return void 0===e.initial&&void 0!==a?[{code:"composite_initial_defaulted",severity:"warning",path:`states.[${t}].initial`,message:`Composite "${e.id}" has no initial; defaulted to its first listed regular substate "${a}".`,hint:`Set initial on "${e.id}" explicitly if "${a}" is not the intended entry.`}]:[]}).map(e=>me({...e,stage:"input",ref:{kind:"request",path:`spec.${e.path}`}})),g=e8(p),u={buildId:c,...mO(d.requestId),normalizedSpec:g},f=tt(fF(g)).map(e=>me({code:fI[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fK({status:"invalid_state_machine",context:{...u,issues:f}});let m={accepted:10>=(a=d.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.states.length,edgeCount:g.transitions.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new fK({status:"quality_failed",context:{...v,issues:mc(m)}});let w=yield*o.SvU({try:()=>(function(e){let t=t=>h3(function(e,t){let a=e9(e),i=(e,t,a,i)=>({id:e,label:t,kind:a,metadata:{},...i?{group:i}:{}}),s=(e,t,a,i)=>({id:e,source:t,target:a,metadata:{},...i?{label:i}:{}}),l=new Set(e.transitions.map(e=>e.id)),o=e=>{let t=e;for(let a=2;l.has(t);a+=1)t=`${e}~${a}`;return l.add(t),t},r=[i(h4,"","initial")],n=[s(o(h4),h4,e.initial)],d=new Map,c=new Map;for(let t of e.states){if("final"!==e5(t)||void 0!==e6(t))continue;let a=e.transitions.filter(e=>e.target===t.id),i=a.map((e,a)=>0===a?t.id:`${t.id}:${a+1}`);a.forEach((e,t)=>d.set(e.id,i[t])),c.set(t.id,i.length>0?i:[t.id])}for(let t of e.states){let l=t.parent;if(a.has(t.id)){let a=e7(t,e.states);void 0!==a&&(r.push(i(`${t.id}${h4}`,"","initial",t.id)),n.push(s(o(`${t.id}${h4}`),`${t.id}${h4}`,a)));continue}let d=e5(t),p=e6(t);if("final"===d&&void 0===p){for(let e of c.get(t.id))r.push(i(e,"","final",l));continue}if("final"===d){r.push(i(t.id,p,"state",l)),r.push(i(`${t.id}:end`,"","final",l)),n.push(s(o(`${t.id}:end`),t.id,`${t.id}:end`));continue}r.push(i(t.id,p??"",d,l))}for(let t of e.transitions){let e=function(e){let t=e.guard?te(e.guard,/^\s*\[|\]\s*$/gu):"",a=e.action?te(e.action,/^\s*\//u):"";return[e.event?.trim(),t&&`[${t}]`,a&&`/ ${a}`].filter(Boolean).join(" ")}(t);n.push(s(t.id,t.source,d.get(t.id)??t.target,e||void 0))}return{id:e.id,title:e.title,type:"flowchart",nodes:r,edges:n,groups:e.states.filter(e=>a.has(e.id)).map(e=>({id:e.id,label:e6(e)??""})),layout:{direction:t,edgeRouting:"orthogonal"},style:e.style,metadata:{}}}(e,t),{pairedReturns:!0});if(e.layout)return t(e.layout.direction);let a=["LR","TB"].map(e=>{let a,i=t(e);return{aspect:Math.max(i.width/i.height,i.height/i.width),cost:hG(a=i.elements.filter(e=>"arrow"===e.type))+iU(a.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:i.width,height:i.height})).length,scene:i}}),i=a.filter(e=>e.aspect<=2.2),[s]=i.length>0?i.toSorted((e,t)=>e.cost-t.cost):a.toSorted((e,t)=>e.aspect-t.aspect);return s.scene})(fF(g)),catch:e=>new fK({status:"render_failed",context:{...v,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render state machine scene.",hint:"Repair the state and transition structure and retry."})]}})}).pipe(o.fRP("codeMode.buildStateMachine.render")),x=ii(w);if(x.length>0)return yield*new fK({status:"render_failed",context:{...v,issues:mm(x).map(e=>({...e,hint:"Shorten state labels or split the machine and retry buildStateMachine."}))}});let b={...v,partial:mU(w)},k=yield*m$({scene:w,formats:mp(d.options),inlineFormats:mh(d.options),...d.requestId?{requestId:d.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new fK({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:c,...mO(d.requestId),normalizedSpec:g,quality:m,artifact:k,issues:h}}),mD=o.fn("codeMode.buildErDiagram.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(l6,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:function(e){if(!tF(e))return e;let t=Array.isArray(e.entities)?e.entities.map(e=>tF(e)&&Array.isArray(e.fields)?{...e,fields:e.fields.map(e=>"string"==typeof e?tV(e):e)}:e):e.entities,a=Array.isArray(e.relationships)?e.relationships.map(e=>{if(!tF(e))return e;let{source:t,target:a,cardinality:i,...s}=e,l=function(e){if("string"!=typeof e)return;let t=e.trim().toLowerCase().split(/\s*(?:-to-|\sto\s|:)\s*/u);if(2!==t.length)return;let a=e=>tq(/^m$|^n$/u.test(e)?"many":e);return[a(t[0]),a(t[1])]}(i),o={...s,from:s.from??t,to:s.to??a,fromCardinality:tq(s.fromCardinality??l?.[0]),toCardinality:tq(s.toCardinality??l?.[1])};for(let e of["from","to","fromCardinality","toCardinality"])void 0===o[e]&&delete o[e];return void 0!==i&&void 0===l&&(o.cardinality=i),o}):e.relationships;return{...e,...void 0===t?{}:{entities:t},...void 0===a?{}:{relationships:a}}}(e.spec)}:e);if(!uR.oJ(d))return yield*new fQ({status:"invalid_input",context:{issues:mr(sl(d.failure))}});let c=yield*fz,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.relationships.flatMap(e=>md(e.id)??[])),{id:md(t.id)??(mn(i)||"sketchi-er-diagram"),title:i,entities:t.entities.map(e=>({id:se(e.id),...l("name",e.name),fields:e.fields.map(e=>{let t="string"==typeof e?tV(se(e)):e;return{name:se(t.name),...l("type",t.type),...r("pk",t.pk),...r("fk",t.fk),...r("unique",t.unique),...r("nullable",t.nullable)}})})),relationships:t.relationships.map((e,t)=>({id:md(e.id)??(e=>{let t=e+1;for(;n.has(`relationship-${t}`);)t+=1;return n.add(`relationship-${t}`),`relationship-${t}`})(t),from:se(e.from),to:se(e.to),fromCardinality:e.fromCardinality,toCardinality:e.toCardinality,...l("label",e.label)})),style:{...y}}),u={buildId:h,...mO(p.requestId),normalizedSpec:g},f=tB(fE(g)).map(e=>me({code:"missing_relationship_entity"===e.code&&e.path.endsWith(".from")?"missing_edge_source":fO[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new fQ({status:"invalid_er_diagram",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.entities.length,edgeCount:g.relationships.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new fQ({status:"quality_failed",context:{...v,issues:mc(m)}});let w=yield*o.SvU({try:()=>{var e;let t,a,i,s,l,o,r,n,d,c,p;return t=new Map((e=fE(g)).entities.map(e=>[e.id,function(e){let t=tz(e),a=e.fields.map(e=>[e.pk&&"PK",e.fk&&"FK",e.unique&&!e.pk&&"UK"].filter(e=>"string"==typeof e).join(" ")),i=e.fields.map(e=>`${e.name.trim()}${e.nullable&&!e.type?"?":""}`),s=e.fields.map(e=>e.type?`${e.type}${e.nullable?"?":""}`:""),[l,o,r]=[a,i,s].map(gc),n=14+l+8*(l>0)+o+(r>0?16+r:0)+14,d=Math.ceil(aE(t,16))+28;return{entity:e,name:t,width:Math.max(160,n,d),height:e.fields.length>0?52+28*e.fields.length:40,keys:a,names:i,types:s,keyWidth:l,nameWidth:o,typeWidth:r,rows:new Map(e.fields.map((e,t)=>[tL(e.name),46+(t+.5)*28]))}}(e)])),a=e.relationships.map(e=>(function(e,t){let[a,i]=[t_(e.from),t_(e.to)],s=(e,a)=>{let i=t.get(e.entity);if(void 0!==e.field)return i.rows.get(tL(e.field));let s=i.entity.fields.filter(e=>e.pk);return void 0!==a.field&&1===s.length?i.rows.get(tL(s[0].name)):20},l={from:{entity:a.entity,y:s(a,i),cardinality:e.fromCardinality},to:{entity:i.entity,y:s(i,a),cardinality:e.toCardinality}},o=e=>{let a=void 0===e.field?void 0:t.get(e.entity).entity.fields.find(t=>tL(t.name)===tL(e.field));return void 0!==a&&!0===a.pk&&!0!==a.fk};return(gd(e.fromCardinality)!==gd(e.toCardinality)?gd(e.fromCardinality):!(o(i)&&!o(a)))?{relationship:e,parent:l.from,child:l.to}:{relationship:e,parent:l.to,child:l.from}})(e,t)),s=new Map((i=function(e,t,a){let i,s=a.map(e=>{let t;return{id:e.relationship.id,parent:e.parent.entity,child:e.child.entity,parentY:e.parent.y,childY:e.child.y,labelWidth:(t=e.relationship.label)?Math.min(160,Math.ceil(aE(t,13))):0}}),l=[...t.values()].map(e=>({id:e.entity.id,width:e.width,height:e.height})),o=e.entities.length>24?gx.slice(0,2):gx,r=new Set;for(let n of o){let o=function(e,t,a={}){let i,s,l,o,r,n=(i=new Map(e.map((e,t)=>[e.id,t])),{tables:e,index:i,links:t,pairs:t.flatMap(e=>e.parent===e.child?[]:[{parent:i.get(e.parent),child:i.get(e.child),link:e}])}),d=(s=function(e,t=1.6){let a=e.tables.reduce((e,t)=>e+(t.width+132)*(t.height+56),0),i=Math.max(...e.tables.map(e=>e.height)),s=e.tables.reduce((e,t)=>e+t.height+56,0)/e.tables.length,l=e.tables.reduce((e,t)=>e+t.width+150,0)/e.tables.length,o=Math.max(i,Math.sqrt(a/t));return{height:o,unit:s,width:1.25*t*o,column:l}}(n,a.aspect),l=a.sameColumn??2.5,o="hub"===a.start?function(e){let t=h8(e),a=e.tables.map(()=>void 0),i=new Map;for(let s of e.tables.map((e,t)=>t).sort((e,a)=>t[a].size-t[e].size||e-a)){if(void 0!==a[s])continue;a[s]=0,i.set(s,0);let l={[-1]:0,1:0},o=[s];for(;o.length>0;){let s=o.shift();for(let r of[...t[s]].filter(e=>void 0===a[e]).sort((e,a)=>t[a].size-t[e].size||e-a)){let t=i.get(s);0===t&&(t=l[1]<=l[-1]?1:-1,l[t]=l[t]+e.tables[r].height),a[r]=a[s]+t,i.set(r,t),o.push(r)}}}return a.map(e=>e??0)}(n):function(e){let t=e.tables.length,a=Array.from({length:t},()=>[]);for(let{parent:t,child:i}of e.pairs)a[t].push(i);let i=Array.from({length:t}).fill(0),s=Array.from({length:t},()=>[]),l=e=>{for(let t of(i[e]=1,a[e]))1!==i[t]&&(s[e].push(t),0===i[t]&&l(t));i[e]=2};for(let e=0;e<t;e+=1)0===i[e]&&l(e);let o=Array.from({length:t},()=>[]);for(let[e,t]of s.entries())for(let a of t)o[a].push(e);let r=Array.from({length:t},()=>0),n=[],d=o.map(e=>e.length),c=d.flatMap((e,t)=>0===e?[t]:[]);for(;c.length>0;){let e=c.shift();for(let t of(n.push(e),s[e]))r[t]=Math.max(r[t],r[e]+1),d[t]-=1,0===d[t]&&c.push(t)}for(let e of[...n].reverse())0===o[e].length&&s[e].length>0&&(r[e]=Math.min(...s[e].map(e=>r[e]))-1);return r}(n),h9(n,o,40,e=>h6(n,e,s,l)),r=new Map,h9(n,o,8,e=>{let t=h7(e),a=t.join(","),i=r.get(a);return void 0===i&&(i=gr(ge(n,t),!1).crossings,r.set(a,i)),h6(n,e,s,l)+ +i}),h7(o)),c=Math.max(...d)+1,p=ge(n,d),h=gr(p),g=function(e,t){let a=[...t.top],i=go(e);for(let s=0;s<12;s+=1){let l=[...t.columns.keys()];for(let o of(s%2==1&&l.reverse(),l)){let s=t.columns[o];if(0===s.length)continue;let l=[],r=[];for(let t of s){let s=e.corridor[t];if(s){l.push(a[s.parent]+s.y-2),r.push(4);continue}let n=0,d=0;for(let{other:s,ownY:l,otherY:r}of i[t])e.column[s]!==o&&(n+=a[s]+r-l,d+=1);l.push(d>0?n/d:a[t]),r.push(d>0?d:.05)}let n=ga(e,s),d=function(e,t){let a=[];for(let[i,s]of e.entries()){let e=t[i];for(a.push({count:1,weight:e,sum:s*e});a.length>1;){let e=a.at(-1),t=a.at(-2);if(t.sum/t.weight<=e.sum/e.weight)break;a.pop(),t.count+=e.count,t.weight+=e.weight,t.sum+=e.sum}}return a.flatMap(e=>Array(e.count).fill(e.sum/e.weight))}(l.map((e,t)=>e-n[t]),r);for(let[e,t]of s.entries())a[t]=d[e]+n[e]}}return function(e,t,a){let i=go(e),s=t=>t.reduce((t,s)=>t+i[s].filter(({other:t,ownY:i,otherY:l})=>e.column[t]!==e.column[s]&&.5>Math.abs(a[t]+l-a[s]-i)).length,0),l=(t,i)=>a[i]-a[t]-e.height[t]-gt(e,t,i)<.5;for(let o=0;o<2;o+=1)for(let o of t.columns)for(let[t,r]of o.entries())if(!e.corridor[r])for(let n of i[r].flatMap(({other:t,ownY:i,otherY:s})=>{let l=a[t]+s-a[r]-i;return e.column[t]!==e.column[r]&&Math.abs(l)>=.5&&40>=Math.abs(l)?[l]:[]})){let i=[r],d=n>0?1:-1;for(let s=t;;s+=d){let t=o[s+d];if(void 0===t)break;if(!(d>0?l(o[s],t):l(t,o[s]))){(d>0?a[t]-a[o[s]]-e.height[o[s]]-gt(e,o[s],t):a[o[s]]-a[t]-e.height[t]-gt(e,t,o[s]))<Math.abs(n)-.5&&(i.length=0);break}i.push(t)}if(0===i.length)continue;let c=s(i);for(let e of i)a[e]=a[e]+n;if(s(i)>c)break;for(let e of i)a[e]=a[e]-n}return a}(e,t,a.map(e=>Math.round(e)))}(p,h),u=function(e,t,a,i){let s=new Map,l=[],o=[];for(let a of e.links){let[r,n]=[e.index.get(a.parent),e.index.get(a.child)],[d,c]=[t[r],t[n]];if(d===c){o.push(a);continue}let[p,h]=d<c?["right","left"]:["left","right"];s.set(a.id,{parent:p,child:h}),l.push({column:d,side:p,y:i[r]+a.parentY}),l.push({column:c,side:h,y:i[n]+a.childY})}for(let r of o){let[o,n]=[e.index.get(r.parent),e.index.get(r.child)],d=t[o],[c,p]=[i[o]+r.parentY,i[n]+r.childY],[h,g]=[Math.min(c,p),Math.max(c,p)],u=e=>l.filter(t=>t.column===d&&t.side===e&&t.y>h&&t.y<g).length,f=0===d&&a>1?"left":"right",[m,v]=[u("left"),u("right")],y=m===v?f:m<v?"left":"right";s.set(r.id,{parent:y,child:y}),l.push({column:d,side:y,y:c},{column:d,side:y,y:p})}return s}(n,d,c,g),f=function(e,t,a,i){let s=Array.from({length:Math.max(0,i-1)},()=>0),l=Array.from({length:Math.max(0,i-1)},()=>0),o=new Map,r=(e,a,i)=>{let s="right"===a?t[e]:t[e]-1,l=`${e}:${a}:${i}`,r=o.get(l)??{gap:s,low:"right"===a,count:0};r.count+=1,o.set(l,r)};for(let i of e.links){let[o,n]=[e.index.get(i.parent),e.index.get(i.child)],[d,c]=[t[o],t[n]],p=a.get(i.id);r(o,p.parent,i.parentY),r(n,p.child,i.childY);let h="right"===p.parent?d:d-1;if(i.labelWidth>0&&h>=0&&h<s.length&&(l[h]=Math.max(l[h],i.labelWidth+16)),d===c){h>=0&&h<s.length&&(s[h]+=1);continue}for(let e=Math.min(d,c);e<Math.max(d,c);e+=1)s[e]+=1}let n=s.map(()=>({low:0,high:0})),d=new Map;for(let[e,{gap:t,low:a,count:i}]of o){let s=(i-1)*32,l=e.split(":").slice(0,2).join(":");d.set(l,Math.max(d.get(l)??0,s));let o=n[t];o&&(a?o.low=Math.max(o.low,s):o.high=Math.max(o.high,s))}for(let i of e.links){let[s,l]=[e.index.get(i.parent),e.index.get(i.child)];if(t[s]!==t[l])continue;let o=a.get(i.id).parent,r=n["right"===o?t[s]:t[s]-1];if(!r)continue;let c=Math.max(d.get(`${s}:${o}`)??0,d.get(`${l}:${o}`)??0)+32+Math.abs(e.tables[s].width-e.tables[l].width)/2;"right"===o?r.low=Math.max(r.low,c):r.high=Math.max(r.high,c)}return s.map((e,t)=>Math.max(132,96+n[t].low+n[t].high+l[t]+20*(e+1)))}(n,d,u,c),m=Array.from({length:c},(t,a)=>Math.max(0,...h.columns[a].flatMap(t=>t<e.length?[e[t].width]:[]))),v=88*!!t.some(e=>{let t=d[n.index.get(e.parent)];return t===d[n.index.get(e.child)]&&(0===t||t===c-1)}),y=[],w=v;for(let[e,t]of m.entries())y.push(w),w+=t+(f[e]??0);let x=Math.min(...g.slice(0,e.length));return{boxes:new Map(e.map((e,t)=>{let a=d[t];return[e.id,{x:y[a]+Math.round((m[a]-e.width)/2),y:g[t]-x,width:e.width,height:e.height}]})),sides:u}}(l,s,n),d=JSON.stringify([...o.boxes,...o.sides]);if(r.has(d))continue;r.add(d);let c=gw(e,t,a,o,gy(a,o)),p=gb(c),h=i?p:p-.75;if((!i||h<i.score)&&(i={cost:p,score:h,scene:c,placement:o}),0===p)break}let{placement:n}=i,d=gy(a,n);if(function(e,t){let a=!1;for(let i of gv(e)){if(i.length<=2)continue;let[s,l]=[i[0].link[i[0].end].entity,i[0].side],o=t.get(s),r="left"===l?"right":"left",n=e.filter(e=>e.link[e.end].entity===s&&e.side===r&&e.row===i[0].row).length,d=a=>{let i=gp(gm(e,a),t);return Math.max(o.y-48-i,i-(o.y+o.height+48))},c=i.filter(t=>gm(e,t).side!==t.side&&d(t)>0).sort((e,t)=>d(t)-d(e)),p=i.length;for(let e of c){if(p-n<2)break;e.side=r,p-=1,n+=1,a=!0}}return a}(d,n.boxes)){let s=gw(e,t,a,n,d);if(gb(s)<i.cost)return s}return i.scene}(e,t,a)).elements.flatMap(e=>"node"===e.type?[[e.nodeId,e]]:[])),l=e.entities.map(a=>(function(e,t,a){let{id:i}=e.entity,s=[`table:${i}`],l={type:"node",id:`node:${i}`,nodeId:i,kind:"entity",rendererRole:"er-table",shape:"rectangle",x:t.x,y:t.y,width:e.width,height:e.height,label:e.name,fillColor:a.style.backgroundColor,fillStyle:"solid",groupIds:s},o={type:"node",id:`node:${i}:header`,nodeId:`${i}:header`,kind:"entity-name",rendererRole:"er-table",shape:"rectangle",x:t.x,y:t.y,width:e.width,height:40,label:e.name,fillColor:"#efe6ec",fillStyle:"solid",groupIds:s},r=[{type:"text",id:`label:${i}:header`,containerId:o.id,x:t.x+e.width/2,y:t.y+20,text:e.name,fontSize:16,maxWidth:e.width-28,groupIds:s}];if(e.entity.fields.length>0){let a=t.y+40+6,l=28*e.entity.fields.length,o=(e,t,o,r,n)=>({type:"text",id:`text:${i}:${e}`,x:o+r/2,y:a+l/2,text:t.join("\n"),fontSize:14,lineHeight:2,maxWidth:r,textAlign:"left",...n?{textColor:n}:{},groupIds:s}),n=t.x+14;e.keyWidth>0&&(r.push(o("keys",e.keys,n,e.keyWidth,"#6a4e5c")),n+=e.keyWidth+8),r.push(o("fields",e.names,n,e.nameWidth)),e.typeWidth>0&&r.push(o("types",e.types,n+e.nameWidth+16,e.typeWidth,"#6f6656"))}return{nodes:[l,o],texts:r}})(t.get(a.id),s.get(a.id),e)),o=new Map(a.map(e=>[e.relationship.id,e])),r=[],n=e=>r.some(t=>14>Math.hypot(t.x-e.x,t.y-e.y)),d=i.elements.flatMap(t=>{if("arrow"!==t.type)return[];let a=o.get(t.edgeId);for(let[s,l]of[["start",a.parent],["end",a.child]]){var i;if("zero-or-one"!==(i=l.cardinality)&&"zero-or-many"!==i)continue;let[a,o]="start"===s?[t.points[0],t.points[1]]:[t.points.at(-1),t.points.at(-2)],d=Math.hypot(o.x-a.x,o.y-a.y),c=gM(t,s,l.entity,r.length,e);for(let a=46;n(c)&&a+12<=d;a+=14)c=gM(t,s,l.entity,r.length,e,a);r.push(c)}return[{...t,startArrowhead:gn[a.parent.cardinality],endArrowhead:gn[a.child.cardinality]}]}),c=i.elements.filter(e=>"text"===e.type&&void 0===e.containerId),p=[...l.flatMap(e=>[...e.nodes,...e.texts]),...d,...r,...c],{...i,elements:p,zOrder:p.map(e=>e.id)}},catch:e=>new fQ({status:"render_failed",context:{...v,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render ER scene.",hint:"Repair the entities and relationships and retry."})]}})}).pipe(o.fRP("codeMode.buildErDiagram.render")),x=ii(w);if(x.length>0)return yield*new fQ({status:"render_failed",context:{...v,issues:mm(x).map(e=>({...e,hint:"Shorten entity or field names, or split the schema, and retry buildErDiagram."}))}});let b={...v,partial:mU(w)},k=yield*m$({scene:w,formats:mp(p.options),inlineFormats:mh(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new fQ({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mO(p.requestId),normalizedSpec:g,quality:m,artifact:k,issues:[]}}),mZ=o.fn("codeMode.buildClassDiagram.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(l8,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:ad(e.spec)}:e);if(!uR.oJ(d))return yield*new f1({status:"invalid_input",context:{issues:mr(sl(d.failure))}});let c=yield*fz,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.relationships.flatMap(e=>md(e.id)??[])),{id:md(t.id)??(mn(i)||"sketchi-class-diagram"),title:i,classes:t.classes.map(e=>({id:se(e.id),...l("name",e.name),...e.kind?{kind:e.kind}:{},...l("stereotype",e.stereotype),attributes:e.attributes.map(e=>{let t="string"==typeof e?as(se(e)):e;return{name:se(t.name),...l("type",t.type),...t.visibility?{visibility:t.visibility}:{},...r("static",t.static)}}),methods:e.methods.map(e=>{let t="string"==typeof e?al(se(e)):e;return{name:se(t.name),params:t.params.map(e=>{let t="string"==typeof e?aa(se(e)):e;return{name:se(t.name),...l("type",t.type)}}),...l("returns",t.returns),...t.visibility?{visibility:t.visibility}:{},...r("static",t.static),...r("abstract",t.abstract)}})})),relationships:t.relationships.map((e,t)=>({id:md(e.id)??(e=>{let t=e+1;for(;n.has(`relationship-${t}`);)t+=1;return n.add(`relationship-${t}`),`relationship-${t}`})(t),kind:e.kind,from:se(e.from),to:se(e.to),...l("fromMultiplicity",e.fromMultiplicity),...l("toMultiplicity",e.toMultiplicity),...l("fromRole",e.fromRole),...l("toRole",e.toRole),...void 0===e.navigable?{}:{navigable:e.navigable},...l("label",e.label)})),style:{...y}}),u={buildId:h,...mO(p.requestId),normalizedSpec:g},f=t7(fU(g)).map(e=>me({code:"missing_relationship_class"===e.code&&e.path.endsWith(".from")?"missing_edge_source":fX[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new f1({status:"invalid_class_diagram",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.classes.length,edgeCount:g.relationships.length},checks:[]},v={...u,quality:m};if(!m.accepted)return yield*new f1({status:"quality_failed",context:{...v,issues:mc(m)}});let w=yield*o.SvU({try:()=>(function(e){let t=new Map(e.classes.map(e=>[e.id,function(e){let t,a=tQ(e).trim(),i=(t=[t0[t1(e)],e.stereotype?.trim()].filter(e=>"string"==typeof e&&e.length>0)).length>0?`\xab${t.join(", ")}\xbb`:void 0,s=e.attributes.map(t3),l=e.methods.map(t5),o=Math.max(aE(a,16),i?aE(i,16):0,...[...s,...l].map(e=>aE(e,14))),r=(i?2:1)*22+20,[n,d]=[gq(s),gq(l)];return{node:e,name:a,heading:i?`${i}
|
|
238
|
+
${a}`:a,width:Math.max(140,Math.ceil(o)+24),height:r+n+d,band:r,attributesHeight:n,methodsHeight:d,attributes:s,methods:l}}(e)])),a=function(e,t){let a,i=e.relationships.map(e=>({id:e.id,from:e.from.trim(),to:e.to.trim(),generalization:tG(e.kind),whole:"composition"===e.kind||"aggregation"===e.kind,fromLabel:Math.max(0,...gF(e,"from").map(gI)),toLabel:Math.max(0,...gF(e,"to").map(gI)),label:e.label?gI(e.label.trim()):0})),s=e.classes.map(e=>{let a=t.get(e.id);return{id:e.id,width:a.width,height:a.height,dividers:[a.band,a.band+a.attributesHeight]}}),l=e.classes.length>20?gO.slice(0,2):gO,o=new Set,r=({scene:e})=>(function(e){let[t,a]=[e.width,e.height].map(e=>e-96+40);return Math.max(t/a,a/t)})(e)>2.4,n=({scene:e})=>Math.max(e.width,e.height),d=(e,t)=>r(t)&&!r(e)&&n(e)<=n(t)&&Object.keys(e.counts).every(a=>e.counts[a]<=t.counts[a]);for(let n of[...l,gU]){if(n===gU&&(l!==gO||!r(a)))break;let c=function e(t,a,i={},s=0){let l=function(e,t){let a=new Map(e.map((e,t)=>[e.id,t])),i=[],s=[];for(let e of t){let[t,l]=[a.get(e.from),a.get(e.to)];t!==l&&(e.generalization?i.push({parent:l,child:t}):s.push({a:t,b:l,whole:!0===e.whole}))}return{boxes:e,index:a,links:t,generalizations:i,others:s}}(t,a),o=function(e,t){let a,i=function(e,t=1.6){let a=e.boxes.reduce((e,t)=>e+(t.width+64)*(t.height+130),0),i=Math.max(...e.boxes.map(e=>e.width)),s=Math.sqrt(a/t),l=e.boxes.length;return{width:Math.max(i,1.2*t*s),height:s,column:e.boxes.reduce((e,t)=>e+t.width+64,0)/l,unit:e.boxes.reduce((e,t)=>e+t.height+130,0)/l}}(e,t.aspect),s=t.between??.3,l=t.wholeBelow??0,o=function(e){let t=e.boxes.length,a=Array.from({length:t},()=>[]),i=Array.from({length:t},()=>[]);for(let{parent:t,child:s}of e.generalizations)a[s].push(t),i[t].push(s);let s=Array.from({length:t},()=>0),l=a.map(e=>e.length),o=l.flatMap((e,t)=>0===e?[t]:[]),r=[];for(;o.length>0;){let e=o.shift();for(let t of(r.push(e),i[e]))s[t]=Math.max(s[t],s[e]+1),l[t]-=1,0===l[t]&&o.push(t)}for(let e of r.toReversed())i[e].length>0&&(s[e]=Math.min(...i[e].map(e=>s[e]))-1);let n=new Set(e.generalizations.flatMap(({parent:e,child:t})=>[e,t]));0===n.size&&e.others.length>0&&n.add(e.others[0].a);for(let a=0;a<t&&n.size<t;a+=1)for(let{a:t,b:a}of e.others){if(n.has(t)===n.has(a))continue;let[e,i]=n.has(t)?[t,a]:[a,t];s[i]=s[e],n.add(i)}let d=Math.min(...s);return s.map(e=>e-d)}(e),r=e.boxes.map(()=>new Set);for(let{parent:t,child:a}of e.generalizations)r[t].add(a),r[a].add(t);for(let{a:t,b:a}of e.others)r[t].add(a),r[a].add(t);let n=e.boxes.map((e,t)=>t).sort((e,t)=>r[t].size-r[e].size||e-t),d=gC(e,o,i,s,l),c=e.boxes.map(()=>[]);for(let{parent:t,child:a}of e.generalizations)c[t].push(a);let p=t.hierarchies?n.flatMap(e=>{if(0===c[e].length)return[];let t=new Set([e]);for(let e of t)for(let a of c[e])t.add(a);return[[...t]]}):[];for(let t=0;t<40;t+=1){let t=!1;for(let a of p)for(let r of[-1,1]){for(let e of a)o[e]+=r;let n=gC(e,o,i,s,l);if(n<d-1e-9)d=n,t=!0;else for(let e of a)o[e]-=r}for(let a of n){let n=o[a],c=new Set([n-1,n+1,n+2]);for(let e of r[a])for(let t of[-1,0,1])c.add(o[e]+t);if(0===r[a].size)for(let e of o)c.add(e);c.delete(n);let p=n;for(let t of[...c].sort((e,t)=>e-t)){o[a]=t;let r=gC(e,o,i,s,l);r<d-1e-9&&([p,d]=[t,r])}o[a]=p,p!==n&&(t=!0)}if(!t)break}return a=new Map([...new Set(o)].sort((e,t)=>e-t).map((e,t)=>[e,t])),o.map(e=>a.get(e))}(l,i),r=function(e,t){let a=[...t],i=e.boxes.map(e=>e.width),s=e.boxes.map(()=>!1),l=[],o=[],r=[];for(let n of e.links){let[d,c]=[e.index.get(n.from),e.index.get(n.to)];if(d===c){r.push([d]);continue}let[p,h]=[t[d],t[c]];if(p===h){o.push({a:d,b:c}),r.push([d,c]);continue}let g=Math.sign(h-p),u=[d];for(let e=p+g;e!==h;e+=g){let t=a.length;a.push(e),i.push(4),s.push(!0),u.push(t)}u.push(c);let f=n.generalization?3:1;for(let[e,t]of u.slice(1).entries()){let i=u[e];l.push(a[i]<a[t]?{upper:i,lower:t,weight:f}:{upper:t,lower:i,weight:f})}r.push(u)}return{row:a,width:i,corridor:s,segments:l,flats:o,chains:r}}(l,o),n=new Map,d=(e,t,a)=>{let i=e<t?`${e}:${t}`:`${t}:${e}`;n.set(i,Math.max(n.get(i)??0,a))};for(let[e,t]of a.entries()){let a=r.chains[e],[i,s]=[a[0],a.at(-1)];i!==s&&r.row[i]===r.row[s]&&d(i,s,Math.max(50,t.fromLabel+16)+(t.label>0?t.label+16:0)+Math.max(50,t.toLabel+16))}let c=function(e,t){let a=Array.from({length:Math.max(...e.row)+1},()=>[]);for(let[t,i]of e.row.entries())a[i].push(t);let i=e.row.map(()=>[]);for(let{upper:t,lower:a}of e.segments)i[t].push({other:a,weight:1}),i[a].push({other:t,weight:1});for(let{a:t,b:a}of e.flats)i[t].push({other:a,weight:.5}),i[a].push({other:t,weight:.5});let s=gL(e,t,a),l={rows:a.map(e=>[...e]),crossings:gB(e,a,s)};for(let o=0;o<8&&l.crossings>0;o+=1){let r=[...a.keys()];for(let l of(o%2==1&&r.reverse(),r)){let o=new Map;for(let e of a[l]){let t=0,a=0;for(let{other:l,weight:o}of i[e])t+=o*s[l],a+=o;o.set(e,a>0?t/a:s[e])}a[l]=[...a[l]].sort((e,t)=>o.get(e)-o.get(t)||s[e]-s[t]),s=gL(e,t,a)}let n=gB(e,a,s);n<l.crossings&&(l={rows:a.map(e=>[...e]),crossings:n})}let o=a=(a=l.rows).map(t=>{let a=t=>e.segments.find(e=>e.lower===t)?.upper,i=new Map;for(let e of t){let t=a(e);void 0!==t&&i.set(t,[...i.get(t)??[],e])}let s=t;for(let t of i.values()){let a=t.filter(t=>e.corridor[t]),i=t.filter(t=>!e.corridor[t]);if(0===a.length||i.length<2)continue;let l=[];for(let[e,t]of i.entries()){l.push(t);let s=Math.round(e*a.length/(i.length-1)),o=Math.round((e+1)*a.length/(i.length-1));e<i.length-1&&l.push(...a.slice(s,o))}let o=s.flatMap((e,a)=>t.includes(e)?[a]:[]),r=[...s];for(let[e,t]of o.entries())r[t]=l[e];s=r}return s});a=l.rows,gB(e,o,gL(e,t,o))<=gB(e,a,gL(e,t,a))&&(a=o);let r=gB(e,a,gL(e,t,a));for(let i=r>0,s=0;i&&s<40;s+=1)for(let s of(i=!1,a))for(let l=0;l+1<s.length;l+=1){[s[l],s[l+1]]=[s[l+1],s[l]];let o=gB(e,a,gL(e,t,a));o<r?(r=o,i=!0):[s[l],s[l+1]]=[s[l+1],s[l]]}return a}(r,n);for(let[e,t]of a.entries()){let a=r.chains[e],[i,s]=[a[0],a.at(-1)];if(i===s||r.row[i]!==r.row[s])continue;let l=c[r.row[i]],[o,n]=[l.indexOf(i),l.indexOf(s)],p=l.slice(Math.min(o,n)+1,Math.max(o,n));if(0===p.length||p.some(e=>!r.corridor[e]))continue;let[h,g]=o<n?[i,s]:[s,i],[u,f]=o<n?[t.fromLabel,t.toLabel]:[t.toLabel,t.fromLabel];d(h,p[0],Math.max(50,u+16)),d(p.at(-1),g,Math.max(50,f+16))}let p=e=>Math.max(40,Math.max(e.fromLabel,e.toLabel)+24);for(let[e,t]of a.entries()){if(t.from!==t.to)continue;let a=r.chains[e][0],i=c[r.row[a]],s=i.filter(e=>!r.corridor[e]),l=s.indexOf(a),o=i.indexOf(a),n=p(t)+t.label+56+64;for(let e of[s[l-1],s[l+1],i[o-1],i[o+1]])void 0!==e&&d(a,e,n)}let h=function(e,t,a){let i=gL(e,t,a),s=e.row.map(()=>[]);for(let{upper:t,lower:a,weight:i}of e.segments)s[t].push({other:a,weight:i}),s[a].push({other:t,weight:i});for(let l=0;l<12;l+=1){let o=[...a.keys()];for(let r of(l%2==1&&o.reverse(),o)){let l=a[r];if(0===l.length)continue;let o=[],n=[];for(let t of l){let a=s[t];if(0===a.length){o.push(i[t]),n.push(.05);continue}let l=a.reduce((e,{weight:t})=>e+t,0);o.push(a.reduce((e,{other:t,weight:a})=>e+a*i[t],0)/l),n.push(e.corridor[t]?4:l)}let d=g_(e,t,l),c=gS(o.map((t,a)=>t-e.width[l[a]]/2-d[a]),n);for(let[t,a]of l.entries())i[a]=c[t]+d[t]+e.width[a]/2}}for(let l of a){let a=g_(e,t,l),o=t=>i[l[t]]-e.width[l[t]]/2-a[t],r=l.findIndex(e=>s[e].length>0),n=l.findLastIndex(e=>s[e].length>0);if(!(r<0))for(let[t,s]of l.entries())(t<r||t>n)&&(i[s]=o(t<r?r:n)+a[t]+e.width[s]/2)}return i.map((t,a)=>{let i=e.width[a]/2;return Math.round(t-i)+i})}(r,n,c),g=e=>e<t.length?t[e]:{id:"",width:4,height:0},u=Math.ceil(24/iP({width:Math.max(...t.map((e,t)=>h[t]+e.width/2))-Math.min(...t.map((e,t)=>h[t]-e.width/2)),height:c.reduce((e,a)=>e+Math.max(0,...a.filter(e=>e<t.length).map(e=>t[e].height))+100+28,0)}))+4,f={port:Math.max(32,u),track:Math.max(28,u),lane:Math.max(20,u)},m=function(e,t,a,i){let s=new Map;for(let e of a)for(let[t,a]of e.entries())s.set(a,t);let l=[],o=new Map,r=(e,t)=>o.set(`${e}:${t}`,(o.get(`${e}:${t}`)??0)+1),n=[],d=(e,t,a,i,s)=>({link:e,end:t,box:a,side:s,at:0,toward:i,loop:!1,slot:0}),c=(e,a,s,l)=>t.segments.filter(({upper:o,lower:r})=>{let n=l?r:o;return t.row[n]===e&&i[n]>a&&i[n]<s}).length;for(let[o]of e.links.entries()){let e=t.chains[o],[p,h]=[e[0],e.at(-1)];if(p===h){n.push([d(o,"source",p,p,"right"),d(o,"target",h,h,"right")]);continue}if(t.row[p]===t.row[h]){let[e,n]=[s.get(p),s.get(h)],g=t.row[p],u=a[g].slice(Math.min(e,n)+1,Math.max(e,n)).some(e=>!t.corridor[e]),f=e<n?["right","left"]:["left","right"];if(u){let[e,t]=[i[p],i[h]].sort((e,t)=>e-t),[a,s]=[c(g,e,t,!0),c(g,e,t,!1)];f=a<s||a===s&&0===g?["top","top"]:["bottom","bottom"]}l.push(d(o,"source",p,h,f[0]),d(o,"target",h,p,f[1])),r(p,f[0]),r(h,f[1]);continue}let g=t.row[p]<t.row[h];l.push(d(o,"source",p,e[1],g?"bottom":"top"),d(o,"target",h,e.at(-2),g?"top":"bottom"))}let p=new Map,h=a.length-1;for(let e of n){let a=e[0].box,i=e=>l.some(t=>t.box===a&&t.side===e),s=["right","left","top","bottom"].filter(e=>!i(e)&&("right"===e||"left"===e||("top"===e?0===t.row[a]:t.row[a]===h)))[0]??((o.get(`${a}:right`)??0)<=(o.get(`${a}:left`)??0)?"right":"left"),r=p.get(`${a}:${s}`)??0;for(let t of(p.set(`${a}:${s}`,r+1),e))t.side=s,t.loop=!0,t.slot=r;l.push(...e)}return l}(l,r,c,h);if(s<2){let l=t.map((e,t)=>{let a=e=>36+Math.max(0,m.filter(a=>a.box===t&&a.side===e).length-1)*f.port,i=Math.ceil(Math.max(e.width,a("top"),a("bottom"))),s=Math.ceil(Math.max(e.height,a("left"),a("right")));return i===e.width&&s===e.height?e:{...e,width:i,height:s}});if(l.some((e,a)=>e!==t[a]))return e(l,a,i,s+1)}let v=()=>(function(e,t,a,i,s,l){let{port:o,lane:r}=l,n=new Map;for(let t of e){let e=`${t.box}:${t.side}`;n.set(e,[...n.get(e)??[],t])}let d=e=>t[e]-a(e).width/2,c=e=>gP(e.side)?a(e.box).width:a(e.box).height,p=e=>{let{end:t,name:a}=i(e);if(!gP(e.side))return 26*(t>0);let s=Math.max(t,e.loop||0===a?0:Math.ceil(a/2)+14);return s>0?s+14:0},h=(e,t)=>{let[a,i]=[p(e),p(t)];return Math.max(o,a>0&&i>0?a+i:Math.max(a,i))},g=e=>{let t=e.slice(1).map((t,a)=>h(e[a],t)),a=c(e[0])-36,i=t.length*o,s=t.reduce((e,t)=>e+t-o,0),l=i+s<=a?t:i<=a?t.map(e=>o+(e-o)*(a-i)/s):t.map(()=>a/t.length),r=[0];for(let e of l)r.push(r.at(-1)+e);return r},u=(t,i)=>{if(gP(t.side))return!1;let s=gA(e,t);return[...a(t.box).dividers??[],...s.loop?[]:a(s.box).dividers??[]].some(e=>8>Math.abs(e-i))},f=t=>{let i=gA(e,t),s=t.loop?a(t.box).height:Math.min(a(t.box).height,a(i.box).height),l=Math.round(s/2);for(let e=0;e<s/2-18;e+=2)for(let a of[l+e,l-e])if(!u(t,a))return a;return l},m=s=>{let l=gA(e,s);if(gP(s.side)&&s.loop){let e=Math.min(2*Math.max(i(s).end,i(l).end)+72+2*s.slot*o,a(s.box).width-36);return a(s.box).width/2+("source"===s.end?-1:1)*e/2}if(gP(s.side))return(l.box!==s.toward||s.loop?t[s.toward]:d(l.box)+l.at)-d(s.box);if(s.loop){let e=Math.min(64+2*s.slot*o,a(s.box).height-36);return f(s)+("source"===s.end?-1:1)*e/2}return l.at};for(let t of e)t.at=gP(t.side)?a(t.box).width/2:f(t);for(let e=0;e<8;e+=1){let e=!1;for(let t of n.values()){let a=c(t[0]),i=t.map(m),s=t.map((e,t)=>t).sort((e,a)=>i[e]-i[a]||t[e].link-t[a].link||("source"===t[e].end?-1:1)),l=g(s.map(e=>t[e])),o=gS(s.map((e,t)=>i[e]-l[t]),s.map(()=>1)),r=l.at(-1)??0;s.forEach((i,s)=>{let n=Math.round(Math.min(Math.max(o[s],18),a-18-r)+l[s]);n!==t[i].at&&(e=!0),t[i].at=n})}if(!e)break}let v=(e,t)=>{let a=n.get(`${e.box}:${e.side}`);return!(t<18||t>c(e)-18||u(e,t))&&a.every(a=>a===e||Math.sign(a.at-e.at)===Math.sign(a.at-t)&&Math.abs(a.at-t)>=Math.min(h(a,e),Math.abs(a.at-e.at))-.5)};for(let t of e){if("source"!==t.end||t.loop||!gP(t.side))continue;let a=gA(e,t);if(a.box!==t.toward||!gP(a.side)||a.side===t.side)continue;let[i,s]=[d(t.box)+t.at,d(a.box)+a.at];!(.5>Math.abs(i-s)||Math.abs(i-s)>72)&&(v(a,Math.round(i-d(a.box)))?a.at=Math.round(i-d(a.box)):v(t,Math.round(s-d(t.box)))&&(t.at=Math.round(s-d(t.box))))}let y=e=>d(e.box)+e.at,w=t=>e.filter(e=>e.link!==t.link&&!e.loop&&e.side===("top"===t.side?"bottom":"top")&&s(e.box)===s(t.box)+("top"===t.side?-1:1)),x=(e,t)=>w(e).every(a=>Math.abs(y(a)-(d(e.box)+t))>=r),b=e=>{for(let t=4;t<=3*o;t+=4){let a=[e.at+t,e.at-t].find(t=>v(e,t)&&x(e,t));if(void 0!==a)return e.at=a,!0}let t=n.get(`${e.box}:${e.side}`),a=c(e);for(let i=4;i<=3*o;i+=4)for(let s of[i,-i])if(t.every(e=>e.at+s>=18&&e.at+s<=a-18&&(x(e,e.at+s)||!x(e,e.at)))&&x(e,e.at+s)){for(let e of t)e.at+=s;return!0}return!1};for(let t of e){if(t.loop||"top"!==t.side)continue;let e=w(t).filter(e=>Math.abs(y(e)-y(t))<r);if(e.length>0&&!b(t))for(let t of e)b(t)}for(let t of e){if(gP(t.side)||!u(t,t.at))continue;let a=gA(e,t),i=!t.loop&&a.at===t.at;for(let e=2;e<=16;e+=2){let s=[t.at+e,t.at-e].find(e=>v(t,e)&&(!i||v(a,e)));if(void 0!==s){t.at=s,i&&(a.at=s);break}}}})(m,h,g,e=>{let t=a[e.link];return{end:"source"===e.end?t.fromLabel:t.toLabel,name:t.label}},e=>r.row[e],f);v();let y=e=>h[e]-g(e).width/2,w=e=>y(e.box)+e.at,x=a.map((e,t)=>["source","target"].map(e=>m.find(a=>a.link===t&&a.end===e)));!function(e,t,a,i,s,l,o){let r=new Map;for(let e of a)for(let[t,a]of e.entries())r.set(a,t);let n=(s,l)=>{let o=a[e.row[s]],n=r.get(s),[d,c]=[o[n-1],o[n+1]],p=e.width[s]/2;return(void 0===d||l-p>=i[d]+e.width[d]/2+gz(e,t,d,s))&&(void 0===c||l+p<=i[c]-e.width[c]/2-gz(e,t,s,c))};for(let[t,a]of e.chains.entries()){let e=a.slice(1,-1);if(0===e.length)continue;let l=s(t).find(t=>e.every(e=>n(e,t)));if(void 0!==l)for(let t of e)i[t]=l}for(let[t,a]of e.chains.entries())for(let s of a.slice(1,-1)){let a=e.row[s],r=e=>l.some(i=>i.link!==t&&(i.row===a-1||i.row===a+1)&&Math.abs(i.x-e)<o.lane);if(r(i[s]))for(let e=4;e<=3*o.port;e+=4){let t=[i[s]+e,i[s]-e].find(e=>n(s,e)&&!r(e));if(void 0!==t){i[s]=t;break}}}}(r,n,c,h,e=>{let[t,a]=x[e];return r.row[t.box]<r.row[a.box]?[w(t),w(a)]:[w(a),w(t)]},m.flatMap(e=>gP(e.side)&&!e.loop?[{link:e.link,row:r.row[e.box],x:w(e)}]:[]),f),r.corridor.some(Boolean)&&v();let b=c.length,k=c.map(e=>Math.max(0,...e.filter(e=>e<t.length).map(e=>t[e].height))),M=new Map,C=(e,t)=>M.set(e,[...M.get(e)??[],t]);for(let[e]of a.entries()){let[t,a]=x[e],i=r.chains[e];if(t.loop||"left"===t.side||"right"===t.side)continue;if(t.side===a.side){let[e,s]=[w(t),w(a)],l=r.row[i[0]],o="top"===t.side;C(o?l-1:l,{ends:[t,a],upper:o?[]:[e,s],lower:o?[e,s]:[],min:Math.min(e,s),max:Math.max(e,s),track:0});continue}let s=r.row[i[0]]<r.row[i.at(-1)]?i:i.toReversed(),[l,o]=s[0]===i[0]?[t,a]:[a,t];for(let[e,t]of s.slice(1).entries()){let a=s[e],i=a===s[0]?w(l):h[a],n=t===s.at(-1)?w(o):h[t];.5>Math.abs(i-n)||C(r.row[a],{ends:[...a===s[0]?[l]:[],...t===s.at(-1)?[o]:[]],upper:[i],lower:[n],min:Math.min(i,n),max:Math.max(i,n),track:0})}}let z=new Map([...M].map(([e,t])=>[e,function(e,t){let a=[...e],i=[];for(;a.length>0;){let e=0,t=1/0;for(let[i,s]of a.entries()){let l=a.reduce((e,t)=>t===s?e:e+gV(s,t),0);l<t&&([e,t]=[i,l])}i.push(a.splice(e,1)[0])}let s=(e,a)=>e.min<a.max+t&&a.min<e.max+t,l=0;for(let[e,t]of i.entries())t.track=Math.max(0,...i.slice(0,e).filter(e=>s(e,t)||gV(t,e)>=1e3).map(e=>e.track+1)),l=Math.max(l,t.track+1);return l}(t,f.track)])),_=new Set;for(let[e,t]of a.entries()){let[a,i]=x[e];if(0===t.label||a.loop||"left"===a.side||"right"===a.side)continue;let[s,l]=[r.row[a.box],r.row[i.box]];if(a.side===i.side)_.add("top"===a.side?s-1:s);else for(let e=Math.min(s,l);e<Math.max(s,l);e+=1)_.add(e)}let L=e=>54*!!_.has(e),B=e=>100+L(e)+Math.max(0,(z.get(e)??0)-1)*f.track,S=[],A=z.has(-1)?B(-1):0;for(let e=0;e<b;e+=1)S.push(A),A+=k[e]+B(e);let P=(e,t)=>(e<0?0:S[e]+k[e])+50+L(e)+t*f.track,V=Math.min(...t.map((e,t)=>y(t))),H=new Map(t.map((e,t)=>[e.id,{x:Math.round(y(t)-V),y:S[r.row[t]],width:e.width,height:e.height}])),q=new Map;for(let[e,a]of M)for(let i of a)for(let a of i.ends){let s=H.get(t[a.box].id),l="bottom"===a.side?s.y+s.height:s.y;q.set(a,Math.abs(P(e,i.track)-l))}for(let e of m){if(!e.loop)continue;let t=m.filter(t=>t.loop&&t.box===e.box&&t.side===e.side&&t.slot<e.slot).reduce((e,t)=>Math.max(e,p(a[t.link])),0);q.set(e,Math.max(p(a[e.link]),t+f.track))}return{boxes:H,anchors:new Map(m.map(e=>{let i=t[e.box],s=gP(e.side)?i.width:i.height,l=q.get(e);return[`${a[e.link].id}:${e.end}`,{side:e.side,offset:e.at-s/2,...void 0===l?{}:{run:l}}]})),rows:new Map(t.map((e,t)=>[e.id,r.row[t]]))}}(s,i,n),p=JSON.stringify([...c.boxes,...c.anchors]);if(o.has(p))continue;o.add(p);let h=function(e,t,a){let i=function(e,t){let a=new Map;for(let i of e.relationships)for(let e of["from","to"]){let s=t.anchors.get(`${i.id}:${"from"===e?"source":"target"}`),l=t.boxes.get(i[e].trim()),o=gF(i,e);if(!s||!l||0===o.length||"left"!==s.side&&"right"!==s.side)continue;let r=Math.max(...o.map(gI))+8,n=l.y+l.height/2+s.offset,d="right"===s.side?l.x+l.width+2:l.x-2-r;for(let[t,s]of[["above",n-10+4-18],["below",n+10-4]])a.set(`${gE}${i.id}:${e}:${t}`,{x:d,y:s,width:r,height:18})}return a}(e,a);return h3({id:e.id,title:e.title,type:"flowchart",nodes:[...e.classes.map(e=>({id:e.id,label:t.get(e.id).name,kind:"class",metadata:{}})),...[...i.keys()].map(e=>({id:e,label:"·",kind:"class",metadata:{}}))],edges:e.relationships.map(e=>({id:e.id,source:e.from.trim(),target:e.to.trim(),metadata:{}})).map((e,t)=>({edge:e,index:t,span:Math.abs((a.rows.get(e.source)??0)-(a.rows.get(e.target)??0))})).sort((e,t)=>Math.min(e.span,2)-Math.min(t.span,2)||e.index-t.index).map(({edge:e})=>e),layout:{direction:"TB",edgeRouting:"orthogonal"},style:e.style,metadata:{}},{placement:new Map([...a.boxes,...i]),anchors:a.anchors,endRun:50})}(e,t,c),g=function(e){let t=e.elements.filter(e=>"arrow"===e.type);return{crossings:hG(t),findings:iU(t.map(e=>({id:e.id,points:e.points,sourceId:e.sourceNodeId,targetId:e.targetNodeId})),iP({width:e.width,height:e.height})).length,detours:t.reduce((e,t)=>e+function(e){let[t,a]=[e.points[0],e.points.at(-1)],i=0;for(let[t,a]of e.points.slice(1).entries())i+=Math.abs(a.x-e.points[t].x)+Math.abs(a.y-e.points[t].y);return Math.max(0,i/(Math.abs(a.x-t.x)+Math.abs(a.y-t.y)+100+200)-1)}(t),0),hugging:function(e){let t=e.flatMap(e=>im(e.points).map(t=>({arrow:e.id,segment:t}))),a=0;for(let[e,i]of t.entries())for(let s of t.slice(e+1))s.arrow!==i.arrow&&s.segment.orientation===i.segment.orientation&&10>Math.abs(s.segment.staticCoordinate-i.segment.staticCoordinate)&&Math.min(s.segment.max,i.segment.max)>Math.max(s.segment.min,i.segment.min)&&(a+=1);return a}(t)}}(h),u={cost:function(e,t){let a=Math.max(e.width/e.height,e.height/e.width);return t.crossings+t.findings+(a>2.5?4*(a-2.5):0)+t.detours+3*t.hugging}(h,g),counts:g,scene:h};if((!a||n!==gU&&u.cost<a.cost-.75||d(u,a))&&(a=u),0===u.cost&&!r(a))break}return a.scene}(e,t),i=new Map(a.elements.flatMap(e=>"node"!==e.type||e.nodeId.startsWith(gE)?[]:[[e.nodeId,e]])),s=e.classes.map(a=>(function(e,t,a){let{id:i}=e.node,s=[`class:${i}`],[l,o]=[t.width,t.height],r=(a,o,r,n,d)=>({type:"node",id:`node:${i}${a}`,nodeId:`${i}${a}`,kind:o,rendererRole:"class-box",shape:"rectangle",x:t.x,y:r,width:l,height:n,label:e.name,...d?{fillColor:d,fillStyle:"solid"}:{},groupIds:s}),n=r("","class",t.y,o,a.style.backgroundColor),d=r(":name","class-name",t.y,e.band,"#efe6ec"),c=t.y+e.band+e.attributesHeight,p=r(":methods","class-methods",c,t.y+o-c),h=[{type:"text",id:`label:${i}:name`,containerId:d.id,x:t.x+l/2,y:t.y+e.band/2,text:e.heading,fontSize:16,lineHeight:1.375,maxWidth:l-24,...e.heading!==e.name?{textColor:"#6a4e5c"}:{},groupIds:s}],g=(e,a,l)=>{if(0===a.length)return;let o=22*a.length,r=Math.ceil(Math.max(...a.map(e=>aE(e,14))));h.push({type:"text",id:`text:${i}:${e}`,x:t.x+12+r/2,y:l+6+o/2,text:a.join("\n"),fontSize:14,lineHeight:22/14,maxWidth:r,textAlign:"left",groupIds:s})};return g("attributes",e.attributes,t.y+e.band),g("methods",e.methods,c),{nodes:[n,d,p],texts:h}})(t.get(a.id),i.get(a.id),e)),l=new Map(e.relationships.map(e=>[e.id,e])),o=a.elements.flatMap(e=>{var t;let a;if("arrow"!==e.type)return[];let i=(a=gH[(t=l.get(e.edgeId)).kind],t.navigable&&tR(t.kind)?{...a,to:"arrow"}:a);return[{...e,startArrowhead:i.from,endArrowhead:i.to,..."dashed"===i.stroke?{strokeStyle:"dashed"}:{}}]}),r=function(e,t,a){let i=a.map(e=>({left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})),s=t.flatMap(e=>im(e.points)),l=[],o=e=>i.filter(t=>gX(e,t,3)).length+s.filter(t=>"horizontal"===t.orientation?t.staticCoordinate>e.top-3&&t.staticCoordinate<e.bottom+3&&t.max>e.left-3&&t.min<e.right+3:t.staticCoordinate>e.left-3&&t.staticCoordinate<e.right+3&&t.max>e.top-3&&t.min<e.bottom+3).length+l.filter(t=>gX(e,t,3)).length,r=e=>0===o(e),n=[],d=(e,t,a,i)=>{l.push(a),n.push({type:"text",id:e,x:(a.left+a.right)/2,y:(a.top+a.bottom)/2,text:t,fontSize:13,maxWidth:a.right-a.left,...i?{groupIds:[i]}:{}})},c=new Map(t.map(e=>[e.edgeId,e])),p=(e,t,a,i,s)=>e.slice(0,-1).flatMap((l,o)=>[...function*(e,t,a,i,s,l){let o=Math.hypot(t.x-e.x,t.y-e.y);if(o<1)return;let[r,n]=[(t.x-e.x)/o,(t.y-e.y)/o],d=Math.abs(r)>.5?a:i;for(let t=l;t+d<=Math.max(o,l+d);t+=6){for(let l of s)if(Math.abs(r)>.5){let s=r>0?e.x+t:e.x-t-a,o=l<0?e.y-10+4-i:e.y+10-4;yield{left:s,top:o,right:s+a,bottom:o+i}}else{let s=n>0?e.y+t:e.y-t-i,o=l>0?e.x+10:e.x-10-a;yield{left:o,top:s,right:o+a,bottom:s+i}}if(t+d>=o)break}}(l,e[o+1],t,a,i,0===o?s:6)]),h=(...e)=>p(...e).find(r);for(let t of e.relationships){let e=c.get(t.id);if(e)for(let a of["from","to"]){let i=gF(t,a);if(0===i.length)continue;let s="from"===a?e.points:e.points.toReversed(),o="from"===a?e.sourceNodeId:e.targetNodeId,r=[t["from"===a?"fromMultiplicity":"toMultiplicity"]&&"multiplicity",t["from"===a?"fromRole":"toRole"]&&"role"].filter(e=>"string"==typeof e),n=2===i.length?[[1,-1],[-1,1]]:[[1],[-1]],c=e=>{let t=[];for(let[a,o]of i.entries()){let i=h(s,gI(o),18,e(a),4);if(!i)break;t.push(i),l.push(i)}return l.splice(l.length-t.length,t.length),t.length===i.length?t:void 0};for(let[e,l]of(n.map(e=>c(t=>[e[t]])).find(Boolean)??c(()=>[1,-1])??i.map(e=>p(s,gI(e),18,[1,-1],4)[0])).entries())d(`relationship:${t.id}:${a}:${r[e]}`,i[e],l,`class:${o}`)}}for(let t of e.relationships){let e=c.get(t.id);if(!e||!t.label)continue;let a=e.points.slice(0,-1).map((t,a)=>[t,e.points[a+1]]).reduce((e,t)=>Math.hypot(t[1].x-t[0].x,t[1].y-t[0].y)>Math.hypot(e[1].x-e[0].x,e[1].y-e[0].y)?t:e),i={x:(a[0].x+a[1].x)/2,y:(a[0].y+a[1].y)/2},s=[1,2,3,4,5].map(e=>(function(e,t){let a=e.split(/\s+/u);if(t<=1||a.length<t)return e;let i=(e,t)=>aE(a.slice(e,t).join(" "),13),s=new Map,l=(e,t)=>{if(1===t)return{widest:i(e,a.length),breaks:[]};let o=`${e}:${t}`,r=s.get(o);if(r)return r;let n={widest:1/0,breaks:[]};for(let s=e+1;s<=a.length-t+1;s+=1){let a=l(s,t-1),o=Math.max(i(e,s),a.widest);o<n.widest&&(n={widest:o,breaks:[s,...a.breaks]})}return s.set(o,n),n},o=[0,...l(0,t).breaks,a.length];return o.slice(1).map((e,t)=>a.slice(o[t],e).join(" ")).join("\n")})(t.label.trim(),e)),l=t=>{let[s,l]=[gI(t),18*t.split("\n").length];return[...p([i,a[1]],s,l,[-1,1],0),...p(e.points,s,l,[-1,1],50),...p(e.points,s,l,[-1,1],0)]},n=s.map(e=>({text:e,rect:l(e).find(r)})).find(e=>void 0!==e.rect);if(n){d(`relationship:${t.id}:name`,n.text,n.rect);continue}let h=s.flatMap(e=>l(e).map(t=>({text:e,rect:t,hits:o(t)}))).reduce((e,t)=>t.hits<e.hits?t:e);d(`relationship:${t.id}:name`,h.text,h.rect)}return n}(e,o,[...i.values()]),{elements:n,width:d,height:c}=function(e){let t=e.flatMap(e=>{if("arrow"===e.type||"line"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??0)/2,a=e.text.split("\n").length*e.fontSize*(e.lineHeight??1.35)/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return"frame"===e.type||"node"===e.type?[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]:[]}),[a,i]=[Math.min(...t.map(e=>e.x)),Math.min(...t.map(e=>e.y))],[s,l]=[Math.max(0,48-a),Math.max(0,48-i)].map(Math.ceil);return{elements:e.map(e=>0===s&&0===l?e:"arrow"===e.type?{...e,points:e.points.map(e=>({x:e.x+s,y:e.y+l}))}:"line"===e.type?e:{...e,x:e.x+s,y:e.y+l}),width:Math.max(...t.map(e=>e.x))+s+48,height:Math.max(...t.map(e=>e.y))+l+48}}([...s.flatMap(e=>[...e.nodes,...e.texts]),...o,...r]);return{...a,width:d,height:c,elements:n,zOrder:n.map(e=>e.id)}})(fU(g)),catch:e=>new f1({status:"render_failed",context:{...v,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render class diagram scene.",hint:"Repair the classes and relationships and retry."})]}})}).pipe(o.fRP("codeMode.buildClassDiagram.render")),x=ii(w);if(x.length>0)return yield*new f1({status:"render_failed",context:{...v,issues:mm(x).map(e=>({...e,hint:"Shorten class or member names, or split the model, and retry buildClassDiagram."}))}});let b={...v,partial:mU(w)},k=yield*m$({scene:w,formats:mp(p.options),inlineFormats:mh(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new f1({status:e.status,context:{..."export_failed"===e.status?b:v,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mO(p.requestId),normalizedSpec:g,quality:m,artifact:k,issues:[]}}),mj=o.fn("codeMode.buildOrgChart.workflow")(function*(e){var t,a;let i,l,r,n,d=s.q$Z(oe,{errors:"all",reportInput:!0})("object"==typeof e&&null!==e&&"spec"in e?{...e,spec:aL(e.spec)}:e);if(!uR.oJ(d))return yield*new f0({status:"invalid_input",context:{issues:mr(sl(d.failure))}});let c=yield*fz,p=d.success,h=yield*o.OH5(()=>c.createId("build")),g=(i=se((t=p.spec).title),l=(e,t)=>t&&se(t)?{[e]:se(t)}:{},r=(e,t)=>t?{[e]:!0}:{},n=new Set(t.dottedLines.flatMap(e=>md(e.id)??[])),{id:md(t.id)??(mn(i)||"sketchi-org-chart"),title:i,people:t.people.map(e=>({id:se(e.id),name:se(e.name),...l("title",e.title),...l("department",e.department),...l("manager",e.manager),...r("assistant",e.assistant),...r("avatar",e.avatar)})),dottedLines:t.dottedLines.map((e,t)=>({id:md(e.id)??(e=>{let t=e+1;for(;n.has(`dotted-line-${t}`);)t+=1;return n.add(`dotted-line-${t}`),`dotted-line-${t}`})(t),report:se(e.report),manager:se(e.manager),...l("label",e.label)})),...r("groupByDepartment",t.groupByDepartment),...r("forest",t.forest),style:{...y}}),u={buildId:h,...mO(p.requestId),normalizedSpec:g},f=av(fT(g)).map(e=>me({code:f$[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(f.length>0)return yield*new f0({status:"invalid_org_chart",context:{...u,issues:f}});let m={accepted:10>=(a=p.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:g.people.length,edgeCount:g.people.filter(e=>void 0!==e.manager).length+g.dottedLines.length},checks:[]},w={...u,quality:m};if(!m.accepted)return yield*new f0({status:"quality_failed",context:{...w,issues:mc(m)}});let x=yield*o.SvU({try:()=>{let e,t,a,i,s,l,o,r,n,d,c,p,h,u,f,m,y,w,x,b,k,M,C;return t=function(e){let t=new Map;if(!0!==e.groupByDepartment)return t;let a=am(e),i=new Map(e.people.map(e=>[e.id,e])),s=(e,l)=>{let o=void 0===e.manager?void 0:i.get(e.manager),r=!l&&void 0!==o&&void 0!==e.department&&e.department!==o.department&&(a.get(e.id)?.length??0)>0;for(let i of(r&&t.set(e.id,e.department),a.get(e.id)??[]))s(i,l||r)};for(let t of af(e))s(t,!1);return t}(e=aw(fT(g))),a=function(e,t){let a=am(e),i=[...new Set(e.people.flatMap(e=>e.department??[]))],s=new Map(e.people.map(e=>[e.id,e])),l=af(e).flatMap(e=>(a.get(e.id)??[]).filter(e=>!0!==e.assistant)),o=e=>n0[e%n0.length],r=t=>{if(i.length>0)return void 0===t.department?e.style.accentColor:o(i.indexOf(t.department));let a=(t=>{let a=t;for(let t=0;t<=e.people.length;t+=1){let e=void 0===a.manager?void 0:s.get(a.manager);if(!e)break;if(void 0===e.manager)return a;a=e}})(t),r=void 0===a?-1:l.indexOf(a);return r<0?e.style.accentColor:o(r)},n=new Map,d=new Map,c=(e,i,s)=>{let l=t.get(e.id)??s;for(let t of(d.set(e.id,i),void 0!==l&&n.set(e.id,l),a.get(e.id)??[]))c(t,i+1,l)};for(let t of af(e))c(t,0,void 0);let p=new Map;for(let t of e.people){let e=void 0===t.manager?void 0:s.get(t.manager),a=void 0!==t.department&&e?.department!==t.department&&n.get(t.id)!==t.department?t.department:void 0,i=[t.title,a].filter(e=>void 0!==e).map(e=>us(e.trim(),208,13));p.set(t.id,{person:t,depth:d.get(t.id)??0,name:us(t.name.trim(),208,16),details:i.length>0?i.join("\n"):void 0,color:r(t),avatar:!0===t.avatar,width:0,height:0})}let h=new Map;for(let e of p.values()){let t=h.get(e.depth)??[];t.push(e),h.set(e.depth,t)}for(let e of h.values()){let t=Math.ceil(Math.min(232,Math.max(148,Math.max(...e.map(e=>Math.max(aE(e.name,16),e.details?aE(e.details,13):0,44*!!e.avatar)+24)))));for(let a of e)a.width=t}let g=e=>9+49*!!e.avatar+uo(e.name,16)+(e.details?3+uo(e.details,13):0)+5+4*!e.details,u=e=>e.details?Math.ceil(13*ul(e.details)*1.35)+18:Math.ceil(16*ul(e.name)*1.35)+18+49*!!e.avatar,f=new Map;for(let e of p.values()){let t=`${e.person.manager??`top:${e.person.id}`}:${!0===e.person.assistant}`;f.set(t,[...f.get(t)??[],e])}for(let e of f.values()){let t=Math.ceil(Math.max(40,...e.map(e=>Math.max(g(e),u(e)))));for(let a of e)a.height=t}return p}(e,t),l=function(e){let t={stackMin:5,twoColumns:5,outline:new Map,rows:new Map},a=g7(e,t),i=1;if(g9(a)>1){let s={...t,stackMin:2},l=g7(e,s);i+=1,g9(l)<g9(a)-1e-9&&([t,a]=[s,l])}let s=new Map,l=[],o=(e,t)=>{for(let a of(s.set(e.id,t),t>=1&&g1(e)&&l.push(e.id),e.reports))o(a,t+1)};for(let t of e)o(t,0);let r=t=>{let s;for(let{policy:a,preference:l}of t){let t=g7(e,a);i+=1;let o={policy:a,block:t,excess:g9(t),preference:l};(!s||(o.excess<=1&&s.excess<=1?o.preference<s.preference-1e-9:o.excess<s.excess-1e-9))&&(s=o)}return s&&s.excess<g9(a)-1e-6?s:void 0};for(let i=0;i<30&&g9(a)>1;i+=1){let i=a.rows,o=t.twoColumns<=8?r([{policy:{...t,twoColumns:9},preference:0}]):void 0;if(o){[t,a]=[o.policy,o.block];continue}let n=(e,t)=>(i.get(t)?.width??0)-(i.get(e)?.width??0)||e.localeCompare(t),d=r([...l.filter(e=>!t.outline.has(e)&&i.has(e)).toSorted(n).slice(0,3).map(e=>({policy:{...t,outline:new Map(t.outline).set(e,2)},preference:-s.get(e)})),...[...t.outline].filter(([,e])=>2===e).map(([e])=>e).slice(0,3).map(e=>({policy:{...t,outline:new Map(t.outline).set(e,1)},preference:1-s.get(e)}))]);if(d){[t,a]=[d.policy,d.block];continue}let c=([,e])=>e.items>e.rows,p=[...i].filter(e=>c(e)&&e[1].widestItem<.6*e[1].width).toSorted(([e,t],[a,i])=>i.width-i.widestItem-(t.width-t.widestItem)||e.localeCompare(a)).slice(0,3),h=[];for(let t of e){let e=t.id;for(;void 0!==e&&i.has(e);)h.push([e,i.get(e)]),e=i.get(e).widest}let g=[...p,...h.filter(c).filter(([e])=>!p.some(([t])=>t===e)).slice(0,3)],u=e=>r(e.map(([e,a])=>({policy:{...t,rows:new Map(t.rows).set(e,a.rows+1)},preference:a.widestItem}))),f=u(g.filter(([e])=>s.get(e)>=1))??u(g.filter(([e])=>0===s.get(e)));if(!f)break;[t,a]=[f.policy,f.block]}for(let s of[...t.rows.keys()].toReversed())for(let l=t.rows.get(s)-1;l>=1;l-=1){let o={...t,rows:new Map(t.rows).set(s,l)},r=g7(e,o);if(i+=1,g9(r)>Math.max(1,g9(a))+1e-9)break;t=o,a=r}let n=gJ(g8(a));return{cards:a.cards,links:a.links,regions:a.regions,width:n.x1-n.x0,height:n.y1-n.y0,attempts:i,stackMin:t.stackMin,wraps:new Map([...t.rows].filter(([,e])=>e>1)),outlines:t.outline}}((i=am(e),s=e=>{let l=a.get(e.id),o=t.get(e.id),r=i.get(e.id)??[];return{id:e.id,width:l.width,height:l.height,reports:r.filter(e=>!0!==e.assistant).map(s),assistants:r.filter(e=>!0===e.assistant).map(s),...void 0===o?{}:{region:{label:o,nameWidth:ij(o)}}}},af(e).map(s))),o=e.style.backgroundColor,r=e=>({...e,x:e.x+40,y:e.y+40}),n=new Map([...l.cards].map(([e,t])=>[e,r(t)])),d=l.regions.map(e=>({type:"frame",id:`frame:${e.root}`,name:e.label,...r(e.frame)})),c=new Map(l.regions.flatMap(e=>e.members.map(t=>[t,`frame:${e.root}`]))),p=e.people.map(e=>(function(e,t,a,i){let s,l,o,{person:r}=e,n={groupIds:[`person:${r.id}`],...i?{frameId:i}:{}},d={type:"node",id:`node:${r.id}`,nodeId:r.id,kind:r.assistant?"assistant":"person",shape:"rectangle",...t,label:r.name,strokeColor:e.color,strokeWidth:2,fillColor:ui(e.color,a,.13),fillStyle:"solid",...n},c=[d],p=[],h=t.x+t.width/2,g=t.width-24;if(e.avatar&&c.push({type:"node",id:`node:${r.id}:avatar`,nodeId:`${r.id}:avatar`,kind:"avatar",shape:"ellipse",x:h-22,y:t.y+9,width:44,height:44,label:(l=(s=r.name.trim().split(/\s+/u).filter(e=>/[\p{L}\p{N}]/u.test(e))).length>2&&/^(dr|mr|mrs|ms|mx|prof|sir|dame)\.?$/iu.test(s[0])?s.slice(1):s,o=e=>{let t=[...new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e??"")].map(e=>e.segment).find(e=>/[\p{L}\p{N}]/u.test(e));return t?.toLocaleUpperCase()??""},0===l.length?"?":1===l.length?o(l[0])||"?":`${o(l[0])}${o(l.at(-1))}`),strokeColor:e.color,strokeWidth:1,fillColor:ui(e.color,a,.32),fillStyle:"solid",...n}),e.details){let a=uo(e.details,13),i=t.y+t.height-5-a;p.push({type:"text",id:`label:${r.id}`,containerId:d.id,x:h,y:i+a/2,text:e.details,fontSize:13,lineHeight:1.25,maxWidth:g,verticalAlign:"bottom",textColor:"#5f574c",...n});let s=uo(e.name,16);p.push({type:"text",id:`text:${r.id}:name`,x:h,y:i-3-s/2,text:e.name,fontSize:16,lineHeight:1.25,maxWidth:Math.ceil(aE(e.name,16)),textColor:v.ink,...n})}else{let a=uo(e.name,16),i=e.avatar;p.push({type:"text",id:`label:${r.id}`,containerId:d.id,x:h,y:i?t.y+t.height-5-a/2:t.y+t.height/2,text:e.name,fontSize:16,lineHeight:1.25,maxWidth:g,...i?{verticalAlign:"bottom"}:{},textColor:v.ink,...n})}return{nodes:c,texts:p}})(a.get(e.id),n.get(e.id),o,c.get(e.id))),h=l.links.map(e=>{let t=e.points.map(e=>({x:e.x+40,y:e.y+40})),a=void 0!==c.get(e.manager)&&c.get(e.manager)===c.get(e.report)?c.get(e.report):void 0;return{type:"arrow",id:`edge:${e.report}`,edgeId:e.report,sourceNodeId:e.manager,targetNodeId:e.report,points:t,startArrowhead:null,endArrowhead:null,strokeColor:"#857b6f",strokeWidth:2,roughness:0,...a?{frameId:a}:{}}}),f=0===(u=ug(e,n,d,c,h,!0)).straight?u:[ug(e,n,d,c,h,!1)].find(e=>e.straight<u.straight)??u,y=(m=[...d,...h,...f.arrows,...p.flatMap(e=>e.nodes),...p.flatMap(e=>e.texts),...f.labels]).flatMap(e=>{if("arrow"===e.type)return[...e.points];if("text"===e.type){if(e.containerId)return[];let t=(e.maxWidth??0)/2,a=ul(e.text)*e.fontSize*1.25/2;return[{x:e.x-t,y:e.y-a},{x:e.x+t,y:e.y+a}]}return"node"===e.type||"frame"===e.type?[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y+e.height}]:[]}),w=d.map(e=>iN(e).y),x=Math.min(...y.map(e=>e.x)),b=Math.min(...y.map(e=>e.y),...w),k=Math.max(0,Math.ceil(40-x)),M=Math.max(0,Math.ceil(40-b)),C=0===k&&0===M?m:m.map(e=>"arrow"===e.type?{...e,points:e.points.map(e=>({x:e.x+k,y:e.y+M}))}:"line"===e.type?e:{...e,x:e.x+k,y:e.y+M}),{kind:"canvas",version:1,diagramId:e.id,title:e.title,width:Math.ceil(Math.max(...y.map(e=>e.x))+k+40),height:Math.ceil(Math.max(...y.map(e=>e.y))+M+40),accentColor:e.style.accentColor,backgroundColor:o,elements:C,layers:[],layouts:[],zOrder:C.map(e=>e.id)}},catch:e=>new f0({status:"render_failed",context:{...w,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:g.id},message:e instanceof Error?e.message:"Unable to render org chart scene.",hint:"Repair the people and reporting lines and retry."})]}})}).pipe(o.fRP("codeMode.buildOrgChart.render")),b=ii(x);if(b.length>0)return yield*new f0({status:"render_failed",context:{...w,issues:mm(b).map(e=>({...e,hint:"Shorten names or titles, or split the chart by division, and retry buildOrgChart."}))}});let k={...w,partial:mU(x)},M=yield*m$({scene:x,formats:mp(p.options),inlineFormats:mh(p.options),...p.requestId?{requestId:p.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new f0({status:e.status,context:{..."export_failed"===e.status?k:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:h,...mO(p.requestId),normalizedSpec:g,quality:m,artifact:M,issues:[]}}),mN=o.fn("codeMode.buildTimeline.workflow")(function*(e){var t,a;let i,l,r=s.q$Z(l1,{errors:"all",reportInput:!0})(e);if(!uR.oJ(r))return yield*new f2({status:"invalid_input",context:{issues:mr(sl(r.failure))}});let n=yield*fz,d=r.success,c=yield*o.OH5(()=>n.createId("build")),p=(i=se((t=d.spec).title),{id:(l={id:md(t.id)??(mn(i)||"sketchi-timeline"),title:i,type:"timeline",style:{...y},events:t.events.map(e=>({...e}))}).id,title:i,events:eh(l),...t.lanes?{lanes:[...t.lanes]}:{},...t.today?{today:t.today}:{},style:l.style}),h={buildId:c,...mO(d.requestId),normalizedSpec:p},g=en(fB(p)).map(e=>me({code:e.code,stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(g.length>0)return yield*new f2({status:"invalid_timeline",context:{...h,issues:g}});let u={accepted:10>=(a=d.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:p.events.length,edgeCount:0},checks:[]},f={...h,quality:u};if(!u.accepted)return yield*new f2({status:"quality_failed",context:{...f,issues:mc(u)}});let m=yield*o.SvU({try:()=>(function(e){let t,a,i=ec(e),s=eh(i),l=dG(i),o=er(i),r=(o.length?o:[""]).map((e,t)=>{let a=cf[t%cf.length];return{...a,stroke:a.stroke||i.style.accentColor}}),n=s[0]?.date!==void 0,d=[],c=e=>{let t=d.findIndex(t=>t.time===e.time&&t.tie===e.tie);return t>=0?t:(d.push(e),d.length-1)},p=void 0===i.today?void 0:el(i.today),h=new Map,g=new Map,u=[!1,!0].flatMap(e=>s.flatMap((t,a)=>{let i,s,l=void 0!==t.end;if(l!==e)return[];let o=n?el(t.date):void 0,r=void 0===t.end?void 0:el(t.end),d=o?o.start:t.order??a,u=t.lane??"",f=r?(d+r.end)/2:d,m=p&&r&&p.start>d&&p.start<r.end,v=r&&(m||h.has(`${u}\0${f}`))?function(e,t,a){let i=[e,...a.filter(a=>a>e&&a<t),t].toSorted((e,t)=>e-t),s={from:e,to:e};for(let[e,t]of i.slice(1).entries())t-i[e]>s.to-s.from&&(s={from:i[e],to:t});return(s.from+s.to)/2}(d,r.end,[...g.get(u)??[],...m?[p.start]:[]]):f,y=c({time:v,tie:(i=`${u}\0${v}`,s=h.get(i)??0,h.set(i,s+1),g.set(u,[...g.get(u)??[],v]),s)});return[{event:t,index:a,span:l,start:l?c({time:d,tie:0}):y,end:r?c({time:r.end,tie:0}):void 0,stem:y}]})).toSorted((e,t)=>e.index-t.index),f=p?c({time:p.start,tie:0}):void 0,m=d.map((e,t)=>({anchor:e,key:t})).toSorted((e,t)=>e.anchor.time-t.anchor.time||e.anchor.tie-t.anchor.tie),y=new Map(m.map((e,t)=>[e.key,t])),w=m.map(e=>e.anchor),x=u.map(e=>{let t=r[e.event.lane?o.indexOf(e.event.lane):0],a=`event:${e.event.id}`,i=l.events.get(e.event.id),s=[...i?[cm(`date:${a}`,i,14,t.ink)]:[],cm(`label:${a}`,e.event.label,16,v.ink),...e.event.description?[cm(`description:${a}`,e.event.description,13,cg)]:[]];return{event:e.event,index:e.index,lane:e.event.lane?o.indexOf(e.event.lane):0,span:e.span,startKey:y.get(e.start),endKey:y.get(e.end??e.start),stemKey:y.get(e.stem),inset:Math.max(10,(i?s[0].width:0)/2-12),parts:s,width:Math.max(...s.map(e=>e.width)),height:s.reduce((e,t)=>e+t.height,0)+2*(s.length-1)}}),b=void 0===f?void 0:y.get(f),k=Math.min(128,Math.max(72,Math.round((a=Math.floor((t=x.map(e=>e.width).toSorted((e,t)=>e-t)).length/2),((t.length%2?t[a]:(t[a-1]+t[a])/2)+16)/2+8)))),M=1.5*k,C=e=>x.some(t=>t.span&&t.startKey<=e&&t.endKey>e),z=w.slice(1).map((e,t)=>e.time-w[t].time),_=new Map,L=e=>{let t=_.get(e);if(!t){var a;let i,s,l,o=(a=z[e],i=(e,t)=>`${e} ${t}${1===e?"":"s"}`,s=e=>i(Math.max(1,Math.round(a/dR[e])),e),l=e=>{let t=a/dR[e];return i(t<10?Math.round(10*t)/10:Math.round(t),e)},a<1e3?s("millisecond"):a<12e4?l("second"):a<72e5?s("minute"):a<1728e5?s("hour"):a<5184e6?s("day"):a<63113904e3?s("month"):l("year"));t={text:o,half:aO(o,13,200)/2+6},_.set(e,t)}return t},B=[...new Set(x.flatMap(e=>[e.startKey,e.endKey]).map(e=>w.findIndex(t=>t.time===w[e].time)))].toSorted((e,t)=>e-t),S=e=>{let t=new Set(e);if(!n)return{x:w.map((e,t)=>t*k),breaks:t};if(w.length<2)return{x:w.map(()=>0),breaks:t};let a=z.reduce((e,t)=>e+t,0),i=x.length*k,s=10*k,l=a>0?i/a:0,o=[...r.flatMap((e,t)=>x.filter(e=>e.lane===t).toSorted((e,t)=>e.stemKey-t.stemKey).flatMap((e,t,a)=>{let i=a[t-1];return i&&i.stemKey!==e.stemKey?[{from:i.stemKey,to:e.stemKey,min:Math.max(28,e.inset+ch+1)}]:[]})),...x.filter(e=>e.span).map(e=>({from:e.startKey,to:e.endKey,min:12}))].filter(e=>e.to>e.from),d=Math.max(28,...o.map(e=>e.min)),c=(e,a)=>{let i=[0],s=0,l=0;return z.forEach((o,r)=>{let n=w[r+1];n.tie>0?i.push(s+n.tie*d):(s=t.has(r)?a?Math.max(s+a.get(r),l+Math.max(M,2*(L(r).half+3+16))):l+M:s+o*e,i.push(s)),l=Math.max(l,i[r+1])}),i},p=()=>{let[e,t]=[c(0),c(1)];return o.map(({from:a,to:i,min:s})=>{let l=e[i]-e[a];return{from:a,to:i,min:s,fixed:l,perScale:t[i]-e[i]-(t[a]-e[a])}})},h=Math.max(0,...x.filter(e=>e.span).map(e=>w[e.endKey].time-w[e.startKey].time)),g=h>0?Math.max(l,2*s/h):1/0,u=l;for(;;){let e=z.reduce((e,a,i)=>e+(t.has(i)?0:a),0),a=t.size&&e>0?Math.min(2*l,Math.max(l,(i-t.size*M)/e)):l,o=p();u=Math.min(Math.max(a,...o.map(({min:e,fixed:t,perScale:a})=>a>0&&t<e?(e-t)/a:0)),g);let r=t.size?2*M:s,n=z.flatMap((e,a)=>t.has(a)||!(e*u>r)||C(a)?[]:[a]);for(let{from:e,to:a,min:i,fixed:s,perScale:l}of o)if(s+l*u<i-1e-6){let i=z.map((e,t)=>({gap:e,key:t})).slice(e,a).filter(({gap:e,key:a})=>e>0&&!t.has(a)).toSorted((e,t)=>t.gap-e.gap||e.key-t.key)[0];i&&n.push(i.key)}if(!n.length)break;for(let e of n)t.add(e)}if(!t.size)return{x:c(u),breaks:t};let f=Math.max(M,...z.map((e,a)=>t.has(a)||C(a)?0:e*u)),m=[...t].filter(e=>z[e]*u>=M),v=Math.min(...m.map(e=>z[e])),y=Math.log2(Math.max(...m.map(e=>z[e]))/v),b=Math.min(.5,y>0?1/y:1/0),_=new Map([...t].map(e=>[e,f*(1+b*Math.log2(Math.max(1,z[e]/v)))])),S=c(u,_),A=new Set(m),P=B.slice(1).flatMap((e,a)=>{let i=B[a],s=z.slice(i,e).map((e,t)=>i+t),l=s.filter(e=>A.has(e)).at(-1);return void 0===l&&s.some(e=>t.has(e))?[]:[{from:i,to:e,elapsed:w[e].time-w[i].time,broken:l}]}),V=e=>S[e.to]-S[e.from];for(let e of P.toSorted((e,t)=>e.elapsed-t.elapsed)){if(void 0===e.broken)continue;let{elapsed:t}=e,a=Math.max(...P.map(e=>1.5*e.elapsed<=t?V(e)+12:e.elapsed<t?V(e):0)),i=Math.min(...P.map(e=>void 0!==e.broken?1/0:e.elapsed>=1.5*t?V(e)-12:e.elapsed>t?V(e):1/0)),s=Math.min(Math.max(V(e),a),i);if(1e-9>Math.abs(s-V(e)))continue;let l=e.broken,o=w.findIndex(e=>e.time===w[l].time);_.set(l,S[l+1]-S[o]+s-V(e)),S=c(u,_)}return{x:S,breaks:t}},A=({x:e,breaks:t})=>{let a=e.map((t,a)=>Math.max(...e.slice(0,a+1))),i=e.map((t,a)=>Math.min(...e.slice(a))),s=t=>(a[t]+e[t+1])/2,l=w.slice(0,-1).flatMap((e,l)=>{if(C(l))return[];let o=i[l+1]-14;if(t.has(l)){let e=s(l)+L(l).half+3+7;return[{key:l,low:e,high:Math.max(e,o),broken:!0}]}let r=a[l]+14;return r<=o?[{key:l,low:r,high:o,broken:!1}]:[]}),r=new Set(x.flatMap(t=>{if(!t.span)return[];let a=e[t.startKey]+Math.max(12,e[t.endKey]-e[t.startKey]);return x.some(i=>!i.span&&i.lane===t.lane&&(i.startKey<t.startKey||i.startKey>=t.endKey)&&e[i.startKey]+cy(i)>e[t.startKey]&&e[i.startKey]-cy(i)<a)?[t.lane]:[]}));return{x:e,breaks:t,reachBefore:a,rowsFor:t=>{let a=e[e.length-1],i=[],s=0,o=-24;for(let e=1;e<t;e+=1){let r=a*e/t,n=l.filter(e=>e.key>=s).map(e=>{let t=Math.min(e.high,Math.max(e.low,r));return{cut:e,at:t,cost:Math.abs(t-r)-(e.broken?k:0)-Math.min(e.high-e.low,2*k)/4}}).toSorted((e,t)=>e.cost-t.cost||e.cut.key-t.cut.key)[0];if(!n)break;i.push({first:s,last:n.cut.key,start:o,end:n.at}),s=n.cut.key+1,o=n.at}return i.push({first:s,last:w.length-1,start:o,end:Math.max(...e)+24}),i},layout:(t,a=cp)=>{let i=Math.max(1,o.length);return t.map((t,l)=>{let o=t.start-32*(l>0),n=t=>e[t]-o,d=void 0!==b&&b>=t.first&&b<=t.last?n(b):void 0,c=Array.from({length:i},(e,i)=>(function(e,t,a,i,s=cp){let l;for(let o of cv){let r=function(e,t,a,i,s,l=cp){let o=[],r=new Map;for(let t of e.filter(e=>e.span).toSorted((e,t)=>e.startKey-t.startKey)){let e=o.findIndex((e,a)=>a>=i&&e<=t.startKey);for(e<0&&(e=Math.max(i,o.length));o.length<e;)o.push(-1/0);o[e]=t.endKey,r.set(t,e)}let n=o.length,d=l+16*Math.max(0,n-1),c=e=>t(e.stemKey),p=e.toSorted((e,t)=>c(t)-c(e)||t.index-e.index),h={"-1":[],1:[]},g={"-1":[],1:[]},u=[],f=(e,t,a=ch)=>t>e.left-a&&t<e.right+a,m=-1;p.forEach((e,t)=>{let i=c(e),o=p.slice(t+1).map(c),n=s.lookahead?p[t+2]:void 0,v=(e,t,a)=>{if(!n||t>a)return 0;let i=c(n);return i+10+16>e?1e3:Math.max(0,i+n.width/2+16-e)/2},y=i-e.width+e.inset,w=i-e.inset,x=(r.get(e)??0)>0,b=x?1:m,k=e=>e.option.near-(e.side===b?x?120:1:0),M=t=>[b,-b].flatMap(r=>{let p=((t,r)=>{let p=t<0?l:d,u=h[t],m=h[-t],x=[...g[t],...r&&void 0!==a&&Math.abs(a-i)>=14?[{x:a,reach:1/0}]:[]],b=[p,...u.map(e=>e.far+10)].filter(e=>e>=p).toSorted((e,t)=>e-t),k=i-e.width/2,M=[k,y,w,...u.flatMap(t=>[t.right+16,t.left-16-e.width]),...[...x,...o.map(e=>({x:e,reach:0}))].flatMap(t=>{let a=1/0===t.reach?3*ch:ch;return[t.x+a,t.x-a-e.width]}),...n?[c(n)+10+16,c(n)+n.width/2+16]:[]].map(e=>Math.min(w,Math.max(y,e)));for(let t of b){let a=t+e.height,l=a=>Math.abs(a-k)+v(a,t,p)+s.coverPenalty*o.slice(1).filter(t=>f({left:a,right:a+e.width},t)).length;for(let s of M.toSorted((e,t)=>l(e)-l(t)||e-t)){let l=s+e.width,r={left:s,right:l};if(u.every(e=>s>=e.right+16||e.left>=l+16||t>=e.far+10||e.near>=a+10)&&u.every(e=>!f(e,i)||e.near>t)&&x.every(e=>!f(r,e.x,1/0===e.reach?3*ch:ch)||e.reach<=t)&&o.every(e=>!f(r,e)||m.every(t=>!f(t,e))))return{near:t,left:s}}}})(r,t);return p?[{side:r,option:p}]:[]}).toSorted((e,t)=>k(e)-k(t))[0],C=M(!0)??M(!1);if(!C)throw Error(`Timeline label for "${e.event.id}" has no clear placement.`);let{side:z,option:_}=C,{near:L,left:B}=_;h[z].push({left:B,right:B+e.width,near:L,far:L+e.height}),g[z].push({x:i,reach:L});let S=r.get(e)??0,A=16*S;u.push({item:e,stemX:i,side:z,near:L,left:B,stemStart:z>0?A+cy(e):cy(e)-A,track:S}),m=-z});let v=(e,t)=>Math.max(t,...h[e].map(e=>e.far));return{placements:u,above:v(-1,15),below:v(1,Math.max(9,d-l+6)+6),tracks:n}}(e,t,a,i,o,s);(!l||r.above+r.below<l.above+l.below)&&(l=r)}return l})(x.filter(e=>e.lane===i&&e.startKey>=t.first&&e.startKey<=t.last),n,d,+!!r.has(i),a));return{row:t,localX:n,breakX:e=>s(e)-o,todayX:d,lanes:c,axisStart:t.start-o,axisEnd:t.end-o}})}}},P=o.length?Math.max(...o.map(e=>aO(e,15,160)))+20:0,V=l.header,H=l.today,q=(e,t,a=cp)=>{var i;let s,l,n,d,c,p,h,g,u,f,m=e.rowsFor(t);if(m.length<t)return;let v=e.layout(m,a),y=(i=e.breaks,s=[],l=[],n=[],d=[],c=(e,t)=>{s.push(e),t.push(e.id)},p=(e,t,a={})=>({type:"line",id:e,points:t,...a}),h=(e,t,a,i,s,l,o={})=>({type:"text",id:e,x:a,y:i,text:t,fontSize:s,maxWidth:200,textColor:l,...o}),g=V?Math.ceil(14*1.35):0,u=18*!!H,f=V?g+18:0,v.forEach((e,t)=>{let a=f,s=void 0!==e.todayX;s&&(f+=u+6);let g=t<v.length-1,m=t>0;if(e.lanes.forEach((a,s)=>{let u=r[s],v=f+a.above,y=`${s}:${t}`,w={strokeColor:u.stroke,strokeWidth:2,roughness:0},x=[...i].toSorted((e,t)=>e-t).filter(t=>t>=e.row.first&&t<=e.row.last).map(t=>({x:P+e.breakX(t),...L(t)})),b=[P+e.axisStart,...x.flatMap(e=>[e.x-e.half,e.x+e.half]),P+e.axisEnd];for(let e=0;e<b.length;e+=2)b[e+1]>b[e]&&c(p(`axis:${y}${e?`:${e/2}`:""}`,[{x:b[e],y:v},{x:b[e+1],y:v}],w),l);for(let t of(x.forEach((e,t)=>{for(let a of[-1,1])c(p(`break:${y}:${t}:${a<0?"a":"b"}`,[{x:e.x+a*e.half-3,y:v+7},{x:e.x+a*e.half+3,y:v-7}],w),d);c(h(`break-label:${y}:${t}`,e.text,e.x,v,13,u.ink),d)}),m&&c(p(`continue-in:${y}`,[{x:P,y:v},{x:P+32,y:v}],{...w,strokeStyle:"dashed"}),l),g&&c(p(`continue-out:${y}`,[{x:P+e.axisEnd,y:v},{x:P+e.axisEnd+32,y:v}],{...w,strokeStyle:"dashed",endArrowhead:"arrow"}),l),o.length&&c(h(`lane:${y}`,o[s],P-16-aO(o[s],15,160)/2,v,15,u.ink,{maxWidth:160,textAlign:"right"}),d),a.placements)){let{item:a}=t,i=`event:${a.event.id}`,s={groupIds:[i]},o=v+16*t.track,r=P+t.stemX;if(a.span){let t=P+e.localX(a.startKey);c({type:"node",id:`node:${i}`,nodeId:i,rendererRole:cc,shape:"rectangle",x:t,y:o-6,width:Math.max(12,P+e.localX(a.endKey)-t),height:12,label:a.event.label,fillColor:u.wash,strokeColor:u.stroke,...s},n)}else{let e="milestone"===a.event.kind,t=e?18:12;c({type:"node",id:`node:${i}`,nodeId:i,rendererRole:cc,shape:e?"diamond":"ellipse",x:r-t/2,y:v-t/2,width:t,height:t,label:a.event.label,fillColor:u.stroke,strokeColor:u.stroke,...s},d)}let g=v+t.side*t.near;c(p(`stem:${i}`,[{x:r,y:v+t.side*t.stemStart},{x:r,y:g}],{strokeColor:"#b9ad95",strokeWidth:1,roughness:0,...s}),l);let f=P+t.left,m=t.side<0?g-a.height:g;for(let e of a.parts){let t=aO(e.text,e.fontSize,200),i=Math.min(Math.max(r,f+t/2),f+a.width-t/2),l=i===r?"center":i<r?"right":"left";c(h(e.id,e.text,i,m+e.height/2,e.fontSize,e.color,{textAlign:l,...s}),d),m+=e.height+2}}f=v+a.below+28*(s<e.lanes.length-1)}),s){let i=P+e.todayX;c(p(`today:${t}`,[{x:i,y:a+u+3},{x:i,y:f}],{strokeColor:cu,strokeWidth:1,strokeStyle:"dashed",roughness:0}),l),c(h(`today-label:${t}`,H,i,a+u/2,13,cu),d)}f+=48}),f-=48,V&&c(h("header",V,aO(V,14,400)/2,g/2,14,cg,{maxWidth:400,textAlign:"left"}),d),{elements:s,zOrder:[...l,...n,...d],height:f}),w=(e=>{let t=1/0,a=-1/0,i=1/0,s=-1/0,l=(e,l,o,r)=>{t=Math.min(t,e),a=Math.max(a,o),i=Math.min(i,l),s=Math.max(s,r)};for(let t of e)if("line"===t.type||"arrow"===t.type)for(let e of t.points)l(e.x,e.y,e.x,e.y);else if("text"===t.type){let e=aO(t.text,t.fontSize,t.maxWidth??200),a=t.text.split("\n").length*t.fontSize*1.35;l(t.x-e/2,t.y-a/2,t.x+e/2,t.y+a/2)}else("node"===t.type||"frame"===t.type)&&l(t.x,t.y,t.x+t.width,t.y+t.height);return{minX:t,maxX:a,minY:i,maxY:s}})(y.elements),x=Math.abs(Math.log((w.maxX-w.minX+80)/(w.maxY-w.minY+80)/2))+.3*(t-1);return{count:t,composed:y,box:w,score:x,labeled:v.flatMap(({lanes:e})=>e).reduce((e,{placements:t})=>e+ +!!t.some(({side:e})=>e<0)+ +!!t.some(({side:e})=>e>0),0)}},F=e=>e.reduce((e,t)=>!e||t.score<e.score-1e-9?t:e,void 0),I=({box:e})=>(e.maxX-e.minX+40)/(e.maxY-e.minY+40),E=({x:e,breaks:t,reachBefore:a})=>z.map((t,i)=>({gap:t,key:i,free:e[i+1]-a[i]})).filter(({gap:e,key:a,free:i})=>e>0&&!t.has(a)&&!C(a)&&i>=2*M).toSorted((e,t)=>t.free-e.free||e.key-t.key)[0],O=Math.max(1,Math.min(12,Math.ceil(x.length/2))),U=A(S(new Set)),X=[];for(let e=1;e<=O;e+=1){let t=q(U,e);if(!t)break;X.push(t)}let T=F(X),$=U;if(n&&1===T.count&&I(T)>3.5){let e=new Set,t=T;for(let a=E($);a&&I(t)>3.5;a=E($))e.add(a.key),t=q($=A(S(e)),1);(T=3.5>=I(t)?t:F(X.slice(1))??t)!==t&&($=U)}if(1===T.count&&I(T)>2.3){let e=Math.floor((140-cp)/6),t=new Map([[0,T]]),a=e=>{let a=t.get(e);if(a)return a;let i=q($,1,cp+6*e);return t.set(e,i),i},i=e=>2.3>=I(a(e)),s=T.box.maxX-T.box.minX,l=6*T.labeled,o=(s+40)/2.3-40-(({box:e})=>e.maxY-e.minY)(T),r=l>0?Math.min(e,Math.max(1,Math.ceil(o/l))):e;if(i(r))for(;r>1&&i(r-1);)r-=1;else for(;r<e&&!i(r);)r+=1;T=a(r)}let{composed:Y,box:G}=T,R=40-G.minX,D=40-G.minY,Z=Y.elements.map(e=>{if("line"===e.type||"arrow"===e.type){let[t,...a]=e.points.map(e=>({x:e.x+R,y:e.y+D}));return"line"===e.type?{...e,points:[t,a[0],...a.slice(1)]}:{...e,points:[t,...a]}}return{...e,x:e.x+R,y:e.y+D}});return{kind:"canvas",version:1,diagramId:i.id,title:i.title,width:Math.ceil(G.maxX-G.minX+80),height:Math.ceil(G.maxY-G.minY+80),accentColor:i.style.accentColor,backgroundColor:i.style.backgroundColor,elements:Z,layers:[],layouts:[],zOrder:Y.zOrder}})(fB(p)),catch:e=>new f2({status:"render_failed",context:{...f,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:p.id},message:e instanceof Error?e.message:"Unable to render timeline scene.",hint:"Repair the event dates and ordering and retry."})]}})}).pipe(o.fRP("codeMode.buildTimeline.render")),w=ii(m);if(w.length>0)return yield*new f2({status:"render_failed",context:{...f,issues:mm(w).map(e=>({...e,hint:"Split the chronology into smaller timelines and retry buildTimeline."}))}});let x={...f,partial:mU(m)},b=yield*m$({scene:m,formats:mp(d.options),inlineFormats:mh(d.options),...d.requestId?{requestId:d.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new f2({status:e.status,context:{..."export_failed"===e.status?x:f,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:c,...mO(d.requestId),normalizedSpec:p,quality:u,artifact:b,issues:[]}}),mW=o.fn("codeMode.buildChart.workflow")(function*(e){var t,a;let i,l,r,n,d,c=s.q$Z(l0,{errors:"all",reportInput:!0})(e);if(!uR.oJ(c))return yield*new f3({status:"invalid_input",context:{issues:mr(sl(c.failure))}});let p=yield*fz,h=c.success,g=yield*o.OH5(()=>p.createId("build")),u=(i=se((t=h.spec).title),r=(l=e=>{let t=md(e);return void 0===t?void 0:t})(t.unit),n=l(t.categoryAxisTitle),d=l(t.valueAxisTitle),{id:md(t.id)??(mn(i)||"sketchi-chart"),title:i,kind:t.kind,categories:t.categories.map(se),series:t.series.map(e=>{let t=l(e.name);return{...t?{name:t}:{},values:[...e.values]}}),...r?{unit:r}:{},...n?{categoryAxisTitle:n}:{},...d?{valueAxisTitle:d}:{},...void 0!==t.stacked?{stacked:t.stacked}:{},...void 0!==t.donut?{donut:t.donut}:{},...t.orientation?{orientation:t.orientation}:{},style:{...y}}),f={buildId:g,...mO(h.requestId),normalizedSpec:u},m=N(fS(u)).map(e=>me({code:e.code,stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(m.length>0)return yield*new f3({status:"invalid_chart",context:{...f,issues:m}});let v={accepted:10>=(a=h.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:u.categories.length*u.series.length,edgeCount:0},checks:[]},w={...f,quality:v};if(!v.accepted)return yield*new f3({status:"quality_failed",context:{...w,issues:mc(v)}});let x=yield*o.SvU({try:()=>(function(e){let t=J(e),a=new dn(t.style.backgroundColor);if("pie"===t.kind)!function(e,t){let a=t.series[0].values,i=nG(t.unit),s=dr(a.length,!0),{labels:l,shares:o}=function(e){let t=e.reduce((e,t)=>e+t,0),a=e.map(e=>t>0?e/t*100:0),i=e=>a.map(t=>Math.round(t*10**e)/10**e),s=t=>e.some((a,i)=>a>0&&0===t[i]||e.some((e,s)=>s>i&&e!==a&&t[s]===t[i])),l=+!!a.some(e=>e>0&&e<10);for(;l<2&&s(i(l));)l+=1;let o=i(l);return{shares:a,decimals:l,labels:o.map((t,a)=>0===t&&e[a]>0?`<${(10**-l).toFixed(l)}%`:`${Number(t.toFixed(l))}%`)}}(a),r=t.unit?.trim()==="%",n=87*!!t.donut,d=-Math.PI/2,c=a.map((e,t)=>{let a=o[t]/100*2*Math.PI,i={index:t,start:d,end:d+a,mid:d+a/2};return d+=a,i}),p=[];for(let o of c){let d=s[o.index],c=t.categories[o.index],h=nJ(a[o.index],i),g=l[o.index],u={groupIds:[`chart:slice:${o.index}`]},f=o.end-o.start;if(f>.0035){let t=f>=2*Math.PI-1e-9,a=dv(150,o.start,t?o.end-1e-4:o.end),i=n>0?[...a,...dv(n,t?o.end-1e-4:o.end,o.start)]:t?a:[{x:0,y:0},...a];e.polygon(`chart:slice:${o.index}`,i,`${c}: ${g} (${h})`,{fillColor:d,strokeColor:e.surface,strokeWidth:2,...u})}let m=r&&g===h?g:`${g} \xb7 ${h}`,v=n8(`${aT(c,110,14)}
|
|
239
239
|
${m}`,14),y=n>0?(n+150)/2:90,w=y*Math.cos(o.mid),x=y*Math.sin(o.mid),b={left:w-v.width/2,top:x-v.height/2,right:w+v.width/2,bottom:x+v.height/2};if(f>.0035&&function(e,t,a){let i=t.end-t.start;return[{x:e.left,y:e.top},{x:e.right,y:e.top},{x:e.right,y:e.bottom},{x:e.left,y:e.bottom}].every(e=>{let s=Math.hypot(e.x,e.y);if(s>144||s<a+6)return!1;if(i>=2*Math.PI-1e-9)return!0;let l=Math.atan2(e.y,e.x)-t.start;return(l=(l%(2*Math.PI)+2*Math.PI)%(2*Math.PI))<=i&&dy(e,t.start,150)>=6&&dy(e,t.end,150)>=6})}(b,o,n)){e.text(`chart:slice-label:${o.index}`,v,b.left,b.top,14,dl(d),"center",u);continue}let k=n8(`${aT(c,160,14)}
|
|
240
|
-
${m}`,14),M=Math.cos(o.mid)>=-1e-9?1:-1;p.push({slice:o,text:k,side:M,preferred:166*Math.sin(o.mid)})}let h=e=>p.filter(t=>t.side===e).length,g=e=>Math.abs(Math.cos(e.slice.mid));for(let e of p.filter(e=>g(e)<Math.sin(n7)).toSorted((e,t)=>g(e)-g(t)))h(e.side)-1>h(1===e.side?-1:1)&&(e.side=1===e.side?-1:1);let u=e=>Math.atan2(Math.abs(Math.sin(e.slice.mid)),e.side*Math.cos(e.slice.mid));for(let t of[1,-1]){let a=p.filter(e=>e.side===t),i=a.filter(e=>e.preferred<0).toSorted((e,t)=>u(e)-u(t)),s=a.filter(e=>e.preferred>=0).toSorted((e,t)=>u(e)-u(t)),l=new Map,o=1/0;for(let e of i){let t=Math.min(e.preferred-e.text.height/2,o-6-e.text.height);l.set(e,t),o=t}let r=i.length?Math.max(...i.map(e=>l.get(e)+e.text.height))+6:-1/0;for(let e of s){let t=Math.max(e.preferred-e.text.height/2,r);l.set(e,t),r=t+e.text.height+6}[...i,...s].forEach(a=>{let i=l.get(a),s=i+a.text.height/2,o=180*t,r=t>0?o:o-a.text.width,n={groupIds:[`chart:slice:${a.slice.index}`]},d={x:152*Math.cos(a.slice.mid),y:152*Math.sin(a.slice.mid)},c={x:164*Math.cos(a.slice.mid),y:164*Math.sin(a.slice.mid)};e.line(`chart:leader:${a.slice.index}:a`,d,c,{strokeColor:n3,...n},"middle"),e.line(`chart:leader:${a.slice.index}:b`,c,{x:o-4*t,y:s},{strokeColor:n3,...n},"middle"),e.text(`chart:slice-label:${a.slice.index}`,a.text,r,i,14,n2,t>0?"left":"right",n)})}}(a,t),dd(a,t,{colors:[]});else if("line"===t.kind)!function(e,t){let a,i=t.categories.length,s=nG(t.unit),l=dr(t.series.length,!1),o=du(t.categories,Math.max(Math.min(720/i,120),36,320/i),2,400),r=t.series.flatMap(e=>e.values),n=1===t.series.length&&i<=16?t.series[0].values.map(e=>n8(nJ(e,s),12)):void 0,d=(e,a,s)=>{if(!n)return;let l=t.series[0].values,r=l.map((t,a)=>({x:o*(a+.5),y:e(t)})),d=t.series.flatMap(t=>t.values.slice(1).map((a,i)=>({from:{x:o*(i+.5),y:e(t.values[i])},to:{x:o*(i+1+.5),y:e(a)}})));p.min<0&&p.max>0&&d.push({from:{x:0,y:e(0)},to:{x:o*i,y:e(0)}});let c=r.map(e=>({left:e.x-7,top:e.y-7,right:e.x+7,bottom:e.y+7})),h=[];for(let[e,t]of r.entries()){let r=n[e],p=l[e-1],g=l[e+1],u=l[e],f=(void 0===p||p<=u)&&(void 0===g||g>=u),m=(void 0===p||p>=u)&&(void 0===g||g<=u),v=(void 0===p||p<=u)&&(void 0===g||g<=u),y=r.width,w=r.height,x=(e,a)=>({left:t.x+e-y/2,top:t.y+a-w/2,right:t.x+e+y/2,bottom:t.y+a+w/2}),b=x(0,-(10+w/2)),k=x(0,10+w/2),M=x(0,-(22+w/2)),C=x(0,22+w/2),z=x(-(y/2+10),-(4+w/2)),_=x(y/2+10,-(4+w/2)),L=x(-(y/2+10),4+w/2),B=x(y/2+10,4+w/2),S=(v?[b,z,_,M,k,C]:f&&!m?[z,B,b,k,M,C]:m&&!f?[_,L,b,k,M,C]:[k,L,B,C,b,M]).find(e=>e.top>=a&&e.bottom<=s&&e.left>=0&&e.right<=o*i&&!d.some(t=>(function(e,t){let{from:a,to:i}=e,s=e=>e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom;if(s(a)||s(i))return!0;let l=[{x:t.left,y:t.top},{x:t.right,y:t.top},{x:t.right,y:t.bottom},{x:t.left,y:t.bottom}];return l.some((e,t)=>{var s;let o,r,n,d,c;return s=l[(t+1)%4],r=(o=(e,t,a)=>(t.x-e.x)*(a.y-e.y)-(t.y-e.y)*(a.x-e.x))(a,i,e),n=o(a,i,s),d=o(e,s,a),c=o(e,s,i),r*n<0&&d*c<0})})(t,{left:e.left-2,top:e.top-2,right:e.right+2,bottom:e.bottom+2}))&&!c.some(t=>dt(t,e,2))&&!h.some(t=>dt(t,e,3)));if(!S)return;h.push(S)}return h},c=nT(r,!1),p=nU(c.low,c.high);for(let e=0;e<3&&n;e+=1){let t=280/(p.max-p.min),i=e=>(p.max-e)*t,s=d(i,-1/0,1/0);if(!s)break;let l=s.some(e=>e.top<0),o=s.some(e=>e.bottom>280);if(!l&&!o){a=s;break}2===e?a=d(i,0,280):p=nX(p,o,l)}let h=a?void 0:t.series.map(e=>e.values.map(e=>n8(nJ(e,s),12)));h&&(o=Math.max(o,...h.flat().map(e=>e.width+8)));let g=280/(p.max-p.min),u=e=>(p.max-e)*g,f=dh(p,s),m=Math.max(...f.labels.map(e=>e.width)),v=o*i;p.ticks.forEach((t,a)=>{let i=u(t),s=f.labels[a];e.line(`chart:grid:${a}`,{x:0,y:i},{x:v,y:i},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,-8-s.width,i-s.height/2,13,n3,"right")}),p.min<0&&p.max>0&&e.line("chart:baseline",{x:0,y:u(0)},{x:v,y:u(0)},{strokeColor:n4,strokeWidth:2},"middle"),e.line("chart:axis",{x:0,y:280},{x:v,y:280},{strokeColor:n4},"middle");let y=280;if(t.categories.forEach((t,a)=>{let i=o*(a+.5);e.line(`chart:category-tick:${a}`,{x:i,y:280},{x:i,y:285},{strokeColor:n4},"middle");let s=n9(t,o-10,14),l=e.text(`chart:category:${a}`,s,i-s.width/2,289,14,n2);y=Math.max(y,l.bottom)}),t.series.forEach((a,i)=>{let r=l[i],n={groupIds:[`chart:series:${i}`]};a.values.slice(1).forEach((t,s)=>e.line(`chart:line:${i}:${s+1}`,{x:o*(s+.5),y:u(a.values[s])},{x:o*(s+1+.5),y:u(t)},{strokeColor:r,strokeWidth:2,...n},"middle")),a.values.forEach((a,l)=>{let d=nJ(a,s);dc(e,`chart:point:${l}:${i}`,i,o*(l+.5),u(a),r,`${t.categories[l]} \xb7 ${dp(t,i)}: ${d}`,n)})}),h){let a=y+12,i=t.series.map(e=>e.name?n9(e.name,200,12):void 0),s=-10-Math.max(0,...i.map(e=>e?e.width+6:0));h.forEach((r,n)=>{let d=t.series[n],c=l[n],p={groupIds:[`chart:table:${n}`]},h=i[n],g=Math.max(r[0].height,h?.height??0),u=a+g/2;e.line(`chart:table-key:${n}:line`,{x:s-22,y:u},{x:s,y:u},{strokeColor:c,strokeWidth:2,...p},"middle"),dc(e,`chart:table-key:${n}`,n,s-11,u,c,d.name??t.title,p),h&&e.text(`chart:table-name:${n}`,h,s+6,a+(g-h.height)/2,12,n2,"left",p),r.forEach((t,i)=>e.text(`chart:table:${i}:${n}`,t,o*(i+.5)-t.width/2,a+(g-t.height)/2,12,n3,"center",p)),a+=g+4}),y=a-4}if(a?.forEach((t,a)=>e.text(`chart:value:${a}:0`,n[a],t.left,t.top,12,n3,"center",{groupIds:["chart:series:0"]})),t.valueAxisTitle){let a=n9(t.valueAxisTitle,Math.max(v+m,200),14),i=f.labels[f.labels.length-1];e.text("chart:value-axis-title",a,-8-m,-i.height/2-8-a.height,14,n3,"left")}if(t.categoryAxisTitle){let a=n9(t.categoryAxisTitle,Math.max(v,200),14);e.text("chart:category-axis-title",a,(v-a.width)/2,y+12,14,n3)}}(a,t),dd(a,t,{legend:"line",colors:dr(t.series.length,!1)});else{let e=dg(t);"horizontal"===function(e){if(e.orientation)return e.orientation;let t=df(dg(e)),a=du(e.categories,t.band,2,161);return a>160||a*e.categories.length>960?"horizontal":"vertical"}(t)?function(e,t){let{diagram:a,stacked:i,colors:s}=t,l=i?1:a.series.length,o=n8("0",12).height,r=1===l?24:Math.max(o-2,Math.round(44/l)),n=l*r+(l-1)*2,d=Math.min(220,Math.max(...a.categories.map(e=>n8(e,14).width))),c=a.categories.map(e=>n9(e,d,14)),p=i?t.totals.flatMap(e=>[e.up,e.down].filter(e=>void 0!==e)):t.labels.flat(),h=e=>(t,a)=>p.some(i=>"up"===e==i.value>=0&&("up"===e?(t.max-i.value)*a:(i.value-t.min)*a)<i.text.width+4+4),g=dm(t.domain,480,h("up"),h("down"));for(let e=4;e>=2;e-=1){let a=dh(g,t.parts);if(480/(g.max-g.min)*g.step>=Math.max(...a.labels.map(e=>e.width))+12)break;g=dm(t.domain,480,h("up"),h("down"),e)}let u=e=>{let i=480/(e.max-e.min),s=t=>(t-e.min)*i;return a.categories.map((e,i)=>{let l=0,o=0;return a.series.map((e,a)=>{let{value:n,text:d}=t.labels[i][a],c=n>=0?l:o,p=c+n;n>=0?l=p:o=p;let h=s(Math.min(c,p)),g=s(Math.max(c,p));g-h<.5&&(n>=0?g=h+.5:h=g-.5);let u=g-h>=d.width+6&&r>=d.height+1;return{s:a,value:n,text:d,left:h,right:g,inside:u}})})};for(let e=0;i&&e<6;e+=1){let e=-g.min/(g.max-g.min)*480,t=Math.max(0,...u(g).map(e=>e.filter(e=>!e.inside&&e.value<0).reduce((e,t)=>e+t.text.width+6,0)));if(0===t||t<=e-2)break;g=nX(g,!0,!1)}let f=480/(g.max-g.min),m=e=>(e-g.min)*f,v=u(g),y=i&&v.flat().some(e=>!e.inside)?o+10:0,w=Math.max(n+14,...c.map(e=>e.height+8))+y,x=dh(g,t.parts),b=w*a.categories.length;g.ticks.forEach((t,a)=>{let i=m(t),s=x.labels[a];e.line(`chart:grid:${a}`,{x:i,y:0},{x:i,y:b},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,i-s.width/2,b+6,13,n3)});let k=m(0);e.line("chart:baseline",{x:k,y:0},{x:k,y:b},{strokeColor:n4,strokeWidth:2},"middle"),a.categories.forEach((l,o)=>{let d=w*o+(w-y)/2,p=c[o];e.text(`chart:category:${o}`,p,-10-p.width,d-p.height/2,14,n2,"right");let h=d-n/2;if(a.series.forEach((n,d)=>{let c,p,{value:g,text:u}=t.labels[o][d],f=s[d],y=`chart:bar:${o}:${d}`,w={groupIds:[i?`chart:stack:${o}`:y]},x=i?h:h+d*(r+2);i?{left:c,right:p}=v[o][d]:(c=m(Math.min(0,g)),(p=m(Math.max(0,g)))-c<.5&&(g>=0?p=c+.5:c=p-.5));let b=`${l} \xb7 ${dp(a,d)}: ${u.text}`;if(0!==g&&e.mark(y,"rectangle",{x:c,y:x,width:p-c,height:r},b,i?{fillColor:f,strokeColor:e.surface,strokeWidth:2,...w}:{fillColor:f,strokeColor:f,...w}),i){v[o][d].inside&&e.text(`chart:value:${o}:${d}`,u,(c+p-u.width)/2,x+(r-u.height)/2,12,dl(f),"center",w);return}let k=g>=0?p+4:c-4-u.width;e.text(`chart:value:${o}:${d}`,u,k,x+(r-u.height)/2,12,n3,g>=0?"left":"right",w)}),i){let a=t.totals[o],i={groupIds:[`chart:stack:${o}`]};a.up&&e.text(`chart:total:${o}`,a.up.text,m(a.up.value)+4,d-a.up.text.height/2,12,n2,"left",i),a.down&&e.text(`chart:total-negative:${o}`,a.down.text,m(a.down.value)-4-a.down.text.width,d-a.down.text.height/2,12,n2,"right",i);let s=v[o].filter(e=>!e.inside),l=h+n,r=l+7,c=new Map;for(let e of[!0,!1]){let t=s.filter(t=>t.value>=0===e);da(t.map(e=>({preferred:(e.left+e.right)/2,size:e.text.width})),e?k+2:0,e?1/0:k-2,6).forEach((e,a)=>c.set(t[a],e))}s.forEach(t=>{let a=c.get(t),s=(t.left+t.right)/2,n={strokeColor:n3,...i};e.line(`chart:leader:${o}:${t.s}:a`,{x:s,y:l+1},{x:s,y:l+3},n,"middle"),e.line(`chart:leader:${o}:${t.s}:b`,{x:s,y:l+3},{x:a+t.text.width/2,y:r-1},n,"middle"),e.text(`chart:value:${o}:${t.s}`,t.text,a,r,12,n3,"center",i)})}});let M=x.labels[0].height;if(a.valueAxisTitle){let t=n9(a.valueAxisTitle,480,14);e.text("chart:value-axis-title",t,(480-t.width)/2,b+6+M+10,14,n3)}if(a.categoryAxisTitle){let t=n9(a.categoryAxisTitle,Math.max(d,160),14);e.text("chart:category-axis-title",t,-10-t.width,-8-t.height,14,n3,"right")}}(a,e):function(e,t){let{diagram:a,stacked:i,colors:s}=t,l=a.categories.length,o=df(t),r="vertical"===a.orientation,n=n8("0",12).height+4+2,d=a.categories.map((e,t)=>t),c=dm(t.domain,300,(e,a)=>d.some(s=>(i?void 0!==t.totals[s].up:t.labels[s].some(e=>e.value>=0))&&(e.max-(i?t.totals[s].up?.value??0:Math.max(0,...t.labels[s].map(e=>e.value))))*a<n),(e,a)=>d.some(s=>(i?void 0!==t.totals[s].down:t.labels[s].some(e=>e.value<0))&&((i?t.totals[s].down?.value??0:Math.min(0,...t.labels[s].map(e=>e.value)))-e.min)*a<n)),p=e=>{let i=300/(e.max-e.min),s=t=>(e.max-t)*i;return a.categories.map((e,i)=>{let l=0,r=0;return a.series.map((e,a)=>{let{value:n,text:d}=t.labels[i][a],c=n>=0?l:r,p=c+n;n>=0?l=p:r=p;let h=s(Math.max(c,p)),g=s(Math.min(c,p));g-h<.5&&(n>=0?h=g-.5:g=h+.5);let u=g-h>=d.height+1&&d.width+6<=o.thickness;return{s:a,value:n,text:d,top:h,bottom:g,inside:u}})})};for(let e=0;i&&e<6;e+=1){let e=p(c),t=c.max/(c.max-c.min)*300,a=t=>Math.max(0,...e.map(e=>e.filter(e=>!e.inside&&e.value>=0===t).reduce((e,t)=>e+t.text.height+2,0))),i=a(!0)>0&&a(!0)>t-2,s=a(!1)>0&&a(!1)>300-t-2;if(!i&&!s)break;c=nX(c,s,i)}let h=300/(c.max-c.min),g=e=>(c.max-e)*h,u=p(c),f=e=>Math.max(o.thickness,t.totals[e].up?.text.width??0,t.totals[e].down?.text.width??0)/2,m=i?Math.max(0,...u.flat().flatMap(e=>e.inside?[]:[e.text.width])):0,v=Math.max(du(a.categories,o.band,r?3:2,r?200:161),320/l,m>0?2*Math.max(...d.map(f))+10+m+6:0),y=dh(c,t.parts),w=Math.max(...y.labels.map(e=>e.width)),x=v*l;c.ticks.forEach((t,a)=>{let i=g(t),s=y.labels[a];e.line(`chart:grid:${a}`,{x:0,y:i},{x:x,y:i},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,-8-s.width,i-s.height/2,13,n3,"right")});let b=g(0);e.line("chart:baseline",{x:0,y:b},{x:x,y:b},{strokeColor:n4,strokeWidth:2},"middle");let k=o.bars*o.thickness+(o.bars-1)*2,M=300;if(a.categories.forEach((l,r)=>{let n=0+v*(r+.5),d=n-k/2,c=n9(l,v-10,14),p=e.text(`chart:category:${r}`,c,n-c.width/2,308,14,n2);if(M=Math.max(M,p.bottom),a.series.forEach((n,c)=>{let p,h,{value:f,text:m}=t.labels[r][c],v=s[c],y=`chart:bar:${r}:${c}`,w={groupIds:[i?`chart:stack:${r}`:y]},x=i?d:d+c*(o.thickness+2);i?{top:p,bottom:h}=u[r][c]:(p=g(Math.max(0,f)),(h=g(Math.min(0,f)))-p<.5&&(f>=0?p=h-.5:h=p+.5));let b=`${l} \xb7 ${dp(a,c)}: ${m.text}`;if(0!==f&&e.mark(y,"rectangle",{x:x,y:p,width:o.thickness,height:h-p},b,i?{fillColor:v,strokeColor:e.surface,strokeWidth:2,...w}:{fillColor:v,strokeColor:v,...w}),i){u[r][c].inside&&e.text(`chart:value:${r}:${c}`,m,x+(o.thickness-m.width)/2,(p+h-m.height)/2,12,dl(v),"center",w);return}let k=f>=0?p-4-m.height:h+4;e.text(`chart:value:${r}:${c}`,m,x+(o.thickness-m.width)/2,k,12,n3,"center",w)}),i){let t=u[r].filter(e=>!e.inside),a=n+f(r)+10,i=new Map;for(let e of[!0,!1]){let a=t.filter(t=>t.value>=0===e);da(a.map(e=>({preferred:(e.top+e.bottom)/2,size:e.text.height})),e?0:b+2,e?b-2:300,2).forEach((e,t)=>i.set(a[t],e))}let s={groupIds:[`chart:stack:${r}`]};t.forEach(t=>{let l=i.get(t),n=(t.top+t.bottom)/2,c={strokeColor:n3,...s};e.line(`chart:leader:${r}:${t.s}:a`,{x:d+o.thickness+1,y:n},{x:a-4,y:n},c,"middle"),e.line(`chart:leader:${r}:${t.s}:b`,{x:a-4,y:n},{x:a-1,y:l+t.text.height/2},c,"middle"),e.text(`chart:value:${r}:${t.s}`,t.text,a,l,12,n3,"left",s)})}if(i){let a=t.totals[r],i={groupIds:[`chart:stack:${r}`]};a.up&&e.text(`chart:total:${r}`,a.up.text,n-a.up.text.width/2,g(a.up.value)-4-a.up.text.height,12,n2,"center",i),a.down&&e.text(`chart:total-negative:${r}`,a.down.text,n-a.down.text.width/2,g(a.down.value)+4,12,n2,"center",i)}}),a.valueAxisTitle){let t=n9(a.valueAxisTitle,Math.max(x+w,200),14),i=y.labels[y.labels.length-1];e.text("chart:value-axis-title",t,-8-w,-i.height/2-8-t.height,14,n3,"left")}if(a.categoryAxisTitle){let t=n9(a.categoryAxisTitle,Math.max(x,200),14);e.text("chart:category-axis-title",t,(0+x-t.width)/2,M+12,14,n3)}}(a,e),dd(a,t,{legend:"bar",colors:e.colors})}a.breakRulesUnderText(e=>e.startsWith("chart:grid:")||e.startsWith("chart:category-tick:")||"chart:baseline"===e||"chart:axis"===e);let i=a.bounds(),s=40-i.left,l=40-i.top,o=a.elements.map(e=>{if("line"===e.type){let[t,a,...i]=e.points.map(e=>({x:de(e.x+s),y:de(e.y+l)}));return{...e,points:[t,a,...i]}}return"arrow"===e.type?e:{...e,x:de(e.x+s),y:de(e.y+l)}});return{kind:"canvas",version:1,diagramId:t.id,title:t.title,width:Math.ceil(i.right-i.left+80),height:Math.ceil(i.bottom-i.top+80),accentColor:t.style.accentColor,backgroundColor:t.style.backgroundColor,elements:o,layers:[],layouts:[],zOrder:a.zOrder()}})(fx(u)),catch:e=>new fj({status:"render_failed",context:{...w,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:u.id},message:e instanceof Error?e.message:"Unable to render chart scene.",hint:"Repair the categories and series values and retry."})]}})}).pipe(o.fRP("codeMode.buildChart.render")),b=ii(x);if(b.length>0)return yield*new fj({status:"render_failed",context:{...w,issues:mr(b).map(e=>({...e,hint:"Use fewer categories or series and retry buildChart."}))}});let k={...w,partial:mA(x)},M=yield*mH({scene:x,formats:ma(h.options),inlineFormats:mi(h.options),...h.requestId?{requestId:h.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fj({status:e.status,context:{..."export_failed"===e.status?k:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:g,...mS(h.requestId),normalizedSpec:u,quality:v,artifact:M,issues:[]}}),m$=o.fn("codeMode.buildGantt.workflow")(function*(e){var t,a,i;let l,r,n=s.q$Z(l5,{errors:"all",reportInput:!0})(e);if(!uY.oJ(n))return yield*new fN({status:"invalid_input",context:{issues:f8(sl(n.failure))}});let d=yield*fm,c=n.success,p=yield*o.OH5(()=>d.createId("build")),h=(l=se((t=c.spec).title),{id:me(t.id)??(f9(l)||"sketchi-gantt"),title:l,tasks:t.tasks.map(e=>{let t=me(e.phase);return{...e,id:se(e.id),label:se(e.label),start:se(e.start),...void 0!==e.end?{end:se(e.end)}:{},...void 0!==t?{phase:t}:{},...e.dependsOn?{dependsOn:e.dependsOn.map(se)}:{}}}),...t.phases?{phases:t.phases.map(se)}:{},...t.today?{today:se(t.today)}:{},style:{...y}}),g={buildId:p,...mS(c.requestId),normalizedSpec:h},u=tu(fb(h)).map(e=>f0({code:fk[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(u.length>0)return yield*new fN({status:"invalid_gantt",context:{...g,issues:u}});let f={accepted:10>=(a=c.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:h.tasks.length,edgeCount:h.tasks.reduce((e,t)=>e+(t.dependsOn?.length??0),0)},checks:[]},m={...g,quality:f};if(!f.accepted)return yield*new fN({status:"quality_failed",context:{...m,issues:mt(f)}});let v=yield*o.SvU({try:()=>(function(e){var t,a,i;let s=tm(e),l=[cd(s,44,co)],o=l[0],r=co;if(!(0===(t=o).crossings&&Object.values(t.findings).every(e=>0===e))){let e,t,n=cd(s,44,cr),d=cr;l.push(n),n.clear||(n=cd(s,44,cn),d=cn,l.push(n)),n.clear&&(a=o,i=n,e=Object.keys(a.findings),t=t=>e.reduce((e,a)=>e+t[a],0),!(a.crossings<=i.crossings&&t(a.findings)<=t(i.findings)&&e.every(e=>a.findings[e]<=i.findings[e]+1)))&&(o=n,r=d)}for(let e of dW){if(0===o.work.conflicts||o.work.conflicts>4)break;let t=cd(s,44+e,r);l.push(t),t.work.conflicts<o.work.conflicts&&(o=t)}return{scene:o.scene,work:{layouts:l.length,placements:l.reduce((e,{work:t})=>e+t.placements,0),expansions:l.reduce((e,{work:t})=>e+t.expansions,0),corridors:o.work.corridors,conflicts:o.work.conflicts}}})(fb(h)).scene,catch:e=>new fN({status:"render_failed",context:{...m,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render Gantt scene.",hint:"Repair the tasks' dates and dependencies and retry."})]}})}).pipe(o.fRP("codeMode.buildGantt.render")),w=ii(v);if(w.length>0)return yield*new fN({status:"render_failed",context:{...m,issues:mr(w).map(e=>({...e,hint:"Use fewer tasks or dependencies and retry buildGantt."}))}});let x={...m,partial:mA(v)},b=yield*mH({scene:v,formats:ma(c.options),inlineFormats:mi(c.options),...c.requestId?{requestId:c.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fN({status:e.status,context:{..."export_failed"===e.status?x:m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:p,...mS(c.requestId),normalizedSpec:h,quality:f,artifact:b,issues:(r=new Map((i=fb(h)).tasks.map(e=>[e.id,e])),i.tasks.flatMap((e,t)=>{let a=tc(e);return(e.dependsOn??[]).flatMap((i,s)=>{let l=r.get(i),o=l&&tc(l);if(!a||!o)return[];let n=o.milestone?o.start:o.end-!!a.milestone;return a.start>=n?[]:[{task:e.id,dependsOn:i,finishes:tn(o.milestone?o.start:o.end-1),path:`tasks.[${t}].dependsOn.[${s}]`}]})})).map(e=>f0({code:"gantt_schedule_conflict",severity:"warning",stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:`Task "${e.task}" starts before "${e.dependsOn}" finishes on ${e.finishes}.`,hint:`Keep dates the prompt states; otherwise start "${e.task}" after ${e.finishes}.`}))}}),mY=s._kM({spec:s.$r1,requestId:s.Qrq(s.$r1)}),mG=s._kM({source:s._kM({scene:s.$r1})}),mR=o.fn("codeMode.canvas.serializedLimit")((e,t)=>o.SvU(()=>r5(e)).pipe(o.YWq({onFailure:()=>f0({code:"invalid_type",stage:"input",ref:{kind:"request",path:t},message:"CanvasSpec could not be serialized as JSON.",hint:"Remove non-JSON values or reduce deeply nested fields and retry."}),onSuccess:e=>e<=a$.maxSerializedBytes?void 0:f0({code:"canvas_limit_exceeded",stage:"canvas",ref:{kind:"request",path:t},message:`CanvasSpec exceeds ${a$.maxSerializedBytes} serialized bytes.`,hint:"Split the visualization into a smaller canvas or reduce repeated text and points."})}))),mD=o.fn("codeMode.createCanvas.workflow")(function*(e){let t=yield*fm,a=yield*o.OH5(()=>t.createId("build")),i=s.q$Z(mY)(e),l=uY.oJ(i)?{spec:i.success.spec,requestId:s.is(s.QfV)(i.success.requestId)?i.success.requestId:void 0}:void 0;if(l){let e=yield*mR(l.spec,"spec");if(e)return yield*new fW({status:"canvas_limit_exceeded"===e.code?"limit_exceeded":"invalid_input",context:{buildId:a,...mS(l.requestId),issues:[e]}})}let r=s.q$Z(oE,{errors:"all",reportInput:!0})(e);if(!uY.oJ(r))return yield*new fW({status:"invalid_input",context:{issues:f8(sl(r.failure))}});let n=r.success,d={buildId:a,...mS(n.requestId)},c=md(n.spec);if(!c)return yield*new fW({status:"invalid_canvas",context:{...d,issues:[f0({code:"invalid_canvas_geometry",stage:"canvas",ref:{kind:"request",path:"spec.elements"},message:"CanvasSpec contains an invalid point list.",hint:"Provide at least two points for lines/connectors and three points for polygons."})]}});let p=ii(c).filter(e=>"limit_exceeded"===e.code);if(p.length>0)return yield*new fW({status:"limit_exceeded",context:{...d,issues:mr(p)}});let h=yield*fa(function(e){let t=[...e.elements];for(let a of e.layouts)t=function(e,t){switch(t.type){case"row":case"column":case"stack":return function(e,t){let a=il(e,t.ids),i=a[0];if(!i)return[...e];let s=is(i),l=t.x??s.x,o=t.y??s.y,r="stack"===t.type?t.gap??0:t.gap??32,n=new Map,d="column"===t.type?o:l;for(let e of a){let a=is(e);n.set(e.id,{x:"column"===t.type||"stack"===t.type?l:d,y:"column"===t.type?d:o}),"stack"!==t.type&&(d+=("column"===t.type?a.height:a.width)+r)}return io(e,n)}(e,t);case"grid":return function(e,t){let a=il(e,t.ids);if(0===a.length)return[...e];let i=Math.max(1,Math.floor(t.columns)),s=a.map(is),l=Array.from({length:i},(e,t)=>Math.max(0,...s.filter((e,a)=>a%i===t).map(e=>e.width))),o=Array.from({length:Math.ceil(a.length/i)},(e,t)=>Math.max(0,...s.filter((e,a)=>Math.floor(a/i)===t).map(e=>e.height))),r=s[0];if(!r)return[...e];let n=t.x??r.x,d=t.y??r.y,c=t.columnGap??32,p=t.rowGap??32,h=new Map;return a.forEach((e,t)=>{let a=t%i,s=Math.floor(t/i);h.set(e.id,{x:n+l.slice(0,a).reduce((e,t)=>e+t,0)+c*a,y:d+o.slice(0,s).reduce((e,t)=>e+t,0)+p*s})}),io(e,h)}(e,t);case"align":return function(e,t){let a=il(e,t.ids);if(0===a.length)return[...e];let i=a.map(is),s=i.map(e=>ir(e,t.axis)),l=i.map(e=>ir(e,t.axis)+id(e,t.axis)),o=i.map(e=>ir(e,t.axis)+id(e,t.axis)/2),r="start"===t.alignment?Math.min(...s):"end"===t.alignment?Math.max(...l):o.reduce((e,t)=>e+t,0)/o.length,n=new Map;return a.forEach((e,a)=>{let s=i[a];if(!s)return;let l="start"===t.alignment?r:"end"===t.alignment?r-id(s,t.axis):r-id(s,t.axis)/2;n.set(e.id,{x:"x"===t.axis?l:s.x,y:"y"===t.axis?l:s.y})}),io(e,n)}(e,t);case"distribute":return function(e,t){let a=il(e,t.ids).sort((e,a)=>ir(is(e),t.axis)-ir(is(a),t.axis));if(a.length<2)return[...e];let i=a.map(is),s=i[0],l=i[i.length-1];if(!s||!l)return[...e];let o=ir(s,t.axis),r=ir(l,t.axis)+id(l,t.axis),n=i.reduce((e,a)=>e+id(a,t.axis),0),d=t.gap??Math.max(0,(r-o-n)/(a.length-1)),c=new Map,p=o;return a.forEach((e,a)=>{let s=i[a];s&&(c.set(e.id,{x:"x"===t.axis?p:s.x,y:"y"===t.axis?p:s.y}),p+=id(s,t.axis)+d)}),io(e,c)}(e,t)}}(t,a);let a=function(e){let t=1,a=1;for(let i of e)if(a5(i)){let e=is(i);t=Math.max(t,e.x+e.width),a=Math.max(a,e.y+e.height)}else if("arrow"===i.type||"line"===i.type)for(let e of i.points)t=Math.max(t,e.x),a=Math.max(a,e.y);return{width:t+48,height:a+48}}(t=function(e){let t=iu(e),a=new Map;for(let t of e)("node"===t.type||"frame"===t.type)&&a.set(t.id,t);let i=e.map(e=>{if("arrow"===e.type){let a=t.get(e.sourceNodeId),i=t.get(e.targetNodeId);if(!a||!i)return e;if(e.curved){let t=e.points[0],s=e.points[e.points.length-1]??t;return ih(t,a)&&ih(s,i)?e:{...e,points:ig(a,i)}}return{...e,points:[ip(a,ic(i)),...e.points.slice(1,-1),ip(i,ic(a))]}}if("line"===e.type){let t=e.startBinding?a.get(e.startBinding.elementId):void 0,i=e.endBinding?a.get(e.endBinding.elementId):void 0;if(!t&&!i)return e;let s=[e.points[0],e.points[1],...e.points.slice(2)];return t&&(s[0]=ip(t,i?ic(i):s[s.length-1]??s[0])),i&&(s[s.length-1]=ip(i,t?ic(t):s[0])),{...e,points:s}}return e}),s=new Map(i.map(e=>[e.id,e]));return i.map(e=>{if("text"!==e.type||!e.containerId)return e;let t=s.get(e.containerId);if(t?.type==="node"){let a=ic(t);return{...e,x:a.x,y:a.y}}if(t?.type==="arrow"){let a=t.points[0],i=t.points[t.points.length-1]??a;return{...e,x:(a.x+i.x)/2,y:(a.y+i.y)/2}}return e})}(t)),i=e.zOrder.length?[...e.zOrder]:t.map((e,t)=>({element:e,index:t})).sort((e,t)=>(e.element.zIndex??e.index)-(t.element.zIndex??t.index)).map(({element:e})=>e.id);return{...e,width:Math.max(e.width,a.width),height:Math.max(e.height,a.height),elements:t,zOrder:i}}(c),t.icons),g=h.scene,u=mc(g),f=ii(g);if(f.length>0){let e=mr(f);return yield*new fW({status:e.some(e=>"canvas_limit_exceeded"===e.code)?"limit_exceeded":"invalid_canvas",context:{...d,normalizedSpec:u,issues:[...h.issues,...e]}})}let m={...d,normalizedSpec:u,partial:mA(g)},v=yield*mH({scene:g,formats:ma(n.options),inlineFormats:mi(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mn}).pipe(o.xm_(e=>new fW({status:e.status,context:{...m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:a,...mS(n.requestId),normalizedSpec:u,artifact:v,issues:h.issues}}),mZ=o.fn("codeMode.buildFlowchart.workflow")(function*(e){var t,a;let i,l=s.q$Z(lK,{errors:"all",reportInput:!0})(function(e){if(!fd(e))return e;let{spec:t}=e;if(!fd(t)||!Array.isArray(t.nodes))return e;let a=t.nodes,i=!1,s=Array.isArray(t.edges)?t.edges:void 0,l=s?.map(e=>{if(!fd(e)||void 0!==e.source&&void 0!==e.target||void 0===e.from&&void 0===e.to)return e;i=!0;let{from:t,to:a,...s}=e;return{...s,source:e.source??t,target:e.target??a}}),o=(l??[]).filter(fd),r=new Map,n=e=>{let t=r.get(e);return t||r.set(e,t={incoming:0,outgoing:0,labeledOutgoing:0}),t};for(let e of o){let t=n(e.source);t.outgoing+=1,"string"==typeof e.label&&""!==e.label.trim()&&(t.labeledOutgoing+=1),n(e.target).incoming+=1}let d=a.filter(fd).filter(e=>0===n(e.id).incoming),c=a.map(e=>fd(e)?(e=>{let t=e.kind??e.type,{incoming:a,outgoing:i,labeledOutgoing:s}=n(e.id),l="string"==typeof e.label&&se(e.label).endsWith("?");if("string"==typeof t){let s=t.trim().toLowerCase().replace(/[\s_-]+/g,""),l=fr[s];if(l)return l;if(fn.has(s)){if(0===a&&i>0)return"start";if(0===i&&a>0)return"end"}return e.kind}return void 0!==t?e.kind:0===i&&a>0?"end":0===a&&1===d.length&&0===s?"start":a>0&&1===i&&0===s&&!l?"process":void 0})(e):void 0),p=a.some((e,t)=>fd(e)&&"end"===c[t]&&n(e.id).incoming>0&&0===n(e.id).outgoing),h=new Set(a.flatMap((e,t)=>fd(e)&&"decision"===c[t]?[e.id]:[])),g=new Set(o.filter(e=>h.has(e.source)&&"string"==typeof e.label&&""!==e.label.trim()).map(e=>e.target)),u=a.map((e,t)=>{if(!fd(e))return e;let a=c[t],s="string"==typeof e.label&&se(e.label).endsWith("?");if("process"===a&&p&&g.has(e.id)&&0===n(e.id).outgoing&&!s&&(a="end"),a===e.kind)return e;i=!0;let{type:l,...o}=e;return{...o,kind:a}});return i?{...e,spec:{...t,nodes:u,...l?{edges:l}:{}}}:e}(e));if(!uY.oJ(l))return yield*new fX({status:"invalid_input",context:{issues:f8(sl(l.failure),f7)}});let r=yield*fm,n=l.success,d=yield*o.OH5(()=>r.createId("build")),c=(i=se((a=n.spec).title),{id:fo(a.id)??(i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"sketchi-flowchart"),title:i,nodes:a.nodes.map(e=>({id:se(e.id),label:se(e.label),kind:e.kind,...e.description?{description:se(e.description)}:{},...e.icon?{icon:{slug:se(e.icon.slug)}}:{},...e.group?{group:se(e.group)}:{},...e.lane?{lane:se(e.lane)}:{},...e.shape?{shape:e.shape}:{}})),edges:a.edges.map((e,t)=>({id:fo(e.id)??`edge-${t+1}`,source:se(e.source),target:se(e.target),...e.label?{label:se(e.label)}:{}})),...a.groups?{groups:a.groups.map(e=>({id:se(e.id),label:se(e.label),...e.parent?{parent:se(e.parent)}:{},...e.kind?{kind:e.kind}:{}}))}:{},...a.lanes?{lanes:a.lanes.map(e=>({id:se(e.id),label:se(e.label)}))}:{},layout:{direction:a.layout.direction},style:{...y}}),p=ft(c.nodes,r.icons),h={...c,nodes:p.nodes},g={buildId:d,...mS(n.requestId),normalizedSpec:h},u=s.q$Z(ew,{errors:"all",reportInput:!0})({id:h.id,title:h.title,type:"flowchart",nodes:h.nodes.map(e=>({...e,metadata:{}})),edges:h.edges.map(e=>({...e,metadata:{}})),...h.groups?{groups:h.groups.map(e=>({...e}))}:{},...h.lanes?{lanes:h.lanes.map(e=>({...e}))}:{},layout:{direction:h.layout.direction,edgeRouting:"orthogonal"},style:h.style,metadata:{}});if(!uY.oJ(u))return yield*new fX({status:"invalid_flowchart",context:{...g,issues:(t=sl(u.failure),t.issues.slice(0,20).map(e=>{let t=function(e,t){let a=f2(e.path),i="input"===a?"spec":`spec.${a}`,[s,l]=e.path;if("nodes"===s&&"number"==typeof l){let e=t.nodes[l]?.id;return{kind:"node",...e?{id:e}:{},path:i}}if("edges"===s&&"number"==typeof l){let e=t.edges[l]?.id;return{kind:"edge",...e?{id:e}:{},path:i}}if("groups"===s&&"number"==typeof l){let e=t.groups?.[l]?.id;return{kind:"group",...e?{id:e}:{},path:i}}if("lanes"===s&&"number"==typeof l){let e=t.lanes?.[l]?.id;return{kind:"lane",...e?{id:e}:{},path:i}}return{kind:"diagram",id:t.id,path:i}}(e,h);return f0({code:f3(e),stage:"flowchart",ref:t,message:e.message,hint:`Fix ${t.path??"spec"} so normalization produces a valid canonical flowchart value.`})}))}});let f=u.success,m=ek(f).map(e=>{let t=function(e){if(e)return{kind:e.kind,...e.id?{id:e.id}:{},...e.path?{path:`spec.${e.path}`}:{}}}(e.ref);return f0({code:e.code,stage:"flowchart",...t?{ref:t}:{},message:e.message,hint:e.hint})});if(m.length>0)return yield*new fX({status:"invalid_flowchart",context:{...g,issues:m}});eC(f);let v=function(e,t){let a=[],i=0,s=(e,t,s,l=!1)=>{i+=e,a.push({...s,passed:!1,severity:l?"error":"warning",message:t})},l=new Map,o=new Map;for(let t of e.edges)l.set(t.source,(l.get(t.source)??0)+1),l.set(t.target,(l.get(t.target)??0)+1),o.set(t.source,[...o.get(t.source)??[],t]);if(e.nodes.length>1&&0===e.edges.length)s(5,"no edges at all — every node floats unconnected",{code:"disconnected_graph",refs:fl(e.nodes)},!0);else{let t=e.nodes.filter(e=>(l.get(e.id)??0)===0);t.length>0&&e.nodes.length>1&&s(Math.min(1.5*t.length,4.5),`unconnected node(s): ${t.map(e=>e.id).join(", ")}`,{code:"disconnected_graph",refs:fl(t)},!0);let a=function(e){let t=new Map;for(let a of e.nodes)t.set(a.id,[]);for(let a of e.edges)t.get(a.source)?.push(a.target),t.get(a.target)?.push(a.source);let a=new Set,i=0;for(let s of e.nodes){if(a.has(s.id))continue;i+=1;let e=[s.id];for(a.add(s.id);e.length>0;){let i=e.pop();if(void 0===i)break;for(let s of t.get(i)??[])a.has(s)||(a.add(s),e.push(s))}}return i}(e);a>1&&0===t.length&&s(2,`diagram splits into ${a} disconnected islands`,{code:"disconnected_graph",refs:fl(e.nodes)},!0)}e.nodes.length<3?s(2,"too sparse — a useful flow needs at least 3 nodes",{code:"graph_too_sparse",refs:[{kind:"diagram",id:e.id,path:"spec.nodes"}]}):e.nodes.length>24&&s(2,"too dense — trim or merge nodes (24 max)",{code:"graph_too_dense",refs:[{kind:"diagram",id:e.id,path:"spec.nodes"}]});let r=new Map;for(let t of e.nodes){let e=t.label.trim().toLowerCase();r.set(e,(r.get(e)??0)+1)}let n=[...r.entries()].filter(([,e])=>e>1);n.length>0&&s(Math.min(n.length,3),`duplicate label(s): ${n.map(([e])=>`"${e}"`).join(", ")}`,{code:"duplicate_label",refs:fl(e.nodes.filter(e=>(r.get(e.label.trim().toLowerCase())??0)>1))});let d=0,c=0;for(let t of e.nodes){if("decision"!==t.kind){t.label.endsWith("?")&&s(0,`question label on non-decision node "${t.id}"; use kind "decision" only for branch points`,{code:"question_label_not_decision",refs:fl([t])});continue}let e=o.get(t.id)??[];e.length<2?(d+=1,s(0,`decision "${t.id}" needs at least 2 outgoing branches`,{code:"underbranched_decision",refs:fl([t])},!0)):e.some(e=>!e.label)&&(c+=1,s(0,`label every branch out of decision "${t.id}" (yes/no, …)`,{code:"unlabeled_decision_branch",refs:fl([t])}))}i+=Math.min(1.5*d,4.5)+Math.min(c,3);let p=e.nodes.filter(e=>e.label.length>42);p.length>0&&s(Math.min(.5*p.length,2),`shorten label(s): ${p.map(e=>e.id).join(", ")}`,{code:"label_too_long",refs:fl(p)});let h=e.nodes.filter(e=>fi.test(e.label.trim()));h.length>0&&s(Math.min(h.length,3),`generic label(s) say nothing: ${h.map(e=>`"${e.label}"`).join(", ")}`,{code:"generic_label",refs:fl(h)}),(e.title.trim().length<4||fs.test(e.title.trim()))&&s(.5,"give the diagram a specific title",{code:"weak_title",refs:[{kind:"diagram",id:e.id,path:"spec.title"}]});let g=Math.max(0,Math.round((10-i)*10)/10);return{accepted:g>=t&&!a.some(e=>"error"===e.severity),score:g,threshold:t,summary:{nodeCount:e.nodes.length,edgeCount:e.edges.length},checks:a}}(f,n.options?.minQualityScore??8),w={...g,quality:v};if(!v.accepted)return yield*new fX({status:"quality_failed",context:{...w,issues:mt(v)}});let x=yield*o.SvU({try:()=>h2(X(f)),catch:e=>new fX({status:"render_failed",context:{...w,issues:[f0({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render flowchart scene.",hint:"Simplify the graph or retry with a smaller flowchart."})]}})}).pipe(o.fRP("codeMode.buildFlowchart.render")),b=yield*fa(x,r.icons),k=b.scene,M={...w,partial:mA(k)},C=yield*mH({scene:k,formats:ma(n.options),inlineFormats:mi(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mo}).pipe(o.xm_(e=>new fX({status:e.status,context:{..."export_failed"===e.status?M:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:d,...mS(n.requestId),normalizedSpec:h,quality:v,artifact:C,issues:[...p.issues,...b.issues,...k.elements.flatMap(e=>"text"===e.type&&e.id.startsWith("description:")&&e.text.split("\n").length>3?[e.id.slice(12)]:[]).map(e=>f0({code:"label_too_long",severity:"warning",stage:"render",ref:{kind:"node",id:e,path:"spec.nodes.description"},message:`Node "${e}" has a description longer than 3 lines; it draws in full under the label.`,hint:"Keep a description to a short subtitle, and name technologies in the label."}))]}}),mj=o.fn("codeMode.getArtifact.workflow")(function*(e){let t=s.q$Z(o$,{errors:"all",reportInput:!0})(e);if(!uY.oJ(t))return yield*new fJ({status:"invalid_input",context:{issues:f8(sl(t.failure))}});let a=yield*fm,i=yield*r1,l=t.success,r=yield*i.readManifest(l.artifactId).pipe(o.xm_(e=>new fJ({status:"storage_failed",context:{issues:[mV(e,"storage_read_failed")]}})));if(!r)return yield*new fJ({status:"not_found",context:{issues:[f0({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" was not found.`,hint:"Use the artifactId returned by buildFlowchart or applyDiagramPatch."})]}});let n=l.format??"scene";if(!r.formats.some(e=>e.format===n))return yield*new fJ({status:"format_unavailable",context:{issues:[f0({code:"unsupported_artifact_format",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" does not include format "${n}".`,hint:"Request a format listed in the artifact bundle."})]}});let d=yield*i.read(l.artifactId,n).pipe(o.xm_(e=>new fJ({status:"storage_failed",context:{issues:[mV(e,"storage_read_failed")]}})));return d?{ok:!0,artifactId:l.artifactId,diagramId:r.diagramId,format:n,mimeType:d.mimeType,...a.artifactUrl?{url:a.artifactUrl({artifactId:l.artifactId,format:n})}:{},...!0!==l.inline||!r2(n)?{}:{inline:d.data},sizeBytes:d.sizeBytes,...r.provenance?{provenance:r.provenance}:{}}:yield*new fJ({status:"format_unavailable",context:{issues:[f0({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" format "${n}" could not be read.`,hint:"Retry retrieval or rebuild the artifact."})]}})}),mN=o.fn("codeMode.applyDiagramPatch.workflow")(function*(e){let t,a=s.q$Z(mG)(e),i=uY.oJ(a)?yield*mR(a.success.source.scene,"source.scene"):void 0;if(i)return yield*new fQ({status:"invalid_input",context:{issues:[i]}});let l=s.q$Z(rt,{errors:"all",reportInput:!0})(e);if(!uY.oJ(l))return yield*new fQ({status:"invalid_input",context:{issues:f8(sl(l.failure))}});let r=yield*fm,n=l.success,d=yield*o.OH5(()=>r.createId("patch")),c={patchId:d,...mS(n.requestId)},p=yield*mB(n).pipe(o.xm_(e=>new fQ({status:e.status,context:{...c,...e.context}}))),h={...c,...p.sourceArtifactId?{sourceArtifactId:p.sourceArtifactId}:{}},g=p.scene;if(g.elements.length>a$.maxElements)t=[{code:"limit_exceeded",message:`Canvas exceeds ${a$.maxElements} elements.`,path:"elements"}];else{let e=md(g);t=e?ii(e).filter(e=>"limit_exceeded"===e.code):[]}if(t.length>0)return yield*new fQ({status:"invalid_input",context:{...h,issues:mr(t)}});let u=mh(g),f=[];for(let e of n.operations)if((f=function(e,t){switch(t.op){case"setDefaultStyle":case"setStyle":if(t.style.backgroundColor&&(e.backgroundColor=t.style.backgroundColor),"setDefaultStyle"===t.op){for(let a of(t.style.strokeColor&&(e.accentColor=t.style.strokeColor),mg(e)))t.style.fillColor&&(a.fillColor=t.style.fillColor),t.style.strokeColor&&(a.strokeColor=t.style.strokeColor),t.style.textColor&&(a.textColor=t.style.textColor);for(let a of mf(e))t.style.strokeColor&&(a.strokeColor=t.style.strokeColor),t.style.textColor&&(a.textColor=t.style.textColor);for(let a of mu(e))t.style.textColor&&(a.textColor=t.style.textColor);return[]}let a=mv(e,t.selector);if(0===a.nodes.length&&0===a.arrows.length&&0===a.texts.length)return[my(t)];for(let i of a.nodes)if(t.style.fillColor&&(i.fillColor=t.style.fillColor),t.style.strokeColor&&(i.strokeColor=t.style.strokeColor),t.style.textColor){i.textColor=t.style.textColor;let a=mw(e,i.id);a&&(a.textColor=t.style.textColor)}for(let i of a.arrows)if(t.style.strokeColor&&(i.strokeColor=t.style.strokeColor),t.style.textColor){i.textColor=t.style.textColor;let a=mw(e,i.id);a&&(a.textColor=t.style.textColor)}for(let e of a.texts)t.style.textColor&&(e.textColor=t.style.textColor);return[];case"setShape":let i=mv(e,t.selector);if(0===i.nodes.length)return[my(t)];let s=[];for(let a of i.nodes){if(a.shape=t.shape,"polygon"===t.shape?a.points=[{x:a.width/2,y:0},{x:a.width,y:a.height/2},{x:a.width/2,y:a.height},{x:0,y:a.height/2}]:delete a.points,"circle"===t.shape){let e=Math.max(a.width,a.height);a.x-=(e-a.width)/2,a.y-=(e-a.height)/2,a.width=e,a.height=e,s.push(a.nodeId)}!function(e,t){let a=mw(e,t.id);a&&(a.x=t.x+t.width/2,a.y=t.y+t.height/2)}(e,a)}return mb(e,s),[];case"translate":return function(e,t){let a=mv(e,t.selector);if(0===a.nodes.length&&0===a.arrows.length&&0===a.texts.length)return[my(t)];let i=new Set,s=new Set;for(let l of a.nodes){l.x+=t.dx,l.y+=t.dy,i.add(l.nodeId);let a=mw(e,l.id);a&&(a.x+=t.dx,a.y+=t.dy,s.add(a.id))}for(let i of a.arrows){i.points=i.points.map(e=>{var a,i;return a=t.dx,i=t.dy,{x:e.x+a,y:e.y+i}});let a=mw(e,i.id);a&&(a.x+=t.dx,a.y+=t.dy,s.add(a.id))}for(let e of a.texts)s.has(e.id)||(e.x+=t.dx,e.y+=t.dy);return mb(e,[...i]),mz(e),[]}(e,t);case"replaceText":let l=mv(e,t.selector);if(0===l.nodes.length&&0===l.arrows.length&&0===l.texts.length)return[my(t)];for(let a of l.nodes){a.label=t.text;let i=mw(e,a.id);i&&(i.text=t.text)}for(let a of l.arrows){a.label=t.text;let i=mw(e,a.id);i&&(i.text=t.text)}for(let e of l.texts)e.text=t.text;return[];case"rerouteEdges":let o;return 0===(o=mv(e,t.selector)).arrows.length?[my(t)]:o.arrows.flatMap(t=>mC(e,t));case"insert":let r=new Set(e.elements.map(e=>e.id)),n=t.elements.map(e=>e.id);if(new Set(n).size!==n.length||n.some(e=>r.has(e)))return mL(t,"Inserted elements must use ids that are unique within the canvas.");let d=m_(e.zOrder,t.beforeId,t.afterId);return void 0===d?mL(t,"Insert specifies an unknown anchor or both beforeId and afterId."):(e.elements.push(...t.elements.map(e=>structuredClone(e))),e.zOrder.splice(d,0,...n),[]);case"remove":return function(e,t){let a,i=function(e,t){let a=mv(e,t),i=new Set([...a.nodes.map(e=>e.id),...a.arrows.map(e=>e.id),...a.texts.map(e=>e.id)]),s=new Set(t.ids??[]);for(let t of e.elements)s.has(t.id)&&i.add(t.id);return i}(e,t.selector);if(0===i.size)return[my(t)];let s=new Set(e.elements.flatMap(e=>"node"===e.type&&i.has(e.id)?[e.nodeId]:[]));do for(let t of(a=i.size,e.elements))("text"===t.type&&(t.containerId&&i.has(t.containerId)||mf(e).some(a=>i.has(a.id)&&mw(e,a.id)?.id===t.id))||"arrow"===t.type&&(s.has(t.sourceNodeId)||s.has(t.targetNodeId))||"line"===t.type&&(t.startBinding&&i.has(t.startBinding.elementId)||t.endBinding&&i.has(t.endBinding.elementId)))&&i.add(t.id);while(i.size!==a)let l=e.elements.filter(e=>!i.has(e.id)).map(e=>{if(e.frameId&&i.has(e.frameId)){let{frameId:t,...a}=e;return a}return e});e.elements.splice(0,e.elements.length,...l);let o=e.zOrder.filter(e=>!i.has(e));e.zOrder.splice(0,e.zOrder.length,...o);let r=e.layouts.map(e=>({...e,ids:e.ids.filter(e=>!i.has(e))})).filter(e=>e.ids.length>0);return e.layouts.splice(0,e.layouts.length,...r),mz(e),[]}(e,t);case"replace":let c;return(c=e.elements.findIndex(e=>e.id===t.id))<0?[my(t)]:t.element.id!==t.id?mL(t,"Replacement element id must match the stable id being replaced."):(e.elements.splice(c,1,structuredClone(t.element)),mz(e),[]);case"reorder":let p=new Set(t.ids);if(p.size!==t.ids.length||t.ids.some(t=>!e.zOrder.includes(t)))return mL(t,"Reorder ids must be unique ids already present in zOrder.");let h=e.zOrder.filter(e=>!p.has(e)),g=m_(h,t.beforeId,t.afterId);return void 0===g?mL(t,"Reorder specifies an unknown anchor or both beforeId and afterId."):(h.splice(g,0,...t.ids),e.zOrder.splice(0,e.zOrder.length,...h),[]);case"group":case"ungroup":let u=new Set(t.ids);if(t.ids.some(t=>!e.elements.some(e=>e.id===t)))return[my(t)];let f=e.elements.map(e=>u.has(e.id)?"group"===t.op?{...e,groupIds:[...new Set([...e.groupIds??[],t.groupId])]}:{...e,groupIds:t.groupId?(e.groupIds??[]).filter(e=>e!==t.groupId):[]}:e);return e.elements.splice(0,e.elements.length,...f),[]}}(g,e)).length>0)break;if(f.length>0)return yield*new fQ({status:f[0]?.code==="unknown_patch_target"?"target_not_found":"unsupported_operation",context:{...h,issues:f}});if(n.options?.preserveConnectivity!==!1){let e=mh(g);if(!(u.length===e.length&&u.every((t,a)=>t===e[a])))return yield*new fQ({status:"connectivity_changed",context:{...h,issues:[f0({code:"patch_preserve_connectivity_failed",stage:"flowchart",ref:{kind:"diagram",id:g.diagramId},message:"Patch changed the diagram edge connectivity.",hint:"Use buildFlowchart for process-graph structure or buildMindmap for hierarchy structure."})]}})}let m=md(g);if(!m)return yield*new fQ({status:"render_failed",context:{...h,issues:[f0({code:"patch_output_invalid",stage:"render",ref:{kind:"diagram",id:g.diagramId},message:"Patched scene has an invalid arrow point list.",hint:"Reroute edges or rebuild the flowchart artifact."})]}});let v=yield*fa(m,r.icons),y=v.scene,w=ii(y);if(w.length>0)return yield*new fQ({status:"render_failed",context:{...h,partial:mA(y),issues:[...v.issues,...mr(w)]}});let x={...h,partial:mA(y)},b=yield*mH({scene:y,formats:ma(n.options),inlineFormats:mi(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mn,...p.sourceArtifactId?{provenance:{sourceArtifactId:p.sourceArtifactId}}:{}}).pipe(o.xm_(e=>new fQ({status:e.status,context:{..."export_failed"===e.status?x:h,issues:e.issues}})));return{ok:!0,status:"accepted",patchId:d,...mS(n.requestId),...p.sourceArtifactId?{sourceArtifactId:p.sourceArtifactId}:{},artifact:b,issues:v.issues}}),mW=o.fn("codeMode.searchIcons.workflow")(function*(e){let t=s.q$Z(rj,{errors:"all",reportInput:!0})(e);if(!uY.oJ(t))return yield*new fK({status:"invalid_input",context:{issues:f8(sl(t.failure))}});let a=yield*fm,i=se(t.success.q),l=a.icons?.search(i,t.success.limit??10)??[];return{ok:!0,status:"accepted",query:i,icons:l.map(({collection:e,match:t,name:a,slug:i})=>({collection:e,name:a,slug:i,match:t})),issues:a.icons?[]:[f0({code:"unknown_icon",severity:"warning",stage:"input",ref:{kind:"request",path:"q"},message:"This Sketchi runtime has no icon catalog.",hint:"Omit node icons on this host."})]}});function mJ(e,t,a){return o.fn(`codeMode.${e}`)(i=>{var s,l,n;let d,c,p,h;return s=e,l=i,n=t(i).pipe(o.YWq({onFailure:a,onSuccess:e=>e})),uT(o.JkU(function*(){let e=yield*r.Ru,t=yield*n,a=yield*r.Ru,i=t.ok?"success":"failure",l=t.ok?void 0:t.status??"unknown_failure";yield*u$(fh,1,{...l?{failureCategory:l}:{},operation:s,outcome:i,surface:"code_mode"}),yield*u$(ff,a-e,{...l?{failureCategory:l}:{},operation:s,outcome:i,surface:"code_mode"}),l&&(yield*u$(fg,1,{failureCategory:l,operation:s,surface:"code_mode"}));let o="buildFlowchart"===s?"flowchart":"buildMindmap"===s?"mindmap":"buildSequenceDiagram"===s?"sequence":"buildTimeline"===s?"timeline":"buildChart"===s?"chart":"buildGantt"===s?"gantt":"buildStateMachine"===s?"state-machine":"buildErDiagram"===s?"er":"buildClassDiagram"===s?"class":"buildOrgChart"===s?"org-chart":"createCanvas"===s?"canvas":"applyDiagramPatch"===s?"patch":void 0;return t.ok&&o&&(yield*u$(fu,1,{artifactKind:o,operation:s,surface:"code_mode"})),t}),(d=fy(l),c=fy(d?.source),p="string"==typeof d?.artifactId?d.artifactId:"string"==typeof c?.artifactId?c.artifactId:void 0,h="string"==typeof d?.requestId?d.requestId:void 0,{...p?{artifactId:p}:{},...h?{requestId:h}:{}}))})}let mK=mJ("buildFlowchart",mZ,mP),mQ=mJ("buildMindmap",mq,mP),m1=mJ("buildSequenceDiagram",mF,mP),m0=mJ("buildStateMachine",mI,mP),m2=mJ("buildErDiagram",mE,mP),m3=mJ("buildClassDiagram",mO,mP),m5=mJ("buildOrgChart",mU,mP),m4=mJ("buildTimeline",mX,mP),m6=mJ("buildChart",mT,mP),m7=mJ("buildGantt",m$,mP);mJ("createCanvas",mD,mP),mJ("getArtifact",mj,mP),mJ("searchIcons",mW,mP);let m8=mJ("applyDiagramPatch",mN,mP),m9=h,ve={flowchart:la,mindmap:od,sequence:lr,timeline:ld,chart:lp,"state-machine":lv,gantt:lw,er:l_,class:lE,"org-chart":l$};function vt(e){return m9.some(t=>t===e)}function va(e,t){let a={spec:e.spec,...t?{options:t}:{}};switch(e.type){case"flowchart":return mK(a);case"mindmap":return mQ(a);case"sequence":return m1(a);case"timeline":return m4(a);case"chart":return m6(a);case"state-machine":return m0(a);case"gantt":return m7(a);case"er":return m2(a);case"class":return m3(a);case"org-chart":return m5(a)}}},4733(e,t,a){function i(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function s(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}function l(e){var t;return i(e)&&s(e.aliases)&&"number"==typeof e.bytes&&"string"==typeof e.collection&&s(e.keywords)&&"string"==typeof e.name&&"string"==typeof e.slug&&"string"==typeof e.svgPath&&(void 0===e.variant||"string"==typeof e.variant)&&i(t=e.viewBox)&&"number"==typeof t.height&&"number"==typeof t.minX&&"number"==typeof t.minY&&"number"==typeof t.width}function o(e){if(!i(e)||1!==e.version||!Array.isArray(e.icons)||!e.icons.every(l)||!i(e.summary)||"number"!=typeof e.summary.totalIcons||void 0!==e.generatedAt&&"string"!=typeof e.generatedAt)throw Error("Icon manifest does not match the public contract.");return{..."string"==typeof e.generatedAt?{generatedAt:e.generatedAt}:{},icons:e.icons,summary:{collectionCounts:function(e){if(!i(e))throw Error("Icon manifest collection counts are invalid.");let t={};for(let[a,i]of Object.entries(e)){if("number"!=typeof i)throw Error(`Icon manifest count for ${a} is invalid.`);t[a]=i}return t}(e.summary.collectionCounts),totalIcons:e.summary.totalIcons},version:1}}function r(e){return"gcp"===e?"Google Cloud":"gcp-legacy"===e?"Google Cloud Classic":e.split("-").map(e=>["ai","ci","iot","paas"].includes(e)?e.toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}a.d(t,{L:()=>o,y:()=>r})},8713(e,t,a){let i=/<svg\b[^>]*>/u,s=/\sviewBox\s*=\s*(["'])([^"']*)\1/u;function l(e){return void 0===e.variant&&e.bytes<=65536}function o(e){let t=i.exec(e);if(!t)throw Error("Node logo source has no <svg> root element.");let a=t[0],l=s.exec(a)?.[2]?.trim().split(/[\s,]+/u).map(Number);if(!l||4!==l.length||l.some(e=>!Number.isFinite(e))||!((l[2]??0)>0&&(l[3]??0)>0))throw Error("Node logo source has no valid viewBox.");let o=[/\sxmlns\s*=/u.test(a)?"":' xmlns="http://www.w3.org/2000/svg"',/\swidth\s*=/u.test(a)?"":` width="${l[2]}"`,/\sheight\s*=/u.test(a)?"":` height="${l[3]}"`].join("");if(!o)return e;let r=t.index+4;return`${e.slice(0,r)}${o}${e.slice(r)}`}a.d(t,{Bn:()=>o,nC:()=>l})},9095(e){e.exports=JSON.parse('[{"name":"Agola CI","constant":"AGOLA","env":"AGOLA_GIT_REF","pr":"AGOLA_PULL_REQUEST_ID"},{"name":"Alpic","constant":"ALPIC","env":"ALPIC_HOST"},{"name":"Appcircle","constant":"APPCIRCLE","env":"AC_APPCIRCLE","pr":{"env":"AC_GIT_PR","ne":"false"}},{"name":"AppVeyor","constant":"APPVEYOR","env":"APPVEYOR","pr":"APPVEYOR_PULL_REQUEST_NUMBER"},{"name":"AWS CodeBuild","constant":"CODEBUILD","env":"CODEBUILD_BUILD_ARN","pr":{"env":"CODEBUILD_WEBHOOK_EVENT","any":["PULL_REQUEST_CREATED","PULL_REQUEST_UPDATED","PULL_REQUEST_REOPENED"]}},{"name":"Azure Pipelines","constant":"AZURE_PIPELINES","env":"TF_BUILD","pr":{"BUILD_REASON":"PullRequest"}},{"name":"Bamboo","constant":"BAMBOO","env":"bamboo_planKey"},{"name":"Bitbucket Pipelines","constant":"BITBUCKET","env":"BITBUCKET_COMMIT","pr":"BITBUCKET_PR_ID"},{"name":"Bitrise","constant":"BITRISE","env":"BITRISE_IO","pr":"BITRISE_PULL_REQUEST"},{"name":"Buddy","constant":"BUDDY","env":"BUDDY_WORKSPACE_ID","pr":"BUDDY_EXECUTION_PULL_REQUEST_ID"},{"name":"Buildkite","constant":"BUILDKITE","env":"BUILDKITE","pr":{"env":"BUILDKITE_PULL_REQUEST","ne":"false"}},{"name":"CircleCI","constant":"CIRCLE","env":"CIRCLECI","pr":"CIRCLE_PULL_REQUEST"},{"name":"Cirrus CI","constant":"CIRRUS","env":"CIRRUS_CI","pr":"CIRRUS_PR"},{"name":"Cloudflare Pages","constant":"CLOUDFLARE_PAGES","env":"CF_PAGES"},{"name":"Cloudflare Workers","constant":"CLOUDFLARE_WORKERS","env":"WORKERS_CI"},{"name":"Codefresh","constant":"CODEFRESH","env":"CF_BUILD_ID","pr":{"any":["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{"name":"Codemagic","constant":"CODEMAGIC","env":"CM_BUILD_ID","pr":"CM_PULL_REQUEST"},{"name":"Codeship","constant":"CODESHIP","env":{"CI_NAME":"codeship"}},{"name":"Drone","constant":"DRONE","env":"DRONE","pr":{"DRONE_BUILD_EVENT":"pull_request"}},{"name":"dsari","constant":"DSARI","env":"DSARI"},{"name":"Earthly","constant":"EARTHLY","env":"EARTHLY_CI"},{"name":"Expo Application Services","constant":"EAS","env":"EAS_BUILD"},{"name":"Gerrit","constant":"GERRIT","env":"GERRIT_PROJECT"},{"name":"Gitea Actions","constant":"GITEA_ACTIONS","env":"GITEA_ACTIONS"},{"name":"GitHub Actions","constant":"GITHUB_ACTIONS","env":"GITHUB_ACTIONS","pr":{"GITHUB_EVENT_NAME":"pull_request"}},{"name":"GitLab CI","constant":"GITLAB","env":"GITLAB_CI","pr":"CI_MERGE_REQUEST_ID"},{"name":"GoCD","constant":"GOCD","env":"GO_PIPELINE_LABEL"},{"name":"Google Cloud Build","constant":"GOOGLE_CLOUD_BUILD","env":"BUILDER_OUTPUT"},{"name":"Harness CI","constant":"HARNESS","env":"HARNESS_BUILD_ID"},{"name":"Heroku","constant":"HEROKU","env":{"env":"NODE","includes":"/app/.heroku/node/bin/node"}},{"name":"Hudson","constant":"HUDSON","env":"HUDSON_URL"},{"name":"Jenkins","constant":"JENKINS","env":["JENKINS_URL","BUILD_ID"],"pr":{"any":["ghprbPullId","CHANGE_ID"]}},{"name":"LayerCI","constant":"LAYERCI","env":"LAYERCI","pr":"LAYERCI_PULL_REQUEST"},{"name":"Magnum CI","constant":"MAGNUM","env":"MAGNUM"},{"name":"Netlify CI","constant":"NETLIFY","env":"NETLIFY","pr":{"env":"PULL_REQUEST","ne":"false"}},{"name":"Nevercode","constant":"NEVERCODE","env":"NEVERCODE","pr":{"env":"NEVERCODE_PULL_REQUEST","ne":"false"}},{"name":"Prow","constant":"PROW","env":"PROW_JOB_ID"},{"name":"ReleaseHub","constant":"RELEASEHUB","env":"RELEASE_BUILD_ID"},{"name":"Render","constant":"RENDER","env":"RENDER","pr":{"IS_PULL_REQUEST":"true"}},{"name":"Sail CI","constant":"SAIL","env":"SAILCI","pr":"SAIL_PULL_REQUEST_NUMBER"},{"name":"Screwdriver","constant":"SCREWDRIVER","env":"SCREWDRIVER","pr":{"env":"SD_PULL_REQUEST","ne":"false"}},{"name":"Semaphore","constant":"SEMAPHORE","env":"SEMAPHORE","pr":"PULL_REQUEST_NUMBER"},{"name":"Sourcehut","constant":"SOURCEHUT","env":{"CI_NAME":"sourcehut"}},{"name":"Strider CD","constant":"STRIDER","env":"STRIDER"},{"name":"TaskCluster","constant":"TASKCLUSTER","env":["TASK_ID","RUN_ID"]},{"name":"TeamCity","constant":"TEAMCITY","env":"TEAMCITY_VERSION"},{"name":"Travis CI","constant":"TRAVIS","env":"TRAVIS","pr":{"env":"TRAVIS_PULL_REQUEST","ne":"false"}},{"name":"Vela","constant":"VELA","env":"VELA","pr":{"VELA_PULL_REQUEST":"1"}},{"name":"Vercel","constant":"VERCEL","env":{"any":["NOW_BUILDER","VERCEL"]},"pr":"VERCEL_GIT_PULL_REQUEST_ID"},{"name":"Visual Studio App Center","constant":"APPCENTER","env":"APPCENTER_BUILD_ID"},{"name":"Woodpecker","constant":"WOODPECKER","env":{"CI":"woodpecker"},"pr":{"CI_BUILD_EVENT":"pull_request"}},{"name":"Xcode Cloud","constant":"XCODE_CLOUD","env":"CI_XCODE_PROJECT","pr":"CI_PULL_REQUEST_NUMBER"},{"name":"Xcode Server","constant":"XCODE_SERVER","env":"XCS"}]')}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e].call(a.exports,a,a.exports,n),a.exports}n.m=o,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},i=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var s=Object.create(null);n.r(s);var l={};a=a||[null,i({}),i([]),i(i)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~a.indexOf(o);o=i(o))Object.getOwnPropertyNames(o).forEach(t=>{l[t]=()=>e[t]});return l.default=()=>e,n.d(s,l),s},n.d=(e,t,a)=>{var i=(t,a)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,[a]:t[i]})};i(t,"get"),i(a,"value")},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((t,a)=>(n.f[a](e,t),t),[])),n.u=e=>"chunks/"+e+"."+({548:"7c734cd41f2be66d",712:"64dcdf85a1cb6ee8"})[e]+".js",n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0,s={889:0},l=e=>{var t,a,i=e.__rspack_esm_ids,l=e.__webpack_modules__,o=e.__rspack_esm_runtime,r=0;for(t in l)n.o(l,t)&&(n.m[t]=l[t]);for(o&&o(n);r<i.length;r++)a=i[r],n.o(s,a)&&s[a]&&s[a][0](),s[i[r]]=0},n.f.j=function(e,t){var a=n.o(s,e)?s[e]:void 0;if(0!==a)if(a)t.push(a[1]);else{var i=import("./"+n.u(e)).then(l,t=>{throw 0!==s[e]&&(s[e]=void 0),t}),i=Promise.race([i,new Promise(t=>{a=s[e]=[t]})]);t.push(a[1]=i)}},n(2141);
|
|
240
|
+
${m}`,14),M=Math.cos(o.mid)>=-1e-9?1:-1;p.push({slice:o,text:k,side:M,preferred:166*Math.sin(o.mid)})}let h=e=>p.filter(t=>t.side===e).length,g=e=>Math.abs(Math.cos(e.slice.mid));for(let e of p.filter(e=>g(e)<Math.sin(n7)).toSorted((e,t)=>g(e)-g(t)))h(e.side)-1>h(1===e.side?-1:1)&&(e.side=1===e.side?-1:1);let u=e=>Math.atan2(Math.abs(Math.sin(e.slice.mid)),e.side*Math.cos(e.slice.mid));for(let t of[1,-1]){let a=p.filter(e=>e.side===t),i=a.filter(e=>e.preferred<0).toSorted((e,t)=>u(e)-u(t)),s=a.filter(e=>e.preferred>=0).toSorted((e,t)=>u(e)-u(t)),l=new Map,o=1/0;for(let e of i){let t=Math.min(e.preferred-e.text.height/2,o-6-e.text.height);l.set(e,t),o=t}let r=i.length?Math.max(...i.map(e=>l.get(e)+e.text.height))+6:-1/0;for(let e of s){let t=Math.max(e.preferred-e.text.height/2,r);l.set(e,t),r=t+e.text.height+6}[...i,...s].forEach(a=>{let i=l.get(a),s=i+a.text.height/2,o=180*t,r=t>0?o:o-a.text.width,n={groupIds:[`chart:slice:${a.slice.index}`]},d={x:152*Math.cos(a.slice.mid),y:152*Math.sin(a.slice.mid)},c={x:164*Math.cos(a.slice.mid),y:164*Math.sin(a.slice.mid)};e.line(`chart:leader:${a.slice.index}:a`,d,c,{strokeColor:n3,...n},"middle"),e.line(`chart:leader:${a.slice.index}:b`,c,{x:o-4*t,y:s},{strokeColor:n3,...n},"middle"),e.text(`chart:slice-label:${a.slice.index}`,a.text,r,i,14,n2,t>0?"left":"right",n)})}}(a,t),dd(a,t,{colors:[]});else if("line"===t.kind)!function(e,t){let a,i=t.categories.length,s=nG(t.unit),l=dr(t.series.length,!1),o=du(t.categories,Math.max(Math.min(720/i,120),36,320/i),2,400),r=t.series.flatMap(e=>e.values),n=1===t.series.length&&i<=16?t.series[0].values.map(e=>n8(nJ(e,s),12)):void 0,d=(e,a,s)=>{if(!n)return;let l=t.series[0].values,r=l.map((t,a)=>({x:o*(a+.5),y:e(t)})),d=t.series.flatMap(t=>t.values.slice(1).map((a,i)=>({from:{x:o*(i+.5),y:e(t.values[i])},to:{x:o*(i+1+.5),y:e(a)}})));p.min<0&&p.max>0&&d.push({from:{x:0,y:e(0)},to:{x:o*i,y:e(0)}});let c=r.map(e=>({left:e.x-7,top:e.y-7,right:e.x+7,bottom:e.y+7})),h=[];for(let[e,t]of r.entries()){let r=n[e],p=l[e-1],g=l[e+1],u=l[e],f=(void 0===p||p<=u)&&(void 0===g||g>=u),m=(void 0===p||p>=u)&&(void 0===g||g<=u),v=(void 0===p||p<=u)&&(void 0===g||g<=u),y=r.width,w=r.height,x=(e,a)=>({left:t.x+e-y/2,top:t.y+a-w/2,right:t.x+e+y/2,bottom:t.y+a+w/2}),b=x(0,-(10+w/2)),k=x(0,10+w/2),M=x(0,-(22+w/2)),C=x(0,22+w/2),z=x(-(y/2+10),-(4+w/2)),_=x(y/2+10,-(4+w/2)),L=x(-(y/2+10),4+w/2),B=x(y/2+10,4+w/2),S=(v?[b,z,_,M,k,C]:f&&!m?[z,B,b,k,M,C]:m&&!f?[_,L,b,k,M,C]:[k,L,B,C,b,M]).find(e=>e.top>=a&&e.bottom<=s&&e.left>=0&&e.right<=o*i&&!d.some(t=>(function(e,t){let{from:a,to:i}=e,s=e=>e.x>t.left&&e.x<t.right&&e.y>t.top&&e.y<t.bottom;if(s(a)||s(i))return!0;let l=[{x:t.left,y:t.top},{x:t.right,y:t.top},{x:t.right,y:t.bottom},{x:t.left,y:t.bottom}];return l.some((e,t)=>{var s;let o,r,n,d,c;return s=l[(t+1)%4],r=(o=(e,t,a)=>(t.x-e.x)*(a.y-e.y)-(t.y-e.y)*(a.x-e.x))(a,i,e),n=o(a,i,s),d=o(e,s,a),c=o(e,s,i),r*n<0&&d*c<0})})(t,{left:e.left-2,top:e.top-2,right:e.right+2,bottom:e.bottom+2}))&&!c.some(t=>dt(t,e,2))&&!h.some(t=>dt(t,e,3)));if(!S)return;h.push(S)}return h},c=nT(r,!1),p=nU(c.low,c.high);for(let e=0;e<3&&n;e+=1){let t=280/(p.max-p.min),i=e=>(p.max-e)*t,s=d(i,-1/0,1/0);if(!s)break;let l=s.some(e=>e.top<0),o=s.some(e=>e.bottom>280);if(!l&&!o){a=s;break}2===e?a=d(i,0,280):p=nX(p,o,l)}let h=a?void 0:t.series.map(e=>e.values.map(e=>n8(nJ(e,s),12)));h&&(o=Math.max(o,...h.flat().map(e=>e.width+8)));let g=280/(p.max-p.min),u=e=>(p.max-e)*g,f=dh(p,s),m=Math.max(...f.labels.map(e=>e.width)),v=o*i;p.ticks.forEach((t,a)=>{let i=u(t),s=f.labels[a];e.line(`chart:grid:${a}`,{x:0,y:i},{x:v,y:i},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,-8-s.width,i-s.height/2,13,n3,"right")}),p.min<0&&p.max>0&&e.line("chart:baseline",{x:0,y:u(0)},{x:v,y:u(0)},{strokeColor:n4,strokeWidth:2},"middle"),e.line("chart:axis",{x:0,y:280},{x:v,y:280},{strokeColor:n4},"middle");let y=280;if(t.categories.forEach((t,a)=>{let i=o*(a+.5);e.line(`chart:category-tick:${a}`,{x:i,y:280},{x:i,y:285},{strokeColor:n4},"middle");let s=n9(t,o-10,14),l=e.text(`chart:category:${a}`,s,i-s.width/2,289,14,n2);y=Math.max(y,l.bottom)}),t.series.forEach((a,i)=>{let r=l[i],n={groupIds:[`chart:series:${i}`]};a.values.slice(1).forEach((t,s)=>e.line(`chart:line:${i}:${s+1}`,{x:o*(s+.5),y:u(a.values[s])},{x:o*(s+1+.5),y:u(t)},{strokeColor:r,strokeWidth:2,...n},"middle")),a.values.forEach((a,l)=>{let d=nJ(a,s);dc(e,`chart:point:${l}:${i}`,i,o*(l+.5),u(a),r,`${t.categories[l]} \xb7 ${dp(t,i)}: ${d}`,n)})}),h){let a=y+12,i=t.series.map(e=>e.name?n9(e.name,200,12):void 0),s=-10-Math.max(0,...i.map(e=>e?e.width+6:0));h.forEach((r,n)=>{let d=t.series[n],c=l[n],p={groupIds:[`chart:table:${n}`]},h=i[n],g=Math.max(r[0].height,h?.height??0),u=a+g/2;e.line(`chart:table-key:${n}:line`,{x:s-22,y:u},{x:s,y:u},{strokeColor:c,strokeWidth:2,...p},"middle"),dc(e,`chart:table-key:${n}`,n,s-11,u,c,d.name??t.title,p),h&&e.text(`chart:table-name:${n}`,h,s+6,a+(g-h.height)/2,12,n2,"left",p),r.forEach((t,i)=>e.text(`chart:table:${i}:${n}`,t,o*(i+.5)-t.width/2,a+(g-t.height)/2,12,n3,"center",p)),a+=g+4}),y=a-4}if(a?.forEach((t,a)=>e.text(`chart:value:${a}:0`,n[a],t.left,t.top,12,n3,"center",{groupIds:["chart:series:0"]})),t.valueAxisTitle){let a=n9(t.valueAxisTitle,Math.max(v+m,200),14),i=f.labels[f.labels.length-1];e.text("chart:value-axis-title",a,-8-m,-i.height/2-8-a.height,14,n3,"left")}if(t.categoryAxisTitle){let a=n9(t.categoryAxisTitle,Math.max(v,200),14);e.text("chart:category-axis-title",a,(v-a.width)/2,y+12,14,n3)}}(a,t),dd(a,t,{legend:"line",colors:dr(t.series.length,!1)});else{let e=dg(t);"horizontal"===function(e){if(e.orientation)return e.orientation;let t=df(dg(e)),a=du(e.categories,t.band,2,161);return a>160||a*e.categories.length>960?"horizontal":"vertical"}(t)?function(e,t){let{diagram:a,stacked:i,colors:s}=t,l=i?1:a.series.length,o=n8("0",12).height,r=1===l?24:Math.max(o-2,Math.round(44/l)),n=l*r+(l-1)*2,d=Math.min(220,Math.max(...a.categories.map(e=>n8(e,14).width))),c=a.categories.map(e=>n9(e,d,14)),p=i?t.totals.flatMap(e=>[e.up,e.down].filter(e=>void 0!==e)):t.labels.flat(),h=e=>(t,a)=>p.some(i=>"up"===e==i.value>=0&&("up"===e?(t.max-i.value)*a:(i.value-t.min)*a)<i.text.width+4+4),g=dm(t.domain,480,h("up"),h("down"));for(let e=4;e>=2;e-=1){let a=dh(g,t.parts);if(480/(g.max-g.min)*g.step>=Math.max(...a.labels.map(e=>e.width))+12)break;g=dm(t.domain,480,h("up"),h("down"),e)}let u=e=>{let i=480/(e.max-e.min),s=t=>(t-e.min)*i;return a.categories.map((e,i)=>{let l=0,o=0;return a.series.map((e,a)=>{let{value:n,text:d}=t.labels[i][a],c=n>=0?l:o,p=c+n;n>=0?l=p:o=p;let h=s(Math.min(c,p)),g=s(Math.max(c,p));g-h<.5&&(n>=0?g=h+.5:h=g-.5);let u=g-h>=d.width+6&&r>=d.height+1;return{s:a,value:n,text:d,left:h,right:g,inside:u}})})};for(let e=0;i&&e<6;e+=1){let e=-g.min/(g.max-g.min)*480,t=Math.max(0,...u(g).map(e=>e.filter(e=>!e.inside&&e.value<0).reduce((e,t)=>e+t.text.width+6,0)));if(0===t||t<=e-2)break;g=nX(g,!0,!1)}let f=480/(g.max-g.min),m=e=>(e-g.min)*f,v=u(g),y=i&&v.flat().some(e=>!e.inside)?o+10:0,w=Math.max(n+14,...c.map(e=>e.height+8))+y,x=dh(g,t.parts),b=w*a.categories.length;g.ticks.forEach((t,a)=>{let i=m(t),s=x.labels[a];e.line(`chart:grid:${a}`,{x:i,y:0},{x:i,y:b},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,i-s.width/2,b+6,13,n3)});let k=m(0);e.line("chart:baseline",{x:k,y:0},{x:k,y:b},{strokeColor:n4,strokeWidth:2},"middle"),a.categories.forEach((l,o)=>{let d=w*o+(w-y)/2,p=c[o];e.text(`chart:category:${o}`,p,-10-p.width,d-p.height/2,14,n2,"right");let h=d-n/2;if(a.series.forEach((n,d)=>{let c,p,{value:g,text:u}=t.labels[o][d],f=s[d],y=`chart:bar:${o}:${d}`,w={groupIds:[i?`chart:stack:${o}`:y]},x=i?h:h+d*(r+2);i?{left:c,right:p}=v[o][d]:(c=m(Math.min(0,g)),(p=m(Math.max(0,g)))-c<.5&&(g>=0?p=c+.5:c=p-.5));let b=`${l} \xb7 ${dp(a,d)}: ${u.text}`;if(0!==g&&e.mark(y,"rectangle",{x:c,y:x,width:p-c,height:r},b,i?{fillColor:f,strokeColor:e.surface,strokeWidth:2,...w}:{fillColor:f,strokeColor:f,...w}),i){v[o][d].inside&&e.text(`chart:value:${o}:${d}`,u,(c+p-u.width)/2,x+(r-u.height)/2,12,dl(f),"center",w);return}let k=g>=0?p+4:c-4-u.width;e.text(`chart:value:${o}:${d}`,u,k,x+(r-u.height)/2,12,n3,g>=0?"left":"right",w)}),i){let a=t.totals[o],i={groupIds:[`chart:stack:${o}`]};a.up&&e.text(`chart:total:${o}`,a.up.text,m(a.up.value)+4,d-a.up.text.height/2,12,n2,"left",i),a.down&&e.text(`chart:total-negative:${o}`,a.down.text,m(a.down.value)-4-a.down.text.width,d-a.down.text.height/2,12,n2,"right",i);let s=v[o].filter(e=>!e.inside),l=h+n,r=l+7,c=new Map;for(let e of[!0,!1]){let t=s.filter(t=>t.value>=0===e);da(t.map(e=>({preferred:(e.left+e.right)/2,size:e.text.width})),e?k+2:0,e?1/0:k-2,6).forEach((e,a)=>c.set(t[a],e))}s.forEach(t=>{let a=c.get(t),s=(t.left+t.right)/2,n={strokeColor:n3,...i};e.line(`chart:leader:${o}:${t.s}:a`,{x:s,y:l+1},{x:s,y:l+3},n,"middle"),e.line(`chart:leader:${o}:${t.s}:b`,{x:s,y:l+3},{x:a+t.text.width/2,y:r-1},n,"middle"),e.text(`chart:value:${o}:${t.s}`,t.text,a,r,12,n3,"center",i)})}});let M=x.labels[0].height;if(a.valueAxisTitle){let t=n9(a.valueAxisTitle,480,14);e.text("chart:value-axis-title",t,(480-t.width)/2,b+6+M+10,14,n3)}if(a.categoryAxisTitle){let t=n9(a.categoryAxisTitle,Math.max(d,160),14);e.text("chart:category-axis-title",t,-10-t.width,-8-t.height,14,n3,"right")}}(a,e):function(e,t){let{diagram:a,stacked:i,colors:s}=t,l=a.categories.length,o=df(t),r="vertical"===a.orientation,n=n8("0",12).height+4+2,d=a.categories.map((e,t)=>t),c=dm(t.domain,300,(e,a)=>d.some(s=>(i?void 0!==t.totals[s].up:t.labels[s].some(e=>e.value>=0))&&(e.max-(i?t.totals[s].up?.value??0:Math.max(0,...t.labels[s].map(e=>e.value))))*a<n),(e,a)=>d.some(s=>(i?void 0!==t.totals[s].down:t.labels[s].some(e=>e.value<0))&&((i?t.totals[s].down?.value??0:Math.min(0,...t.labels[s].map(e=>e.value)))-e.min)*a<n)),p=e=>{let i=300/(e.max-e.min),s=t=>(e.max-t)*i;return a.categories.map((e,i)=>{let l=0,r=0;return a.series.map((e,a)=>{let{value:n,text:d}=t.labels[i][a],c=n>=0?l:r,p=c+n;n>=0?l=p:r=p;let h=s(Math.max(c,p)),g=s(Math.min(c,p));g-h<.5&&(n>=0?h=g-.5:g=h+.5);let u=g-h>=d.height+1&&d.width+6<=o.thickness;return{s:a,value:n,text:d,top:h,bottom:g,inside:u}})})};for(let e=0;i&&e<6;e+=1){let e=p(c),t=c.max/(c.max-c.min)*300,a=t=>Math.max(0,...e.map(e=>e.filter(e=>!e.inside&&e.value>=0===t).reduce((e,t)=>e+t.text.height+2,0))),i=a(!0)>0&&a(!0)>t-2,s=a(!1)>0&&a(!1)>300-t-2;if(!i&&!s)break;c=nX(c,s,i)}let h=300/(c.max-c.min),g=e=>(c.max-e)*h,u=p(c),f=e=>Math.max(o.thickness,t.totals[e].up?.text.width??0,t.totals[e].down?.text.width??0)/2,m=i?Math.max(0,...u.flat().flatMap(e=>e.inside?[]:[e.text.width])):0,v=Math.max(du(a.categories,o.band,r?3:2,r?200:161),320/l,m>0?2*Math.max(...d.map(f))+10+m+6:0),y=dh(c,t.parts),w=Math.max(...y.labels.map(e=>e.width)),x=v*l;c.ticks.forEach((t,a)=>{let i=g(t),s=y.labels[a];e.line(`chart:grid:${a}`,{x:0,y:i},{x:x,y:i},{strokeColor:n5}),e.text(`chart:tick:${a}`,s,-8-s.width,i-s.height/2,13,n3,"right")});let b=g(0);e.line("chart:baseline",{x:0,y:b},{x:x,y:b},{strokeColor:n4,strokeWidth:2},"middle");let k=o.bars*o.thickness+(o.bars-1)*2,M=300;if(a.categories.forEach((l,r)=>{let n=0+v*(r+.5),d=n-k/2,c=n9(l,v-10,14),p=e.text(`chart:category:${r}`,c,n-c.width/2,308,14,n2);if(M=Math.max(M,p.bottom),a.series.forEach((n,c)=>{let p,h,{value:f,text:m}=t.labels[r][c],v=s[c],y=`chart:bar:${r}:${c}`,w={groupIds:[i?`chart:stack:${r}`:y]},x=i?d:d+c*(o.thickness+2);i?{top:p,bottom:h}=u[r][c]:(p=g(Math.max(0,f)),(h=g(Math.min(0,f)))-p<.5&&(f>=0?p=h-.5:h=p+.5));let b=`${l} \xb7 ${dp(a,c)}: ${m.text}`;if(0!==f&&e.mark(y,"rectangle",{x:x,y:p,width:o.thickness,height:h-p},b,i?{fillColor:v,strokeColor:e.surface,strokeWidth:2,...w}:{fillColor:v,strokeColor:v,...w}),i){u[r][c].inside&&e.text(`chart:value:${r}:${c}`,m,x+(o.thickness-m.width)/2,(p+h-m.height)/2,12,dl(v),"center",w);return}let k=f>=0?p-4-m.height:h+4;e.text(`chart:value:${r}:${c}`,m,x+(o.thickness-m.width)/2,k,12,n3,"center",w)}),i){let t=u[r].filter(e=>!e.inside),a=n+f(r)+10,i=new Map;for(let e of[!0,!1]){let a=t.filter(t=>t.value>=0===e);da(a.map(e=>({preferred:(e.top+e.bottom)/2,size:e.text.height})),e?0:b+2,e?b-2:300,2).forEach((e,t)=>i.set(a[t],e))}let s={groupIds:[`chart:stack:${r}`]};t.forEach(t=>{let l=i.get(t),n=(t.top+t.bottom)/2,c={strokeColor:n3,...s};e.line(`chart:leader:${r}:${t.s}:a`,{x:d+o.thickness+1,y:n},{x:a-4,y:n},c,"middle"),e.line(`chart:leader:${r}:${t.s}:b`,{x:a-4,y:n},{x:a-1,y:l+t.text.height/2},c,"middle"),e.text(`chart:value:${r}:${t.s}`,t.text,a,l,12,n3,"left",s)})}if(i){let a=t.totals[r],i={groupIds:[`chart:stack:${r}`]};a.up&&e.text(`chart:total:${r}`,a.up.text,n-a.up.text.width/2,g(a.up.value)-4-a.up.text.height,12,n2,"center",i),a.down&&e.text(`chart:total-negative:${r}`,a.down.text,n-a.down.text.width/2,g(a.down.value)+4,12,n2,"center",i)}}),a.valueAxisTitle){let t=n9(a.valueAxisTitle,Math.max(x+w,200),14),i=y.labels[y.labels.length-1];e.text("chart:value-axis-title",t,-8-w,-i.height/2-8-t.height,14,n3,"left")}if(a.categoryAxisTitle){let t=n9(a.categoryAxisTitle,Math.max(x,200),14);e.text("chart:category-axis-title",t,(0+x-t.width)/2,M+12,14,n3)}}(a,e),dd(a,t,{legend:"bar",colors:e.colors})}a.breakRulesUnderText(e=>e.startsWith("chart:grid:")||e.startsWith("chart:category-tick:")||"chart:baseline"===e||"chart:axis"===e);let i=a.bounds(),s=40-i.left,l=40-i.top,o=a.elements.map(e=>{if("line"===e.type){let[t,a,...i]=e.points.map(e=>({x:de(e.x+s),y:de(e.y+l)}));return{...e,points:[t,a,...i]}}return"arrow"===e.type?e:{...e,x:de(e.x+s),y:de(e.y+l)}});return{kind:"canvas",version:1,diagramId:t.id,title:t.title,width:Math.ceil(i.right-i.left+80),height:Math.ceil(i.bottom-i.top+80),accentColor:t.style.accentColor,backgroundColor:t.style.backgroundColor,elements:o,layers:[],layouts:[],zOrder:a.zOrder()}})(fS(u)),catch:e=>new f3({status:"render_failed",context:{...w,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:u.id},message:e instanceof Error?e.message:"Unable to render chart scene.",hint:"Repair the categories and series values and retry."})]}})}).pipe(o.fRP("codeMode.buildChart.render")),b=ii(x);if(b.length>0)return yield*new f3({status:"render_failed",context:{...w,issues:mm(b).map(e=>({...e,hint:"Use fewer categories or series and retry buildChart."}))}});let k={...w,partial:mU(x)},M=yield*m$({scene:x,formats:mp(h.options),inlineFormats:mh(h.options),...h.requestId?{requestId:h.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new f3({status:e.status,context:{..."export_failed"===e.status?k:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:g,...mO(h.requestId),normalizedSpec:u,quality:v,artifact:M,issues:[]}}),mJ=o.fn("codeMode.buildGantt.workflow")(function*(e){var t,a,i;let l,r,n=s.q$Z(l5,{errors:"all",reportInput:!0})(e);if(!uR.oJ(n))return yield*new f5({status:"invalid_input",context:{issues:mr(sl(n.failure))}});let d=yield*fz,c=n.success,p=yield*o.OH5(()=>d.createId("build")),h=(l=se((t=c.spec).title),{id:md(t.id)??(mn(l)||"sketchi-gantt"),title:l,tasks:t.tasks.map(e=>{let t=md(e.phase);return{...e,id:se(e.id),label:se(e.label),start:se(e.start),...void 0!==e.end?{end:se(e.end)}:{},...void 0!==t?{phase:t}:{},...e.dependsOn?{dependsOn:e.dependsOn.map(se)}:{}}}),...t.phases?{phases:t.phases.map(se)}:{},...t.today?{today:se(t.today)}:{},style:{...y}}),g={buildId:p,...mO(c.requestId),normalizedSpec:h},u=tu(fA(h)).map(e=>me({code:fP[e.code],stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:e.message,hint:e.hint}));if(u.length>0)return yield*new f5({status:"invalid_gantt",context:{...g,issues:u}});let f={accepted:10>=(a=c.options?.minQualityScore??8),score:10,threshold:a,summary:{nodeCount:h.tasks.length,edgeCount:h.tasks.reduce((e,t)=>e+(t.dependsOn?.length??0),0)},checks:[]},m={...g,quality:f};if(!f.accepted)return yield*new f5({status:"quality_failed",context:{...m,issues:mc(f)}});let v=yield*o.SvU({try:()=>(function(e){var t,a,i;let s=tm(e),l=[cd(s,44,co)],o=l[0],r=co;if(!(0===(t=o).crossings&&Object.values(t.findings).every(e=>0===e))){let e,t,n=cd(s,44,cr),d=cr;l.push(n),n.clear||(n=cd(s,44,cn),d=cn,l.push(n)),n.clear&&(a=o,i=n,e=Object.keys(a.findings),t=t=>e.reduce((e,a)=>e+t[a],0),!(a.crossings<=i.crossings&&t(a.findings)<=t(i.findings)&&e.every(e=>a.findings[e]<=i.findings[e]+1)))&&(o=n,r=d)}for(let e of dW){if(0===o.work.conflicts||o.work.conflicts>4)break;let t=cd(s,44+e,r);l.push(t),t.work.conflicts<o.work.conflicts&&(o=t)}return{scene:o.scene,work:{layouts:l.length,placements:l.reduce((e,{work:t})=>e+t.placements,0),expansions:l.reduce((e,{work:t})=>e+t.expansions,0),corridors:o.work.corridors,conflicts:o.work.conflicts}}})(fA(h)).scene,catch:e=>new f5({status:"render_failed",context:{...m,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render Gantt scene.",hint:"Repair the tasks' dates and dependencies and retry."})]}})}).pipe(o.fRP("codeMode.buildGantt.render")),w=ii(v);if(w.length>0)return yield*new f5({status:"render_failed",context:{...m,issues:mm(w).map(e=>({...e,hint:"Use fewer tasks or dependencies and retry buildGantt."}))}});let x={...m,partial:mU(v)},b=yield*m$({scene:v,formats:mp(c.options),inlineFormats:mh(c.options),...c.requestId?{requestId:c.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new f5({status:e.status,context:{..."export_failed"===e.status?x:m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:p,...mO(c.requestId),normalizedSpec:h,quality:f,artifact:b,issues:(r=new Map((i=fA(h)).tasks.map(e=>[e.id,e])),i.tasks.flatMap((e,t)=>{let a=tc(e);return(e.dependsOn??[]).flatMap((i,s)=>{let l=r.get(i),o=l&&tc(l);if(!a||!o)return[];let n=o.milestone?o.start:o.end-!!a.milestone;return a.start>=n?[]:[{task:e.id,dependsOn:i,finishes:tn(o.milestone?o.start:o.end-1),path:`tasks.[${t}].dependsOn.[${s}]`}]})})).map(e=>me({code:"gantt_schedule_conflict",severity:"warning",stage:"input",ref:{kind:"request",path:`spec.${e.path}`},message:`Task "${e.task}" starts before "${e.dependsOn}" finishes on ${e.finishes}.`,hint:`Keep dates the prompt states; otherwise start "${e.task}" after ${e.finishes}.`}))}}),mK=s._kM({spec:s.$r1,requestId:s.Qrq(s.$r1)}),mQ=s._kM({source:s._kM({scene:s.$r1})}),m1=o.fn("codeMode.canvas.serializedLimit")((e,t)=>o.SvU(()=>r5(e)).pipe(o.YWq({onFailure:()=>me({code:"invalid_type",stage:"input",ref:{kind:"request",path:t},message:"CanvasSpec could not be serialized as JSON.",hint:"Remove non-JSON values or reduce deeply nested fields and retry."}),onSuccess:e=>e<=a$.maxSerializedBytes?void 0:me({code:"canvas_limit_exceeded",stage:"canvas",ref:{kind:"request",path:t},message:`CanvasSpec exceeds ${a$.maxSerializedBytes} serialized bytes.`,hint:"Split the visualization into a smaller canvas or reduce repeated text and points."})}))),m0=o.fn("codeMode.createCanvas.workflow")(function*(e){let t=yield*fz,a=yield*o.OH5(()=>t.createId("build")),i=s.q$Z(mK)(e),l=uR.oJ(i)?{spec:i.success.spec,requestId:s.is(s.QfV)(i.success.requestId)?i.success.requestId:void 0}:void 0;if(l){let e=yield*m1(l.spec,"spec");if(e)return yield*new f4({status:"canvas_limit_exceeded"===e.code?"limit_exceeded":"invalid_input",context:{buildId:a,...mO(l.requestId),issues:[e]}})}let r=s.q$Z(oE,{errors:"all",reportInput:!0})(e);if(!uR.oJ(r))return yield*new f4({status:"invalid_input",context:{issues:mr(sl(r.failure))}});let n=r.success,d={buildId:a,...mO(n.requestId)},c=my(n.spec);if(!c)return yield*new f4({status:"invalid_canvas",context:{...d,issues:[me({code:"invalid_canvas_geometry",stage:"canvas",ref:{kind:"request",path:"spec.elements"},message:"CanvasSpec contains an invalid point list.",hint:"Provide at least two points for lines/connectors and three points for polygons."})]}});let p=ii(c).filter(e=>"limit_exceeded"===e.code);if(p.length>0)return yield*new f4({status:"limit_exceeded",context:{...d,issues:mm(p)}});let h=yield*fp(function(e){let t=[...e.elements];for(let a of e.layouts)t=function(e,t){switch(t.type){case"row":case"column":case"stack":return function(e,t){let a=il(e,t.ids),i=a[0];if(!i)return[...e];let s=is(i),l=t.x??s.x,o=t.y??s.y,r="stack"===t.type?t.gap??0:t.gap??32,n=new Map,d="column"===t.type?o:l;for(let e of a){let a=is(e);n.set(e.id,{x:"column"===t.type||"stack"===t.type?l:d,y:"column"===t.type?d:o}),"stack"!==t.type&&(d+=("column"===t.type?a.height:a.width)+r)}return io(e,n)}(e,t);case"grid":return function(e,t){let a=il(e,t.ids);if(0===a.length)return[...e];let i=Math.max(1,Math.floor(t.columns)),s=a.map(is),l=Array.from({length:i},(e,t)=>Math.max(0,...s.filter((e,a)=>a%i===t).map(e=>e.width))),o=Array.from({length:Math.ceil(a.length/i)},(e,t)=>Math.max(0,...s.filter((e,a)=>Math.floor(a/i)===t).map(e=>e.height))),r=s[0];if(!r)return[...e];let n=t.x??r.x,d=t.y??r.y,c=t.columnGap??32,p=t.rowGap??32,h=new Map;return a.forEach((e,t)=>{let a=t%i,s=Math.floor(t/i);h.set(e.id,{x:n+l.slice(0,a).reduce((e,t)=>e+t,0)+c*a,y:d+o.slice(0,s).reduce((e,t)=>e+t,0)+p*s})}),io(e,h)}(e,t);case"align":return function(e,t){let a=il(e,t.ids);if(0===a.length)return[...e];let i=a.map(is),s=i.map(e=>ir(e,t.axis)),l=i.map(e=>ir(e,t.axis)+id(e,t.axis)),o=i.map(e=>ir(e,t.axis)+id(e,t.axis)/2),r="start"===t.alignment?Math.min(...s):"end"===t.alignment?Math.max(...l):o.reduce((e,t)=>e+t,0)/o.length,n=new Map;return a.forEach((e,a)=>{let s=i[a];if(!s)return;let l="start"===t.alignment?r:"end"===t.alignment?r-id(s,t.axis):r-id(s,t.axis)/2;n.set(e.id,{x:"x"===t.axis?l:s.x,y:"y"===t.axis?l:s.y})}),io(e,n)}(e,t);case"distribute":return function(e,t){let a=il(e,t.ids).sort((e,a)=>ir(is(e),t.axis)-ir(is(a),t.axis));if(a.length<2)return[...e];let i=a.map(is),s=i[0],l=i[i.length-1];if(!s||!l)return[...e];let o=ir(s,t.axis),r=ir(l,t.axis)+id(l,t.axis),n=i.reduce((e,a)=>e+id(a,t.axis),0),d=t.gap??Math.max(0,(r-o-n)/(a.length-1)),c=new Map,p=o;return a.forEach((e,a)=>{let s=i[a];s&&(c.set(e.id,{x:"x"===t.axis?p:s.x,y:"y"===t.axis?p:s.y}),p+=id(s,t.axis)+d)}),io(e,c)}(e,t)}}(t,a);let a=function(e){let t=1,a=1;for(let i of e)if(a5(i)){let e=is(i);t=Math.max(t,e.x+e.width),a=Math.max(a,e.y+e.height)}else if("arrow"===i.type||"line"===i.type)for(let e of i.points)t=Math.max(t,e.x),a=Math.max(a,e.y);return{width:t+48,height:a+48}}(t=function(e){let t=iu(e),a=new Map;for(let t of e)("node"===t.type||"frame"===t.type)&&a.set(t.id,t);let i=e.map(e=>{if("arrow"===e.type){let a=t.get(e.sourceNodeId),i=t.get(e.targetNodeId);if(!a||!i)return e;if(e.curved){let t=e.points[0],s=e.points[e.points.length-1]??t;return ih(t,a)&&ih(s,i)?e:{...e,points:ig(a,i)}}return{...e,points:[ip(a,ic(i)),...e.points.slice(1,-1),ip(i,ic(a))]}}if("line"===e.type){let t=e.startBinding?a.get(e.startBinding.elementId):void 0,i=e.endBinding?a.get(e.endBinding.elementId):void 0;if(!t&&!i)return e;let s=[e.points[0],e.points[1],...e.points.slice(2)];return t&&(s[0]=ip(t,i?ic(i):s[s.length-1]??s[0])),i&&(s[s.length-1]=ip(i,t?ic(t):s[0])),{...e,points:s}}return e}),s=new Map(i.map(e=>[e.id,e]));return i.map(e=>{if("text"!==e.type||!e.containerId)return e;let t=s.get(e.containerId);if(t?.type==="node"){let a=ic(t);return{...e,x:a.x,y:a.y}}if(t?.type==="arrow"){let a=t.points[0],i=t.points[t.points.length-1]??a;return{...e,x:(a.x+i.x)/2,y:(a.y+i.y)/2}}return e})}(t)),i=e.zOrder.length?[...e.zOrder]:t.map((e,t)=>({element:e,index:t})).sort((e,t)=>(e.element.zIndex??e.index)-(t.element.zIndex??t.index)).map(({element:e})=>e.id);return{...e,width:Math.max(e.width,a.width),height:Math.max(e.height,a.height),elements:t,zOrder:i}}(c),t.icons),g=h.scene,u=mw(g),f=ii(g);if(f.length>0){let e=mm(f);return yield*new f4({status:e.some(e=>"canvas_limit_exceeded"===e.code)?"limit_exceeded":"invalid_canvas",context:{...d,normalizedSpec:u,issues:[...h.issues,...e]}})}let m={...d,normalizedSpec:u,partial:mU(g)},v=yield*m$({scene:g,formats:mp(n.options),inlineFormats:mh(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mv}).pipe(o.xm_(e=>new f4({status:e.status,context:{...m,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:a,...mO(n.requestId),normalizedSpec:u,artifact:v,issues:h.issues}}),m2=o.fn("codeMode.buildFlowchart.workflow")(function*(e){var t,a;let i,l=s.q$Z(lK,{errors:"all",reportInput:!0})(function(e){if(!fy(e))return e;let{spec:t}=e;if(!fy(t)||!Array.isArray(t.nodes))return e;let a=t.nodes,i=!1,s=Array.isArray(t.edges)?t.edges:void 0,l=s?.map(e=>{if(!fy(e)||void 0!==e.source&&void 0!==e.target||void 0===e.from&&void 0===e.to)return e;i=!0;let{from:t,to:a,...s}=e;return{...s,source:e.source??t,target:e.target??a}}),o=(l??[]).filter(fy),r=new Map,n=e=>{let t=r.get(e);return t||r.set(e,t={incoming:0,outgoing:0,labeledOutgoing:0}),t};for(let e of o){let t=n(e.source);t.outgoing+=1,"string"==typeof e.label&&""!==e.label.trim()&&(t.labeledOutgoing+=1),n(e.target).incoming+=1}let d=a.filter(fy).filter(e=>0===n(e.id).incoming),c=a.map(e=>fy(e)?(e=>{let t=e.kind??e.type,{incoming:a,outgoing:i,labeledOutgoing:s}=n(e.id),l="string"==typeof e.label&&se(e.label).endsWith("?");if("string"==typeof t){let s=t.trim().toLowerCase().replace(/[\s_-]+/g,""),l=fm[s];if(l)return l;if(fv.has(s)){if(0===a&&i>0)return"start";if(0===i&&a>0)return"end"}return e.kind}return void 0!==t?e.kind:0===i&&a>0?"end":0===a&&1===d.length&&0===s?"start":a>0&&1===i&&0===s&&!l?"process":void 0})(e):void 0),p=a.some((e,t)=>fy(e)&&"end"===c[t]&&n(e.id).incoming>0&&0===n(e.id).outgoing),h=new Set(a.flatMap((e,t)=>fy(e)&&"decision"===c[t]?[e.id]:[])),g=new Set(o.filter(e=>h.has(e.source)&&"string"==typeof e.label&&""!==e.label.trim()).map(e=>e.target)),u=a.map((e,t)=>{if(!fy(e))return e;let a=c[t],s="string"==typeof e.label&&se(e.label).endsWith("?");if("process"===a&&p&&g.has(e.id)&&0===n(e.id).outgoing&&!s&&(a="end"),a===e.kind)return e;i=!0;let{type:l,...o}=e;return{...o,kind:a}});return i?{...e,spec:{...t,nodes:u,...l?{edges:l}:{}}}:e}(e));if(!uR.oJ(l))return yield*new fN({status:"invalid_input",context:{issues:mr(sl(l.failure),mo)}});let r=yield*fz,n=l.success,d=yield*o.OH5(()=>r.createId("build")),c=(i=se((a=n.spec).title),{id:ff(a.id)??(i.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"sketchi-flowchart"),title:i,nodes:a.nodes.map(e=>({id:se(e.id),label:se(e.label),kind:e.kind,...e.description?{description:se(e.description)}:{},...e.icon?{icon:{slug:se(e.icon.slug)}}:{},...e.group?{group:se(e.group)}:{},...e.lane?{lane:se(e.lane)}:{},...e.shape?{shape:e.shape}:{}})),edges:a.edges.map((e,t)=>({id:ff(e.id)??`edge-${t+1}`,source:se(e.source),target:se(e.target),...e.label?{label:se(e.label)}:{}})),...a.groups?{groups:a.groups.map(e=>({id:se(e.id),label:se(e.label),...e.parent?{parent:se(e.parent)}:{},...e.kind?{kind:e.kind}:{}}))}:{},...a.lanes?{lanes:a.lanes.map(e=>({id:se(e.id),label:se(e.label)}))}:{},layout:{direction:a.layout.direction},style:{...y}}),p=fc(c.nodes,r.icons,void 0,{fillNamedLogos:!0===r.fillNamedLogos}),h={...c,nodes:p.nodes},g={buildId:d,...mO(n.requestId),normalizedSpec:h},u=s.q$Z(ew,{errors:"all",reportInput:!0})({id:h.id,title:h.title,type:"flowchart",nodes:h.nodes.map(e=>({...e,metadata:{}})),edges:h.edges.map(e=>({...e,metadata:{}})),...h.groups?{groups:h.groups.map(e=>({...e}))}:{},...h.lanes?{lanes:h.lanes.map(e=>({...e}))}:{},layout:{direction:h.layout.direction,edgeRouting:"orthogonal"},style:h.style,metadata:{}});if(!uR.oJ(u))return yield*new fN({status:"invalid_flowchart",context:{...g,issues:(t=sl(u.failure),t.issues.slice(0,20).map(e=>{let t=function(e,t){let a=mt(e.path),i="input"===a?"spec":`spec.${a}`,[s,l]=e.path;if("nodes"===s&&"number"==typeof l){let e=t.nodes[l]?.id;return{kind:"node",...e?{id:e}:{},path:i}}if("edges"===s&&"number"==typeof l){let e=t.edges[l]?.id;return{kind:"edge",...e?{id:e}:{},path:i}}if("groups"===s&&"number"==typeof l){let e=t.groups?.[l]?.id;return{kind:"group",...e?{id:e}:{},path:i}}if("lanes"===s&&"number"==typeof l){let e=t.lanes?.[l]?.id;return{kind:"lane",...e?{id:e}:{},path:i}}return{kind:"diagram",id:t.id,path:i}}(e,h);return me({code:ma(e),stage:"flowchart",ref:t,message:e.message,hint:`Fix ${t.path??"spec"} so normalization produces a valid canonical flowchart value.`})}))}});let f=u.success,m=ek(f).map(e=>{let t=function(e){if(e)return{kind:e.kind,...e.id?{id:e.id}:{},...e.path?{path:`spec.${e.path}`}:{}}}(e.ref);return me({code:e.code,stage:"flowchart",...t?{ref:t}:{},message:e.message,hint:e.hint})});if(m.length>0)return yield*new fN({status:"invalid_flowchart",context:{...g,issues:m}});eC(f);let v=function(e,t){let a=[],i=0,s=(e,t,s,l=!1)=>{i+=e,a.push({...s,passed:!1,severity:l?"error":"warning",message:t})},l=new Map,o=new Map;for(let t of e.edges)l.set(t.source,(l.get(t.source)??0)+1),l.set(t.target,(l.get(t.target)??0)+1),o.set(t.source,[...o.get(t.source)??[],t]);if(e.nodes.length>1&&0===e.edges.length)s(5,"no edges at all — every node floats unconnected",{code:"disconnected_graph",refs:fu(e.nodes)},!0);else{let t=e.nodes.filter(e=>(l.get(e.id)??0)===0);t.length>0&&e.nodes.length>1&&s(Math.min(1.5*t.length,4.5),`unconnected node(s): ${t.map(e=>e.id).join(", ")}`,{code:"disconnected_graph",refs:fu(t)},!0);let a=function(e){let t=new Map;for(let a of e.nodes)t.set(a.id,[]);for(let a of e.edges)t.get(a.source)?.push(a.target),t.get(a.target)?.push(a.source);let a=new Set,i=0;for(let s of e.nodes){if(a.has(s.id))continue;i+=1;let e=[s.id];for(a.add(s.id);e.length>0;){let i=e.pop();if(void 0===i)break;for(let s of t.get(i)??[])a.has(s)||(a.add(s),e.push(s))}}return i}(e);a>1&&0===t.length&&s(2,`diagram splits into ${a} disconnected islands`,{code:"disconnected_graph",refs:fu(e.nodes)},!0)}e.nodes.length<3?s(2,"too sparse — a useful flow needs at least 3 nodes",{code:"graph_too_sparse",refs:[{kind:"diagram",id:e.id,path:"spec.nodes"}]}):e.nodes.length>24&&s(2,"too dense — trim or merge nodes (24 max)",{code:"graph_too_dense",refs:[{kind:"diagram",id:e.id,path:"spec.nodes"}]});let r=new Map;for(let t of e.nodes){let e=t.label.trim().toLowerCase();r.set(e,(r.get(e)??0)+1)}let n=[...r.entries()].filter(([,e])=>e>1);n.length>0&&s(Math.min(n.length,3),`duplicate label(s): ${n.map(([e])=>`"${e}"`).join(", ")}`,{code:"duplicate_label",refs:fu(e.nodes.filter(e=>(r.get(e.label.trim().toLowerCase())??0)>1))});let d=0,c=0;for(let t of e.nodes){if("decision"!==t.kind){t.label.endsWith("?")&&s(0,`question label on non-decision node "${t.id}"; use kind "decision" only for branch points`,{code:"question_label_not_decision",refs:fu([t])});continue}let e=o.get(t.id)??[];e.length<2?(d+=1,s(0,`decision "${t.id}" needs at least 2 outgoing branches`,{code:"underbranched_decision",refs:fu([t])},!0)):e.some(e=>!e.label)&&(c+=1,s(0,`label every branch out of decision "${t.id}" (yes/no, …)`,{code:"unlabeled_decision_branch",refs:fu([t])}))}i+=Math.min(1.5*d,4.5)+Math.min(c,3);let p=e.nodes.filter(e=>e.label.length>42);p.length>0&&s(Math.min(.5*p.length,2),`shorten label(s): ${p.map(e=>e.id).join(", ")}`,{code:"label_too_long",refs:fu(p)});let h=e.nodes.filter(e=>fh.test(e.label.trim()));h.length>0&&s(Math.min(h.length,3),`generic label(s) say nothing: ${h.map(e=>`"${e.label}"`).join(", ")}`,{code:"generic_label",refs:fu(h)}),(e.title.trim().length<4||fg.test(e.title.trim()))&&s(.5,"give the diagram a specific title",{code:"weak_title",refs:[{kind:"diagram",id:e.id,path:"spec.title"}]});let g=Math.max(0,Math.round((10-i)*10)/10);return{accepted:g>=t&&!a.some(e=>"error"===e.severity),score:g,threshold:t,summary:{nodeCount:e.nodes.length,edgeCount:e.edges.length},checks:a}}(f,n.options?.minQualityScore??8),w={...g,quality:v};if(!v.accepted)return yield*new fN({status:"quality_failed",context:{...w,issues:mc(v)}});let x=yield*o.SvU({try:()=>h3(X(f)),catch:e=>new fN({status:"render_failed",context:{...w,issues:[me({code:"render_failed",stage:"render",ref:{kind:"diagram",id:h.id},message:e instanceof Error?e.message:"Unable to render flowchart scene.",hint:"Simplify the graph or retry with a smaller flowchart."})]}})}).pipe(o.fRP("codeMode.buildFlowchart.render")),b=yield*fp(x,r.icons),k=b.scene,M={...w,partial:mU(k)},C=yield*m$({scene:k,formats:mp(n.options),inlineFormats:mh(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mf}).pipe(o.xm_(e=>new fN({status:e.status,context:{..."export_failed"===e.status?M:w,issues:e.issues}})));return{ok:!0,status:"accepted",buildId:d,...mO(n.requestId),normalizedSpec:h,quality:v,artifact:C,issues:[...p.issues,...b.issues,...k.elements.flatMap(e=>"text"===e.type&&e.id.startsWith("description:")&&e.text.split("\n").length>3?[e.id.slice(12)]:[]).map(e=>me({code:"label_too_long",severity:"warning",stage:"render",ref:{kind:"node",id:e,path:"spec.nodes.description"},message:`Node "${e}" has a description longer than 3 lines; it draws in full under the label.`,hint:"Keep a description to a short subtitle, and name technologies in the label."}))]}}),m3=o.fn("codeMode.getArtifact.workflow")(function*(e){let t=s.q$Z(o$,{errors:"all",reportInput:!0})(e);if(!uR.oJ(t))return yield*new f6({status:"invalid_input",context:{issues:mr(sl(t.failure))}});let a=yield*fz,i=yield*r1,l=t.success,r=yield*i.readManifest(l.artifactId).pipe(o.xm_(e=>new f6({status:"storage_failed",context:{issues:[mT(e,"storage_read_failed")]}})));if(!r)return yield*new f6({status:"not_found",context:{issues:[me({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" was not found.`,hint:"Use the artifactId returned by buildFlowchart or applyDiagramPatch."})]}});let n=l.format??"scene";if(!r.formats.some(e=>e.format===n))return yield*new f6({status:"format_unavailable",context:{issues:[me({code:"unsupported_artifact_format",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" does not include format "${n}".`,hint:"Request a format listed in the artifact bundle."})]}});let d=yield*i.read(l.artifactId,n).pipe(o.xm_(e=>new f6({status:"storage_failed",context:{issues:[mT(e,"storage_read_failed")]}})));return d?{ok:!0,artifactId:l.artifactId,diagramId:r.diagramId,format:n,mimeType:d.mimeType,...a.artifactUrl?{url:a.artifactUrl({artifactId:l.artifactId,format:n})}:{},...!0!==l.inline||!r2(n)?{}:{inline:d.data},sizeBytes:d.sizeBytes,...r.provenance?{provenance:r.provenance}:{}}:yield*new f6({status:"format_unavailable",context:{issues:[me({code:"patch_source_unavailable",stage:"storage",ref:{kind:"artifact",id:l.artifactId},message:`Artifact "${l.artifactId}" format "${n}" could not be read.`,hint:"Retry retrieval or rebuild the artifact."})]}})}),m5=o.fn("codeMode.applyDiagramPatch.workflow")(function*(e){let t,a=s.q$Z(mQ)(e),i=uR.oJ(a)?yield*m1(a.success.source.scene,"source.scene"):void 0;if(i)return yield*new f8({status:"invalid_input",context:{issues:[i]}});let l=s.q$Z(rt,{errors:"all",reportInput:!0})(e);if(!uR.oJ(l))return yield*new f8({status:"invalid_input",context:{issues:mr(sl(l.failure))}});let r=yield*fz,n=l.success,d=yield*o.OH5(()=>r.createId("patch")),c={patchId:d,...mO(n.requestId)},p=yield*mE(n).pipe(o.xm_(e=>new f8({status:e.status,context:{...c,...e.context}}))),h={...c,...p.sourceArtifactId?{sourceArtifactId:p.sourceArtifactId}:{}},g=p.scene;if(g.elements.length>a$.maxElements)t=[{code:"limit_exceeded",message:`Canvas exceeds ${a$.maxElements} elements.`,path:"elements"}];else{let e=my(g);t=e?ii(e).filter(e=>"limit_exceeded"===e.code):[]}if(t.length>0)return yield*new f8({status:"invalid_input",context:{...h,issues:mm(t)}});let u=mb(g),f=[];for(let e of n.operations)if((f=function(e,t){switch(t.op){case"setDefaultStyle":case"setStyle":if(t.style.backgroundColor&&(e.backgroundColor=t.style.backgroundColor),"setDefaultStyle"===t.op){for(let a of(t.style.strokeColor&&(e.accentColor=t.style.strokeColor),mk(e)))t.style.fillColor&&(a.fillColor=t.style.fillColor),t.style.strokeColor&&(a.strokeColor=t.style.strokeColor),t.style.textColor&&(a.textColor=t.style.textColor);for(let a of mC(e))t.style.strokeColor&&(a.strokeColor=t.style.strokeColor),t.style.textColor&&(a.textColor=t.style.textColor);for(let a of mM(e))t.style.textColor&&(a.textColor=t.style.textColor);return[]}let a=m_(e,t.selector);if(0===a.nodes.length&&0===a.arrows.length&&0===a.texts.length)return[mL(t)];for(let i of a.nodes)if(t.style.fillColor&&(i.fillColor=t.style.fillColor),t.style.strokeColor&&(i.strokeColor=t.style.strokeColor),t.style.textColor){i.textColor=t.style.textColor;let a=mB(e,i.id);a&&(a.textColor=t.style.textColor)}for(let i of a.arrows)if(t.style.strokeColor&&(i.strokeColor=t.style.strokeColor),t.style.textColor){i.textColor=t.style.textColor;let a=mB(e,i.id);a&&(a.textColor=t.style.textColor)}for(let e of a.texts)t.style.textColor&&(e.textColor=t.style.textColor);return[];case"setShape":let i=m_(e,t.selector);if(0===i.nodes.length)return[mL(t)];let s=[];for(let a of i.nodes){if(a.shape=t.shape,"polygon"===t.shape?a.points=[{x:a.width/2,y:0},{x:a.width,y:a.height/2},{x:a.width/2,y:a.height},{x:0,y:a.height/2}]:delete a.points,"circle"===t.shape){let e=Math.max(a.width,a.height);a.x-=(e-a.width)/2,a.y-=(e-a.height)/2,a.width=e,a.height=e,s.push(a.nodeId)}!function(e,t){let a=mB(e,t.id);a&&(a.x=t.x+t.width/2,a.y=t.y+t.height/2)}(e,a)}return mA(e,s),[];case"translate":return function(e,t){let a=m_(e,t.selector);if(0===a.nodes.length&&0===a.arrows.length&&0===a.texts.length)return[mL(t)];let i=new Set,s=new Set;for(let l of a.nodes){l.x+=t.dx,l.y+=t.dy,i.add(l.nodeId);let a=mB(e,l.id);a&&(a.x+=t.dx,a.y+=t.dy,s.add(a.id))}for(let i of a.arrows){i.points=i.points.map(e=>{var a,i;return a=t.dx,i=t.dy,{x:e.x+a,y:e.y+i}});let a=mB(e,i.id);a&&(a.x+=t.dx,a.y+=t.dy,s.add(a.id))}for(let e of a.texts)s.has(e.id)||(e.x+=t.dx,e.y+=t.dy);return mA(e,[...i]),mq(e),[]}(e,t);case"replaceText":let l=m_(e,t.selector);if(0===l.nodes.length&&0===l.arrows.length&&0===l.texts.length)return[mL(t)];for(let a of l.nodes){a.label=t.text;let i=mB(e,a.id);i&&(i.text=t.text)}for(let a of l.arrows){a.label=t.text;let i=mB(e,a.id);i&&(i.text=t.text)}for(let e of l.texts)e.text=t.text;return[];case"rerouteEdges":let o;return 0===(o=m_(e,t.selector)).arrows.length?[mL(t)]:o.arrows.flatMap(t=>mH(e,t));case"insert":let r=new Set(e.elements.map(e=>e.id)),n=t.elements.map(e=>e.id);if(new Set(n).size!==n.length||n.some(e=>r.has(e)))return mI(t,"Inserted elements must use ids that are unique within the canvas.");let d=mF(e.zOrder,t.beforeId,t.afterId);return void 0===d?mI(t,"Insert specifies an unknown anchor or both beforeId and afterId."):(e.elements.push(...t.elements.map(e=>structuredClone(e))),e.zOrder.splice(d,0,...n),[]);case"remove":return function(e,t){let a,i=function(e,t){let a=m_(e,t),i=new Set([...a.nodes.map(e=>e.id),...a.arrows.map(e=>e.id),...a.texts.map(e=>e.id)]),s=new Set(t.ids??[]);for(let t of e.elements)s.has(t.id)&&i.add(t.id);return i}(e,t.selector);if(0===i.size)return[mL(t)];let s=new Set(e.elements.flatMap(e=>"node"===e.type&&i.has(e.id)?[e.nodeId]:[]));do for(let t of(a=i.size,e.elements))("text"===t.type&&(t.containerId&&i.has(t.containerId)||mC(e).some(a=>i.has(a.id)&&mB(e,a.id)?.id===t.id))||"arrow"===t.type&&(s.has(t.sourceNodeId)||s.has(t.targetNodeId))||"line"===t.type&&(t.startBinding&&i.has(t.startBinding.elementId)||t.endBinding&&i.has(t.endBinding.elementId)))&&i.add(t.id);while(i.size!==a)let l=e.elements.filter(e=>!i.has(e.id)).map(e=>{if(e.frameId&&i.has(e.frameId)){let{frameId:t,...a}=e;return a}return e});e.elements.splice(0,e.elements.length,...l);let o=e.zOrder.filter(e=>!i.has(e));e.zOrder.splice(0,e.zOrder.length,...o);let r=e.layouts.map(e=>({...e,ids:e.ids.filter(e=>!i.has(e))})).filter(e=>e.ids.length>0);return e.layouts.splice(0,e.layouts.length,...r),mq(e),[]}(e,t);case"replace":let c;return(c=e.elements.findIndex(e=>e.id===t.id))<0?[mL(t)]:t.element.id!==t.id?mI(t,"Replacement element id must match the stable id being replaced."):(e.elements.splice(c,1,structuredClone(t.element)),mq(e),[]);case"reorder":let p=new Set(t.ids);if(p.size!==t.ids.length||t.ids.some(t=>!e.zOrder.includes(t)))return mI(t,"Reorder ids must be unique ids already present in zOrder.");let h=e.zOrder.filter(e=>!p.has(e)),g=mF(h,t.beforeId,t.afterId);return void 0===g?mI(t,"Reorder specifies an unknown anchor or both beforeId and afterId."):(h.splice(g,0,...t.ids),e.zOrder.splice(0,e.zOrder.length,...h),[]);case"group":case"ungroup":let u=new Set(t.ids);if(t.ids.some(t=>!e.elements.some(e=>e.id===t)))return[mL(t)];let f=e.elements.map(e=>u.has(e.id)?"group"===t.op?{...e,groupIds:[...new Set([...e.groupIds??[],t.groupId])]}:{...e,groupIds:t.groupId?(e.groupIds??[]).filter(e=>e!==t.groupId):[]}:e);return e.elements.splice(0,e.elements.length,...f),[]}}(g,e)).length>0)break;if(f.length>0)return yield*new f8({status:f[0]?.code==="unknown_patch_target"?"target_not_found":"unsupported_operation",context:{...h,issues:f}});if(n.options?.preserveConnectivity!==!1){let e=mb(g);if(!(u.length===e.length&&u.every((t,a)=>t===e[a])))return yield*new f8({status:"connectivity_changed",context:{...h,issues:[me({code:"patch_preserve_connectivity_failed",stage:"flowchart",ref:{kind:"diagram",id:g.diagramId},message:"Patch changed the diagram edge connectivity.",hint:"Use buildFlowchart for process-graph structure or buildMindmap for hierarchy structure."})]}})}let m=my(g);if(!m)return yield*new f8({status:"render_failed",context:{...h,issues:[me({code:"patch_output_invalid",stage:"render",ref:{kind:"diagram",id:g.diagramId},message:"Patched scene has an invalid arrow point list.",hint:"Reroute edges or rebuild the flowchart artifact."})]}});let v=yield*fp(m,r.icons),y=v.scene,w=ii(y);if(w.length>0)return yield*new f8({status:"render_failed",context:{...h,partial:mU(y),issues:[...v.issues,...mm(w)]}});let x={...h,partial:mU(y)},b=yield*m$({scene:y,formats:mp(n.options),inlineFormats:mh(n.options),...n.requestId?{requestId:n.requestId}:{},validationIssues:mv,...p.sourceArtifactId?{provenance:{sourceArtifactId:p.sourceArtifactId}}:{}}).pipe(o.xm_(e=>new f8({status:e.status,context:{..."export_failed"===e.status?x:h,issues:e.issues}})));return{ok:!0,status:"accepted",patchId:d,...mO(n.requestId),...p.sourceArtifactId?{sourceArtifactId:p.sourceArtifactId}:{},artifact:b,issues:v.issues}}),m4=o.fn("codeMode.searchIcons.workflow")(function*(e){let t=s.q$Z(rj,{errors:"all",reportInput:!0})(e);if(!uR.oJ(t))return yield*new f7({status:"invalid_input",context:{issues:mr(sl(t.failure))}});let a=yield*fz,i=se(t.success.q),l=a.icons?.search(i,t.success.limit??10)??[];return{ok:!0,status:"accepted",query:i,icons:l.map(({collection:e,match:t,name:a,slug:i})=>({collection:e,name:a,slug:i,match:t})),issues:a.icons?[]:[me({code:"unknown_icon",severity:"warning",stage:"input",ref:{kind:"request",path:"q"},message:"This Sketchi runtime has no icon catalog.",hint:"Omit node icons on this host."})]}});function m6(e,t,a){return o.fn(`codeMode.${e}`)(i=>{var s,l,n;let d,c,p,h;return s=e,l=i,n=t(i).pipe(o.YWq({onFailure:a,onSuccess:e=>e})),uY(o.JkU(function*(){let e=yield*r.Ru,t=yield*n,a=yield*r.Ru,i=t.ok?"success":"failure",l=t.ok?void 0:t.status??"unknown_failure";yield*uG(fb,1,{...l?{failureCategory:l}:{},operation:s,outcome:i,surface:"code_mode"}),yield*uG(fC,a-e,{...l?{failureCategory:l}:{},operation:s,outcome:i,surface:"code_mode"}),l&&(yield*uG(fk,1,{failureCategory:l,operation:s,surface:"code_mode"}));let o="buildFlowchart"===s?"flowchart":"buildMindmap"===s?"mindmap":"buildSequenceDiagram"===s?"sequence":"buildTimeline"===s?"timeline":"buildChart"===s?"chart":"buildGantt"===s?"gantt":"buildStateMachine"===s?"state-machine":"buildErDiagram"===s?"er":"buildClassDiagram"===s?"class":"buildOrgChart"===s?"org-chart":"createCanvas"===s?"canvas":"applyDiagramPatch"===s?"patch":void 0;return t.ok&&o&&(yield*uG(fM,1,{artifactKind:o,operation:s,surface:"code_mode"})),t}),(d=fL(l),c=fL(d?.source),p="string"==typeof d?.artifactId?d.artifactId:"string"==typeof c?.artifactId?c.artifactId:void 0,h="string"==typeof d?.requestId?d.requestId:void 0,{...p?{artifactId:p}:{},...h?{requestId:h}:{}}))})}let m7=m6("buildFlowchart",m2,mX),m8=m6("buildMindmap",mY,mX),m9=m6("buildSequenceDiagram",mG,mX),ve=m6("buildStateMachine",mR,mX),vt=m6("buildErDiagram",mD,mX),va=m6("buildClassDiagram",mZ,mX),vi=m6("buildOrgChart",mj,mX),vs=m6("buildTimeline",mN,mX),vl=m6("buildChart",mW,mX),vo=m6("buildGantt",mJ,mX);m6("createCanvas",m0,mX),m6("getArtifact",m3,mX),m6("searchIcons",m4,mX);let vr=m6("applyDiagramPatch",m5,mX),vn=h,vd={flowchart:la,mindmap:od,sequence:lr,timeline:ld,chart:lp,"state-machine":lv,gantt:lw,er:l_,class:lE,"org-chart":l$};function vc(e){return vn.some(t=>t===e)}function vp(e,t){let a={spec:e.spec,...t?{options:t}:{}};switch(e.type){case"flowchart":return m7(a);case"mindmap":return m8(a);case"sequence":return m9(a);case"timeline":return vs(a);case"chart":return vl(a);case"state-machine":return ve(a);case"gantt":return vo(a);case"er":return vt(a);case"class":return va(a);case"org-chart":return vi(a)}}},4733(e,t,a){function i(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function s(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}function l(e){var t;return i(e)&&s(e.aliases)&&"number"==typeof e.bytes&&"string"==typeof e.collection&&s(e.keywords)&&"string"==typeof e.name&&"string"==typeof e.slug&&"string"==typeof e.svgPath&&(void 0===e.variant||"string"==typeof e.variant)&&i(t=e.viewBox)&&"number"==typeof t.height&&"number"==typeof t.minX&&"number"==typeof t.minY&&"number"==typeof t.width}function o(e){if(!i(e)||1!==e.version||!Array.isArray(e.icons)||!e.icons.every(l)||!i(e.summary)||"number"!=typeof e.summary.totalIcons||void 0!==e.generatedAt&&"string"!=typeof e.generatedAt)throw Error("Icon manifest does not match the public contract.");return{..."string"==typeof e.generatedAt?{generatedAt:e.generatedAt}:{},icons:e.icons,summary:{collectionCounts:function(e){if(!i(e))throw Error("Icon manifest collection counts are invalid.");let t={};for(let[a,i]of Object.entries(e)){if("number"!=typeof i)throw Error(`Icon manifest count for ${a} is invalid.`);t[a]=i}return t}(e.summary.collectionCounts),totalIcons:e.summary.totalIcons},version:1}}function r(e){return"gcp"===e?"Google Cloud":"gcp-legacy"===e?"Google Cloud Classic":e.split("-").map(e=>["ai","ci","iot","paas"].includes(e)?e.toUpperCase():e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}a.d(t,{L:()=>o,y:()=>r})},8713(e,t,a){let i=/<svg\b[^>]*>/u,s=/\sviewBox\s*=\s*(["'])([^"']*)\1/u;function l(e){return void 0===e.variant&&e.bytes<=65536}function o(e){let t=i.exec(e);if(!t)throw Error("Node logo source has no <svg> root element.");let a=t[0],l=s.exec(a)?.[2]?.trim().split(/[\s,]+/u).map(Number);if(!l||4!==l.length||l.some(e=>!Number.isFinite(e))||!((l[2]??0)>0&&(l[3]??0)>0))throw Error("Node logo source has no valid viewBox.");let o=[/\sxmlns\s*=/u.test(a)?"":' xmlns="http://www.w3.org/2000/svg"',/\swidth\s*=/u.test(a)?"":` width="${l[2]}"`,/\sheight\s*=/u.test(a)?"":` height="${l[3]}"`].join("");if(!o)return e;let r=t.index+4;return`${e.slice(0,r)}${o}${e.slice(r)}`}a.d(t,{Bn:()=>o,nC:()=>l})},9095(e){e.exports=JSON.parse('[{"name":"Agola CI","constant":"AGOLA","env":"AGOLA_GIT_REF","pr":"AGOLA_PULL_REQUEST_ID"},{"name":"Alpic","constant":"ALPIC","env":"ALPIC_HOST"},{"name":"Appcircle","constant":"APPCIRCLE","env":"AC_APPCIRCLE","pr":{"env":"AC_GIT_PR","ne":"false"}},{"name":"AppVeyor","constant":"APPVEYOR","env":"APPVEYOR","pr":"APPVEYOR_PULL_REQUEST_NUMBER"},{"name":"AWS CodeBuild","constant":"CODEBUILD","env":"CODEBUILD_BUILD_ARN","pr":{"env":"CODEBUILD_WEBHOOK_EVENT","any":["PULL_REQUEST_CREATED","PULL_REQUEST_UPDATED","PULL_REQUEST_REOPENED"]}},{"name":"Azure Pipelines","constant":"AZURE_PIPELINES","env":"TF_BUILD","pr":{"BUILD_REASON":"PullRequest"}},{"name":"Bamboo","constant":"BAMBOO","env":"bamboo_planKey"},{"name":"Bitbucket Pipelines","constant":"BITBUCKET","env":"BITBUCKET_COMMIT","pr":"BITBUCKET_PR_ID"},{"name":"Bitrise","constant":"BITRISE","env":"BITRISE_IO","pr":"BITRISE_PULL_REQUEST"},{"name":"Buddy","constant":"BUDDY","env":"BUDDY_WORKSPACE_ID","pr":"BUDDY_EXECUTION_PULL_REQUEST_ID"},{"name":"Buildkite","constant":"BUILDKITE","env":"BUILDKITE","pr":{"env":"BUILDKITE_PULL_REQUEST","ne":"false"}},{"name":"CircleCI","constant":"CIRCLE","env":"CIRCLECI","pr":"CIRCLE_PULL_REQUEST"},{"name":"Cirrus CI","constant":"CIRRUS","env":"CIRRUS_CI","pr":"CIRRUS_PR"},{"name":"Cloudflare Pages","constant":"CLOUDFLARE_PAGES","env":"CF_PAGES"},{"name":"Cloudflare Workers","constant":"CLOUDFLARE_WORKERS","env":"WORKERS_CI"},{"name":"Codefresh","constant":"CODEFRESH","env":"CF_BUILD_ID","pr":{"any":["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{"name":"Codemagic","constant":"CODEMAGIC","env":"CM_BUILD_ID","pr":"CM_PULL_REQUEST"},{"name":"Codeship","constant":"CODESHIP","env":{"CI_NAME":"codeship"}},{"name":"Drone","constant":"DRONE","env":"DRONE","pr":{"DRONE_BUILD_EVENT":"pull_request"}},{"name":"dsari","constant":"DSARI","env":"DSARI"},{"name":"Earthly","constant":"EARTHLY","env":"EARTHLY_CI"},{"name":"Expo Application Services","constant":"EAS","env":"EAS_BUILD"},{"name":"Gerrit","constant":"GERRIT","env":"GERRIT_PROJECT"},{"name":"Gitea Actions","constant":"GITEA_ACTIONS","env":"GITEA_ACTIONS"},{"name":"GitHub Actions","constant":"GITHUB_ACTIONS","env":"GITHUB_ACTIONS","pr":{"GITHUB_EVENT_NAME":"pull_request"}},{"name":"GitLab CI","constant":"GITLAB","env":"GITLAB_CI","pr":"CI_MERGE_REQUEST_ID"},{"name":"GoCD","constant":"GOCD","env":"GO_PIPELINE_LABEL"},{"name":"Google Cloud Build","constant":"GOOGLE_CLOUD_BUILD","env":"BUILDER_OUTPUT"},{"name":"Harness CI","constant":"HARNESS","env":"HARNESS_BUILD_ID"},{"name":"Heroku","constant":"HEROKU","env":{"env":"NODE","includes":"/app/.heroku/node/bin/node"}},{"name":"Hudson","constant":"HUDSON","env":"HUDSON_URL"},{"name":"Jenkins","constant":"JENKINS","env":["JENKINS_URL","BUILD_ID"],"pr":{"any":["ghprbPullId","CHANGE_ID"]}},{"name":"LayerCI","constant":"LAYERCI","env":"LAYERCI","pr":"LAYERCI_PULL_REQUEST"},{"name":"Magnum CI","constant":"MAGNUM","env":"MAGNUM"},{"name":"Netlify CI","constant":"NETLIFY","env":"NETLIFY","pr":{"env":"PULL_REQUEST","ne":"false"}},{"name":"Nevercode","constant":"NEVERCODE","env":"NEVERCODE","pr":{"env":"NEVERCODE_PULL_REQUEST","ne":"false"}},{"name":"Prow","constant":"PROW","env":"PROW_JOB_ID"},{"name":"ReleaseHub","constant":"RELEASEHUB","env":"RELEASE_BUILD_ID"},{"name":"Render","constant":"RENDER","env":"RENDER","pr":{"IS_PULL_REQUEST":"true"}},{"name":"Sail CI","constant":"SAIL","env":"SAILCI","pr":"SAIL_PULL_REQUEST_NUMBER"},{"name":"Screwdriver","constant":"SCREWDRIVER","env":"SCREWDRIVER","pr":{"env":"SD_PULL_REQUEST","ne":"false"}},{"name":"Semaphore","constant":"SEMAPHORE","env":"SEMAPHORE","pr":"PULL_REQUEST_NUMBER"},{"name":"Sourcehut","constant":"SOURCEHUT","env":{"CI_NAME":"sourcehut"}},{"name":"Strider CD","constant":"STRIDER","env":"STRIDER"},{"name":"TaskCluster","constant":"TASKCLUSTER","env":["TASK_ID","RUN_ID"]},{"name":"TeamCity","constant":"TEAMCITY","env":"TEAMCITY_VERSION"},{"name":"Travis CI","constant":"TRAVIS","env":"TRAVIS","pr":{"env":"TRAVIS_PULL_REQUEST","ne":"false"}},{"name":"Vela","constant":"VELA","env":"VELA","pr":{"VELA_PULL_REQUEST":"1"}},{"name":"Vercel","constant":"VERCEL","env":{"any":["NOW_BUILDER","VERCEL"]},"pr":"VERCEL_GIT_PULL_REQUEST_ID"},{"name":"Visual Studio App Center","constant":"APPCENTER","env":"APPCENTER_BUILD_ID"},{"name":"Woodpecker","constant":"WOODPECKER","env":{"CI":"woodpecker"},"pr":{"CI_BUILD_EVENT":"pull_request"}},{"name":"Xcode Cloud","constant":"XCODE_CLOUD","env":"CI_XCODE_PROJECT","pr":"CI_PULL_REQUEST_NUMBER"},{"name":"Xcode Server","constant":"XCODE_SERVER","env":"XCS"}]')}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var a=r[e]={exports:{}};return o[e].call(a.exports,a,a.exports,n),a.exports}n.m=o,n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},i=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,n.t=function(e,t){if(1&t&&(e=this(e)),8&t||"object"==typeof e&&e&&(4&t&&e.__esModule||16&t&&"function"==typeof e.then))return e;var s=Object.create(null);n.r(s);var l={};a=a||[null,i({}),i([]),i(i)];for(var o=2&t&&e;("object"==typeof o||"function"==typeof o)&&!~a.indexOf(o);o=i(o))Object.getOwnPropertyNames(o).forEach(t=>{l[t]=()=>e[t]});return l.default=()=>e,n.d(s,l),s},n.d=(e,t,a)=>{var i=(t,a)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,[a]:t[i]})};i(t,"get"),i(a,"value")},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((t,a)=>(n.f[a](e,t),t),[])),n.u=e=>"chunks/"+e+"."+({548:"7c734cd41f2be66d",712:"64dcdf85a1cb6ee8"})[e]+".js",n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0,s={889:0},l=e=>{var t,a,i=e.__rspack_esm_ids,l=e.__webpack_modules__,o=e.__rspack_esm_runtime,r=0;for(t in l)n.o(l,t)&&(n.m[t]=l[t]);for(o&&o(n);r<i.length;r++)a=i[r],n.o(s,a)&&s[a]&&s[a][0](),s[i[r]]=0},n.f.j=function(e,t){var a=n.o(s,e)?s[e]:void 0;if(0!==a)if(a)t.push(a[1]);else{var i=import("./"+n.u(e)).then(l,t=>{throw 0!==s[e]&&(s[e]=void 0),t}),i=Promise.race([i,new Promise(t=>{a=s[e]=[t]})]);t.push(a[1]=i)}},n(2141);
|