wicked-crew 0.9.7 → 0.9.9
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/dist/learn/routes.js +2 -2
- package/dist/learn/routes.js.map +1 -1
- package/dist/learn/topics.d.ts +16 -3
- package/dist/learn/topics.d.ts.map +1 -1
- package/dist/learn/topics.js +70 -15
- package/dist/learn/topics.js.map +1 -1
- package/dist/studio/assets/{index-JuaiK28Q.css → index-C8TH8NEd.css} +1 -1
- package/dist/studio/assets/{index-CMfhDU4t.js → index-IIubnYx3.js} +117 -122
- package/dist/studio/editors/wicked-page/editor.json +1 -1
- package/dist/studio/editors/wicked-page/index.html +1 -1
- package/dist/studio/index.html +2 -2
- package/dist/studio/testid-inventory.json +184 -100
- package/package.json +3 -3
package/dist/learn/routes.js
CHANGED
|
@@ -7,7 +7,7 @@ import { z } from 'zod';
|
|
|
7
7
|
import { API_PREFIX } from '../api/api-prefix.js';
|
|
8
8
|
import { LOCAL_ACTOR } from '../api/auth.js';
|
|
9
9
|
import { isHumanOperator } from '../api/watch-routes.js';
|
|
10
|
-
import { readTopics } from './topics.js';
|
|
10
|
+
import { mergedSource, readTopics } from './topics.js';
|
|
11
11
|
import { LEARN_SLUG, MAX_EVERY_HOURS, MIN_EVERY_HOURS, scheduleId } from './schedule-store.js';
|
|
12
12
|
const V = API_PREFIX;
|
|
13
13
|
export const LearnSchedulePutSchema = z
|
|
@@ -42,7 +42,7 @@ export function registerLearnRoutes(app, deps) {
|
|
|
42
42
|
const s = schedules.find((x) => x.slug === slug);
|
|
43
43
|
return s !== undefined ? (2 * s.everyHours) / 24 : (deps.defaultStaleDays ?? 60);
|
|
44
44
|
};
|
|
45
|
-
return { repoRef, topics: await readTopics(repo.root_path, staleDays, now()) };
|
|
45
|
+
return { repoRef, topics: await readTopics(await mergedSource(repo.root_path, repo.default_branch), staleDays, now()) };
|
|
46
46
|
});
|
|
47
47
|
app.put(`${V}/learn/schedules/:id`, { config: { manifest: { requestType: 'LearnSchedulePutBody', responseType: 'LearnSchedule', statusCodes: [200, 400, 403, 404] } } }, async (req, reply) => {
|
|
48
48
|
const actor = actorOf(req);
|
package/dist/learn/routes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/learn/routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/learn/routes.ts"],"names":[],"mappings":"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"}
|
package/dist/learn/topics.d.ts
CHANGED
|
@@ -8,7 +8,20 @@
|
|
|
8
8
|
import type { LearnTopic } from 'wicked-crew-api-types';
|
|
9
9
|
export type { LearnTopic };
|
|
10
10
|
/** One topic's summary. `staleAfterDays`: an active claim not re-verified for longer counts as stale. */
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/** Where a topic's files are read from: the checkout's working tree, or a git ref (what MERGED). */
|
|
12
|
+
export interface TopicSource {
|
|
13
|
+
/** The topic directories under `.wicked/knowledge/`. */
|
|
14
|
+
slugs(): Promise<string[]>;
|
|
15
|
+
/** One file's text, or `null` when absent. */
|
|
16
|
+
read(slug: string, file: 'topic.json' | 'claims.jsonl'): Promise<string | null>;
|
|
17
|
+
}
|
|
18
|
+
export declare function treeSource(root: string): TopicSource;
|
|
19
|
+
/** The topics as they are at a git `ref` of the checkout (e.g. `origin/main`, what the learn tick indexes). */
|
|
20
|
+
export declare function refSource(root: string, ref: string): TopicSource;
|
|
21
|
+
export declare function readTopic(src: TopicSource, slug: string, staleAfterDays: number, now: Date): Promise<LearnTopic>;
|
|
22
|
+
/** Every topic in `src`, sorted by slug. No knowledge dir is an empty list. */
|
|
23
|
+
export declare function readTopics(src: TopicSource, staleAfterDays: (slug: string) => number, now: Date): Promise<LearnTopic[]>;
|
|
24
|
+
/** What MERGED (F-LEARN-4): `origin/<default>` when the checkout has that ref (the learn tick fetches
|
|
25
|
+
* it each minute and indexes the same tree), else the working tree (a repository with no remote). */
|
|
26
|
+
export declare function mergedSource(root: string, defaultBranch: string): Promise<TopicSource>;
|
|
14
27
|
//# sourceMappingURL=topics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../src/learn/topics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"topics.d.ts","sourceRoot":"","sources":["../../src/learn/topics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,YAAY,EAAE,UAAU,EAAE,CAAC;AAU3B,yGAAyG;AACzG,oGAAoG;AACpG,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3B,8CAA8C;IAC9C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACjF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoBpD;AAED,+GAA+G;AAC/G,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAoBhE;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAmDtH;AAED,+EAA+E;AAC/E,wBAAsB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAG7H;AAED;sGACsG;AACtG,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAQ5F"}
|
package/dist/learn/topics.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* the topic (`problem`), never thrown.
|
|
7
7
|
*/
|
|
8
8
|
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
9
|
+
import { execCapped } from '../core/exec.js';
|
|
9
10
|
import { join } from 'node:path';
|
|
10
11
|
import { LEARN_SLUG } from './schedule-store.js';
|
|
11
12
|
const MAX_TOPICS = 200;
|
|
@@ -14,8 +15,55 @@ const DAY_MS = 86_400_000;
|
|
|
14
15
|
function iso(v) {
|
|
15
16
|
return typeof v === 'string' && !Number.isNaN(Date.parse(v)) ? v : null;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
export function treeSource(root) {
|
|
19
|
+
const base = join(root, '.wicked', 'knowledge');
|
|
20
|
+
return {
|
|
21
|
+
slugs: async () => {
|
|
22
|
+
try {
|
|
23
|
+
return (await readdir(base, { withFileTypes: true })).filter((d) => d.isDirectory()).map((d) => d.name);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
read: async (slug, file) => {
|
|
30
|
+
const path = join(base, slug, file);
|
|
31
|
+
try {
|
|
32
|
+
if ((await stat(path)).size > MAX_CLAIMS_BYTES)
|
|
33
|
+
return null;
|
|
34
|
+
return await readFile(path, 'utf8');
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** The topics as they are at a git `ref` of the checkout (e.g. `origin/main`, what the learn tick indexes). */
|
|
43
|
+
export function refSource(root, ref) {
|
|
44
|
+
const git = async (args) => {
|
|
45
|
+
try {
|
|
46
|
+
return (await execCapped('git', ['-C', root, ...args], { timeout: 10_000, maxBuffer: MAX_CLAIMS_BYTES })).stdout;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
slugs: async () => {
|
|
54
|
+
// `<mode> <type> <oid>\t<name>` — only tree entries are topics (codex r1: a tracked file is not).
|
|
55
|
+
const out = await git(['ls-tree', `${ref}:.wicked/knowledge`]);
|
|
56
|
+
if (out === null)
|
|
57
|
+
return [];
|
|
58
|
+
return out.split('\n').flatMap((line) => {
|
|
59
|
+
const m = /^\d+ tree [0-9a-f]+\t(.+)$/.exec(line.trim());
|
|
60
|
+
return m !== null ? [m[1]] : [];
|
|
61
|
+
});
|
|
62
|
+
},
|
|
63
|
+
read: (slug, file) => git(['show', `${ref}:.wicked/knowledge/${slug}/${file}`]),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export async function readTopic(src, slug, staleAfterDays, now) {
|
|
19
67
|
const topic = {
|
|
20
68
|
slug,
|
|
21
69
|
title: slug,
|
|
@@ -28,7 +76,10 @@ export async function readTopic(dir, slug, staleAfterDays, now) {
|
|
|
28
76
|
problem: null,
|
|
29
77
|
};
|
|
30
78
|
try {
|
|
31
|
-
const
|
|
79
|
+
const raw = await src.read(slug, 'topic.json');
|
|
80
|
+
if (raw === null)
|
|
81
|
+
throw new Error('absent');
|
|
82
|
+
const meta = JSON.parse(raw);
|
|
32
83
|
if (typeof meta['title'] === 'string' && meta['title'].trim() !== '')
|
|
33
84
|
topic.title = meta['title'];
|
|
34
85
|
if (meta['kind'] === 'event')
|
|
@@ -39,12 +90,12 @@ export async function readTopic(dir, slug, staleAfterDays, now) {
|
|
|
39
90
|
topic.problem = 'topic.json is missing or does not parse';
|
|
40
91
|
}
|
|
41
92
|
try {
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
throw new Error('too large');
|
|
93
|
+
const text = await src.read(slug, 'claims.jsonl');
|
|
94
|
+
if (text === null)
|
|
95
|
+
throw new Error('absent or too large');
|
|
45
96
|
const urls = new Set();
|
|
46
97
|
let oldest = null;
|
|
47
|
-
for (const line of
|
|
98
|
+
for (const line of text.split('\n')) {
|
|
48
99
|
if (line.trim() === '')
|
|
49
100
|
continue;
|
|
50
101
|
let c;
|
|
@@ -79,17 +130,21 @@ export async function readTopic(dir, slug, staleAfterDays, now) {
|
|
|
79
130
|
}
|
|
80
131
|
return topic;
|
|
81
132
|
}
|
|
82
|
-
/** Every topic
|
|
83
|
-
export async function readTopics(
|
|
84
|
-
const
|
|
85
|
-
|
|
133
|
+
/** Every topic in `src`, sorted by slug. No knowledge dir is an empty list. */
|
|
134
|
+
export async function readTopics(src, staleAfterDays, now) {
|
|
135
|
+
const names = (await src.slugs()).filter((n) => LEARN_SLUG.test(n)).sort();
|
|
136
|
+
return Promise.all(names.slice(0, MAX_TOPICS).map((slug) => readTopic(src, slug, staleAfterDays(slug), now)));
|
|
137
|
+
}
|
|
138
|
+
/** What MERGED (F-LEARN-4): `origin/<default>` when the checkout has that ref (the learn tick fetches
|
|
139
|
+
* it each minute and indexes the same tree), else the working tree (a repository with no remote). */
|
|
140
|
+
export async function mergedSource(root, defaultBranch) {
|
|
141
|
+
const ref = `origin/${defaultBranch || 'main'}`;
|
|
86
142
|
try {
|
|
87
|
-
|
|
143
|
+
await execCapped('git', ['-C', root, 'rev-parse', '--verify', '--quiet', `${ref}^{commit}`], { timeout: 5_000 });
|
|
144
|
+
return refSource(root, ref);
|
|
88
145
|
}
|
|
89
146
|
catch {
|
|
90
|
-
return
|
|
147
|
+
return treeSource(root);
|
|
91
148
|
}
|
|
92
|
-
names.sort();
|
|
93
|
-
return Promise.all(names.slice(0, MAX_TOPICS).map((slug) => readTopic(join(base, slug), slug, staleAfterDays(slug), now)));
|
|
94
149
|
}
|
|
95
150
|
//# sourceMappingURL=topics.js.map
|
package/dist/learn/topics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../src/learn/topics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACzC,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;
|
|
1
|
+
{"version":3,"file":"topics.js","sourceRoot":"","sources":["../../src/learn/topics.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIjD,MAAM,UAAU,GAAG,GAAG,CAAC;AACvB,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACzC,MAAM,MAAM,GAAG,UAAU,CAAC;AAE1B,SAAS,GAAG,CAAC,CAAU;IACrB,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC;AAWD,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC1G,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,gBAAgB;oBAAE,OAAO,IAAI,CAAC;gBAC5D,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAW;IACjD,MAAM,GAAG,GAAG,KAAK,EAAE,IAAc,EAA0B,EAAE;QAC3D,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACnH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,kGAAkG;YAClG,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC;YAC/D,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACtC,MAAM,CAAC,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,GAAG,sBAAsB,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAgB,EAAE,IAAY,EAAE,cAAsB,EAAE,GAAS;IAC/F,MAAM,KAAK,GAAe;QACxB,IAAI;QACJ,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;QACjE,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,IAAI;KACd,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC/C,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACxD,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAClG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO;YAAE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;QACnD,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,OAAO,GAAG,yCAAyC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,IAAI,MAAM,GAAkB,IAAI,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS;YACjC,IAAI,CAA0B,CAAC;YAC/B,IAAI,CAAC;gBACH,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,OAAO,KAAK,6CAA6C,CAAC;gBAChE,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3B,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,cAAc,IAAI,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;oBAAE,IAAI,CAAC,IAAI,OAAQ,CAAuB,CAAC,GAAG,KAAK,QAAQ;wBAAE,IAAI,CAAC,GAAG,CAAE,CAAqB,CAAC,GAAG,CAAC,CAAC;YAC/J,IAAI,MAAM,KAAK,QAAQ;gBAAE,SAAS;YAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC;gBAAE,MAAM,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,cAAc,GAAG,MAAM;gBAAE,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,KAAK,CAAC,gBAAgB,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,OAAO,KAAK,uCAAuC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAgB,EAAE,cAAwC,EAAE,GAAS;IACpG,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3E,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC;AAED;sGACsG;AACtG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,aAAqB;IACpE,MAAM,GAAG,GAAG,UAAU,aAAa,IAAI,MAAM,EAAE,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,GAAG,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACjH,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
|