nodebench-mcp 2.11.0 → 2.14.0
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/NODEBENCH_AGENTS.md +809 -809
- package/README.md +443 -431
- package/STYLE_GUIDE.md +477 -477
- package/dist/__tests__/evalHarness.test.js +1 -1
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js +9 -14
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityEval.test.js +88 -14
- package/dist/__tests__/gaiaCapabilityEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js +9 -5
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +1 -1
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js +165 -17
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +1 -1
- package/dist/__tests__/helpers/answerMatch.d.ts +36 -7
- package/dist/__tests__/helpers/answerMatch.js +224 -35
- package/dist/__tests__/helpers/answerMatch.js.map +1 -1
- package/dist/__tests__/helpers/textLlm.d.ts +1 -1
- package/dist/__tests__/presetRealWorldBench.test.d.ts +1 -0
- package/dist/__tests__/presetRealWorldBench.test.js +850 -0
- package/dist/__tests__/presetRealWorldBench.test.js.map +1 -0
- package/dist/__tests__/tools.test.js +20 -7
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/__tests__/toolsetGatingEval.test.js +21 -11
- package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
- package/dist/db.js +21 -0
- package/dist/db.js.map +1 -1
- package/dist/index.js +424 -327
- package/dist/index.js.map +1 -1
- package/dist/tools/agentBootstrapTools.js +258 -258
- package/dist/tools/boilerplateTools.js +144 -144
- package/dist/tools/cCompilerBenchmarkTools.js +33 -33
- package/dist/tools/documentationTools.js +59 -59
- package/dist/tools/flywheelTools.js +6 -6
- package/dist/tools/gitWorkflowTools.d.ts +11 -0
- package/dist/tools/gitWorkflowTools.js +580 -0
- package/dist/tools/gitWorkflowTools.js.map +1 -0
- package/dist/tools/learningTools.js +26 -26
- package/dist/tools/localFileTools.d.ts +3 -0
- package/dist/tools/localFileTools.js +3164 -125
- package/dist/tools/localFileTools.js.map +1 -1
- package/dist/tools/metaTools.js +82 -0
- package/dist/tools/metaTools.js.map +1 -1
- package/dist/tools/parallelAgentTools.js +228 -0
- package/dist/tools/parallelAgentTools.js.map +1 -1
- package/dist/tools/patternTools.d.ts +13 -0
- package/dist/tools/patternTools.js +456 -0
- package/dist/tools/patternTools.js.map +1 -0
- package/dist/tools/reconTools.js +31 -31
- package/dist/tools/selfEvalTools.js +44 -44
- package/dist/tools/seoTools.d.ts +16 -0
- package/dist/tools/seoTools.js +866 -0
- package/dist/tools/seoTools.js.map +1 -0
- package/dist/tools/sessionMemoryTools.d.ts +15 -0
- package/dist/tools/sessionMemoryTools.js +348 -0
- package/dist/tools/sessionMemoryTools.js.map +1 -0
- package/dist/tools/toolRegistry.d.ts +4 -0
- package/dist/tools/toolRegistry.js +489 -0
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/tools/toonTools.d.ts +15 -0
- package/dist/tools/toonTools.js +94 -0
- package/dist/tools/toonTools.js.map +1 -0
- package/dist/tools/verificationTools.js +41 -41
- package/dist/tools/visionTools.js +17 -17
- package/dist/tools/voiceBridgeTools.d.ts +15 -0
- package/dist/tools/voiceBridgeTools.js +1427 -0
- package/dist/tools/voiceBridgeTools.js.map +1 -0
- package/dist/tools/webTools.js +18 -18
- package/package.json +102 -101
|
@@ -8,34 +8,12 @@ function normalizeBasic(value) {
|
|
|
8
8
|
.toLowerCase();
|
|
9
9
|
}
|
|
10
10
|
const SIMPLE_NUMBER_WORDS = {
|
|
11
|
-
zero: 0,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
six: 6,
|
|
18
|
-
seven: 7,
|
|
19
|
-
eight: 8,
|
|
20
|
-
nine: 9,
|
|
21
|
-
ten: 10,
|
|
22
|
-
eleven: 11,
|
|
23
|
-
twelve: 12,
|
|
24
|
-
thirteen: 13,
|
|
25
|
-
fourteen: 14,
|
|
26
|
-
fifteen: 15,
|
|
27
|
-
sixteen: 16,
|
|
28
|
-
seventeen: 17,
|
|
29
|
-
eighteen: 18,
|
|
30
|
-
nineteen: 19,
|
|
31
|
-
twenty: 20,
|
|
32
|
-
thirty: 30,
|
|
33
|
-
forty: 40,
|
|
34
|
-
fifty: 50,
|
|
35
|
-
sixty: 60,
|
|
36
|
-
seventy: 70,
|
|
37
|
-
eighty: 80,
|
|
38
|
-
ninety: 90,
|
|
11
|
+
zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5,
|
|
12
|
+
six: 6, seven: 7, eight: 8, nine: 9, ten: 10,
|
|
13
|
+
eleven: 11, twelve: 12, thirteen: 13, fourteen: 14, fifteen: 15,
|
|
14
|
+
sixteen: 16, seventeen: 17, eighteen: 18, nineteen: 19,
|
|
15
|
+
twenty: 20, thirty: 30, forty: 40, fifty: 50,
|
|
16
|
+
sixty: 60, seventy: 70, eighty: 80, ninety: 90,
|
|
39
17
|
};
|
|
40
18
|
function tryParseLeadingInt(text) {
|
|
41
19
|
const m = String(text ?? "").match(/-?\d+/);
|
|
@@ -48,15 +26,11 @@ function expectedIsStrictInt(expectedNorm) {
|
|
|
48
26
|
return /^-?\d+$/.test(expectedNorm);
|
|
49
27
|
}
|
|
50
28
|
/**
|
|
51
|
-
* GAIA capability scoring helper.
|
|
29
|
+
* GAIA capability scoring helper (deterministic, synchronous).
|
|
52
30
|
*
|
|
53
|
-
*
|
|
31
|
+
* Conservative rules:
|
|
54
32
|
* - Case/whitespace normalization for all answers
|
|
55
|
-
* - For integer-only expected answers
|
|
56
|
-
* - leading integer inside the model output (e.g. "8 clients" -> 8)
|
|
57
|
-
* - simple number words (e.g. "eight" -> 8)
|
|
58
|
-
*
|
|
59
|
-
* We do NOT loosen decimals/currency formatting by default to avoid inflating scores.
|
|
33
|
+
* - For integer-only expected answers: leading integer extraction + number words
|
|
60
34
|
*/
|
|
61
35
|
export function answersMatch(expectedRaw, actualRaw) {
|
|
62
36
|
const expected = normalizeBasic(expectedRaw);
|
|
@@ -75,4 +49,219 @@ export function answersMatch(expectedRaw, actualRaw) {
|
|
|
75
49
|
}
|
|
76
50
|
return actual === expected;
|
|
77
51
|
}
|
|
52
|
+
// ---------- LLM Judge ----------
|
|
53
|
+
const JUDGE_SYSTEM_PROMPT = `You are a strict but fair answer-equivalence judge for the GAIA benchmark.
|
|
54
|
+
|
|
55
|
+
Given:
|
|
56
|
+
- EXPECTED: the ground-truth answer
|
|
57
|
+
- ACTUAL: the candidate answer
|
|
58
|
+
|
|
59
|
+
Decide whether ACTUAL is semantically equivalent to EXPECTED.
|
|
60
|
+
|
|
61
|
+
Rules:
|
|
62
|
+
1. MATCH if both convey the same factual content, even with:
|
|
63
|
+
- Minor typos or spelling variations (e.g. "Ploybius" vs "Polybius")
|
|
64
|
+
- Different punctuation, capitalization, or trailing periods
|
|
65
|
+
- Reworded but equivalent phrasing (e.g. "85 points" vs "85")
|
|
66
|
+
- Number format variations (e.g. "1,000" vs "1000")
|
|
67
|
+
2. NO MATCH if:
|
|
68
|
+
- The factual content differs (different numbers, names, dates)
|
|
69
|
+
- One answer is a subset but missing key information
|
|
70
|
+
- The answers are about different things entirely
|
|
71
|
+
|
|
72
|
+
Respond with ONLY a single JSON object:
|
|
73
|
+
{"match": true, "reason": "brief explanation"}
|
|
74
|
+
or
|
|
75
|
+
{"match": false, "reason": "brief explanation"}`;
|
|
76
|
+
// ---------- OpenRouter free model auto-discovery ----------
|
|
77
|
+
/**
|
|
78
|
+
* Free models on OpenRouter (ordered by preference for judge tasks).
|
|
79
|
+
* These require an OPENROUTER_API_KEY but cost $0.
|
|
80
|
+
*/
|
|
81
|
+
const OPENROUTER_FREE_MODELS = [
|
|
82
|
+
"google/gemini-2.0-flash-exp:free",
|
|
83
|
+
"meta-llama/llama-3.3-70b-instruct:free",
|
|
84
|
+
"qwen/qwen-2.5-72b-instruct:free",
|
|
85
|
+
"mistralai/mistral-small-3.1-24b-instruct:free",
|
|
86
|
+
];
|
|
87
|
+
let _cachedFreeJudge = null;
|
|
88
|
+
/**
|
|
89
|
+
* Try to create a free OpenRouter judge client.
|
|
90
|
+
* Uses OpenAI-compatible API. Returns null if no API key or all models fail.
|
|
91
|
+
*/
|
|
92
|
+
async function tryCreateOpenRouterFreeJudge() {
|
|
93
|
+
if (_cachedFreeJudge === "unavailable")
|
|
94
|
+
return null;
|
|
95
|
+
if (_cachedFreeJudge)
|
|
96
|
+
return _cachedFreeJudge;
|
|
97
|
+
const apiKey = process.env.OPENROUTER_API_KEY ||
|
|
98
|
+
process.env.OPENROUTER_KEY ||
|
|
99
|
+
"";
|
|
100
|
+
if (!apiKey) {
|
|
101
|
+
_cachedFreeJudge = "unavailable";
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
// Probe the first available model with a tiny request
|
|
105
|
+
for (const model of OPENROUTER_FREE_MODELS) {
|
|
106
|
+
try {
|
|
107
|
+
const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
|
|
108
|
+
method: "POST",
|
|
109
|
+
headers: {
|
|
110
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
111
|
+
"Content-Type": "application/json",
|
|
112
|
+
"HTTP-Referer": "https://github.com/nodebench/nodebench-ai",
|
|
113
|
+
"X-Title": "nodebench-gaia-judge",
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify({
|
|
116
|
+
model,
|
|
117
|
+
messages: [{ role: "user", content: "Reply with only: OK" }],
|
|
118
|
+
temperature: 0,
|
|
119
|
+
max_tokens: 5,
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
if (!response.ok)
|
|
123
|
+
continue;
|
|
124
|
+
const data = (await response.json());
|
|
125
|
+
const text = data?.choices?.[0]?.message?.content ?? "";
|
|
126
|
+
if (!text)
|
|
127
|
+
continue;
|
|
128
|
+
// Model works — create a reusable client
|
|
129
|
+
const client = {
|
|
130
|
+
provider: "openrouter",
|
|
131
|
+
model,
|
|
132
|
+
generateText: async ({ prompt, temperature, maxOutputTokens }) => {
|
|
133
|
+
const res = await fetch("https://openrouter.ai/api/v1/chat/completions", {
|
|
134
|
+
method: "POST",
|
|
135
|
+
headers: {
|
|
136
|
+
"Authorization": `Bearer ${apiKey}`,
|
|
137
|
+
"Content-Type": "application/json",
|
|
138
|
+
"HTTP-Referer": "https://github.com/nodebench/nodebench-ai",
|
|
139
|
+
"X-Title": "nodebench-gaia-judge",
|
|
140
|
+
},
|
|
141
|
+
body: JSON.stringify({
|
|
142
|
+
model,
|
|
143
|
+
messages: [{ role: "user", content: prompt }],
|
|
144
|
+
temperature: typeof temperature === "number" ? temperature : 0,
|
|
145
|
+
max_tokens: typeof maxOutputTokens === "number" ? maxOutputTokens : 200,
|
|
146
|
+
}),
|
|
147
|
+
});
|
|
148
|
+
if (!res.ok) {
|
|
149
|
+
const errText = await res.text().catch(() => "");
|
|
150
|
+
throw new Error(`OpenRouter ${res.status}: ${errText.slice(0, 200)}`);
|
|
151
|
+
}
|
|
152
|
+
const json = (await res.json());
|
|
153
|
+
return String(json?.choices?.[0]?.message?.content ?? "").trim();
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
_cachedFreeJudge = client;
|
|
157
|
+
return client;
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
_cachedFreeJudge = "unavailable";
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Auto-discover the best available judge client.
|
|
168
|
+
*
|
|
169
|
+
* Priority:
|
|
170
|
+
* 1. OpenRouter free model ($0, just needs OPENROUTER_API_KEY)
|
|
171
|
+
* 2. Provided paid LLM client (Gemini/OpenAI/Anthropic)
|
|
172
|
+
* 3. null (deterministic-only fallback)
|
|
173
|
+
*/
|
|
174
|
+
export async function autoDiscoverJudge(paidFallback) {
|
|
175
|
+
// Try free first
|
|
176
|
+
const free = await tryCreateOpenRouterFreeJudge();
|
|
177
|
+
if (free)
|
|
178
|
+
return free;
|
|
179
|
+
// Fall back to paid client (if available and not a noop)
|
|
180
|
+
if (paidFallback && paidFallback.provider !== "none")
|
|
181
|
+
return paidFallback;
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Tiered answer matching: deterministic first, LLM judge fallback.
|
|
186
|
+
*
|
|
187
|
+
* Tier 0 (instant, free): `answersMatch()` — normalization + integer fuzzy
|
|
188
|
+
* Tier 1 (async, free): OpenRouter free model judge — semantic equivalence
|
|
189
|
+
* Tier 2 (async, paid): Provided LLM client — semantic equivalence
|
|
190
|
+
* Tier 3 (instant, free): No API key → deterministic only
|
|
191
|
+
*
|
|
192
|
+
* If no `judge` client is provided, auto-discovers via `autoDiscoverJudge()`.
|
|
193
|
+
*/
|
|
194
|
+
export async function answersMatchWithJudge(expectedRaw, actualRaw, judge) {
|
|
195
|
+
// Tier 0: deterministic
|
|
196
|
+
const detMatch = answersMatch(expectedRaw, actualRaw);
|
|
197
|
+
if (detMatch) {
|
|
198
|
+
return { deterministicMatch: true, judgeInvoked: false, match: true };
|
|
199
|
+
}
|
|
200
|
+
// If no actual answer was produced, skip the judge
|
|
201
|
+
const actual = normalizeBasic(actualRaw);
|
|
202
|
+
if (!actual) {
|
|
203
|
+
return { deterministicMatch: false, judgeInvoked: false, match: false };
|
|
204
|
+
}
|
|
205
|
+
// Resolve judge: use provided client or auto-discover
|
|
206
|
+
const resolvedJudge = judge !== undefined ? judge : await autoDiscoverJudge();
|
|
207
|
+
if (!resolvedJudge || resolvedJudge.provider === "none") {
|
|
208
|
+
return { deterministicMatch: false, judgeInvoked: false, match: false };
|
|
209
|
+
}
|
|
210
|
+
try {
|
|
211
|
+
const prompt = [
|
|
212
|
+
JUDGE_SYSTEM_PROMPT,
|
|
213
|
+
"",
|
|
214
|
+
`EXPECTED: ${expectedRaw}`,
|
|
215
|
+
`ACTUAL: ${actualRaw}`,
|
|
216
|
+
].join("\n");
|
|
217
|
+
const response = await resolvedJudge.generateText({
|
|
218
|
+
prompt,
|
|
219
|
+
temperature: 0,
|
|
220
|
+
maxOutputTokens: 200,
|
|
221
|
+
});
|
|
222
|
+
const parsed = parseJudgeResponse(response);
|
|
223
|
+
return {
|
|
224
|
+
deterministicMatch: false,
|
|
225
|
+
judgeInvoked: true,
|
|
226
|
+
judgeProvider: `${resolvedJudge.provider}:${resolvedJudge.model}`,
|
|
227
|
+
match: parsed.match,
|
|
228
|
+
reason: parsed.reason,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
return {
|
|
233
|
+
deterministicMatch: false,
|
|
234
|
+
judgeInvoked: true,
|
|
235
|
+
judgeProvider: `${resolvedJudge.provider}:${resolvedJudge.model}`,
|
|
236
|
+
match: false,
|
|
237
|
+
reason: `judge error: ${err?.message ?? String(err)}`,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
function parseJudgeResponse(text) {
|
|
242
|
+
const trimmed = String(text ?? "").trim();
|
|
243
|
+
// Try JSON parse
|
|
244
|
+
const jsonMatch = trimmed.match(/\{[\s\S]*\}/);
|
|
245
|
+
if (jsonMatch) {
|
|
246
|
+
try {
|
|
247
|
+
const obj = JSON.parse(jsonMatch[0]);
|
|
248
|
+
if (typeof obj.match === "boolean") {
|
|
249
|
+
return { match: obj.match, reason: String(obj.reason ?? "") };
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// Fall through to heuristic
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Heuristic fallback
|
|
257
|
+
const lower = trimmed.toLowerCase();
|
|
258
|
+
if (lower.includes('"match": true') || lower.includes('"match":true')) {
|
|
259
|
+
return { match: true, reason: trimmed };
|
|
260
|
+
}
|
|
261
|
+
if (lower.includes('"match": false') || lower.includes('"match":false')) {
|
|
262
|
+
return { match: false, reason: trimmed };
|
|
263
|
+
}
|
|
264
|
+
// Conservative default: no match
|
|
265
|
+
return { match: false, reason: `unparseable judge response: ${trimmed.slice(0, 200)}` };
|
|
266
|
+
}
|
|
78
267
|
//# sourceMappingURL=answerMatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answerMatch.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/answerMatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"answerMatch.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/answerMatch.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,mBAAmB,GAA2B;IAClD,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACnD,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE;IAC5C,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC/D,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE;IACtD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IAC5C,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE;CAC/C,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,SAAiB;IACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,SAAS,KAAK,WAAW,CAAC;QAEzD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,KAAK,WAAW,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,KAAK,QAAQ,CAAC;AAC7B,CAAC;AAED,kCAAkC;AAElC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;gDAsBoB,CAAC;AAejD,6DAA6D;AAE7D;;;GAGG;AACH,MAAM,sBAAsB,GAAG;IAC7B,kCAAkC;IAClC,wCAAwC;IACxC,iCAAiC;IACjC,+CAA+C;CAChD,CAAC;AAEF,IAAI,gBAAgB,GAAyC,IAAI,CAAC;AAElE;;;GAGG;AACH,KAAK,UAAU,4BAA4B;IACzC,IAAI,gBAAgB,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAE9C,MAAM,MAAM,GACV,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B,EAAE,CAAC;IACL,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,gBAAgB,GAAG,aAAa,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,+CAA+C,EAAE;gBAC5E,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,MAAM,EAAE;oBACnC,cAAc,EAAE,kBAAkB;oBAClC,cAAc,EAAE,2CAA2C;oBAC3D,SAAS,EAAE,sBAAsB;iBAClC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;oBAC5D,WAAW,EAAE,CAAC;oBACd,UAAU,EAAE,CAAC;iBACd,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,SAAS;YAE3B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAQ,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI;gBAAE,SAAS;YAEpB,yCAAyC;YACzC,MAAM,MAAM,GAAkB;gBAC5B,QAAQ,EAAE,YAAmB;gBAC7B,KAAK;gBACL,YAAY,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE;oBAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,+CAA+C,EAAE;wBACvE,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,eAAe,EAAE,UAAU,MAAM,EAAE;4BACnC,cAAc,EAAE,kBAAkB;4BAClC,cAAc,EAAE,2CAA2C;4BAC3D,SAAS,EAAE,sBAAsB;yBAClC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK;4BACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;4BAC7C,WAAW,EAAE,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;4BAC9D,UAAU,EAAE,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG;yBACxE,CAAC;qBACH,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;wBACZ,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;wBACjD,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxE,CAAC;oBACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;oBACvC,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBACnE,CAAC;aACF,CAAC;YAEF,gBAAgB,GAAG,MAAM,CAAC;YAC1B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IAED,gBAAgB,GAAG,aAAa,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAmC;IAEnC,iBAAiB;IACjB,MAAM,IAAI,GAAG,MAAM,4BAA4B,EAAE,CAAC;IAClD,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,yDAAyD;IACzD,IAAI,YAAY,IAAI,YAAY,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IAE1E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,SAAiB,EACjB,KAA4B;IAE5B,wBAAwB;IACxB,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,mDAAmD;IACnD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,sDAAsD;IACtD,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAC9E,IAAI,CAAC,aAAa,IAAK,aAAqB,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACjE,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG;YACb,mBAAmB;YACnB,EAAE;YACF,aAAa,WAAW,EAAE;YAC1B,WAAW,SAAS,EAAE;SACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC;YAChD,MAAM;YACN,WAAW,EAAE,CAAC;YACd,eAAe,EAAE,GAAG;SACrB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO;YACL,kBAAkB,EAAE,KAAK;YACzB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,GAAG,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE;YACjE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO;YACL,kBAAkB,EAAE,KAAK;YACzB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,GAAG,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE;YACjE,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,gBAAgB,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;SACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1C,iBAAiB;IACjB,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YAChE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,iCAAiC;IACjC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|