@herbertgao/pi-extensions 2026.9.7 → 2026.9.8
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/node_modules/grok-mermaid/CHANGELOG.md +46 -0
- package/node_modules/grok-mermaid/LICENSE +205 -0
- package/node_modules/grok-mermaid/README.md +191 -0
- package/node_modules/grok-mermaid/dist/ansi.d.ts +16 -0
- package/node_modules/grok-mermaid/dist/ansi.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/ansi.js +23 -0
- package/node_modules/grok-mermaid/dist/ansi.js.map +1 -0
- package/node_modules/grok-mermaid/dist/canvas.d.ts +87 -0
- package/node_modules/grok-mermaid/dist/canvas.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/canvas.js +366 -0
- package/node_modules/grok-mermaid/dist/canvas.js.map +1 -0
- package/node_modules/grok-mermaid/dist/graph.d.ts +74 -0
- package/node_modules/grok-mermaid/dist/graph.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/graph.js +91 -0
- package/node_modules/grok-mermaid/dist/graph.js.map +1 -0
- package/node_modules/grok-mermaid/dist/index.d.ts +32 -0
- package/node_modules/grok-mermaid/dist/index.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/index.js +100 -0
- package/node_modules/grok-mermaid/dist/index.js.map +1 -0
- package/node_modules/grok-mermaid/dist/labels.d.ts +62 -0
- package/node_modules/grok-mermaid/dist/labels.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/labels.js +324 -0
- package/node_modules/grok-mermaid/dist/labels.js.map +1 -0
- package/node_modules/grok-mermaid/dist/layout-seq.d.ts +12 -0
- package/node_modules/grok-mermaid/dist/layout-seq.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/layout-seq.js +194 -0
- package/node_modules/grok-mermaid/dist/layout-seq.js.map +1 -0
- package/node_modules/grok-mermaid/dist/layout.d.ts +87 -0
- package/node_modules/grok-mermaid/dist/layout.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/layout.js +881 -0
- package/node_modules/grok-mermaid/dist/layout.js.map +1 -0
- package/node_modules/grok-mermaid/dist/parse.d.ts +83 -0
- package/node_modules/grok-mermaid/dist/parse.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/parse.js +1151 -0
- package/node_modules/grok-mermaid/dist/parse.js.map +1 -0
- package/node_modules/grok-mermaid/dist/source-box.d.ts +18 -0
- package/node_modules/grok-mermaid/dist/source-box.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/source-box.js +78 -0
- package/node_modules/grok-mermaid/dist/source-box.js.map +1 -0
- package/node_modules/grok-mermaid/dist/types.d.ts +42 -0
- package/node_modules/grok-mermaid/dist/types.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/types.js +1 -0
- package/node_modules/grok-mermaid/dist/types.js.map +1 -0
- package/node_modules/grok-mermaid/dist/width-data.d.ts +2 -0
- package/node_modules/grok-mermaid/dist/width-data.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/width-data.js +994 -0
- package/node_modules/grok-mermaid/dist/width-data.js.map +1 -0
- package/node_modules/grok-mermaid/dist/width.d.ts +18 -0
- package/node_modules/grok-mermaid/dist/width.d.ts.map +1 -0
- package/node_modules/grok-mermaid/dist/width.js +76 -0
- package/node_modules/grok-mermaid/dist/width.js.map +1 -0
- package/node_modules/grok-mermaid/package.json +49 -0
- package/node_modules/grok-mermaid/src/ansi.ts +34 -0
- package/node_modules/grok-mermaid/src/canvas.ts +373 -0
- package/node_modules/grok-mermaid/src/graph.ts +142 -0
- package/node_modules/grok-mermaid/src/index.ts +104 -0
- package/node_modules/grok-mermaid/src/labels.ts +326 -0
- package/node_modules/grok-mermaid/src/layout-seq.ts +203 -0
- package/node_modules/grok-mermaid/src/layout.ts +1015 -0
- package/node_modules/grok-mermaid/src/parse.ts +1189 -0
- package/node_modules/grok-mermaid/src/source-box.ts +89 -0
- package/node_modules/grok-mermaid/src/types.ts +43 -0
- package/node_modules/grok-mermaid/src/width-data.ts +993 -0
- package/node_modules/grok-mermaid/src/width.ts +74 -0
- package/package.json +2 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sequence diagram layout.
|
|
3
|
+
*
|
|
4
|
+
* Participants get one column each, with lifelines running the full height and
|
|
5
|
+
* a box repeated at top and bottom. Column gaps are solved from the widest
|
|
6
|
+
* thing that has to fit between any two columns — a message label, a note, a
|
|
7
|
+
* self-message stub — then items stack down the canvas in source order.
|
|
8
|
+
*/
|
|
9
|
+
import { Canvas, D, drawTextOverEdges, L, R, U } from './canvas.js';
|
|
10
|
+
import { fitLabel, WRAP_WIDTH } from './labels.js';
|
|
11
|
+
import { drawBox } from './layout.js';
|
|
12
|
+
import { stringWidth } from './width.js';
|
|
13
|
+
const PAD = 1;
|
|
14
|
+
/** Minimum columns between adjacent lifelines. */
|
|
15
|
+
const SEQ_GAP = 5;
|
|
16
|
+
const MAX_CANVAS_CELLS = 1 << 21;
|
|
17
|
+
const sat = (a, b) => Math.max(0, a - b);
|
|
18
|
+
const half = (n) => Math.floor(n / 2);
|
|
19
|
+
/** Where a note box sits, given the lifeline positions. */
|
|
20
|
+
function noteGeometry(xs, anchor, textW) {
|
|
21
|
+
if (anchor.kind === 'over') {
|
|
22
|
+
const center = half(xs[anchor.from] + xs[anchor.to]);
|
|
23
|
+
const w = Math.max(xs[anchor.to] - xs[anchor.from] + 5, textW + 2 * PAD + 2);
|
|
24
|
+
return { x: sat(center, half(w)), w };
|
|
25
|
+
}
|
|
26
|
+
const w = textW + 2 * PAD + 2;
|
|
27
|
+
if (anchor.kind === 'left')
|
|
28
|
+
return { x: sat(xs[anchor.at], 2 + w - 1), w };
|
|
29
|
+
return { x: xs[anchor.at] + 2, w };
|
|
30
|
+
}
|
|
31
|
+
const itemTextW = (text) => (text === null ? 0 : stringWidth(text));
|
|
32
|
+
export function layoutSequence(seq) {
|
|
33
|
+
const n = seq.labels.length;
|
|
34
|
+
const labels = seq.labels.map((l) => fitLabel(l, WRAP_WIDTH));
|
|
35
|
+
const boxW = labels.map((l) => Math.max(1, stringWidth(l)) + 2 * PAD + 2);
|
|
36
|
+
const boxH = 3;
|
|
37
|
+
const gaps = Array.from({ length: sat(n, 1) }, (_, i) => Math.max(SEQ_GAP, Math.ceil(boxW[i] / 2) + Math.ceil(boxW[i + 1] / 2) + 1));
|
|
38
|
+
// Each requirement is "columns l..r together need at least `need` cells".
|
|
39
|
+
const reqs = [];
|
|
40
|
+
for (const item of seq.items) {
|
|
41
|
+
if (item.kind === 'message') {
|
|
42
|
+
const tw = itemTextW(item.text);
|
|
43
|
+
if (item.from !== item.to) {
|
|
44
|
+
reqs.push([Math.min(item.from, item.to), Math.max(item.from, item.to), Math.max(tw + 2, 4)]);
|
|
45
|
+
}
|
|
46
|
+
else if (item.from + 1 < n) {
|
|
47
|
+
reqs.push([item.from, item.from + 1, 5 + tw + 2]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (item.kind === 'note') {
|
|
51
|
+
const tw = stringWidth(item.text);
|
|
52
|
+
const a = item.anchor;
|
|
53
|
+
if (a.kind === 'over' && a.from < a.to) {
|
|
54
|
+
reqs.push([a.from, a.to, sat(tw, 1)]);
|
|
55
|
+
}
|
|
56
|
+
else if (a.kind === 'over') {
|
|
57
|
+
const need = Math.ceil((tw + 4) / 2) + 2;
|
|
58
|
+
if (a.from > 0)
|
|
59
|
+
reqs.push([a.from - 1, a.from, need]);
|
|
60
|
+
if (a.from + 1 < n)
|
|
61
|
+
reqs.push([a.from, a.from + 1, need]);
|
|
62
|
+
}
|
|
63
|
+
else if (a.kind === 'left' && a.at > 0) {
|
|
64
|
+
reqs.push([a.at - 1, a.at, tw + 7]);
|
|
65
|
+
}
|
|
66
|
+
else if (a.kind === 'right' && a.at + 1 < n) {
|
|
67
|
+
reqs.push([a.at, a.at + 1, tw + 7]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Narrowest spans first, so a wide requirement absorbs what they already gave.
|
|
72
|
+
reqs.sort((a, b) => a[1] - a[0] - (b[1] - b[0]));
|
|
73
|
+
for (const [l, r, need] of reqs) {
|
|
74
|
+
let cur = 0;
|
|
75
|
+
for (let i = l; i < r; i++)
|
|
76
|
+
cur += gaps[i];
|
|
77
|
+
if (cur < need)
|
|
78
|
+
gaps[r - 1] += need - cur;
|
|
79
|
+
}
|
|
80
|
+
const xs = new Array(n);
|
|
81
|
+
xs[0] = half(boxW[0]);
|
|
82
|
+
for (let i = 1; i < n; i++)
|
|
83
|
+
xs[i] = xs[i - 1] + gaps[i - 1];
|
|
84
|
+
let canvasW = xs[n - 1] + Math.ceil(boxW[n - 1] / 2) + 1;
|
|
85
|
+
for (const item of seq.items) {
|
|
86
|
+
if (item.kind === 'message' && item.from === item.to) {
|
|
87
|
+
canvasW = Math.max(canvasW, xs[item.from] + 5 + itemTextW(item.text) + 1);
|
|
88
|
+
}
|
|
89
|
+
else if (item.kind === 'note') {
|
|
90
|
+
const g = noteGeometry(xs, item.anchor, stringWidth(item.text));
|
|
91
|
+
canvasW = Math.max(canvasW, g.x + g.w + 1);
|
|
92
|
+
}
|
|
93
|
+
else if (item.kind === 'divider') {
|
|
94
|
+
canvasW = Math.max(canvasW, stringWidth(item.text) + 4);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const rows = [];
|
|
98
|
+
let y = boxH + 1;
|
|
99
|
+
for (const item of seq.items) {
|
|
100
|
+
rows.push(y);
|
|
101
|
+
y += rowHeight(item);
|
|
102
|
+
}
|
|
103
|
+
const bottomTop = y;
|
|
104
|
+
const canvasH = bottomTop + boxH;
|
|
105
|
+
if (canvasW * canvasH > MAX_CANVAS_CELLS)
|
|
106
|
+
return null;
|
|
107
|
+
const canvas = new Canvas(canvasW, canvasH);
|
|
108
|
+
for (let i = 0; i < n; i++) {
|
|
109
|
+
for (const by of [0, bottomTop]) {
|
|
110
|
+
drawBox(canvas, box(sat(xs[i], half(boxW[i])), by, boxW[i], boxH), [labels[i]], 'rect');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
seq.items.forEach((item, k) => {
|
|
114
|
+
if (item.kind !== 'note')
|
|
115
|
+
return;
|
|
116
|
+
const g = noteGeometry(xs, item.anchor, stringWidth(item.text));
|
|
117
|
+
drawBox(canvas, box(g.x, rows[k], g.w, 3), [item.text], 'rect');
|
|
118
|
+
});
|
|
119
|
+
for (const x of xs) {
|
|
120
|
+
canvas.junction(x, boxH - 1, D);
|
|
121
|
+
canvas.segV(x, boxH, bottomTop - 1);
|
|
122
|
+
canvas.junction(x, bottomTop, U);
|
|
123
|
+
}
|
|
124
|
+
seq.items.forEach((item, k) => {
|
|
125
|
+
const r = rows[k];
|
|
126
|
+
if (item.kind === 'message')
|
|
127
|
+
drawMessage(canvas, item, xs, r);
|
|
128
|
+
else if (item.kind === 'divider')
|
|
129
|
+
drawDivider(canvas, item.text, r, canvasW);
|
|
130
|
+
});
|
|
131
|
+
canvas.finalizeMask();
|
|
132
|
+
return canvas;
|
|
133
|
+
}
|
|
134
|
+
function rowHeight(item) {
|
|
135
|
+
if (item.kind === 'note')
|
|
136
|
+
return 4;
|
|
137
|
+
if (item.kind === 'divider')
|
|
138
|
+
return 2;
|
|
139
|
+
if (item.from === item.to)
|
|
140
|
+
return 4;
|
|
141
|
+
return item.text !== null ? 3 : 2;
|
|
142
|
+
}
|
|
143
|
+
/** Geometry for a box drawn by position and size; ranks are irrelevant here. */
|
|
144
|
+
const box = (x, y, w, h) => ({
|
|
145
|
+
x,
|
|
146
|
+
y,
|
|
147
|
+
w,
|
|
148
|
+
h,
|
|
149
|
+
cx: x + half(w),
|
|
150
|
+
cy: y + 1,
|
|
151
|
+
rank: 0,
|
|
152
|
+
});
|
|
153
|
+
function drawMessage(canvas, item, xs, r) {
|
|
154
|
+
const lineCh = item.dashed ? '╌' : '─';
|
|
155
|
+
if (item.from === item.to) {
|
|
156
|
+
// A stub that leaves the lifeline and returns two rows down.
|
|
157
|
+
const x = xs[item.from];
|
|
158
|
+
canvas.junction(x, r, R);
|
|
159
|
+
canvas.set(x + 1, r, lineCh, 'edge');
|
|
160
|
+
canvas.set(x + 2, r, lineCh, 'edge');
|
|
161
|
+
canvas.set(x + 3, r, '╮', 'edge');
|
|
162
|
+
canvas.set(x + 3, r + 1, '│', 'edge');
|
|
163
|
+
canvas.set(x + 1, r + 2, item.head === 'cross' ? '×' : '◄', 'edge');
|
|
164
|
+
canvas.set(x + 2, r + 2, lineCh, 'edge');
|
|
165
|
+
canvas.set(x + 3, r + 2, '╯', 'edge');
|
|
166
|
+
if (item.text !== null)
|
|
167
|
+
drawTextOverEdges(canvas, item.text, x + 5, r + 1, 'text');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const x0 = xs[item.from];
|
|
171
|
+
const x1 = xs[item.to];
|
|
172
|
+
const rightward = x1 > x0;
|
|
173
|
+
// A labelled message writes its text on `r` and draws the arrow below it.
|
|
174
|
+
const arrowRow = item.text !== null ? r + 1 : r;
|
|
175
|
+
const lo = Math.min(x0, x1);
|
|
176
|
+
const hi = Math.max(x0, x1);
|
|
177
|
+
canvas.junction(x0, arrowRow, rightward ? R : L);
|
|
178
|
+
for (let x = lo + 1; x < hi; x++)
|
|
179
|
+
canvas.set(x, arrowRow, lineCh, 'edge');
|
|
180
|
+
const headCh = item.head === 'cross' ? '×' : rightward ? '▶' : '◄';
|
|
181
|
+
canvas.set(rightward ? x1 - 1 : x1 + 1, arrowRow, headCh, 'edge');
|
|
182
|
+
if (item.text !== null) {
|
|
183
|
+
const span = hi - lo - 1;
|
|
184
|
+
const t = fitLabel(item.text, Math.max(1, span));
|
|
185
|
+
drawTextOverEdges(canvas, t, lo + 1 + half(sat(span, stringWidth(t))), r, 'text');
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/** A full-width rule labelling a `loop` / `alt` / `opt` block boundary. */
|
|
189
|
+
function drawDivider(canvas, text, r, canvasW) {
|
|
190
|
+
for (let x = 0; x < canvasW; x++)
|
|
191
|
+
canvas.set(x, r, '─', 'edge');
|
|
192
|
+
drawTextOverEdges(canvas, ` ${fitLabel(text, sat(canvasW, 4))} `, 2, r, 'edgeLabel');
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=layout-seq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-seq.js","sourceRoot":"","sources":["../src/layout-seq.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph layout: rank, order, place, route, draw.
|
|
3
|
+
*
|
|
4
|
+
* Follows the Sugiyama outline — assign ranks along the flow axis, reorder
|
|
5
|
+
* within ranks to cut crossings, then relax positions on the cross axis so
|
|
6
|
+
* chains stay straight. Edges between adjacent ranks share horizontal "bus"
|
|
7
|
+
* rows; everything else is routed around the diagram through vertical "lanes".
|
|
8
|
+
*
|
|
9
|
+
* `BT` and `RL` reuse the `TD`/`LR` layouts and flip the finished canvas, so
|
|
10
|
+
* text never ends up mirrored.
|
|
11
|
+
*/
|
|
12
|
+
import { Canvas } from './canvas.ts';
|
|
13
|
+
import type { ClassInfo, Edge, Shape } from './graph.ts';
|
|
14
|
+
import { Graph } from './graph.ts';
|
|
15
|
+
/** A laid-out canvas, or `null` when the diagram is empty or over the cell cap. */
|
|
16
|
+
export type CanvasResult = Canvas | null;
|
|
17
|
+
export interface Placed {
|
|
18
|
+
x: number;
|
|
19
|
+
y: number;
|
|
20
|
+
w: number;
|
|
21
|
+
h: number;
|
|
22
|
+
cx: number;
|
|
23
|
+
cy: number;
|
|
24
|
+
rank: number;
|
|
25
|
+
}
|
|
26
|
+
/** What to draw inside a node box. */
|
|
27
|
+
export type NodeExtra = {
|
|
28
|
+
kind: 'plain';
|
|
29
|
+
} | {
|
|
30
|
+
kind: 'frame';
|
|
31
|
+
sub: Canvas;
|
|
32
|
+
} | {
|
|
33
|
+
kind: 'compartments';
|
|
34
|
+
sections: string[][];
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Longest-path ranking over the graph's DAG.
|
|
38
|
+
*
|
|
39
|
+
* Back edges (those closing a cycle) are excluded by a DFS colouring pass, so
|
|
40
|
+
* `A --> B --> C --> A` still ranks 0, 1, 2 rather than diverging.
|
|
41
|
+
*/
|
|
42
|
+
export declare function computeRanks(graph: Graph): number[];
|
|
43
|
+
/**
|
|
44
|
+
* Reorder nodes within each rank to minimise edge crossings (barycenter
|
|
45
|
+
* sweeps): alternate down/up passes sort each rank by the mean position of its
|
|
46
|
+
* neighbours, keeping whichever ordering crossed least.
|
|
47
|
+
*/
|
|
48
|
+
export declare function orderRanks(byRank: number[][], edges: Edge[], ranks: number[]): void;
|
|
49
|
+
export declare function countCrossings(edges: Edge[], ranks: number[], pos: number[]): number;
|
|
50
|
+
/**
|
|
51
|
+
* Assign a cross-axis centre to every node so nodes line up under their
|
|
52
|
+
* neighbours: each node drifts toward the average of its neighbours while
|
|
53
|
+
* ranks keep their order and boxes keep `sep` between them.
|
|
54
|
+
*/
|
|
55
|
+
export declare function assignPositions(byRank: number[][], size: number[], sep: number, edges: Edge[], ranks: number[]): number[];
|
|
56
|
+
/** A span competing for a track: `[start, end, from, to, edgeIndex]`. */
|
|
57
|
+
type Span5 = [number, number, number, number, number];
|
|
58
|
+
/**
|
|
59
|
+
* Pack spans into as few parallel tracks as possible.
|
|
60
|
+
*
|
|
61
|
+
* Two spans share a track when they are two cells apart, or when they share an
|
|
62
|
+
* endpoint — edges fanning out of one node deliberately reuse a single row so
|
|
63
|
+
* a merge draws one arrowhead rather than a stack of them.
|
|
64
|
+
*/
|
|
65
|
+
export declare function assignTracks(spans: Span5[]): {
|
|
66
|
+
assigned: [number, number][];
|
|
67
|
+
count: number;
|
|
68
|
+
};
|
|
69
|
+
/** Rank, place, draw and route a graph onto a fresh canvas. */
|
|
70
|
+
export declare function layoutCanvas(graph: Graph, extras: NodeExtra[]): CanvasResult;
|
|
71
|
+
/** Apply the direction flip a finished canvas needs for `BT` / `RL`. */
|
|
72
|
+
export declare function orient(canvas: Canvas, graph: Graph): Canvas;
|
|
73
|
+
/** Flowchart and state diagrams: plain boxes, no extra content. */
|
|
74
|
+
export declare function layoutFlowchart(graph: Graph): CanvasResult;
|
|
75
|
+
/** Class and ER diagrams: boxes divided into title / attribute / method rows. */
|
|
76
|
+
export declare function layoutClass(graph: Graph, infos: ClassInfo[]): CanvasResult;
|
|
77
|
+
/**
|
|
78
|
+
* Lay out a flowchart that uses `subgraph`.
|
|
79
|
+
*
|
|
80
|
+
* Each subgraph becomes a framed box holding its own independently laid-out
|
|
81
|
+
* canvas. An edge is drawn in the innermost scope containing both endpoints;
|
|
82
|
+
* one crossing a subgraph boundary attaches to the frame instead of the node.
|
|
83
|
+
*/
|
|
84
|
+
export declare function layoutGrouped(graph: Graph): CanvasResult;
|
|
85
|
+
export declare function drawBox(canvas: Canvas, p: Placed, lines: string[], shape: Shape): void;
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,MAAM,EAWP,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAc,KAAK,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAYlC,mFAAmF;AACnF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,CAAA;AAMxC,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAYD,sCAAsC;AACtC,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAAA;AAiBlD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CA2BnD;AAgCD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAwCnF;AAYD,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAepF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EAAE,EAAE,EAClB,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,EAAE,EACb,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,EAAE,CAgCV;AAwCD,yEAAyE;AACzE,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAErD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG;IAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmB5F;AA2LD,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,YAAY,CAqG5E;AAED,wEAAwE;AACxE,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAI3D;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CAI1D;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,YAAY,CAS1E;AAsBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,YAAY,CA6DxD;AA2DD,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAgCtF"}
|