helixmind 0.6.5 → 0.7.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.
Files changed (152) hide show
  1. package/dist/cli/agent/loop.d.ts.map +1 -1
  2. package/dist/cli/agent/loop.js +18 -11
  3. package/dist/cli/agent/loop.js.map +1 -1
  4. package/dist/cli/agent/permissions.d.ts +16 -0
  5. package/dist/cli/agent/permissions.d.ts.map +1 -1
  6. package/dist/cli/agent/permissions.js +74 -5
  7. package/dist/cli/agent/permissions.js.map +1 -1
  8. package/dist/cli/agent/sandbox.d.ts.map +1 -1
  9. package/dist/cli/agent/sandbox.js +3 -0
  10. package/dist/cli/agent/sandbox.js.map +1 -1
  11. package/dist/cli/brain/archive.d.ts.map +1 -1
  12. package/dist/cli/brain/archive.js +48 -18
  13. package/dist/cli/brain/archive.js.map +1 -1
  14. package/dist/cli/brain/control-protocol.d.ts +17 -0
  15. package/dist/cli/brain/control-protocol.d.ts.map +1 -1
  16. package/dist/cli/brain/control-protocol.js +79 -0
  17. package/dist/cli/brain/control-protocol.js.map +1 -1
  18. package/dist/cli/brain/path-guard.d.ts +2 -0
  19. package/dist/cli/brain/path-guard.d.ts.map +1 -0
  20. package/dist/cli/brain/path-guard.js +94 -0
  21. package/dist/cli/brain/path-guard.js.map +1 -0
  22. package/dist/cli/brain/relay-client.d.ts +2 -0
  23. package/dist/cli/brain/relay-client.d.ts.map +1 -1
  24. package/dist/cli/brain/relay-client.js +58 -8
  25. package/dist/cli/brain/relay-client.js.map +1 -1
  26. package/dist/cli/brain/server.d.ts.map +1 -1
  27. package/dist/cli/brain/server.js +235 -23
  28. package/dist/cli/brain/server.js.map +1 -1
  29. package/dist/cli/brain/stdout-capture.d.ts +11 -0
  30. package/dist/cli/brain/stdout-capture.d.ts.map +1 -1
  31. package/dist/cli/brain/stdout-capture.js +42 -1
  32. package/dist/cli/brain/stdout-capture.js.map +1 -1
  33. package/dist/cli/brain/web-chat-handler.d.ts.map +1 -1
  34. package/dist/cli/brain/web-chat-handler.js +7 -0
  35. package/dist/cli/brain/web-chat-handler.js.map +1 -1
  36. package/dist/cli/checkpoints/revert.d.ts +5 -0
  37. package/dist/cli/checkpoints/revert.d.ts.map +1 -1
  38. package/dist/cli/checkpoints/revert.js +100 -11
  39. package/dist/cli/checkpoints/revert.js.map +1 -1
  40. package/dist/cli/checkpoints/store.d.ts +3 -0
  41. package/dist/cli/checkpoints/store.d.ts.map +1 -1
  42. package/dist/cli/checkpoints/store.js.map +1 -1
  43. package/dist/cli/commands/chat.d.ts.map +1 -1
  44. package/dist/cli/commands/chat.js +138 -73
  45. package/dist/cli/commands/chat.js.map +1 -1
  46. package/dist/cli/core/input.d.ts +0 -1
  47. package/dist/cli/core/input.d.ts.map +1 -1
  48. package/dist/cli/core/input.js +9 -17
  49. package/dist/cli/core/input.js.map +1 -1
  50. package/dist/cli/jarvis/autonomy.d.ts +13 -1
  51. package/dist/cli/jarvis/autonomy.d.ts.map +1 -1
  52. package/dist/cli/jarvis/autonomy.js +33 -1
  53. package/dist/cli/jarvis/autonomy.js.map +1 -1
  54. package/dist/cli/jarvis/core-ethics.d.ts +15 -0
  55. package/dist/cli/jarvis/core-ethics.d.ts.map +1 -1
  56. package/dist/cli/jarvis/core-ethics.js +110 -9
  57. package/dist/cli/jarvis/core-ethics.js.map +1 -1
  58. package/dist/cli/jarvis/daemon.d.ts.map +1 -1
  59. package/dist/cli/jarvis/daemon.js +8 -0
  60. package/dist/cli/jarvis/daemon.js.map +1 -1
  61. package/dist/cli/jarvis/instance-lock.d.ts.map +1 -1
  62. package/dist/cli/jarvis/instance-lock.js +132 -27
  63. package/dist/cli/jarvis/instance-lock.js.map +1 -1
  64. package/dist/cli/jarvis/learning.d.ts +6 -0
  65. package/dist/cli/jarvis/learning.d.ts.map +1 -1
  66. package/dist/cli/jarvis/learning.js +17 -3
  67. package/dist/cli/jarvis/learning.js.map +1 -1
  68. package/dist/cli/jarvis/notifications.d.ts.map +1 -1
  69. package/dist/cli/jarvis/notifications.js +75 -10
  70. package/dist/cli/jarvis/notifications.js.map +1 -1
  71. package/dist/cli/jarvis/onboarding.d.ts.map +1 -1
  72. package/dist/cli/jarvis/onboarding.js +32 -2
  73. package/dist/cli/jarvis/onboarding.js.map +1 -1
  74. package/dist/cli/jarvis/queue.d.ts +5 -0
  75. package/dist/cli/jarvis/queue.d.ts.map +1 -1
  76. package/dist/cli/jarvis/queue.js +23 -6
  77. package/dist/cli/jarvis/queue.js.map +1 -1
  78. package/dist/cli/jarvis/scheduler.d.ts +8 -0
  79. package/dist/cli/jarvis/scheduler.d.ts.map +1 -1
  80. package/dist/cli/jarvis/scheduler.js +32 -4
  81. package/dist/cli/jarvis/scheduler.js.map +1 -1
  82. package/dist/cli/jarvis/sentiment.d.ts +11 -0
  83. package/dist/cli/jarvis/sentiment.d.ts.map +1 -1
  84. package/dist/cli/jarvis/sentiment.js +40 -6
  85. package/dist/cli/jarvis/sentiment.js.map +1 -1
  86. package/dist/cli/jarvis/skills.d.ts +35 -0
  87. package/dist/cli/jarvis/skills.d.ts.map +1 -1
  88. package/dist/cli/jarvis/skills.js +144 -0
  89. package/dist/cli/jarvis/skills.js.map +1 -1
  90. package/dist/cli/jarvis/triggers.d.ts.map +1 -1
  91. package/dist/cli/jarvis/triggers.js +65 -9
  92. package/dist/cli/jarvis/triggers.js.map +1 -1
  93. package/dist/cli/jarvis/types.d.ts +10 -0
  94. package/dist/cli/jarvis/types.d.ts.map +1 -1
  95. package/dist/cli/jarvis/world-model.d.ts +4 -0
  96. package/dist/cli/jarvis/world-model.d.ts.map +1 -1
  97. package/dist/cli/jarvis/world-model.js +23 -1
  98. package/dist/cli/jarvis/world-model.js.map +1 -1
  99. package/dist/cli/providers/anthropic.d.ts +5 -1
  100. package/dist/cli/providers/anthropic.d.ts.map +1 -1
  101. package/dist/cli/providers/anthropic.js +133 -36
  102. package/dist/cli/providers/anthropic.js.map +1 -1
  103. package/dist/cli/providers/model-limits.d.ts +8 -0
  104. package/dist/cli/providers/model-limits.d.ts.map +1 -1
  105. package/dist/cli/providers/model-limits.js +41 -0
  106. package/dist/cli/providers/model-limits.js.map +1 -1
  107. package/dist/cli/providers/ollama.d.ts +2 -0
  108. package/dist/cli/providers/ollama.d.ts.map +1 -1
  109. package/dist/cli/providers/ollama.js +8 -0
  110. package/dist/cli/providers/ollama.js.map +1 -1
  111. package/dist/cli/providers/openai.d.ts +5 -1
  112. package/dist/cli/providers/openai.d.ts.map +1 -1
  113. package/dist/cli/providers/openai.js +66 -19
  114. package/dist/cli/providers/openai.js.map +1 -1
  115. package/dist/cli/providers/rate-limiter.d.ts +58 -20
  116. package/dist/cli/providers/rate-limiter.d.ts.map +1 -1
  117. package/dist/cli/providers/rate-limiter.js +212 -96
  118. package/dist/cli/providers/rate-limiter.js.map +1 -1
  119. package/dist/cli/providers/registry.d.ts.map +1 -1
  120. package/dist/cli/providers/registry.js +20 -12
  121. package/dist/cli/providers/registry.js.map +1 -1
  122. package/dist/cli/providers/types.d.ts +16 -5
  123. package/dist/cli/providers/types.d.ts.map +1 -1
  124. package/dist/spiral/cloud/content-extractor.d.ts.map +1 -1
  125. package/dist/spiral/cloud/content-extractor.js +6 -4
  126. package/dist/spiral/cloud/content-extractor.js.map +1 -1
  127. package/dist/spiral/cloud/search-provider.d.ts.map +1 -1
  128. package/dist/spiral/cloud/search-provider.js +7 -2
  129. package/dist/spiral/cloud/search-provider.js.map +1 -1
  130. package/dist/spiral/cloud/web-enricher.d.ts.map +1 -1
  131. package/dist/spiral/cloud/web-enricher.js +10 -2
  132. package/dist/spiral/cloud/web-enricher.js.map +1 -1
  133. package/dist/spiral/compression.d.ts +5 -2
  134. package/dist/spiral/compression.d.ts.map +1 -1
  135. package/dist/spiral/compression.js +23 -6
  136. package/dist/spiral/compression.js.map +1 -1
  137. package/dist/spiral/engine.d.ts +7 -1
  138. package/dist/spiral/engine.d.ts.map +1 -1
  139. package/dist/spiral/engine.js +83 -35
  140. package/dist/spiral/engine.js.map +1 -1
  141. package/dist/storage/database.d.ts.map +1 -1
  142. package/dist/storage/database.js +41 -0
  143. package/dist/storage/database.js.map +1 -1
  144. package/dist/storage/nodes.d.ts +6 -0
  145. package/dist/storage/nodes.d.ts.map +1 -1
  146. package/dist/storage/nodes.js +9 -0
  147. package/dist/storage/nodes.js.map +1 -1
  148. package/dist/storage/vectors.d.ts +1 -0
  149. package/dist/storage/vectors.d.ts.map +1 -1
  150. package/dist/storage/vectors.js +39 -7
  151. package/dist/storage/vectors.js.map +1 -1
  152. package/package.json +3 -3
@@ -1,15 +1,82 @@
1
1
  import { createServer } from 'node:http';
2
- import { randomUUID } from 'node:crypto';
3
- import { spawn } from 'node:child_process';
2
+ import { randomUUID, timingSafeEqual } from 'node:crypto';
3
+ import { spawn, spawnSync } from 'node:child_process';
4
+ import * as os from 'node:os';
5
+ import * as path from 'node:path';
6
+ import * as fs from 'node:fs';
4
7
  import { WebSocketServer, WebSocket } from 'ws';
5
8
  import { generateBrainHTML } from './template.js';
6
- import { CONTROL_REQUEST_TYPES, } from './control-protocol.js';
9
+ import { CONTROL_REQUEST_TYPES, validateControlMessageShape, } from './control-protocol.js';
7
10
  import { VERSION } from '../version.js';
11
+ import { isValidProjectPath } from './path-guard.js';
8
12
  const OLLAMA_BASE = 'http://localhost:11434';
9
13
  const OLLAMA_PROXY_TIMEOUT_MS = 5000;
10
14
  const BRAIN_PORT_START = 9420;
11
15
  const BRAIN_PORT_END = 9440;
12
16
  const AUTH_TIMEOUT_MS = 5000;
17
+ // FIX: BRAIN-F10 — cap how many times /api/token serves the full token per
18
+ // process lifetime. Legitimate callers need it at most 2–3 times (web dashboard
19
+ // discovery + brain HTML). After that, all callers must embed the token already.
20
+ const MAX_TOKEN_SERVES = 3;
21
+ // FIX: BRAIN-F12 — resolve the absolute path to the `ollama` binary at startup
22
+ // (via `where`/`which`) and only spawn that exact path. Prevents PATH hijack
23
+ // where a malicious `ollama` earlier in PATH would get executed instead.
24
+ let resolvedOllamaPath = null;
25
+ function resolveOllamaBinary() {
26
+ if (resolvedOllamaPath !== null)
27
+ return resolvedOllamaPath;
28
+ const isWindows = process.platform === 'win32';
29
+ const cmd = isWindows ? 'where' : 'which';
30
+ try {
31
+ const r = spawnSync(cmd, ['ollama'], { encoding: 'utf8', timeout: 3000, windowsHide: true });
32
+ if (r.status === 0 && r.stdout) {
33
+ const line = r.stdout.split(/\r?\n/).find((l) => l.trim().length > 0);
34
+ if (line && path.isAbsolute(line.trim())) {
35
+ resolvedOllamaPath = line.trim();
36
+ return resolvedOllamaPath;
37
+ }
38
+ }
39
+ console.error('[brain] ollama binary not found on PATH — /start_ollama disabled');
40
+ }
41
+ catch (err) {
42
+ console.error('[brain] failed to resolve ollama binary:', err instanceof Error ? err.message : String(err));
43
+ }
44
+ resolvedOllamaPath = '';
45
+ return null;
46
+ }
47
+ /**
48
+ * FIX: BRAIN-F3 — Validate Host header on local HTTP requests. The Host header
49
+ * must reference a loopback address; otherwise the request may be a
50
+ * DNS-rebinding attack against the CLI server.
51
+ */
52
+ function isLoopbackHost(hostHeader) {
53
+ if (!hostHeader)
54
+ return false;
55
+ // Strip port
56
+ const hostnameOnly = hostHeader.replace(/:\d+$/, '').toLowerCase().replace(/^\[|\]$/g, '');
57
+ return (hostnameOnly === '127.0.0.1' ||
58
+ hostnameOnly === 'localhost' ||
59
+ hostnameOnly === '::1' ||
60
+ hostnameOnly === '0.0.0.0');
61
+ }
62
+ /**
63
+ * FIX: BRAIN-F8 — Timing-safe token comparison. Prevents a network/timing
64
+ * attacker from inferring the token byte by byte through response-time
65
+ * differences in `a !== b`.
66
+ */
67
+ function timingSafeTokenEq(a, b) {
68
+ if (typeof a !== 'string' || typeof b !== 'string')
69
+ return false;
70
+ if (a.length !== b.length)
71
+ return false;
72
+ try {
73
+ return timingSafeEqual(Buffer.from(a), Buffer.from(b));
74
+ }
75
+ catch (err) {
76
+ console.error('[brain] timingSafeEqual failed:', err instanceof Error ? err.message : String(err));
77
+ return false;
78
+ }
79
+ }
13
80
  /** Proxy a request to the Ollama API and return the response */
14
81
  async function ollamaProxy(path, res, corsOrigin, method = 'GET', body) {
15
82
  try {
@@ -117,6 +184,30 @@ export function startBrainServer(initialData) {
117
184
  let controlHandlers = null;
118
185
  // Mutable port reference — updated after listen() resolves the actual port
119
186
  let resolvedPort = BRAIN_PORT_START;
187
+ // FIX: BRAIN-F10 — count how many times /api/token has served the full token
188
+ // this process lifetime. Over the cap, respond 410 Gone.
189
+ let tokenServeCount = 0;
190
+ // FIX: BRAIN-F12 — eagerly resolve the ollama binary path at server start so
191
+ // later /start_ollama requests use the absolute path (or get denied).
192
+ resolveOllamaBinary();
193
+ // FIX: BRAIN-F10 — persist the session token to a user-only file so that
194
+ // legitimate local helpers (e.g. browser discovery) can pick it up without
195
+ // going through the HTTP endpoint. File mode 0o600: owner read/write only.
196
+ try {
197
+ const dir = path.join(os.homedir(), '.helixmind');
198
+ fs.mkdirSync(dir, { recursive: true });
199
+ // Placeholder name; real port substituted after listen() resolves
200
+ const initialFile = path.join(dir, `session-pending-${process.pid}.token`);
201
+ fs.writeFileSync(initialFile, connectionToken, { mode: 0o600 });
202
+ // Clean up pending file on process exit — best-effort
203
+ process.on('exit', () => { try {
204
+ fs.unlinkSync(initialFile);
205
+ }
206
+ catch { /* non-fatal */ } });
207
+ }
208
+ catch (err) {
209
+ console.error('[brain] failed to persist session token:', err instanceof Error ? err.message : String(err));
210
+ }
120
211
  const httpServer = createServer(async (req, res) => {
121
212
  const url = req.url || '/';
122
213
  // CORS headers — restrict to localhost origins only (prevents cross-site abuse)
@@ -159,21 +250,50 @@ export function startBrainServer(initialData) {
159
250
  res.end(JSON.stringify(meta));
160
251
  }
161
252
  else if (url === '/api/token') {
162
- // Full tokenCORS allowed for localhost origins only (discovery from web dashboard)
163
- // Token can be fetched multiple times (needed for both web dashboard and brain HTML)
253
+ // FIX: BRAIN-F3reject requests whose Host header doesn't resolve to
254
+ // loopback. A browser that's been tricked into resolving the CLI's
255
+ // 127.0.0.1 via DNS rebinding will still carry the attacker's Host.
256
+ if (!isLoopbackHost(req.headers.host)) {
257
+ console.warn('[brain] /api/token rejected: non-loopback Host header', req.headers.host);
258
+ res.writeHead(403, { 'Content-Type': 'application/json' });
259
+ res.end(JSON.stringify({ error: 'Forbidden' }));
260
+ return;
261
+ }
262
+ // FIX: BRAIN-F10 — rate-limit how many times we hand out the full token
263
+ // from this endpoint. Legitimate flows need it at most ~3 times.
264
+ if (tokenServeCount >= MAX_TOKEN_SERVES) {
265
+ console.warn(`[brain] /api/token refused — cap of ${MAX_TOKEN_SERVES} reached`);
266
+ res.writeHead(410, { 'Content-Type': 'application/json', ...corsHeaders });
267
+ res.end(JSON.stringify({ error: 'Token endpoint disabled — cap reached' }));
268
+ return;
269
+ }
270
+ tokenServeCount++;
271
+ console.warn(`[brain] Token served to caller (${tokenServeCount}/${MAX_TOKEN_SERVES})`);
164
272
  res.writeHead(200, { 'Content-Type': 'application/json', ...corsHeaders });
165
273
  res.end(JSON.stringify({ token: connectionToken }));
166
274
  }
167
275
  else if (url === '/api/token-hint') {
276
+ if (!isLoopbackHost(req.headers.host)) {
277
+ res.writeHead(403, { 'Content-Type': 'application/json' });
278
+ res.end(JSON.stringify({ error: 'Forbidden' }));
279
+ return;
280
+ }
168
281
  const hint = connectionToken.slice(-4);
169
282
  res.writeHead(200, { 'Content-Type': 'application/json', ...corsHeaders });
170
283
  res.end(JSON.stringify({ hint }));
171
284
  }
172
285
  else if (url?.startsWith('/api/data')) {
173
286
  // SECURITY: require connection token to prevent cross-site brain data theft
287
+ // FIX: BRAIN-F3 — defense-in-depth Host check.
288
+ if (!isLoopbackHost(req.headers.host)) {
289
+ res.writeHead(403, { 'Content-Type': 'application/json' });
290
+ res.end(JSON.stringify({ error: 'Forbidden' }));
291
+ return;
292
+ }
174
293
  const dataUrl = new URL(url, `http://127.0.0.1:${resolvedPort}`);
175
- const tok = dataUrl.searchParams.get('token');
176
- if (tok !== connectionToken) {
294
+ const tok = dataUrl.searchParams.get('token') ?? '';
295
+ // FIX: BRAIN-F8 — timing-safe comparison (length-prechecked inside).
296
+ if (!timingSafeTokenEq(tok, connectionToken)) {
177
297
  res.writeHead(401, { 'Content-Type': 'application/json' });
178
298
  res.end(JSON.stringify({ error: 'Unauthorized' }));
179
299
  return;
@@ -239,8 +359,43 @@ export function startBrainServer(initialData) {
239
359
  }
240
360
  });
241
361
  httpServer.listen(port, '127.0.0.1', () => {
242
- // Create WebSocket server AFTER HTTP server is successfully listening
243
- const wss = new WebSocketServer({ server: httpServer, maxPayload: 1 * 1024 * 1024 });
362
+ // Create WebSocket server AFTER HTTP server is successfully listening.
363
+ // FIX: BRAIN-F3 reject WS upgrades whose Origin header isn't loopback
364
+ // or explicitly safe. CLI / relay connections have no Origin and are
365
+ // allowed; browsers running on localhost are allowed; anything else is
366
+ // rejected at the handshake before any app code runs.
367
+ const wss = new WebSocketServer({
368
+ server: httpServer,
369
+ maxPayload: 1 * 1024 * 1024,
370
+ verifyClient: ({ origin, req }, cb) => {
371
+ // Host header check (defense-in-depth, even for WS)
372
+ const hostHeader = req.headers.host;
373
+ if (!isLoopbackHost(hostHeader)) {
374
+ console.warn('[brain] WS upgrade rejected — non-loopback Host:', hostHeader);
375
+ return cb(false, 403, 'Forbidden');
376
+ }
377
+ // No Origin: allowed (CLI, relay, native clients)
378
+ if (!origin)
379
+ return cb(true);
380
+ // `null` origin string (file:// or sandboxed iframe) — allowed
381
+ if (origin === 'null')
382
+ return cb(true);
383
+ try {
384
+ const u = new URL(origin);
385
+ const ok = u.hostname === 'localhost' ||
386
+ u.hostname === '127.0.0.1' ||
387
+ u.hostname === '[::1]' ||
388
+ u.hostname === '::1';
389
+ if (!ok)
390
+ console.warn('[brain] WS upgrade rejected — Origin:', origin);
391
+ return cb(ok, ok ? undefined : 403, ok ? undefined : 'Forbidden');
392
+ }
393
+ catch (err) {
394
+ console.error('[brain] WS upgrade verifyClient error:', err instanceof Error ? err.message : String(err));
395
+ return cb(false, 400, 'Bad Request');
396
+ }
397
+ },
398
+ });
244
399
  // Brain visualization clients (legacy — no auth required)
245
400
  const brainClients = new Set();
246
401
  // Authenticated control clients (CLI ↔ Web protocol)
@@ -462,11 +617,16 @@ export function startBrainServer(initialData) {
462
617
  break;
463
618
  }
464
619
  case 'register_project': {
465
- // SECURITY: Validate path to prevent path traversal / null byte injection
466
- if (typeof msg.path !== 'string' || msg.path.length > 500 || msg.path.includes('\0') || msg.path.includes('..')) {
620
+ // FIX: BRAIN-F7 strict path guard (traversal, UNC, system-dir).
621
+ if (!isValidProjectPath(msg.path)) {
622
+ console.warn('[brain] Rejecting register_project with invalid path');
467
623
  sendTo(ws, { type: 'error', message: 'Invalid project path', requestId, timestamp: Date.now() });
468
624
  break;
469
625
  }
626
+ if (msg.name !== undefined && (typeof msg.name !== 'string' || msg.name.length > 200)) {
627
+ sendTo(ws, { type: 'error', message: 'Invalid project name', requestId, timestamp: Date.now() });
628
+ break;
629
+ }
470
630
  const project = controlHandlers.registerProject(msg.path, msg.name);
471
631
  sendTo(ws, { type: 'project_registered', project, requestId, timestamp: Date.now() });
472
632
  break;
@@ -482,6 +642,17 @@ export function startBrainServer(initialData) {
482
642
  break;
483
643
  }
484
644
  case 'switch_model': {
645
+ // FIX: BRAIN-F5 — switching model rewrites config and can redirect
646
+ // all future traffic (and API-key usage) to a different provider.
647
+ // Refuse from remote by default. Local clients hit this same WS
648
+ // path today but with the origin check in place, relay-forwarded
649
+ // calls (see relay-client.ts) are where the hard refusal lives.
650
+ // Keeping local behavior permissive; the relay path is the attacker
651
+ // surface.
652
+ if (typeof msg.provider !== 'string' || typeof msg.model !== 'string') {
653
+ sendTo(ws, { type: 'error', message: 'Invalid switch_model request', requestId, timestamp: Date.now() });
654
+ break;
655
+ }
485
656
  const success = controlHandlers.switchModel(msg.provider, msg.model);
486
657
  sendTo(ws, { type: 'model_switched', success, requestId, timestamp: Date.now() });
487
658
  break;
@@ -498,8 +669,22 @@ export function startBrainServer(initialData) {
498
669
  break;
499
670
  }
500
671
  case 'revert_to_checkpoint': {
501
- const result = controlHandlers.revertToCheckpoint(msg.checkpointId, msg.mode || 'both');
502
- sendTo(ws, { type: 'checkpoint_reverted', checkpointId: msg.checkpointId, mode: msg.mode || 'both', ...result, requestId, timestamp: Date.now() });
672
+ // FIX: BRAIN-F5 'code' or 'both' mode writes files on disk, which
673
+ // is destructive. Local-WS origin is trusted (user is on the same
674
+ // box), but we still validate shape. The remote-relay entry point
675
+ // has a stricter refusal for these modes when remote approval is
676
+ // disabled (default).
677
+ if (typeof msg.checkpointId !== 'number' || !Number.isFinite(msg.checkpointId)) {
678
+ sendTo(ws, { type: 'error', message: 'Invalid checkpointId', requestId, timestamp: Date.now() });
679
+ break;
680
+ }
681
+ const mode = msg.mode || 'both';
682
+ if (mode !== 'chat' && mode !== 'code' && mode !== 'both') {
683
+ sendTo(ws, { type: 'error', message: 'Invalid revert mode', requestId, timestamp: Date.now() });
684
+ break;
685
+ }
686
+ const result = controlHandlers.revertToCheckpoint(msg.checkpointId, mode);
687
+ sendTo(ws, { type: 'checkpoint_reverted', checkpointId: msg.checkpointId, mode, ...result, requestId, timestamp: Date.now() });
503
688
  break;
504
689
  }
505
690
  // --- Brain Management ---
@@ -535,15 +720,20 @@ export function startBrainServer(initialData) {
535
720
  break;
536
721
  }
537
722
  case 'create_brain': {
538
- // SECURITY: Validate projectPath to prevent path traversal / null byte injection
539
- if (msg.projectPath && (typeof msg.projectPath !== 'string' || msg.projectPath.length > 500 || msg.projectPath.includes('\0') || msg.projectPath.includes('..'))) {
723
+ // FIX: BRAIN-F7 strict path guard (traversal, UNC, system-dir).
724
+ if (msg.projectPath !== undefined && !isValidProjectPath(msg.projectPath)) {
725
+ console.warn('[brain] Rejecting create_brain with invalid projectPath');
540
726
  sendTo(ws, { type: 'error', message: 'Invalid project path', requestId, timestamp: Date.now() });
541
727
  break;
542
728
  }
543
- if (typeof msg.name !== 'string' || msg.name.length > 200) {
729
+ if (typeof msg.name !== 'string' || msg.name.length === 0 || msg.name.length > 200) {
544
730
  sendTo(ws, { type: 'error', message: 'Invalid brain name', requestId, timestamp: Date.now() });
545
731
  break;
546
732
  }
733
+ if (msg.brainType !== 'global' && msg.brainType !== 'local') {
734
+ sendTo(ws, { type: 'error', message: 'Invalid brainType', requestId, timestamp: Date.now() });
735
+ break;
736
+ }
547
737
  const brain = controlHandlers.createBrain(msg.name, msg.brainType, msg.projectPath);
548
738
  if (brain) {
549
739
  sendTo(ws, { type: 'brain_created', brain, requestId, timestamp: Date.now() });
@@ -685,7 +875,8 @@ export function startBrainServer(initialData) {
685
875
  }
686
876
  if (authenticated)
687
877
  return; // Already authenticated (timeout or previous auth)
688
- if (msg.token === connectionToken) {
878
+ // FIX: BRAIN-F8 — constant-time token comparison on WS auth.
879
+ if (typeof msg.token === 'string' && timingSafeTokenEq(msg.token, connectionToken)) {
689
880
  authenticated = true;
690
881
  controlClients.add(ws);
691
882
  // Also add to brain clients so they get brain events too
@@ -713,6 +904,15 @@ export function startBrainServer(initialData) {
713
904
  }
714
905
  // Control messages (only from authenticated clients)
715
906
  if (authenticated && isControlRequest(msg.type)) {
907
+ // FIX: BRAIN-F9 — runtime shape validation for dangerous types
908
+ // before dispatching. An invalid shape is a protocol violation
909
+ // and gets rejected with an error message (no handler runs).
910
+ const shapeResult = validateControlMessageShape(msg);
911
+ if (!shapeResult.ok) {
912
+ console.warn('[brain] Rejecting malformed control message:', msg.type, shapeResult.error);
913
+ sendTo(ws, { type: 'error', message: `Invalid message: ${shapeResult.error}`, requestId: msg.requestId, timestamp: Date.now() });
914
+ return;
915
+ }
716
916
  handleControlMessage(ws, msg).catch((err) => {
717
917
  if (process.env.DEBUG) {
718
918
  console.error('[brain] Control message handler error:', err instanceof Error ? err.message : String(err));
@@ -743,13 +943,25 @@ export function startBrainServer(initialData) {
743
943
  sendTo(ws, { type: 'ollama_starting', timestamp: Date.now(), throttled: true });
744
944
  }
745
945
  else {
746
- lastOllamaSpawn = now;
747
- try {
748
- const child = spawn('ollama', ['serve'], { detached: true, stdio: 'ignore' });
749
- child.unref();
750
- sendTo(ws, { type: 'ollama_starting', timestamp: Date.now() });
946
+ // FIX: BRAIN-F12 — resolve ollama to an absolute path at
947
+ // startup and spawn only that path. If not found, refuse
948
+ // rather than allowing a PATH-hijacked binary to run.
949
+ const bin = resolveOllamaBinary();
950
+ if (!bin) {
951
+ sendTo(ws, { type: 'error', message: 'Ollama binary not available', timestamp: Date.now() });
952
+ }
953
+ else {
954
+ lastOllamaSpawn = now;
955
+ try {
956
+ const child = spawn(bin, ['serve'], { detached: true, stdio: 'ignore', windowsHide: true });
957
+ child.unref();
958
+ sendTo(ws, { type: 'ollama_starting', timestamp: Date.now() });
959
+ }
960
+ catch (err) {
961
+ console.error('[brain] Failed to spawn ollama:', err instanceof Error ? err.message : String(err));
962
+ sendTo(ws, { type: 'error', message: 'Failed to start Ollama', timestamp: Date.now() });
963
+ }
751
964
  }
752
- catch { /* ignore spawn errors */ }
753
965
  }
754
966
  }
755
967
  }
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/brain/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAqCxC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,gEAAgE;AAChE,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,GAAmB,EACnB,UAAkB,EAClB,MAAM,GAAG,KAAK,EACd,IAAa;IAEb,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;QAChE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;YACjD,cAAc,EAAE,kBAAkB;YAClC,6BAA6B,EAAE,UAAU;SAC1C,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,gBAAgB,CAC7B,SAAiB,EACjB,GAAmB,EACnB,UAAkB;IAElB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,mBAAmB;QACnC,eAAe,EAAE,UAAU;QAC3B,YAAY,EAAE,YAAY;QAC1B,6BAA6B,EAAE,UAAU;KAC1C,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,WAAW,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,QAAQ,CAAC,MAAM,aAAa,SAAS,qCAAqC,EAAE,CAAC,MAAM,CAAC,CAAC;YACrJ,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,kDAAkD;gBAClD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,MAAM,CAAC,KAAK;wBAAE,QAAQ,GAAG,IAAI,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,uDAAuD;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1I,CAAC;IACD,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,GAAoB,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,IAAI,UAAU,GAAG,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE1C,sEAAsE;IACtE,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC;IACrC,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,IAAI,eAAe,GAA2B,IAAI,CAAC;IAEnD,2EAA2E;IAC3E,IAAI,YAAY,GAAG,gBAAgB,CAAC;IAEpC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAE3B,gFAAgF;QAChF,8DAA8D;QAC9D,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACzH,MAAM,kBAAkB,GAAG,aAAa,KAAK,uBAAuB,CAAC;QACrE,MAAM,mBAAmB,GAAG,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,iBAAiB,CAAC;QACzG,8EAA8E;QAC9E,MAAM,aAAa,GAAG,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;YACtF,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,oBAAoB,YAAY,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,6BAA6B,EAAE,aAAa;YAC5C,8BAA8B,EAAE,oBAAoB;YACpD,8BAA8B,EAAE,cAAc;SAC/C,CAAC;QAEF,wBAAwB;QACxB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAChC,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEhB,iDAAiD;QACjD,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,YAAY,IAAI;gBAC3B,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;gBAC1B,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,OAAO;aACjB,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhC,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,sFAAsF;YAEtF,qFAAqF;YACrF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QAEtD,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpC,CAAC;aAAM,IAAI,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,4EAA4E;YAC5E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,oBAAoB,YAAY,EAAE,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;gBAC5B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtC,iCAAiC;QACjC,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,KAAK,kBAAkB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;gBACtD,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACvC,2CAA2C;YAC3C,MAAM,WAAW,GAAG;gBAClB,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC7E,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC3E,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC5D,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBACjE,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;gBACvE,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC3E,EAAE,IAAI,EAAE,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzE,EAAE,IAAI,EAAE,kDAAkD,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;aAClG,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,gBAAgB,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAc,CAAC;QAE/B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACpD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBAChD,IAAI,EAAE,CAAC;gBACP,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACxC,sEAAsE;YACtE,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YAErF,0DAA0D;YAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAa,CAAC;YAE1C,qDAAqD;YACrD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAa,CAAC;YAE5C,8DAA8D;YAC9D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;YAE9D,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,YAAY,GAA6B,IAAI,CAAC;YAClD,IAAI,kBAAkB,GAA8B,IAAI,CAAC;YACzD,IAAI,oBAAoB,GAAgC,IAAI,CAAC;YAE7D,kDAAkD;YAClD,SAAS,MAAM,CAAC,EAAa,EAAE,GAA4B;gBACzD,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,uDAAuD;YACvD,KAAK,UAAU,oBAAoB,CAAC,EAAa,EAAE,GAAmB;gBACpE,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3H,OAAO;gBACT,CAAC;gBAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAEhC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACT,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBAER,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7G,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BACxC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAChD,CAAC;wBACD,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC5C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5E,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACpD,IAAI,IAAI;4BAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC1B,MAAM;oBACR,CAAC;oBAED,KAAK,WAAW,CAAC,CAAC,CAAC;wBACjB,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxE,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC1E,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC3D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjG,MAAM;oBACR,CAAC;oBAED,kBAAkB;oBAClB,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACrG,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC9D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,iBAAiB;oBACjB,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAChD,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gFAAgF,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC3J,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;wBAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CACxC,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,WAAW,EACf,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAC3E,CAAC;wBACF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC3G,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBACjD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;wBAC9B,eAAe,CAAC,oBAAoB,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACzE,MAAM;oBACR,CAAC;oBAED,qBAAqB;oBACrB,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAChE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjH,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBACzE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxG,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,eAAe,CAAC,gBAAgB,EAAE,CAAC;wBACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/E,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;wBAC9F,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC/D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAChF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC7D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,0EAA0E;wBAC1E,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChH,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;wBAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;wBACxC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/K,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBACrE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,mCAAmC;oBACnC,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC5C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxF,MAAM;oBACR,CAAC;oBAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;wBAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAC/C,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,IAAI,IAAI,MAAM,CACnB,CAAC;wBACF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnJ,MAAM;oBACR,CAAC;oBAED,2BAA2B;oBAC3B,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC1D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACrF,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACtE,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACpH,mCAAmC;4BACnC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gCACpC,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCAC1D,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC/G,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACzD,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjG,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,iFAAiF;wBACjF,IAAI,GAAG,CAAC,WAAW,IAAI,CAAC,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;4BACjK,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4BAC1D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC/F,MAAM;wBACR,CAAC;wBACD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;wBACpF,IAAI,KAAK,EAAE,CAAC;4BACV,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC/E,mCAAmC;4BACnC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gCACpC,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCAC1D,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC1E,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,mCAAmC;4BACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9H,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,sDAAsD;oBACtD,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,0CAA0C;wBAC1C,4DAA4D;wBAC5D,MAAM;oBACR,CAAC;oBAED,mCAAmC;oBACnC,KAAK,0BAA0B,CAAC,CAAC,CAAC;wBAChC,0FAA0F;wBAC1F,eAAe,CAAC,4BAA4B,CAC1C,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,QAAQ,CACb,CAAC;wBACF,yBAAyB;wBACzB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtG,MAAM;oBACR,CAAC;oBAED,uDAAuD;oBACvD,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChK,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7H,MAAM;oBACR,CAAC;oBAED,yBAAyB;oBACzB,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClI,MAAM;oBACR,CAAC;oBAED,gBAAgB;oBAChB,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACxD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACxD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACvG,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,6BAA6B;oBAC7B,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,eAAe,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACrG,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,eAAe,CAAC,oBAAoB,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBAClE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;wBACrD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5F,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,MAAM,kBAAkB,GAAG,EAAE,CAAC;YAC9B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiD,CAAC;YACnF,SAAS,gBAAgB,CAAC,EAAa;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC9B,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;oBACxC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,GAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC;YACzC,CAAC;YAED,kDAAkD;YAClD,MAAM,eAAe,GAAG,EAAE,CAAC;YAE3B,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC1B,iCAAiC;gBACjC,IAAI,YAAY,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;oBAC/D,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBAED,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,WAAW,GAAyC,IAAI,CAAC;gBAE7D,qEAAqE;gBACrE,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC9F,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC,EAAE,eAAe,CAAC,CAAC;gBAEpB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBAClB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxB,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1B,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC7B,0EAA0E;oBAC1E,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC;wBACpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAChB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;4BAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBAAE,OAAO;oBAElC,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAEpC,uEAAuE;wBACvE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACxB,IAAI,WAAW,EAAE,CAAC;gCAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gCAAC,WAAW,GAAG,IAAI,CAAC;4BAAC,CAAC;4BACnE,IAAI,aAAa;gCAAE,OAAO,CAAC,mDAAmD;4BAE9E,IAAI,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE,CAAC;gCAClC,aAAa,GAAG,IAAI,CAAC;gCACrB,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gCACvB,yDAAyD;gCACzD,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gCACrB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACvD,4BAA4B;gCAC5B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gCACjE,kCAAkC;gCAClC,IAAI,YAAY,EAAE,CAAC;oCACjB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACvF,CAAC;gCACD,8DAA8D;gCAC9D,IAAI,eAAe,EAAE,CAAC;oCACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;oCAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wCAC/B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oCAC1E,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAClF,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;4BAClC,CAAC;4BACD,OAAO;wBACT,CAAC;wBAED,qDAAqD;wBACrD,IAAI,aAAa,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChD,oBAAoB,CAAC,EAAE,EAAE,GAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gCAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oCACtB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gCAC5G,CAAC;gCACD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAG,GAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACxI,CAAC,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBAED,2EAA2E;wBAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACzF,OAAO;wBACT,CAAC;wBAED,iEAAiE;wBACjE,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,EAAE,CAAC;4BAC/E,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC;4BAC7G,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,oBAAoB,EAAE,CAAC;4BAC3F,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAClC,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;4BAChC,oFAAoF;4BACpF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACvB,IAAI,GAAG,GAAG,eAAe,GAAG,MAAM,EAAE,CAAC;gCACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAClF,CAAC;iCAAM,CAAC;gCACN,eAAe,GAAG,GAAG,CAAC;gCACtB,IAAI,CAAC;oCACH,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oCAC9E,KAAK,CAAC,KAAK,EAAE,CAAC;oCACd,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACjE,CAAC;gCAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;4BACvC,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,YAAY,GAAG,UAAU,CAAC;YAE1B,+CAA+C;YAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;YAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;YAE5D,OAAO,CAAC;gBACN,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,oBAAoB,UAAU,EAAE;gBACrC,eAAe;gBACf,UAAU,CAAC,IAAiB;oBAC1B,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;4BACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,SAAS,CAAC,KAA8B;oBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;4BACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;oBACD,yCAAyC;oBACzC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;wBACrC,IAAI,CAAC;4BAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,gBAAgB,CAAC,KAA8B;oBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAElC,6EAA6E;oBAC7E,qEAAqE;oBACrE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACxE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACtD,IAAI,IAAI,EAAE,CAAC;4BACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gCACtB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACf,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,2DAA2D;wBAC3D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gCACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACf,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,yCAAyC;oBACzC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;wBACvC,IAAI,CAAC;4BAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,EAAE,CAAC,IAA0B,EAAE,OAAgC;oBAC7D,IAAI,IAAI,KAAK,OAAO;wBAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;yBAC7C,IAAI,IAAI,KAAK,SAAS;wBAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,CAAC;gBACD,GAAG,CAAC,IAA0B,EAAE,OAAgC;oBAC9D,IAAI,IAAI,KAAK,OAAO;wBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,SAAS;wBAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChE,CAAC;gBACD,YAAY,CAAC,OAA0B;oBACrC,YAAY,GAAG,OAAO,CAAC;gBACzB,CAAC;gBACD,aAAa,CAAC,OAA2B;oBACvC,kBAAkB,GAAG,OAAO,CAAC;gBAC/B,CAAC;gBACD,eAAe,CAAC,OAA6B;oBAC3C,oBAAoB,GAAG,OAAO,CAAC;gBACjC,CAAC;gBACD,uBAAuB,CAAC,QAAyB;oBAC/C,eAAe,GAAG,QAAQ,CAAC;gBAC7B,CAAC;gBACD,eAAe,CAAC,IAAkB;oBAChC,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,KAAK;oBACH,YAAY,GAAG,IAAI,CAAC;oBACpB,kBAAkB,GAAG,IAAI,CAAC;oBAC1B,oBAAoB,GAAG,IAAI,CAAC;oBAC5B,eAAe,GAAG,IAAI,CAAC;oBACvB,cAAc,CAAC,KAAK,EAAE,CAAC;oBACvB,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBACzB,KAAK,MAAM,EAAE,IAAI,YAAY;wBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc;wBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mDAAmD;AACnD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/brain/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,qBAAqB,EACrB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAqCrD,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C,MAAM,uBAAuB,GAAG,IAAI,CAAC;AACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,2EAA2E;AAC3E,gFAAgF;AAChF,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,+EAA+E;AAC/E,6EAA6E;AAC7E,yEAAyE;AACzE,IAAI,kBAAkB,GAAkB,IAAI,CAAC;AAC7C,SAAS,mBAAmB;IAC1B,IAAI,kBAAkB,KAAK,IAAI;QAAE,OAAO,kBAAkB,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7F,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACtE,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzC,kBAAkB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjC,OAAO,kBAAkB,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,kBAAkB,GAAG,EAAE,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,UAA8B;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,aAAa;IACb,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3F,OAAO,CACL,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,WAAW;QAC5B,YAAY,KAAK,KAAK;QACtB,YAAY,KAAK,SAAS,CAC3B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,CAAS,EAAE,CAAS;IAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACnG,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,WAAW,CACxB,IAAY,EACZ,GAAmB,EACnB,UAAkB,EAClB,MAAM,GAAG,KAAK,EACd,IAAa;IAEb,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;QAChE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;YACtD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC5D,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE;YACjD,cAAc,EAAE,kBAAkB;YAClC,6BAA6B,EAAE,UAAU;SAC1C,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,gBAAgB,CAC7B,SAAiB,EACjB,GAAmB,EACnB,UAAkB;IAElB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,cAAc,EAAE,mBAAmB;QACnC,eAAe,EAAE,UAAU;QAC3B,YAAY,EAAE,YAAY;QAC1B,6BAA6B,EAAE,UAAU;KAC1C,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,WAAW,EAAE;YACtD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,qBAAqB,QAAQ,CAAC,MAAM,aAAa,SAAS,qCAAqC,EAAE,CAAC,MAAM,CAAC,CAAC;YACrJ,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI;gBAAE,MAAM;YAChB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,kDAAkD;gBAClD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,MAAM,CAAC,KAAK;wBAAE,QAAQ,GAAG,IAAI,CAAC;gBACpC,CAAC;gBAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;gBACvC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,uDAAuD;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1I,CAAC;IACD,GAAG,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,GAAoB,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBAC5C,OAAO;YACT,CAAC;YACD,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAwB;IACvD,IAAI,UAAU,GAAG,WAAW,CAAC;IAC7B,IAAI,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE1C,sEAAsE;IACtE,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC;IACrC,IAAI,YAAY,GAAwB,IAAI,CAAC;IAC7C,IAAI,eAAe,GAA2B,IAAI,CAAC;IAEnD,2EAA2E;IAC3E,IAAI,YAAY,GAAG,gBAAgB,CAAC;IAEpC,6EAA6E;IAC7E,yDAAyD;IACzD,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,6EAA6E;IAC7E,sEAAsE;IACtE,mBAAmB,EAAE,CAAC;IAEtB,yEAAyE;IACzE,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;QAClD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,kEAAkE;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,mBAAmB,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC3E,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,sDAAsD;QACtD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9G,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;QAE3B,gFAAgF;QAChF,8DAA8D;QAC9D,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;QACzH,MAAM,kBAAkB,GAAG,aAAa,KAAK,uBAAuB,CAAC;QACrE,MAAM,mBAAmB,GAAG,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,iBAAiB,CAAC;QACzG,8EAA8E;QAC9E,MAAM,aAAa,GAAG,CAAC,iBAAiB,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;YACtF,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,oBAAoB,YAAY,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG;YAClB,6BAA6B,EAAE,aAAa;YAC5C,8BAA8B,EAAE,oBAAoB;YACpD,8BAA8B,EAAE,cAAc;SAC/C,CAAC;QAEF,wBAAwB;QACxB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAChC,GAAG,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;YACnE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEhB,iDAAiD;QACjD,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,YAAY,IAAI;gBAC3B,UAAU,EAAE,SAAS;gBACrB,WAAW,EAAE,WAAW;gBACxB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;gBAC1B,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,OAAO;aACjB,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAEhC,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,uEAAuE;YACvE,mEAAmE;YACnE,oEAAoE;YACpE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,uDAAuD,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,wEAAwE;YACxE,iEAAiE;YACjE,IAAI,eAAe,IAAI,gBAAgB,EAAE,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,uCAAuC,gBAAgB,UAAU,CAAC,CAAC;gBAChF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;gBAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;YACD,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,mCAAmC,eAAe,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACxF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QAEtD,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpC,CAAC;aAAM,IAAI,GAAG,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,4EAA4E;YAC5E,+CAA+C;YAC/C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,oBAAoB,YAAY,EAAE,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpD,qEAAqE;YACrE,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAEtC,iCAAiC;QACjC,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACxD,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,KAAK,kBAAkB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC;gBACtD,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,oBAAoB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,MAAM,WAAW,CAAC,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACvC,2CAA2C;YAC3C,MAAM,WAAW,GAAG;gBAClB,EAAE,IAAI,EAAE,6BAA6B,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC7E,EAAE,IAAI,EAAE,2BAA2B,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC3E,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC5D,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;gBACjE,EAAE,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;gBACvE,EAAE,IAAI,EAAE,4BAA4B,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC3E,EAAE,IAAI,EAAE,8BAA8B,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzE,EAAE,IAAI,EAAE,kDAAkD,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;aAClG,CAAC;YACF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,gBAAgB,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAc,CAAC;QAE/B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YACpD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,GAAG,OAAO,EAAE,CAAC;gBAChD,IAAI,EAAE,CAAC;gBACP,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;YACxC,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,uEAAuE;YACvE,sDAAsD;YACtD,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC;gBAC9B,MAAM,EAAE,UAAU;gBAClB,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;gBAC3B,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;oBACpC,oDAAoD;oBACpD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oBACpC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;wBAChC,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,UAAU,CAAC,CAAC;wBAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;oBACrC,CAAC;oBACD,kDAAkD;oBAClD,IAAI,CAAC,MAAM;wBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC7B,+DAA+D;oBAC/D,IAAI,MAAM,KAAK,MAAM;wBAAE,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,CAAC;wBACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC1B,MAAM,EAAE,GACN,CAAC,CAAC,QAAQ,KAAK,WAAW;4BAC1B,CAAC,CAAC,QAAQ,KAAK,WAAW;4BAC1B,CAAC,CAAC,QAAQ,KAAK,OAAO;4BACtB,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC;wBACvB,IAAI,CAAC,EAAE;4BAAE,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,MAAM,CAAC,CAAC;wBACvE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;oBACpE,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC1G,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAa,CAAC;YAE1C,qDAAqD;YACrD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAa,CAAC;YAE5C,8DAA8D;YAC9D,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA0B,CAAC;YAE9D,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,IAAI,YAAY,GAA6B,IAAI,CAAC;YAClD,IAAI,kBAAkB,GAA8B,IAAI,CAAC;YACzD,IAAI,oBAAoB,GAAgC,IAAI,CAAC;YAE7D,kDAAkD;YAClD,SAAS,MAAM,CAAC,EAAa,EAAE,GAA4B;gBACzD,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACrC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,uDAAuD;YACvD,KAAK,UAAU,oBAAoB,CAAC,EAAa,EAAE,GAAmB;gBACpE,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC3H,OAAO;gBACT,CAAC;gBAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAEhC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;oBACjB,KAAK,MAAM;wBACT,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/D,MAAM;oBAER,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7G,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;4BACxC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;wBAChD,CAAC;wBACD,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAC5C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5E,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBACpD,IAAI,IAAI;4BAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC1B,MAAM;oBACR,CAAC;oBAED,KAAK,WAAW,CAAC,CAAC,CAAC;wBACjB,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxE,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC1E,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC3D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjG,MAAM;oBACR,CAAC;oBAED,kBAAkB;oBAClB,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACrG,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,eAAe,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC9D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,iBAAiB;oBACjB,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAChD,IAAI,SAAS,EAAE,CAAC;4BACd,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gFAAgF,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC3J,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;wBAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,IAAI,GAAG,eAAe,CAAC,aAAa,CACxC,GAAG,CAAC,KAAK,EACT,GAAG,CAAC,WAAW,EACf,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAC3E,CAAC;wBACF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC7D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC3G,MAAM;oBACR,CAAC;oBAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBACjD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;wBAC9B,eAAe,CAAC,oBAAoB,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACzE,MAAM;oBACR,CAAC;oBAED,qBAAqB;oBACrB,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAChE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjH,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBACzE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxG,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,eAAe,CAAC,gBAAgB,EAAE,CAAC;wBACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/E,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;wBAC9F,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC/D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,SAAS,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACpF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;wBAChF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,OAAO,GAAG,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAC7D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACnF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAChD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,kEAAkE;wBAClE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAClC,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;4BACrE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;4BACtF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBACpE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;wBAC7C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChF,MAAM;oBACR,CAAC;oBAED,KAAK,YAAY,CAAC,CAAC,CAAC;wBAClB,MAAM,GAAG,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;wBACxC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/K,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,mEAAmE;wBACnE,kEAAkE;wBAClE,gEAAgE;wBAChE,iEAAiE;wBACjE,gEAAgE;wBAChE,oEAAoE;wBACpE,WAAW;wBACX,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;4BACtE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACzG,MAAM;wBACR,CAAC;wBACD,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBACrE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,mCAAmC;oBACnC,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC5C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;wBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACxF,MAAM;oBACR,CAAC;oBAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;wBAC5B,oEAAoE;wBACpE,kEAAkE;wBAClE,kEAAkE;wBAClE,iEAAiE;wBACjE,sBAAsB;wBACtB,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;4BAC/E,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC;wBAChC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;4BAC1D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAChG,MAAM;wBACR,CAAC;wBACD,MAAM,MAAM,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;wBAC1E,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/H,MAAM;oBACR,CAAC;oBAED,2BAA2B;oBAC3B,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;wBAC1D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACrF,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACtE,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACpH,mCAAmC;4BACnC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gCACpC,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCAC1D,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC/G,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACzD,IAAI,OAAO,EAAE,CAAC;4BACZ,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjG,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC/G,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,kEAAkE;wBAClE,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;4BAC1E,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;4BACxE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACjG,MAAM;wBACR,CAAC;wBACD,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4BACnF,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC/F,MAAM;wBACR,CAAC;wBACD,IAAI,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;4BAC5D,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC9F,MAAM;wBACR,CAAC;wBACD,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;wBACpF,IAAI,KAAK,EAAE,CAAC;4BACV,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BAC/E,mCAAmC;4BACnC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;gCACpC,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCAC1D,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC1E,CAAC;4BACH,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,mCAAmC;4BACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9H,CAAC;wBACD,MAAM;oBACR,CAAC;oBAED,sDAAsD;oBACtD,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,0CAA0C;wBAC1C,4DAA4D;wBAC5D,MAAM;oBACR,CAAC;oBAED,mCAAmC;oBACnC,KAAK,0BAA0B,CAAC,CAAC,CAAC;wBAChC,0FAA0F;wBAC1F,eAAe,CAAC,4BAA4B,CAC1C,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,QAAQ,CACb,CAAC;wBACF,yBAAyB;wBACzB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACtG,MAAM;oBACR,CAAC;oBAED,uDAAuD;oBACvD,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAChK,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC7H,MAAM;oBACR,CAAC;oBAED,yBAAyB;oBACzB,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClI,MAAM;oBACR,CAAC;oBAED,gBAAgB;oBAChB,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACxD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,aAAa,CAAC,CAAC,CAAC;wBACnB,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACxD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACvG,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,KAAK,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;wBAC/C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,6BAA6B;oBAC7B,KAAK,mBAAmB,CAAC,CAAC,CAAC;wBACzB,eAAe,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;wBACrG,MAAM;oBACR,CAAC;oBAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;wBACvB,eAAe,CAAC,oBAAoB,EAAE,CAAC;wBACvC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC9E,MAAM;oBACR,CAAC;oBAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;wBAC3B,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBAC9C,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAClF,MAAM;oBACR,CAAC;oBAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;wBAC1B,eAAe,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBAClE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBACjF,MAAM;oBACR,CAAC;oBAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;wBACxB,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC;wBACrD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;wBAC5F,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,MAAM,kBAAkB,GAAG,EAAE,CAAC;YAC9B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiD,CAAC;YACnF,SAAS,gBAAgB,CAAC,EAAa;gBACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC9B,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC;oBACxC,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC;gBACD,GAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,GAAG,CAAC,KAAK,IAAI,kBAAkB,CAAC;YACzC,CAAC;YAED,kDAAkD;YAClD,MAAM,eAAe,GAAG,EAAE,CAAC;YAE3B,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE;gBAC1B,iCAAiC;gBACjC,IAAI,YAAY,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI,IAAI,eAAe,EAAE,CAAC;oBAC/D,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBAED,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,WAAW,GAAyC,IAAI,CAAC;gBAE7D,qEAAqE;gBACrE,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,IAAI,CAAC,aAAa,EAAE,CAAC;wBACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;wBAC9F,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC,EAAE,eAAe,CAAC,CAAC;gBAEpB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;oBAClB,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACxB,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1B,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC7B,0EAA0E;oBAC1E,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC;wBACpD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAChB,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;4BAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;oBACvB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;wBAAE,OAAO;oBAElC,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wBAEpC,uEAAuE;wBACvE,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;4BACxB,IAAI,WAAW,EAAE,CAAC;gCAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gCAAC,WAAW,GAAG,IAAI,CAAC;4BAAC,CAAC;4BACnE,IAAI,aAAa;gCAAE,OAAO,CAAC,mDAAmD;4BAE9E,6DAA6D;4BAC7D,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,CAAC;gCACnF,aAAa,GAAG,IAAI,CAAC;gCACrB,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gCACvB,yDAAyD;gCACzD,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gCACrB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACvD,4BAA4B;gCAC5B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;gCACjE,kCAAkC;gCAClC,IAAI,YAAY,EAAE,CAAC;oCACjB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCACvF,CAAC;gCACD,8DAA8D;gCAC9D,IAAI,eAAe,EAAE,CAAC;oCACpB,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,CAAC;oCAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wCAC/B,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oCAC1E,CAAC;gCACH,CAAC;4BACH,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAClF,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;4BAClC,CAAC;4BACD,OAAO;wBACT,CAAC;wBAED,qDAAqD;wBACrD,IAAI,aAAa,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChD,+DAA+D;4BAC/D,+DAA+D;4BAC/D,6DAA6D;4BAC7D,MAAM,WAAW,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;4BACrD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;gCACpB,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gCAC1F,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,WAAW,CAAC,KAAK,EAAE,EAAE,SAAS,EAAG,GAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC1I,OAAO;4BACT,CAAC;4BACD,oBAAoB,CAAC,EAAE,EAAE,GAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gCAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oCACtB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gCAC5G,CAAC;gCACD,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,SAAS,EAAG,GAAW,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACxI,CAAC,CAAC,CAAC;4BACH,OAAO;wBACT,CAAC;wBAED,2EAA2E;wBAC3E,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4BACzF,OAAO;wBACT,CAAC;wBAED,iEAAiE;wBACjE,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,EAAE,CAAC;4BAC/E,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACzB,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC;4BAC7G,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,oBAAoB,EAAE,CAAC;4BAC3F,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAClC,CAAC;wBACD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;4BAChC,oFAAoF;4BACpF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACvB,IAAI,GAAG,GAAG,eAAe,GAAG,MAAM,EAAE,CAAC;gCACnC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;4BAClF,CAAC;iCAAM,CAAC;gCACN,yDAAyD;gCACzD,yDAAyD;gCACzD,sDAAsD;gCACtD,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;gCAClC,IAAI,CAAC,GAAG,EAAE,CAAC;oCACT,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gCAC/F,CAAC;qCAAM,CAAC;oCACN,eAAe,GAAG,GAAG,CAAC;oCACtB,IAAI,CAAC;wCACH,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;wCAC5F,KAAK,CAAC,KAAK,EAAE,CAAC;wCACd,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oCACjE,CAAC;oCAAC,OAAO,GAAG,EAAE,CAAC;wCACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;wCACnG,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oCAC1F,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;gBACpC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACvE,YAAY,GAAG,UAAU,CAAC;YAE1B,+CAA+C;YAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,EAA2B,CAAC;YAC1D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2B,CAAC;YAE5D,OAAO,CAAC;gBACN,IAAI,EAAE,UAAU;gBAChB,GAAG,EAAE,oBAAoB,UAAU,EAAE;gBACrC,eAAe;gBACf,UAAU,CAAC,IAAiB;oBAC1B,UAAU,GAAG,IAAI,CAAC;oBAClB,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;4BACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,SAAS,CAAC,KAA8B;oBACtC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAClC,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;wBAC9B,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;4BACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACf,CAAC;oBACH,CAAC;oBACD,yCAAyC;oBACzC,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;wBACrC,IAAI,CAAC;4BAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,gBAAgB,CAAC,KAA8B;oBAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAElC,6EAA6E;oBAC7E,qEAAqE;oBACrE,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;wBACxE,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBACtD,IAAI,IAAI,EAAE,CAAC;4BACT,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gCACtB,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oCACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACf,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,2DAA2D;wBAC3D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;4BAChC,IAAI,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gCACrC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BACf,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,yCAAyC;oBACzC,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;wBACvC,IAAI,CAAC;4BAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBACD,EAAE,CAAC,IAA0B,EAAE,OAAgC;oBAC7D,IAAI,IAAI,KAAK,OAAO;wBAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;yBAC7C,IAAI,IAAI,KAAK,SAAS;wBAAE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7D,CAAC;gBACD,GAAG,CAAC,IAA0B,EAAE,OAAgC;oBAC9D,IAAI,IAAI,KAAK,OAAO;wBAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,SAAS;wBAAE,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAChE,CAAC;gBACD,YAAY,CAAC,OAA0B;oBACrC,YAAY,GAAG,OAAO,CAAC;gBACzB,CAAC;gBACD,aAAa,CAAC,OAA2B;oBACvC,kBAAkB,GAAG,OAAO,CAAC;gBAC/B,CAAC;gBACD,eAAe,CAAC,OAA6B;oBAC3C,oBAAoB,GAAG,OAAO,CAAC;gBACjC,CAAC;gBACD,uBAAuB,CAAC,QAAyB;oBAC/C,eAAe,GAAG,QAAQ,CAAC;gBAC7B,CAAC;gBACD,eAAe,CAAC,IAAkB;oBAChC,YAAY,GAAG,IAAI,CAAC;gBACtB,CAAC;gBACD,KAAK;oBACH,YAAY,GAAG,IAAI,CAAC;oBACpB,kBAAkB,GAAG,IAAI,CAAC;oBAC1B,oBAAoB,GAAG,IAAI,CAAC;oBAC5B,eAAe,GAAG,IAAI,CAAC;oBACvB,cAAc,CAAC,KAAK,EAAE,CAAC;oBACvB,gBAAgB,CAAC,KAAK,EAAE,CAAC;oBACzB,KAAK,MAAM,EAAE,IAAI,YAAY;wBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC1C,KAAK,MAAM,EAAE,IAAI,cAAc;wBAAE,EAAE,CAAC,KAAK,EAAE,CAAC;oBAC5C,GAAG,CAAC,KAAK,EAAE,CAAC;oBACZ,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,mDAAmD;AACnD,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC"}
@@ -5,6 +5,17 @@
5
5
  * and feeds them into the session's capture() method for web streaming.
6
6
  */
7
7
  import type { Session } from '../sessions/session.js';
8
+ /**
9
+ * FIX: BRAIN-F4 — redact high-entropy credentials from any line that will be
10
+ * forwarded to the web/relay. Patterns cover the providers the CLI supports
11
+ * plus generic PEM/AWS/Bearer tokens. This mirrors the redaction logic used
12
+ * by the spiral store so captured output doesn't leak secrets the spiral
13
+ * already treats as sensitive.
14
+ *
15
+ * Defense-in-depth: we do NOT redact the local terminal copy (self.origWrite
16
+ * still receives the untouched chunk) — only what enters session.capture().
17
+ */
18
+ export declare function redactSecrets(s: string): string;
8
19
  export declare class StdoutCapture {
9
20
  private session;
10
21
  private origWrite;
@@ -1 +1 @@
1
- {"version":3,"file":"stdout-capture.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/stdout-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,OAAO;IAIpC,gCAAgC;IAChC,KAAK,IAAI,IAAI;IA0Bb,0DAA0D;IAC1D,IAAI,IAAI,IAAI;CAKb"}
1
+ {"version":3,"file":"stdout-capture.d.ts","sourceRoot":"","sources":["../../../src/cli/brain/stdout-capture.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAItD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAyB/C;AAED,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEH,OAAO,EAAE,OAAO;IAIpC,gCAAgC;IAChC,KAAK,IAAI,IAAI;IA8Bb,0DAA0D;IAC1D,IAAI,IAAI,IAAI;CAKb"}
@@ -1,4 +1,41 @@
1
1
  const STATUSBAR_RE = /L\d+:\d+\s+L\d+:\d+|safe permissions|shift\+tab to cycle|esc to interrupt|FREE_PLUS|FREE_BASE|\d+\/\d+\.?\d*k tk|\d+ ckpts/;
2
+ /**
3
+ * FIX: BRAIN-F4 — redact high-entropy credentials from any line that will be
4
+ * forwarded to the web/relay. Patterns cover the providers the CLI supports
5
+ * plus generic PEM/AWS/Bearer tokens. This mirrors the redaction logic used
6
+ * by the spiral store so captured output doesn't leak secrets the spiral
7
+ * already treats as sensitive.
8
+ *
9
+ * Defense-in-depth: we do NOT redact the local terminal copy (self.origWrite
10
+ * still receives the untouched chunk) — only what enters session.capture().
11
+ */
12
+ export function redactSecrets(s) {
13
+ try {
14
+ return s
15
+ // Anthropic API keys (must come before generic sk- rule)
16
+ .replace(/\bsk-ant-[A-Za-z0-9_\-]{20,}/g, '[REDACTED_KEY]')
17
+ // OpenAI / generic "sk-" keys
18
+ .replace(/\bsk-[A-Za-z0-9_\-]{20,}/g, '[REDACTED_KEY]')
19
+ // GitHub personal access tokens
20
+ .replace(/\bghp_[A-Za-z0-9]{36,}/g, '[REDACTED_TOKEN]')
21
+ // GitHub fine-grained tokens
22
+ .replace(/\bgithub_pat_[A-Za-z0-9_]{20,}/g, '[REDACTED_TOKEN]')
23
+ // Bearer tokens in Authorization headers / env dumps
24
+ .replace(/\bBearer\s+[A-Za-z0-9_\-\.]{20,}/gi, 'Bearer [REDACTED]')
25
+ // AWS access keys
26
+ .replace(/\bAKIA[0-9A-Z]{16}\b/g, '[REDACTED_AWS]')
27
+ // PEM-encoded private keys (multi-line, already flattened to one line here)
28
+ .replace(/-----BEGIN[^-]*PRIVATE KEY-----[\s\S]*?-----END[^-]*PRIVATE KEY-----/g, '[REDACTED_PRIVATE_KEY]')
29
+ // Slack tokens
30
+ .replace(/\bxox[baprs]-[A-Za-z0-9-]{10,}/g, '[REDACTED_SLACK]');
31
+ }
32
+ catch (err) {
33
+ // If the regex engine throws for some pathological input, fail closed:
34
+ // redact the whole line rather than passing it through unmodified.
35
+ console.error('[stdout-capture] redactSecrets error:', err instanceof Error ? err.message : String(err));
36
+ return '[REDACTED]';
37
+ }
38
+ }
2
39
  export class StdoutCapture {
3
40
  session;
4
41
  origWrite;
@@ -28,7 +65,11 @@ export class StdoutCapture {
28
65
  const isReadlineInput = stripped.startsWith('│') || stripped.startsWith('|') ||
29
66
  stripped.includes('❯') || stripped === '›' || stripped === '>';
30
67
  if (stripped.length > 0 && !STATUSBAR_RE.test(stripped) && !isReadlineInput) {
31
- self.session.capture(line);
68
+ // FIX: BRAIN-F4 — scrub credentials before the line is pushed to
69
+ // any web/relay client. The original chunk (with credentials) is
70
+ // still written to the local TTY by self.origWrite() below.
71
+ const redacted = redactSecrets(line);
72
+ self.session.capture(redacted);
32
73
  }
33
74
  }
34
75
  return self.origWrite(chunk, encoding, callback);