@agenticprimitives/a2a 0.0.0-alpha.4 → 0.0.0-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CLAUDE.md +60 -21
  2. package/README.md +2 -0
  3. package/bin/a2a-conform.mjs +17 -0
  4. package/dist/agent.d.ts +170 -3
  5. package/dist/agent.d.ts.map +1 -1
  6. package/dist/agent.js +358 -66
  7. package/dist/agent.js.map +1 -1
  8. package/dist/auth.d.ts +72 -9
  9. package/dist/auth.d.ts.map +1 -1
  10. package/dist/auth.js +62 -19
  11. package/dist/auth.js.map +1 -1
  12. package/dist/authority-extension.d.ts +58 -0
  13. package/dist/authority-extension.d.ts.map +1 -0
  14. package/dist/authority-extension.js +70 -0
  15. package/dist/authority-extension.js.map +1 -0
  16. package/dist/card-audience.d.ts +87 -0
  17. package/dist/card-audience.d.ts.map +1 -0
  18. package/dist/card-audience.js +135 -0
  19. package/dist/card-audience.js.map +1 -0
  20. package/dist/client.d.ts +23 -8
  21. package/dist/client.d.ts.map +1 -1
  22. package/dist/client.js +74 -13
  23. package/dist/client.js.map +1 -1
  24. package/dist/cloudflare/index.d.ts.map +1 -1
  25. package/dist/cloudflare/index.js +10 -2
  26. package/dist/cloudflare/index.js.map +1 -1
  27. package/dist/conform/index.d.ts +36 -0
  28. package/dist/conform/index.d.ts.map +1 -0
  29. package/dist/conform/index.js +232 -0
  30. package/dist/conform/index.js.map +1 -0
  31. package/dist/discovery.d.ts +4 -0
  32. package/dist/discovery.d.ts.map +1 -1
  33. package/dist/discovery.js +6 -2
  34. package/dist/discovery.js.map +1 -1
  35. package/dist/engagement.d.ts +37 -0
  36. package/dist/engagement.d.ts.map +1 -0
  37. package/dist/engagement.js +83 -0
  38. package/dist/engagement.js.map +1 -0
  39. package/dist/grant.d.ts +4 -2
  40. package/dist/grant.d.ts.map +1 -1
  41. package/dist/grant.js +21 -13
  42. package/dist/grant.js.map +1 -1
  43. package/dist/handoff.d.ts +42 -0
  44. package/dist/handoff.d.ts.map +1 -0
  45. package/dist/handoff.js +28 -0
  46. package/dist/handoff.js.map +1 -0
  47. package/dist/index.d.ts +25 -8
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +23 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/payment-gate.d.ts +17 -2
  52. package/dist/payment-gate.d.ts.map +1 -1
  53. package/dist/payment-gate.js +4 -2
  54. package/dist/payment-gate.js.map +1 -1
  55. package/dist/run-provenance-extension.d.ts +22 -0
  56. package/dist/run-provenance-extension.d.ts.map +1 -0
  57. package/dist/run-provenance-extension.js +23 -0
  58. package/dist/run-provenance-extension.js.map +1 -0
  59. package/dist/runtime.d.ts +13 -1
  60. package/dist/runtime.d.ts.map +1 -1
  61. package/dist/runtime.js +35 -10
  62. package/dist/runtime.js.map +1 -1
  63. package/dist/session-wire.d.ts +90 -0
  64. package/dist/session-wire.d.ts.map +1 -0
  65. package/dist/session-wire.js +226 -0
  66. package/dist/session-wire.js.map +1 -0
  67. package/dist/skill-handler.d.ts +21 -1
  68. package/dist/skill-handler.d.ts.map +1 -1
  69. package/dist/skill-handler.js.map +1 -1
  70. package/dist/standard/app-delegation.d.ts +60 -0
  71. package/dist/standard/app-delegation.d.ts.map +1 -0
  72. package/dist/standard/app-delegation.js +43 -0
  73. package/dist/standard/app-delegation.js.map +1 -0
  74. package/dist/standard/caller.d.ts +107 -0
  75. package/dist/standard/caller.d.ts.map +1 -0
  76. package/dist/standard/caller.js +176 -0
  77. package/dist/standard/caller.js.map +1 -0
  78. package/dist/standard/client.d.ts +53 -0
  79. package/dist/standard/client.d.ts.map +1 -0
  80. package/dist/standard/client.js +88 -0
  81. package/dist/standard/client.js.map +1 -0
  82. package/dist/standard/delegated.d.ts +121 -0
  83. package/dist/standard/delegated.d.ts.map +1 -0
  84. package/dist/standard/delegated.js +170 -0
  85. package/dist/standard/delegated.js.map +1 -0
  86. package/dist/standard/errors.d.ts +31 -0
  87. package/dist/standard/errors.d.ts.map +1 -0
  88. package/dist/standard/errors.js +75 -0
  89. package/dist/standard/errors.js.map +1 -0
  90. package/dist/standard/from-agent.d.ts +41 -0
  91. package/dist/standard/from-agent.d.ts.map +1 -0
  92. package/dist/standard/from-agent.js +133 -0
  93. package/dist/standard/from-agent.js.map +1 -0
  94. package/dist/standard/index.d.ts +10 -0
  95. package/dist/standard/index.d.ts.map +1 -0
  96. package/dist/standard/index.js +14 -0
  97. package/dist/standard/index.js.map +1 -0
  98. package/dist/standard/mount.d.ts +94 -0
  99. package/dist/standard/mount.d.ts.map +1 -0
  100. package/dist/standard/mount.js +186 -0
  101. package/dist/standard/mount.js.map +1 -0
  102. package/dist/standard/server.d.ts +130 -0
  103. package/dist/standard/server.d.ts.map +1 -0
  104. package/dist/standard/server.js +497 -0
  105. package/dist/standard/server.js.map +1 -0
  106. package/dist/standard/types.d.ts +186 -0
  107. package/dist/standard/types.d.ts.map +1 -0
  108. package/dist/standard/types.js +14 -0
  109. package/dist/standard/types.js.map +1 -0
  110. package/dist/subject-ask.d.ts +96 -0
  111. package/dist/subject-ask.d.ts.map +1 -0
  112. package/dist/subject-ask.js +45 -0
  113. package/dist/subject-ask.js.map +1 -0
  114. package/dist/subject-hop.d.ts +117 -0
  115. package/dist/subject-hop.d.ts.map +1 -0
  116. package/dist/subject-hop.js +187 -0
  117. package/dist/subject-hop.js.map +1 -0
  118. package/dist/task-store.d.ts +9 -3
  119. package/dist/task-store.d.ts.map +1 -1
  120. package/dist/task-store.js +12 -6
  121. package/dist/task-store.js.map +1 -1
  122. package/dist/wire-verify.d.ts +35 -0
  123. package/dist/wire-verify.d.ts.map +1 -0
  124. package/dist/wire-verify.js +51 -0
  125. package/dist/wire-verify.js.map +1 -0
  126. package/package.json +35 -12
  127. package/dist/jsonrpc.d.ts +0 -25
  128. package/dist/jsonrpc.d.ts.map +0 -1
  129. package/dist/jsonrpc.js +0 -52
  130. package/dist/jsonrpc.js.map +0 -1
package/dist/agent.js CHANGED
@@ -7,18 +7,157 @@ import { hashDelegation } from '@agenticprimitives/delegation';
7
7
  import { isTerminal } from './types.js';
8
8
  import { newTaskRecord, applyTransition, dispatchTask } from './runtime.js';
9
9
  import { buildSkillRegistry } from './skill-handler.js';
10
- import { authorizeA2aMessage } from './auth.js';
10
+ import { authorizeA2aMessage, hashA2aMessage, hashA2aTaskRequest, hashPushConfigParams, hashArtifactParams } from './auth.js';
11
+ // Spec 303 W3 — the A2A verification-receipt mint point. The primitive (commitment
12
+ // profile, canonical receiptHash, injected signing) lives in the leaf package; the
13
+ // agent only assembles what the auth gate already computed.
14
+ import { mintVerificationReceipt, } from '@agenticprimitives/verification-receipts';
11
15
  import { deliverPush } from './push.js';
16
+ import { apAuthorityExtension } from './authority-extension.js';
12
17
  import { x402AgentCardExtension } from './payment-gate.js';
18
+ const EXPOSURE_RANK = {
19
+ public: 0,
20
+ authenticated: 1,
21
+ private: 2,
22
+ 'service-only': 3,
23
+ };
24
+ /**
25
+ * Card visibility for one skill. Fail-closed: `service-only` is never carded at any audience, and a
26
+ * `private` skill with no matching requester is visible to nobody.
27
+ *
28
+ * This is DISCLOSURE, not authorization — hiding a skill does not protect it, and showing one does
29
+ * not permit it. The delegation + policy gates run regardless (ADR-0056).
30
+ */
31
+ function isSkillVisible(h, audience, requester) {
32
+ const exposure = h.exposure ?? 'public';
33
+ const ceiling = EXPOSURE_RANK[audience];
34
+ if (EXPOSURE_RANK[exposure] > ceiling)
35
+ return false;
36
+ if (exposure === 'private') {
37
+ return requester !== undefined && (h.audience?.includes(requester) ?? false);
38
+ }
39
+ return true;
40
+ }
13
41
  const RPC_INVALID_REQUEST = -32600;
14
42
  const RPC_UNAUTHORIZED = -32001;
15
43
  const RPC_NOT_FOUND = -32004;
44
+ const RPC_BUDGET_EXHAUSTED = -32005;
16
45
  const eq = (a, b) => a.toLowerCase() === b.toLowerCase();
17
46
  export function createA2aAgent(config) {
18
- const registry = buildSkillRegistry(config.handlers);
47
+ // A2A-5 (seam audit): fail closed at construction — a PRICED handler (declares `payment`) with no
48
+ // `paymentGate` wired would otherwise run for free (the gate is a no-op without a rail). Force the
49
+ // operator to wire the gate rather than silently serve priced skills unpaid.
50
+ const pricedWithoutGate = config.handlers.filter((h) => h.payment).map((h) => h.skill);
51
+ if (pricedWithoutGate.length > 0 && !config.paymentGate) {
52
+ throw new Error(`[a2a] priced skill(s) [${pricedWithoutGate.join(', ')}] registered without a paymentGate — wire ` +
53
+ `config.paymentGate (they would otherwise execute for free), or remove the skill's payment (A2A-5)`);
54
+ }
55
+ const staticRegistry = buildSkillRegistry(config.handlers);
56
+ // Static first, resolver second — a registered handler always wins, so the seam cannot be used to
57
+ // override a skill the integrator declared.
58
+ const registry = {
59
+ get: (skill) => staticRegistry.get(skill) ?? config.resolveHandler?.(skill),
60
+ };
19
61
  const now = () => (config.now ? config.now() : Date.now());
62
+ // NEW-A2A-3: a cryptographically-random 32-byte task id when the integrator doesn't inject one. The
63
+ // previous fallback was a CONSTANT (0x00..01), so every task collided / could be poisoned.
64
+ const defaultTaskId = () => {
65
+ const b = new Uint8Array(32);
66
+ globalThis.crypto.getRandomValues(b);
67
+ return `0x${Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('')}`;
68
+ };
20
69
  let artCounter = 0;
21
70
  const newArtifactId = () => config.newArtifactId ? config.newArtifactId() : (`0x${(++artCounter).toString(16).padStart(64, '0')}`);
71
+ // AUDIT NEW-A2A-2 — the caller of a read/control op MUST prove control of `caller` by signing the
72
+ // request digest. Fail-closed: missing or invalid signature → UNAUTHORIZED, before any party check.
73
+ async function verifyCaller(method, taskId, caller, signature, paramsHash, issuedAt) {
74
+ if (!signature || signature === '0x')
75
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature required' };
76
+ // N-2: when the operator configures a freshness window, the caller MUST stamp `issuedAt` and it must be
77
+ // recent — bounding replay of a captured read/control signature to that window instead of the life of
78
+ // the task. Fail-closed: window configured but no/stale/future issuedAt → reject.
79
+ if (config.callerSigMaxAgeSec !== undefined) {
80
+ const nowSec = Math.floor(now() / 1000);
81
+ if (typeof issuedAt !== 'number' || issuedAt <= 0)
82
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt required (freshness)' };
83
+ if (issuedAt > nowSec + 30)
84
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'issuedAt in the future' };
85
+ if (nowSec - issuedAt > config.callerSigMaxAgeSec)
86
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature expired' };
87
+ }
88
+ // N-1: `paramsHash` binds method-specific params (e.g. the push url/token) into the signed digest so a
89
+ // captured signature can't be replayed with swapped parameters. The agent re-derives it server-side.
90
+ const digest = hashA2aTaskRequest({ method, taskId, agentSA: config.agentSA, chainId: config.chainId, paramsHash, issuedAt });
91
+ let valid = false;
92
+ try {
93
+ valid = await config.checks.verifyCallerSignature(caller, digest, signature);
94
+ }
95
+ catch {
96
+ valid = false;
97
+ }
98
+ if (!valid)
99
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'caller signature invalid' };
100
+ return { ok: true, result: true };
101
+ }
102
+ /** The party test + the transition, shared by the signed and the transport-authenticated entries. */
103
+ async function cancelForParty(rec, caller) {
104
+ if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
105
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
106
+ }
107
+ const t = applyTransition(rec, 'canceled', { now: now() });
108
+ if (!t.ok)
109
+ return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
110
+ await config.taskStore.put(t.record);
111
+ return { ok: true, result: { taskId: rec.task.taskId, state: 'canceled' } };
112
+ }
113
+ // ─── Spec 303 W3 — verification-receipt mint (message/send + resubmit terminals) ───
114
+ // Assembles ONLY values the auth gate already computed: the signed bodyHash IS the
115
+ // exact-arguments binding, hashA2aMessage IS the invocation binding, and the real
116
+ // delegation EIP-712 hash is available here (unlike the MCP path). The coarse public
117
+ // reason mirrors the rpc message the caller sees (the raw auth reason is already
118
+ // suppressed, NEW-A2A-1). Fail posture per receipts.failClosed (spec 291 §5).
119
+ const mintReceipt = async (input) => {
120
+ const rc = config.receipts;
121
+ if (!rc)
122
+ return undefined;
123
+ try {
124
+ const ev = rc.statusEvidence ? await rc.statusEvidence() : undefined;
125
+ const minted = await mintVerificationReceipt({
126
+ verifier: rc.verifier,
127
+ decision: input.decision,
128
+ reasonCode: input.reasonCode,
129
+ principal: input.principal ?? 'unknown',
130
+ toolName: `a2a.${input.message.skill}`,
131
+ argsHash: input.message.bodyHash,
132
+ delegationHash: hashDelegation(input.delegation, config.chainId, config.delegationManager),
133
+ invocationProofHash: hashA2aMessage(input.message),
134
+ scopeDecision: input.scopeDecision,
135
+ status: {
136
+ revocation: input.decision === 'allow' ? 'active' : 'unavailable',
137
+ chainId: config.chainId,
138
+ blockNumber: ev?.blockNumber ?? '0',
139
+ blockHash: ev?.blockHash ?? `0x${'0'.repeat(64)}`,
140
+ },
141
+ verifiedAt: new Date(now()).toISOString(),
142
+ verifierPolicyVersion: rc.policyVersion,
143
+ correlationId: input.message.messageId,
144
+ receiptKey: rc.receiptKey,
145
+ }, rc.sign ? { sign: rc.sign } : undefined);
146
+ await rc.onReceipt(minted, {
147
+ outcome: input.decision,
148
+ messageId: input.message.messageId,
149
+ skill: input.message.skill,
150
+ taskId: input.taskId,
151
+ });
152
+ return minted.receipt;
153
+ }
154
+ catch (e) {
155
+ if (rc.failClosed)
156
+ throw e;
157
+ console.error('[a2a] receipt mint failed (fail-soft):', e);
158
+ return undefined;
159
+ }
160
+ };
22
161
  return {
23
162
  async messageSend(params) {
24
163
  const auth = await authorizeA2aMessage({
@@ -31,36 +170,82 @@ export function createA2aAgent(config) {
31
170
  checks: config.checks,
32
171
  store: config.taskStore,
33
172
  now: now(),
173
+ scopeCovers: config.scopeCovers,
34
174
  });
35
- if (!auth.ok)
36
- return { ok: false, code: RPC_UNAUTHORIZED, message: auth.reason };
37
- // FR-2.2 — body integrity + vault residency: the signed bodyHash must match the input; persist the
38
- // input to THIS agent's vault namespace; the message keeps only the ref + hash.
39
- if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
40
- return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
175
+ // NEW-A2A-1: do NOT surface the raw authorization reason — it's an oracle (reveals delegation
176
+ // revocation / party / method-scope state to an unauthorized caller). Return a generic denial.
177
+ if (!auth.ok) {
178
+ await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation });
179
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' };
180
+ }
181
+ // Spec 290 §6 Stage-3 — reserve the per-SA hard budget AFTER authority (victim-bucket rule §9:
182
+ // verified-identity buckets only post-verify), keyed by the verified principal (= sponsorAgent).
183
+ // Idempotency = the single-use messageId. COMMIT only after the task is durably created; RELEASE on
184
+ // any pre-creation failure so a denied/failed submit never burns budget (the §3 A2A pattern).
185
+ let reservation;
186
+ if (config.budget) {
187
+ reservation = await config.budget.reserve({
188
+ sponsorAgent: auth.principal,
189
+ capabilityId: `a2a.${params.message.skill}`,
190
+ idempotencyKey: params.message.messageId,
191
+ });
192
+ if (!reservation.allowed) {
193
+ await auth.messageIdReservation.release(); // spec 290 §3 — don't burn the nonce on a budget reject
194
+ // Scope DID pass (the auth gate evaluated targets/skill/window) — the budget denied.
195
+ await mintReceipt({ decision: 'deny', reasonCode: 'budget-exhausted', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
196
+ return { ok: false, code: RPC_BUDGET_EXHAUSTED, message: 'budget exhausted' };
197
+ }
198
+ }
199
+ // Spec 290 §3 — release BOTH the in-flight message-id reservation AND the budget on any pre-acceptance
200
+ // failure: a rejected/failed submit must consume neither the single-use nonce nor the budget.
201
+ const release = async () => {
202
+ await auth.messageIdReservation.release();
203
+ if (config.budget && reservation?.reservationId)
204
+ await config.budget.release(reservation.reservationId);
205
+ };
206
+ try {
207
+ // FR-2.2 — body integrity + vault residency: the signed bodyHash must match the input; persist the
208
+ // input to THIS agent's vault namespace; the message keeps only the ref + hash.
209
+ if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
210
+ await release();
211
+ // The presented input diverges from the SIGNED bodyHash — the A2A form of out-of-scope args.
212
+ await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation });
213
+ return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
214
+ }
215
+ const bodyRef = await config.vault.write({
216
+ owner: config.agentSA,
217
+ recordType: `a2a:msg:${params.message.messageId}`,
218
+ data: params.input,
219
+ });
220
+ const message = { ...params.message, bodyRef };
221
+ const taskId = config.newTaskId ? config.newTaskId() : defaultTaskId();
222
+ const record = newTaskRecord({
223
+ taskId,
224
+ principal: auth.principal,
225
+ assignee: config.agentSA,
226
+ sender: params.requester,
227
+ skill: message.skill,
228
+ delegation: params.delegation,
229
+ inbound: message,
230
+ permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
231
+ inputHash: message.bodyHash,
232
+ now: now(),
233
+ });
234
+ const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
235
+ await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
236
+ // Durably created → COMMIT the single-use message-id (permanently consumed) + charge the budget
237
+ // (the over-estimate, if any, is freed). Only now is the authorization truly spent (spec 290 §3).
238
+ await auth.messageIdReservation.commit();
239
+ if (config.budget && reservation?.reservationId)
240
+ await config.budget.commit(reservation.reservationId);
241
+ // Spec 303 W3 — the accept receipt rides the result so the SENDER retains it.
242
+ const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message, delegation: params.delegation, taskId });
243
+ return { ok: true, result: { taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } }; // FR-2.3 — return immediately
244
+ }
245
+ catch (e) {
246
+ await release();
247
+ throw e;
41
248
  }
42
- const bodyRef = await config.vault.write({
43
- owner: config.agentSA,
44
- recordType: `a2a:msg:${params.message.messageId}`,
45
- data: params.input,
46
- });
47
- const message = { ...params.message, bodyRef };
48
- const taskId = config.newTaskId ? config.newTaskId() : (`0x${'00'.repeat(31)}01`);
49
- const record = newTaskRecord({
50
- taskId,
51
- principal: auth.principal,
52
- assignee: config.agentSA,
53
- sender: params.requester,
54
- skill: message.skill,
55
- delegation: params.delegation,
56
- inbound: message,
57
- permissionGrantRef: hashDelegation(params.delegation, config.chainId, config.delegationManager),
58
- inputHash: message.bodyHash,
59
- now: now(),
60
- });
61
- const withPush = params.pushConfig ? { ...record, pushConfig: params.pushConfig } : record;
62
- await config.taskStore.put(withPush); // FR-2.4 — schedule processing (listDue → alarm)
63
- return { ok: true, result: { taskId, state: 'submitted' } }; // FR-2.3 — return immediately
64
249
  },
65
250
  async resubmit(params) {
66
251
  const rec = await config.taskStore.get(params.taskId);
@@ -77,55 +262,122 @@ export function createA2aAgent(config) {
77
262
  const auth = await authorizeA2aMessage({
78
263
  delegation: params.delegation, requester: params.requester, message: params.message,
79
264
  thisAgentSA: config.agentSA, skill: rec.skill, enforcers: config.enforcers,
80
- checks: config.checks, store: config.taskStore, now: now(),
265
+ checks: config.checks, store: config.taskStore, now: now(), scopeCovers: config.scopeCovers,
81
266
  });
82
- if (!auth.ok)
83
- return { ok: false, code: RPC_UNAUTHORIZED, message: auth.reason };
84
- if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
85
- return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
267
+ if (!auth.ok) {
268
+ await mintReceipt({ decision: 'deny', reasonCode: 'unauthorized', scopeDecision: 'not_evaluated', message: params.message, delegation: params.delegation, taskId: params.taskId });
269
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'unauthorized' }; // NEW-A2A-1: generic denial
270
+ }
271
+ // Spec 290 §3 — the resubmit's message-id is now reserved IN-FLIGHT; commit only after the durable
272
+ // put, release on any pre-acceptance rejection so a failed resubmit never burns the fresh nonce.
273
+ try {
274
+ if (!eq(config.hashBody(params.input), params.message.bodyHash)) {
275
+ await auth.messageIdReservation.release();
276
+ await mintReceipt({ decision: 'deny', reasonCode: 'invalid-request', scopeDecision: 'out_of_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
277
+ return { ok: false, code: RPC_INVALID_REQUEST, message: 'input does not match signed bodyHash' };
278
+ }
279
+ const bodyRef = await config.vault.write({
280
+ owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
281
+ });
282
+ const t = applyTransition(rec, 'submitted', { now: now() });
283
+ if (!t.ok) {
284
+ await auth.messageIdReservation.release();
285
+ return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
286
+ }
287
+ // Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
288
+ const updated = {
289
+ ...t.record, delegation: params.delegation,
290
+ task: { ...t.record.task, inputHash: params.message.bodyHash },
291
+ inbound: [...t.record.inbound, { ...params.message, bodyRef }],
292
+ };
293
+ await config.taskStore.put(updated);
294
+ await auth.messageIdReservation.commit(); // durably accepted → the resubmit nonce is consumed
295
+ const receipt = await mintReceipt({ decision: 'allow', reasonCode: 'verified', scopeDecision: 'in_scope', principal: auth.principal, message: params.message, delegation: params.delegation, taskId: params.taskId });
296
+ return { ok: true, result: { taskId: params.taskId, state: 'submitted', ...(receipt ? { receipt } : {}) } };
297
+ }
298
+ catch (e) {
299
+ await auth.messageIdReservation.release();
300
+ throw e;
86
301
  }
87
- const bodyRef = await config.vault.write({
88
- owner: config.agentSA, recordType: `a2a:msg:${params.message.messageId}`, data: params.input,
89
- });
90
- const t = applyTransition(rec, 'submitted', { now: now() });
91
- if (!t.ok)
92
- return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
93
- // Replace the grant + append the fresh message (processDue reads the LATEST inbound body).
94
- const updated = {
95
- ...t.record, delegation: params.delegation,
96
- task: { ...t.record.task, inputHash: params.message.bodyHash },
97
- inbound: [...t.record.inbound, { ...params.message, bodyRef }],
98
- };
99
- await config.taskStore.put(updated);
100
- return { ok: true, result: { taskId: params.taskId, state: 'submitted' } };
101
302
  },
102
- async tasksGet({ taskId, caller }) {
303
+ async tasksGet({ taskId, caller, signature, issuedAt }) {
103
304
  const rec = await config.taskStore.get(taskId);
104
305
  if (!rec)
105
306
  return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
307
+ const authd = await verifyCaller('tasks/get', taskId, caller, signature, undefined, issuedAt);
308
+ if (!authd.ok)
309
+ return authd;
106
310
  // Caller must be the sender or the assignee (FR-2 tasks/get auth).
107
311
  if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
108
312
  return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
109
313
  }
110
314
  return { ok: true, result: { ...rec.task, error: rec.error, artifactRefs: rec.artifacts.map((a) => a.bodyRef) } };
111
315
  },
112
- async tasksCancel({ taskId, caller }) {
316
+ async tasksArtifact({ taskId, artifactId, caller, signature, issuedAt }) {
317
+ const rec = await config.taskStore.get(taskId);
318
+ if (!rec)
319
+ return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
320
+ const authd = await verifyCaller('tasks/artifact', taskId, caller, signature, hashArtifactParams(artifactId), issuedAt);
321
+ if (!authd.ok)
322
+ return authd;
323
+ // Identical party test to tasks/get — this returns what a party could already see the ref of.
324
+ if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
325
+ return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
326
+ }
327
+ const artifact = rec.artifacts.find((a) => eq(a.artifactId, artifactId));
328
+ // An artifact of ANOTHER task and one that does not exist read the same: a party to task A
329
+ // must not learn which artifact ids exist on task B.
330
+ if (!artifact)
331
+ return { ok: false, code: RPC_NOT_FOUND, message: 'unknown artifact' };
332
+ const body = await config.vault.read(artifact.bodyRef);
333
+ return { ok: true, result: { artifactId: artifact.artifactId, artifactKind: artifact.artifactKind, bodyRef: artifact.bodyRef, body } };
334
+ },
335
+ async tasksCancel({ taskId, caller, signature, issuedAt }) {
336
+ const rec = await config.taskStore.get(taskId);
337
+ if (!rec)
338
+ return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
339
+ const authd = await verifyCaller('tasks/cancel', taskId, caller, signature, undefined, issuedAt);
340
+ if (!authd.ok)
341
+ return authd;
342
+ return cancelForParty(rec, caller);
343
+ },
344
+ /**
345
+ * Cancel for a caller the TRANSPORT already authenticated (spec 372 S4). The party test is unchanged —
346
+ * the sender or the assignee, nobody else. What is absent is the per-request signature, and it is
347
+ * absent because it was already made: on the A2A 1.0 wire the caller proves who they are in the
348
+ * `Authorization` header, over the whole request, before any method runs. Passing an unverified address
349
+ * here would be an authority hole, so this is reachable only from a surface that authenticates.
350
+ */
351
+ async tasksCancelAs({ taskId, caller }) {
352
+ const rec = await config.taskStore.get(taskId);
353
+ if (!rec)
354
+ return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
355
+ return cancelForParty(rec, caller);
356
+ },
357
+ /** The artifact read for a door-authenticated caller — `tasksArtifact` minus the signature the door already
358
+ * verified. Same party test, same "another task's artifact reads as unknown", same vault read. */
359
+ async tasksArtifactAs({ taskId, artifactId, caller }) {
113
360
  const rec = await config.taskStore.get(taskId);
114
361
  if (!rec)
115
362
  return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
116
363
  if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
117
364
  return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
118
365
  }
119
- const t = applyTransition(rec, 'canceled', { now: now() });
120
- if (!t.ok)
121
- return { ok: false, code: RPC_INVALID_REQUEST, message: t.reason };
122
- await config.taskStore.put(t.record);
123
- return { ok: true, result: { taskId, state: 'canceled' } };
366
+ const artifact = rec.artifacts.find((a) => eq(a.artifactId, artifactId));
367
+ if (!artifact)
368
+ return { ok: false, code: RPC_NOT_FOUND, message: 'unknown artifact' };
369
+ const body = await config.vault.read(artifact.bodyRef);
370
+ return { ok: true, result: { artifactId: artifact.artifactId, artifactKind: artifact.artifactKind, bodyRef: artifact.bodyRef, body } };
124
371
  },
125
- async pushConfigSet({ taskId, caller, url, token }) {
372
+ async pushConfigSet({ taskId, caller, signature, url, token, issuedAt }) {
126
373
  const rec = await config.taskStore.get(taskId);
127
374
  if (!rec)
128
375
  return { ok: false, code: RPC_NOT_FOUND, message: 'unknown task' };
376
+ // N-1: bind the presented url + token into the signed digest so the signature authorizes THIS target
377
+ // only — a captured set-signature can't be replayed with an attacker url to hijack the push envelope.
378
+ const authd = await verifyCaller('tasks/pushNotificationConfig/set', taskId, caller, signature, hashPushConfigParams(url, token), issuedAt);
379
+ if (!authd.ok)
380
+ return authd;
129
381
  if (!eq(caller, rec.sender) && !eq(caller, rec.task.assignee)) {
130
382
  return { ok: false, code: RPC_UNAUTHORIZED, message: 'not a party to this task' };
131
383
  }
@@ -136,10 +388,21 @@ export function createA2aAgent(config) {
136
388
  async processDue() {
137
389
  const events = [];
138
390
  const due = await config.taskStore.listDue(now());
391
+ // DIAGNOSTIC: is the task even considered? A task accepted by message/send and never picked up
392
+ // here is indistinguishable, from outside, from one that ran and produced nothing.
393
+ if (due.length)
394
+ console.log('[a2a processDue] due:', due.length, 'agent:', config.agentSA);
139
395
  for (const taskId of due) {
140
396
  const rec = await config.taskStore.get(taskId);
141
- if (!rec || rec.task.state !== 'submitted')
397
+ if (!rec) {
398
+ console.log('[a2a processDue] no record for', taskId);
142
399
  continue;
400
+ }
401
+ if (rec.task.state !== 'submitted') {
402
+ console.log('[a2a processDue] skip', rec.skill, rec.task.state);
403
+ continue;
404
+ }
405
+ console.log('[a2a processDue] dispatching', rec.skill, taskId);
143
406
  // Per-task context: read the input from the vault, persist emitted artifact bodies to the
144
407
  // assignee's vault (A2A-INV-04), expose vault/mcp.
145
408
  const captured = [];
@@ -161,13 +424,14 @@ export function createA2aAgent(config) {
161
424
  disclosurePolicy: a.disclosurePolicy ?? 'private',
162
425
  bodyRef,
163
426
  createdAt: now(),
427
+ ...(a.metadata ? { metadata: a.metadata } : {}),
164
428
  });
165
429
  return artifactId;
166
430
  },
167
431
  });
168
432
  const input = await config.vault.read(rec.inbound[rec.inbound.length - 1].bodyRef);
169
433
  const ctxBase = makeContext(rec);
170
- const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } : undefined);
434
+ const { record: processed, events: evs } = await dispatchTask(rec, registry, () => ({ ...ctxBase, input }), now(), { ...(config.handoffPolicy ? { handoffPolicy: config.handoffPolicy } : {}), paymentGate: config.paymentGate });
171
435
  const merged = { ...processed, artifacts: [...processed.artifacts, ...captured] };
172
436
  await config.taskStore.put(merged);
173
437
  events.push(...evs);
@@ -178,19 +442,47 @@ export function createA2aAgent(config) {
178
442
  }
179
443
  return events;
180
444
  },
181
- agentCard() {
182
- const priced = config.handlers.some((h) => h.payment);
445
+ agentCard(forAudience) {
446
+ // Default to the PUBLIC card. A caller that has not stated an audience has not authenticated
447
+ // anyone, so it must not receive extended content (spec 338 §8).
448
+ const { audience, requester } = forAudience ?? { audience: 'public' };
449
+ const visible = config.handlers.filter((h) => isSkillVisible(h, audience, requester));
450
+ // Only priced skills THIS audience can see may advertise the extension — otherwise the public
451
+ // card leaks the existence of a priced private skill through its capabilities block.
452
+ const priced = visible.some((h) => h.payment);
453
+ // The authority extension is the ONE that is NOT audience-conditional. x402 is hidden from an
454
+ // audience that cannot see the priced skill, because its presence would leak that the skill
455
+ // exists. Authority leaks nothing — it describes how anyone would authenticate to whatever they
456
+ // can already see — and hiding it from the public card would defeat its entire purpose, which is
457
+ // letting an unknown peer discover how to become authorized (spec 341 §2 exit criterion).
458
+ const authority = config.authority ? [apAuthorityExtension(config.authority)] : [];
183
459
  return {
184
460
  name: config.agentSA,
185
461
  url: `/api/a2a`,
186
462
  version: '0.1.0',
463
+ // ADR-0059 — the Card MUST NOT misdescribe the agent. These were hard-coded `true`, which meant
464
+ // an agent with push DISABLED (`signTerminal`/`pushSender` omitted — the documented way to turn
465
+ // it off) still advertised `pushNotifications: true`. A peer would register a webhook against
466
+ // an agent that can never call it, and nothing would report the mismatch: the registration
467
+ // succeeds, the callback simply never arrives.
468
+ //
469
+ // Push is DERIVED because it is knowable here. Streaming is DECLARED because it is not — the
470
+ // SSE transport is mounted by the embedding worker — and it defaults to false, because
471
+ // over-claiming a capability costs more than under-claiming one.
187
472
  capabilities: {
188
- streaming: true,
189
- pushNotifications: true,
190
- stateTransitionHistory: true,
191
- ...(priced ? { extensions: [x402AgentCardExtension()] } : {}),
473
+ streaming: config.declaredCapabilities?.streaming ?? false,
474
+ pushNotifications: Boolean(config.signTerminal && config.pushSender),
475
+ stateTransitionHistory: config.declaredCapabilities?.stateTransitionHistory ?? true,
476
+ ...(authority.length || priced
477
+ ? { extensions: [...authority, ...(priced ? [x402AgentCardExtension()] : [])] }
478
+ : {}),
192
479
  },
193
- skills: config.handlers.map((h) => (h.payment ? { id: h.skill, payment: h.payment } : { id: h.skill })),
480
+ skills: [
481
+ ...visible.map((h) => (h.payment ? { id: h.skill, payment: h.payment } : { id: h.skill })),
482
+ // Dynamic (method-family) skills are advertised only on non-public cards: the family is
483
+ // resolver-driven and its membership is not statically reviewable for exposure.
484
+ ...(audience === 'public' ? [] : (config.dynamicSkills?.() ?? []).map((id) => ({ id }))),
485
+ ],
194
486
  };
195
487
  },
196
488
  };
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,yGAAyG;AACzG,2GAA2G;AAC3G,2GAA2G;AAC3G,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAK/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAuD,MAAM,oBAAoB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EACpF,kBAAkB,EAAwC,MAAM,WAAW,CAAC;AAC9E,mFAAmF;AACnF,mFAAmF;AACnF,4DAA4D;AAC5D,OAAO,EACL,uBAAuB,GAKxB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,WAAW,EAAwC,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAmC,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAuC,MAAM,mBAAmB,CAAC;AA0MhG,MAAM,aAAa,GAA0D;IAC3E,MAAM,EAAE,CAAC;IACT,aAAa,EAAE,CAAC;IAChB,OAAO,EAAE,CAAC;IACV,cAAc,EAAE,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,CAAe,EACf,QAAgD,EAChD,SAAkB;IAElB,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,OAAO;QAAE,OAAO,KAAK,CAAC;IACpD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC;AACnC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC;AAChC,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC;AAC7B,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC;AACpC,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAEzE,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,kGAAkG;IAClG,mGAAmG;IACnG,6EAA6E;IAC7E,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACvF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CACb,0BAA0B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,4CAA4C;YAChG,mGAAmG,CACtG,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,kGAAkG;IAClG,4CAA4C;IAC5C,MAAM,QAAQ,GAAG;QACf,GAAG,EAAE,CAAC,KAAa,EAA4B,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC;KAC9G,CAAC;IACF,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3D,oGAAoG;IACpG,2FAA2F;IAC3F,MAAM,aAAa,GAAG,GAAQ,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC7B,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAS,CAAC;IACtF,CAAC,CAAC;IACF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,aAAa,GAAG,GAAG,EAAE,CACzB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAQ,CAAC;IAEhH,kGAAkG;IAClG,oGAAoG;IACpG,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,MAAW,EAAE,MAAe,EAAE,SAAc,EAAE,UAAgB,EAAE,QAAiB;QAC3H,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QACzH,wGAAwG;QACxG,sGAAsG;QACtG,kFAAkF;QAClF,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC;YAC1I,IAAI,QAAQ,GAAG,MAAM,GAAG,EAAE;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;YAC5G,IAAI,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,kBAAkB;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACvI,CAAC;QACD,uGAAuG;QACvG,qGAAqG;QACrG,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9H,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YAAC,KAAK,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,KAAK,GAAG,KAAK,CAAC;QAAC,CAAC;QAC9G,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QAC9F,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,qGAAqG;IACrG,KAAK,UAAU,cAAc,CAAC,GAAe,EAAE,MAAe;QAC5D,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QAC9E,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,sFAAsF;IACtF,mFAAmF;IACnF,kFAAkF;IAClF,qFAAqF;IACrF,iFAAiF;IACjF,8EAA8E;IAC9E,MAAM,WAAW,GAAG,KAAK,EAAE,KAQ1B,EAA8C,EAAE;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO,SAAS,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C;gBACE,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS;gBACvC,QAAQ,EAAE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;gBACtC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;gBAChC,cAAc,EAAE,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBAC1F,mBAAmB,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClD,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,MAAM,EAAE;oBACN,UAAU,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa;oBACjE,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,WAAW,EAAE,EAAE,EAAE,WAAW,IAAI,GAAG;oBACnC,SAAS,EAAE,EAAE,EAAE,SAAS,IAAK,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAU;iBAC3D;gBACD,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;gBACzC,qBAAqB,EAAE,EAAE,CAAC,aAAa;gBACvC,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBACtC,UAAU,EAAE,EAAE,CAAC,UAAU;aAC1B,EACD,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CACxC,CAAC;YACF,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE;gBACzB,OAAO,EAAE,KAAK,CAAC,QAAQ;gBACvB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBAClC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,EAAE,CAAC,UAAU;gBAAE,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,OAAO;gBAC3B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK,EAAE,MAAM,CAAC,SAAS;gBACvB,GAAG,EAAE,GAAG,EAAE;gBACV,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;YACH,8FAA8F;YAC9F,+FAA+F;YAC/F,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;gBAC5J,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YACxE,CAAC;YAED,+FAA+F;YAC/F,iGAAiG;YACjG,oGAAoG;YACpG,8FAA8F;YAC9F,IAAI,WAAqE,CAAC;YAC1E,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACxC,YAAY,EAAE,IAAI,CAAC,SAAS;oBAC5B,YAAY,EAAE,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;oBAC3C,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;iBACzC,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,wDAAwD;oBACnG,qFAAqF;oBACrF,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;gBAChF,CAAC;YACH,CAAC;YACD,uGAAuG;YACvG,8FAA8F;YAC9F,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACzB,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,aAAa;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC1G,CAAC,CAAC;YAEF,IAAI,CAAC;gBACH,mGAAmG;gBACnG,gFAAgF;gBAChF,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,OAAO,EAAE,CAAC;oBAChB,6FAA6F;oBAC7F,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACzL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;gBACnG,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,MAAM,CAAC,OAAO;oBACrB,UAAU,EAAE,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;oBACjD,IAAI,EAAE,MAAM,CAAC,KAAK;iBACnB,CAAC,CAAC;gBACH,MAAM,OAAO,GAAe,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;gBAE3D,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBACvE,MAAM,MAAM,GAAG,aAAa,CAAC;oBAC3B,MAAM;oBACN,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,MAAM,CAAC,OAAO;oBACxB,MAAM,EAAE,MAAM,CAAC,SAAS;oBACxB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,OAAO,EAAE,OAAO;oBAChB,kBAAkB,EAAE,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,iBAAiB,CAAC;oBAC/F,SAAS,EAAE,OAAO,CAAC,QAAQ;oBAC3B,GAAG,EAAE,GAAG,EAAE;iBACX,CAAC,CAAC;gBACH,MAAM,QAAQ,GAAe,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACvG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,iDAAiD;gBACvF,gGAAgG;gBAChG,kGAAkG;gBAClG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC;gBACzC,IAAI,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,aAAa;oBAAE,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBACvG,8EAA8E;gBAC9E,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;gBACvL,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,8BAA8B;YAC9H,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,OAAO,EAAE,CAAC;gBAChB,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAM;YACnB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,+FAA+F;YAC/F,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,eAAe;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;YAC9H,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;YACtI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;YACjI,iGAAiG;YACjG,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;gBACrC,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;gBACnF,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC1E,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW;aAC5F,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnL,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC,4BAA4B;YACrG,CAAC;YACD,mGAAmG;YACnG,iGAAiG;YACjG,IAAI,CAAC;gBACH,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAChE,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;oBAC1C,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAChN,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;gBACnG,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;oBACvC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK;iBAC7F,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACV,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;oBAC1C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;gBACrE,CAAC;gBACD,2FAA2F;gBAC3F,MAAM,OAAO,GAAe;oBAC1B,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC1C,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC9D,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;iBAC/D,CAAC;gBACF,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC,oDAAoD;gBAC9F,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtN,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9G,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,CAAC,CAAC;YACV,CAAC;QACH,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACpD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC9F,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,mEAAmE;YACnE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACpH,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxH,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,8FAA8F;YAC9F,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACzE,2FAA2F;YAC3F,qDAAqD;YACrD,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACtF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACzI,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;YACvD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED;;;;;;WAMG;QACH,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE;YACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,OAAO,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACrC,CAAC;QAED;2GACmG;QACnG,KAAK,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;YAClD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACtF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QACzI,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;YACrE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;YAC7E,qGAAqG;YACrG,sGAAsG;YACtG,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,kCAAkC,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC5I,IAAI,CAAC,KAAK,CAAC,EAAE;gBAAE,OAAO,KAAK,CAAC;YAC5B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,UAAU,GAAe,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YAChE,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,UAAU;YACd,MAAM,MAAM,GAAgB,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAClD,+FAA+F;YAC/F,mFAAmF;YACnF,IAAI,GAAG,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3F,KAAK,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;oBAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAC9E,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAClH,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAE/D,0FAA0F;gBAC1F,mDAAmD;gBACnD,MAAM,QAAQ,GAAkB,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC;oBACtC,KAAK,EAAE,SAAoB,EAAE,4CAA4C;oBACzE,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,YAAY,EAAE,KAAK,EAAE,CAAiJ,EAAgB,EAAE;wBACtL,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;wBACnC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,gBAAgB,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC5H,QAAQ,CAAC,IAAI,CAAC;4BACZ,UAAU;4BACV,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAQ;4BACnD,QAAQ,EAAE,MAAM,CAAC,OAAO;4BACxB,YAAY,EAAE,CAAC,CAAC,YAAY;4BAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;4BACjC,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,kBAAkB;4BACxD,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,SAAS;4BACjD,OAAO;4BACP,SAAS,EAAE,GAAG,EAAE;4BAChB,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChD,CAAC,CAAC;wBACH,OAAO,UAAU,CAAC;oBACpB,CAAC;iBACF,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC;gBACpF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBACjC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAC3D,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EACnD,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAC9G,CAAC;gBACF,MAAM,MAAM,GAAe,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC9F,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAEpB,+FAA+F;gBAC/F,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBACnG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,SAAS,CAAC,WAAW;YACnB,6FAA6F;YAC7F,iEAAiE;YACjE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,WAAW,IAAI,EAAE,QAAQ,EAAE,QAAiB,EAAE,CAAC;YAE/E,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACtF,8FAA8F;YAC9F,qFAAqF;YACrF,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAE9C,8FAA8F;YAC9F,4FAA4F;YAC5F,gGAAgG;YAChG,iGAAiG;YACjG,0FAA0F;YAC1F,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnF,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,OAAO;gBACpB,GAAG,EAAE,UAAU;gBACf,OAAO,EAAE,OAAO;gBAChB,gGAAgG;gBAChG,gGAAgG;gBAChG,8FAA8F;gBAC9F,2FAA2F;gBAC3F,+CAA+C;gBAC/C,EAAE;gBACF,6FAA6F;gBAC7F,uFAAuF;gBACvF,iEAAiE;gBACjE,YAAY,EAAE;oBACZ,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,IAAI,KAAK;oBAC1D,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,CAAC;oBACpE,sBAAsB,EAAE,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,IAAI,IAAI;oBACnF,GAAG,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM;wBAC5B,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;wBAC/E,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,MAAM,EAAE;oBACN,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC1F,wFAAwF;oBACxF,gFAAgF;oBAChF,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;iBACzF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}