summaryrefslogtreecommitdiff
path: root/docs/2026_REBASE/assets/aliases-final.svg
blob: f8b2af9ea69e0691660584e59ba0cf1b9813a212 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<svg aria-label="Compiler graph" width="686" height="786" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 686 786" style="font-family: sans-serif;"><style>
    html, body { height:100%; margin:0; font-family:sans-serif; }
    .viewer { height:100%; display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
    .source { padding:8px; border-bottom:1px solid #ccc; }
    #program { width:min(600px,80vw); vertical-align:middle; }
    #status { margin-top:4px; }
    #graph { min-height:0; overflow:hidden; position:relative; background:#fafbfc; }
    #elk { width:100%; height:100%; }
    #graph svg { display:block; }
    .tools { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:8px; font-size:12px; }
    .hint { color:#616c78; }
    .ctrl { color:#b63838; } .mem { color:#2867b2; } .data { color:#536477; }
    .edge { fill:none; stroke-width:1.5; }
    .edge.CTRL { stroke-width:2; }
    .edge.ASSOC { stroke-dasharray:4 4; }
    .edge.PARSER { stroke-dasharray:5 4; }
    .parser rect { fill:#f6f0ff; stroke:#7956a5; stroke-width:1.5; stroke-dasharray:5 4; }
    .edge.selected { stroke-width:3.5; }
    .edge.bundle { stroke-width:4; }
    .edge.bundle.selected { stroke-width:6; }
    .edge-hit { fill:none; stroke:transparent; stroke-width:12; vector-effect:non-scaling-stroke; pointer-events:stroke; cursor:pointer; }
    .edge-jump { fill:transparent; pointer-events:all; cursor:pointer; }
    .node { cursor:pointer; }
    .box { stroke:#758191; stroke-width:1; }
    .node.held .box { stroke-dasharray:5 3; }
    .node.near .box { stroke:#c18221; stroke-width:2; }
    .node.focus .box { stroke:#9c4900; stroke-width:3; }
    .node.selected .box { stroke:#1569b9; stroke-width:3; }
    .node.folded .box { stroke-width:4; }
    .node.folding .box { fill:#f4ccd7; }
    .fold-tag { font-size:9px; font-weight:700; fill:#963751; }
    .peep-area { fill:#fff3d9; fill-opacity:.8; stroke:#c18221; stroke-width:2; pointer-events:none; }
    .node.peep-edit .box { stroke:#9c4900; stroke-width:3; }
    .node.error .box { stroke:#b42318; stroke-width:4; }
    #event.error { color:#b42318; font-weight:600; white-space:pre-wrap; overflow-wrap:anywhere; }
    .peep-ghosts { pointer-events:none; }
    .region-box { stroke:#9da9b8; stroke-width:1.5; }
    .fold-btn { cursor:pointer; }
    .fold-btn rect { fill:white; stroke:#596674; }
    .fold-btn text { font-size:14px; fill:#152330; }
    .fold-btn:focus rect { stroke:#1569b9; stroke-width:2; }
    .shortcut { cursor:pointer; }
    .shortcut path { fill:none; stroke-width:1.5; }
    .shortcut rect { fill:#fff8ec; stroke:#b63838; stroke-dasharray:3 2; }
    .shortcut text { font-size:11px; fill:#783030; }
    .shortcut.selected rect, .shortcut:focus rect { stroke-width:2.5; }
    .label { font-size:12px; fill:#152330; font-weight:600; }
    .node-id { font-size:10px; fill:#596674; font-weight:400; }
    .type { font-size:11px; fill:#455768; }
    .port { stroke:#536477; stroke-width:1; }
    .row { stroke:#b6afcf; stroke-width:1; }
    .bind { font-size:12px; fill:#152330; }
    .slot { font-size:10px; fill:#364352; paint-order:stroke; stroke:#fafbfc; stroke-width:3; }
    #detail { position:absolute; top:8px; right:8px; margin:0; padding:12px; max-width:320px;
      max-height:45%; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere;
      background:#fffffff2; border:1px solid #bac5d0; border-radius:4px; font-size:12px; }
    .controls { display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:6px; padding:6px; }
    .button { color:white; background:black; font-size:20px; min-width:30px; }
    .button:disabled { background:grey; }
    .count { font-size:20px; min-width:35px; text-align:center; }
    #N { width:6ch; }
    #scrub { width:clamp(120px,35vw,600px); }
  </style><defs><marker id="arrow-CTRL" viewBox="0 -4 8 8" refX="8" refY="0" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,-4L8,0L0,4Z" fill="#b63838"/></marker><marker id="arrow-DATA" viewBox="0 -4 8 8" refX="8" refY="0" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,-4L8,0L0,4Z" fill="#536477"/></marker><marker id="arrow-MEM" viewBox="0 -4 8 8" refX="8" refY="0" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,-4L8,0L0,4Z" fill="#2867b2"/></marker><marker id="arrow-ASSOC" viewBox="0 -4 8 8" refX="8" refY="0" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,-4L8,0L0,4Z" fill="#9396a3"/></marker><marker id="arrow-PARSER" viewBox="0 -4 8 8" refX="8" refY="0" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path d="M0,-4L8,0L0,4Z" fill="#7956a5"/></marker></defs><rect width="100%" height="100%" fill="rgb(250, 251, 252)"/><g><g class="regions" style="opacity: 1;"/><rect class="peep-area" rx="36" style="opacity: 0;"/><g class="edges"><path class="edge CTRL" id="e3i0" d="M114,685 C114,709 343,712 343,736" stroke="#b63838" marker-start="url(#arrow-CTRL)" style="opacity: 1;"><title>#3[0] → #29 · CTRL</title></path><path class="edge ASSOC" id="e4i0" d="M387,52 C387,76 307,507 307,531" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#4[0] → #2 · ASSOC</title></path><path class="edge ASSOC" id="e5i0" d="M387,52 C387,76 482,25 482,49" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#5[0] → #2 · ASSOC</title></path><path class="edge ASSOC" id="e12i0" d="M387,52 C387,76 470,151 470,175" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#12[0] → #2 · ASSOC</title></path><path class="edge ASSOC" id="e13i0" d="M387,52 C387,76 329,151 329,175" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#13[0] → #2 · ASSOC</title></path><path class="edge MEM" id="e14i2" d="M204,124 L204,129 Q204,134 199,134 L196.5,134 Q189,134 189,141.5 L189,172" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#14[2] → #7 · MEM</title></path><path class="edge MEM" id="e14i3" d="M204,124 L204,129.5 Q204,134 208.5,134 L208.5,134 Q213,134 213,138.5 L213,172" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#14[3] → #7 · MEM</title></path><path class="edge CTRL" id="e15i0" d="M84,124 L84,136 Q84,144 92,144 L98,144 Q106,144 106,152 L106,230 Q106,238 114,238 L139,238 Q147,238 147,246 L147,276" stroke="#b63838" marker-start="url(#arrow-CTRL)" style="opacity: 1;"><title>#15[0] → #6 · CTRL</title></path><path class="edge MEM" id="e15i1" d="M177,228 L177,233 Q177,238 182,238 L182.5,238 Q188,238 188,243.5 L188,276" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#15[1] → #14 · MEM</title></path><path class="edge DATA" id="e15i2" d="M329,228 L329,233 Q329,238 324,238 L237,238 Q229,238 229,246 L229,276" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#15[2] → #13 · DATA</title></path><path class="edge DATA" id="e15i3" d="M324,124 L324,129 Q324,134 329,134 L391,134 Q399,134 399,142 L399,240 Q399,248 391,248 L278,248 Q270,248 270,256 L270,276" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#15[3] → #8 · DATA</title></path><path class="edge DATA" id="e15i4" d="M470,228 L470,250 Q470,258 462,258 L319,258 Q311,258 311,266 L311,276" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#15[4] → #12 · DATA</title></path><path class="edge ASSOC" id="e21i0" d="M387,52 C387,76 450,299 450,323" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#21[0] → #2 · ASSOC</title></path><path class="edge ASSOC" id="e22i0" d="M387,52 C387,76 602,299 602,323" stroke="#9396a3" marker-start="url(#arrow-ASSOC)" style="opacity: 1;"><title>#22[0] → #2 · ASSOC</title></path><path class="edge MEM" id="e23i1" d="M292,376 L292,424" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#23[1] → #17 · MEM</title></path><path class="edge DATA" id="e23i2" d="M169,376 L169,381 Q169,386 174,386 L304,386 Q312,386 312,394 L312,424" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#23[2] → #16 · DATA</title></path><path class="edge DATA" id="e23i3" d="M450,376 L450,381 Q450,386 445,386 L340,386 Q332,386 332,394 L332,424" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#23[3] → #21 · DATA</title></path><path class="edge DATA" id="e23i4" d="M602,376 L602,388 Q602,396 594,396 L360,396 Q352,396 352,404 L352,424" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#23[4] → #22 · DATA</title></path><path class="edge MEM" id="e24i1" d="M204,124 L204,129 Q204,134 199,134 L103,134 Q95,134 95,142 L95,482 Q95,490 103,490 L135,490 Q143,490 143,498 L143,528" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#24[1] → #7 · MEM</title></path><path class="edge MEM" id="e24i2" d="M292,376 L292,388 Q292,396 284,396 L175,396 Q167,396 167,404 L167,528" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#24[2] → #17 · MEM</title></path><path class="edge MEM" id="e24i3" d="M312,480 L312,485 Q312,490 307,490 L199,490 Q191,490 191,498 L191,528" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#24[3] → #23 · MEM</title></path><path class="edge CTRL" id="e29i0" d="M84,124 L84,632" stroke="#b63838" marker-start="url(#arrow-CTRL)" style="opacity: 1;"><title>#29[0] → #6 · CTRL</title></path><path class="edge MEM" id="e29i1" d="M155,584 L155,589 Q155,594 150,594 L122,594 Q114,594 114,602 L114,632" stroke="#2867b2" marker-start="url(#arrow-MEM)" style="opacity: 1;"><title>#29[1] → #24 · MEM</title></path><path class="edge DATA" id="e29i2" d="M307,584 L307,596 Q307,604 299,604 L152,604 Q144,604 144,612 L144,632" stroke="#536477" marker-start="url(#arrow-DATA)" style="opacity: 1;"><title>#29[2] → #4 · DATA</title></path></g><g class="edge-hits"/><g class="parser" style="opacity: 1;"/><g class="nodes"><g class="node" id="n2" data-id="2" transform="translate(24,30)" style="opacity: 1;"><path class="box" d="M0,0H360V44H0Z" fill="#fff1c4"/><text class="label" text-anchor="middle" x="180" y="18"><tspan>Start</tspan><tspan class="node-id">  #2</tspan></text><text class="type" text-anchor="middle" y="35" x="180">[ Ctrl, MemBot, int]</text><title>#2 Start
[  Ctrl, MemBot, int]

[0] → —  ASSOC
[1] → —  CTRL
[2] → —  CTRL</title><circle class="port" cx="90" cy="-3" r="3" fill="white"/><circle class="port" cx="180" cy="-3" r="3" fill="white"/><circle class="port" cx="270" cy="-3" r="3" fill="white"/><text class="slot" x="90" y="-10" text-anchor="middle">0</text><text class="slot" x="180" y="-10" text-anchor="middle">1</text><text class="slot" x="270" y="-10" text-anchor="middle">2</text></g><g class="node" id="n3" data-id="3" transform="translate(307,736)" style="opacity: 1;"><path class="box" d="M0,0H72V26H0Z" fill="#fff1c4"/><text class="label" text-anchor="middle" x="36" y="17"><tspan>Stop</tspan><tspan class="node-id">  #3</tspan></text><text class="type" text-anchor="middle" y="35" x="36"/><title>#3 Stop
Bot

[0] → #29  CTRL</title><circle class="port" cx="36" cy="0" r="3" fill="#536477"/><text class="slot" x="36" y="-7" text-anchor="middle">0</text></g><g class="node" id="n4" data-id="4" transform="translate(247,534)" style="opacity: 1;"><path class="box" d="M14,0H106Q120,0 120,14V30Q120,44 106,44H14Q0,44 0,30V14Q0,0 14,0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Con</tspan><tspan class="node-id">  #4</tspan></text><text class="type" text-anchor="middle" y="35" x="60">0</text><title>#4 Con
0

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n5" data-id="5" transform="translate(422,52)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#fff1c4"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Xctrl</tspan><tspan class="node-id">  #5</tspan></text><text class="type" text-anchor="middle" y="35" x="60">~Ctrl</text><title>#5 Xctrl
~Ctrl

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n6" data-id="6" transform="translate(24,74)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#fff1c4"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>$ctrl</tspan><tspan class="node-id">  #6/0</tspan></text><text class="type" text-anchor="middle" y="35" x="60">Ctrl</text><title>#6 $ctrl
Projection 0 of #2
Ctrl

[0] → #2  CTRL</title></g><g class="node" id="n7" data-id="7" transform="translate(144,74)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#dcecff"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>$mem</tspan><tspan class="node-id">  #7/1</tspan></text><text class="type" text-anchor="middle" y="35" x="60">MemBot</text><title>#7 $mem
Projection 1 of #2
MemBot

[0] → #2  MEM</title></g><g class="node" id="n8" data-id="8" transform="translate(264,74)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>arg</tspan><tspan class="node-id">  #8/2</tspan></text><text class="type" text-anchor="middle" y="35" x="60">int</text><title>#8 arg
Projection 2 of #2
int

[0] → #2  DATA</title></g><g class="node" id="n12" data-id="12" transform="translate(410,178)" style="opacity: 1;"><path class="box" d="M14,0H106Q120,0 120,14V30Q120,44 106,44H14Q0,44 0,30V14Q0,0 14,0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Con</tspan><tspan class="node-id">  #12</tspan></text><text class="type" text-anchor="middle" y="35" x="60">10</text><title>#12 Con
10

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n13" data-id="13" transform="translate(269,178)" style="opacity: 1;"><path class="box" d="M14,0H106Q120,0 120,14V30Q120,44 106,44H14Q0,44 0,30V14Q0,0 14,0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Con</tspan><tspan class="node-id">  #13</tspan></text><text class="type" text-anchor="middle" y="35" x="60">16</text><title>#13 Con
16

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n14" data-id="14" transform="translate(117,178)" style="opacity: 1;"><path class="box" d="M10,0H110L120,10V34L110,44H10L0,34V10Z" fill="#dcecff"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>MemMerge</tspan><tspan class="node-id">  #14</tspan></text><text class="type" text-anchor="middle" y="35" x="60">MemBot</text><title>#14 MemMerge
MemBot

[0] → —  CTRL
[1] → —  DATA
[2] → #7  MEM
[3] → #7  MEM</title><circle class="port" cx="24" cy="-3" r="3" fill="white"/><circle class="port" cx="48" cy="-3" r="3" fill="white"/><circle class="port" cx="72" cy="-3" r="3" fill="#536477"/><circle class="port" cx="96" cy="-3" r="3" fill="#536477"/><text class="slot" x="24" y="-10" text-anchor="middle">0</text><text class="slot" x="48" y="-10" text-anchor="middle">1</text><text class="slot" x="72" y="-10" text-anchor="middle">2</text><text class="slot" x="96" y="-10" text-anchor="middle">3</text></g><g class="node" id="n15" data-id="15" transform="translate(106,282)" style="opacity: 1;"><path class="box" d="M0,0H246V44H0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="123" y="18"><tspan>new_Pair</tspan><tspan class="node-id">  #15</tspan></text><text class="type" text-anchor="middle" y="35" x="123">[ *Pair {int !x; int !y; }, MemBot]</text><title>#15 new_Pair
[  *Pair {int !x; int !y; }, MemBot]

[0] → #6  CTRL
[1] → #14  MEM
[2] → #13  DATA
[3] → #8  DATA
[4] → #12  DATA</title><circle class="port" cx="41" cy="-3" r="3" fill="#536477"/><circle class="port" cx="82" cy="-3" r="3" fill="#536477"/><circle class="port" cx="123" cy="-3" r="3" fill="#536477"/><circle class="port" cx="164" cy="-3" r="3" fill="#536477"/><circle class="port" cx="205" cy="-3" r="3" fill="#536477"/><text class="slot" x="41" y="-10" text-anchor="middle">0</text><text class="slot" x="82" y="-10" text-anchor="middle">1</text><text class="slot" x="123" y="-10" text-anchor="middle">2</text><text class="slot" x="164" y="-10" text-anchor="middle">3</text><text class="slot" x="205" y="-10" text-anchor="middle">4</text></g><g class="node" id="n16" data-id="16" transform="translate(106,326)" style="opacity: 1;"><path class="box" d="M0,0H126V44H0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="63" y="18"><tspan>Pair</tspan><tspan class="node-id">  #16/0</tspan></text><text class="type" text-anchor="middle" y="35" x="63">*Pair {int !x; int !y; }</text><title>#16 Pair
Projection 0 of #15
*Pair {int !x; int !y; }

[0] → #15  DATA</title></g><g class="node" id="n17" data-id="17" transform="translate(232,326)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#dcecff"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>$mem</tspan><tspan class="node-id">  #17/1</tspan></text><text class="type" text-anchor="middle" y="35" x="60">MemBot</text><title>#17 $mem
Projection 1 of #15
MemBot

[0] → #15  MEM</title></g><g class="node" id="n21" data-id="21" transform="translate(390,326)" style="opacity: 1;"><path class="box" d="M14,0H106Q120,0 120,14V30Q120,44 106,44H14Q0,44 0,30V14Q0,0 14,0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Con</tspan><tspan class="node-id">  #21</tspan></text><text class="type" text-anchor="middle" y="35" x="60">8</text><title>#21 Con
8

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n22" data-id="22" transform="translate(542,326)" style="opacity: 1;"><path class="box" d="M14,0H106Q120,0 120,14V30Q120,44 106,44H14Q0,44 0,30V14Q0,0 14,0Z" fill="#edf3f7"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Con</tspan><tspan class="node-id">  #22</tspan></text><text class="type" text-anchor="middle" y="35" x="60">99</text><title>#22 Con
99

[0] → #2  ASSOC</title><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><text class="slot" x="60" y="-10" text-anchor="middle">0</text></g><g class="node" id="n23" data-id="23" transform="translate(252,430)" style="opacity: 1;"><path class="box" d="M10,0H110L120,10V34L110,44H10L0,34V10Z" fill="#dcecff"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>st_y</tspan><tspan class="node-id">  #23</tspan></text><text class="type" text-anchor="middle" y="35" x="60">MEM#3:[10-99]</text><title>#23 st_y
MEM#3:[10-99]

[0] → —  CTRL
[1] → #17  MEM
[2] → #16  DATA
[3] → #21  DATA
[4] → #22  DATA</title><circle class="port" cx="20" cy="-3" r="3" fill="white"/><circle class="port" cx="40" cy="-3" r="3" fill="#536477"/><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><circle class="port" cx="80" cy="-3" r="3" fill="#536477"/><circle class="port" cx="100" cy="-3" r="3" fill="#536477"/><text class="slot" x="20" y="-10" text-anchor="middle">0</text><text class="slot" x="40" y="-10" text-anchor="middle">1</text><text class="slot" x="60" y="-10" text-anchor="middle">2</text><text class="slot" x="80" y="-10" text-anchor="middle">3</text><text class="slot" x="100" y="-10" text-anchor="middle">4</text></g><g class="node" id="n24" data-id="24" transform="translate(95,534)" style="opacity: 1;"><path class="box" d="M10,0H110L120,10V34L110,44H10L0,34V10Z" fill="#dcecff"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>MemMerge</tspan><tspan class="node-id">  #24</tspan></text><text class="type" text-anchor="middle" y="35" x="60">MemBot</text><title>#24 MemMerge
MemBot

[0] → —  CTRL
[1] → #7  MEM
[2] → #17  MEM
[3] → #23  MEM</title><circle class="port" cx="24" cy="-3" r="3" fill="white"/><circle class="port" cx="48" cy="-3" r="3" fill="#536477"/><circle class="port" cx="72" cy="-3" r="3" fill="#536477"/><circle class="port" cx="96" cy="-3" r="3" fill="#536477"/><text class="slot" x="24" y="-10" text-anchor="middle">0</text><text class="slot" x="48" y="-10" text-anchor="middle">1</text><text class="slot" x="72" y="-10" text-anchor="middle">2</text><text class="slot" x="96" y="-10" text-anchor="middle">3</text></g><g class="node" id="n29" data-id="29" transform="translate(54,638)" style="opacity: 1;"><path class="box" d="M0,0H120V44H0Z" fill="#fff1c4"/><text class="label" text-anchor="middle" x="60" y="18"><tspan>Return</tspan><tspan class="node-id">  #29</tspan></text><text class="type" text-anchor="middle" y="35" x="60">[ Ctrl, MemBot, 0]</text><title>#29 Return
[  Ctrl, MemBot, 0]

[0] → #6  CTRL
[1] → #24  MEM
[2] → #4  DATA</title><circle class="port" cx="30" cy="-3" r="3" fill="#536477"/><circle class="port" cx="60" cy="-3" r="3" fill="#536477"/><circle class="port" cx="90" cy="-3" r="3" fill="#536477"/><text class="slot" x="30" y="-10" text-anchor="middle">0</text><text class="slot" x="60" y="-10" text-anchor="middle">1</text><text class="slot" x="90" y="-10" text-anchor="middle">2</text></g></g><g class="region-heads" style="opacity: 1;"/><g class="shortcuts" style="opacity: 1;"/><g class="peep-ghosts" pointer-events="none"/></g></svg>