timarai-dashboard-mcp 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +105 -0
- package/README.md +266 -0
- package/dist/charts/build.js +130 -0
- package/dist/charts/build.js.map +1 -0
- package/dist/charts/format.js +101 -0
- package/dist/charts/format.js.map +1 -0
- package/dist/charts/specs.js +708 -0
- package/dist/charts/specs.js.map +1 -0
- package/dist/charts/svg.js +371 -0
- package/dist/charts/svg.js.map +1 -0
- package/dist/client.js +284 -0
- package/dist/client.js.map +1 -0
- package/dist/config.js +164 -0
- package/dist/config.js.map +1 -0
- package/dist/date-range.js +190 -0
- package/dist/date-range.js.map +1 -0
- package/dist/format.js +369 -0
- package/dist/format.js.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/output.js +46 -0
- package/dist/output.js.map +1 -0
- package/dist/registry.js +231 -0
- package/dist/registry.js.map +1 -0
- package/dist/reports/html.js +84 -0
- package/dist/reports/html.js.map +1 -0
- package/dist/reports/templates.js +113 -0
- package/dist/reports/templates.js.map +1 -0
- package/dist/resources.js +265 -0
- package/dist/resources.js.map +1 -0
- package/dist/server.js +588 -0
- package/dist/server.js.map +1 -0
- package/dist/setup.js +344 -0
- package/dist/setup.js.map +1 -0
- package/dist/signature.js +35 -0
- package/dist/signature.js.map +1 -0
- package/docs/CAPABILITIES.md +275 -0
- package/docs/CONTRACT.md +170 -0
- package/docs/DESIGN.md +367 -0
- package/docs/DISTRIBUTION.md +214 -0
- package/docs/VERIFICATION.md +120 -0
- package/package.json +42 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.js","sourceRoot":"","sources":["../../src/charts/specs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 纯手写 SVG 图表渲染器(零依赖)。
|
|
3
|
+
*
|
|
4
|
+
* 为什么不用 ECharts / Chart.js:
|
|
5
|
+
* 那些库要在浏览器里跑,本服务是 Node 进程,要用的话就得引 headless 浏览器——
|
|
6
|
+
* 安装体积大、跨平台易崩、每次出图慢。图表形态固定(折线/柱/条/环/双轴/KPI 卡),
|
|
7
|
+
* 手写 SVG 反而更快、更可控、产物可直接嵌进 HTML 报告和 PPT。
|
|
8
|
+
*
|
|
9
|
+
* 设计约束:
|
|
10
|
+
* - 产物是**自包含**的 `<svg>`,不引外部字体/CDN,离线可看;
|
|
11
|
+
* - 空数据必须优雅降级(画出「暂无数据」而不是崩掉坐标轴)——查询窗口内无统计产出是常态。
|
|
12
|
+
*/
|
|
13
|
+
import { INK, PALETTE, compact, delta, esc, formatTick, formatValue, } from "./format.js";
|
|
14
|
+
const PAD = { left: 76, right: 28, top: 66, bottom: 58 };
|
|
15
|
+
/** 取色(下标安全,避免 noUncheckedIndexedAccess 报 undefined)。 */
|
|
16
|
+
function pick(index) {
|
|
17
|
+
const i = ((index % PALETTE.length) + PALETTE.length) % PALETTE.length;
|
|
18
|
+
return PALETTE[i] ?? "#378ADD";
|
|
19
|
+
}
|
|
20
|
+
const C0 = pick(0);
|
|
21
|
+
const C1 = pick(1);
|
|
22
|
+
function svgDoc(width, height, inner) {
|
|
23
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" font-family="-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif">${inner}</svg>`;
|
|
24
|
+
}
|
|
25
|
+
function text(x, y, content, opts = {}) {
|
|
26
|
+
const { size = 12, weight = 400, fill = INK.text, anchor = "start" } = opts;
|
|
27
|
+
return `<text x="${x}" y="${y}" font-size="${size}" font-weight="${weight}" fill="${fill}" text-anchor="${anchor}">${esc(content)}</text>`;
|
|
28
|
+
}
|
|
29
|
+
function header(title, subtitle, width) {
|
|
30
|
+
const parts = [text(PAD.left - 12, 30, title, { size: 15, weight: 500, fill: INK.title })];
|
|
31
|
+
if (subtitle)
|
|
32
|
+
parts.push(text(PAD.left - 12, 50, subtitle, { size: 12, fill: INK.muted }));
|
|
33
|
+
parts.push(`<line x1="${PAD.left - 12}" y1="60" x2="${width - PAD.right}" y2="60" stroke="${INK.grid}" stroke-width="1"/>`);
|
|
34
|
+
return parts.join("");
|
|
35
|
+
}
|
|
36
|
+
function footnoteLine(text0, width, y) {
|
|
37
|
+
if (!text0)
|
|
38
|
+
return "";
|
|
39
|
+
return text(PAD.left - 12, y, text0, { size: 11, fill: INK.muted });
|
|
40
|
+
}
|
|
41
|
+
function legend(series, x, y) {
|
|
42
|
+
if (series.length < 2)
|
|
43
|
+
return "";
|
|
44
|
+
let cx = x;
|
|
45
|
+
const parts = [];
|
|
46
|
+
series.forEach((s, i) => {
|
|
47
|
+
const color = pick(i);
|
|
48
|
+
parts.push(`<rect x="${cx}" y="${y - 8}" width="10" height="10" rx="2" fill="${color}"/>`);
|
|
49
|
+
parts.push(text(cx + 15, y, s.name, { size: 12, fill: INK.text }));
|
|
50
|
+
cx += 22 + s.name.length * 12;
|
|
51
|
+
});
|
|
52
|
+
return parts.join("");
|
|
53
|
+
}
|
|
54
|
+
function emptyState(width, height, title, subtitle) {
|
|
55
|
+
return svgDoc(width, height, [
|
|
56
|
+
`<rect x="1" y="1" width="${width - 2}" height="${height - 2}" rx="10" fill="${INK.cardBg}" stroke="${INK.cardBorder}"/>`,
|
|
57
|
+
header(title, subtitle, width),
|
|
58
|
+
text(width / 2, height / 2 + 6, "暂无数据(该区间无统计记录)", {
|
|
59
|
+
size: 13,
|
|
60
|
+
fill: INK.muted,
|
|
61
|
+
anchor: "middle",
|
|
62
|
+
}),
|
|
63
|
+
].join(""));
|
|
64
|
+
}
|
|
65
|
+
/** 取整的刻度值,避免轴标签出现 1234.5678 这种数字。 */
|
|
66
|
+
function niceScale(min, max, ticks = 5, zeroBased = true) {
|
|
67
|
+
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
|
68
|
+
return { min: 0, max: 1, ticks: [0, 0.25, 0.5, 0.75, 1] };
|
|
69
|
+
}
|
|
70
|
+
let lo = zeroBased ? Math.min(0, min) : min;
|
|
71
|
+
let hi = max;
|
|
72
|
+
if (hi === lo)
|
|
73
|
+
hi = lo + Math.abs(lo || 1);
|
|
74
|
+
if (!zeroBased) {
|
|
75
|
+
const pad = (hi - lo) * 0.15;
|
|
76
|
+
lo = Math.max(0, lo - pad);
|
|
77
|
+
hi = hi + pad;
|
|
78
|
+
}
|
|
79
|
+
const rawStep = (hi - lo) / ticks;
|
|
80
|
+
const mag = Math.pow(10, Math.floor(Math.log10(rawStep || 1)));
|
|
81
|
+
const norm = rawStep / mag;
|
|
82
|
+
const step = (norm <= 1 ? 1 : norm <= 2 ? 2 : norm <= 5 ? 5 : 10) * mag;
|
|
83
|
+
const niceMin = Math.floor(lo / step) * step;
|
|
84
|
+
const niceMax = Math.ceil(hi / step) * step;
|
|
85
|
+
const list = [];
|
|
86
|
+
for (let v = niceMin; v <= niceMax + step / 2; v += step)
|
|
87
|
+
list.push(Number(v.toFixed(10)));
|
|
88
|
+
return { min: niceMin, max: niceMax, ticks: list };
|
|
89
|
+
}
|
|
90
|
+
function yAxis(box, scale, format) {
|
|
91
|
+
const parts = [];
|
|
92
|
+
const span = scale.max - scale.min || 1;
|
|
93
|
+
for (const tick of scale.ticks) {
|
|
94
|
+
const y = box.y + box.h - ((tick - scale.min) / span) * box.h;
|
|
95
|
+
parts.push(`<line x1="${box.x}" y1="${y}" x2="${box.x + box.w}" y2="${y}" stroke="${INK.grid}" stroke-width="1"/>`);
|
|
96
|
+
parts.push(text(box.x - 10, y + 4, formatTick(tick, format), { size: 11, fill: INK.muted, anchor: "end" }));
|
|
97
|
+
}
|
|
98
|
+
return parts.join("");
|
|
99
|
+
}
|
|
100
|
+
/** x 轴标签抽稀:点多时隔位显示,但始终保留最后一点。 */
|
|
101
|
+
function xAxis(box, labels, maxLabels = 10) {
|
|
102
|
+
if (labels.length === 0)
|
|
103
|
+
return "";
|
|
104
|
+
const step0 = Math.ceil(labels.length / maxLabels);
|
|
105
|
+
const parts = [];
|
|
106
|
+
labels.forEach((label, i) => {
|
|
107
|
+
const show = i % step0 === 0 || i === labels.length - 1;
|
|
108
|
+
if (!show)
|
|
109
|
+
return;
|
|
110
|
+
const x = box.x + (labels.length === 1 ? box.w / 2 : (i / (labels.length - 1)) * box.w);
|
|
111
|
+
parts.push(`<line x1="${x}" y1="${box.y + box.h}" x2="${x}" y2="${box.y + box.h + 5}" stroke="${INK.axis}" stroke-width="1"/>`);
|
|
112
|
+
parts.push(text(x, box.y + box.h + 20, shortDate(label), { size: 11, fill: INK.muted, anchor: "middle" }));
|
|
113
|
+
});
|
|
114
|
+
return parts.join("");
|
|
115
|
+
}
|
|
116
|
+
function shortDate(label) {
|
|
117
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(label);
|
|
118
|
+
return m ? `${Number(m[2])}/${Number(m[3])}` : label;
|
|
119
|
+
}
|
|
120
|
+
function categoryScaleX(box, count, i) {
|
|
121
|
+
return count <= 1 ? box.x + box.w / 2 : box.x + (i / (count - 1)) * box.w;
|
|
122
|
+
}
|
|
123
|
+
function bandX(box, count, i) {
|
|
124
|
+
const band = box.w / Math.max(1, count);
|
|
125
|
+
return box.x + band * i + band / 2;
|
|
126
|
+
}
|
|
127
|
+
// ------------------------------------------------------------------ 折线
|
|
128
|
+
function renderLine(chart, width) {
|
|
129
|
+
const height = 340;
|
|
130
|
+
const box = { x: PAD.left, y: PAD.top, w: width - PAD.left - PAD.right, h: height - PAD.top - PAD.bottom };
|
|
131
|
+
const isRate = chart.series.some((s) => s.format === "percent");
|
|
132
|
+
const all = chart.series.flatMap((s) => s.values).filter((v) => Number.isFinite(v));
|
|
133
|
+
const scale = niceScale(Math.min(0, ...all), Math.max(0, ...all), 5, !isRate);
|
|
134
|
+
const span = scale.max - scale.min || 1;
|
|
135
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
136
|
+
parts.push(yAxis(box, scale, chart.series[0]?.format ?? "number"));
|
|
137
|
+
parts.push(legend(chart.series, PAD.left - 12, 42));
|
|
138
|
+
chart.series.forEach((s, si) => {
|
|
139
|
+
const color = pick(si);
|
|
140
|
+
const pts = s.values.map((v, i) => {
|
|
141
|
+
const x = categoryScaleX(box, s.values.length, i);
|
|
142
|
+
const y = box.y + box.h - ((v - scale.min) / span) * box.h;
|
|
143
|
+
return { x, y };
|
|
144
|
+
});
|
|
145
|
+
const line = pts.map((p) => `${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(" ");
|
|
146
|
+
if (chart.series.length === 1) {
|
|
147
|
+
const area = `${box.x},${box.y + box.h} ${line} ${box.x + box.w},${box.y + box.h}`;
|
|
148
|
+
parts.push(`<polygon points="${area}" fill="${color}" opacity="0.10"/>`);
|
|
149
|
+
}
|
|
150
|
+
parts.push(`<polyline points="${line}" fill="none" stroke="${color}" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"/>`);
|
|
151
|
+
if (pts.length <= 31) {
|
|
152
|
+
pts.forEach((p) => parts.push(`<circle cx="${p.x.toFixed(1)}" cy="${p.y.toFixed(1)}" r="2.6" fill="${INK.cardBg}" stroke="${color}" stroke-width="2"/>`));
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
parts.push(xAxis(box, chart.labels));
|
|
156
|
+
parts.push(footnoteLine(chart.footnote, width, height - 14));
|
|
157
|
+
return svgDoc(width, height, parts.join(""));
|
|
158
|
+
}
|
|
159
|
+
// ------------------------------------------------------------------ 柱状
|
|
160
|
+
function renderBar(chart, width) {
|
|
161
|
+
const height = 340;
|
|
162
|
+
const box = { x: PAD.left, y: PAD.top, w: width - PAD.left - PAD.right, h: height - PAD.top - PAD.bottom };
|
|
163
|
+
const all = chart.series.flatMap((s) => s.values).filter((v) => Number.isFinite(v));
|
|
164
|
+
const scale = niceScale(0, Math.max(0, ...all), 5, true);
|
|
165
|
+
const span = scale.max - scale.min || 1;
|
|
166
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
167
|
+
parts.push(yAxis(box, scale, chart.series[0]?.format ?? "number"));
|
|
168
|
+
parts.push(legend(chart.series, PAD.left - 12, 42));
|
|
169
|
+
const n = chart.labels.length;
|
|
170
|
+
const band = box.w / Math.max(1, n);
|
|
171
|
+
const groupW = band * 0.62;
|
|
172
|
+
const each = groupW / chart.series.length;
|
|
173
|
+
chart.series.forEach((s, si) => {
|
|
174
|
+
const color = pick(si);
|
|
175
|
+
s.values.forEach((v, i) => {
|
|
176
|
+
const cx = box.x + band * i + band / 2;
|
|
177
|
+
const x = cx - groupW / 2 + each * si;
|
|
178
|
+
const h = (Math.max(0, v) / span) * box.h;
|
|
179
|
+
const y = box.y + box.h - h;
|
|
180
|
+
parts.push(`<rect x="${x.toFixed(1)}" y="${y.toFixed(1)}" width="${(each * 0.86).toFixed(1)}" height="${Math.max(0, h).toFixed(1)}" rx="3" fill="${color}"/>`);
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
parts.push(xAxis(box, chart.labels));
|
|
184
|
+
parts.push(footnoteLine(chart.footnote, width, height - 14));
|
|
185
|
+
return svgDoc(width, height, parts.join(""));
|
|
186
|
+
}
|
|
187
|
+
// ------------------------------------------------------------------ 横向条形(排行)
|
|
188
|
+
function renderHBar(chart, width) {
|
|
189
|
+
const rowH = 30;
|
|
190
|
+
const height = PAD.top + chart.labels.length * rowH + 40;
|
|
191
|
+
const leftGutter = 168;
|
|
192
|
+
const box = { x: leftGutter, y: PAD.top, w: width - leftGutter - PAD.right - 54, h: chart.labels.length * rowH };
|
|
193
|
+
const all = chart.series.flatMap((s) => s.values).filter((v) => Number.isFinite(v));
|
|
194
|
+
const max = Math.max(1, ...all.map(Math.abs));
|
|
195
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
196
|
+
chart.labels.forEach((label, i) => {
|
|
197
|
+
const y = box.y + i * rowH;
|
|
198
|
+
const v = chart.series[0]?.values[i] ?? 0;
|
|
199
|
+
const w = (Math.abs(v) / max) * box.w;
|
|
200
|
+
const color = pick(0);
|
|
201
|
+
parts.push(text(leftGutter - 12, y + rowH / 2 + 4, label, { size: 12, fill: INK.text, anchor: "end" }));
|
|
202
|
+
parts.push(`<rect x="${box.x}" y="${y + 5}" width="${Math.max(2, w).toFixed(1)}" height="${rowH - 12}" rx="3" fill="${color}" opacity="0.85"/>`);
|
|
203
|
+
parts.push(text(box.x + Math.max(2, w) + 8, y + rowH / 2 + 4, formatValue(v, chart.series[0]?.format), { size: 11, fill: INK.muted }));
|
|
204
|
+
});
|
|
205
|
+
parts.push(footnoteLine(chart.footnote, width, height - 12));
|
|
206
|
+
return svgDoc(width, height, parts.join(""));
|
|
207
|
+
}
|
|
208
|
+
// ------------------------------------------------------------------ 环形占比
|
|
209
|
+
function renderDonut(chart, width) {
|
|
210
|
+
const height = 340;
|
|
211
|
+
const cx = 210;
|
|
212
|
+
const cy = 190;
|
|
213
|
+
const r = 104;
|
|
214
|
+
const inner = 62;
|
|
215
|
+
const values = chart.series[0]?.values ?? [];
|
|
216
|
+
const total = values.reduce((a, b) => a + Math.abs(b), 0);
|
|
217
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
218
|
+
const format = chart.series[0]?.format ?? "number";
|
|
219
|
+
if (total === 0) {
|
|
220
|
+
parts.push(`<circle cx="${cx}" cy="${cy}" r="${r}" fill="none" stroke="${INK.grid}" stroke-width="${r - inner}"/>`);
|
|
221
|
+
}
|
|
222
|
+
else if (values.filter((v) => Math.abs(v) > 0).length === 1) {
|
|
223
|
+
parts.push(`<circle cx="${cx}" cy="${cy}" r="${(r + inner) / 2}" fill="none" stroke="${C0}" stroke-width="${r - inner}"/>`);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
let angle = -Math.PI / 2;
|
|
227
|
+
values.forEach((v, i) => {
|
|
228
|
+
const sweep = (Math.abs(v) / total) * Math.PI * 2;
|
|
229
|
+
const color = pick(i);
|
|
230
|
+
parts.push(donutSlice(cx, cy, r, inner, angle, angle + sweep, color));
|
|
231
|
+
angle += sweep;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
// 序列名(如「GMV·USD」)要画在圆心:多币种时本图只取主币种,
|
|
235
|
+
// 不标出来读者会把它当成全平台合计。
|
|
236
|
+
const seriesName = chart.series[0]?.name?.trim();
|
|
237
|
+
if (seriesName) {
|
|
238
|
+
parts.push(text(cx, cy - 30, seriesName, { size: 11, fill: INK.muted, anchor: "middle" }));
|
|
239
|
+
}
|
|
240
|
+
parts.push(text(cx, cy - 4, formatValue(total, format), { size: 18, weight: 500, fill: INK.title, anchor: "middle" }));
|
|
241
|
+
parts.push(text(cx, cy + 16, "合计", { size: 11, fill: INK.muted, anchor: "middle" }));
|
|
242
|
+
const legendX = 400;
|
|
243
|
+
let ly = PAD.top + 6;
|
|
244
|
+
chart.labels.forEach((label, i) => {
|
|
245
|
+
const v = values[i] ?? 0;
|
|
246
|
+
const share = total === 0 ? 0 : Math.abs(v) / total;
|
|
247
|
+
parts.push(`<rect x="${legendX}" y="${ly - 8}" width="10" height="10" rx="2" fill="${PALETTE[i % PALETTE.length]}"/>`);
|
|
248
|
+
parts.push(text(legendX + 16, ly, label, { size: 12, fill: INK.text }));
|
|
249
|
+
parts.push(text(legendX + 300, ly, `${formatValue(v, format)} ${(share * 100).toFixed(1)}%`, { size: 12, fill: INK.muted, anchor: "end" }));
|
|
250
|
+
ly += 24;
|
|
251
|
+
});
|
|
252
|
+
parts.push(footnoteLine(chart.footnote, width, height - 14));
|
|
253
|
+
return svgDoc(width, height, parts.join(""));
|
|
254
|
+
}
|
|
255
|
+
function donutSlice(cx, cy, r, inner, a0, a1, color) {
|
|
256
|
+
const p = (rad, radius) => `${(cx + Math.cos(rad) * radius).toFixed(2)},${(cy + Math.sin(rad) * radius).toFixed(2)}`;
|
|
257
|
+
const large = a1 - a0 > Math.PI ? 1 : 0;
|
|
258
|
+
return `<path d="M ${p(a0, r)} A ${r} ${r} 0 ${large} 1 ${p(a1, r)} L ${p(a1, inner)} A ${inner} ${inner} 0 ${large} 0 ${p(a0, inner)} Z" fill="${color}"/>`;
|
|
259
|
+
}
|
|
260
|
+
// ------------------------------------------------------------------ 双轴(柱 + 线)
|
|
261
|
+
function renderCombo(chart, width) {
|
|
262
|
+
const height = 360;
|
|
263
|
+
const box = { x: PAD.left, y: PAD.top, w: width - PAD.left - PAD.right - 40, h: height - PAD.top - PAD.bottom };
|
|
264
|
+
const barSeries = chart.series.find((s) => s.kind === "bar") ?? chart.series[0];
|
|
265
|
+
const lineSeries = chart.series.find((s) => s.kind === "line") ?? chart.series[1];
|
|
266
|
+
const barVals = barSeries?.values ?? [];
|
|
267
|
+
const lineVals = lineSeries?.values ?? [];
|
|
268
|
+
const left = niceScale(0, Math.max(0, ...barVals.filter(Number.isFinite)), 5, true);
|
|
269
|
+
const right = niceScale(Math.min(...[0, ...lineVals]), Math.max(0, ...lineVals.filter(Number.isFinite)), 5, lineSeries?.format !== "percent");
|
|
270
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
271
|
+
const spanL = left.max - left.min || 1;
|
|
272
|
+
for (const tick of left.ticks) {
|
|
273
|
+
const y = box.y + box.h - ((tick - left.min) / spanL) * box.h;
|
|
274
|
+
parts.push(`<line x1="${box.x}" y1="${y}" x2="${box.x + box.w}" y2="${y}" stroke="${INK.grid}" stroke-width="1"/>`);
|
|
275
|
+
parts.push(text(box.x - 10, y + 4, formatTick(tick, barSeries?.format ?? "number"), { size: 11, fill: INK.muted, anchor: "end" }));
|
|
276
|
+
}
|
|
277
|
+
const spanR = right.max - right.min || 1;
|
|
278
|
+
for (const tick of right.ticks) {
|
|
279
|
+
const y = box.y + box.h - ((tick - right.min) / spanR) * box.h;
|
|
280
|
+
parts.push(text(box.x + box.w + 10, y + 4, formatTick(tick, lineSeries?.format ?? "number"), { size: 11, fill: C1, anchor: "start" }));
|
|
281
|
+
}
|
|
282
|
+
parts.push(legend(chart.series, PAD.left - 12, 42));
|
|
283
|
+
const n = chart.labels.length;
|
|
284
|
+
const band = box.w / Math.max(1, n);
|
|
285
|
+
const bw = band * 0.42;
|
|
286
|
+
barVals.forEach((v, i) => {
|
|
287
|
+
const h = (Math.max(0, v) / spanL) * box.h;
|
|
288
|
+
const x = box.x + band * i + band / 2 - bw / 2;
|
|
289
|
+
parts.push(`<rect x="${x.toFixed(1)}" y="${(box.y + box.h - h).toFixed(1)}" width="${bw.toFixed(1)}" height="${Math.max(0, h).toFixed(1)}" rx="3" fill="${C0}" opacity="0.85"/>`);
|
|
290
|
+
});
|
|
291
|
+
if (lineVals.length > 0) {
|
|
292
|
+
const pts = lineVals.map((v, i) => {
|
|
293
|
+
const x = box.x + band * i + band / 2;
|
|
294
|
+
const y = box.y + box.h - ((v - right.min) / spanR) * box.h;
|
|
295
|
+
return `${x.toFixed(1)},${y.toFixed(1)}`;
|
|
296
|
+
});
|
|
297
|
+
parts.push(`<polyline points="${pts.join(" ")}" fill="none" stroke="${C1}" stroke-width="2" stroke-linejoin="round"/>`);
|
|
298
|
+
lineVals.forEach((v, i) => {
|
|
299
|
+
const x = box.x + band * i + band / 2;
|
|
300
|
+
const y = box.y + box.h - ((v - right.min) / spanR) * box.h;
|
|
301
|
+
parts.push(`<circle cx="${x.toFixed(1)}" cy="${y.toFixed(1)}" r="2.6" fill="${INK.cardBg}" stroke="${C1}" stroke-width="2"/>`);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
parts.push(xAxis(box, chart.labels));
|
|
305
|
+
parts.push(footnoteLine(chart.footnote, width, height - 14));
|
|
306
|
+
return svgDoc(width, height, parts.join(""));
|
|
307
|
+
}
|
|
308
|
+
// ------------------------------------------------------------------ KPI 卡片
|
|
309
|
+
function renderKpi(chart, width) {
|
|
310
|
+
const cols = Math.min(4, Math.max(1, chart.labels.length));
|
|
311
|
+
const rows = Math.ceil(chart.labels.length / cols);
|
|
312
|
+
const cardW = Math.floor((width - 24) / cols) - 10;
|
|
313
|
+
const cardH = 104;
|
|
314
|
+
const height = PAD.top + rows * (cardH + 12) + 34;
|
|
315
|
+
const values = chart.series[0]?.values ?? [];
|
|
316
|
+
const format = chart.series[0]?.format ?? "number";
|
|
317
|
+
const parts = [header(chart.title, chart.subtitle, width)];
|
|
318
|
+
chart.labels.forEach((label, i) => {
|
|
319
|
+
const col = i % cols;
|
|
320
|
+
const row = Math.floor(i / cols);
|
|
321
|
+
const x = 12 + col * (cardW + 10);
|
|
322
|
+
const y = PAD.top + row * (cardH + 12);
|
|
323
|
+
const v = values[i] ?? 0;
|
|
324
|
+
const itemFormat = chart.formats?.[i] ?? format;
|
|
325
|
+
const d = delta(v, chart.previous?.[i]);
|
|
326
|
+
parts.push(`<rect x="${x}" y="${y}" width="${cardW}" height="${cardH}" rx="10" fill="${INK.cardBg}" stroke="${INK.cardBorder}" stroke-width="1"/>`);
|
|
327
|
+
parts.push(text(x + 16, y + 26, label, { size: 12, fill: INK.muted }));
|
|
328
|
+
parts.push(text(x + 16, y + 62, formatValue(v, itemFormat), { size: 22, weight: 500, fill: INK.title }));
|
|
329
|
+
if (d) {
|
|
330
|
+
parts.push(text(x + 16, y + 86, `${d.text} 环比`, { size: 12, fill: d.color }));
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
parts.push(text(x + 16, y + 86, "无上期对照", { size: 11, fill: INK.axis }));
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
parts.push(footnoteLine(chart.footnote, width, height - 12));
|
|
337
|
+
return svgDoc(width, height, parts.join(""));
|
|
338
|
+
}
|
|
339
|
+
/** 图表渲染总入口。空数据统一降级为「暂无数据」卡片。 */
|
|
340
|
+
export function renderChart(chart, width = 880) {
|
|
341
|
+
const hasData = chart.labels.length > 0 && chart.series.some((s) => s.values.some((v) => Number.isFinite(v)));
|
|
342
|
+
if (!hasData && chart.kind !== "kpi") {
|
|
343
|
+
return emptyState(width, 260, chart.title, chart.subtitle);
|
|
344
|
+
}
|
|
345
|
+
switch (chart.kind) {
|
|
346
|
+
case "kpi":
|
|
347
|
+
return renderKpi(chart, width);
|
|
348
|
+
case "line":
|
|
349
|
+
return renderLine(chart, width);
|
|
350
|
+
case "bar":
|
|
351
|
+
return renderBar(chart, width);
|
|
352
|
+
case "hbar":
|
|
353
|
+
return renderHBar(chart, width);
|
|
354
|
+
case "donut":
|
|
355
|
+
return renderDonut(chart, width);
|
|
356
|
+
case "combo":
|
|
357
|
+
return renderCombo(chart, width);
|
|
358
|
+
default:
|
|
359
|
+
return emptyState(width, 260, chart.title, chart.subtitle);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/** 把 SVG 包成可直接双击打开/打印的独立 HTML。 */
|
|
363
|
+
export function svgToStandaloneHtml(svg, title) {
|
|
364
|
+
return `<!DOCTYPE html>
|
|
365
|
+
<html lang="zh-CN"><head><meta charset="utf-8"><title>${esc(title)}</title>
|
|
366
|
+
<style>body{margin:0;padding:24px;background:#FAFAF8;font-family:-apple-system,'PingFang SC','Microsoft YaHei',sans-serif}
|
|
367
|
+
svg{max-width:100%;height:auto;background:#fff;border-radius:10px}</style></head>
|
|
368
|
+
<body>${svg}</body></html>`;
|
|
369
|
+
}
|
|
370
|
+
export { compact };
|
|
371
|
+
//# sourceMappingURL=svg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"svg.js","sourceRoot":"","sources":["../../src/charts/svg.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,KAAK,EACL,GAAG,EACH,UAAU,EACV,WAAW,GAEZ,MAAM,aAAa,CAAC;AAiCrB,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAEzD,wDAAwD;AACxD,SAAS,IAAI,CAAC,KAAa;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACvE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AACjC,CAAC;AAED,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnB,SAAS,MAAM,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa;IAC1D,OAAO,kDAAkD,KAAK,aAAa,MAAM,kBAAkB,KAAK,IAAI,MAAM,0GAA0G,KAAK,QAAQ,CAAC;AAC5O,CAAC;AAED,SAAS,IAAI,CACX,CAAS,EACT,CAAS,EACT,OAAe,EACf,OAA+F,EAAE;IAEjG,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;IAC5E,OAAO,YAAY,CAAC,QAAQ,CAAC,gBAAgB,IAAI,kBAAkB,MAAM,WAAW,IAAI,kBAAkB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;AAC7I,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,QAA4B,EAAE,KAAa;IACxE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3F,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,GAAG,EAAE,iBAAiB,KAAK,GAAG,GAAG,CAAC,KAAK,qBAAqB,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;IAC5H,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,KAAa,EAAE,CAAS;IACvE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB,EAAE,CAAS,EAAE,CAAS;IACpD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,yCAAyC,KAAK,KAAK,CAAC,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa,EAAE,QAAiB;IACjF,OAAO,MAAM,CACX,KAAK,EACL,MAAM,EACN;QACE,4BAA4B,KAAK,GAAG,CAAC,aAAa,MAAM,GAAG,CAAC,mBAAmB,GAAG,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,KAAK;QACzH,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE;YAChD,IAAI,EAAE,EAAE;YACR,IAAI,EAAE,GAAG,CAAC,KAAK;YACf,MAAM,EAAE,QAAQ;SACjB,CAAC;KACH,CAAC,IAAI,CAAC,EAAE,CAAC,CACX,CAAC;AACJ,CAAC;AAED,qCAAqC;AACrC,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI;IACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC5D,CAAC;IACD,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5C,IAAI,EAAE,GAAG,GAAG,CAAC;IACb,IAAI,EAAE,KAAK,EAAE;QAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;QAC7B,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,CAAC;QAC3B,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC;IAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,KAAK,CAAC,GAAQ,EAAE,KAAoD,EAAE,MAAmB;IAChG,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;QACpH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,iCAAiC;AACjC,SAAS,KAAK,CAAC,GAAQ,EAAE,MAAgB,EAAE,SAAS,GAAG,EAAE;IACvD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAChI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7G,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,CAAC,GAAG,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED,SAAS,cAAc,CAAC,GAAQ,EAAE,KAAa,EAAE,CAAS;IACxD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,GAAQ,EAAE,KAAa,EAAE,CAAS;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,wEAAwE;AACxE,SAAS,UAAU,CAAC,KAAiB,EAAE,KAAa;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,GAAG,GAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAChH,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,WAAW,KAAK,oBAAoB,CAAC,CAAC;QAC3E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,yBAAyB,KAAK,qEAAqE,CAAC,CAAC;QACzI,IAAI,GAAG,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACrB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,MAAM,aAAa,KAAK,sBAAsB,CAAC,CAAC,CAAC;QAC5J,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,wEAAwE;AACxE,SAAS,SAAS,CAAC,KAAiB,EAAE,KAAa;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,GAAG,GAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IAChH,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAE1C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACvC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,KAAK,KAAK,CAAC,CAAC;QACjK,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,KAAiB,EAAE,KAAa;IAClD,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;IACzD,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,MAAM,GAAG,GAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IACtH,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACxG,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,GAAG,EAAE,kBAAkB,KAAK,oBAAoB,CAAC,CAAC;QACjJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACzI,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,KAAiB,EAAE,KAAa;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,EAAE,GAAG,GAAG,CAAC;IACf,MAAM,EAAE,GAAG,GAAG,CAAC;IACf,MAAM,CAAC,GAAG,GAAG,CAAC;IACd,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,QAAQ,CAAC;IAEnD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,yBAAyB,GAAG,CAAC,IAAI,mBAAmB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IACtH,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,yBAAyB,EAAE,mBAAmB,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IAC9H,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACtE,KAAK,IAAI,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,oBAAoB;IACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACjD,IAAI,UAAU,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAErF,MAAM,OAAO,GAAG,GAAG,CAAC;IACpB,IAAI,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IACrB,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,QAAQ,EAAE,GAAG,CAAC,yCAAyC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC7I,EAAE,IAAI,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAC,EAAU,EAAE,EAAU,EAAE,CAAS,EAAE,KAAa,EAAE,EAAU,EAAE,EAAU,EAAE,KAAa;IACzG,MAAM,CAAC,GAAG,CAAC,GAAW,EAAE,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACrI,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,cAAc,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,KAAK,IAAI,KAAK,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC;AAC/J,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CAAC,KAAiB,EAAE,KAAa;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,GAAG,GAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;IACrH,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,SAAS,EAAE,MAAM,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC;IAC9I,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;QACpH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACzI,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEpD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IACpL,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,8CAA8C,CAAC,CAAC;QACxH,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;YACtC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,MAAM,aAAa,EAAE,sBAAsB,CAAC,CAAC;QACjI,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,KAAiB,EAAE,KAAa;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC;IAClB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,QAAQ,CAAC;IACnD,MAAM,KAAK,GAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAChD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,KAAK,aAAa,KAAK,mBAAmB,GAAG,CAAC,MAAM,aAAa,GAAG,CAAC,UAAU,sBAAsB,CAAC,CAAC;QACpJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,EAAE,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAC,KAAiB,EAAE,KAAK,GAAG,GAAG;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9G,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,KAAK,KAAK;YACR,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnC;YACE,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,KAAa;IAC5D,OAAO;wDAC+C,GAAG,CAAC,KAAK,CAAC;;;QAG1D,GAAG,gBAAgB,CAAC;AAC5B,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|