agent-passport-system 4.1.0 → 4.2.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 (122) hide show
  1. package/README.md +37 -34
  2. package/dist/src/adapters/oauth-id-jag/import-v1.d.ts +74 -0
  3. package/dist/src/adapters/oauth-id-jag/import-v1.d.ts.map +1 -0
  4. package/dist/src/adapters/oauth-id-jag/import-v1.js +243 -0
  5. package/dist/src/adapters/oauth-id-jag/import-v1.js.map +1 -0
  6. package/dist/src/index.d.ts +3 -0
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +6 -0
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/profiles/a2a/identity-v1.d.ts +44 -0
  11. package/dist/src/profiles/a2a/identity-v1.d.ts.map +1 -0
  12. package/dist/src/profiles/a2a/identity-v1.js +208 -0
  13. package/dist/src/profiles/a2a/identity-v1.js.map +1 -0
  14. package/dist/src/profiles/a2a/index.d.ts +2 -0
  15. package/dist/src/profiles/a2a/index.d.ts.map +1 -0
  16. package/dist/src/profiles/a2a/index.js +2 -0
  17. package/dist/src/profiles/a2a/index.js.map +1 -0
  18. package/dist/src/profiles/mcp/authorization-v1.d.ts +88 -0
  19. package/dist/src/profiles/mcp/authorization-v1.d.ts.map +1 -0
  20. package/dist/src/profiles/mcp/authorization-v1.js +215 -0
  21. package/dist/src/profiles/mcp/authorization-v1.js.map +1 -0
  22. package/dist/src/profiles/mcp/index.d.ts +2 -0
  23. package/dist/src/profiles/mcp/index.d.ts.map +1 -0
  24. package/dist/src/profiles/mcp/index.js +2 -0
  25. package/dist/src/profiles/mcp/index.js.map +1 -0
  26. package/dist/src/v2/action-reference/index.d.ts +2 -0
  27. package/dist/src/v2/action-reference/index.d.ts.map +1 -0
  28. package/dist/src/v2/action-reference/index.js +2 -0
  29. package/dist/src/v2/action-reference/index.js.map +1 -0
  30. package/dist/src/v2/action-reference/v2.d.ts +23 -0
  31. package/dist/src/v2/action-reference/v2.d.ts.map +1 -0
  32. package/dist/src/v2/action-reference/v2.js +57 -0
  33. package/dist/src/v2/action-reference/v2.js.map +1 -0
  34. package/dist/src/v2/authority-delegation/budget.d.ts +20 -0
  35. package/dist/src/v2/authority-delegation/budget.d.ts.map +1 -0
  36. package/dist/src/v2/authority-delegation/budget.js +141 -0
  37. package/dist/src/v2/authority-delegation/budget.js.map +1 -0
  38. package/dist/src/v2/authority-delegation/canonical.d.ts +12 -0
  39. package/dist/src/v2/authority-delegation/canonical.d.ts.map +1 -0
  40. package/dist/src/v2/authority-delegation/canonical.js +33 -0
  41. package/dist/src/v2/authority-delegation/canonical.js.map +1 -0
  42. package/dist/src/v2/authority-delegation/compare.d.ts +4 -0
  43. package/dist/src/v2/authority-delegation/compare.d.ts.map +1 -0
  44. package/dist/src/v2/authority-delegation/compare.js +67 -0
  45. package/dist/src/v2/authority-delegation/compare.js.map +1 -0
  46. package/dist/src/v2/authority-delegation/index.d.ts +10 -0
  47. package/dist/src/v2/authority-delegation/index.d.ts.map +1 -0
  48. package/dist/src/v2/authority-delegation/index.js +12 -0
  49. package/dist/src/v2/authority-delegation/index.js.map +1 -0
  50. package/dist/src/v2/authority-delegation/issue.d.ts +10 -0
  51. package/dist/src/v2/authority-delegation/issue.d.ts.map +1 -0
  52. package/dist/src/v2/authority-delegation/issue.js +52 -0
  53. package/dist/src/v2/authority-delegation/issue.js.map +1 -0
  54. package/dist/src/v2/authority-delegation/parse.d.ts +4 -0
  55. package/dist/src/v2/authority-delegation/parse.d.ts.map +1 -0
  56. package/dist/src/v2/authority-delegation/parse.js +96 -0
  57. package/dist/src/v2/authority-delegation/parse.js.map +1 -0
  58. package/dist/src/v2/authority-delegation/schema.d.ts +7 -0
  59. package/dist/src/v2/authority-delegation/schema.d.ts.map +1 -0
  60. package/dist/src/v2/authority-delegation/schema.js +177 -0
  61. package/dist/src/v2/authority-delegation/schema.js.map +1 -0
  62. package/dist/src/v2/authority-delegation/scope.d.ts +6 -0
  63. package/dist/src/v2/authority-delegation/scope.d.ts.map +1 -0
  64. package/dist/src/v2/authority-delegation/scope.js +50 -0
  65. package/dist/src/v2/authority-delegation/scope.js.map +1 -0
  66. package/dist/src/v2/authority-delegation/types.d.ts +98 -0
  67. package/dist/src/v2/authority-delegation/types.d.ts.map +1 -0
  68. package/dist/src/v2/authority-delegation/types.js +10 -0
  69. package/dist/src/v2/authority-delegation/types.js.map +1 -0
  70. package/dist/src/v2/authority-delegation/verify.d.ts +5 -0
  71. package/dist/src/v2/authority-delegation/verify.d.ts.map +1 -0
  72. package/dist/src/v2/authority-delegation/verify.js +124 -0
  73. package/dist/src/v2/authority-delegation/verify.js.map +1 -0
  74. package/dist/src/v2/identity-binding/did-aps.d.ts +12 -0
  75. package/dist/src/v2/identity-binding/did-aps.d.ts.map +1 -0
  76. package/dist/src/v2/identity-binding/did-aps.js +53 -0
  77. package/dist/src/v2/identity-binding/did-aps.js.map +1 -0
  78. package/dist/src/v2/identity-binding/index.d.ts +6 -0
  79. package/dist/src/v2/identity-binding/index.d.ts.map +1 -0
  80. package/dist/src/v2/identity-binding/index.js +6 -0
  81. package/dist/src/v2/identity-binding/index.js.map +1 -0
  82. package/dist/src/v2/identity-binding/passport.d.ts +18 -0
  83. package/dist/src/v2/identity-binding/passport.d.ts.map +1 -0
  84. package/dist/src/v2/identity-binding/passport.js +144 -0
  85. package/dist/src/v2/identity-binding/passport.js.map +1 -0
  86. package/dist/src/v2/identity-binding/principal-binding.d.ts +20 -0
  87. package/dist/src/v2/identity-binding/principal-binding.d.ts.map +1 -0
  88. package/dist/src/v2/identity-binding/principal-binding.js +128 -0
  89. package/dist/src/v2/identity-binding/principal-binding.js.map +1 -0
  90. package/dist/src/v2/identity-binding/revocation.d.ts +12 -0
  91. package/dist/src/v2/identity-binding/revocation.d.ts.map +1 -0
  92. package/dist/src/v2/identity-binding/revocation.js +97 -0
  93. package/dist/src/v2/identity-binding/revocation.js.map +1 -0
  94. package/dist/src/v2/identity-binding/types.d.ts +72 -0
  95. package/dist/src/v2/identity-binding/types.d.ts.map +1 -0
  96. package/dist/src/v2/identity-binding/types.js +4 -0
  97. package/dist/src/v2/identity-binding/types.js.map +1 -0
  98. package/dist/src/v2/identity-binding/validation.d.ts +9 -0
  99. package/dist/src/v2/identity-binding/validation.d.ts.map +1 -0
  100. package/dist/src/v2/identity-binding/validation.js +104 -0
  101. package/dist/src/v2/identity-binding/validation.js.map +1 -0
  102. package/dist/src/v2/receipt-core/decision-ref.d.ts +23 -0
  103. package/dist/src/v2/receipt-core/decision-ref.d.ts.map +1 -0
  104. package/dist/src/v2/receipt-core/decision-ref.js +75 -0
  105. package/dist/src/v2/receipt-core/decision-ref.js.map +1 -0
  106. package/dist/src/v2/receipt-core/jcs.d.ts +15 -0
  107. package/dist/src/v2/receipt-core/jcs.d.ts.map +1 -0
  108. package/dist/src/v2/receipt-core/jcs.js +198 -0
  109. package/dist/src/v2/receipt-core/jcs.js.map +1 -0
  110. package/dist/src/v2/receipt-core/receipt.d.ts +21 -0
  111. package/dist/src/v2/receipt-core/receipt.d.ts.map +1 -0
  112. package/dist/src/v2/receipt-core/receipt.js +132 -0
  113. package/dist/src/v2/receipt-core/receipt.js.map +1 -0
  114. package/dist/src/v2/receipt-core/supporting-record.d.ts +55 -0
  115. package/dist/src/v2/receipt-core/supporting-record.d.ts.map +1 -0
  116. package/dist/src/v2/receipt-core/supporting-record.js +243 -0
  117. package/dist/src/v2/receipt-core/supporting-record.js.map +1 -0
  118. package/dist/src/v2/receipt-core/types.d.ts +94 -0
  119. package/dist/src/v2/receipt-core/types.d.ts.map +1 -0
  120. package/dist/src/v2/receipt-core/types.js +4 -0
  121. package/dist/src/v2/receipt-core/types.js.map +1 -0
  122. package/package.json +6 -6
@@ -0,0 +1,98 @@
1
+ /** First complete APS authority-delegation wire profile. */
2
+ export declare const AUTHORITY_DELEGATION_RECORD_TYPE: 'aps:authority-delegation:v1';
3
+ export declare const AUTHORITY_DELEGATION_VERSION: '1.0';
4
+ export declare const SCOPE_PROFILE_V1: 'aps-hierarchical-v1';
5
+ export declare const REPUTATION_PROFILE_V1: 'aps-score-0-100-v1';
6
+ export declare const VALUES_PROFILE_V1: 'aps-values-identifiers-v1';
7
+ export declare const REVERSIBILITY_PROFILE_V1: 'aps-tci-v1';
8
+ export interface ScopeFacetV1 {
9
+ profile: typeof SCOPE_PROFILE_V1;
10
+ grants: string[];
11
+ }
12
+ export type SpendFacetV1 = {
13
+ mode: 'unbounded';
14
+ } | {
15
+ mode: 'bounded';
16
+ /** Opaque, exact-match accounting unit, for example iso4217:USD:minor. */
17
+ unit: string;
18
+ /** Canonical unsigned decimal integer. */
19
+ per_action: string;
20
+ /** Canonical unsigned decimal integer applying to the whole delegation subtree. */
21
+ cumulative: string;
22
+ };
23
+ export interface DepthFacetV1 {
24
+ /** Number of further delegation hops the subject may create. */
25
+ remaining: number;
26
+ }
27
+ export interface TimeFacetV1 {
28
+ not_before: string;
29
+ not_after: string;
30
+ }
31
+ export interface ReputationFacetV1 {
32
+ profile: typeof REPUTATION_PROFILE_V1;
33
+ ceiling: number;
34
+ }
35
+ export interface ValuesFacetV1 {
36
+ profile: typeof VALUES_PROFILE_V1;
37
+ required: string[];
38
+ }
39
+ export type ReversibilityClassV1 = 'tentative' | 'compensable' | 'irreversible';
40
+ export interface ReversibilityFacetV1 {
41
+ profile: typeof REVERSIBILITY_PROFILE_V1;
42
+ ceiling: ReversibilityClassV1;
43
+ }
44
+ export interface AuthorityVectorV1 {
45
+ scope: ScopeFacetV1;
46
+ spend: SpendFacetV1;
47
+ depth: DepthFacetV1;
48
+ time: TimeFacetV1;
49
+ reputation: ReputationFacetV1;
50
+ values: ValuesFacetV1;
51
+ reversibility: ReversibilityFacetV1;
52
+ }
53
+ export interface AuthorityDelegationBodyV1 {
54
+ record_type: typeof AUTHORITY_DELEGATION_RECORD_TYPE;
55
+ version: typeof AUTHORITY_DELEGATION_VERSION;
56
+ /** Null only for a trust-policy-selected root. */
57
+ parent_delegation_id: string | null;
58
+ issuer: string;
59
+ subject: string;
60
+ verification_method: string;
61
+ issued_at: string;
62
+ /** 16 random bytes encoded as 32 lowercase hexadecimal characters. */
63
+ nonce: string;
64
+ authority: AuthorityVectorV1;
65
+ }
66
+ export interface AuthorityDelegationV1 extends AuthorityDelegationBodyV1 {
67
+ delegation_id: string;
68
+ /** Raw 64-byte Ed25519 signature encoded as 128 lowercase hexadecimal characters. */
69
+ signature: string;
70
+ }
71
+ export type AuthorityFailureCode = 'SCHEMA_INVALID' | 'UNSUPPORTED_VERSION' | 'UNSUPPORTED_PROFILE' | 'NONCANONICAL_VALUE' | 'ID_MISMATCH' | 'KEY_RESOLUTION_FAILED' | 'SIGNATURE_INVALID' | 'ROOT_UNTRUSTED' | 'CHAIN_DUPLICATE_ID' | 'PARENT_MISMATCH' | 'CHAIN_CONTINUITY' | 'ISSUED_AT_OUTSIDE_PARENT' | 'SCOPE_WIDENING' | 'SPEND_WIDENING' | 'SPEND_UNIT_CHANGE' | 'DEPTH_EXHAUSTED' | 'DEPTH_WIDENING' | 'TIME_WIDENING' | 'REPUTATION_WIDENING' | 'VALUES_WEAKENING' | 'REVERSIBILITY_WIDENING' | 'NOT_YET_VALID' | 'EXPIRED' | 'REVOKED' | 'REVOCATION_UNKNOWN';
72
+ export interface AuthorityFailure {
73
+ code: AuthorityFailureCode;
74
+ message: string;
75
+ index?: number;
76
+ facet?: keyof AuthorityVectorV1;
77
+ }
78
+ export type AuthorityValidationState = 'valid' | 'invalid' | 'indeterminate' | 'unsupported';
79
+ export interface AuthorityValidationResult {
80
+ state: AuthorityValidationState;
81
+ valid: boolean;
82
+ failures: AuthorityFailure[];
83
+ }
84
+ export type VerificationKeyResolver = (issuer: string, verificationMethod: string, issuedAt: string) => string | null;
85
+ export type RevocationResolution = 'active' | 'revoked' | 'unknown';
86
+ export interface AuthorityChainVerificationOptions {
87
+ now: string;
88
+ resolveVerificationKey: VerificationKeyResolver;
89
+ trustRoot: (root: AuthorityDelegationV1) => boolean;
90
+ resolveRevocation: (delegation: AuthorityDelegationV1) => RevocationResolution;
91
+ }
92
+ export type BudgetReservationState = 'reserved' | 'dispatched' | 'committed' | 'cancelled';
93
+ export interface BudgetOperationResult {
94
+ ok: boolean;
95
+ code: 'RESERVED' | 'DISPATCHED' | 'COMMITTED' | 'CANCELLED' | 'IDEMPOTENT' | 'CONFLICT' | 'UNIT_MISMATCH' | 'PER_ACTION_EXCEEDED' | 'CUMULATIVE_EXCEEDED' | 'NOT_FOUND' | 'INVALID_STATE';
96
+ state?: BudgetReservationState;
97
+ }
98
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/v2/authority-delegation/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ /** First complete APS authority-delegation wire profile. */
4
+ export const AUTHORITY_DELEGATION_RECORD_TYPE = 'aps:authority-delegation:v1';
5
+ export const AUTHORITY_DELEGATION_VERSION = '1.0';
6
+ export const SCOPE_PROFILE_V1 = 'aps-hierarchical-v1';
7
+ export const REPUTATION_PROFILE_V1 = 'aps-score-0-100-v1';
8
+ export const VALUES_PROFILE_V1 = 'aps-values-identifiers-v1';
9
+ export const REVERSIBILITY_PROFILE_V1 = 'aps-tci-v1';
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v2/authority-delegation/types.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AAEtC,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gCAAgC,GAAG,6BAAsC,CAAA;AACtF,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAc,CAAA;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,qBAA8B,CAAA;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAA6B,CAAA;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAAoC,CAAA;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAqB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { AuthorityChainVerificationOptions, AuthorityValidationResult } from './types.js';
2
+ /** Full root-to-leaf structural, cryptographic, temporal, and revocation validation. */
3
+ export declare function verifyAuthorityDelegationChain(rawChain: readonly unknown[], options: AuthorityChainVerificationOptions): AuthorityValidationResult;
4
+ export declare function verifyAuthorityDelegation(delegation: unknown, options: AuthorityChainVerificationOptions): AuthorityValidationResult;
5
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/v2/authority-delegation/verify.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,iCAAiC,EAGjC,yBAAyB,EAE1B,MAAM,YAAY,CAAA;AAUnB,wFAAwF;AACxF,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,iCAAiC,GACzC,yBAAyB,CA8G3B;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,iCAAiC,GACzC,yBAAyB,CAE3B"}
@@ -0,0 +1,124 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { authorityDelegationBody, computeAuthorityDelegationId, verifyAuthorityDelegationSignature, } from './canonical.js';
4
+ import { compareAuthority } from './compare.js';
5
+ import { isCanonicalTimestamp, validateAuthorityDelegationShape } from './schema.js';
6
+ function result(state, failures) {
7
+ return { state, valid: state === 'valid', failures };
8
+ }
9
+ function indexed(failure, index) {
10
+ return { ...failure, index };
11
+ }
12
+ /** Full root-to-leaf structural, cryptographic, temporal, and revocation validation. */
13
+ export function verifyAuthorityDelegationChain(rawChain, options) {
14
+ if (!Array.isArray(rawChain) || rawChain.length === 0 || rawChain.length > 256) {
15
+ return result('invalid', [{ code: 'SCHEMA_INVALID', message: 'chain must contain 1 through 256 records' }]);
16
+ }
17
+ if (!options || !isCanonicalTimestamp(options.now)) {
18
+ return result('invalid', [{ code: 'NONCANONICAL_VALUE', message: 'verification clock must be canonical UTC milliseconds' }]);
19
+ }
20
+ const now = Date.parse(options.now);
21
+ const chain = [];
22
+ for (let i = 0; i < rawChain.length; i++) {
23
+ const failures = validateAuthorityDelegationShape(rawChain[i]).map(item => indexed(item, i));
24
+ if (failures.length > 0) {
25
+ const unsupported = failures.every(item => item.code === 'UNSUPPORTED_VERSION' || item.code === 'UNSUPPORTED_PROFILE');
26
+ return result(unsupported ? 'unsupported' : 'invalid', failures);
27
+ }
28
+ chain.push(rawChain[i]);
29
+ }
30
+ const seen = new Set();
31
+ for (let i = 0; i < chain.length; i++) {
32
+ const delegation = chain[i];
33
+ if (seen.has(delegation.delegation_id)) {
34
+ return result('invalid', [{ code: 'CHAIN_DUPLICATE_ID', index: i, message: 'delegation ID repeats in chain' }]);
35
+ }
36
+ seen.add(delegation.delegation_id);
37
+ const expectedId = computeAuthorityDelegationId(authorityDelegationBody(delegation));
38
+ if (expectedId !== delegation.delegation_id) {
39
+ return result('invalid', [{ code: 'ID_MISMATCH', index: i, message: 'delegation content address does not match body' }]);
40
+ }
41
+ let publicKey = null;
42
+ try {
43
+ publicKey = options.resolveVerificationKey(delegation.issuer, delegation.verification_method, delegation.issued_at);
44
+ }
45
+ catch {
46
+ publicKey = null;
47
+ }
48
+ if (publicKey === null) {
49
+ return result('indeterminate', [{ code: 'KEY_RESOLUTION_FAILED', index: i, message: 'issuer verification key could not be resolved' }]);
50
+ }
51
+ if (!verifyAuthorityDelegationSignature(delegation, publicKey)) {
52
+ return result('invalid', [{ code: 'SIGNATURE_INVALID', index: i, message: 'Ed25519 signature is invalid' }]);
53
+ }
54
+ }
55
+ const root = chain[0];
56
+ if (root.parent_delegation_id !== null) {
57
+ return result('invalid', [{ code: 'PARENT_MISMATCH', index: 0, message: 'full chain root must carry null parent_delegation_id' }]);
58
+ }
59
+ if (typeof options.trustRoot !== 'function') {
60
+ return result('indeterminate', [{ code: 'ROOT_UNTRUSTED', index: 0, message: 'root trust policy is unavailable' }]);
61
+ }
62
+ let trustDecision;
63
+ try {
64
+ trustDecision = options.trustRoot(root);
65
+ }
66
+ catch {
67
+ return result('indeterminate', [{ code: 'ROOT_UNTRUSTED', index: 0, message: 'root trust policy could not decide' }]);
68
+ }
69
+ if (typeof trustDecision !== 'boolean') {
70
+ return result('indeterminate', [{ code: 'ROOT_UNTRUSTED', index: 0, message: 'root trust policy returned no boolean decision' }]);
71
+ }
72
+ if (!trustDecision) {
73
+ return result('invalid', [{ code: 'ROOT_UNTRUSTED', index: 0, message: 'root is not accepted by verifier trust policy' }]);
74
+ }
75
+ for (let i = 1; i < chain.length; i++) {
76
+ const parent = chain[i - 1];
77
+ const child = chain[i];
78
+ if (child.parent_delegation_id !== parent.delegation_id) {
79
+ return result('invalid', [{ code: 'PARENT_MISMATCH', index: i, message: 'child does not name immediate parent content address' }]);
80
+ }
81
+ if (child.issuer !== parent.subject) {
82
+ return result('invalid', [{ code: 'CHAIN_CONTINUITY', index: i, message: 'child issuer is not parent subject' }]);
83
+ }
84
+ const issued = Date.parse(child.issued_at);
85
+ if (issued < Date.parse(parent.authority.time.not_before) ||
86
+ issued >= Date.parse(parent.authority.time.not_after)) {
87
+ return result('invalid', [{ code: 'ISSUED_AT_OUTSIDE_PARENT', index: i, message: 'child was issued outside parent validity window' }]);
88
+ }
89
+ const attenuationFailures = compareAuthority(parent.authority, child.authority);
90
+ if (attenuationFailures.length > 0) {
91
+ const indexedFailures = attenuationFailures.map(item => indexed(item, i));
92
+ const unsupported = indexedFailures.every(item => item.code === 'UNSUPPORTED_PROFILE');
93
+ return result(unsupported ? 'unsupported' : 'invalid', indexedFailures);
94
+ }
95
+ }
96
+ for (let i = 0; i < chain.length; i++) {
97
+ const delegation = chain[i];
98
+ if (now < Date.parse(delegation.authority.time.not_before)) {
99
+ return result('invalid', [{ code: 'NOT_YET_VALID', index: i, message: 'delegation is not yet valid' }]);
100
+ }
101
+ if (now >= Date.parse(delegation.authority.time.not_after)) {
102
+ return result('invalid', [{ code: 'EXPIRED', index: i, message: 'delegation has expired' }]);
103
+ }
104
+ let revocation = 'unknown';
105
+ try {
106
+ const resolved = options.resolveRevocation(delegation);
107
+ revocation = resolved === 'active' || resolved === 'revoked' ? resolved : 'unknown';
108
+ }
109
+ catch {
110
+ revocation = 'unknown';
111
+ }
112
+ if (revocation === 'revoked') {
113
+ return result('invalid', [{ code: 'REVOKED', index: i, message: 'delegation is revoked' }]);
114
+ }
115
+ if (revocation === 'unknown') {
116
+ return result('indeterminate', [{ code: 'REVOCATION_UNKNOWN', index: i, message: 'revocation status is unknown' }]);
117
+ }
118
+ }
119
+ return result('valid', []);
120
+ }
121
+ export function verifyAuthorityDelegation(delegation, options) {
122
+ return verifyAuthorityDelegationChain([delegation], options);
123
+ }
124
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/v2/authority-delegation/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Legacy APS self-certifying identifier support. New PassportV2 issuance uses
3
+ * did:key by default; this parser exists so previously emitted did:aps values
4
+ * remain verifiable without implying that their identifier survives rotation.
5
+ */
6
+ export declare function legacyDidApsFromPublicKey(publicKeyHex: string): string;
7
+ export declare function publicKeyFromLegacyDidAps(did: string): string;
8
+ export declare function publicKeyFromDidKey(did: string): string;
9
+ export declare function didKeyFromPublicKey(publicKeyHex: string): string;
10
+ export declare function selfCertifyingPublicKey(did: string): string | null;
11
+ export declare function defaultVerificationMethod(agentId: string): string;
12
+ //# sourceMappingURL=did-aps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-aps.d.ts","sourceRoot":"","sources":["../../../../src/v2/identity-binding/did-aps.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU7D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIlE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGjE"}
@@ -0,0 +1,53 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { hexToMultibase, multibaseToHex } from '../../core/did.js';
4
+ /**
5
+ * Legacy APS self-certifying identifier support. New PassportV2 issuance uses
6
+ * did:key by default; this parser exists so previously emitted did:aps values
7
+ * remain verifiable without implying that their identifier survives rotation.
8
+ */
9
+ export function legacyDidApsFromPublicKey(publicKeyHex) {
10
+ assertEd25519PublicKey(publicKeyHex);
11
+ return `did:aps:${hexToMultibase(publicKeyHex)}`;
12
+ }
13
+ export function publicKeyFromLegacyDidAps(did) {
14
+ if (!/^did:aps:z[1-9A-HJ-NP-Za-km-z]+$/.test(did)) {
15
+ throw new Error('Invalid did:aps identifier');
16
+ }
17
+ const publicKey = multibaseToHex(did.slice('did:aps:'.length));
18
+ assertEd25519PublicKey(publicKey);
19
+ if (legacyDidApsFromPublicKey(publicKey) !== did) {
20
+ throw new Error('Non-canonical did:aps identifier');
21
+ }
22
+ return publicKey;
23
+ }
24
+ export function publicKeyFromDidKey(did) {
25
+ if (!/^did:key:z[1-9A-HJ-NP-Za-km-z]+$/.test(did))
26
+ throw new Error('Invalid did:key identifier');
27
+ const publicKey = multibaseToHex(did.slice('did:key:'.length));
28
+ assertEd25519PublicKey(publicKey);
29
+ if (didKeyFromPublicKey(publicKey) !== did)
30
+ throw new Error('Non-canonical did:key identifier');
31
+ return publicKey;
32
+ }
33
+ export function didKeyFromPublicKey(publicKeyHex) {
34
+ assertEd25519PublicKey(publicKeyHex);
35
+ return `did:key:${hexToMultibase(publicKeyHex)}`;
36
+ }
37
+ export function selfCertifyingPublicKey(did) {
38
+ if (did.startsWith('did:key:'))
39
+ return publicKeyFromDidKey(did);
40
+ if (did.startsWith('did:aps:'))
41
+ return publicKeyFromLegacyDidAps(did);
42
+ return null;
43
+ }
44
+ export function defaultVerificationMethod(agentId) {
45
+ if (agentId.startsWith('did:key:'))
46
+ return `${agentId}#${agentId.slice('did:key:'.length)}`;
47
+ return `${agentId}#key-1`;
48
+ }
49
+ function assertEd25519PublicKey(value) {
50
+ if (!/^[0-9a-f]{64}$/.test(value))
51
+ throw new Error('Invalid Ed25519 public key');
52
+ }
53
+ //# sourceMappingURL=did-aps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-aps.js","sourceRoot":"","sources":["../../../../src/v2/identity-binding/did-aps.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,sCAAsC;AAEtC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElE;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC5D,sBAAsB,CAAC,YAAY,CAAC,CAAA;IACpC,OAAO,WAAW,cAAc,CAAC,YAAY,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACjC,IAAI,yBAAyB,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACrD,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAChG,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9D,sBAAsB,CAAC,SAAS,CAAC,CAAA;IACjC,IAAI,mBAAmB,CAAC,SAAS,CAAC,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAC/F,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,sBAAsB,CAAC,YAAY,CAAC,CAAA;IACpC,OAAO,WAAW,cAAc,CAAC,YAAY,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;IAC/D,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAA;IACrE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAA;IAC3F,OAAO,GAAG,OAAO,QAAQ,CAAA;AAC3B,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './did-aps.js';
3
+ export * from './passport.js';
4
+ export * from './principal-binding.js';
5
+ export * from './revocation.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/v2/identity-binding/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './did-aps.js';
3
+ export * from './passport.js';
4
+ export * from './principal-binding.js';
5
+ export * from './revocation.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v2/identity-binding/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { HistoricalKeyResolver, IdentityVerificationResult, PassportV2 } from './types.js';
2
+ export interface IssuePassportV2Input {
3
+ public_key_hex: string;
4
+ private_key_hex: string;
5
+ agent_id?: string;
6
+ verification_method?: string;
7
+ issued_at: string;
8
+ expires_at: string;
9
+ nonce: string;
10
+ display_name?: string;
11
+ capabilities?: readonly string[];
12
+ }
13
+ export declare function issuePassportV2(input: IssuePassportV2Input): PassportV2;
14
+ export declare function verifyPassportV2(candidate: unknown, options?: {
15
+ now?: string;
16
+ resolve_key?: HistoricalKeyResolver;
17
+ }): Promise<IdentityVerificationResult>;
18
+ //# sourceMappingURL=passport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.d.ts","sourceRoot":"","sources":["../../../../src/v2/identity-binding/passport.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,UAAU,EACX,MAAM,YAAY,CAAA;AAcnB,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,UAAU,CAsBvE;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,OAAO,EAClB,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CAAO,GAClE,OAAO,CAAC,0BAA0B,CAAC,CAgErC"}
@@ -0,0 +1,144 @@
1
+ // Copyright (c) 2026 Tymofii Pidlisnyi
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { createHash } from 'node:crypto';
4
+ import { canonicalizeJCS } from '../../core/canonical-jcs.js';
5
+ import { sign, verify } from '../../crypto/keys.js';
6
+ import { hexToMultibase, multibaseToHex } from '../../core/did.js';
7
+ import { defaultVerificationMethod, didKeyFromPublicKey, selfCertifyingPublicKey, } from './did-aps.js';
8
+ import { assertExactKeys, assertHex, assertIJson, assertPlainRecord, assertSortedUnique, assertUtcMilliseconds, sortedUnique, } from './validation.js';
9
+ const ID_DOMAIN = 'APS-PASSPORT-ID-V2\0';
10
+ const SIGNATURE_DOMAIN = 'APS-PASSPORT-SIG-V2\0';
11
+ export function issuePassportV2(input) {
12
+ assertHex(input.public_key_hex, 64, 'public_key_hex');
13
+ const agentId = input.agent_id ?? didKeyFromPublicKey(input.public_key_hex);
14
+ const draft = {
15
+ record_type: 'aps.agent-passport',
16
+ version: '2.0',
17
+ agent_id: agentId,
18
+ verification_method: input.verification_method ?? defaultVerificationMethod(agentId),
19
+ public_key_multibase: hexToMultibase(input.public_key_hex),
20
+ issued_at: input.issued_at,
21
+ expires_at: input.expires_at,
22
+ nonce: input.nonce,
23
+ self_asserted: {
24
+ ...(input.display_name === undefined ? {} : { display_name: input.display_name }),
25
+ capabilities: sortedUnique(input.capabilities ?? [], 'self_asserted.capabilities'),
26
+ },
27
+ };
28
+ validatePassportDraft(draft);
29
+ const passportId = digest(ID_DOMAIN + canonicalizeJCS(draft));
30
+ const withId = { ...draft, passport_id: passportId };
31
+ const signature = sign(SIGNATURE_DOMAIN + canonicalizeJCS(withId), input.private_key_hex);
32
+ return { ...withId, signature };
33
+ }
34
+ export async function verifyPassportV2(candidate, options = {}) {
35
+ let passport;
36
+ try {
37
+ passport = validatePassport(candidate);
38
+ }
39
+ catch {
40
+ return invalid('PASSPORT_MALFORMED');
41
+ }
42
+ const idForm = omit(passport, ['passport_id', 'signature']);
43
+ if (digest(ID_DOMAIN + canonicalizeJCS(idForm)) !== passport.passport_id) {
44
+ return invalid('PASSPORT_ID_MISMATCH');
45
+ }
46
+ const publicKey = multibaseToHex(passport.public_key_multibase);
47
+ const signatureForm = omit(passport, ['signature']);
48
+ if (!verify(SIGNATURE_DOMAIN + canonicalizeJCS(signatureForm), passport.signature, publicKey)) {
49
+ return invalid('PASSPORT_SIGNATURE_INVALID');
50
+ }
51
+ const now = options.now ?? new Date().toISOString();
52
+ if (now < passport.issued_at || now >= passport.expires_at) {
53
+ return { ...invalid('PASSPORT_NOT_CURRENT'), proof_of_possession: true };
54
+ }
55
+ const derived = selfCertifyingPublicKey(passport.agent_id);
56
+ if (derived !== null) {
57
+ if (derived !== publicKey) {
58
+ return {
59
+ ...invalid('PASSPORT_KEY_AUTHORITY_REJECTED'),
60
+ proof_of_possession: true,
61
+ key_authority: 'rejected',
62
+ };
63
+ }
64
+ return { state: 'valid', code: 'OK', proof_of_possession: true, key_authority: 'verified' };
65
+ }
66
+ if (!options.resolve_key) {
67
+ return {
68
+ state: 'indeterminate',
69
+ code: 'PASSPORT_KEY_AUTHORITY_UNRESOLVED',
70
+ proof_of_possession: true,
71
+ key_authority: 'unresolved',
72
+ };
73
+ }
74
+ const resolution = await options.resolve_key({
75
+ controller: passport.agent_id,
76
+ verification_method: passport.verification_method,
77
+ at: passport.issued_at,
78
+ });
79
+ if (resolution.state !== 'resolved' || !resolution.public_key_hex) {
80
+ return {
81
+ state: resolution.state === 'unreachable' ? 'indeterminate' : 'invalid',
82
+ code: `PASSPORT_KEY_${resolution.state.toUpperCase()}`,
83
+ proof_of_possession: true,
84
+ key_authority: resolution.state === 'unreachable' ? 'unresolved' : 'rejected',
85
+ };
86
+ }
87
+ if (resolution.public_key_hex !== publicKey) {
88
+ return {
89
+ ...invalid('PASSPORT_KEY_AUTHORITY_REJECTED'),
90
+ proof_of_possession: true,
91
+ key_authority: 'rejected',
92
+ };
93
+ }
94
+ return { state: 'valid', code: 'OK', proof_of_possession: true, key_authority: 'verified' };
95
+ }
96
+ function validatePassport(value) {
97
+ assertPlainRecord(value, 'passport');
98
+ assertExactKeys(value, [
99
+ 'record_type', 'version', 'passport_id', 'agent_id', 'verification_method',
100
+ 'public_key_multibase', 'issued_at', 'expires_at', 'nonce', 'self_asserted', 'signature',
101
+ ], [], 'passport');
102
+ validatePassportDraft(value);
103
+ assertHex(String(value.passport_id), 64, 'passport_id');
104
+ assertHex(String(value.signature), 128, 'signature');
105
+ return value;
106
+ }
107
+ function validatePassportDraft(value) {
108
+ assertIJson(value);
109
+ if (value.record_type !== 'aps.agent-passport' || value.version !== '2.0')
110
+ throw new Error('passport profile');
111
+ if (!/^did:[a-z0-9]+:.+$/.test(value.agent_id))
112
+ throw new Error('agent_id');
113
+ if (!value.verification_method.startsWith(`${value.agent_id}#`))
114
+ throw new Error('verification_method');
115
+ const key = multibaseToHex(value.public_key_multibase);
116
+ assertHex(key, 64, 'public_key_multibase');
117
+ assertUtcMilliseconds(value.issued_at, 'issued_at');
118
+ assertUtcMilliseconds(value.expires_at, 'expires_at');
119
+ if (value.issued_at >= value.expires_at)
120
+ throw new Error('passport time window');
121
+ assertHex(value.nonce, 32, 'nonce');
122
+ assertPlainRecord(value.self_asserted, 'self_asserted');
123
+ assertExactKeys(value.self_asserted, ['capabilities'], ['display_name'], 'self_asserted');
124
+ if (!Array.isArray(value.self_asserted.capabilities))
125
+ throw new Error('capabilities');
126
+ assertSortedUnique(value.self_asserted.capabilities, 'capabilities');
127
+ if (value.self_asserted.display_name !== undefined && typeof value.self_asserted.display_name !== 'string') {
128
+ throw new Error('display_name');
129
+ }
130
+ }
131
+ function digest(value) {
132
+ return createHash('sha256').update(value, 'utf8').digest('hex');
133
+ }
134
+ function omit(value, keys) {
135
+ const result = {};
136
+ for (const [key, entry] of Object.entries(value))
137
+ if (!keys.includes(key))
138
+ result[key] = entry;
139
+ return result;
140
+ }
141
+ function invalid(code) {
142
+ return { state: 'invalid', code, proof_of_possession: false, key_authority: 'rejected' };
143
+ }
144
+ //# sourceMappingURL=passport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passport.js","sourceRoot":"","sources":["../../../../src/v2/identity-binding/passport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { HistoricalKeyResolver, IdentityVerificationResult, PrincipalBindingV1 } from './types.js';
2
+ export interface IssuePrincipalBindingV1Input {
3
+ agent_id: string;
4
+ principal_id: string;
5
+ verification_method: string;
6
+ audiences: readonly string[];
7
+ authority_profiles: readonly string[];
8
+ status_uri: string;
9
+ issued_at: string;
10
+ expires_at: string;
11
+ nonce: string;
12
+ principal_private_key_hex: string;
13
+ }
14
+ export declare function issuePrincipalBindingV1(input: IssuePrincipalBindingV1Input): PrincipalBindingV1;
15
+ export declare function verifyPrincipalBindingV1(candidate: unknown, options: {
16
+ now?: string;
17
+ resolve_key: HistoricalKeyResolver;
18
+ principal_is_externally_verified?: (principalId: string, at: string) => boolean | Promise<boolean>;
19
+ }): Promise<IdentityVerificationResult>;
20
+ //# sourceMappingURL=principal-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principal-binding.d.ts","sourceRoot":"","sources":["../../../../src/v2/identity-binding/principal-binding.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAEnB,MAAM,YAAY,CAAA;AAcnB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IAC5B,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,yBAAyB,EAAE,MAAM,CAAA;CAClC;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,kBAAkB,CAqB/F;AAED,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,qBAAqB,CAAA;IAClC,gCAAgC,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CACnG,GACA,OAAO,CAAC,0BAA0B,CAAC,CAiDrC"}