@xfuel/verify 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +62 -17
  2. package/dist/anchor-witness.d.ts +138 -0
  3. package/dist/anchor-witness.d.ts.map +1 -0
  4. package/dist/anchor-witness.js +365 -0
  5. package/dist/anchor-witness.js.map +1 -0
  6. package/dist/base-payer.d.ts +8 -1
  7. package/dist/base-payer.d.ts.map +1 -1
  8. package/dist/base-payer.js +64 -20
  9. package/dist/base-payer.js.map +1 -1
  10. package/dist/canonical-preimage.d.ts +9 -0
  11. package/dist/canonical-preimage.d.ts.map +1 -0
  12. package/dist/canonical-preimage.js +25 -0
  13. package/dist/canonical-preimage.js.map +1 -0
  14. package/dist/cli.d.ts +1 -0
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +424 -25
  17. package/dist/cli.js.map +1 -1
  18. package/dist/head-binding.d.ts +24 -0
  19. package/dist/head-binding.d.ts.map +1 -0
  20. package/dist/head-binding.js +61 -0
  21. package/dist/head-binding.js.map +1 -0
  22. package/dist/index.d.ts +263 -48
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +919 -140
  25. package/dist/index.js.map +1 -1
  26. package/dist/issuer-history.d.ts +91 -0
  27. package/dist/issuer-history.d.ts.map +1 -0
  28. package/dist/issuer-history.js +292 -0
  29. package/dist/issuer-history.js.map +1 -0
  30. package/dist/jcs.d.ts +8 -0
  31. package/dist/jcs.d.ts.map +1 -0
  32. package/dist/jcs.js +64 -0
  33. package/dist/jcs.js.map +1 -0
  34. package/dist/jws.d.ts +23 -0
  35. package/dist/jws.d.ts.map +1 -1
  36. package/dist/jws.js +71 -1
  37. package/dist/jws.js.map +1 -1
  38. package/dist/payer.d.ts +16 -5
  39. package/dist/payer.d.ts.map +1 -1
  40. package/dist/payer.js +38 -26
  41. package/dist/payer.js.map +1 -1
  42. package/dist/preimage.d.ts +49 -0
  43. package/dist/preimage.d.ts.map +1 -0
  44. package/dist/preimage.js +203 -0
  45. package/dist/preimage.js.map +1 -0
  46. package/dist/receipt-lane.d.ts +234 -0
  47. package/dist/receipt-lane.d.ts.map +1 -0
  48. package/dist/receipt-lane.js +443 -0
  49. package/dist/receipt-lane.js.map +1 -0
  50. package/dist/refusal.d.ts +90 -0
  51. package/dist/refusal.d.ts.map +1 -0
  52. package/dist/refusal.js +226 -0
  53. package/dist/refusal.js.map +1 -0
  54. package/package.json +9 -5
package/dist/cli.js CHANGED
@@ -7,6 +7,7 @@
7
7
  * xfuel-verify receipt.json
8
8
  * xfuel-verify receipt.json --check-nullifier
9
9
  * xfuel-verify receipt.json --rpc https://mainnet.base.org
10
+ * xfuel-verify receipt.json inclusion.json head.json --rpc
10
11
  * cat receipt.json | xfuel-verify -
11
12
  *
12
13
  * Exit codes:
@@ -18,44 +19,102 @@
18
19
  Object.defineProperty(exports, "__esModule", { value: true });
19
20
  const node_fs_1 = require("node:fs");
20
21
  const index_js_1 = require("./index.js");
22
+ const anchor_witness_js_1 = require("./anchor-witness.js");
23
+ const preimage_js_1 = require("./preimage.js");
24
+ const issuer_history_js_1 = require("./issuer-history.js");
25
+ const canonical_preimage_js_1 = require("./canonical-preimage.js");
21
26
  const HELP = `
22
27
  xfuel-verify — Offline verification for Chit402 receipts
23
28
 
24
29
  Usage:
25
30
  xfuel-verify <receipt.json> Verify binding locally
31
+ xfuel-verify <refusal.json> Verify a chit402.refusal.v1 document
32
+ (issuer refused; not a payment)
26
33
  xfuel-verify <receipt.json> --jwks-file <jwks.json>
27
- Verify issuer signature with JWKS
28
- xfuel-verify <receipt.json> --check-nullifier
29
- Also verify nullifier on-chain
34
+ Verify issuer signature with a JWKS file
35
+ xfuel-verify <receipt.json> --fetch-jwks
36
+ Fetch JWKS from an allowlisted issuer jwks_uri
37
+ xfuel-verify <receipt.json> --check-payer
38
+ Confirm payer, payee, asset, and amount on-chain
30
39
  xfuel-verify - < receipt.json Read from stdin
31
40
  xfuel-verify --help Show this help
32
41
 
33
42
  Options:
34
- --jwks-file <path> JWKS file for issuer signature verification (no network)
43
+ --jwks-file <path> JWKS file. Keys are trusted and matched by kid (no network)
44
+ --jwks-url <url> Fetch this https JWKS and trust it (explicit; any host)
45
+ --fetch-jwks Fetch receipt verification.jwks_uri when the host is allowlisted
46
+ (default allowlist: api.chit402.com)
47
+ --trusted-kid <kid> Replace the default offline pin with this RFC 7638 kid
48
+ (repeatable). Default pin: ${index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS[0]}
49
+ --no-trusted-kid Do not use the default offline pin (JWKS only)
35
50
  --check-nullifier Query Base RPC for nullifier anchor (requires network)
36
- --check-payer Query Base or Solana RPC to confirm payer_wallet on-chain
51
+ --check-payer Query Base or Solana RPC. Base confirms payer, payee, asset, amount
37
52
  --solana-rpc <url> Solana RPC URL (default: https://api.mainnet-beta.solana.com or SOLANA_RPC_URL)
38
- --rpc <url> Custom RPC URL (default: https://mainnet.base.org)
53
+ --rpc <url> Base RPC URL (default: https://mainnet.base.org)
54
+ --rpc With a receipt, an inclusion proof, and a tree head: check the
55
+ leaf, then the Solana memo and the Base calldata for that root
56
+ --inclusion <file> Inclusion proof JSON (chit402.inclusion.v1)
57
+ --head <file> Signed tree head JSON (chit402.tree_head.v1)
39
58
  --json Output JSON instead of human-readable
40
59
  --quiet Only output errors
60
+ --strict-issuer-history
61
+ Fail if the issuer key history cannot be fetched
62
+ --issuer-history-file <path>
63
+ Read issuer history JSON instead of fetching it
64
+ --canonical-preimage <path>
65
+ SHA-256 this file and match the signed payload_hash
66
+ --no-issuer-history Do not check the kid's not_before / not_after window
67
+ --no-preimage Do not require published hash preimages
41
68
 
42
69
  Exit codes:
43
70
  0 = verified
44
71
  1 = verification failed
45
- 2 = partial verification (binding ok, nullifier not checked)
72
+ 2 = partial verification
46
73
  3 = input error
47
74
 
75
+ Trust:
76
+ A signature counts only when the verifying key is trusted. Trust is a JWKS
77
+ entry matched by kid (file, --jwks-url, or --fetch-jwks), or an embedded
78
+ issuer_jwk whose RFC 7638 thumbprint equals a pinned trusted kid. The
79
+ embedded key alone is not a trust root. Untrusted keys report "key untrusted".
80
+
81
+ Amount, payer, payee, and tx are read from verified signed claims. A mismatch
82
+ with the unsigned outer payment / caller_binding copy is a failure.
83
+
48
84
  Network behavior:
49
85
  By default, no network requests are made. Network is only used when:
86
+ - --fetch-jwks or --jwks-url is passed
50
87
  - --check-nullifier is passed (queries Base RPC for on-chain anchor)
51
88
  - --check-payer is passed (queries Base or Solana RPC for USDC settlement)
52
-
53
- JWKS must be provided as a local file (--jwks-file) for legacy receipts without
54
- issuer_signature.issuer_jwk. The CLI does not automatically fetch JWKS from a URL.
55
- Pinned receipts (issuer_jwk present) verify offline without --jwks-file.
89
+ - --rpc is passed with a receipt, an inclusion proof, and a tree head
56
90
 
57
91
  Solana payer verify uses SOLANA_RPC_URL when set, else the public mainnet RPC.
58
92
 
93
+ Anchored root:
94
+ xfuel-verify receipt.json inclusion.json head.json --rpc
95
+ xfuel-verify receipt.json --inclusion inclusion.json --head head.json --rpc https://mainnet.base.org
96
+
97
+ Checks the Merkle inclusion, fetches the Solana transaction and requires the
98
+ SPL Memo to contain the root, and checks the Base calldata the same way.
99
+ Prints what this proves and what it does not prove. Exit 0 when both chains
100
+ match, 2 when the leaf is included but an anchor is still pending, 1 when a
101
+ check fails.
102
+
103
+ Receipt lane (unsigned, beside book_seq):
104
+ settled_by is observed_transfer when the USDC transfer was checked on Base
105
+ or Solana, and receipt when only the issuer asserts settlement. Unknown is
106
+ null. Ordering is seq + settled_by + (anchor_changed AND not settled).
107
+ Boundary: complete over registry marks, blind to payments the registry
108
+ never joined. freeze is true only when book_seq is set, settled_by is
109
+ receipt, the anchor changed after binding, and the row is not settled. An
110
+ anchor change alone does not freeze, and freeze does not change the
111
+ signature exit code. classification unverifiable_from_registry means the
112
+ binding is past expiry and settled_by, receipt_id, observed_tx_hash, and
113
+ observed_transfer_id are all null. That is not unpaid. local_check, when
114
+ set, is a Base USDC payee and amount a stranger can check. It does not
115
+ claim the row was paid. Design by Turbo on 1F916 (post 6579, comments
116
+ 88201, 88403, and 88596).
117
+
59
118
  Examples:
60
119
  # Local binding verification (no network)
61
120
  xfuel-verify my-receipt.json
@@ -73,13 +132,27 @@ function parseArgs(args) {
73
132
  const result = {
74
133
  file: null,
75
134
  jwksFile: null,
135
+ jwksUrl: null,
136
+ fetchJwks: false,
137
+ trustedKids: null,
138
+ noTrustedKid: false,
76
139
  checkNullifier: false,
77
140
  checkPayer: false,
78
141
  rpcUrl: null,
79
142
  solanaRpcUrl: null,
143
+ sawRpc: false,
144
+ anchorFlag: false,
145
+ inclusionFile: null,
146
+ headFile: null,
147
+ positionals: [],
80
148
  json: false,
81
149
  quiet: false,
82
150
  help: false,
151
+ strictIssuerHistory: false,
152
+ issuerHistoryFile: null,
153
+ canonicalPreimageFile: null,
154
+ noIssuerHistory: false,
155
+ noPreimage: false,
83
156
  };
84
157
  for (let i = 0; i < args.length; i++) {
85
158
  const arg = args[i];
@@ -95,12 +168,51 @@ function parseArgs(args) {
95
168
  else if (arg === '--jwks-file' && args[i + 1]) {
96
169
  result.jwksFile = args[++i];
97
170
  }
98
- else if (arg === '--rpc' && args[i + 1]) {
99
- result.rpcUrl = args[++i];
171
+ else if (arg === '--jwks-url' && args[i + 1]) {
172
+ result.jwksUrl = args[++i];
173
+ }
174
+ else if (arg === '--fetch-jwks') {
175
+ result.fetchJwks = true;
176
+ }
177
+ else if (arg === '--trusted-kid' && args[i + 1]) {
178
+ result.trustedKids = result.trustedKids || [];
179
+ result.trustedKids.push(args[++i]);
180
+ }
181
+ else if (arg === '--no-trusted-kid') {
182
+ result.noTrustedKid = true;
183
+ }
184
+ else if (arg === '--rpc') {
185
+ result.sawRpc = true;
186
+ const next = args[i + 1];
187
+ if (next && /^https?:\/\//i.test(next))
188
+ result.rpcUrl = args[++i];
189
+ else
190
+ result.anchorFlag = true;
191
+ }
192
+ else if (arg === '--inclusion' && args[i + 1]) {
193
+ result.inclusionFile = args[++i];
194
+ }
195
+ else if (arg === '--head' && args[i + 1]) {
196
+ result.headFile = args[++i];
100
197
  }
101
198
  else if (arg === '--solana-rpc' && args[i + 1]) {
102
199
  result.solanaRpcUrl = args[++i];
103
200
  }
201
+ else if (arg === '--strict-issuer-history') {
202
+ result.strictIssuerHistory = true;
203
+ }
204
+ else if (arg === '--issuer-history-file' && args[i + 1]) {
205
+ result.issuerHistoryFile = args[++i];
206
+ }
207
+ else if (arg === '--canonical-preimage' && args[i + 1]) {
208
+ result.canonicalPreimageFile = args[++i];
209
+ }
210
+ else if (arg === '--no-issuer-history') {
211
+ result.noIssuerHistory = true;
212
+ }
213
+ else if (arg === '--no-preimage') {
214
+ result.noPreimage = true;
215
+ }
104
216
  else if (arg === '--json') {
105
217
  result.json = true;
106
218
  }
@@ -108,7 +220,9 @@ function parseArgs(args) {
108
220
  result.quiet = true;
109
221
  }
110
222
  else if (!arg.startsWith('-')) {
111
- result.file = arg;
223
+ result.positionals.push(arg);
224
+ if (!result.file)
225
+ result.file = arg;
112
226
  }
113
227
  }
114
228
  return result;
@@ -132,11 +246,216 @@ function formatAmount(units) {
132
246
  const usd = n / 1e6;
133
247
  return `$${usd.toFixed(usd >= 0.01 ? 2 : 6)} (${units} units)`;
134
248
  }
249
+ function readJson(file) {
250
+ const content = file === '-' ? (0, node_fs_1.readFileSync)(0, 'utf8') : (0, node_fs_1.readFileSync)(file, 'utf8');
251
+ return JSON.parse(content);
252
+ }
253
+ function printLane(lane) {
254
+ const bit = (value) => (value == null ? 'unknown' : (value ? 'true' : 'false'));
255
+ console.log(` Receipt lane (unsigned)`);
256
+ console.log(` ─────────────────────────────────────────────────`);
257
+ console.log(` book_seq: ${lane.book_seq ?? '—'}`);
258
+ console.log(` settled_by: ${lane.settled_by ?? 'null'}`);
259
+ console.log(` settled: ${bit(lane.settled)}`);
260
+ console.log(` anchor_changed_since_binding: ${bit(lane.anchor_changed_since_binding)}`);
261
+ console.log(` freeze: ${lane.freeze ? 'YES' : 'no'}`);
262
+ if (lane.reason)
263
+ console.log(` reason: ${lane.reason}`);
264
+ console.log(` classification:${lane.classification}`);
265
+ console.log(` ordering: ${lane.ordering}`);
266
+ console.log(` boundary: ${lane.boundary}`);
267
+ if (lane.local_check) {
268
+ console.log(` local_check: payee ${lane.local_check.payee} amount ${lane.local_check.amount_atomic} (not a payment)`);
269
+ }
270
+ console.log(` ${lane.rule}`);
271
+ console.log('');
272
+ }
273
+ function printAnchor(result, json, quiet) {
274
+ if (json) {
275
+ console.log(JSON.stringify(result, null, 2));
276
+ return;
277
+ }
278
+ if (quiet && result.overall !== 'failed')
279
+ return;
280
+ const mark = (ok) => (ok ? '✓ YES' : '✗ NO');
281
+ console.log('');
282
+ console.log(' Anchored receipt root');
283
+ console.log(' ─────────────────────────────────────────────────');
284
+ console.log(` Root: ${result.root || '—'}`);
285
+ console.log(` Inclusion: ${mark(result.inclusion.valid)}${result.inclusion.reason ? ` (${result.inclusion.reason})` : ''}`);
286
+ console.log(` Leaf source: ${result.inclusion.leaf_source}`);
287
+ console.log(` Solana: ${result.solana.checked ? mark(result.solana.valid) : (result.solana.reason || 'not checked')}`);
288
+ if (result.solana.signature)
289
+ console.log(` Signature: ${result.solana.signature}`);
290
+ if (result.solana.slot != null)
291
+ console.log(` Slot: ${result.solana.slot}`);
292
+ if (result.solana.cluster)
293
+ console.log(` Cluster: ${result.solana.cluster}`);
294
+ if (result.solana.memo)
295
+ console.log(` Memo: ${result.solana.memo}`);
296
+ if (result.solana.reason && !result.solana.valid)
297
+ console.log(` Solana reason: ${result.solana.reason}`);
298
+ console.log(` Base: ${result.base.checked ? mark(result.base.valid) : (result.base.reason || 'not checked')}`);
299
+ if (result.base.tx)
300
+ console.log(` Base tx: ${result.base.tx}`);
301
+ if (result.base.chain_id != null)
302
+ console.log(` Chain id: ${result.base.chain_id}`);
303
+ if (result.base.reason && !result.base.valid)
304
+ console.log(` Base reason: ${result.base.reason}`);
305
+ console.log('');
306
+ console.log(' What this proves');
307
+ console.log(' ─────────────────────────────────────────────────');
308
+ for (const line of result.proves)
309
+ console.log(` ${line}`);
310
+ console.log('');
311
+ console.log(' What this does not prove');
312
+ console.log(' ─────────────────────────────────────────────────');
313
+ for (const line of result.does_not_prove)
314
+ console.log(` ${line}`);
315
+ console.log('');
316
+ console.log(` Overall: ${result.overall.toUpperCase()}`);
317
+ if (result.errors.length > 0)
318
+ console.log(` Errors: ${result.errors.join(', ')}`);
319
+ console.log('');
320
+ }
321
+ async function runAnchor(args) {
322
+ const receiptPath = args.file;
323
+ const inclusionPath = args.inclusionFile || args.positionals[1] || null;
324
+ const headPath = args.headFile || (args.inclusionFile ? null : args.positionals[2]) || null;
325
+ if (!receiptPath || !inclusionPath || !headPath) {
326
+ console.error('Anchor check needs a receipt, an inclusion proof, and a tree head.');
327
+ console.error(' xfuel-verify receipt.json inclusion.json head.json --rpc');
328
+ return 3;
329
+ }
330
+ let receipt;
331
+ let inclusion;
332
+ let head;
333
+ try {
334
+ receipt = readJson(receiptPath);
335
+ inclusion = readJson(inclusionPath);
336
+ head = readJson(headPath);
337
+ }
338
+ catch (err) {
339
+ console.error(`Error reading anchor inputs: ${err instanceof Error ? err.message : String(err)}`);
340
+ return 3;
341
+ }
342
+ const result = await (0, anchor_witness_js_1.verifyAnchoredRoot)({
343
+ receipt,
344
+ inclusion,
345
+ head,
346
+ baseRpcUrl: args.rpcUrl || undefined,
347
+ solanaRpcUrl: args.solanaRpcUrl || undefined,
348
+ });
349
+ const verified = await (0, index_js_1.verifyReceipt)(receipt, { head });
350
+ const lane = verified.receipt_lane;
351
+ if (args.json) {
352
+ console.log(JSON.stringify({ ...result, receipt_lane: lane }, null, 2));
353
+ }
354
+ else {
355
+ printAnchor(result, false, args.quiet);
356
+ if (!args.quiet)
357
+ printLane(lane);
358
+ }
359
+ if (result.overall === 'verified')
360
+ return 0;
361
+ if (result.overall === 'partial')
362
+ return 2;
363
+ return 1;
364
+ }
365
+ async function runRefusal(doc, args) {
366
+ const trustedKids = args.trustedKids ?? index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS;
367
+ const result = (0, index_js_1.verifyRefusal)(doc, {
368
+ jwks: args.jwks,
369
+ trustedKids,
370
+ });
371
+ const preimages = await (0, preimage_js_1.verifyPublishedPreimages)(doc, {
372
+ requirePreimages: args.requirePreimages,
373
+ });
374
+ let canonicalFailed = false;
375
+ if (args.canonicalPreimage != null) {
376
+ const canonical = (0, canonical_preimage_js_1.verifyCanonicalPreimageBytes)(args.canonicalPreimage, result.payload_hash);
377
+ canonicalFailed = !canonical.ok;
378
+ if (canonicalFailed)
379
+ preimages.errors.push(`canonical preimage: ${canonical.reason}`);
380
+ if (canonicalFailed)
381
+ preimages.ok = false;
382
+ }
383
+ const pin = result.valid ? (0, issuer_history_js_1.readIssuerHistoryPin)({
384
+ issuer_history: result.issuer_history,
385
+ }) : null;
386
+ const history = args.skipIssuerHistory
387
+ ? { checked: false, ok: true, unreachable: false, warning: null, reason: null, kid: result.kid ?? null }
388
+ : await (0, issuer_history_js_1.checkReceiptIssuerHistory)(doc, {
389
+ document: args.issuerHistory,
390
+ documentBytes: args.issuerHistoryBytes,
391
+ fetchHistory: args.fetchIssuerHistory,
392
+ strict: args.strictIssuerHistory,
393
+ jwks: args.jwks,
394
+ trustedKids,
395
+ issuedAt: doc.issued_at ?? null,
396
+ kid: result.kid ?? doc.issuer_signature?.kid ?? null,
397
+ pin,
398
+ requirePin: result.valid && Number(result.payload_version) >= 2,
399
+ });
400
+ const historyFailed = history.checked && !history.ok;
401
+ const failed = !result.valid || !preimages.ok || historyFailed || canonicalFailed;
402
+ if (args.json) {
403
+ console.log(JSON.stringify({ ...result, preimages, issuer_history: history }, null, 2));
404
+ }
405
+ else if (!args.quiet || failed) {
406
+ console.log('');
407
+ console.log(' Chit402 Refusal Verification');
408
+ console.log(' ─────────────────────────────────────────────────');
409
+ console.log(` Schema: ${result.schema}`);
410
+ console.log(` Refusal ID: ${result.refusal_id || doc.refusal_id || '—'}`);
411
+ console.log(` Code: ${result.refusal_code || doc.refusal_code || '—'}`);
412
+ console.log(` Nonce: ${result.nonce || '—'}`);
413
+ console.log(` Chain: ${result.chain_id ?? 'null'}`);
414
+ console.log(` Charged: false`);
415
+ console.log('');
416
+ console.log(' Issuer Signature');
417
+ console.log(' ─────────────────────────────────────────────────');
418
+ console.log(` Valid: ${result.valid ? '✓ YES' : '✗ NO'}`);
419
+ if (result.kid)
420
+ console.log(` Kid: ${result.kid}`);
421
+ if (!result.valid && result.reason)
422
+ console.log(` Reason: ${result.reason}`);
423
+ console.log('');
424
+ console.log(' What this proves');
425
+ console.log(' ─────────────────────────────────────────────────');
426
+ for (const line of result.proves)
427
+ console.log(` ${line}`);
428
+ console.log('');
429
+ console.log(' What this does not prove');
430
+ console.log(' ─────────────────────────────────────────────────');
431
+ for (const line of result.does_not_prove)
432
+ console.log(` ${line}`);
433
+ console.log('');
434
+ console.log(` Overall: ${failed ? 'FAILED' : 'VERIFIED'}`);
435
+ if (!preimages.ok)
436
+ console.log(` Preimages: ${preimages.errors.join('; ')}`);
437
+ if (history.warning)
438
+ console.log(` Issuer history: ${history.warning}`);
439
+ if (historyFailed && history.reason)
440
+ console.log(` Issuer history: ${history.reason}`);
441
+ console.log('');
442
+ }
443
+ return failed ? 1 : 0;
444
+ }
135
445
  async function main() {
136
446
  const args = parseArgs(process.argv.slice(2));
137
- if (args.help || !args.file) {
447
+ const anchorMode = args.anchorFlag
448
+ || Boolean(args.inclusionFile || args.headFile)
449
+ || (args.positionals.length >= 3 && args.sawRpc);
450
+ if (args.help) {
138
451
  console.log(HELP);
139
- return args.help ? 0 : 3;
452
+ return 0;
453
+ }
454
+ if (anchorMode)
455
+ return runAnchor(args);
456
+ if (!args.file) {
457
+ console.log(HELP);
458
+ return 3;
140
459
  }
141
460
  let receipt;
142
461
  try {
@@ -162,12 +481,72 @@ async function main() {
162
481
  return 3;
163
482
  }
164
483
  }
484
+ const trustedKids = args.noTrustedKid
485
+ ? []
486
+ : (args.trustedKids ?? index_js_1.DEFAULT_TRUSTED_ISSUER_KIDS);
487
+ if ((0, index_js_1.isRefusalDocument)(receipt)) {
488
+ let issuerHistory = null;
489
+ let issuerHistoryBytes = null;
490
+ if (args.issuerHistoryFile) {
491
+ issuerHistoryBytes = (0, node_fs_1.readFileSync)(args.issuerHistoryFile, 'utf8');
492
+ issuerHistory = JSON.parse(issuerHistoryBytes);
493
+ }
494
+ let canonicalPreimage = null;
495
+ if (args.canonicalPreimageFile) {
496
+ canonicalPreimage = (0, node_fs_1.readFileSync)(args.canonicalPreimageFile, 'utf8');
497
+ }
498
+ return runRefusal(receipt, {
499
+ jwks,
500
+ trustedKids,
501
+ json: args.json,
502
+ quiet: args.quiet,
503
+ requirePreimages: !args.noPreimage,
504
+ issuerHistory,
505
+ issuerHistoryBytes,
506
+ fetchIssuerHistory: !args.noIssuerHistory && !issuerHistory,
507
+ strictIssuerHistory: args.strictIssuerHistory,
508
+ skipIssuerHistory: args.noIssuerHistory,
509
+ canonicalPreimage,
510
+ });
511
+ }
512
+ let issuerHistory = null;
513
+ let issuerHistoryBytes = null;
514
+ if (args.issuerHistoryFile) {
515
+ try {
516
+ issuerHistoryBytes = (0, node_fs_1.readFileSync)(args.issuerHistoryFile, 'utf8');
517
+ issuerHistory = JSON.parse(issuerHistoryBytes);
518
+ }
519
+ catch (err) {
520
+ console.error(`Error reading issuer history: ${err instanceof Error ? err.message : String(err)}`);
521
+ return 3;
522
+ }
523
+ }
524
+ let canonicalPreimage = null;
525
+ if (args.canonicalPreimageFile) {
526
+ try {
527
+ canonicalPreimage = (0, node_fs_1.readFileSync)(args.canonicalPreimageFile, 'utf8');
528
+ }
529
+ catch (err) {
530
+ console.error(`Error reading canonical preimage: ${err instanceof Error ? err.message : String(err)}`);
531
+ return 3;
532
+ }
533
+ }
165
534
  const result = await (0, index_js_1.verifyReceipt)(receipt, {
166
535
  jwks,
536
+ jwksUri: args.jwksUrl || undefined,
537
+ fetchJwks: args.fetchJwks,
538
+ trustedKids,
167
539
  checkNullifier: args.checkNullifier,
168
540
  checkPayer: args.checkPayer,
169
541
  rpcUrl: args.rpcUrl || undefined,
170
542
  solanaRpcUrl: args.solanaRpcUrl || undefined,
543
+ requirePreimages: !args.noPreimage,
544
+ issuerHistory,
545
+ issuerHistoryBytes,
546
+ fetchIssuerHistory: !args.noIssuerHistory && !issuerHistory,
547
+ strictIssuerHistory: args.strictIssuerHistory,
548
+ skipIssuerHistory: args.noIssuerHistory,
549
+ canonicalPreimage,
171
550
  });
172
551
  if (args.json) {
173
552
  console.log(JSON.stringify(result, null, 2));
@@ -179,7 +558,7 @@ async function main() {
179
558
  console.log(` Receipt ID: ${result.receipt_id}`);
180
559
  console.log(` Hub: ${result.hub || '—'}`);
181
560
  console.log(` Model: ${result.model || '—'}`);
182
- console.log(` Amount: ${formatAmount(result.amount_usdc)}`);
561
+ console.log(` Amount: ${result.issuer_signature.valid ? formatAmount(result.amount_usdc) : '— (not verified)'}`);
183
562
  console.log(` TX: ${result.tx || '—'}`);
184
563
  console.log(` Output Hash: ${result.output_hash ? result.output_hash.slice(0, 18) + '…' : '—'}`);
185
564
  console.log('');
@@ -192,7 +571,7 @@ async function main() {
192
571
  console.log(` Covers: ${result.binding.covers.join(', ')}`);
193
572
  }
194
573
  else {
195
- console.log(` Status: No binding (${result.binding.reason})`);
574
+ console.log(` Status: ${result.binding.reason || 'No payment-binding commitment'}`);
196
575
  }
197
576
  console.log('');
198
577
  console.log(` Issuer Signature`);
@@ -200,17 +579,15 @@ async function main() {
200
579
  if (result.issuer_signature.checked) {
201
580
  console.log(` Kid: ${result.issuer_signature.kid || '—'}`);
202
581
  console.log(` Valid: ${result.issuer_signature.valid ? '✓ YES' : '✗ NO'}`);
582
+ console.log(` Key trusted: ${result.issuer_signature.key_trusted ? '✓ YES' : '✗ NO'}${result.issuer_signature.trust ? ` (${result.issuer_signature.trust})` : ''}`);
203
583
  if (!result.issuer_signature.valid && result.issuer_signature.reason) {
204
584
  console.log(` Reason: ${result.issuer_signature.reason}`);
205
585
  }
206
586
  }
207
587
  else {
208
588
  console.log(` Status: ${result.issuer_signature.reason || 'Not checked'}`);
209
- if (receipt.issuer_signature && !args.jwksFile) {
210
- const hasPin = receipt.issuer_signature.issuer_jwk && receipt.issuer_signature.jws;
211
- console.log(hasPin
212
- ? ` (pinned issuer_jwk on receipt — signature verified offline)`
213
- : ` (receipt has signature — pass --jwks-file to verify)`);
589
+ if (receipt.issuer_signature && !args.jwksFile && !args.fetchJwks && !args.jwksUrl) {
590
+ console.log(` (pass --jwks-file, --fetch-jwks, or rely on the default trusted kid)`);
214
591
  }
215
592
  }
216
593
  console.log('');
@@ -218,6 +595,10 @@ async function main() {
218
595
  console.log(` ─────────────────────────────────────────────────`);
219
596
  if (result.payer.checked) {
220
597
  console.log(` Rail: ${result.payer.rail || '—'}`);
598
+ console.log(` Payer: ${result.payer.payer_wallet || '—'}`);
599
+ console.log(` Payee: ${result.payer.payee || '—'}`);
600
+ console.log(` Asset: ${result.payer.asset || '—'}`);
601
+ console.log(` Amount: ${formatAmount(result.payer.amount || null)}`);
221
602
  console.log(` Valid: ${result.payer.valid ? '✓ YES' : '✗ NO'}`);
222
603
  if (!result.payer.valid && result.payer.reason) {
223
604
  console.log(` Reason: ${result.payer.reason}`);
@@ -225,8 +606,16 @@ async function main() {
225
606
  }
226
607
  else {
227
608
  console.log(` Status: ${result.payer.reason || 'Not checked'}`);
228
- if (receipt.caller_binding?.payer_wallet && receipt.payment?.ref && !args.checkPayer) {
229
- console.log(` (pass --check-payer to verify on-chain)`);
609
+ if (result.issuer_signature.valid && result.payer.payer_wallet && result.tx && !args.checkPayer) {
610
+ console.log(` (pass --check-payer to verify payer, payee, asset, and amount on-chain)`);
611
+ }
612
+ }
613
+ if (result.claim_mismatches.length > 0) {
614
+ console.log('');
615
+ console.log(` Outer / signed mismatches`);
616
+ console.log(` ─────────────────────────────────────────────────`);
617
+ for (const mismatch of result.claim_mismatches) {
618
+ console.log(` ${mismatch.field}: outer ${mismatch.outer} ≠ signed ${mismatch.signed}`);
230
619
  }
231
620
  }
232
621
  console.log('');
@@ -245,6 +634,16 @@ async function main() {
245
634
  console.log(` Status: No nullifier (Tier-1 receipt)`);
246
635
  }
247
636
  console.log('');
637
+ printLane(result.receipt_lane);
638
+ if (result.preimages.checked) {
639
+ console.log(` Preimages: ${result.preimages.ok ? '✓ MATCH' : '✗ ' + result.preimages.errors.join('; ')}`);
640
+ }
641
+ if (result.issuer_history.checked) {
642
+ console.log(` Issuer history: ${result.issuer_history.ok ? '✓ kid in window' : '✗ ' + (result.issuer_history.reason || 'failed')}`);
643
+ }
644
+ else if (result.issuer_history.warning) {
645
+ console.log(` Issuer history: ${result.issuer_history.warning}`);
646
+ }
248
647
  console.log(` Overall: ${result.overall.toUpperCase()}`);
249
648
  if (result.errors.length > 0) {
250
649
  console.log(` Errors: ${result.errors.join(', ')}`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;GAcG;;AAEH,qCAAuC;AACvC,yCAAwF;AAExF,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDZ,CAAC;AAEF,SAAS,SAAS,CAAC,IAAc;IAW/B,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAqB;QAC3B,QAAQ,EAAE,IAAqB;QAC/B,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAqB;QAC7B,YAAY,EAAE,IAAqB;QACnC,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACvC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,OAAe,CAAC;IACpB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,GAAG,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpB,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,OAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAsB,CAAC;IAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAS,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9F,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE;QAC1C,IAAI;QACJ,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;QAChC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;KAC7C,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;YACnF,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,MAAM;oBAChB,CAAC,CAAC,8EAA8E;oBAChF,CAAC,CAAC,uEAAuE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;YACxE,IAAI,OAAO,CAAC,cAAc,EAAE,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;;GAeG;;AAEH,qCAAuC;AACvC,yCAQoB;AACpB,2DAM6B;AAE7B,+CAAyD;AACzD,2DAAkH;AAClH,mEAAuE;AAEvE,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;mDAsBsC,sCAA2B,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFhF,CAAC;AAEF,SAAS,SAAS,CAAC,IAAc;IAyB/B,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,IAAqB;QAC3B,QAAQ,EAAE,IAAqB;QAC/B,OAAO,EAAE,IAAqB;QAC9B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,IAAuB;QACpC,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAqB;QAC7B,YAAY,EAAE,IAAqB;QACnC,MAAM,EAAE,KAAK;QACb,UAAU,EAAE,KAAK;QACjB,aAAa,EAAE,IAAqB;QACpC,QAAQ,EAAE,IAAqB;QAC/B,WAAW,EAAE,EAAc;QAC3B,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;QACX,mBAAmB,EAAE,KAAK;QAC1B,iBAAiB,EAAE,IAAqB;QACxC,qBAAqB,EAAE,IAAqB;QAC5C,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,KAAK;KAClB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YACvC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;YAC9C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YACtC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAC7D,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAChC,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,GAAG,KAAK,yBAAyB,EAAE,CAAC;YAC7C,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACpC,CAAC;aAAM,IAAI,GAAG,KAAK,uBAAuB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,GAAG,KAAK,sBAAsB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,OAAe,CAAC;IACpB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;QACjB,OAAO,GAAG,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC;IACvB,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IACpB,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpF,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;AACxC,CAAC;AAED,SAAS,SAAS,CAAC,IAAiB;IAClC,MAAM,GAAG,GAAG,CAAC,KAAqB,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,WAAW,CAAC,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,aAAa,kBAAkB,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,MAA2B,EAAE,IAAa,EAAE,KAAc;IAC7E,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,IAAI,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO;IACjD,MAAM,IAAI,GAAG,CAAC,EAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjI,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IAC/H,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IACxF,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpF,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;IACzH,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1F,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,cAAc;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAkC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5F,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpF,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAsB,CAAC;IAC3B,IAAI,SAA0B,CAAC;IAC/B,IAAI,IAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAkB,CAAC;QACjD,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAoB,CAAC;QACvD,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAe,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,IAAA,sCAAkB,EAAC;QACtC,OAAO;QACP,SAAS;QACT,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;QACpC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;KAC7C,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,GAAoB,EACpB,IAYC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,sCAA2B,CAAC;IACpE,MAAM,MAAM,GAAG,IAAA,wBAAa,EAAC,GAAG,EAAE;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,IAAA,sCAAwB,EAAC,GAAyC,EAAE;QAC1F,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC,CAAC;IACH,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,IAAA,oDAA4B,EAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5F,eAAe,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,IAAI,eAAe;YAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,IAAI,eAAe;YAAE,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,wCAAoB,EAAC;QAC9C,cAAc,EAAE,MAAM,CAAC,cAAc;KACX,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB;QACpC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;QACxG,CAAC,CAAC,MAAM,IAAA,6CAAyB,EAAC,GAAqG,EAAE;YACvI,QAAQ,EAAE,IAAI,CAAC,aAAa;YAC5B,aAAa,EAAE,IAAI,CAAC,kBAAkB;YACtC,YAAY,EAAE,IAAI,CAAC,kBAAkB;YACrC,MAAM,EAAE,IAAI,CAAC,mBAAmB;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW;YACX,QAAQ,EAAG,GAA8B,CAAC,SAAS,IAAI,IAAI;YAC3D,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,EAAE,GAAG,IAAI,IAAI;YACpD,GAAG;YACH,UAAU,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC;SAChE,CAAC,CAAC;IACL,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,aAAa,IAAI,eAAe,CAAC;IAClF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,IAAI,aAAa,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;WAC7B,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC;WAC5C,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,UAAU;QAAE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAsB,CAAC;IAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAS,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9F,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY;QACnC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,sCAA2B,CAAC,CAAC;IAEtD,IAAI,IAAA,4BAAiB,EAAC,OAAkB,CAAC,EAAE,CAAC;QAC1C,IAAI,aAAa,GAAiC,IAAI,CAAC;QACvD,IAAI,kBAAkB,GAAkB,IAAI,CAAC;QAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,kBAAkB,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAA0B,CAAC;QAC1E,CAAC;QACD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,iBAAiB,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,UAAU,CAAC,OAAqC,EAAE;YACvD,IAAI;YACJ,WAAW;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,gBAAgB,EAAE,CAAC,IAAI,CAAC,UAAU;YAClC,aAAa;YACb,kBAAkB;YAClB,kBAAkB,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;YAC3D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,iBAAiB,EAAE,IAAI,CAAC,eAAe;YACvC,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,aAAa,GAAiC,IAAI,CAAC;IACvD,IAAI,kBAAkB,GAAkB,IAAI,CAAC;IAC7C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,kBAAkB,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;YAClE,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAA0B,CAAC;QAC1E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnG,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,iBAAiB,GAAG,IAAA,sBAAY,EAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvG,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE;QAC1C,IAAI;QACJ,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;QAClC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW;QACX,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;QAChC,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;QAC5C,gBAAgB,EAAE,CAAC,IAAI,CAAC,UAAU;QAClC,aAAa;QACb,kBAAkB;QAClB,kBAAkB,EAAE,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa;QAC3D,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,iBAAiB,EAAE,IAAI,CAAC,eAAe;QACvC,iBAAiB;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACzH,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,+BAA+B,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvK,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,gBAAgB,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;YACnF,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,uFAAuF,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,oBAAoB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC,CAAC;YACxE,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChG,OAAO,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,KAAK,WAAW,QAAQ,CAAC,KAAK,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjH,CAAC;QACD,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvI,CAAC;aAAM,IAAI,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAClC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}