context-vault 3.16.0 → 3.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server.js CHANGED
@@ -2,9 +2,6 @@
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
6
- import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js';
7
- import { createMcpExpressApp } from '@modelcontextprotocol/sdk/server/express.js';
8
5
  import { existsSync, mkdirSync, writeFileSync, readFileSync, unlinkSync, readdirSync } from 'node:fs';
9
6
  import { join, dirname } from 'node:path';
10
7
  import { homedir, tmpdir } from 'node:os';
@@ -20,245 +17,6 @@ import { registerTools } from './register-tools.js';
20
17
  import { pruneExpired } from '@context-vault/core/index';
21
18
  import { startWatcher } from '@context-vault/core/watch';
22
19
  import { setSessionId } from '@context-vault/core/search';
23
- const DAEMON_PORT = 3377;
24
- const PID_PATH = join(homedir(), '.context-mcp', 'daemon.pid');
25
- async function tryAutoDaemon() {
26
- // Check if daemon is already running
27
- if (existsSync(PID_PATH)) {
28
- try {
29
- const { pid, port } = JSON.parse(readFileSync(PID_PATH, 'utf-8'));
30
- process.kill(pid, 0); // throws if dead
31
- const res = await fetch(`http://localhost:${port}/health`);
32
- if (res.ok)
33
- return; // daemon is healthy, nothing to do
34
- }
35
- catch {
36
- // stale PID file or unhealthy, continue to start daemon
37
- }
38
- }
39
- const { spawn, execFileSync } = await import('node:child_process');
40
- // Spawn daemon process
41
- const serverPath = join(__dirname, 'server.js');
42
- const child = spawn(process.execPath, [serverPath, '--http', '--port', String(DAEMON_PORT)], {
43
- detached: true,
44
- stdio: 'ignore',
45
- env: { ...process.env, NODE_OPTIONS: '--no-warnings=ExperimentalWarning' },
46
- });
47
- child.unref();
48
- // Wait for daemon to be healthy
49
- const deadline = Date.now() + 5000;
50
- let healthy = false;
51
- while (Date.now() < deadline) {
52
- try {
53
- const res = await fetch(`http://localhost:${DAEMON_PORT}/health`);
54
- if (res.ok) {
55
- healthy = true;
56
- break;
57
- }
58
- }
59
- catch { }
60
- await new Promise(r => setTimeout(r, 200));
61
- }
62
- if (!healthy) {
63
- console.error('[context-vault] Auto-daemon failed to start, continuing in stdio mode');
64
- return;
65
- }
66
- // Reconfigure Claude Code to use HTTP transport
67
- const env = { ...process.env };
68
- delete env.CLAUDECODE;
69
- try {
70
- execFileSync('claude', ['mcp', 'remove', 'context-vault', '-s', 'user'], { stdio: 'pipe', env });
71
- }
72
- catch { }
73
- try {
74
- execFileSync('claude', [
75
- 'mcp', 'add', '-s', 'user', '--transport', 'http',
76
- 'context-vault', `http://localhost:${DAEMON_PORT}/mcp`,
77
- ], { stdio: 'pipe', env });
78
- console.error(`[context-vault] Daemon started on port ${DAEMON_PORT}. New sessions will use shared HTTP mode.`);
79
- }
80
- catch {
81
- console.error('[context-vault] Daemon started but could not reconfigure Claude Code');
82
- }
83
- }
84
- async function selfCheck(port) {
85
- const { execFileSync } = await import('node:child_process');
86
- const env = { ...process.env };
87
- delete env.CLAUDECODE;
88
- // 1. Validate LaunchAgent plist on macOS (correct node/server paths)
89
- if (process.platform === 'darwin') {
90
- const plistPath = join(homedir(), 'Library', 'LaunchAgents', 'com.context-vault.daemon.plist');
91
- if (existsSync(plistPath)) {
92
- try {
93
- const plist = readFileSync(plistPath, 'utf-8');
94
- const currentNode = process.execPath;
95
- const currentServer = join(__dirname, 'server.js');
96
- if (!plist.includes(currentNode) || !plist.includes(currentServer)) {
97
- console.error('[context-vault] Self-heal: LaunchAgent has stale paths, rewriting...');
98
- const vaultDirIdx = process.argv.indexOf('--vault-dir');
99
- const vaultDir = vaultDirIdx !== -1 ? process.argv[vaultDirIdx + 1] : undefined;
100
- const progArgs = [currentNode, currentServer, '--http', '--port', String(port)];
101
- if (vaultDir)
102
- progArgs.push('--vault-dir', vaultDir);
103
- const logPath = join(homedir(), '.context-mcp', 'daemon.log');
104
- const newPlist = `<?xml version="1.0" encoding="UTF-8"?>
105
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
106
- <plist version="1.0">
107
- <dict>
108
- <key>Label</key>
109
- <string>com.context-vault.daemon</string>
110
- <key>ProgramArguments</key>
111
- <array>
112
- ${progArgs.map(a => ` <string>${a}</string>`).join('\n')}
113
- </array>
114
- <key>RunAtLoad</key>
115
- <true/>
116
- <key>KeepAlive</key>
117
- <dict>
118
- <key>SuccessfulExit</key>
119
- <false/>
120
- </dict>
121
- <key>StandardErrorPath</key>
122
- <string>${logPath}</string>
123
- <key>StandardOutPath</key>
124
- <string>/dev/null</string>
125
- <key>EnvironmentVariables</key>
126
- <dict>
127
- <key>NODE_OPTIONS</key>
128
- <string>--no-warnings=ExperimentalWarning</string>
129
- <key>CONTEXT_VAULT_NO_DAEMON</key>
130
- <string>1</string>
131
- </dict>
132
- <key>ThrottleInterval</key>
133
- <integer>5</integer>
134
- </dict>
135
- </plist>`;
136
- writeFileSync(plistPath, newPlist);
137
- // Reload the agent so launchd picks up new paths
138
- try {
139
- execFileSync('launchctl', ['unload', plistPath], { stdio: 'pipe' });
140
- }
141
- catch { }
142
- try {
143
- execFileSync('launchctl', ['load', '-w', plistPath], { stdio: 'pipe' });
144
- }
145
- catch { }
146
- console.error('[context-vault] Self-heal: LaunchAgent updated with current paths');
147
- }
148
- }
149
- catch (e) {
150
- console.error(`[context-vault] LaunchAgent check failed: ${e.message}`);
151
- }
152
- }
153
- }
154
- // 2. Validate Claude Code MCP config points to this daemon
155
- try {
156
- const result = execFileSync('claude', ['mcp', 'list'], {
157
- encoding: 'utf-8',
158
- stdio: ['pipe', 'pipe', 'pipe'],
159
- env,
160
- timeout: 5000,
161
- });
162
- if (result.includes('context-vault') && !result.includes(`localhost:${port}`)) {
163
- console.error('[context-vault] Self-heal: Claude Code not pointing to this daemon, reconfiguring...');
164
- try {
165
- execFileSync('claude', ['mcp', 'remove', 'context-vault', '-s', 'user'], { stdio: 'pipe', env });
166
- }
167
- catch { }
168
- execFileSync('claude', [
169
- 'mcp', 'add', '-s', 'user', '--transport', 'http',
170
- 'context-vault', `http://localhost:${port}/mcp`,
171
- ], { stdio: 'pipe', env });
172
- console.error('[context-vault] Self-heal: Claude Code reconfigured');
173
- }
174
- }
175
- catch {
176
- // claude CLI not available or check failed, skip
177
- }
178
- }
179
- /**
180
- * Auto-update: check npm for a newer version. In daemon (HTTP) mode,
181
- * install the update and gracefully restart. In stdio mode, just log.
182
- */
183
- async function autoUpdate(isDaemon) {
184
- const { execSync, spawn: spawnProc } = await import('node:child_process');
185
- // Use a non-blocking npm check to avoid event loop stalls during reindex
186
- const latest = await new Promise((resolve, reject) => {
187
- const child = spawnProc('npm', ['view', 'context-vault', 'version'], {
188
- stdio: ['pipe', 'pipe', 'pipe'],
189
- timeout: 10000,
190
- });
191
- let out = '';
192
- child.stdout?.on('data', (d) => { out += d.toString(); });
193
- child.on('close', (code) => {
194
- if (code === 0 && out.trim())
195
- resolve(out.trim());
196
- else
197
- reject(new Error(`npm view failed (code ${code})`));
198
- });
199
- child.on('error', reject);
200
- }).catch(() => null);
201
- if (!latest)
202
- return null; // offline or registry unreachable
203
- if (latest === pkg.version)
204
- return latest;
205
- console.error(`[context-vault] Update available: v${pkg.version} -> v${latest}`);
206
- if (!isDaemon) {
207
- console.error('[context-vault] Run: context-vault update');
208
- return latest;
209
- }
210
- // Daemon mode: auto-install and restart
211
- console.error(`[context-vault] Auto-updating to v${latest}...`);
212
- try {
213
- execSync('npm install -g context-vault@latest', {
214
- encoding: 'utf-8',
215
- timeout: 120000,
216
- stdio: ['pipe', 'pipe', 'pipe'],
217
- });
218
- console.error(`[context-vault] Installed v${latest}. Restarting daemon...`);
219
- // Find our own server.js path in the updated install
220
- const newBin = execSync('which context-vault', {
221
- encoding: 'utf-8',
222
- timeout: 5000,
223
- stdio: ['pipe', 'pipe', 'pipe'],
224
- }).trim();
225
- // Resolve the actual package root from the binary
226
- const { readlinkSync } = await import('node:fs');
227
- const { resolve: resolvePath } = await import('node:path');
228
- let binTarget = newBin;
229
- try {
230
- binTarget = readlinkSync(newBin);
231
- }
232
- catch { }
233
- const newPkgRoot = resolvePath(dirname(binTarget), '..');
234
- const newServerJs = join(newPkgRoot, 'dist', 'server.js');
235
- // Spawn the new version as a replacement daemon
236
- const portIdx = process.argv.indexOf('--port');
237
- const port = portIdx !== -1 ? process.argv[portIdx + 1] : '3377';
238
- const args = [newServerJs, '--http', '--port', port];
239
- // Pass through vault-dir if specified
240
- const vaultIdx = process.argv.indexOf('--vault-dir');
241
- if (vaultIdx !== -1 && process.argv[vaultIdx + 1]) {
242
- args.push('--vault-dir', process.argv[vaultIdx + 1]);
243
- }
244
- const { spawn } = await import('node:child_process');
245
- const child = spawn(process.execPath, args, {
246
- detached: true,
247
- stdio: 'ignore',
248
- env: { ...process.env, NODE_OPTIONS: '--no-warnings=ExperimentalWarning', CONTEXT_VAULT_NO_DAEMON: '1' },
249
- });
250
- child.unref();
251
- // Give the new process a moment to bind the port, then exit
252
- await new Promise(r => setTimeout(r, 2000));
253
- console.error(`[context-vault] New daemon spawned (PID ${child.pid}). Old daemon exiting.`);
254
- process.exit(0);
255
- }
256
- catch (e) {
257
- console.error(`[context-vault] Auto-update failed: ${e.message}`);
258
- console.error('[context-vault] Run manually: context-vault update');
259
- }
260
- return latest;
261
- }
262
20
  async function main() {
263
21
  let phase = 'CONFIG';
264
22
  let db;
@@ -392,7 +150,6 @@ async function main() {
392
150
  registerTools(s, ctx);
393
151
  return s;
394
152
  }
395
- const server = createServer();
396
153
  function closeDb() {
397
154
  try {
398
155
  if (db.inTransaction) {
@@ -410,10 +167,6 @@ async function main() {
410
167
  }
411
168
  function shutdown(signal) {
412
169
  console.error(`[context-vault] Received ${signal}, shutting down...`);
413
- try {
414
- unlinkSync(join(homedir(), '.context-mcp', 'daemon.pid'));
415
- }
416
- catch { }
417
170
  if (ctx.activeOps.count > 0) {
418
171
  console.error(`[context-vault] Waiting for ${ctx.activeOps.count} in-flight operation(s)...`);
419
172
  const check = setInterval(() => {
@@ -444,200 +197,14 @@ async function main() {
444
197
  const capMb = Math.round(MAX_RSS_BYTES / 1024 / 1024);
445
198
  console.error(`[context-vault] WATCHDOG: RSS ${rssMb}MB exceeds ${capMb}MB limit. Shutting down to protect system resources.`);
446
199
  console.error(`[context-vault] Adjust limit with CONTEXT_VAULT_MAX_RSS_MB env var, or run 'context-vault reindex' manually.`);
447
- try {
448
- unlinkSync(PID_PATH);
449
- }
450
- catch { }
451
200
  process.exit(137);
452
201
  }
453
202
  }, 5_000);
454
203
  rssWatchdog.unref();
455
204
  phase = 'CONNECTED';
456
- let latestKnownVersion = null;
457
- const useHttp = process.argv.includes('--http');
458
- if (useHttp) {
459
- const portIdx = process.argv.indexOf('--port');
460
- const port = portIdx !== -1 && process.argv[portIdx + 1]
461
- ? parseInt(process.argv[portIdx + 1], 10)
462
- : 3377;
463
- const app = createMcpExpressApp();
464
- const transports = {};
465
- app.get('/health', (_req, res) => {
466
- res.writeHead(200, { 'Content-Type': 'application/json' });
467
- res.end(JSON.stringify({
468
- ok: true,
469
- version: pkg.version,
470
- latestVersion: latestKnownVersion,
471
- updateAvailable: latestKnownVersion ? latestKnownVersion !== pkg.version : null,
472
- pid: process.pid,
473
- uptime: process.uptime(),
474
- sessions: Object.keys(transports).length,
475
- }));
476
- });
477
- function createTransport() {
478
- const transport = new StreamableHTTPServerTransport({
479
- sessionIdGenerator: () => randomUUID(),
480
- onsessioninitialized: (sid) => {
481
- transports[sid] = transport;
482
- },
483
- });
484
- transport.onclose = () => {
485
- const sid = transport.sessionId;
486
- if (sid && transports[sid]) {
487
- delete transports[sid];
488
- }
489
- };
490
- return transport;
491
- }
492
- app.post('/mcp', async (req, res) => {
493
- const sessionId = req.headers['mcp-session-id'];
494
- try {
495
- let transport;
496
- if (sessionId && transports[sessionId]) {
497
- transport = transports[sessionId];
498
- }
499
- else if (isInitializeRequest(req.body)) {
500
- // Allow (re-)initialization with or without a stale session ID.
501
- // Covers: first connect, reconnect after daemon restart.
502
- transport = createTransport();
503
- const sessionServer = createServer();
504
- await sessionServer.connect(transport);
505
- await transport.handleRequest(req, res, req.body);
506
- return;
507
- }
508
- else if (sessionId) {
509
- // Stale session (e.g., daemon restarted). Claude Code's MCP client
510
- // does not auto-reinitialize on 404, so we recover transparently:
511
- // create a new transport reusing the stale session ID, force it into
512
- // initialized state, and handle the request as if nothing happened.
513
- console.error(`[context-vault] Recovering stale session ${sessionId.slice(0, 8)}...`);
514
- transport = new StreamableHTTPServerTransport({
515
- sessionIdGenerator: () => sessionId,
516
- onsessioninitialized: (sid) => {
517
- transports[sid] = transport;
518
- },
519
- });
520
- transport.onclose = () => {
521
- if (transports[sessionId])
522
- delete transports[sessionId];
523
- };
524
- const sessionServer = createServer();
525
- await sessionServer.connect(transport);
526
- // Force transport into initialized state, bypassing the initialize
527
- // handshake. The inner WebStandardStreamableHTTPServerTransport holds
528
- // the _initialized flag and sessionId.
529
- const inner = transport._webStandardTransport;
530
- inner._initialized = true;
531
- inner.sessionId = sessionId;
532
- transports[sessionId] = transport;
533
- // Fall through to handleRequest below
534
- }
535
- else {
536
- res.writeHead(400, { 'Content-Type': 'application/json' });
537
- res.end(JSON.stringify({
538
- jsonrpc: '2.0',
539
- error: { code: -32000, message: 'Bad Request: No valid session ID' },
540
- id: null,
541
- }));
542
- return;
543
- }
544
- await transport.handleRequest(req, res, req.body);
545
- }
546
- catch (error) {
547
- console.error('[context-vault] HTTP error:', error);
548
- if (!res.headersSent) {
549
- res.writeHead(500, { 'Content-Type': 'application/json' });
550
- res.end(JSON.stringify({
551
- jsonrpc: '2.0',
552
- error: { code: -32603, message: 'Internal server error' },
553
- id: null,
554
- }));
555
- }
556
- }
557
- });
558
- app.get('/mcp', async (req, res) => {
559
- const sessionId = req.headers['mcp-session-id'];
560
- if (!sessionId || !transports[sessionId]) {
561
- res.writeHead(404);
562
- res.end('Session not found');
563
- return;
564
- }
565
- await transports[sessionId].handleRequest(req, res);
566
- });
567
- app.delete('/mcp', async (req, res) => {
568
- const sessionId = req.headers['mcp-session-id'];
569
- if (!sessionId || !transports[sessionId]) {
570
- res.writeHead(404);
571
- res.end('Session not found');
572
- return;
573
- }
574
- await transports[sessionId].handleRequest(req, res);
575
- });
576
- const httpServer = app.listen(port, () => {
577
- console.error(`[context-vault] Serving on http://localhost:${port}/mcp`);
578
- const pidDir = join(homedir(), '.context-mcp');
579
- mkdirSync(pidDir, { recursive: true });
580
- writeFileSync(join(pidDir, 'daemon.pid'), JSON.stringify({ pid: process.pid, port }));
581
- // Self-healing: validate and repair infrastructure on startup
582
- selfCheck(port).catch(() => { });
583
- // Periodic health monitor: validate DB, vault, and PID file every 5 minutes
584
- setInterval(() => {
585
- try {
586
- // Verify DB is accessible
587
- ctx.db.exec('SELECT 1');
588
- // Verify PID file is correct
589
- const pidData = existsSync(PID_PATH)
590
- ? JSON.parse(readFileSync(PID_PATH, 'utf-8'))
591
- : null;
592
- if (!pidData || pidData.pid !== process.pid || pidData.port !== port) {
593
- writeFileSync(PID_PATH, JSON.stringify({ pid: process.pid, port }));
594
- console.error('[context-vault] Self-heal: repaired stale PID file');
595
- }
596
- // Verify vault directory
597
- if (!existsSync(ctx.config.vaultDir)) {
598
- console.error(`[context-vault] Warning: vault directory missing: ${ctx.config.vaultDir}`);
599
- }
600
- }
601
- catch (e) {
602
- console.error(`[context-vault] Health check failed: ${e.message}`);
603
- }
604
- }, 5 * 60 * 1000);
605
- });
606
- httpServer.on('error', (err) => {
607
- if (err.code === 'EADDRINUSE') {
608
- console.error(`[context-vault] Port ${port} is already in use.`);
609
- console.error(`[context-vault] Check what's using it: lsof -i :${port}`);
610
- console.error(`[context-vault] Or try a different port: context-vault serve --http --port ${port + 1}`);
611
- }
612
- else {
613
- console.error(`[context-vault] Server error: ${err.message}`);
614
- }
615
- process.exit(1);
616
- });
617
- }
618
- else {
619
- const transport = new StdioServerTransport();
620
- await server.connect(transport);
621
- // Auto-daemonize: if no daemon is running, spawn one in the background
622
- // and reconfigure Claude Code to use HTTP. Next session onwards, all
623
- // sessions share the single daemon process. This session stays on stdio.
624
- if (!process.env.CONTEXT_VAULT_NO_DAEMON) {
625
- setTimeout(() => tryAutoDaemon().catch(() => { }), 2000);
626
- }
627
- }
628
- // Auto-update check (and apply for daemon mode)
629
- const updateCheck = async () => {
630
- const result = await autoUpdate(useHttp);
631
- if (result)
632
- latestKnownVersion = result;
633
- };
634
- setTimeout(() => updateCheck().catch((e) => {
635
- console.error(`[context-vault] Update check failed: ${e.message}`);
636
- }), 5000);
637
- // Re-check daily for long-running daemons
638
- if (useHttp) {
639
- setInterval(() => updateCheck().catch(() => { }), 24 * 60 * 60 * 1000);
640
- }
205
+ const server = createServer();
206
+ const transport = new StdioServerTransport();
207
+ await server.connect(transport);
641
208
  }
642
209
  catch (rawErr) {
643
210
  const err = rawErr;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtG,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,GACb,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,GAAG,IAAI,CAAC;AACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;AAE/D,KAAK,UAAU,aAAa;IAC1B,qCAAqC;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB;YACvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,SAAS,CAAC,CAAC;YAC3D,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO,CAAC,mCAAmC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEnE,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE;QAC3F,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,mCAAmC,EAAE;KAC3E,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IAEd,gCAAgC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IACnC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,WAAW,SAAS,CAAC,CAAC;YAClE,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;gBAAC,MAAM;YAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IAED,gDAAgD;IAChD,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAQ,GAA0C,CAAC,UAAU,CAAC;IAC9D,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,IAAI,CAAC;QACH,YAAY,CAAC,QAAQ,EAAE;YACrB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;YACjD,eAAe,EAAE,oBAAoB,WAAW,MAAM;SACvD,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,0CAA0C,WAAW,2CAA2C,CAAC,CAAC;IAClH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAQ,GAA0C,CAAC,UAAU,CAAC;IAE9D,qEAAqE;IACrE,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,gCAAgC,CAAC,CAAC;QAC/F,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;gBACrC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACnE,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;oBACtF,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACxD,MAAM,QAAQ,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAChF,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChF,IAAI,QAAQ;wBAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;oBAC9D,MAAM,QAAQ,GAAG;;;;;;;;EAQzB,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;YAU/C,OAAO;;;;;;;;;;;;;SAaV,CAAC;oBACA,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;oBACnC,iDAAiD;oBACjD,IAAI,CAAC;wBAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBACrF,IAAI,CAAC;wBAAC,YAAY,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBACzF,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACrF,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,6CAA8C,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;YACrD,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG;YACH,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;YAC9E,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;YACtG,IAAI,CAAC;gBAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAClH,YAAY,CAAC,QAAQ,EAAE;gBACrB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;gBACjD,eAAe,EAAE,oBAAoB,IAAI,MAAM;aAChD,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,UAAU,CAAC,QAAiB;IACzC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC1E,yEAAyE;IACzE,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE;YACnE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACxC,IAAI,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;;gBAC7C,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,IAAI,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAqB,CAAW,CAAC;IAEhD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,CAAC,kCAAkC;IAC5D,IAAI,MAAM,KAAK,GAAG,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAE1C,OAAO,CAAC,KAAK,CAAC,sCAAsC,GAAG,CAAC,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC;IAEjF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wCAAwC;IACxC,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,KAAK,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,QAAQ,CAAC,qCAAqC,EAAE;YAC9C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,8BAA8B,MAAM,wBAAwB,CAAC,CAAC;QAE5E,qDAAqD;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,EAAE;YAC7C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,kDAAkD;QAClD,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,SAAS,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC;YAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAClD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE1D,gDAAgD;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAErD,sCAAsC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;YAC1C,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,mCAAmC,EAAE,uBAAuB,EAAE,GAAG,EAAE;SACzG,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,4DAA4D;QAC5D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,2CAA2C,KAAK,CAAC,GAAG,wBAAwB,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,uCAAwC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,EAAkD,CAAC;IACvD,IAAI,MAAmE,CAAC;IAExE,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,EAAE,CAAC;QAEzB,KAAK,GAAG,MAAM,CAAC;QACf,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACpD,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzB,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,2DAA2D,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5F,OAAO,CAAC,KAAK,CAAC,mBAAoB,QAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,+CAA+C,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACP,aAAa,CACX,UAAU,EACV,IAAI,CAAC,SAAS,CACZ;gBACE,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACvD,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;QACJ,CAAC;QAAC,OAAO,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACX,yDAA0D,SAAmB,CAAC,OAAO,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEpD,2BAA2B;QAC3B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC9C,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iEAAiE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClG,OAAO,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;YAC1G,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACnD,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC;oBAC7B,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;oBAC/F,OAAO,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACvE,CAAC;QAED,KAAK,GAAG,IAAI,CAAC;QACb,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAEpC,MAAM,GAAG,GAAa;YACpB,EAAE;YACF,MAAM;YACN,KAAK;YACL,KAAK;YACL,SAAS,EAAE,CAAC,KAAa,EAAE,SAAuB,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YACzF,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;YACrD,YAAY,EAAE,CAAC,KAAa,EAAE,SAAuB,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC;YAC/F,YAAY,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC;YAC3D,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;YACvB,SAAS,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE;SACjD,CAAC;QAEF,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CACX,0BAA0B,MAAM,YAAY,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CACX,kDAAmD,QAAkB,CAAC,OAAO,EAAE,CAChF,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,EAAE;oBACrC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC,QAAQ;oBAC/C,UAAU,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,GAAG;oBAC3C,cAAc,EAAE,MAAM,CAAC,QAAQ;oBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC;iBAC3E,CAAC,CAAC;gBACH,uEAAuE;gBACtE,GAAW,CAAC,aAAa,GAAG,YAAY,CAAC,aAAa,CAAC;gBACxD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAqC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,KAAK,GAAG,QAAQ,CAAC;QAEjB,MAAM,mBAAmB,GAAG,MAAM,CAAC;QACnC,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,GAAa,EAAE,QAAQ,EAAE;YAC7C,GAAG;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,cAAc,GAAG,mBAAmB;oBAAE,OAAO,YAAa,CAAC;gBACrE,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;gBAC9B,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;oBACpC,OAAO,CAAC,KAAK,CAAC,wDAAwD,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxF,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;oBAC9B,KAAK,CAAC,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACpD,CAAC;gBACD,YAAY,GAAG,KAAK,CAAC;gBACrB,cAAc,GAAG,GAAG,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,SAAS,YAAY;YACnB,MAAM,CAAC,GAAG,IAAI,SAAS,CACrB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAC/C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;YACF,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,SAAS,OAAO;YACd,IAAI,CAAC;gBACH,IAAK,EAAU,CAAC,aAAa,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;oBACpE,EAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACvB,CAAC;gBACD,EAAG,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;gBAC5C,EAAG,CAAC,KAAK,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,mCAAoC,WAAqB,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,SAAS,QAAQ,CAAC,MAAc;YAC9B,OAAO,CAAC,KAAK,CAAC,4BAA4B,MAAM,oBAAoB,CAAC,CAAC;YACtE,IAAI,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAE3E,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,CACX,+BAA+B,GAAG,CAAC,SAAS,CAAC,KAAK,4BAA4B,CAC/E,CAAC;gBACF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;oBAC7B,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;wBAC9B,aAAa,CAAC,KAAK,CAAC,CAAC;wBACrB,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,UAAU,CAAC,GAAG,EAAE;oBACd,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,OAAO,CAAC,KAAK,CACX,oCAAoC,GAAG,CAAC,SAAS,CAAC,KAAK,6BAA6B,CACrF,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjD,kEAAkE;QAClE,0EAA0E;QAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjG,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;YACnC,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YACtC,IAAI,GAAG,GAAG,aAAa,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;gBACtD,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,cAAc,KAAK,sDAAsD,CAAC,CAAC;gBAC/H,OAAO,CAAC,KAAK,CAAC,8GAA8G,CAAC,CAAC;gBAC9H,IAAI,CAAC;oBAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,WAAW,CAAC,KAAK,EAAE,CAAC;QAEpB,KAAK,GAAG,WAAW,CAAC;QACpB,IAAI,kBAAkB,GAAkB,IAAI,CAAC;QAE7C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;gBACtD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;gBACzC,CAAC,CAAC,IAAI,CAAC;YAET,MAAM,GAAG,GAAG,mBAAmB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAkD,EAAE,CAAC;YAErE,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAqB,EAAE,GAAmB,EAAE,EAAE;gBAChE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACrB,EAAE,EAAE,IAAI;oBACR,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,aAAa,EAAE,kBAAkB;oBACjC,eAAe,EAAE,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBAC/E,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;oBACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;iBACzC,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,SAAS,eAAe;gBACtB,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;oBAClD,kBAAkB,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE;oBACtC,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;wBACpC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;oBAC9B,CAAC;iBACF,CAAC,CAAC;gBACH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;oBACvB,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC;oBAChC,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC3B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAyC,EAAE,GAAmB,EAAE,EAAE;gBACxF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBACtE,IAAI,CAAC;oBACH,IAAI,SAAwC,CAAC;oBAC7C,IAAI,SAAS,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;oBACpC,CAAC;yBAAM,IAAI,mBAAmB,CAAE,GAAW,CAAC,IAAI,CAAC,EAAE,CAAC;wBAClD,gEAAgE;wBAChE,yDAAyD;wBACzD,SAAS,GAAG,eAAe,EAAE,CAAC;wBAC9B,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC;wBACrC,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACvC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAG,GAAW,CAAC,IAAI,CAAC,CAAC;wBAC3D,OAAO;oBACT,CAAC;yBAAM,IAAI,SAAS,EAAE,CAAC;wBACrB,mEAAmE;wBACnE,kEAAkE;wBAClE,qEAAqE;wBACrE,oEAAoE;wBACpE,OAAO,CAAC,KAAK,CAAC,4CAA4C,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;wBAEtF,SAAS,GAAG,IAAI,6BAA6B,CAAC;4BAC5C,kBAAkB,EAAE,GAAG,EAAE,CAAC,SAAS;4BACnC,oBAAoB,EAAE,CAAC,GAAW,EAAE,EAAE;gCACpC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;4BAC9B,CAAC;yBACF,CAAC,CAAC;wBACH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;4BACvB,IAAI,UAAU,CAAC,SAAS,CAAC;gCAAE,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC;wBAC1D,CAAC,CAAC;wBAEF,MAAM,aAAa,GAAG,YAAY,EAAE,CAAC;wBACrC,MAAM,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAEvC,mEAAmE;wBACnE,sEAAsE;wBACtE,uCAAuC;wBACvC,MAAM,KAAK,GAAI,SAAiB,CAAC,qBAAqB,CAAC;wBACvD,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;wBAC1B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC5B,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;wBAElC,sCAAsC;oBACxC,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;4BACrB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE;4BACpE,EAAE,EAAE,IAAI;yBACT,CAAC,CAAC,CAAC;wBACJ,OAAO;oBACT,CAAC;oBACD,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAG,GAAW,CAAC,IAAI,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;oBACpD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACrB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;wBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;4BACrB,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,EAAE;4BACzD,EAAE,EAAE,IAAI;yBACT,CAAC,CAAC,CAAC;oBACN,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;gBAClE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBACtE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;gBACrE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;gBACtE,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;gBACvC,OAAO,CAAC,KAAK,CAAC,+CAA+C,IAAI,MAAM,CAAC,CAAC;gBACzE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;gBAC/C,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAEtF,8DAA8D;gBAC9D,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBAEhC,4EAA4E;gBAC5E,WAAW,CAAC,GAAG,EAAE;oBACf,IAAI,CAAC;wBACH,0BAA0B;wBAC1B,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBACxB,6BAA6B;wBAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC;4BAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAC7C,CAAC,CAAC,IAAI,CAAC;wBACT,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;4BACrE,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;4BACpE,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;wBACtE,CAAC;wBACD,yBAAyB;wBACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACrC,OAAO,CAAC,KAAK,CAAC,qDAAqD,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAC5F,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,wCAAyC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;gBACpD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,OAAO,CAAC,KAAK,CAAC,wBAAwB,IAAI,qBAAqB,CAAC,CAAC;oBACjE,OAAO,CAAC,KAAK,CAAC,mDAAmD,IAAI,EAAE,CAAC,CAAC;oBACzE,OAAO,CAAC,KAAK,CAAC,8EAA8E,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1G,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEhC,uEAAuE;YACvE,qEAAqE;YACrE,yEAAyE;YACzE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;gBACzC,UAAU,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,MAAM;gBAAE,kBAAkB,GAAG,MAAM,CAAC;QAC1C,CAAC,CAAC;QACF,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACzC,OAAO,CAAC,KAAK,CAAC,wCAAyC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAChF,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACV,0CAA0C;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAe,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,UAAU,EAAG,GAAW,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO;YACrD,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,GAAG,CAAC,OAAO;YACvB,KAAK;SACN,CAAC;QACF,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClC,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,aAAa,CACX,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAC5B,GAAG,QAAQ,CAAC,SAAS,KAAK,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,CAClD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,kBAAkB,CAAC,MAAM,EAAE;YACzB,KAAK,EAAE,eAAe;YACtB,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,GAAG,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,MAAM,YAAY,iBAAiB,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,sBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,sCAAsC,KAAK,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CACX,gEAAgE,MAAM,EAAE,MAAM,IAAI,UAAU,GAAG,CAChG,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,mBAAmB;QAC/B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACrD,YAAY,EAAE,OAAO,CAAC,OAAO;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,GAAG,CAAC,OAAO;KACxB,CAAC;IACF,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,uCAAuC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,oBAAoB;QAChC,OAAO;QACP,YAAY,EAAE,OAAO,CAAC,OAAO;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,GAAG,CAAC,OAAO;KACxB,CAAC;IACF,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@context-vault/core",
3
- "version": "3.16.0",
3
+ "version": "3.16.1",
4
4
  "type": "module",
5
5
  "description": "Pure local engine: capture, index, search, and utilities for context-vault",
6
6
  "main": "dist/main.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "context-vault",
3
- "version": "3.16.0",
3
+ "version": "3.16.1",
4
4
  "type": "module",
5
5
  "description": "Persistent memory for AI agents — saves and searches knowledge across sessions",
6
6
  "bin": {
@@ -67,7 +67,7 @@
67
67
  "@context-vault/core"
68
68
  ],
69
69
  "dependencies": {
70
- "@context-vault/core": "^3.16.0",
70
+ "@context-vault/core": "^3.16.1",
71
71
  "@modelcontextprotocol/sdk": "^1.26.0",
72
72
  "adm-zip": "^0.5.16",
73
73
  "sqlite-vec": "^0.1.0"
@@ -10,7 +10,7 @@
10
10
  */
11
11
 
12
12
  import { execSync } from 'node:child_process';
13
- import { existsSync, mkdirSync } from 'node:fs';
13
+ import { existsSync, mkdirSync, unlinkSync, readFileSync } from 'node:fs';
14
14
  import { join, dirname } from 'node:path';
15
15
  import { fileURLToPath } from 'node:url';
16
16
  import { homedir } from 'node:os';
@@ -47,6 +47,31 @@ async function main() {
47
47
  // ── 2. Ensure data dir exists ────────────────────────────────────────
48
48
  const DATA_DIR = join(homedir(), '.context-mcp');
49
49
  mkdirSync(DATA_DIR, { recursive: true });
50
+
51
+ // ── 3. Clean up legacy daemon if present ────────────────────────────
52
+ // v3.16.1 removed the HTTP daemon. Clean up LaunchAgent and PID file
53
+ // left by previous versions.
54
+ if (process.platform === 'darwin') {
55
+ const plistPath = join(homedir(), 'Library', 'LaunchAgents', 'com.context-vault.daemon.plist');
56
+ if (existsSync(plistPath)) {
57
+ try { execSync('launchctl unload "' + plistPath + '" 2>/dev/null', { stdio: 'pipe' }); } catch {}
58
+ try { unlinkSync(plistPath); } catch {}
59
+ console.log('[context-vault] Removed legacy daemon LaunchAgent.');
60
+ }
61
+ }
62
+ const pidPath = join(homedir(), '.context-mcp', 'daemon.pid');
63
+ if (existsSync(pidPath)) {
64
+ try {
65
+ const { pid } = JSON.parse(readFileSync(pidPath, 'utf-8'));
66
+ process.kill(pid, 'SIGTERM');
67
+ } catch {}
68
+ try { unlinkSync(pidPath); } catch {}
69
+ console.log('[context-vault] Removed legacy daemon PID file.');
70
+ }
71
+ const daemonLog = join(homedir(), '.context-mcp', 'daemon.log');
72
+ if (existsSync(daemonLog)) {
73
+ try { unlinkSync(daemonLog); } catch {}
74
+ }
50
75
  }
51
76
 
52
77
  main().catch(() => {});
@@ -84,7 +84,11 @@ let reindexAttempts = 0;
84
84
  let reindexFailed = false;
85
85
  const MAX_REINDEX_ATTEMPTS = 2;
86
86
 
87
+ const registeredServers = new WeakSet<object>();
88
+
87
89
  export function registerTools(server: any, ctx: LocalCtx): void {
90
+ if (registeredServers.has(server)) return;
91
+ registeredServers.add(server);
88
92
  function tracked(
89
93
  handler: (...args: any[]) => Promise<ToolResult>,
90
94
  toolName: string