@varun-ai07/covenant-mcp 1.3.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abis/GrantProgram.json +778 -0
- package/dist/abis/RevisionManager.json +544 -0
- package/dist/abis/TrainingMarketplace.json +787 -0
- package/dist/cli.js +0 -0
- package/dist/config.d.ts +15 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -3
- package/dist/config.js.map +1 -1
- package/dist/server.d.ts +3 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +63 -63
- package/dist/server.js.map +1 -1
- package/dist/shared-types.js +8 -8
- package/dist/tools/{registry.d.ts → corven-agent.d.ts} +1 -1
- package/dist/tools/corven-agent.d.ts.map +1 -0
- package/dist/tools/corven-agent.js +90 -0
- package/dist/tools/corven-agent.js.map +1 -0
- package/dist/tools/corven-attest.d.ts +3 -0
- package/dist/tools/corven-attest.d.ts.map +1 -0
- package/dist/tools/corven-attest.js +87 -0
- package/dist/tools/corven-attest.js.map +1 -0
- package/dist/tools/{batches.d.ts → corven-batch.d.ts} +1 -1
- package/dist/tools/corven-batch.d.ts.map +1 -0
- package/dist/tools/corven-batch.js +116 -0
- package/dist/tools/corven-batch.js.map +1 -0
- package/dist/tools/{bounties.d.ts → corven-bounty.d.ts} +1 -1
- package/dist/tools/corven-bounty.d.ts.map +1 -0
- package/dist/tools/corven-bounty.js +72 -0
- package/dist/tools/corven-bounty.js.map +1 -0
- package/dist/tools/{collectives.d.ts → corven-collective.d.ts} +1 -1
- package/dist/tools/corven-collective.d.ts.map +1 -0
- package/dist/tools/corven-collective.js +105 -0
- package/dist/tools/corven-collective.js.map +1 -0
- package/dist/tools/corven-fiat.d.ts +3 -0
- package/dist/tools/corven-fiat.d.ts.map +1 -0
- package/dist/tools/corven-fiat.js +42 -0
- package/dist/tools/corven-fiat.js.map +1 -0
- package/dist/tools/corven-govern.d.ts +3 -0
- package/dist/tools/corven-govern.d.ts.map +1 -0
- package/dist/tools/corven-govern.js +65 -0
- package/dist/tools/corven-govern.js.map +1 -0
- package/dist/tools/{grants.d.ts → corven-grants.d.ts} +1 -1
- package/dist/tools/corven-grants.d.ts.map +1 -0
- package/dist/tools/corven-grants.js +67 -0
- package/dist/tools/corven-grants.js.map +1 -0
- package/dist/tools/{insurance.d.ts → corven-insurance.d.ts} +1 -1
- package/dist/tools/corven-insurance.d.ts.map +1 -0
- package/dist/tools/corven-insurance.js +103 -0
- package/dist/tools/corven-insurance.js.map +1 -0
- package/dist/tools/{market.d.ts → corven-market.d.ts} +1 -1
- package/dist/tools/corven-market.d.ts.map +1 -0
- package/dist/tools/corven-market.js +113 -0
- package/dist/tools/corven-market.js.map +1 -0
- package/dist/tools/corven-match.d.ts +3 -0
- package/dist/tools/corven-match.d.ts.map +1 -0
- package/dist/tools/corven-match.js +235 -0
- package/dist/tools/corven-match.js.map +1 -0
- package/dist/tools/corven-message.d.ts +3 -0
- package/dist/tools/corven-message.d.ts.map +1 -0
- package/dist/tools/corven-message.js +82 -0
- package/dist/tools/corven-message.js.map +1 -0
- package/dist/tools/corven-multi.d.ts +3 -0
- package/dist/tools/corven-multi.d.ts.map +1 -0
- package/dist/tools/corven-multi.js +197 -0
- package/dist/tools/corven-multi.js.map +1 -0
- package/dist/tools/corven-reputation.d.ts +3 -0
- package/dist/tools/corven-reputation.d.ts.map +1 -0
- package/dist/tools/corven-reputation.js +126 -0
- package/dist/tools/corven-reputation.js.map +1 -0
- package/dist/tools/{revisions.d.ts → corven-revision.d.ts} +1 -1
- package/dist/tools/corven-revision.d.ts.map +1 -0
- package/dist/tools/corven-revision.js +73 -0
- package/dist/tools/corven-revision.js.map +1 -0
- package/dist/tools/{router.d.ts → corven-router.d.ts} +1 -1
- package/dist/tools/corven-router.d.ts.map +1 -0
- package/dist/tools/corven-router.js +116 -0
- package/dist/tools/corven-router.js.map +1 -0
- package/dist/tools/corven-stats.d.ts +3 -0
- package/dist/tools/corven-stats.d.ts.map +1 -0
- package/dist/tools/corven-stats.js +97 -0
- package/dist/tools/corven-stats.js.map +1 -0
- package/dist/tools/corven-stream.d.ts +3 -0
- package/dist/tools/corven-stream.d.ts.map +1 -0
- package/dist/tools/corven-stream.js +197 -0
- package/dist/tools/corven-stream.js.map +1 -0
- package/dist/tools/corven-task.d.ts +3 -0
- package/dist/tools/corven-task.d.ts.map +1 -0
- package/dist/tools/corven-task.js +105 -0
- package/dist/tools/corven-task.js.map +1 -0
- package/dist/tools/{training.d.ts → corven-training.d.ts} +1 -1
- package/dist/tools/corven-training.d.ts.map +1 -0
- package/dist/tools/corven-training.js +73 -0
- package/dist/tools/corven-training.js.map +1 -0
- package/dist/tools/corven-verify.d.ts +3 -0
- package/dist/tools/corven-verify.d.ts.map +1 -0
- package/dist/tools/corven-verify.js +149 -0
- package/dist/tools/corven-verify.js.map +1 -0
- package/dist/tools/corven-wallet.d.ts +3 -0
- package/dist/tools/corven-wallet.d.ts.map +1 -0
- package/dist/tools/corven-wallet.js +235 -0
- package/dist/tools/corven-wallet.js.map +1 -0
- package/dist/tools/covenant-help.d.ts.map +1 -1
- package/dist/tools/covenant-help.js +88 -312
- package/dist/tools/covenant-help.js.map +1 -1
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +26 -0
- package/dist/tools/disputes.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/abis/v2/DisputeResolution.json +0 -493
- package/dist/abis/v2/InsurancePool.json +0 -645
- package/dist/tools/account-abstraction.d.ts +0 -3
- package/dist/tools/account-abstraction.d.ts.map +0 -1
- package/dist/tools/account-abstraction.js +0 -364
- package/dist/tools/account-abstraction.js.map +0 -1
- package/dist/tools/batches.d.ts.map +0 -1
- package/dist/tools/batches.js +0 -231
- package/dist/tools/batches.js.map +0 -1
- package/dist/tools/bounties.d.ts.map +0 -1
- package/dist/tools/bounties.js +0 -304
- package/dist/tools/bounties.js.map +0 -1
- package/dist/tools/bridge.d.ts +0 -3
- package/dist/tools/bridge.d.ts.map +0 -1
- package/dist/tools/bridge.js +0 -190
- package/dist/tools/bridge.js.map +0 -1
- package/dist/tools/collectives.d.ts.map +0 -1
- package/dist/tools/collectives.js +0 -249
- package/dist/tools/collectives.js.map +0 -1
- package/dist/tools/cross-chain.d.ts +0 -3
- package/dist/tools/cross-chain.d.ts.map +0 -1
- package/dist/tools/cross-chain.js +0 -77
- package/dist/tools/cross-chain.js.map +0 -1
- package/dist/tools/escrow.d.ts +0 -3
- package/dist/tools/escrow.d.ts.map +0 -1
- package/dist/tools/escrow.js +0 -606
- package/dist/tools/escrow.js.map +0 -1
- package/dist/tools/fiat-onramp.d.ts +0 -3
- package/dist/tools/fiat-onramp.d.ts.map +0 -1
- package/dist/tools/fiat-onramp.js +0 -108
- package/dist/tools/fiat-onramp.js.map +0 -1
- package/dist/tools/governance.d.ts +0 -3
- package/dist/tools/governance.d.ts.map +0 -1
- package/dist/tools/governance.js +0 -271
- package/dist/tools/governance.js.map +0 -1
- package/dist/tools/grants.d.ts.map +0 -1
- package/dist/tools/grants.js +0 -269
- package/dist/tools/grants.js.map +0 -1
- package/dist/tools/insurance.d.ts.map +0 -1
- package/dist/tools/insurance.js +0 -271
- package/dist/tools/insurance.js.map +0 -1
- package/dist/tools/market.d.ts.map +0 -1
- package/dist/tools/market.js +0 -393
- package/dist/tools/market.js.map +0 -1
- package/dist/tools/matching.d.ts +0 -3
- package/dist/tools/matching.d.ts.map +0 -1
- package/dist/tools/matching.js +0 -233
- package/dist/tools/matching.js.map +0 -1
- package/dist/tools/messaging.d.ts +0 -3
- package/dist/tools/messaging.d.ts.map +0 -1
- package/dist/tools/messaging.js +0 -159
- package/dist/tools/messaging.js.map +0 -1
- package/dist/tools/multi-token.d.ts +0 -3
- package/dist/tools/multi-token.d.ts.map +0 -1
- package/dist/tools/multi-token.js +0 -274
- package/dist/tools/multi-token.js.map +0 -1
- package/dist/tools/offchain-coordinator.d.ts +0 -3
- package/dist/tools/offchain-coordinator.d.ts.map +0 -1
- package/dist/tools/offchain-coordinator.js +0 -436
- package/dist/tools/offchain-coordinator.js.map +0 -1
- package/dist/tools/protocol.d.ts +0 -3
- package/dist/tools/protocol.d.ts.map +0 -1
- package/dist/tools/protocol.js +0 -127
- package/dist/tools/protocol.js.map +0 -1
- package/dist/tools/receipts.d.ts +0 -3
- package/dist/tools/receipts.d.ts.map +0 -1
- package/dist/tools/receipts.js +0 -147
- package/dist/tools/receipts.js.map +0 -1
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -245
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/reputation-vc.d.ts +0 -3
- package/dist/tools/reputation-vc.d.ts.map +0 -1
- package/dist/tools/reputation-vc.js +0 -438
- package/dist/tools/reputation-vc.js.map +0 -1
- package/dist/tools/revisions.d.ts.map +0 -1
- package/dist/tools/revisions.js +0 -108
- package/dist/tools/revisions.js.map +0 -1
- package/dist/tools/router.d.ts.map +0 -1
- package/dist/tools/router.js +0 -104
- package/dist/tools/router.js.map +0 -1
- package/dist/tools/streaming.d.ts +0 -3
- package/dist/tools/streaming.d.ts.map +0 -1
- package/dist/tools/streaming.js +0 -350
- package/dist/tools/streaming.js.map +0 -1
- package/dist/tools/templates.d.ts +0 -3
- package/dist/tools/templates.d.ts.map +0 -1
- package/dist/tools/templates.js +0 -392
- package/dist/tools/templates.js.map +0 -1
- package/dist/tools/training.d.ts.map +0 -1
- package/dist/tools/training.js +0 -304
- package/dist/tools/training.js.map +0 -1
- package/dist/tools/v2-settlement.d.ts +0 -3
- package/dist/tools/v2-settlement.d.ts.map +0 -1
- package/dist/tools/v2-settlement.js +0 -226
- package/dist/tools/v2-settlement.js.map +0 -1
- package/dist/tools/verification.d.ts +0 -3
- package/dist/tools/verification.d.ts.map +0 -1
- package/dist/tools/verification.js +0 -215
- package/dist/tools/verification.js.map +0 -1
- package/dist/tools/verify-deep.d.ts +0 -3
- package/dist/tools/verify-deep.d.ts.map +0 -1
- package/dist/tools/verify-deep.js +0 -125
- package/dist/tools/verify-deep.js.map +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* corven_verify — Deep Verification MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Multi-dimensional verification: ZK proofs, capability checks, reputation validation.
|
|
5
|
+
* Consolidates verify-deep, verification.ts, and capability/reputation checks into one tool.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { loadAbi, CONTRACTS } from "../config.js";
|
|
9
|
+
import { readContract } from "../handlers/wallet.js";
|
|
10
|
+
import { formatReadResult } from "../handlers/transactions.js";
|
|
11
|
+
import { formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
12
|
+
const CapabilityVerifierAbi = loadAbi("CapabilityVerifier");
|
|
13
|
+
const ReputationVerifierAbi = loadAbi("ReputationVerifier");
|
|
14
|
+
// ─── In-memory verification store (MVP) ──────────────────────
|
|
15
|
+
const verificationResults = new Map();
|
|
16
|
+
// ─── Input Schemas ───────────────────────────────────────────
|
|
17
|
+
const deepSchema = z.object({
|
|
18
|
+
repoUrl: z.string().url().describe("GitHub repository URL"),
|
|
19
|
+
taskRequirements: z.string().min(1).describe("What the task required"),
|
|
20
|
+
verificationLevel: z.enum(["quick", "standard", "deep"]).optional().default("standard"),
|
|
21
|
+
taskId: z.number().int().positive().optional().describe("Task ID to link verification to"),
|
|
22
|
+
});
|
|
23
|
+
const capabilitySchema = z.object({
|
|
24
|
+
agentAddress: z.string().describe("Agent address to verify capability for"),
|
|
25
|
+
capability: z.string().min(1).describe("Capability tag to verify (e.g. 'python', 'data-analysis')"),
|
|
26
|
+
proofData: z.string().describe("Groth16 proof bytes (hex-encoded)"),
|
|
27
|
+
publicInputs: z.array(z.string()).describe("Public inputs for the ZK proof"),
|
|
28
|
+
});
|
|
29
|
+
const reputationSchema = z.object({
|
|
30
|
+
agentAddress: z.string().describe("Agent address to verify reputation for"),
|
|
31
|
+
minReputation: z.number().int().min(0).max(1000).describe("Minimum reputation threshold"),
|
|
32
|
+
proofData: z.string().describe("Groth16 proof bytes (hex-encoded)"),
|
|
33
|
+
publicInputs: z.array(z.string()).describe("Public inputs for the ZK proof"),
|
|
34
|
+
});
|
|
35
|
+
const resultSchema = z.object({
|
|
36
|
+
taskId: z.number().int().positive().describe("Task ID to check verification for"),
|
|
37
|
+
});
|
|
38
|
+
// ─── Tool Registration ───────────────────────────────────────
|
|
39
|
+
export function registerVerifyTools(server) {
|
|
40
|
+
// ──────────────────────────────────────────────────────────
|
|
41
|
+
// corven_verify — action: deep
|
|
42
|
+
// ──────────────────────────────────────────────────────────
|
|
43
|
+
server.registerTool("corven_verify", {
|
|
44
|
+
title: "Multi-Dimensional Verification",
|
|
45
|
+
description: "Deep verification of agent capabilities, reputation, and deliverables.\n" +
|
|
46
|
+
"ACTIONS:\n" +
|
|
47
|
+
" deep — Clone GitHub repo and analyze across 8 dimensions (code quality, security, architecture, performance, testing, docs, deps, best practices). Returns score (0-100) and verdict (pass/fail/partial).\n" +
|
|
48
|
+
" capability — Verify a ZK proof that an agent has a specific capability (Groth16 on-chain verification).\n" +
|
|
49
|
+
" reputation — Verify a ZK proof that agent reputation meets a threshold without revealing exact score.\n" +
|
|
50
|
+
" result — Retrieve stored verification results for a task.\n" +
|
|
51
|
+
"WORKFLOW: submit_work → verify deep → verify_task (client approves/rejects based on results).\n" +
|
|
52
|
+
"WHEN TO USE: Before corven_verify_task to get a detailed analysis of the deliverable.",
|
|
53
|
+
inputSchema: {
|
|
54
|
+
action: z.enum(["deep", "capability", "reputation", "result"]).describe("Verification action"),
|
|
55
|
+
repoUrl: z.string().optional().describe("GitHub repo URL (for deep)"),
|
|
56
|
+
taskRequirements: z.string().optional().describe("Task requirements (for deep)"),
|
|
57
|
+
verificationLevel: z.enum(["quick", "standard", "deep"]).optional().default("standard"),
|
|
58
|
+
taskId: z.number().optional().describe("Task ID to link or check (for deep/result)"),
|
|
59
|
+
agentAddress: z.string().optional().describe("Agent address (for capability/reputation)"),
|
|
60
|
+
capability: z.string().optional().describe("Capability tag (for capability)"),
|
|
61
|
+
minReputation: z.number().optional().describe("Min reputation threshold (for reputation)"),
|
|
62
|
+
proofData: z.string().optional().describe("ZK proof hex bytes (for capability/reputation)"),
|
|
63
|
+
publicInputs: z.array(z.string()).optional().describe("Public inputs (for capability/reputation)"),
|
|
64
|
+
},
|
|
65
|
+
}, async (params) => {
|
|
66
|
+
try {
|
|
67
|
+
const { action } = params;
|
|
68
|
+
switch (action) {
|
|
69
|
+
case "deep": {
|
|
70
|
+
const parsed = deepSchema.safeParse(params);
|
|
71
|
+
if (!parsed.success) {
|
|
72
|
+
return formatStructuredError("Invalid input for deep verification.", parsed.error.issues.map((e) => e.message).join("; "), "Provide repoUrl, taskRequirements, and optionally taskId.", true);
|
|
73
|
+
}
|
|
74
|
+
const { repoUrl, taskRequirements, verificationLevel, taskId } = parsed.data;
|
|
75
|
+
const { verifyProject } = await import("../lib/verify.js");
|
|
76
|
+
const result = await verifyProject(repoUrl, taskRequirements, verificationLevel);
|
|
77
|
+
if (taskId)
|
|
78
|
+
verificationResults.set(taskId, result);
|
|
79
|
+
return formatReadResult({
|
|
80
|
+
repoUrl,
|
|
81
|
+
taskId: taskId || "not linked",
|
|
82
|
+
verificationLevel,
|
|
83
|
+
score: result.score,
|
|
84
|
+
verdict: result.verdict,
|
|
85
|
+
summary: result.summary,
|
|
86
|
+
checks: result.checks.map((c) => `${c.dimension}: ${c.score}/100 ${c.passed ? "PASS" : "FAIL"}${c.issues.length > 0 ? ` — ${c.issues.join("; ")}` : ""}`),
|
|
87
|
+
recommendations: result.recommendations,
|
|
88
|
+
evidenceHash: result.evidenceHash,
|
|
89
|
+
}, `Deep Verification ${result.verdict.toUpperCase()} — Score: ${result.score}/100`);
|
|
90
|
+
}
|
|
91
|
+
case "capability": {
|
|
92
|
+
const parsed = capabilitySchema.safeParse(params);
|
|
93
|
+
if (!parsed.success) {
|
|
94
|
+
return formatStructuredError("Invalid input for capability verification.", parsed.error.issues.map((e) => e.message).join("; "), "Provide agentAddress, capability, proofData, and publicInputs.", true);
|
|
95
|
+
}
|
|
96
|
+
const { agentAddress, capability, proofData, publicInputs } = parsed.data;
|
|
97
|
+
const result = await readContract(CONTRACTS.CapabilityVerifier, CapabilityVerifierAbi, "verifyCapabilityProof", [agentAddress, capability, proofData, publicInputs]);
|
|
98
|
+
return formatReadResult({
|
|
99
|
+
agentAddress,
|
|
100
|
+
capability,
|
|
101
|
+
verified: !!result,
|
|
102
|
+
}, `Capability Verification: ${capability} for ${agentAddress}`);
|
|
103
|
+
}
|
|
104
|
+
case "reputation": {
|
|
105
|
+
const parsed = reputationSchema.safeParse(params);
|
|
106
|
+
if (!parsed.success) {
|
|
107
|
+
return formatStructuredError("Invalid input for reputation verification.", parsed.error.issues.map((e) => e.message).join("; "), "Provide agentAddress, minReputation, proofData, and publicInputs.", true);
|
|
108
|
+
}
|
|
109
|
+
const { agentAddress, minReputation, proofData, publicInputs } = parsed.data;
|
|
110
|
+
const result = await readContract(CONTRACTS.ReputationVerifier, ReputationVerifierAbi, "verifyReputationProof", [agentAddress, minReputation, proofData, publicInputs]);
|
|
111
|
+
return formatReadResult({
|
|
112
|
+
agentAddress,
|
|
113
|
+
minReputation,
|
|
114
|
+
verified: !!result,
|
|
115
|
+
}, `Reputation Verification: >=${minReputation} for ${agentAddress}`);
|
|
116
|
+
}
|
|
117
|
+
case "result": {
|
|
118
|
+
const parsed = resultSchema.safeParse(params);
|
|
119
|
+
if (!parsed.success) {
|
|
120
|
+
return formatStructuredError("Invalid input for result lookup.", parsed.error.issues.map((e) => e.message).join("; "), "Provide taskId.", true);
|
|
121
|
+
}
|
|
122
|
+
const { taskId } = parsed.data;
|
|
123
|
+
const result = verificationResults.get(taskId);
|
|
124
|
+
if (!result) {
|
|
125
|
+
return formatReadResult({ taskId, status: "not_found", message: `No verification result for task #${taskId}. Run 'deep' action first.` }, `Verification for Task #${taskId}`);
|
|
126
|
+
}
|
|
127
|
+
return formatReadResult({
|
|
128
|
+
taskId,
|
|
129
|
+
score: result.score,
|
|
130
|
+
verdict: result.verdict,
|
|
131
|
+
summary: result.summary,
|
|
132
|
+
checks: result.checks.map((c) => `${c.dimension}: ${c.score}/100 ${c.passed ? "PASS" : "FAIL"}${c.issues.length > 0 ? ` — ${c.issues.join("; ")}` : ""}`),
|
|
133
|
+
recommendations: result.recommendations,
|
|
134
|
+
evidenceHash: result.evidenceHash,
|
|
135
|
+
repoUrl: result.repoUrl,
|
|
136
|
+
verifiedAt: new Date(result.timestamp).toISOString(),
|
|
137
|
+
}, `Verification for Task #${taskId} — Score: ${result.score}/100 ${result.verdict}`);
|
|
138
|
+
}
|
|
139
|
+
default:
|
|
140
|
+
return formatStructuredError(`Unknown action: ${action}`, "Valid actions: deep, capability, reputation, result", "Pass action as one of: deep, capability, reputation, result.", true);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (e) {
|
|
144
|
+
const parsed = parseContractError(e);
|
|
145
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=corven-verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-verify.js","sourceRoot":"","sources":["../../src/tools/corven-verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-wallet.d.ts","sourceRoot":"","sources":["../../src/tools/corven-wallet.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkHzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsI3D"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* corven_wallet — Smart wallet (ERC-4337)
|
|
3
|
+
*
|
|
4
|
+
* Consolidates: corven_create_smart_wallet, corven_get_smart_wallet,
|
|
5
|
+
* corven_set_spending_limit, corven_set_recipient,
|
|
6
|
+
* corven_emergency_pause
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { parseEther, formatEther } from "viem";
|
|
10
|
+
import { getAccount, getWalletClient, getPublicClient, getExplorerTxUrl } from "../config.js";
|
|
11
|
+
import { formatReadResult } from "../handlers/transactions.js";
|
|
12
|
+
import { formatSuccess, formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
const AgentSmartWalletAbi = [
|
|
16
|
+
{ type: "constructor", inputs: [
|
|
17
|
+
{ name: "_controller", type: "address" },
|
|
18
|
+
{ name: "_dailyLimit", type: "uint256" },
|
|
19
|
+
{ name: "_perTxLimit", type: "uint256" },
|
|
20
|
+
], stateMutability: "nonpayable" },
|
|
21
|
+
{ type: "receive", stateMutability: "payable" },
|
|
22
|
+
{ type: "function", name: "controller", inputs: [], outputs: [{ type: "address" }], stateMutability: "view" },
|
|
23
|
+
{ type: "function", name: "dailyLimit", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
24
|
+
{ type: "function", name: "perTxLimit", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
25
|
+
{ type: "function", name: "dailySpent", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
26
|
+
{ type: "function", name: "lastResetDay", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
27
|
+
{ type: "function", name: "paused", inputs: [], outputs: [{ type: "bool" }], stateMutability: "view" },
|
|
28
|
+
{ type: "function", name: "allowedRecipients", inputs: [{ name: "", type: "address" }], outputs: [{ type: "bool" }], stateMutability: "view" },
|
|
29
|
+
{ type: "function", name: "owner", inputs: [], outputs: [{ type: "address" }], stateMutability: "view" },
|
|
30
|
+
{ type: "function", name: "getRemainingDailyAllowance", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
31
|
+
{ type: "function", name: "getBalance", inputs: [], outputs: [{ type: "uint256" }], stateMutability: "view" },
|
|
32
|
+
{ type: "function", name: "execute", inputs: [
|
|
33
|
+
{ name: "to", type: "address" },
|
|
34
|
+
{ name: "value", type: "uint256" },
|
|
35
|
+
{ name: "data", type: "bytes" },
|
|
36
|
+
], outputs: [{ name: "result", type: "bytes" }], stateMutability: "nonpayable" },
|
|
37
|
+
{ type: "function", name: "setDailyLimit", inputs: [{ name: "_limit", type: "uint256" }], outputs: [], stateMutability: "nonpayable" },
|
|
38
|
+
{ type: "function", name: "setPerTxLimit", inputs: [{ name: "_limit", type: "uint256" }], outputs: [], stateMutability: "nonpayable" },
|
|
39
|
+
{ type: "function", name: "setRecipient", inputs: [
|
|
40
|
+
{ name: "_recipient", type: "address" },
|
|
41
|
+
{ name: "_allowed", type: "bool" },
|
|
42
|
+
], outputs: [], stateMutability: "nonpayable" },
|
|
43
|
+
{ type: "function", name: "setPaused", inputs: [{ name: "_paused", type: "bool" }], outputs: [], stateMutability: "nonpayable" },
|
|
44
|
+
];
|
|
45
|
+
function loadSmartWalletBytecode() {
|
|
46
|
+
const candidates = [
|
|
47
|
+
path.resolve(process.cwd(), "../contracts/artifacts/contracts/v2/core/AgentSmartWallet.sol/AgentSmartWallet.json"),
|
|
48
|
+
path.resolve(process.cwd(), "contracts/artifacts/contracts/v2/core/AgentSmartWallet.sol/AgentSmartWallet.json"),
|
|
49
|
+
];
|
|
50
|
+
for (const artifactPath of candidates) {
|
|
51
|
+
if (fs.existsSync(artifactPath)) {
|
|
52
|
+
const artifact = JSON.parse(fs.readFileSync(artifactPath, "utf-8"));
|
|
53
|
+
return artifact.bytecode;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
throw new Error("AgentSmartWallet artifact not found. Run: cd contracts && npx hardhat compile");
|
|
57
|
+
}
|
|
58
|
+
async function deploySmartWallet(controller, dailyLimitWei, perTxLimitWei) {
|
|
59
|
+
const wallet = getWalletClient();
|
|
60
|
+
const publicClient = getPublicClient();
|
|
61
|
+
const account = getAccount();
|
|
62
|
+
if (!wallet || !account) {
|
|
63
|
+
return { status: "error", error: "No wallet client available. Set PRIVATE_KEY and COVENANT_WALLET_MODE=autonomous." };
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
const bytecode = loadSmartWalletBytecode();
|
|
67
|
+
const hash = await wallet.deployContract({
|
|
68
|
+
abi: AgentSmartWalletAbi, bytecode, args: [controller, dailyLimitWei, perTxLimitWei], account,
|
|
69
|
+
});
|
|
70
|
+
console.error(`[TX] Deploy AgentSmartWallet: ${hash}`);
|
|
71
|
+
console.error(`[TX] Explorer: ${getExplorerTxUrl(hash)}`);
|
|
72
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash, timeout: 60_000 });
|
|
73
|
+
return { status: "success", txHash: hash, blockNumber: receipt.blockNumber, gasUsed: receipt.gasUsed };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return { status: "error", error: (error?.message || String(error)).slice(0, 500) };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function executeWalletWrite(walletAddress, functionName, args) {
|
|
80
|
+
const wallet = getWalletClient();
|
|
81
|
+
const publicClient = getPublicClient();
|
|
82
|
+
const account = getAccount();
|
|
83
|
+
if (!wallet || !account) {
|
|
84
|
+
return { status: "error", error: "No wallet client available. Set PRIVATE_KEY and COVENANT_WALLET_MODE=autonomous." };
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const { request } = await publicClient.simulateContract({
|
|
88
|
+
address: walletAddress, abi: AgentSmartWalletAbi, functionName, args: args, account,
|
|
89
|
+
});
|
|
90
|
+
const hash = await wallet.writeContract(request);
|
|
91
|
+
console.error(`[TX] ${functionName}: ${hash}`);
|
|
92
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash, timeout: 60_000 });
|
|
93
|
+
return { status: "success", txHash: hash, blockNumber: receipt.blockNumber, gasUsed: receipt.gasUsed };
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
const msg = error?.message || String(error);
|
|
97
|
+
const revertMatch = msg.match(/revert(?:ed| reason)?\s*:?\s*"?([^"\n]+)"?/i);
|
|
98
|
+
return { status: "error", error: revertMatch ? `Transaction reverted: ${revertMatch[1]}` : msg.slice(0, 500), reason: msg };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function txErrorMessage(result) {
|
|
102
|
+
if (result.status === "error")
|
|
103
|
+
return result.error;
|
|
104
|
+
if (result.status === "prepared")
|
|
105
|
+
return "Transaction prepared but not sent (prepare-only mode).";
|
|
106
|
+
return "Unknown error.";
|
|
107
|
+
}
|
|
108
|
+
const actionSchema = z.enum([
|
|
109
|
+
"create", "get", "limit", "recipient", "pause",
|
|
110
|
+
]);
|
|
111
|
+
const schema = z.object({
|
|
112
|
+
action: actionSchema,
|
|
113
|
+
walletAddress: z.string().optional(),
|
|
114
|
+
controller: z.string().optional(),
|
|
115
|
+
dailyLimit: z.string().optional(),
|
|
116
|
+
perTxLimit: z.string().optional(),
|
|
117
|
+
recipient: z.string().optional(),
|
|
118
|
+
allowed: z.boolean().optional(),
|
|
119
|
+
paused: z.boolean().optional(),
|
|
120
|
+
});
|
|
121
|
+
export function registerWalletTools(server) {
|
|
122
|
+
server.registerTool("corven_wallet", {
|
|
123
|
+
title: "Smart Wallet Manager",
|
|
124
|
+
description: "Programmable ERC-4337 smart wallet with spending limits and whitelists.\n\n" +
|
|
125
|
+
"ACTIONS:\n" +
|
|
126
|
+
" create — Deploy a new smart wallet (requires controller, dailyLimit, perTxLimit)\n" +
|
|
127
|
+
" get — Get wallet details and limits (requires walletAddress)\n" +
|
|
128
|
+
" limit — Set spending limits (requires walletAddress, dailyLimit and/or perTxLimit)\n" +
|
|
129
|
+
" recipient — Manage recipient whitelist (requires walletAddress, recipient, allowed)\n" +
|
|
130
|
+
" pause — Emergency pause/unpause (requires walletAddress, paused)\n\n" +
|
|
131
|
+
"WORKFLOW: create → limit (set guardrails) → recipient (whitelist targets) → agent executes within limits\n" +
|
|
132
|
+
"NOTE: Only the controller (human) can set limits, manage whitelist, and pause. The agent (owner) executes within constraints.",
|
|
133
|
+
inputSchema: schema.shape,
|
|
134
|
+
}, async (args) => {
|
|
135
|
+
try {
|
|
136
|
+
const { action } = args;
|
|
137
|
+
if (action === "create") {
|
|
138
|
+
if (!args.controller || !args.dailyLimit || !args.perTxLimit) {
|
|
139
|
+
return formatStructuredError("Missing required fields.", "create requires controller, dailyLimit, and perTxLimit.", "Provide all three parameters.", false);
|
|
140
|
+
}
|
|
141
|
+
const account = getAccount();
|
|
142
|
+
if (!account) {
|
|
143
|
+
return formatStructuredError("No private key configured.", "PRIVATE_KEY not set.", "Set PRIVATE_KEY in .env.", false);
|
|
144
|
+
}
|
|
145
|
+
const dailyLimitWei = parseEther(args.dailyLimit);
|
|
146
|
+
const perTxLimitWei = parseEther(args.perTxLimit);
|
|
147
|
+
const result = await deploySmartWallet(args.controller, dailyLimitWei, perTxLimitWei);
|
|
148
|
+
if (result.status === "success") {
|
|
149
|
+
const publicClient = getPublicClient();
|
|
150
|
+
const receipt = await publicClient.getTransactionReceipt({ hash: result.txHash });
|
|
151
|
+
return formatSuccess("AgentSmartWallet deployed. Agent = owner, human = controller.", { walletAddress: receipt.contractAddress || "Check Basescan", owner: account.address, controller: args.controller, dailyLimit: `${args.dailyLimit} ETH`, perTxLimit: `${args.perTxLimit} ETH` }, result.txHash, ["Call corven_wallet({ action: 'recipient', walletAddress, recipient, allowed: true }) to whitelist payment targets.", "Call corven_wallet({ action: 'limit', walletAddress, dailyLimit, perTxLimit }) to adjust limits."]);
|
|
152
|
+
}
|
|
153
|
+
return { content: [{ type: "text", text: `Deployment failed: ${txErrorMessage(result)}` }], isError: true };
|
|
154
|
+
}
|
|
155
|
+
if (action === "get") {
|
|
156
|
+
if (!args.walletAddress) {
|
|
157
|
+
return formatStructuredError("Missing required field.", "get requires walletAddress.", "Provide the wallet address.", false);
|
|
158
|
+
}
|
|
159
|
+
const publicClient = getPublicClient();
|
|
160
|
+
const addr = args.walletAddress;
|
|
161
|
+
const [owner, controller, dailyLimit, perTxLimit, dailySpent, lastResetDay, paused, balance, remainingAllowance] = await Promise.all([
|
|
162
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "owner" }),
|
|
163
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "controller" }),
|
|
164
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "dailyLimit" }),
|
|
165
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "perTxLimit" }),
|
|
166
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "dailySpent" }),
|
|
167
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "lastResetDay" }),
|
|
168
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "paused" }),
|
|
169
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "getBalance" }),
|
|
170
|
+
publicClient.readContract({ address: addr, abi: AgentSmartWalletAbi, functionName: "getRemainingDailyAllowance" }),
|
|
171
|
+
]);
|
|
172
|
+
return formatReadResult({
|
|
173
|
+
walletAddress: args.walletAddress, owner, controller,
|
|
174
|
+
dailyLimit: formatEther(dailyLimit) + " ETH",
|
|
175
|
+
perTxLimit: formatEther(perTxLimit) + " ETH",
|
|
176
|
+
dailySpent: formatEther(dailySpent) + " ETH",
|
|
177
|
+
remainingDailyAllowance: formatEther(remainingAllowance) + " ETH",
|
|
178
|
+
lastResetDay: Number(lastResetDay),
|
|
179
|
+
paused: paused ? "YES" : "NO",
|
|
180
|
+
balance: formatEther(balance) + " ETH",
|
|
181
|
+
}, `Smart Wallet`);
|
|
182
|
+
}
|
|
183
|
+
if (action === "limit") {
|
|
184
|
+
if (!args.walletAddress) {
|
|
185
|
+
return formatStructuredError("Missing required field.", "limit requires walletAddress.", "Provide the wallet address.", false);
|
|
186
|
+
}
|
|
187
|
+
if (!args.dailyLimit && !args.perTxLimit) {
|
|
188
|
+
return formatStructuredError("No limits provided.", "At least one of dailyLimit or perTxLimit must be specified.", "Provide at least one limit.", false);
|
|
189
|
+
}
|
|
190
|
+
const results = [];
|
|
191
|
+
if (args.dailyLimit) {
|
|
192
|
+
const result = await executeWalletWrite(args.walletAddress, "setDailyLimit", [parseEther(args.dailyLimit)]);
|
|
193
|
+
if (result.status === "success")
|
|
194
|
+
results.push(`Daily limit set to ${args.dailyLimit} ETH`);
|
|
195
|
+
else
|
|
196
|
+
return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown"}` }], isError: true };
|
|
197
|
+
}
|
|
198
|
+
if (args.perTxLimit) {
|
|
199
|
+
const result = await executeWalletWrite(args.walletAddress, "setPerTxLimit", [parseEther(args.perTxLimit)]);
|
|
200
|
+
if (result.status === "success")
|
|
201
|
+
results.push(`Per-tx limit set to ${args.perTxLimit} ETH`);
|
|
202
|
+
else
|
|
203
|
+
return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown"}` }], isError: true };
|
|
204
|
+
}
|
|
205
|
+
return formatSuccess("Spending limits updated.", { walletAddress: args.walletAddress, ...(args.dailyLimit && { dailyLimit: `${args.dailyLimit} ETH` }), ...(args.perTxLimit && { perTxLimit: `${args.perTxLimit} ETH` }), changes: results });
|
|
206
|
+
}
|
|
207
|
+
if (action === "recipient") {
|
|
208
|
+
if (!args.walletAddress || !args.recipient || args.allowed === undefined) {
|
|
209
|
+
return formatStructuredError("Missing required fields.", "recipient requires walletAddress, recipient, and allowed.", "Provide all three parameters.", false);
|
|
210
|
+
}
|
|
211
|
+
const result = await executeWalletWrite(args.walletAddress, "setRecipient", [args.recipient, args.allowed]);
|
|
212
|
+
if (result.status === "success") {
|
|
213
|
+
return formatSuccess(`Recipient ${args.allowed ? "whitelisted" : "removed"}.`, { walletAddress: args.walletAddress, recipient: args.recipient, allowed: args.allowed ? "WHITELISTED" : "REMOVED" }, result.txHash);
|
|
214
|
+
}
|
|
215
|
+
return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown"}` }], isError: true };
|
|
216
|
+
}
|
|
217
|
+
if (action === "pause") {
|
|
218
|
+
if (!args.walletAddress || args.paused === undefined) {
|
|
219
|
+
return formatStructuredError("Missing required fields.", "pause requires walletAddress and paused.", "Provide both parameters.", false);
|
|
220
|
+
}
|
|
221
|
+
const result = await executeWalletWrite(args.walletAddress, "setPaused", [args.paused]);
|
|
222
|
+
if (result.status === "success") {
|
|
223
|
+
return formatSuccess(args.paused ? "Wallet PAUSED. All outbound transfers frozen." : "Wallet UNPAUSED. Agent can resume transactions.", { walletAddress: args.walletAddress, status: args.paused ? "PAUSED" : "ACTIVE" }, result.txHash);
|
|
224
|
+
}
|
|
225
|
+
return { content: [{ type: "text", text: `Failed: ${result.status === "error" ? result.error : "unknown"}` }], isError: true };
|
|
226
|
+
}
|
|
227
|
+
return formatReadResult({ error: "Unknown action" }, "Error");
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
const parsed = parseContractError(e);
|
|
231
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=corven-wallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corven-wallet.js","sourceRoot":"","sources":["../../src/tools/corven-wallet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAgB,MAAM,MAAM,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGpG,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,mBAAmB,GAAG;IAC1B,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE;YAC7B,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;YACxC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;YACxC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;SACzC,EAAE,eAAe,EAAE,YAAY,EAAE;IAClC,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE;IAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC/G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IACtG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC9I,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IACxG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7H,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;YAC3C,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;YAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;SAChC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE;IAChF,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;IACtI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;IACtI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE;YAChD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;YACvC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;SACnC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;IAC/C,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;CACxH,CAAC;AAEX,SAAS,uBAAuB;IAC9B,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,qFAAqF,CAAC;QAClH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kFAAkF,CAAC;KAChH,CAAC;IACF,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;AACnG,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAmB,EAAE,aAAqB,EAAE,aAAqB;IAChG,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,kFAAkF,EAAE,CAAC;IACxH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,uBAAuB,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;YACvC,GAAG,EAAE,mBAA0B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO;SACrG,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,kBAAkB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACzG,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,aAAsB,EAAE,YAAoB,EAAE,IAAwB;IACtG,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,kFAAkF,EAAE,CAAC;IACxH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAAC;YACtD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,IAAI,EAAE,IAAW,EAAE,OAAO;SAClG,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,QAAQ,YAAY,KAAK,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;IACzG,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,yBAAyB,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC9H,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAgB;IACtC,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,wDAAwD,CAAC;IAClG,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IAC1B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO;CAC/C,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,6EAA6E;YAC7E,YAAY;YACZ,sFAAsF;YACtF,kEAAkE;YAClE,wFAAwF;YACxF,yFAAyF;YACzF,wEAAwE;YACxE,4GAA4G;YAC5G,+HAA+H;QACjI,WAAW,EAAE,MAAM,CAAC,KAAK;KAC1B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC7D,OAAO,qBAAqB,CAAC,0BAA0B,EAAE,yDAAyD,EAAE,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBAC9J,CAAC;gBACD,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,qBAAqB,CAAC,4BAA4B,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;gBACxH,CAAC;gBACD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClD,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAElD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAqB,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;gBACjG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;oBACvC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAClF,OAAO,aAAa,CAClB,+DAA+D,EAC/D,EAAE,aAAa,EAAE,OAAO,CAAC,eAAe,IAAI,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,EAAE,EAC/L,MAAM,CAAC,MAAM,EACb,CAAC,oHAAoH,EAAE,kGAAkG,CAAC,CAC3N,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACvH,CAAC;YAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,OAAO,qBAAqB,CAAC,yBAAyB,EAAE,6BAA6B,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBAC/H,CAAC;gBACD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;gBACvC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAwB,CAAC;gBAC3C,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,GAC9G,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;oBACpG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;oBACzG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;oBACzG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;oBACzG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;oBACzG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;oBAC3G,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;oBACrG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;oBACzG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,mBAA0B,EAAE,YAAY,EAAE,4BAA4B,EAAE,CAAC;iBAC1H,CAAC,CAAC;gBACL,OAAO,gBAAgB,CAAC;oBACtB,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,UAAU;oBACpD,UAAU,EAAE,WAAW,CAAC,UAAoB,CAAC,GAAG,MAAM;oBACtD,UAAU,EAAE,WAAW,CAAC,UAAoB,CAAC,GAAG,MAAM;oBACtD,UAAU,EAAE,WAAW,CAAC,UAAoB,CAAC,GAAG,MAAM;oBACtD,uBAAuB,EAAE,WAAW,CAAC,kBAA4B,CAAC,GAAG,MAAM;oBAC3E,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC;oBAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;oBAC7B,OAAO,EAAE,WAAW,CAAC,OAAiB,CAAC,GAAG,MAAM;iBACjD,EAAE,cAAc,CAAC,CAAC;YACrB,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxB,OAAO,qBAAqB,CAAC,yBAAyB,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACjI,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACzC,OAAO,qBAAqB,CAAC,qBAAqB,EAAE,6DAA6D,EAAE,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBAC3J,CAAC;gBACD,MAAM,OAAO,GAAa,EAAE,CAAC;gBAC7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAwB,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACvH,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC;;wBACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC/I,CAAC;gBACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAwB,EAAE,eAAe,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACvH,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;wBAAE,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC;;wBACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC/I,CAAC;gBACD,OAAO,aAAa,CAAC,0BAA0B,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YAChP,CAAC;YAED,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACzE,OAAO,qBAAqB,CAAC,0BAA0B,EAAE,2DAA2D,EAAE,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBAChK,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAwB,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,SAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAClI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,aAAa,CAClB,aAAa,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,GAAG,EACxD,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,EAAE,EACnH,MAAM,CAAC,MAAM,CACd,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC1I,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrD,OAAO,qBAAqB,CAAC,0BAA0B,EAAE,0CAA0C,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;gBAC1I,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAwB,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,aAAa,CAClB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,iDAAiD,EACjH,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EAChF,MAAM,CAAC,MAAM,CACd,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC1I,CAAC;YAED,OAAO,gBAAgB,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACrC,OAAO,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"covenant-help.d.ts","sourceRoot":"","sources":["../../src/tools/covenant-help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"covenant-help.d.ts","sourceRoot":"","sources":["../../src/tools/covenant-help.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6GjE"}
|